diff --git a/bd-business/bd-business-member/src/main/java/com/hzs/member/base/mapper/CuMemberMapper.java b/bd-business/bd-business-member/src/main/java/com/hzs/member/base/mapper/CuMemberMapper.java index 2f1c30f1..dd00aec6 100644 --- a/bd-business/bd-business-member/src/main/java/com/hzs/member/base/mapper/CuMemberMapper.java +++ b/bd-business/bd-business-member/src/main/java/com/hzs/member/base/mapper/CuMemberMapper.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.hzs.common.domain.member.base.CuMember; import com.hzs.common.domain.member.detail.CuMemberGrade; import com.hzs.common.domain.member.ext.CuMemberExt; +import com.hzs.common.domain.sale.order.SaOrder; import com.hzs.common.domain.system.config.BdTradeWhiteConfig; import com.hzs.member.base.dto.MemberCountDTO; import com.hzs.member.base.param.*; @@ -625,4 +626,21 @@ public interface CuMemberMapper extends BaseMapper { */ CuMember getShopkeeperMember(@Param("pkMember") Long pkMember); + /** + * 查询高级店主 + * + * @param pkMember + * @return + */ + CuMember getGradeSvipMember(@Param("pkMember") Long pkMember); + + /** + * 查询会员直推大于博羚店主的注册、升级订单查询会员直推大于博羚店主的注册、升级订单 + * + * @param pkMember + * @param orderCode + * @return + */ + SaOrder listRecommendVipOrder(@Param("pkMember") Long pkMember, @Param("orderCode") String orderCode); + } diff --git a/bd-business/bd-business-member/src/main/java/com/hzs/member/base/service/ICuMemberService.java b/bd-business/bd-business-member/src/main/java/com/hzs/member/base/service/ICuMemberService.java index ec8d484f..2540521c 100644 --- a/bd-business/bd-business-member/src/main/java/com/hzs/member/base/service/ICuMemberService.java +++ b/bd-business/bd-business-member/src/main/java/com/hzs/member/base/service/ICuMemberService.java @@ -6,6 +6,7 @@ import com.hzs.common.domain.member.achieve.ext.CuMemberRetailSExt; import com.hzs.common.domain.member.base.CuMember; import com.hzs.common.domain.member.detail.CuMemberGrade; import com.hzs.common.domain.member.ext.CuMemberExt; +import com.hzs.common.domain.sale.order.SaOrder; import com.hzs.common.domain.system.config.BdTradeWhiteConfig; import com.hzs.member.base.param.UpdatePlaceParentPetitionParam; import com.hzs.member.base.dto.ShowWaresDTO; @@ -894,4 +895,21 @@ public interface ICuMemberService extends IService { */ CuMember getShopkeeperMember(Long pkMember); + /** + * 查询高级店主 + * + * @param pkMember + * @return + */ + CuMember getGradeSvipMember(Long pkMember); + + /** + * 查询会员直推大于博羚店主的注册、升级订单查询会员直推大于博羚店主的注册、升级订单 + * + * @param pkMember + * @param orderCode + * @return + */ + SaOrder listRecommendVipOrder(Long pkMember, String orderCode); + } diff --git a/bd-business/bd-business-member/src/main/java/com/hzs/member/base/service/impl/CuMemberBusinessServiceImpl.java b/bd-business/bd-business-member/src/main/java/com/hzs/member/base/service/impl/CuMemberBusinessServiceImpl.java index 61c53433..c9564aa8 100644 --- a/bd-business/bd-business-member/src/main/java/com/hzs/member/base/service/impl/CuMemberBusinessServiceImpl.java +++ b/bd-business/bd-business-member/src/main/java/com/hzs/member/base/service/impl/CuMemberBusinessServiceImpl.java @@ -2,8 +2,8 @@ package com.hzs.member.base.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollectionUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.hzs.common.core.constant.*; import com.hzs.common.core.constant.msg.MemberMsgConstants; import com.hzs.common.core.domain.R; @@ -97,13 +97,13 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService { private ICuMemberRegisterService iCuMemberRegisterService; @Autowired private ICuMemberRetailRegionService iCuMemberRetailRegionService; + @Autowired + private ICuMemberLevelService iCuMemberLevelService; private ICuMemberAccountService cuMemberAccountService; private ICuMemberTradeService cuMemberTradeService; - private ICuMemberLevelService cuMemberLevelService; - private ICuMemberAwardsService cuMemberAwardsService; private ICuMemberChangeLogService cuMemberChangeLogService; @@ -134,11 +134,6 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService { this.cuMemberAwardsService = cuMemberAwardsService; } - @Autowired - public void setCuMemberLevelService(ICuMemberLevelService cuMemberLevelService) { - this.cuMemberLevelService = cuMemberLevelService; - } - @Autowired public void setCuMemberTradeService(ICuMemberTradeService cuMemberTradeService) { this.cuMemberTradeService = cuMemberTradeService; @@ -219,7 +214,7 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService { .build(); cuMemberLevel.setPkCountry(cuMember.getPkSettleCountry()); cuMemberLevel.setPkCreator(cuMember.getPkId()); - return cuMemberLevelService.save(cuMemberLevel); + return iCuMemberLevelService.save(cuMemberLevel); } /** @@ -863,7 +858,7 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService { Long pkMember = memberList.get(i); SaOrderExt saOrder = saOrderMap.get(pkMember); // 删除等级 - cuMemberLevelService.deleteCuMemberLevelRecord(saOrder.getPkId(), pkApprove, currentDateTime); + iCuMemberLevelService.deleteCuMemberLevelRecord(saOrder.getPkId(), pkApprove, currentDateTime); // 回退奖衔,根据订单从 cu_member_awards查询 cuMemberAwardsService.deleteCuMemberAwards(saOrder.getPkId(), pkApprove, currentDateTime); iCuMemberService.deleteCuMemberByPkMember(pkMember, pkApprove, currentDateTime); @@ -897,7 +892,7 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService { if (EOrderType.RETAIL_UPGRADE.getValue() == saOrder.getOrderType()) { // 升级订单 // 回退等级 - cuMemberLevelService.deleteCuMemberLevelRecord(saOrder.getPkId(), pkApprove, currentDateTime); + iCuMemberLevelService.deleteCuMemberLevelRecord(saOrder.getPkId(), pkApprove, currentDateTime); } else if (EOrderType.RETAIL_REPURCHASE.getValue() == saOrder.getOrderType()) { // 复购订单 // 会员等级发生变化,新等级需要处理 @@ -906,26 +901,6 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService { // 更新会员等级 cuMember.setPkSettleGrade(newGrade.getPkId()); } - - // 处理升级记录(添加、删除) - List deleteLevelList = saOrder.getDeleteLevelList(); - if (CollectionUtil.isNotEmpty(deleteLevelList)) { - cuMemberLevelService.update(Wrappers.lambdaUpdate() - .set(CuMemberLevel::getDelFlag, EDelFlag.DELETE.getValue()) - .set(CuMemberLevel::getModifiedTime, new Date()) - .set(CuMemberLevel::getPkModified, pkApprove) - .in(CuMemberLevel::getPkId, deleteLevelList.stream().map(CuMemberLevel::getPkId).collect(Collectors.toList())) - ); - } - List createLevelList = saOrder.getCreateLevelList(); - if (CollectionUtil.isNotEmpty(createLevelList)) { - // 校验插入的升级时间要小于V4、V5的升级时间 - CuMemberLevel tmpLevel = cuMemberLevelService.getLevelByGradeValue(saOrder.getPkMember(), EGrade.VIP.getValue(), saOrder.getPayTime(), saOrder.getPkCountry()); - if (null != tmpLevel) { - createLevelList = createLevelList.stream().filter(tmp -> tmp.getUpgradeTime().compareTo(tmpLevel.getUpgradeTime()) < 0).collect(Collectors.toList()); - } - cuMemberLevelService.insertBatch(createLevelList); - } } // 更新会员标记,如果是则更新会员信息 @@ -936,6 +911,8 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService { } } + this.handleParentLevel(saOrder, currentDateTime); + // 部分撤单 todo 发货后邮费不退,未发货退邮费 if (saOrder.getBackOrderAmount() != null && ComputeUtil.compareValue(saOrder.getBackOrderAmount())) { cancelPartOrderBackAmount(pkApprove, saOrder); @@ -1633,7 +1610,7 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService { .build(); cuMemberLevel.setPkCountry(cuMember.getPkSettleCountry()); cuMemberLevel.setPkCreator(cuMember.getPkId()); - cuMemberLevelService.save(cuMemberLevel); + iCuMemberLevelService.save(cuMemberLevel); LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); updateWrapper.set(CuMember::getPkSettleGrade, upgradeDTO.getPkId()); @@ -1645,4 +1622,54 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService { } } + /** + * 处理推荐人等级 + * + * @param saOrder + * @param currentDateTime + */ + private void handleParentLevel(SaOrderExt saOrder, Date currentDateTime) { + // 注册、升级订单,需要判断是否有推荐人升级的 + if (EOrderType.RETAIL_REGISTER.getValue() == saOrder.getOrderType() + || EOrderType.RETAIL_UPGRADE.getValue() == saOrder.getOrderType()) { + // 查询订单是否带有自动升级记录 + LambdaQueryWrapper memberLevelQuery = new LambdaQueryWrapper<>(); + memberLevelQuery.eq(CuMemberLevel::getPkOrder, saOrder.getPkId()); + memberLevelQuery.eq(CuMemberLevel::getUpType, EUpgradeType.AUTO_UPGRADE.getValue()); + CuMemberLevel parentLevel = iCuMemberLevelService.getOne(memberLevelQuery); + if (null != parentLevel) { + // 查询推荐人信息(必须是高级店主) + CuMember parentMember = iCuMemberService.getGradeSvipMember(parentLevel.getPkMember()); + if (null != parentMember) { + // 推荐是高级店主,查询直推博羚店主以上订单 + SaOrder parentOrder = iCuMemberService.listRecommendVipOrder(parentMember.getPkId(), saOrder.getOrderCode()); + if (null != parentOrder) { + // 存在其它博羚店主订单,重新处理升级记录 + CuMemberLevel parentNewLevel = BeanUtil.copyProperties(parentLevel, CuMemberLevel.class); + parentNewLevel.setPkId(null); + parentNewLevel.setPkOrder(parentOrder.getPkId()); + parentNewLevel.setUpgradeTime(parentOrder.getPayTime()); + parentNewLevel.setModifiedTime(parentOrder.getPayTime()); + parentNewLevel.setPkModified(parentOrder.getPkMember()); + iCuMemberLevelService.save(parentNewLevel); + } else { + // 不存在其它博羚店主订单,会员需要降级处理 + LambdaUpdateWrapper parentMemberUpdate = new LambdaUpdateWrapper<>(); + parentMemberUpdate.eq(CuMember::getPkId, parentMember.getPkId()); + parentMemberUpdate.set(CuMember::getPkSettleGrade, parentLevel.getOldLevel()); + parentMemberUpdate.set(CuMember::getModifiedTime, currentDateTime); + iCuMemberService.update(parentMemberUpdate); + } + // 删除原来升级记录 + LambdaUpdateWrapper updateMemberLevel = new LambdaUpdateWrapper<>(); + updateMemberLevel.eq(CuMemberLevel::getPkId, parentLevel.getPkId()); + updateMemberLevel.set(CuMemberLevel::getDelFlag, EDelFlag.DELETE.getValue()); + updateMemberLevel.set(CuMemberLevel::getModifiedTime, currentDateTime); + iCuMemberLevelService.update(updateMemberLevel); + } + } + } + + } + } diff --git a/bd-business/bd-business-member/src/main/java/com/hzs/member/base/service/impl/CuMemberServiceImpl.java b/bd-business/bd-business-member/src/main/java/com/hzs/member/base/service/impl/CuMemberServiceImpl.java index bb04351a..e1808173 100644 --- a/bd-business/bd-business-member/src/main/java/com/hzs/member/base/service/impl/CuMemberServiceImpl.java +++ b/bd-business/bd-business-member/src/main/java/com/hzs/member/base/service/impl/CuMemberServiceImpl.java @@ -26,6 +26,7 @@ import com.hzs.common.domain.member.detail.CuMemberGrade; import com.hzs.common.domain.member.detail.CuMemberServiceLog; import com.hzs.common.domain.member.empty.CuMemberEmptyCode; import com.hzs.common.domain.member.ext.CuMemberExt; +import com.hzs.common.domain.sale.order.SaOrder; import com.hzs.common.domain.sale.wares.BdWaresAuthority; import com.hzs.common.domain.system.config.BdAwards; import com.hzs.common.domain.system.config.BdTradeWhiteConfig; @@ -3161,4 +3162,14 @@ public class CuMemberServiceImpl extends ServiceImpl i return baseMapper.getShopkeeperMember(pkMember); } + @Override + public CuMember getGradeSvipMember(Long pkMember) { + return baseMapper.getGradeSvipMember(pkMember); + } + + @Override + public SaOrder listRecommendVipOrder(Long pkMember, String orderCode) { + return baseMapper.listRecommendVipOrder(pkMember, orderCode); + } + } diff --git a/bd-business/bd-business-member/src/main/java/com/hzs/member/detail/service/ICuMemberLevelService.java b/bd-business/bd-business-member/src/main/java/com/hzs/member/detail/service/ICuMemberLevelService.java index 68239812..4fc787d0 100644 --- a/bd-business/bd-business-member/src/main/java/com/hzs/member/detail/service/ICuMemberLevelService.java +++ b/bd-business/bd-business-member/src/main/java/com/hzs/member/detail/service/ICuMemberLevelService.java @@ -13,7 +13,7 @@ import java.util.List; public interface ICuMemberLevelService extends IService { /** - * 删除会员等级升级记录 + * 删除会员等级升级记录(订单购买升级的) * * @param pkOrder 订单 * @param pkApprove 审核人 diff --git a/bd-business/bd-business-member/src/main/java/com/hzs/member/detail/service/impl/CuMemberLevelServiceImpl.java b/bd-business/bd-business-member/src/main/java/com/hzs/member/detail/service/impl/CuMemberLevelServiceImpl.java index cbb74e76..58f2e239 100644 --- a/bd-business/bd-business-member/src/main/java/com/hzs/member/detail/service/impl/CuMemberLevelServiceImpl.java +++ b/bd-business/bd-business-member/src/main/java/com/hzs/member/detail/service/impl/CuMemberLevelServiceImpl.java @@ -2,6 +2,7 @@ package com.hzs.member.detail.service.impl; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.hzs.common.core.enums.EUpgradeType; import com.hzs.common.core.enums.EYesNo; import com.hzs.common.domain.member.detail.CuMemberGrade; import com.hzs.common.domain.member.detail.CuMemberLevel; @@ -25,6 +26,8 @@ public class CuMemberLevelServiceImpl extends ServiceImpl + + + + + + diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/service/impl/SaOrderServiceImpl.java b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/service/impl/SaOrderServiceImpl.java index a9b2d2af..7df2228f 100644 --- a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/service/impl/SaOrderServiceImpl.java +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/service/impl/SaOrderServiceImpl.java @@ -2030,7 +2030,7 @@ public class SaOrderServiceImpl extends ServiceImpl impl * @return */ private GradeDTO calculateRetailCancelGrade(CuMember cuMember, SaOrder saOrder) { - // 查询会员升级记录表最终数据 + // 查询会员最新升级记录 CuMemberLevel cuMemberLevel = iCuMemberDetailServiceApi.getLastUpgrade(cuMember.getPkId(), saOrder.getPkId()).getData(); if (null != cuMemberLevel) { return gradeServiceApi.getGrade(cuMemberLevel.getNewLevel()).getData(); @@ -2065,10 +2065,9 @@ public class SaOrderServiceImpl extends ServiceImpl impl cuMember.setConsumeMoney(BigDecimal.ZERO); cuMember.setConsumeAchieve(cuMemberRegister.getConsumeAchieve()); - // 查询会员升级记录表最终数据 + // 查询会员最新升级记录 CuMemberLevel cuMemberLevel = iCuMemberDetailServiceApi.getLastUpgrade(cuMember.getPkId(), saOrderExt.getPkId()).getData(); if (null != cuMemberLevel) { - // 存在手动升级 cuMember.setPkSettleGrade(cuMemberLevel.getNewLevel()); } } else { @@ -2085,48 +2084,6 @@ public class SaOrderServiceImpl extends ServiceImpl impl cuMember.setIsActivate(EYesNo.NO.getIntValue()); } saOrderExt.setUpdateFlag(EYesNo.YES.getIntValue()); - } else if (EOrderType.RETAIL_REPURCHASE.getValue() == saOrderExt.getOrderType()) { - // 复购订单存在盒数商品撤单,需要处理降级操作 - if (saOrderExt.getBoxNum() > 0) { - // TODO 目前只有注册、升级才能激活,复购不进行处理 -// Date firstDate = baseMapper.getFirstPayTime(cuMember.getPkId()); -// if (null == firstDate) { -// // 盒数商品订单最早的时间为空,则会员未激活 -// cuMember.setPayTime(null); -// cuMember.setPayStatus(EPayStatus.UNPAID.getValue()); -// cuMember.setIsActivate(EYesNo.NO.getIntValue()); -// saOrderExt.setUpdateFlag(EYesNo.YES.getIntValue()); -// } - - // TODO 恢复升级专区,复购专区不需要处理等级问题 -// // 如果复购订单后面还有升级订单,不需要处理等级问题; 复购订单后面没有升级订单,走新逻辑校验 -// if (this.count(Wrappers.lambdaQuery() -// .eq(SaOrder::getPkMember, saOrderExt.getPkMember()) -// .eq(SaOrder::getOrderType, EOrderType.RETAIL_UPGRADE.getValue()) -// .ge(SaOrder::getPayTime, saOrderExt.getPayTime()) -// .eq(SaOrder::getOrderStatus, EPayStatus.PAID.getValue()) -// ) == 0) { -// // 带有盒数商品的订单,需要校验等级 -// List gradeList = iGradeServiceApi.getRetailGradeList().getData(); -// // 当前会员等级 -// BdGrade memberGrade = this.getGrade(cuMember.getPkSettleGrade(), gradeList); -// -// // 需要添加的升级记录列表 -// List createLevelList = new ArrayList<>(); -// // 需要删除的升级记录列表 -// List deleteLevelList = new ArrayList<>(); -// // 新等级计算 -// BdGrade newGrade = this.handleNewGrade(cuMember, memberGrade, gradeList, saOrderExt, createLevelList, deleteLevelList); -// -// if (memberGrade.getGradeValue() < EGrade.VIP.getValue() && newGrade.getGradeValue() < memberGrade.getGradeValue()) { -// // 当前会员等级不是V4或者V5 并且 新等级小于当前等级需要进行处理 -// saOrderExt.setNewGrade(newGrade); -// saOrderExt.setUpdateFlag(EYesNo.YES.getIntValue()); -// } -// saOrderExt.setCreateLevelList(createLevelList); -// saOrderExt.setDeleteLevelList(deleteLevelList); -// } - } } else if (EOrderType.RETAIL_PICK.getValue() == saOrderExt.getOrderType()) { // 新提货订单 if (!iAcRetailPickService.cancelRetailPickOrder(saOrderExt.getPkId(), pkApprove)) { diff --git a/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/sale/ext/SaOrderExt.java b/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/sale/ext/SaOrderExt.java index d15fa03b..e7909233 100644 --- a/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/sale/ext/SaOrderExt.java +++ b/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/sale/ext/SaOrderExt.java @@ -3,7 +3,6 @@ package com.hzs.common.domain.sale.ext; import com.hzs.common.core.annotation.Transaction; import com.hzs.common.core.constant.EnumsPrefixConstants; import com.hzs.common.domain.member.account.CuMemberTrade; -import com.hzs.common.domain.member.detail.CuMemberLevel; import com.hzs.common.domain.sale.order.*; import com.hzs.common.domain.system.config.BdGrade; import lombok.Data; @@ -166,15 +165,6 @@ public class SaOrderExt extends SaOrder { */ private BdGrade newGrade; - /** - * 需要添加的升级记录列表 - */ - private List createLevelList; - /** - * 需要删除的升级记录列表 - */ - private List deleteLevelList; - /** * 选择区域省