3
0
Fork 0

## 先满足1+1然后自己再升级处理(357);

This commit is contained in:
cabbage 2025-08-22 18:11:25 +08:00
parent 2182d31de2
commit 96c4ebaf10
2 changed files with 84 additions and 25 deletions

View File

@ -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);

View File

@ -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) {