## 先满足1+1然后自己再升级处理(357);
This commit is contained in:
parent
a6748ed31f
commit
d091a5ecfa
|
@ -33,7 +33,6 @@ import com.hzs.common.domain.sale.ext.SaOrderExt;
|
|||
import com.hzs.common.domain.sale.order.SaOrder;
|
||||
import com.hzs.common.domain.system.config.BdAccount;
|
||||
import com.hzs.common.domain.system.config.BdAwards;
|
||||
import com.hzs.common.domain.system.config.BdGrade;
|
||||
import com.hzs.common.domain.third.pay.TOnlinePayment;
|
||||
import com.hzs.common.util.TransactionUtils;
|
||||
import com.hzs.member.account.dto.BusinessCommissionDTO;
|
||||
|
@ -600,7 +599,7 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
|
|||
}
|
||||
|
||||
// 处理推荐人等级
|
||||
handleParentLevel(saOrder, currentDateTime);
|
||||
handleParentLevelCancel(saOrder, currentDateTime);
|
||||
// 删除会员区域
|
||||
iCuMemberRetailRegionService.update(Wrappers.<CuMemberRetailRegion>lambdaUpdate()
|
||||
.eq(CuMemberRetailRegion::getPkMember, saOrder.getPkMember())
|
||||
|
@ -876,14 +875,12 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
|
|||
|
||||
if (EOrderType.RETAIL_UPGRADE.getValue() == saOrder.getOrderType()) {
|
||||
// 升级订单
|
||||
// 删除购买升级的升级记录
|
||||
iCuMemberLevelService.deleteCuMemberLevelRecord(saOrder.getPkId(), pkApprove, currentDateTime);
|
||||
|
||||
// TODO 处理会员自己等级
|
||||
GradeDTO gradeDTO = iGradeServiceApi.getGrade(cuMember.getPkSettleGrade()).getData();
|
||||
|
||||
// 处理会员自己等级撤单
|
||||
gradeDTO = this.handleSelfCancel(gradeDTO, cuMember, saOrder, pkApprove, currentDateTime);
|
||||
|
||||
// 如果会员等级非代理,则需要删除会员区域
|
||||
GradeDTO gradeDTO = iGradeServiceApi.getGrade(cuMember.getPkSettleGrade()).getData();
|
||||
if (gradeDTO.getGradeValue() != EGrade.REGION.getValue()
|
||||
&& gradeDTO.getGradeValue() != EGrade.DIRECTOR.getValue()) {
|
||||
// 删除会员区域选择
|
||||
|
@ -912,8 +909,8 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
|
|||
}
|
||||
}
|
||||
|
||||
// 处理推荐人等级
|
||||
this.handleParentLevel(saOrder, currentDateTime);
|
||||
// 处理推荐人等级撤单
|
||||
this.handleParentLevelCancel(saOrder, currentDateTime);
|
||||
|
||||
if (saOrder.getPayType().equals(EOrderPayType.WALLET.getValue())) {
|
||||
// 钱包支付,则需要回退金额
|
||||
|
@ -1529,7 +1526,7 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
|
|||
}
|
||||
|
||||
// 判断处理会员自己等级(下级有店主、代理,自己判断是否升级高级店主、董事代理)
|
||||
this.handleSelfLevel(gradeDTO, cuMember, saOrder.getPayTime());
|
||||
this.handleSelfUpgrade(gradeDTO, cuMember, saOrder.getPayTime());
|
||||
}
|
||||
// 更新会员信息
|
||||
updateCuMember(cuMember);
|
||||
|
@ -1594,7 +1591,7 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
|
|||
}
|
||||
|
||||
/**
|
||||
* 判断推送MQ处理推荐人等级
|
||||
* 处理推荐人等级
|
||||
*
|
||||
* @param cuMember
|
||||
*/
|
||||
|
@ -1662,7 +1659,7 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
|
|||
* @param cuMember 会员自己
|
||||
* @param payTime 订单支付时间(升级记录时间)
|
||||
*/
|
||||
private void handleSelfLevel(GradeDTO gradeDTO, CuMember cuMember, Date payTime) {
|
||||
private void handleSelfUpgrade(GradeDTO gradeDTO, CuMember cuMember, Date payTime) {
|
||||
if (null == gradeDTO) {
|
||||
gradeDTO = iGradeServiceApi.getGrade(cuMember.getPkSettleGrade()).getData();
|
||||
}
|
||||
|
@ -1686,12 +1683,73 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
|
|||
}
|
||||
|
||||
/**
|
||||
* 处理推荐人等级
|
||||
* 处理自己等级撤单
|
||||
*
|
||||
* @param gradeDTO
|
||||
* @param cuMember
|
||||
* @param saOrder
|
||||
* @param pkApprove
|
||||
* @param currentDateTime
|
||||
* @return
|
||||
*/
|
||||
private GradeDTO handleSelfCancel(GradeDTO gradeDTO, CuMember cuMember, SaOrderExt saOrder,
|
||||
Long pkApprove, Date currentDateTime) {
|
||||
if (gradeDTO.getGradeValue() == EGrade.S_VIP.getValue()
|
||||
|| gradeDTO.getGradeValue() == EGrade.DIRECTOR.getValue()) {
|
||||
// 会员等级为高级店主、董事代理,需要处理1+1逻辑
|
||||
// 查询会员所有升级列表
|
||||
List<CuMemberLevel> memberLevelList = iCuMemberLevelService.list(Wrappers.<CuMemberLevel>lambdaQuery()
|
||||
.eq(CuMemberLevel::getPkMember, cuMember.getPkId())
|
||||
.orderByDesc(CuMemberLevel::getUpgradeTime)
|
||||
);
|
||||
if (CollectionUtil.isNotEmpty(memberLevelList)) {
|
||||
// 撤销的订单对应的升级记录
|
||||
Optional<CuMemberLevel> orderLevelOpt = memberLevelList.stream().filter(
|
||||
tmpLevel -> tmpLevel.getPkOrder().equals(saOrder.getPkId())
|
||||
&& tmpLevel.getUpType().equals(EUpgradeType.BUY_UPGRADE.getValue())
|
||||
).findFirst();
|
||||
if (orderLevelOpt.isPresent()) {
|
||||
// 订单存在对应升级记录
|
||||
List<Long> pkLevelList = new ArrayList<>();
|
||||
|
||||
CuMemberLevel orderLevel = orderLevelOpt.get();
|
||||
pkLevelList.add(orderLevel.getPkId());
|
||||
|
||||
Optional<CuMemberLevel> autoLevelOpt = memberLevelList.stream().filter(
|
||||
tmpLevel -> tmpLevel.getPkMember().equals(cuMember.getPkId())
|
||||
&& tmpLevel.getUpType().equals(EUpgradeType.AUTO_UPGRADE.getValue())
|
||||
&& tmpLevel.getUpgradeTime().equals(orderLevel.getUpgradeTime())
|
||||
).findFirst();
|
||||
autoLevelOpt.ifPresent(cuMemberLevel -> pkLevelList.add(cuMemberLevel.getPkId()));
|
||||
|
||||
if (pkLevelList.size() > 0) {
|
||||
iCuMemberLevelService.update(Wrappers.<CuMemberLevel>lambdaUpdate()
|
||||
.in(CuMemberLevel::getPkId, pkLevelList)
|
||||
.set(CuMemberLevel::getDelFlag, EDelFlag.DELETE.getValue())
|
||||
.set(CuMemberLevel::getPkModified, pkApprove)
|
||||
.set(CuMemberLevel::getModifiedTime, currentDateTime)
|
||||
);
|
||||
}
|
||||
// 升级记录中去掉删除的,剩下最新的为最后的等级
|
||||
Optional<CuMemberLevel> lastLevelOpt = memberLevelList.stream()
|
||||
.filter(tmpLevel -> !pkLevelList.contains(tmpLevel.getPkId()))
|
||||
.max(Comparator.comparing(CuMemberLevel::getUpgradeTime));
|
||||
lastLevelOpt.ifPresent(cuMemberLevel -> cuMember.setPkSettleGrade(cuMemberLevel.getNewLevel()));
|
||||
|
||||
gradeDTO = iGradeServiceApi.getGrade(cuMember.getPkSettleGrade()).getData();
|
||||
}
|
||||
}
|
||||
}
|
||||
return gradeDTO;
|
||||
}
|
||||
|
||||
/**
|
||||
* 撤单处理推荐人等级
|
||||
*
|
||||
* @param saOrder 升级订单
|
||||
* @param currentDateTime 当前时间
|
||||
*/
|
||||
private void handleParentLevel(SaOrderExt saOrder, Date currentDateTime) {
|
||||
private void handleParentLevelCancel(SaOrderExt saOrder, Date currentDateTime) {
|
||||
// 注册、升级订单,需要判断是否有推荐人升级的
|
||||
if (EOrderType.RETAIL_REGISTER.getValue() == saOrder.getOrderType()
|
||||
|| EOrderType.RETAIL_UPGRADE.getValue() == saOrder.getOrderType()) {
|
||||
|
@ -1712,13 +1770,13 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
|
|||
// 推荐人是高级店主,查询直推博羚店主以上订单
|
||||
parentOrder = iCuMemberService.listRecommendVipOrder(parentMember.getPkId(), saOrder.getOrderCode(), EGrade.VIP.getValue());
|
||||
}
|
||||
this.handleParentLevelUpdate(parentOrder, parentLevel, parentMember, currentDateTime);
|
||||
this.handleParentLevelCancelUpdate(parentOrder, parentLevel, parentMember, currentDateTime);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void handleParentLevelUpdate(SaOrder parentOrder, CuMemberLevel parentLevel, CuMemberExt parentMember, Date currentDateTime) {
|
||||
private void handleParentLevelCancelUpdate(SaOrder parentOrder, CuMemberLevel parentLevel, CuMemberExt parentMember, Date currentDateTime) {
|
||||
if (null != parentOrder) {
|
||||
// 存在其它博羚店主订单,重新处理升级记录
|
||||
CuMemberLevel parentNewLevel = BeanUtil.copyProperties(parentLevel, CuMemberLevel.class);
|
||||
|
|
|
@ -1998,16 +1998,17 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
|
|||
CuMemberLevel cuMemberLevel = iCuMemberDetailServiceApi.getLastUpgrade(cuMember.getPkId(), saOrderExt.getPkId(), null).getData();
|
||||
if (null != cuMemberLevel) {
|
||||
cuMember.setPkSettleGrade(cuMemberLevel.getNewLevel());
|
||||
} else {
|
||||
// 当前订单之前没有注册、升级订单,从空单注册cu_member_register中获取
|
||||
CuMemberRegister cuMemberRegister = iMemberServiceApi.queryCuMemberRegister(cuMember.getPkId()).getData();
|
||||
if (null == cuMemberRegister) {
|
||||
throw new ServiceException("没有会员注册信息");
|
||||
}
|
||||
cuMember.setPkRegisterGrade(cuMemberRegister.getPkRegisterGrade());
|
||||
cuMember.setPkSettleGrade(cuMemberRegister.getPkRegisterGrade());
|
||||
cuMember.setConsumeMoney(BigDecimal.ZERO);
|
||||
cuMember.setConsumeAchieve(cuMemberRegister.getConsumeAchieve());
|
||||
}
|
||||
// 当前订单之前没有注册、升级订单,从空单注册cu_member_register中获取
|
||||
CuMemberRegister cuMemberRegister = iMemberServiceApi.queryCuMemberRegister(cuMember.getPkId()).getData();
|
||||
if (null == cuMemberRegister) {
|
||||
throw new ServiceException("没有会员注册信息");
|
||||
}
|
||||
cuMember.setPkRegisterGrade(cuMemberRegister.getPkRegisterGrade());
|
||||
cuMember.setPkSettleGrade(cuMemberRegister.getPkRegisterGrade());
|
||||
cuMember.setConsumeMoney(BigDecimal.ZERO);
|
||||
cuMember.setConsumeAchieve(cuMemberRegister.getConsumeAchieve());
|
||||
|
||||
Date firstDate = baseMapper.getFirstPayTime(cuMember.getPkId());
|
||||
if (null == firstDate) {
|
||||
|
|
Loading…
Reference in New Issue