forked from angelo/java-retail-app
## 先满足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.sale.order.SaOrder;
|
||||||
import com.hzs.common.domain.system.config.BdAccount;
|
import com.hzs.common.domain.system.config.BdAccount;
|
||||||
import com.hzs.common.domain.system.config.BdAwards;
|
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.domain.third.pay.TOnlinePayment;
|
||||||
import com.hzs.common.util.TransactionUtils;
|
import com.hzs.common.util.TransactionUtils;
|
||||||
import com.hzs.member.account.dto.BusinessCommissionDTO;
|
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()
|
iCuMemberRetailRegionService.update(Wrappers.<CuMemberRetailRegion>lambdaUpdate()
|
||||||
.eq(CuMemberRetailRegion::getPkMember, saOrder.getPkMember())
|
.eq(CuMemberRetailRegion::getPkMember, saOrder.getPkMember())
|
||||||
|
@ -876,14 +875,12 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
|
||||||
|
|
||||||
if (EOrderType.RETAIL_UPGRADE.getValue() == saOrder.getOrderType()) {
|
if (EOrderType.RETAIL_UPGRADE.getValue() == saOrder.getOrderType()) {
|
||||||
// 升级订单
|
// 升级订单
|
||||||
// 删除购买升级的升级记录
|
GradeDTO gradeDTO = iGradeServiceApi.getGrade(cuMember.getPkSettleGrade()).getData();
|
||||||
iCuMemberLevelService.deleteCuMemberLevelRecord(saOrder.getPkId(), pkApprove, currentDateTime);
|
|
||||||
|
|
||||||
// TODO 处理会员自己等级
|
|
||||||
|
|
||||||
|
// 处理会员自己等级撤单
|
||||||
|
gradeDTO = this.handleSelfCancel(gradeDTO, cuMember, saOrder, pkApprove, currentDateTime);
|
||||||
|
|
||||||
// 如果会员等级非代理,则需要删除会员区域
|
// 如果会员等级非代理,则需要删除会员区域
|
||||||
GradeDTO gradeDTO = iGradeServiceApi.getGrade(cuMember.getPkSettleGrade()).getData();
|
|
||||||
if (gradeDTO.getGradeValue() != EGrade.REGION.getValue()
|
if (gradeDTO.getGradeValue() != EGrade.REGION.getValue()
|
||||||
&& gradeDTO.getGradeValue() != EGrade.DIRECTOR.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())) {
|
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);
|
updateCuMember(cuMember);
|
||||||
|
@ -1594,7 +1591,7 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 判断推送MQ处理推荐人等级
|
* 处理推荐人等级
|
||||||
*
|
*
|
||||||
* @param cuMember
|
* @param cuMember
|
||||||
*/
|
*/
|
||||||
|
@ -1662,7 +1659,7 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
|
||||||
* @param cuMember 会员自己
|
* @param cuMember 会员自己
|
||||||
* @param payTime 订单支付时间(升级记录时间)
|
* @param payTime 订单支付时间(升级记录时间)
|
||||||
*/
|
*/
|
||||||
private void handleSelfLevel(GradeDTO gradeDTO, CuMember cuMember, Date payTime) {
|
private void handleSelfUpgrade(GradeDTO gradeDTO, CuMember cuMember, Date payTime) {
|
||||||
if (null == gradeDTO) {
|
if (null == gradeDTO) {
|
||||||
gradeDTO = iGradeServiceApi.getGrade(cuMember.getPkSettleGrade()).getData();
|
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 saOrder 升级订单
|
||||||
* @param currentDateTime 当前时间
|
* @param currentDateTime 当前时间
|
||||||
*/
|
*/
|
||||||
private void handleParentLevel(SaOrderExt saOrder, Date currentDateTime) {
|
private void handleParentLevelCancel(SaOrderExt saOrder, Date currentDateTime) {
|
||||||
// 注册、升级订单,需要判断是否有推荐人升级的
|
// 注册、升级订单,需要判断是否有推荐人升级的
|
||||||
if (EOrderType.RETAIL_REGISTER.getValue() == saOrder.getOrderType()
|
if (EOrderType.RETAIL_REGISTER.getValue() == saOrder.getOrderType()
|
||||||
|| EOrderType.RETAIL_UPGRADE.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());
|
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) {
|
if (null != parentOrder) {
|
||||||
// 存在其它博羚店主订单,重新处理升级记录
|
// 存在其它博羚店主订单,重新处理升级记录
|
||||||
CuMemberLevel parentNewLevel = BeanUtil.copyProperties(parentLevel, CuMemberLevel.class);
|
CuMemberLevel parentNewLevel = BeanUtil.copyProperties(parentLevel, CuMemberLevel.class);
|
||||||
|
|
|
@ -1998,7 +1998,7 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
|
||||||
CuMemberLevel cuMemberLevel = iCuMemberDetailServiceApi.getLastUpgrade(cuMember.getPkId(), saOrderExt.getPkId(), null).getData();
|
CuMemberLevel cuMemberLevel = iCuMemberDetailServiceApi.getLastUpgrade(cuMember.getPkId(), saOrderExt.getPkId(), null).getData();
|
||||||
if (null != cuMemberLevel) {
|
if (null != cuMemberLevel) {
|
||||||
cuMember.setPkSettleGrade(cuMemberLevel.getNewLevel());
|
cuMember.setPkSettleGrade(cuMemberLevel.getNewLevel());
|
||||||
}
|
} else {
|
||||||
// 当前订单之前没有注册、升级订单,从空单注册cu_member_register中获取
|
// 当前订单之前没有注册、升级订单,从空单注册cu_member_register中获取
|
||||||
CuMemberRegister cuMemberRegister = iMemberServiceApi.queryCuMemberRegister(cuMember.getPkId()).getData();
|
CuMemberRegister cuMemberRegister = iMemberServiceApi.queryCuMemberRegister(cuMember.getPkId()).getData();
|
||||||
if (null == cuMemberRegister) {
|
if (null == cuMemberRegister) {
|
||||||
|
@ -2008,6 +2008,7 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
|
||||||
cuMember.setPkSettleGrade(cuMemberRegister.getPkRegisterGrade());
|
cuMember.setPkSettleGrade(cuMemberRegister.getPkRegisterGrade());
|
||||||
cuMember.setConsumeMoney(BigDecimal.ZERO);
|
cuMember.setConsumeMoney(BigDecimal.ZERO);
|
||||||
cuMember.setConsumeAchieve(cuMemberRegister.getConsumeAchieve());
|
cuMember.setConsumeAchieve(cuMemberRegister.getConsumeAchieve());
|
||||||
|
}
|
||||||
|
|
||||||
Date firstDate = baseMapper.getFirstPayTime(cuMember.getPkId());
|
Date firstDate = baseMapper.getFirstPayTime(cuMember.getPkId());
|
||||||
if (null == firstDate) {
|
if (null == firstDate) {
|
||||||
|
|
Loading…
Reference in New Issue