## 0元购买188在线支付回调;
This commit is contained in:
parent
4bccdec39f
commit
efc90eefb9
|
@ -214,6 +214,15 @@ public interface IMemberServiceApi {
|
|||
*/
|
||||
R<Boolean> saveMember(CuMember cuMember, SaOrderExt saOrder, Boolean isPay, CuMemberAccountExt cuMemberAccountExt);
|
||||
|
||||
/**
|
||||
* 0元会员订单处理
|
||||
*
|
||||
* @param cuMember
|
||||
* @param saOrder
|
||||
* @return
|
||||
*/
|
||||
R<Boolean> handleZeroMember(CuMember cuMember, SaOrderExt saOrder);
|
||||
|
||||
/**
|
||||
* 处理新会员,生成主键,跟会员编号
|
||||
*
|
||||
|
|
|
@ -273,6 +273,16 @@ public class MemberServiceProvider implements IMemberServiceApi {
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public R<Boolean> handleZeroMember(CuMember cuMember, SaOrderExt saOrder) {
|
||||
try {
|
||||
return R.ok(iCuMemberBusinessService.handleZeroMember(cuMember, saOrder));
|
||||
} catch (Exception e) {
|
||||
log.error("handleZeroMember error", e);
|
||||
return R.fail(e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public R<CuMember> createMemberIdAndCode(CuMember cuMember, Boolean isHaiFun) {
|
||||
return R.ok(iCuMemberService.createMemberIdAndCode(cuMember, isHaiFun));
|
||||
|
|
|
@ -48,6 +48,15 @@ public interface ICuMemberBusinessService {
|
|||
*/
|
||||
Boolean saveMember(CuMember cuMember, SaOrder saOrder);
|
||||
|
||||
/**
|
||||
* 0元会员订单处理
|
||||
*
|
||||
* @param cuMember
|
||||
* @param saOrder
|
||||
* @return
|
||||
*/
|
||||
Boolean handleZeroMember(CuMember cuMember, SaOrder saOrder);
|
||||
|
||||
/*
|
||||
* 在线支付修改记录
|
||||
**/
|
||||
|
|
|
@ -131,7 +131,6 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
|
|||
ITOnlinePaymentServiceApi itOnlinePaymentServiceApi;
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void updateCuMember(CuMember cuMember) {
|
||||
redisService.lockKeyMany(CacheConstants.UPD_MEMBER + cuMember.getMemberCode());
|
||||
try {
|
||||
|
@ -330,6 +329,25 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
|
|||
return Boolean.TRUE;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean handleZeroMember(CuMember cuMember, SaOrder saOrder) {
|
||||
// 更新会员信息
|
||||
updateCuMember(cuMember);
|
||||
// 会员升级记录
|
||||
saveMemberRecords(cuMember, saOrder);
|
||||
|
||||
// 代表在线支付,在线支付先插入一条充值信息
|
||||
CuMemberAccountExt cuMemberAccountExt = insertMemberRecharge(saOrder);
|
||||
// 扣款信息
|
||||
insertMemberTrade(saOrder, cuMemberAccountExt);
|
||||
|
||||
// 解锁 安置位置
|
||||
redisService.unlock(CacheConstants.POSITION + cuMember.getPkPlaceParent() + cuMember.getPlaceDept());
|
||||
// 扣除可用量
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean saveMemberOnLineTrade(CuMember cuMember, SaOrder saOrder, CuMemberAccountExt cuMemberAccountExt) {
|
||||
|
|
|
@ -808,6 +808,65 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
|
|||
return Boolean.TRUE;
|
||||
}
|
||||
|
||||
private boolean payReyZeroOrder(SaOrderExt saOrderExt, CuMember newCuMember) {
|
||||
Date currentDateTime = DateUtils.currentDateTime();
|
||||
newCuMember.setPayStatus(EPayStatus.PAID.getValue());
|
||||
newCuMember.setPayTime(currentDateTime);
|
||||
newCuMember.setConsumeMoney(saOrderExt.getOrderAmount());
|
||||
newCuMember.setConsumeAchieve(saOrderExt.getOrderAchieve());
|
||||
// 会员续约需求,【有效期】为购买时间次年的上月最后一天
|
||||
newCuMember.setExpireDate(DateUtils.beforeMonthLastDate(DateUtils.addYears(currentDateTime, 1)));
|
||||
// 【休止期】普通会员6个月,奖衔会员12个月(先按6个月来,后续MQ会统一处理同姓名同手机号会员)
|
||||
newCuMember.setStopDate(DateUtils.addMonths(newCuMember.getExpireDate(), 6));
|
||||
|
||||
if (null == newCuMember.getPkPlaceParent()
|
||||
|| null == newCuMember.getPlaceDept()) {
|
||||
// 当安置人和安置部门为空时,进行上树
|
||||
CuMember cuMember = repeatTry(newCuMember, Boolean.FALSE);
|
||||
newCuMember.setPkPlaceParent(cuMember.getPkPlaceParent());
|
||||
newCuMember.setPlaceDept(cuMember.getPlaceDept());
|
||||
}
|
||||
|
||||
saOrderExt.setOrderType(EOrderType.REPURCHASE_ORDER.getValue());
|
||||
saOrderExt.setOrderTypeExtend(EOrderTypeExtend.REG_REP.getValue());
|
||||
saOrderExt.setPkPlacement(newCuMember.getPkPlaceParent());
|
||||
saOrderExt.setOrderStatus(EOrderStatus.PAY.getValue());
|
||||
saOrderExt.setPayTime(currentDateTime);
|
||||
saOrderExt.setCreationTime(currentDateTime);
|
||||
for (SaOrderItems saOrderItems : saOrderExt.getOrderItemsList()) {
|
||||
saOrderItems.setCreationTime(saOrderExt.getCreationTime());
|
||||
saOrderItems.setOrderStatus(EOrderStatus.PAY.getValue());
|
||||
saOrderItems.setPkGrade(newCuMember.getPkSettleGrade());
|
||||
}
|
||||
// 保存订单信息
|
||||
processOrder(saOrderExt);
|
||||
|
||||
// 调用其他服务保存会员信息、会员注册信息
|
||||
R<Boolean> handleResult = iMemberServiceApi.handleZeroMember(newCuMember, saOrderExt);
|
||||
if (handleResult.isSuccess()) {
|
||||
if (!handleResult.getData()) {
|
||||
log.error("payReyZeroOrder 保存会员失败!.");
|
||||
throw new RuntimeException("保存会员失败!.");
|
||||
}
|
||||
} else {
|
||||
log.error("payReyZeroOrder 保存会员失败!.,{}", handleResult.getMsg());
|
||||
throw new RuntimeException("保存会员失败!.");
|
||||
}
|
||||
|
||||
try {
|
||||
// 同步全网产品库存
|
||||
this.allProductSync(saOrderExt);
|
||||
|
||||
log.info("生产活动消息,activity.exchange:{}", JSONUtil.toJsonStr(saOrderExt));
|
||||
rabbitTemplate.convertAndSend(RabbitMqConstants.ACTIVITY_EXCHANGE, RabbitMqConstants.ACTIVITY_KEY, saOrderExt);
|
||||
// 推送秒结数据处理 -- 注册订单
|
||||
rabbitTemplate.convertAndSend(RabbitMqConstants.ORDER_SECOND_EXCHANGE, RabbitMqConstants.ORDER_SECOND_KEY, saOrderExt);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
|
||||
/**
|
||||
* 尝试重新换位置
|
||||
*
|
||||
|
@ -1664,8 +1723,7 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
|
|||
public boolean validateFirstOrder(Long pkParent, Integer pkCountry) {
|
||||
String validateFirstOrder = querySystemConfigByKey(pkCountry, ESystemConfig.FIRST_ORDER.getKey());
|
||||
if (EYesNo.YES.getIntValue() == Integer.parseInt(validateFirstOrder)) {
|
||||
Integer count = queryCuMemberByPkMember(pkParent);
|
||||
return count == 0;
|
||||
return queryCuMemberByPkMember(pkParent) == 0;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
@ -1911,35 +1969,18 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
|
|||
}
|
||||
if (EOrderType.REGISTER_ORDER.getValue() == saOrderExt.getOrderType()
|
||||
|| EOrderType.SPECIAL_REGISTER_ORDER.getValue() == saOrderExt.getOrderType()) {
|
||||
|
||||
if (EOrderTypeExtend.REG_REP.getValue() == saOrderExt.getOrderTypeExtend()) {
|
||||
// TODO 注册转复购
|
||||
log.info("==========新注册转复购==========");
|
||||
// 188分享订单,复购订单 扩展类型为 注册转复购
|
||||
OrderParam orderParam = redisService.getCacheObject(CacheConstants.TEMP_PARAM + pkMember + orderCode);
|
||||
orderParam.setIsHaiFun(Boolean.TRUE);
|
||||
orderParam.setOrderTypeExtend(saOrderExt.getOrderTypeExtend());
|
||||
|
||||
// 注册订单
|
||||
boolean isToBePay = getIsToBePayByOrderType(saOrderExt.getPkCountry(), saOrderExt.getOrderType());
|
||||
OrderParam orderParam = redisService.getCacheObject(CacheConstants.TEMP_PARAM + pkMember + orderCode);
|
||||
if (newCuMember == null && !isToBePay) {
|
||||
newCuMember = packageCuMember(orderParam);
|
||||
saOrderExt = packageSaOrder(orderParam, newCuMember);
|
||||
saOrderExt.setPayType(EOrderPayType.ONLINE.getValue());
|
||||
if (newCuMember == null) {
|
||||
throw new RuntimeException("生成会员失败");
|
||||
}
|
||||
payRegSaOrder(saOrderExt, newCuMember, null, Boolean.TRUE);
|
||||
} else {
|
||||
// 注册订单
|
||||
boolean isToBePay = getIsToBePayByOrderType(saOrderExt.getPkCountry(), saOrderExt.getOrderType());
|
||||
OrderParam orderParam = redisService.getCacheObject(CacheConstants.TEMP_PARAM + pkMember + orderCode);
|
||||
if (newCuMember == null && !isToBePay) {
|
||||
newCuMember = packageCuMember(orderParam);
|
||||
saOrderExt = packageSaOrder(orderParam, newCuMember);
|
||||
saOrderExt.setPayType(EOrderPayType.ONLINE.getValue());
|
||||
}
|
||||
if (newCuMember == null) {
|
||||
throw new RuntimeException("生成会员失败");
|
||||
}
|
||||
payRegSaOrder(saOrderExt, newCuMember, null, Boolean.FALSE);
|
||||
}
|
||||
if (newCuMember == null) {
|
||||
throw new RuntimeException("生成会员失败");
|
||||
}
|
||||
payRegSaOrder(saOrderExt, newCuMember, null, Boolean.FALSE);
|
||||
} else if (EOrderType.UPGRADE_ORDER.getValue() == saOrderExt.getOrderType()
|
||||
|| EOrderType.SPECIAL_UPGRADE_ORDER.getValue() == saOrderExt.getOrderType()) {
|
||||
// 升级订单
|
||||
|
@ -1947,32 +1988,49 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
|
|||
} else {
|
||||
// 其他订单
|
||||
if (EOrderType.REPURCHASE_ORDER.getValue() == saOrderExt.getOrderType()
|
||||
&& EOrderTypeExtend.REG_REP.getValue() == saOrderExt.getOrderTypeExtend()) {
|
||||
&& EOrderTypeExtend.REG_REP.getValue().equals(saOrderExt.getOrderTypeExtend())) {
|
||||
log.info("==========注册转复购==========");
|
||||
// 188分享订单,复购订单 扩展类型为 注册转复购
|
||||
OrderParam orderParam = redisService.getCacheObject(CacheConstants.TEMP_PARAM + pkMember + orderCode);
|
||||
orderParam.setIsHaiFun(Boolean.TRUE);
|
||||
orderParam.setOrderTypeExtend(saOrderExt.getOrderTypeExtend());
|
||||
if (null != newCuMember) {
|
||||
// 先注册0元会员,再购买注册订单,复购订单 扩展类型为 注册转复购
|
||||
OrderParam orderParam = redisService.getCacheObject(CacheConstants.TEMP_PARAM + pkMember + orderCode);
|
||||
orderParam.setIsHaiFun(Boolean.TRUE);
|
||||
orderParam.setOrderTypeExtend(saOrderExt.getOrderTypeExtend());
|
||||
|
||||
newCuMember = packageCuMember(orderParam);
|
||||
// 会员ID已经提前生成,此处直接使用
|
||||
if (null != orderParam.getPkMemberId()) {
|
||||
newCuMember.setPkId(orderParam.getPkMemberId());
|
||||
newCuMember.setPkCenterCode(null);
|
||||
}
|
||||
// 会员等级使用缓存中已经计算好的
|
||||
newCuMember.setPkRegisterGrade(orderParam.getPkGrade());
|
||||
newCuMember.setPkSettleGrade(orderParam.getPkGrade());
|
||||
|
||||
saOrderExt = packageSaOrder(orderParam, newCuMember);
|
||||
saOrderExt.setPayType(EOrderPayType.ONLINE.getValue());
|
||||
// 会员ID已经提前生成,此处直接使用
|
||||
if (null != orderParam.getPkMemberId()) {
|
||||
saOrderExt.setPkCreator(orderParam.getPkMemberId());
|
||||
saOrderExt.setOrderCode(orderParam.getOrderCode());
|
||||
}
|
||||
saOrderExt = packageWholeSaOrder(orderParam, newCuMember);
|
||||
saOrderExt.setPayType(EOrderPayType.ONLINE.getValue());
|
||||
if (!payReyZeroOrder(saOrderExt, newCuMember)) {
|
||||
throw new ServiceException("会员或订单处理失败");
|
||||
}
|
||||
} else {
|
||||
// 188分享订单,复购订单 扩展类型为 注册转复购
|
||||
OrderParam orderParam = redisService.getCacheObject(CacheConstants.TEMP_PARAM + pkMember + orderCode);
|
||||
orderParam.setIsHaiFun(Boolean.TRUE);
|
||||
orderParam.setOrderTypeExtend(saOrderExt.getOrderTypeExtend());
|
||||
|
||||
if (newCuMember == null) {
|
||||
throw new RuntimeException("生成会员失败");
|
||||
newCuMember = packageCuMember(orderParam);
|
||||
// 会员ID已经提前生成,此处直接使用
|
||||
if (null != orderParam.getPkMemberId()) {
|
||||
newCuMember.setPkId(orderParam.getPkMemberId());
|
||||
newCuMember.setPkCenterCode(null);
|
||||
}
|
||||
|
||||
saOrderExt = packageSaOrder(orderParam, newCuMember);
|
||||
saOrderExt.setPayType(EOrderPayType.ONLINE.getValue());
|
||||
// 会员ID已经提前生成,此处直接使用
|
||||
if (null != orderParam.getPkMemberId()) {
|
||||
saOrderExt.setPkCreator(orderParam.getPkMemberId());
|
||||
saOrderExt.setOrderCode(orderParam.getOrderCode());
|
||||
}
|
||||
|
||||
if (newCuMember == null) {
|
||||
throw new RuntimeException("生成会员失败");
|
||||
}
|
||||
payRegSaOrder(saOrderExt, newCuMember, null, Boolean.TRUE);
|
||||
}
|
||||
payRegSaOrder(saOrderExt, newCuMember, null, Boolean.TRUE);
|
||||
} else {
|
||||
payRepurchaseSaOrder(saOrderExt, null);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue