diff --git a/bd-api/bd-api-member/src/main/java/com/hzs/member/detail/ICuMemberDetailServiceApi.java b/bd-api/bd-api-member/src/main/java/com/hzs/member/detail/ICuMemberDetailServiceApi.java index 81d8a032..69e0b516 100644 --- a/bd-api/bd-api-member/src/main/java/com/hzs/member/detail/ICuMemberDetailServiceApi.java +++ b/bd-api/bd-api-member/src/main/java/com/hzs/member/detail/ICuMemberDetailServiceApi.java @@ -3,7 +3,6 @@ package com.hzs.member.detail; import com.hzs.common.core.domain.R; import com.hzs.common.domain.member.base.CuMemberRegister; import com.hzs.common.domain.member.detail.CuMemberLevel; -import com.hzs.common.domain.member.detail.ext.CuMemberAwardsExt; import java.util.List; @@ -29,14 +28,6 @@ public interface ICuMemberDetailServiceApi { */ R> getUpgradeList(Long pkMember); - /** - * 查询手动开通奖衔的最新一条 - * - * @param pkMember 会员ID - * @return - */ - R queryLastManualAwards(Long pkMember); - /** * 查询会员注册信息 * diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/base/mapper/CuMemberMapper.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/base/mapper/CuMemberMapper.java index 50fae8e2..fd941ccc 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/base/mapper/CuMemberMapper.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/base/mapper/CuMemberMapper.java @@ -5,6 +5,8 @@ import com.hzs.common.domain.member.base.CuMember; import com.hzs.common.domain.member.ext.CuMemberExt; import org.apache.ibatis.annotations.Param; +import java.util.Date; + /** * 会员 Mapper 接口 */ @@ -19,4 +21,9 @@ public interface CuMemberMapper extends BaseMapper { */ CuMemberExt queryLoginMember(@Param("memberCode") String memberCode, @Param("pkMember") Long pkMember); + /** + * 更新会员等级 + */ + void updateCuMemberLevel(@Param("startDate") Date startDate, @Param("endDate") Date endDate); + } diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/base/service/ICuMemberService.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/base/service/ICuMemberService.java index 8c823474..18306a32 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/base/service/ICuMemberService.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/base/service/ICuMemberService.java @@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.hzs.common.domain.member.base.CuMember; import com.hzs.common.domain.member.ext.CuMemberExt; +import java.util.Date; + /** * 会员 服务类 */ @@ -17,4 +19,9 @@ public interface ICuMemberService extends IService { */ CuMemberExt getMemberByCode(String memberCode); + /** + * 更新会员等级 + */ + void updateCuMemberLevel(Date startDate, Date endDate); + } diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/base/service/impl/CuMemberServiceImpl.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/base/service/impl/CuMemberServiceImpl.java index 3c459067..f33cd392 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/base/service/impl/CuMemberServiceImpl.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/base/service/impl/CuMemberServiceImpl.java @@ -7,6 +7,8 @@ import com.hzs.common.domain.member.ext.CuMemberExt; import com.hzs.bonus.base.mapper.CuMemberMapper; import org.springframework.stereotype.Service; +import java.util.Date; + /** * 会员 服务实现类 */ @@ -18,4 +20,9 @@ public class CuMemberServiceImpl extends ServiceImpl i return baseMapper.queryLoginMember(memberCode, null); } + @Override + public void updateCuMemberLevel(Date startDate, Date endDate) { + baseMapper.updateCuMemberLevel(startDate, endDate); + } + } diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/mapper/CuMemberBonusCoachMapper.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/mapper/CuMemberBonusCoachMapper.java deleted file mode 100644 index 3ce3c4d4..00000000 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/mapper/CuMemberBonusCoachMapper.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.hzs.bonus.bonus.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.hzs.common.domain.member.bonus.CuMemberBonusCoach; -import com.hzs.common.domain.member.ext.CuMemberBonusCoachExt; -import com.hzs.bonus.bonus.param.BonusParam; -import org.apache.ibatis.annotations.Param; - -import java.util.List; - -/** - * 会员奖金-辅导收益明细表 Mapper 接口 - */ -public interface CuMemberBonusCoachMapper extends BaseMapper { - - /** - * 删除会员奖金汇总表 - * - * @param period 结算期间 - */ - void deleteCuMemberBonusCoach(Integer period); - - /** - * 批量插入会员奖金主表 - * - * @param cuMemberBonusCoachList 会员奖金 - */ - void batchInsertCuMemberBonusCoach(@Param("cuMemberBonusCoachList") List cuMemberBonusCoachList); - - /** - * 根据查询条件查询固定的奖金明细 - * - * @param bonusParam 查询条件 - */ - List queryMemberBonusCoachByBonusItems(BonusParam bonusParam); - - /** - * 根据查询条件查询固定的奖金明细 - * - * @param bonusParam 查询条件 - */ - List queryMemberBonusCoachByBonusItemsForServer(@Param("bonusParam") BonusParam bonusParam); -} diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/mapper/CuMemberBonusExpandMapper.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/mapper/CuMemberBonusExpandMapper.java deleted file mode 100644 index eff30d4b..00000000 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/mapper/CuMemberBonusExpandMapper.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.hzs.bonus.bonus.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.hzs.common.domain.member.bonus.CuMemberBonusExpand; -import com.hzs.common.domain.member.ext.CuMemberBonusExpandExt; -import com.hzs.bonus.bonus.param.BonusParam; -import org.apache.ibatis.annotations.Param; - -import java.util.List; - -/** - * 会员奖金-拓展收益明细表 Mapper 接口 - */ -public interface CuMemberBonusExpandMapper extends BaseMapper { - - /** - * 删除会员奖金汇总表 - * - * @param period 结算期间 - */ - void deleteCuMemberBonusExpand(Integer period); - - /** - * 批量插入会员奖金主表 - * - * @param cuMemberBonusExpandList 会员奖金 - */ - void batchInsertCuMemberBonusExpand(@Param("cuMemberBonusExpandList") List cuMemberBonusExpandList); - - /** - * 根据查询条件查询固定的奖金明细 - * - * @param bonusParam 查询条件 - */ - List queryMemberBonusExpandByBonusItems(BonusParam bonusParam); - - /** - * 根据查询条件查询固定的奖金明细 - * - * @param bonusParam 查询条件 - */ - List queryMemberBonusExpandByBonusItemsForServer(@Param("bonusParam") BonusParam bonusParam); -} diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/ICuMemberBonusCoachService.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/ICuMemberBonusCoachService.java deleted file mode 100644 index 876debdf..00000000 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/ICuMemberBonusCoachService.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.hzs.bonus.bonus.service; - -import com.baomidou.mybatisplus.extension.service.IService; -import com.hzs.common.domain.member.bonus.CuMemberBonusCoach; - -import java.util.List; -import java.util.Set; - -/** - * 会员奖金-辅导收益明细表 服务类 - */ -public interface ICuMemberBonusCoachService extends IService { - - /** - * 删除会员奖金汇总表 - * - * @param period 结算期间 - */ - void deleteCuMemberBonusCoach(Integer period); - - /** - * 批量插入会员奖金主表 - * - * @param cuMemberBonusCoachList 会员奖金 - */ - void batchInsertCuMemberBonusCoach(List cuMemberBonusCoachList, Set memberIdSet); -} diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/ICuMemberBonusExpandService.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/ICuMemberBonusExpandService.java deleted file mode 100644 index 9143331f..00000000 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/ICuMemberBonusExpandService.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.hzs.bonus.bonus.service; - -import com.baomidou.mybatisplus.extension.service.IService; -import com.hzs.common.domain.member.bonus.CuMemberBonusExpand; - -import java.util.List; -import java.util.Set; - -/** - * 会员奖金-拓展收益明细表 服务类 - */ -public interface ICuMemberBonusExpandService extends IService { - - /** - * 删除会员奖金汇总表 - * - * @param period 结算期间 - */ - void deleteCuMemberBonusExpand(Integer period); - - /** - * 批量插入会员奖金主表 - * - * @param cuMemberBonusExpandList 会员奖金 - */ - void batchInsertCuMemberBonusExpand(List cuMemberBonusExpandList, Set memberIdSet); - -} diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettleHandle.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettleHandle.java index d9c3b1a4..15135c09 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettleHandle.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettleHandle.java @@ -53,6 +53,23 @@ public abstract class BonusSettleHandle { cuMemberBonusRange.setRemark(remark); } + /** + * 获得 复购级差收益的备注 + * + * @param saOrderExt 订单编号 + * @param cuMemberBonusRange 报单服务费 + * @param sourceMemberRangeExt 提供奖金的人 + * @param targetMemberRangeExt 获得奖金的人 + */ + protected void rangeRepurRetailRemark(SaOrderExt saOrderExt, CuMemberBonusRange cuMemberBonusRange, CuMemberRetailRangeExt sourceMemberRangeExt, + CuMemberRetailRangeExt targetMemberRangeExt) { + String remark = String.format(BonusMsgConstants.REPUR_RANGE, saOrderExt.getOrderCode(), + sourceMemberRangeExt.getMemberCode() + sourceMemberRangeExt.getMemberName(), + targetMemberRangeExt.getMemberCode() + targetMemberRangeExt.getMemberName(), + cuMemberBonusRange.getCalAchieve(), sourceMemberRangeExt.getGradeName(), targetMemberRangeExt.getGradeName()); + cuMemberBonusRange.setRemark(remark); + } + protected CuMemberBonus getCuMemberBonus(Integer period, Map cuMemberBonusMap, Long pkMember, Integer incomeStatus, Integer pkCountry, Integer pkRate) { if (cuMemberBonusMap.containsKey(pkMember)) { diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettleRangeHandle.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettleRangeHandle.java index c39bcc5f..69034e1a 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettleRangeHandle.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettleRangeHandle.java @@ -2,6 +2,7 @@ package com.hzs.bonus.bonus.service.impl; import com.hzs.bonus.achieve.service.ICuMemberRetailRangeService; import com.hzs.bonus.bonus.vo.BonusRecordDetailVO; +import com.hzs.bonus.detail.service.ICuMemberGradeService; import com.hzs.bonus.order.service.IBonusOrderService; import com.hzs.common.core.constant.MagicNumberConstants; import com.hzs.common.core.constant.RetailConstants; @@ -12,10 +13,9 @@ import com.hzs.common.core.utils.DateUtils; import com.hzs.common.domain.bonus.BdBonusDeduct; import com.hzs.common.domain.member.achieve.ext.CuMemberRetailRangeExt; import com.hzs.common.domain.member.bonus.*; -import com.hzs.common.domain.member.detail.CuMemberAwards; +import com.hzs.common.domain.member.detail.CuMemberLevel; import com.hzs.common.domain.member.detail.CuMemberServiceLog; import com.hzs.common.domain.sale.ext.SaOrderExt; -import com.hzs.common.domain.sale.ext.SaOrderWaresExt; import com.hzs.common.domain.sale.order.SaOrder; import com.hzs.common.domain.system.config.BdGrade; import com.hzs.member.detail.ICuMemberServiceLogServiceApi; @@ -41,13 +41,15 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { private ICuMemberRetailRangeService iCuMemberRetailRangeService; @Autowired private IBonusOrderService iBonusOrderService; + @Autowired + private ICuMemberGradeService iCuMemberGradeService; @DubboReference ICuMemberServiceLogServiceApi iCuMemberServiceLogServiceApi; /** * 日结: - * 计算新零售团队的奖金,首购级差、复购级差 + * 计算新零售奖金,首购级差、复购级差 */ void calculateRetailBonusByDay(String settleDate, Map cuMemberBonusMap, BonusConfigDTO bonusConfigDTO, BonusRecordDetailVO bonusRecordDetailVO, Integer period, Integer yesterdayPeriod, Boolean isSameMonth) { @@ -78,19 +80,26 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { Map activateMap = this.getActivateMap(settleStartDate); if (retailOrderList.size() > 0) { + // 会员购买升级记录 + Map memberLevelMap = new HashMap<>(); + List memberLevelList = iCuMemberGradeService.calculateCuMemberRetailGradeInit(period, settleStartDate, settleEndDate, rangeTableName); + memberLevelList.forEach(cuMemberLevel -> memberLevelMap.put(cuMemberLevel.getPkOrder(), cuMemberLevel)); + + // 会员的自动升级记录 + Map autoLevelMap = new HashMap<>(); + List autoLevelList = iCuMemberGradeService.listAutoLevel(settleStartDate, settleEndDate); + autoLevelList.forEach(tmpLevel -> autoLevelMap.put(tmpLevel.getPkOrder(), tmpLevel)); + // 按照血缘,查询该会员所有伞上会员 List memberRetailRangeExtList = iCuMemberRetailRangeService.queryCuMemberRetailRangeParent(rangeTableName, retailOrderList); // 会员结算map(key:会员ID,value:结算扩展) Map memberRangeExtMap = new HashMap<>(); - // 等级map(key:等级值,value:等级对象) - Map gradeMap = new HashMap<>(); // 等级map(key:等级ID,value:等级对象) Map gradeIdMap = new HashMap<>(); // 等级列表 List retaiGradeList = bonusConfigDTO.getRetaiGradeList(); for (BdGrade bdGrade : retaiGradeList) { - gradeMap.put(bdGrade.getGradeValue(), bdGrade); gradeIdMap.put(bdGrade.getPkId(), bdGrade); } // 结算会员map处理 @@ -100,14 +109,14 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { } } - // 平级收益 + // 级差收益 List cuMemberBonusRangeList = new ArrayList<>(); // 上面更新网体,按会员表是否激活进行处理 for (SaOrderExt saOrderExt : retailOrderList) { CuMemberRetailRangeExt sourceMemberRangeExt = memberRangeExtMap.get(saOrderExt.getPkMember()); - if (EOrderType.RETAIL_REGISTER.getValue() == saOrderExt.getOrderType() || - EOrderType.RETAIL_UPGRADE.getValue() == saOrderExt.getOrderType()) { + if (EOrderType.RETAIL_REGISTER.getValue() == saOrderExt.getOrderType() + || EOrderType.RETAIL_UPGRADE.getValue() == saOrderExt.getOrderType()) { // 注册、升级才能算激活状态 sourceMemberRangeExt.setEnableStatus(EYesNo.YES.getIntValue()); } @@ -118,12 +127,8 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { CuMemberRetailRangeExt sourceMemberRangeExt = memberRangeExtMap.get(saOrderExt.getPkMember()); // 订单指定产品盒数(计算等级使用) - int boxNum = 0; - for (SaOrderWaresExt saOrderItems : saOrderExt.getOrderWaresExtList()) { - if (RetailConstants.ALL_BOX_WARES_LIST.contains(saOrderItems.getWaresCode())) { - boxNum += saOrderItems.getWaresQuantity(); - } - } + int boxNum = saOrderExt.getBoxNum(); + // 个人累计消费pv BigDecimal orderAchieve = saOrderExt.getOrderAchieve(); // 复购、重消,盒数、业绩算个人累计数据(盒数、业绩) @@ -147,13 +152,35 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { && boxNum > 0 ) { // 注册或升级订单并且存在盒数产品,才有 直推级差 - for (SaOrderWaresExt saOrderItems : saOrderExt.getOrderWaresExtList()) { - // 直推级差 - cuMemberBonusRangeList.addAll(calculateRetailRangeBonus(memberRangeExtMap, cuMemberBonusMap, gradeMap, bonusConfigDTO, period, saOrderItems, saOrderExt)); - } - } else if (EOrderType.RETAIL_REPURCHASE.getValue() == saOrderExt.getOrderType()) { - // TODO new 复购订单,计算复购级差 + cuMemberBonusRangeList.addAll(calculateRetailRangeBonus(memberRangeExtMap, cuMemberBonusMap, bonusConfigDTO, period, saOrderExt, gradeIdMap)); + // 订单存在升级记录 + if (memberLevelMap.containsKey(saOrderExt.getPkId())) { + CuMemberLevel cuMemberLevel = memberLevelMap.get(saOrderExt.getPkId()); + if (gradeIdMap.containsKey(cuMemberLevel.getNewLevel())) { + BdGrade bdGrade = gradeIdMap.get(cuMemberLevel.getNewLevel()); + if (bdGrade.getGradeValue() > sourceMemberRangeExt.getGradeValue()) { + sourceMemberRangeExt.setPkGrade(bdGrade.getPkId()); + sourceMemberRangeExt.setGradeValue(bdGrade.getGradeValue()); + sourceMemberRangeExt.setGradeName(bdGrade.getGradeName()); + } + } + } + // 订单存在自动升级记录(高级店主处理) + if (autoLevelMap.containsKey(saOrderExt.getPkId())) { + CuMemberLevel cuMemberLevel = autoLevelMap.get(saOrderExt.getPkId()); + if (gradeIdMap.containsKey(cuMemberLevel.getNewLevel())) { + BdGrade bdGrade = gradeIdMap.get(cuMemberLevel.getNewLevel()); + CuMemberRetailRangeExt tmpMemberRetailRange = memberRangeExtMap.get(cuMemberLevel.getPkMember()); + tmpMemberRetailRange.setPkGrade(bdGrade.getPkId()); + tmpMemberRetailRange.setGradeValue(bdGrade.getGradeValue()); + tmpMemberRetailRange.setGradeName(bdGrade.getGradeName()); + } + } + } else if (EOrderType.RETAIL_REPURCHASE.getValue() == saOrderExt.getOrderType() + && boxNum > 0) { + // 复购订单,计算复购级差 + cuMemberBonusRangeList.addAll(calculateRetailRepurRangeBonus(memberRangeExtMap, cuMemberBonusMap, bonusConfigDTO, period, saOrderExt)); } } if (cuMemberBonusRangeList.size() > 0) { @@ -171,10 +198,8 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { /** * 累计团队盒数、业绩等 */ - public List calculateRetailRangeGradeAwards(Map memberRangeExtMap, SaOrderExt saOrderExt, - Integer boxNum, Map activateMap) { - // 会员奖衔升级列表 - List cuMemberAwardsList = new ArrayList<>(); + public void calculateRetailRangeGradeAwards(Map memberRangeExtMap, SaOrderExt saOrderExt, + Integer boxNum, Map activateMap) { // 订单会员 CuMemberRetailRangeExt sourceMemberRangeExt = memberRangeExtMap.get(saOrderExt.getPkMember()); // 订单会员的推荐人 @@ -207,15 +232,13 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { } targetMemberRangeExt = memberRangeExtMap.get(targetMemberRangeExt.getPkParent()); } - return cuMemberAwardsList; } /** * 计算直推级差收益 */ List calculateRetailRangeBonus(Map memberRangeExtMap, Map cuMemberBonusMap, - Map gradeMap, BonusConfigDTO bonusConfigDTO, Integer period, - SaOrderWaresExt saOrderItems, SaOrderExt saOrderExt) { + BonusConfigDTO bonusConfigDTO, Integer period, SaOrderExt saOrderExt, Map gradeIdMap) { // 直推级差返回数据 List memberBonusRangeList = new ArrayList<>(); @@ -223,27 +246,28 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { CuMemberRetailRangeExt sourceMemberRangeExt = memberRangeExtMap.get(saOrderExt.getPkMember()); // 推荐人 long pkParent = sourceMemberRangeExt.getPkParent(); + // 订单等级值 + Integer orderGradeValue = gradeIdMap.get(saOrderExt.getPkGrade()).getGradeValue(); - // 商品最终价格 - BigDecimal waresPrice = saOrderItems.getWaresPrice(); - // 商品数量 - BigDecimal waresQuantityBig = new BigDecimal(saOrderItems.getWaresQuantity()); - - // 会员顺序 - int memberLevel = 0; // 前一个会员等级 int beforeGradeValue = 0; + // 前面累计奖金 + BigDecimal totalBonus = BigDecimal.ZERO; + // 平级合伙人数量 + int v3Count = 1; // 计算直推级差 while (true) { + // 上一次处理的是公司等级,则结束退出 + if (beforeGradeValue == EGrade.COMPANY.getValue()) { + break; + } // 推荐人 CuMemberRetailRangeExt targetMemberRangeExt = memberRangeExtMap.get(pkParent); - if (targetMemberRangeExt == null) { + if (null == targetMemberRangeExt) { break; } // 推荐人的推荐人 pkParent = targetMemberRangeExt.getPkParent(); - // 会员顺序 - memberLevel += 1; if (EAccountStatus.STOP_INCOME.getValue() == targetMemberRangeExt.getAccountStatus() || ECategory.NORMAL.getValue() != targetMemberRangeExt.getCategory() @@ -254,33 +278,252 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { continue; } // 当前会员等级值 - int calGradeValue = targetMemberRangeExt.getGradeValue(); + int targetGradeValue = targetMemberRangeExt.getGradeValue(); // 直推级差收益 BigDecimal rangeBonusIncome = BigDecimal.ZERO; - if (memberLevel == 1) { - // 直推,拿80 - rangeBonusIncome = rangeBonusIncome.add(RetailConstants.FIRST_DIRECT); - } else if (memberLevel == 2) { - // 间推,拿20 - rangeBonusIncome = rangeBonusIncome.add(RetailConstants.FIRST_INDIRECT); + if (EGrade.HAI_FAN.getValue() == orderGradeValue) { + // 订单等级是会员、VIP + if (targetGradeValue > beforeGradeValue) { + // 当前会员等级大于上一个会员等级 + if (EGrade.HAI_FAN.getValue() == targetGradeValue) { + // V1 推拿 60 + rangeBonusIncome = RetailConstants.V1_V1; + // 前面累计的奖金 + totalBonus = totalBonus.add(RetailConstants.V1_V1); + } else if (EGrade.YOU_KE.getValue() == targetGradeValue) { + // V2 推拿 80,或者减去之前累计 + rangeBonusIncome = RetailConstants.V2_V1.subtract(totalBonus); + // 前面累计的奖金 + totalBonus = totalBonus.add(RetailConstants.V2_V1.subtract(totalBonus)); + } else if (EGrade.MAKER.getValue() == targetGradeValue) { + // V3 推拿 100,或者减去之前累计 + rangeBonusIncome = RetailConstants.V3_V1.subtract(totalBonus); + // 前面累计的奖金 + totalBonus = totalBonus.add(RetailConstants.V3_V1.subtract(totalBonus)); + } else if (EGrade.VIP.getValue() == targetGradeValue) { + // V4 推拿 200,或者减去之前累计 + rangeBonusIncome = RetailConstants.V4_V1.subtract(totalBonus); + // 前面累计的奖金 + totalBonus = totalBonus.add(RetailConstants.V4_V1.subtract(totalBonus)); + } else if (EGrade.S_VIP.getValue() == targetGradeValue) { + // V5 推拿 208,或者减去之前累计 + rangeBonusIncome = RetailConstants.V5_V1.subtract(totalBonus); + // 前面累计的奖金 + totalBonus = totalBonus.add(RetailConstants.V5_V1.subtract(totalBonus)); + } else if (EGrade.BRANCH_COMPANY.getValue() == targetGradeValue) { + // V6 推拿 220 ,或者减去之前累计 + rangeBonusIncome = RetailConstants.V6_V1.subtract(totalBonus); + // 前面累计的奖金 + totalBonus = totalBonus.add(RetailConstants.V6_V1.subtract(totalBonus)); + } else if (EGrade.COMPANY.getValue() == targetGradeValue) { + // V7 推拿 240,或者减去之前累计 + rangeBonusIncome = RetailConstants.V7_V1.subtract(totalBonus); + // 前面累计的奖金 + totalBonus = totalBonus.add(RetailConstants.V7_V1.subtract(totalBonus)); + } + } + } else if (EGrade.YOU_KE.getValue() == orderGradeValue) { + // 订单等级是VIP + if (targetGradeValue > beforeGradeValue) { + // 当前会员等级大于上一个会员等级 + if (EGrade.HAI_FAN.getValue() == targetGradeValue) { + // V1 推拿 300 + rangeBonusIncome = RetailConstants.V1_V2; + // 前面累计的奖金 + totalBonus = totalBonus.add(RetailConstants.V1_V2); + } else if (EGrade.YOU_KE.getValue() == targetGradeValue) { + // V2 推拿 400,或者减去之前累计 + rangeBonusIncome = RetailConstants.V2_V2.subtract(totalBonus); + // 前面累计的奖金 + totalBonus = totalBonus.add(RetailConstants.V2_V2.subtract(totalBonus)); + } else if (EGrade.MAKER.getValue() == targetGradeValue) { + // V3 推拿 500,或者减去之前累计 + rangeBonusIncome = RetailConstants.V3_V2.subtract(totalBonus); + // 前面累计的奖金 + totalBonus = totalBonus.add(RetailConstants.V3_V2.subtract(totalBonus)); + } else if (EGrade.VIP.getValue() == targetGradeValue) { + // V4 推拿 1000,或者减去之前累计 + rangeBonusIncome = RetailConstants.V4_V2.subtract(totalBonus); + // 前面累计的奖金 + totalBonus = totalBonus.add(RetailConstants.V4_V2.subtract(totalBonus)); + } else if (EGrade.S_VIP.getValue() == targetGradeValue) { + // V5 推拿 1040,或者减去之前累计 + rangeBonusIncome = RetailConstants.V5_V2.subtract(totalBonus); + // 前面累计的奖金 + totalBonus = totalBonus.add(RetailConstants.V5_V2.subtract(totalBonus)); + } else if (EGrade.BRANCH_COMPANY.getValue() == targetGradeValue) { + // V6 推拿 1100,或者减去之前累计 + rangeBonusIncome = RetailConstants.V6_V2.subtract(totalBonus); + // 前面累计的奖金 + totalBonus = totalBonus.add(RetailConstants.V6_V2.subtract(totalBonus)); + } else if (EGrade.COMPANY.getValue() == targetGradeValue) { + // V7 推拿 1200,或者减去之前累计 + rangeBonusIncome = RetailConstants.V7_V2.subtract(totalBonus); + // 前面累计的奖金 + totalBonus = totalBonus.add(RetailConstants.V7_V2.subtract(totalBonus)); + } + } + } else if (EGrade.MAKER.getValue() == orderGradeValue) { + // 订单是合伙人 + if (targetGradeValue > beforeGradeValue) { + // 当前等级大于之前等级 + if (EGrade.HAI_FAN.getValue() == targetGradeValue) { + // V1 推拿 600 + rangeBonusIncome = RetailConstants.V1_V3; + // 前面累计的奖金 + totalBonus = totalBonus.add(RetailConstants.V1_V3); + } else if (EGrade.YOU_KE.getValue() == targetGradeValue) { + // V2 推拿 800,或者减去之前累计 + rangeBonusIncome = RetailConstants.V2_V3.subtract(totalBonus); + // 前面累计的奖金 + totalBonus = totalBonus.add(RetailConstants.V2_V3.subtract(totalBonus)); + } else if (EGrade.MAKER.getValue() == targetGradeValue) { + // V3 推拿 1000,或者减去之前累计 + rangeBonusIncome = RetailConstants.V3_V3_1.subtract(totalBonus); + // 前面累计的奖金 + totalBonus = totalBonus.add(RetailConstants.V3_V3_1.subtract(totalBonus)); + } else if (EGrade.VIP.getValue() == targetGradeValue) { + // V4 推拿 2000,或者减去之前累计 + rangeBonusIncome = RetailConstants.V4_V3.subtract(totalBonus); + // 前面累计的奖金 + totalBonus = totalBonus.add(RetailConstants.V4_V3.subtract(totalBonus)); + } else if (EGrade.S_VIP.getValue() == targetGradeValue) { + // V5 推拿 2080,或者减去之前累计 + rangeBonusIncome = RetailConstants.V5_V3.subtract(totalBonus); + // 前面累计的奖金 + totalBonus = totalBonus.add(RetailConstants.V5_V3.subtract(totalBonus)); + } else if (EGrade.BRANCH_COMPANY.getValue() == targetGradeValue) { + // V6 推拿 2200,或者减去之前累计 + rangeBonusIncome = RetailConstants.V6_V3.subtract(totalBonus); + // 前面累计的奖金 + totalBonus = totalBonus.add(RetailConstants.V6_V3.subtract(totalBonus)); + } else if (EGrade.COMPANY.getValue() == targetGradeValue) { + // V7 推拿 2400,或者减去之前累计 + rangeBonusIncome = RetailConstants.V7_V3.subtract(totalBonus); + // 前面累计的奖金 + totalBonus = totalBonus.add(RetailConstants.V7_V3.subtract(totalBonus)); + } + } else if (EGrade.MAKER.getValue() == beforeGradeValue + && EGrade.MAKER.getValue() == targetGradeValue) { + // 之前和现在都是合伙人,处理平级 + if (v3Count == 1) { + // V3第一平级 推拿 1200,或者减去之前累计 + rangeBonusIncome = RetailConstants.V3_V3_2.subtract(totalBonus); + // 前面累计的奖金 + totalBonus = totalBonus.add(RetailConstants.V3_V3_2.subtract(totalBonus)); + v3Count++; + } else if (v3Count == 2) { + // V3第二平级 推拿 1300,或者减去之前累计 + rangeBonusIncome = RetailConstants.V3_V3_3.subtract(totalBonus); + // 前面累计的奖金 + totalBonus = totalBonus.add(RetailConstants.V3_V3_3.subtract(totalBonus)); + v3Count++; + } + } + } else if (EGrade.VIP.getValue() == orderGradeValue) { + // 订单是合伙人 + if (targetGradeValue > beforeGradeValue) { + // 当前等级大于之前等级 + if (EGrade.HAI_FAN.getValue() == targetGradeValue) { + // V1 推拿 1200 + rangeBonusIncome = RetailConstants.V1_V4; + // 前面累计的奖金 + totalBonus = totalBonus.add(RetailConstants.V1_V4); + } else if (EGrade.YOU_KE.getValue() == targetGradeValue) { + // V2 推拿 1600,或者减去之前累计 + rangeBonusIncome = RetailConstants.V2_V4.subtract(totalBonus); + // 前面累计的奖金 + totalBonus = totalBonus.add(RetailConstants.V2_V4.subtract(totalBonus)); + } else if (EGrade.MAKER.getValue() == targetGradeValue) { + // V3 推拿 2000,或者减去之前累计 + rangeBonusIncome = RetailConstants.V3_V4_1.subtract(totalBonus); + // 前面累计的奖金 + totalBonus = totalBonus.add(RetailConstants.V3_V4_1.subtract(totalBonus)); + } else if (EGrade.VIP.getValue() == targetGradeValue) { + // V4 推拿 4000,或者减去之前累计 + rangeBonusIncome = RetailConstants.V4_V4.subtract(totalBonus); + // 前面累计的奖金 + totalBonus = totalBonus.add(RetailConstants.V4_V4.subtract(totalBonus)); + } else if (EGrade.S_VIP.getValue() == targetGradeValue) { + // V5 推拿 4160,或者减去之前累计 + rangeBonusIncome = RetailConstants.V5_V4.subtract(totalBonus); + // 前面累计的奖金 + totalBonus = totalBonus.add(RetailConstants.V5_V4.subtract(totalBonus)); + } else if (EGrade.BRANCH_COMPANY.getValue() == targetGradeValue) { + // V6 推拿 4400,或者减去之前累计 + rangeBonusIncome = RetailConstants.V6_V4.subtract(totalBonus); + // 前面累计的奖金 + totalBonus = totalBonus.add(RetailConstants.V6_V4.subtract(totalBonus)); + } else if (EGrade.COMPANY.getValue() == targetGradeValue) { + // V7 推拿 4800,或者减去之前累计 + rangeBonusIncome = RetailConstants.V7_V4.subtract(totalBonus); + // 前面累计的奖金 + totalBonus = totalBonus.add(RetailConstants.V7_V4.subtract(totalBonus)); + } + } else if (EGrade.MAKER.getValue() == beforeGradeValue + && EGrade.MAKER.getValue() == targetGradeValue) { + // 之前和现在都是合伙人,处理平级 + if (v3Count == 1) { + // V3第一平级 推拿 2400,或者减去之前累计 + rangeBonusIncome = RetailConstants.V3_V4_2.subtract(totalBonus); + // 前面累计的奖金 + totalBonus = totalBonus.add(RetailConstants.V3_V4_2.subtract(totalBonus)); + v3Count++; + } else if (v3Count == 2) { + // V3第二平级 推拿 2600,或者减去之前累计 + rangeBonusIncome = RetailConstants.V3_V4_3.subtract(totalBonus); + // 前面累计的奖金 + totalBonus = totalBonus.add(RetailConstants.V3_V4_3.subtract(totalBonus)); + v3Count++; + } + } + } else if (EGrade.BRANCH_COMPANY.getValue() == orderGradeValue) { + // 订单是分公司 + if (targetGradeValue >= EGrade.VIP.getValue() && targetGradeValue > beforeGradeValue) { + // 博羚店主以上才有级差 并且 当前等级大于之前等级 + if (EGrade.VIP.getValue() == targetGradeValue) { + // 博羚店主拿 50000 + rangeBonusIncome = RetailConstants.V4_V6.subtract(totalBonus); + // 前面累计的奖金 + totalBonus = totalBonus.add(RetailConstants.V4_V6.subtract(totalBonus)); + } else if (EGrade.S_VIP.getValue() == targetGradeValue) { + // 高级店主拿 52000,或者减去之前累计 + rangeBonusIncome = RetailConstants.V5_V6.subtract(totalBonus); + // 前面累计的奖金 + totalBonus = totalBonus.add(RetailConstants.V5_V6.subtract(totalBonus)); + } else if (EGrade.BRANCH_COMPANY.getValue() == targetGradeValue) { + // 分公司拿 55000,或者减去之前累计 + rangeBonusIncome = RetailConstants.V6_V6.subtract(totalBonus); + // 前面累计的奖金 + totalBonus = totalBonus.add(RetailConstants.V6_V6.subtract(totalBonus)); + } else if (EGrade.COMPANY.getValue() == targetGradeValue) { + // 总公司拿 60000,或者减去之前累计 + rangeBonusIncome = RetailConstants.V7_V6.subtract(totalBonus); + // 前面累计的奖金 + totalBonus = totalBonus.add(RetailConstants.V7_V6.subtract(totalBonus)); + } + } } - // TODO new - + // 前一级会员等级 + beforeGradeValue = targetGradeValue; if (rangeBonusIncome.compareTo(BigDecimal.ZERO) > 0) { // 处理直推级差收益 + // 会员奖金 CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, targetMemberRangeExt.getPkMember(), targetMemberRangeExt.getIncomeStatus(), targetMemberRangeExt.getPkSettleCountry(), targetMemberRangeExt.getPkRate() == null ? saOrderExt.getPkRate() : targetMemberRangeExt.getPkRate()); int pkBonusItems = getPkBonusItems(bonusConfigDTO, targetMemberRangeExt.getPkSettleCountry(), EBonusItems.RETAIL_RANGE_INCOME.getValue()); + // 会员级差 CuMemberBonusRange cuMemberBonusRange = getCuMemberRetailBonusRange(saOrderExt, targetMemberRangeExt, cuMemberBonus, pkBonusItems); cuMemberBonusRange.setCalValue(BigDecimal.ZERO); - cuMemberBonusRange.setCalAchieve(waresPrice); + cuMemberBonusRange.setCalAchieve(saOrderExt.getOrderAmount()); cuMemberBonusRange.setPretaxIncome(rangeBonusIncome); cuMemberBonusRange.setPkRange(targetMemberRangeExt.getPkGrade()); cuMemberBonusRange.setPkBeforeRange(sourceMemberRangeExt.getPkGrade()); - cuMemberBonusRange.setPkOrderItems(saOrderItems.getPkId()); + cuMemberBonusRange.setPkOrder(saOrderExt.getPkId()); + cuMemberBonusRange.setPkOrderItems(0L); rangeRetailRemark(saOrderExt, cuMemberBonusRange, sourceMemberRangeExt, targetMemberRangeExt); BdBonusDeduct bdBonusDeduct = setBonusDetailDeduct(bonusConfigDTO, cuMemberBonusRange, saOrderExt.getOrderAmount(), saOrderExt.getInExchangeRate()); if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusRange.getIncomeStatus()) { @@ -293,6 +536,141 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { return memberBonusRangeList; } + /** + * 计算复购级差收益 + */ + List calculateRetailRepurRangeBonus(Map memberRangeExtMap, Map cuMemberBonusMap, + BonusConfigDTO bonusConfigDTO, Integer period, SaOrderExt saOrderExt) { + // 直推级差返回数据 + List memberBonusRangeList = new ArrayList<>(); + + // 订单下单人自己 + CuMemberRetailRangeExt sourceMemberRangeExt = memberRangeExtMap.get(saOrderExt.getPkMember()); + // 推荐人 + long pkParent = sourceMemberRangeExt.getPkParent(); + // 商品盒数 + BigDecimal boxNum = new BigDecimal(saOrderExt.getBoxNum()); + + // 前一个会员等级 + int beforeGradeValue = 0; + // 前面累计奖金 + BigDecimal totalBonus = BigDecimal.ZERO; + // 平级合伙人数量 + int v3Count = 1; + // 计算直推级差 + while (true) { + // 上一次处理的是公司等级,则结束退出 + if (beforeGradeValue == EGrade.COMPANY.getValue()) { + break; + } + // 推荐人 + CuMemberRetailRangeExt targetMemberRangeExt = memberRangeExtMap.get(pkParent); + if (null == targetMemberRangeExt) { + break; + } + // 推荐人的推荐人 + pkParent = targetMemberRangeExt.getPkParent(); + + if (EAccountStatus.STOP_INCOME.getValue() == targetMemberRangeExt.getAccountStatus() + || ECategory.NORMAL.getValue() != targetMemberRangeExt.getCategory() + || targetMemberRangeExt.getEnableStatus() == EYesNo.NO.getIntValue() + || targetMemberRangeExt.getGradeValue() == EGrade.START_UP.getValue() + || EIncomeStatus.STOP_INCOME.getValue() == targetMemberRangeExt.getIncomeStatus()) { + // 停算收益、非正常会员、未激活、等级为顾客、停止收益,直接跳过 + continue; + } + // 当前会员等级值 + int targetGradeValue = targetMemberRangeExt.getGradeValue(); + + // 复购级差收益 + BigDecimal rangeBonusIncome = BigDecimal.ZERO; + + if (targetGradeValue > beforeGradeValue) { + // 当前等级大于之前等级 + if (EGrade.HAI_FAN.getValue() == targetGradeValue) { + // V1 拿 6 + rangeBonusIncome = RetailConstants.REPURCHASE_V1.multiply(boxNum); + // 前面累计的奖金 + totalBonus = totalBonus.add(RetailConstants.REPURCHASE_V1).multiply(boxNum); + } else if (EGrade.YOU_KE.getValue() == targetGradeValue) { + // V2 拿 8,或者减去之前累计 + rangeBonusIncome = RetailConstants.REPURCHASE_V2.multiply(boxNum).subtract(totalBonus); + // 前面累计的奖金 + totalBonus = totalBonus.add(RetailConstants.REPURCHASE_V2.subtract(totalBonus).multiply(boxNum)); + } else if (EGrade.MAKER.getValue() == targetGradeValue) { + // V3 拿 10,或者减去之前累计 + rangeBonusIncome = RetailConstants.REPURCHASE_V3_1.multiply(boxNum).subtract(totalBonus); + // 前面累计的奖金 + totalBonus = totalBonus.add(RetailConstants.REPURCHASE_V3_1.subtract(totalBonus).multiply(boxNum)); + } else if (EGrade.VIP.getValue() == targetGradeValue) { + // V4 拿 20,或者减去之前累计 + rangeBonusIncome = RetailConstants.REPURCHASE_V4.multiply(boxNum).subtract(totalBonus); + // 前面累计的奖金 + totalBonus = totalBonus.add(RetailConstants.REPURCHASE_V4.subtract(totalBonus).multiply(boxNum)); + } else if (EGrade.S_VIP.getValue() == targetGradeValue) { + // V5 拿 20.8,或者减去之前累计 + rangeBonusIncome = RetailConstants.REPURCHASE_V5.multiply(boxNum).subtract(totalBonus); + // 前面累计的奖金 + totalBonus = totalBonus.add(RetailConstants.REPURCHASE_V5.subtract(totalBonus).multiply(boxNum)); + } else if (EGrade.BRANCH_COMPANY.getValue() == targetGradeValue) { + // V6 拿 22,或者减去之前累计 + rangeBonusIncome = RetailConstants.REPURCHASE_V6.multiply(boxNum).subtract(totalBonus); + // 前面累计的奖金 + totalBonus = totalBonus.add(RetailConstants.REPURCHASE_V6.subtract(totalBonus).multiply(boxNum)); + } else if (EGrade.COMPANY.getValue() == targetGradeValue) { + // V7 拿 24,或者减去之前累计 + rangeBonusIncome = RetailConstants.REPURCHASE_V7.multiply(boxNum).subtract(totalBonus); + // 前面累计的奖金 + totalBonus = totalBonus.add(RetailConstants.REPURCHASE_V7.subtract(totalBonus).multiply(boxNum)); + } + } else if (EGrade.MAKER.getValue() == beforeGradeValue + && EGrade.MAKER.getValue() == targetGradeValue) { + // 之前和现在都是合伙人,处理平级 + if (v3Count == 1) { + // V3第一平级 推拿 12,或者减去之前累计 + rangeBonusIncome = RetailConstants.REPURCHASE_V3_2.multiply(boxNum).subtract(totalBonus); + // 前面累计的奖金 + totalBonus = totalBonus.add(RetailConstants.REPURCHASE_V3_2.subtract(totalBonus).multiply(boxNum)); + v3Count++; + } else if (v3Count == 2) { + // V3第二平级 推拿 13,或者减去之前累计 + rangeBonusIncome = RetailConstants.REPURCHASE_V3_3.multiply(boxNum).subtract(totalBonus); + // 前面累计的奖金 + totalBonus = totalBonus.add(RetailConstants.REPURCHASE_V3_3.subtract(totalBonus).multiply(boxNum)); + v3Count++; + } + } + + // 前一级会员等级 + beforeGradeValue = targetGradeValue; + + if (rangeBonusIncome.compareTo(BigDecimal.ZERO) > 0) { + // 处理复购级差收益 + // 会员奖金 + CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, targetMemberRangeExt.getPkMember(), + targetMemberRangeExt.getIncomeStatus(), targetMemberRangeExt.getPkSettleCountry(), targetMemberRangeExt.getPkRate() == null ? saOrderExt.getPkRate() : targetMemberRangeExt.getPkRate()); + int pkBonusItems = getPkBonusItems(bonusConfigDTO, targetMemberRangeExt.getPkSettleCountry(), EBonusItems.RETAIL_REPURCHASE_INCOME.getValue()); + // 会员级差 + CuMemberBonusRange cuMemberBonusRange = getCuMemberRetailBonusRange(saOrderExt, targetMemberRangeExt, cuMemberBonus, pkBonusItems); + cuMemberBonusRange.setCalValue(BigDecimal.ZERO); + cuMemberBonusRange.setCalAchieve(saOrderExt.getOrderAmount()); + cuMemberBonusRange.setPretaxIncome(rangeBonusIncome); + cuMemberBonusRange.setPkRange(targetMemberRangeExt.getPkGrade()); + cuMemberBonusRange.setPkBeforeRange(sourceMemberRangeExt.getPkGrade()); + cuMemberBonusRange.setPkOrder(saOrderExt.getPkId()); + cuMemberBonusRange.setPkOrderItems(0L); + rangeRepurRetailRemark(saOrderExt, cuMemberBonusRange, sourceMemberRangeExt, targetMemberRangeExt); + BdBonusDeduct bdBonusDeduct = setBonusDetailDeduct(bonusConfigDTO, cuMemberBonusRange, saOrderExt.getOrderAmount(), saOrderExt.getInExchangeRate()); + if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusRange.getIncomeStatus()) { + cuMemberBonus.setRepurRangeIncome(ComputeUtil.computeAdd(cuMemberBonus.getRetailRangeIncome(), cuMemberBonusRange.getPretaxIncome())); + setRetailTotal(bdBonusDeduct, cuMemberBonus, cuMemberBonusRange); + } + memberBonusRangeList.add(cuMemberBonusRange); + } + } + return memberBonusRangeList; + } + private CuMemberBonusRange getCuMemberRetailBonusRange(SaOrder saOrderExt, CuMemberRetailRangeExt targetMemberRangeExt, CuMemberBonus cuMemberBonus, Integer pkBonusItems) { CuMemberBonusRange cuMemberBonusRange = CuMemberBonusRange.builder() diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettleServiceImpl.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettleServiceImpl.java index 0a5b1c6d..5639af2f 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettleServiceImpl.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettleServiceImpl.java @@ -31,50 +31,16 @@ public class BonusSettleServiceImpl implements IBonusSettleService { @Autowired private ICuMemberSettlePeriodService iCuMemberSettlePeriodService; @Autowired + private ICuMemberBonusService iCuMemberBonusService; + @Autowired + private ICuMemberBonusPushService iCuMemberBonusPushService; + @Autowired + private ICuMemberBonusDetailService iCuMemberBonusDetailService; + @Autowired + private ICuMemberBonusRangeService iCuMemberBonusRangeService; + @Autowired private BonusSettleRangeHandle bonusSettleRangeHandle; - private ICuMemberBonusService cuMemberBonusService; - - private ICuMemberBonusPushService cuMemberBonusPushService; - - private ICuMemberBonusExpandService cuMemberBonusExpandService; - - private ICuMemberBonusCoachService cuMemberBonusCoachService; - - private ICuMemberBonusDetailService cuMemberBonusDetailService; - - private ICuMemberBonusRangeService cuMemberBonusRangeService; - - @Autowired - public void setCuMemberBonusPushService(ICuMemberBonusPushService cuMemberBonusPushService) { - this.cuMemberBonusPushService = cuMemberBonusPushService; - } - - @Autowired - public void setCuMemberBonusExpandService(ICuMemberBonusExpandService cuMemberBonusExpandService) { - this.cuMemberBonusExpandService = cuMemberBonusExpandService; - } - - @Autowired - public void setCuMemberBonusCoachService(ICuMemberBonusCoachService cuMemberBonusCoachService) { - this.cuMemberBonusCoachService = cuMemberBonusCoachService; - } - - @Autowired - public void setCuMemberBonusDetailService(ICuMemberBonusDetailService cuMemberBonusDetailService) { - this.cuMemberBonusDetailService = cuMemberBonusDetailService; - } - - @Autowired - public void setCuMemberBonusRangeService(ICuMemberBonusRangeService cuMemberBonusRangeService) { - this.cuMemberBonusRangeService = cuMemberBonusRangeService; - } - - @Autowired - public void setCuMemberBonusService(ICuMemberBonusService cuMemberBonusService) { - this.cuMemberBonusService = cuMemberBonusService; - } - @Override @Transactional(rollbackFor = Exception.class) public void calculateCuMemberBonus(String settleDate, List saOrderExtList) { @@ -96,7 +62,7 @@ public class BonusSettleServiceImpl implements IBonusSettleService { // 今天和昨天是否同月 Boolean isSameMonth = DateUtils.getMonth(settleDate).equals(DateUtils.getMonth(yesterday)); - // 计算新零售团队奖金 + // 计算新零售奖金 bonusSettleRangeHandle.calculateRetailBonusByDay(settleDate, cuMemberBonusMap, bonusConfigDTO, recordDetailVO, period, yesterdayPeriod, isSameMonth); @@ -115,24 +81,18 @@ public class BonusSettleServiceImpl implements IBonusSettleService { * @param bonusRecordDetailVO 奖金明细表 */ void insertCuMemberBonus(String settleDate, Integer period, Map cuMemberBonusMap, BonusRecordDetailVO bonusRecordDetailVO) { - cuMemberBonusPushService.deleteCuMemberBonusPush(period); - cuMemberBonusExpandService.deleteCuMemberBonusExpand(period); - cuMemberBonusCoachService.deleteCuMemberBonusCoach(period); - cuMemberBonusDetailService.deleteCuMemberBonusDetail(period); - cuMemberBonusRangeService.deleteCuMemberBonusRange(period); - cuMemberBonusService.deleteCuMemberBonus(period); + iCuMemberBonusPushService.deleteCuMemberBonusPush(period); + iCuMemberBonusDetailService.deleteCuMemberBonusDetail(period); + iCuMemberBonusRangeService.deleteCuMemberBonusRange(period); + iCuMemberBonusService.deleteCuMemberBonus(period); if (cuMemberBonusMap.size() == 0) { return; } List batchMemberBonusPushList = new ArrayList<>(); - List batchMemberBonusExpandList = new ArrayList<>(); - List batchMemberBonusCoachList = new ArrayList<>(); List batchMemberBonusDetailList = new ArrayList<>(); List batchMemberBonusRangeList = new ArrayList<>(); List cuMemberBonusList = setCuMemberBonusSeq(settleDate, cuMemberBonusMap); List cuMemberBonusPushList = bonusRecordDetailVO.getCuMemberBonusPushList(); - List cuMemberBonusExpandList = bonusRecordDetailVO.getCuMemberBonusExpandList(); - List cuMemberBonusCoachList = bonusRecordDetailVO.getCuMemberBonusCoachList(); List cuMemberBonusDetailList = bonusRecordDetailVO.getCuMemberBonusDetailList(); List cuMemberBonusRangeList = bonusRecordDetailVO.getCuMemberBonusRangeList(); if (cuMemberBonusPushList != null && cuMemberBonusPushList.size() > 0) { @@ -140,16 +100,6 @@ public class BonusSettleServiceImpl implements IBonusSettleService { cuMemberBonusPush.setPkBonus(cuMemberBonusMap.get(cuMemberBonusPush.getPkBonus()).getPkId())); batchMemberBonusPushList.addAll(cuMemberBonusPushList); } - if (cuMemberBonusExpandList != null && cuMemberBonusExpandList.size() > 0) { - cuMemberBonusExpandList.forEach(cuMemberBonusExpand -> - cuMemberBonusExpand.setPkBonus(cuMemberBonusMap.get(cuMemberBonusExpand.getPkBonus()).getPkId())); - batchMemberBonusExpandList.addAll(cuMemberBonusExpandList); - } - if (cuMemberBonusCoachList != null && cuMemberBonusCoachList.size() > 0) { - cuMemberBonusCoachList.forEach(cuMemberBonusCoach -> - cuMemberBonusCoach.setPkBonus(cuMemberBonusMap.get(cuMemberBonusCoach.getPkBonus()).getPkId())); - batchMemberBonusCoachList.addAll(cuMemberBonusCoachList); - } if (cuMemberBonusDetailList != null && cuMemberBonusDetailList.size() > 0) { cuMemberBonusDetailList.forEach(cuMemberBonusDetail -> cuMemberBonusDetail.setPkBonus(cuMemberBonusMap.get(cuMemberBonusDetail.getPkBonus()).getPkId())); @@ -161,17 +111,15 @@ public class BonusSettleServiceImpl implements IBonusSettleService { batchMemberBonusRangeList.addAll(cuMemberBonusRangeList); } // 插入奖金主表 - cuMemberBonusService.batchInsertCuMemberBonus(cuMemberBonusList); - Set memberIdSet = cuMemberBonusService.queryMemberBonusByPeriod(period); - cuMemberBonusPushService.batchInsertCuMemberBonusPush(batchMemberBonusPushList, memberIdSet); - cuMemberBonusExpandService.batchInsertCuMemberBonusExpand(batchMemberBonusExpandList, memberIdSet); - cuMemberBonusCoachService.batchInsertCuMemberBonusCoach(batchMemberBonusCoachList, memberIdSet); - cuMemberBonusDetailService.batchInsertCuMemberBonusDetail(batchMemberBonusDetailList, memberIdSet); - cuMemberBonusRangeService.batchInsertCuMemberBonusRange(batchMemberBonusRangeList, memberIdSet); + iCuMemberBonusService.batchInsertCuMemberBonus(cuMemberBonusList); + Set memberIdSet = iCuMemberBonusService.queryMemberBonusByPeriod(period); + iCuMemberBonusPushService.batchInsertCuMemberBonusPush(batchMemberBonusPushList, memberIdSet); + iCuMemberBonusDetailService.batchInsertCuMemberBonusDetail(batchMemberBonusDetailList, memberIdSet); + iCuMemberBonusRangeService.batchInsertCuMemberBonusRange(batchMemberBonusRangeList, memberIdSet); } private List setCuMemberBonusSeq(String settleDate, Map cuMemberBonusMap) { - List pkIdList = cuMemberBonusService.batchQueryCuMemberBonusSeq(cuMemberBonusMap.size()); + List pkIdList = iCuMemberBonusService.batchQueryCuMemberBonusSeq(cuMemberBonusMap.size()); int i = 0; // 判断时间,重算的时候直接是已公布 Integer grantStatus = EGrantStatus.SETTLED.getValue(); diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/CuMemberBonusCoachServiceImpl.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/CuMemberBonusCoachServiceImpl.java deleted file mode 100644 index 486a739d..00000000 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/CuMemberBonusCoachServiceImpl.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.hzs.bonus.bonus.service.impl; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.hzs.bonus.achieve.service.impl.CuMemberBonusSettle; -import com.hzs.bonus.bonus.service.ICuMemberBonusCoachService; -import com.hzs.common.domain.member.bonus.CuMemberBonusCoach; -import com.hzs.bonus.bonus.mapper.CuMemberBonusCoachMapper; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.ArrayList; -import java.util.List; -import java.util.Set; - -/** - * 会员奖金-辅导收益明细表 服务实现类 - */ -@Service -public class CuMemberBonusCoachServiceImpl extends ServiceImpl implements ICuMemberBonusCoachService { - - private CuMemberBonusSettle cuMemberBonusSettle; - - @Autowired - public void setCuMemberBonusSettle(CuMemberBonusSettle cuMemberBonusSettle) { - this.cuMemberBonusSettle = cuMemberBonusSettle; - } - - @Override - public void deleteCuMemberBonusCoach(Integer period) { - baseMapper.deleteCuMemberBonusCoach(period); - } - - @Override - public void batchInsertCuMemberBonusCoach(List cuMemberBonusCoachList, Set memberIdSet) { - if (cuMemberBonusCoachList.size() == 0) { - return; - } - List cuMemberBonusCoaches = new ArrayList<>(); - for (CuMemberBonusCoach cuMemberBonusCoach : cuMemberBonusCoachList) { - if (memberIdSet.contains(cuMemberBonusCoach.getPkBonus())) { - cuMemberBonusCoaches.add(cuMemberBonusCoach); - } - } - if (cuMemberBonusCoaches.size() == 0) { - return; - } - List> lists = cuMemberBonusSettle.handleCutList(cuMemberBonusCoaches); - lists.forEach(list -> - baseMapper.batchInsertCuMemberBonusCoach(list)); - } -} diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/CuMemberBonusExpandServiceImpl.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/CuMemberBonusExpandServiceImpl.java deleted file mode 100644 index a00e6621..00000000 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/CuMemberBonusExpandServiceImpl.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.hzs.bonus.bonus.service.impl; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.hzs.bonus.achieve.service.impl.CuMemberBonusSettle; -import com.hzs.bonus.bonus.service.ICuMemberBonusExpandService; -import com.hzs.common.domain.member.bonus.CuMemberBonusExpand; -import com.hzs.bonus.bonus.mapper.CuMemberBonusExpandMapper; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.ArrayList; -import java.util.List; -import java.util.Set; - -/** - * 会员奖金-拓展收益明细表 服务实现类 - */ -@Service -public class CuMemberBonusExpandServiceImpl extends ServiceImpl implements ICuMemberBonusExpandService { - - @Autowired - private CuMemberBonusSettle cuMemberBonusSettle; - - @Override - public void deleteCuMemberBonusExpand(Integer period) { - baseMapper.deleteCuMemberBonusExpand(period); - } - - @Override - public void batchInsertCuMemberBonusExpand(List cuMemberBonusExpandList, Set memberIdSet) { - if (cuMemberBonusExpandList.size() == 0) { - return; - } - List memberBonusExpands = new ArrayList<>(); - for (CuMemberBonusExpand cuMemberBonusExpand : cuMemberBonusExpandList) { - if (memberIdSet.contains(cuMemberBonusExpand.getPkBonus())) { - memberBonusExpands.add(cuMemberBonusExpand); - } - } - if (memberBonusExpands.size() == 0) { - return; - } - List> lists = cuMemberBonusSettle.handleCutList(memberBonusExpands); - lists.forEach(list -> - baseMapper.batchInsertCuMemberBonusExpand(list)); - } - -} - diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/CuMemberBonusServiceImpl.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/CuMemberBonusServiceImpl.java index 70984f98..5d159ced 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/CuMemberBonusServiceImpl.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/CuMemberBonusServiceImpl.java @@ -56,10 +56,6 @@ public class CuMemberBonusServiceImpl extends ServiceImpl cuMemberBonusExpandList = cuMemberBonusExpandMapper.queryMemberBonusExpandByBonusItems(bonusParam); - dataTable = getDataTable(cuMemberBonusExpandList); - cuMemberBonusExpandList.forEach(cuMemberBonusExpand -> { - MemberBonusDetailVO memberBonusDetailVO = BeanUtil.copyProperties(cuMemberBonusExpand, MemberBonusDetailVO.class); - memberBonusDetailVO.setSourceMemberCode(cuMemberBonusExpand.getSourceMemberCode()); - memberBonusDetailVO.setSourceMemberName(cuMemberBonusExpand.getSourceMemberName()); - memberBonusDetailVOList.add(memberBonusDetailVO); - }); - } else if (EBonusItems.COACHING_INCOME.getValue() == bonusItemsValue) { - // 辅导收益 - // 拓展收益、复购拓展收益 - List cuMemberBonusCoachList = cuMemberBonusCoachMapper.queryMemberBonusCoachByBonusItems(bonusParam); - dataTable = getDataTable(cuMemberBonusCoachList); - cuMemberBonusCoachList.forEach(cuMemberBonusCoach -> { - MemberBonusDetailVO memberBonusDetailVO = BeanUtil.copyProperties(cuMemberBonusCoach, MemberBonusDetailVO.class); - memberBonusDetailVO.setSourceMemberCode(cuMemberBonusCoach.getSourceMemberCode()); - memberBonusDetailVO.setSourceMemberName(cuMemberBonusCoach.getSourceMemberName()); - memberBonusDetailVOList.add(memberBonusDetailVO); - }); - } else if (EBonusItems.REPURCHASE_RANGE_INCOME.getValue() == bonusItemsValue) { - // 复购极差 - // 拓展收益、复购拓展收益 + } else if (EBonusItems.RETAIL_RANGE_INCOME.getValue() == bonusItemsValue + || EBonusItems.RETAIL_REPURCHASE_INCOME.getValue() == bonusItemsValue) { + // 直推级差收益、复购级差收益 List cuMemberBonusRangeList = cuMemberBonusRangeMapper.queryMemberBonusRangeByBonusItems(bonusParam); dataTable = getDataTable(cuMemberBonusRangeList); cuMemberBonusRangeList.forEach(cuMemberBonusRange -> { @@ -355,8 +319,7 @@ public class CuMemberBonusServiceImpl extends ServiceImpl cuMemberBonusDetailList = cuMemberBonusDetailMapper.queryMemberBonusDetailByBonusItems(bonusParam); dataTable = getDataTable(cuMemberBonusDetailList); cuMemberBonusDetailList.forEach(cuMemberBonusDetail -> { @@ -410,27 +373,9 @@ public class CuMemberBonusServiceImpl extends ServiceImpl cuMemberBonusExpandList = cuMemberBonusExpandMapper.queryMemberBonusExpandByBonusItemsForServer(bonusParam); - dataTable = getDataTable(cuMemberBonusExpandList); - cuMemberBonusExpandList.forEach(cuMemberBonusExpand -> { - MemberBonusDetailSerVO memberBonusDetailVO = BeanUtil.copyProperties(cuMemberBonusExpand, MemberBonusDetailSerVO.class); - memberBonusDetailSerVoS.add(memberBonusDetailVO); - }); - } else if (EBonusItems.COACHING_INCOME.getValue() == bonusItemsValue) { - // 辅导收益 - // 拓展收益、复购拓展收益 - List cuMemberBonusCoachList = cuMemberBonusCoachMapper.queryMemberBonusCoachByBonusItemsForServer(bonusParam); - dataTable = getDataTable(cuMemberBonusCoachList); - cuMemberBonusCoachList.forEach(cuMemberBonusCoach -> { - MemberBonusDetailSerVO memberBonusDetailVO = BeanUtil.copyProperties(cuMemberBonusCoach, MemberBonusDetailSerVO.class); - memberBonusDetailSerVoS.add(memberBonusDetailVO); - }); - } else if (EBonusItems.REPURCHASE_RANGE_INCOME.getValue() == bonusItemsValue || EBonusItems.RETAIL_RANGE_INCOME.getValue() == bonusItemsValue) { - // 复购极差 - // 拓展收益、复购拓展收益 + } else if (EBonusItems.RETAIL_RANGE_INCOME.getValue() == bonusItemsValue + || EBonusItems.RETAIL_REPURCHASE_INCOME.getValue() == bonusItemsValue) { + // 直推级差收益、复购级差收益 List cuMemberBonusRangeList = cuMemberBonusRangeMapper.queryMemberBonusRangeByBonusItemsForServer(bonusParam); dataTable = getDataTable(cuMemberBonusRangeList); cuMemberBonusRangeList.forEach(cuMemberBonusRange -> { @@ -438,8 +383,7 @@ public class CuMemberBonusServiceImpl extends ServiceImpl cuMemberBonusDetailList = cuMemberBonusDetailMapper.queryMemberBonusDetailByBonusItemsForServer(bonusParam); dataTable = getDataTable(cuMemberBonusDetailList); cuMemberBonusDetailList.forEach(cuMemberBonusDetail -> { diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/detail/mapper/CuMemberGradeMapper.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/detail/mapper/CuMemberGradeMapper.java new file mode 100644 index 00000000..e25446b0 --- /dev/null +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/detail/mapper/CuMemberGradeMapper.java @@ -0,0 +1,28 @@ +package com.hzs.bonus.detail.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.hzs.common.domain.member.detail.CuMemberGrade; +import com.hzs.common.domain.member.detail.CuMemberLevel; +import org.apache.ibatis.annotations.Param; + +import java.util.Date; +import java.util.List; + +/** + * 会员信息-等级升级记录 Mapper 接口 + */ +public interface CuMemberGradeMapper extends BaseMapper { + + /** + * 回退会员等级 + */ + void updateCuMemberGrade(@Param("rangeTableName") String rangeTableName, @Param("period") Integer period); + + /** + * 查询会员等级 + */ + List queryCuMemberLevel(@Param("startDate") Date startDate, + @Param("endDate") Date endDate, + @Param("upType") Integer upType); + +} diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/detail/service/ICuMemberGradeService.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/detail/service/ICuMemberGradeService.java new file mode 100644 index 00000000..ecfdd9f5 --- /dev/null +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/detail/service/ICuMemberGradeService.java @@ -0,0 +1,32 @@ +package com.hzs.bonus.detail.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.hzs.common.domain.member.detail.CuMemberGrade; +import com.hzs.common.domain.member.detail.CuMemberLevel; + +import java.util.Date; +import java.util.List; + +/** + * 会员信息-等级升级记录 服务类 + */ +public interface ICuMemberGradeService extends IService { + + /** + * 回退极差奖衔,每日重新结算,先把等级回退到前一天 + * + * @param period 结算期间 + * @param rangeTableName 结算表 + */ + List calculateCuMemberRetailGradeInit(Integer period, Date startDate, Date endDate, String rangeTableName); + + /** + * 自动升级列表 + * + * @param startDate + * @param endDate + * @return + */ + List listAutoLevel(Date startDate, Date endDate); + +} diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/detail/service/impl/CuMemberGradeServiceImpl.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/detail/service/impl/CuMemberGradeServiceImpl.java new file mode 100644 index 00000000..c5e9d8ae --- /dev/null +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/detail/service/impl/CuMemberGradeServiceImpl.java @@ -0,0 +1,33 @@ +package com.hzs.bonus.detail.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.hzs.bonus.detail.mapper.CuMemberGradeMapper; +import com.hzs.bonus.detail.service.ICuMemberGradeService; +import com.hzs.common.core.enums.EUpgradeType; +import com.hzs.common.domain.member.detail.CuMemberGrade; +import com.hzs.common.domain.member.detail.CuMemberLevel; +import org.springframework.stereotype.Service; + +import java.util.Date; +import java.util.List; + +/** + * 会员信息-等级升级记录 服务实现类 + */ +@Service +public class CuMemberGradeServiceImpl extends ServiceImpl implements ICuMemberGradeService { + + @Override + public List calculateCuMemberRetailGradeInit(Integer period, Date startDate, Date endDate, String rangeTableName) { + // 根据手动升级记录,更新日结表 + baseMapper.updateCuMemberGrade(rangeTableName, period); + // 购买升级记录列表 + return baseMapper.queryCuMemberLevel(startDate, endDate, EUpgradeType.BUY_UPGRADE.getValue()); + } + + @Override + public List listAutoLevel(Date startDate, Date endDate) { + // 自动升级记录列表 + return baseMapper.queryCuMemberLevel(startDate, endDate, EUpgradeType.AUTO_UPGRADE.getValue()); + } +} diff --git a/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/achieve/CuMemberRetailRangeMapper.xml b/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/achieve/CuMemberRetailRangeMapper.xml index 07c4920e..81d1ef98 100644 --- a/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/achieve/CuMemberRetailRangeMapper.xml +++ b/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/achieve/CuMemberRetailRangeMapper.xml @@ -80,6 +80,7 @@ recommend_num = 0, team_num = 0, enable_status = 1, + pk_grade = (select pk_id from bd_grade where del_flag = 0 and grade_value = 20), region_address = 0, big_box_num = 0, small_box_num = 0, @@ -109,6 +110,7 @@ a.team_consume_pv = b.team_consume_pv, a.team_consume_amount = b.team_consume_amount, a.recommend_num = b.recommend_num, a.team_num = b.team_num, + a.pk_grade = b.pk_grade, a.enable_status = b.enable_status, a.big_box_num = b.big_box_num, a.small_box_num = b.small_box_num, a.big_team_pv = b.big_team_pv, a.small_team_pv = b.small_team_pv diff --git a/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/base/CuMemberMapper.xml b/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/base/CuMemberMapper.xml index 5059160a..e808ce9b 100644 --- a/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/base/CuMemberMapper.xml +++ b/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/base/CuMemberMapper.xml @@ -98,4 +98,29 @@ + + merge into cu_member a + using ( + select cm.pk_id, m.new_level pk_grade + from cu_member cm + inner join( + select a.* + from cu_member_level a + inner join ( + select pk_member, max(pk_id) pk_id + from cu_member_level + where del_flag = 0 + and up_type = 4 + and upgrade_time >= #{startDate,jdbcType=DATE} + and upgrade_time < #{endDate,jdbcType=DATE} + group by pk_member) b + on a.pk_id = b.pk_id) m + on cm.pk_id = m.pk_member + where cm.pk_settle_grade < m.new_level + ) b + on (a.pk_id = b.pk_id) + when matched then + update set a.pk_settle_grade = b.pk_grade, a.modified_time = sysdate + + diff --git a/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/bonus/CuMemberBonusCoachMapper.xml b/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/bonus/CuMemberBonusCoachMapper.xml deleted file mode 100644 index 24bb89ef..00000000 --- a/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/bonus/CuMemberBonusCoachMapper.xml +++ /dev/null @@ -1,269 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - insert ALL - - into cu_member_bonus_coach(pk_bonus,pk_order,pk_bonus_items,income_status, - cal_type,cal_achieve,cal_value,pretax_income, - income_tax,real_income,current_generation,coach_generation,coach_no_capping, - coach_capping,coach_normal_half,coach_normal_real,remark, - income_ratio,income_dial_ratio,order_dial_ratio,pk_country,pk_creator) - values - ( - #{item.pkBonus},#{item.pkOrder},#{item.pkBonusItems},#{item.incomeStatus}, - #{item.calType},#{item.calAchieve},#{item.calValue},#{item.pretaxIncome}, - #{item.incomeTax},#{item.realIncome},#{item.currentGeneration},#{item.coachGeneration}, - #{item.coachNoCapping},#{item.coachCapping},#{item.coachNormalHalf},#{item.coachNormalReal}, - #{item.remark},#{item.incomeRatio},#{item.incomeDialRatio},#{item.orderDialRatio}, - #{item.pkCountry},#{item.pkCreator} - ) - - SELECT 1 FROM dual - - - delete - from CU_MEMBER_BONUS_COACH - where PK_BONUS in ( - select pk_id - from cu_member_bonus - where period = #{period} - and grant_status <= 2) - - - - - - diff --git a/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/bonus/CuMemberBonusExpandMapper.xml b/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/bonus/CuMemberBonusExpandMapper.xml deleted file mode 100644 index fc896427..00000000 --- a/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/bonus/CuMemberBonusExpandMapper.xml +++ /dev/null @@ -1,279 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - insert ALL - - into cu_member_bonus_expand(pk_bonus,pk_order,pk_bonus_items,income_status, - cal_type,cal_achieve,cal_value,pretax_income, - income_tax,real_income,current_touch,expand_touch,add_touch,expand_no_capping, - expand_capping,expand_normal_half,expand_normal_real,remark, - income_ratio,income_dial_ratio,order_dial_ratio,pk_country,pk_creator) - values - ( - #{item.pkBonus},#{item.pkOrder},#{item.pkBonusItems},#{item.incomeStatus}, - #{item.calType},#{item.calAchieve},#{item.calValue},#{item.pretaxIncome}, - #{item.incomeTax},#{item.realIncome},#{item.currentTouch},#{item.expandTouch},#{item.addTouch,jdbcType=NUMERIC}, - #{item.expandNoCapping},#{item.expandCapping},#{item.expandNormalHalf},#{item.expandNormalReal}, - #{item.remark},#{item.incomeRatio},#{item.incomeDialRatio},#{item.orderDialRatio}, - #{item.pkCountry},#{item.pkCreator} - ) - - SELECT 1 FROM dual - - - - delete - from CU_MEMBER_BONUS_EXPAND - where PK_BONUS in ( - select pk_id - from cu_member_bonus - where period = #{period} and grant_status <= 2) - - - - - - diff --git a/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/detail/CuMemberGradeMapper.xml b/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/detail/CuMemberGradeMapper.xml new file mode 100644 index 00000000..198827f1 --- /dev/null +++ b/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/detail/CuMemberGradeMapper.xml @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + merge into ${rangeTableName} a + using ( + select a.pk_member, max(a.new_level) pk_grade + from cu_member_grade a + inner join( + select pk_member, max(nvl(modified_time, creation_time)) creation_time + from cu_member_grade + where period = #{period} + and del_flag = 0 + and up_type = 2 + group by pk_member) b + on a.pk_member = b.pk_member and nvl(a.modified_time, a.creation_time) = b.creation_time + group by a.pk_member + ) b + on (a.pk_member = b.pk_member) + when matched then + update set + a.pk_grade = b.pk_grade + + + + + diff --git a/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/order/BonusOrderMapper.xml b/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/order/BonusOrderMapper.xml index 42c59106..90290135 100644 --- a/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/order/BonusOrderMapper.xml +++ b/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/order/BonusOrderMapper.xml @@ -50,9 +50,9 @@ - + @@ -106,6 +106,7 @@ so.pk_creator, so.consume_amount, so.box_num, + cml.new_level pk_grade, nvl(st.pk_id,0) items_id, nvl(st.pk_order,0) pk_order, nvl(st.pk_wares,0) pk_wares, @@ -114,6 +115,10 @@ nvl(st.wares_quantity,0) wares_quantity, nvl(bw.area_income, 0) area_income from sa_order so + left join cu_member_level cml + on cml.pk_member = so.pk_member + and cml.pk_order = so.pk_id + and cml.del_flag = 0 left join sa_order_wares st on so.pk_id = st.pk_order and st.wares_price > 0 left join bd_wares bw diff --git a/bd-business/bd-business-member/src/main/java/com/hzs/member/achieve/mapper/CuMemberTreeMapper.java b/bd-business/bd-business-member/src/main/java/com/hzs/member/achieve/mapper/CuMemberTreeMapper.java index fe461480..0d949a2b 100644 --- a/bd-business/bd-business-member/src/main/java/com/hzs/member/achieve/mapper/CuMemberTreeMapper.java +++ b/bd-business/bd-business-member/src/main/java/com/hzs/member/achieve/mapper/CuMemberTreeMapper.java @@ -21,30 +21,6 @@ public interface CuMemberTreeMapper extends BaseMapper { */ Integer queryExistOracleTable(String tableName); - /** - * 查询会员结算表,查询出结算表中会员伞下左右区满足等级 - * - * @param settleTableName 结算表 - * @param awardsValue 验证等级对应的值 - * @param placeDept 部门 - * @param pkMember 会员 - */ - Integer queryCuMemberSettlePlaceUnderUmbrella(@Param("settleTableName") String settleTableName, - @Param("awardsValue") Integer awardsValue, - @Param("placeDept") Integer placeDept, - @Param("pkMember") Long pkMember); - - /** - * 查询会员结算表,查询出结算表中会员血缘关系满足等级 - * - * @param settleTableName 结算表 - * @param pkMember 会员 - */ - Integer queryCuMemberSettleBloodUnderUmbrella(@Param("settleTableName") String settleTableName, - @Param("awardsValue") Integer awardsValue, - @Param("placeDept") Integer placeDept, - @Param("pkMember") Long pkMember); - /** * 根据pkmember查询 * diff --git a/bd-business/bd-business-member/src/main/java/com/hzs/member/achieve/service/ICuMemberTreeService.java b/bd-business/bd-business-member/src/main/java/com/hzs/member/achieve/service/ICuMemberTreeService.java index 9e5bdc2b..b284918f 100644 --- a/bd-business/bd-business-member/src/main/java/com/hzs/member/achieve/service/ICuMemberTreeService.java +++ b/bd-business/bd-business-member/src/main/java/com/hzs/member/achieve/service/ICuMemberTreeService.java @@ -19,24 +19,6 @@ public interface ICuMemberTreeService extends IService { */ Integer queryExistOracleTable(String tableName); - /** - * 查询会员结算表,查询出结算表中会员伞下左右区满足等级 - * - * @param settleTableName 结算表 - * @param placeDept 部门 - * @param awardsValue 奖衔对应的值 - * @param pkMember 会员 - */ - Boolean queryCuMemberSettlePlaceUnderUmbrella(String settleTableName, Integer awardsValue, Integer placeDept, Long pkMember); - - /** - * 查询会员结算表,查询出结算表中会员血缘关系满足等级 - * - * @param settleTableName 结算表 - * @param pkMember 会员 - */ - Boolean queryCuMemberSettleBloodUnderUmbrella(String settleTableName, Integer awardsValue, Integer placeDept, Long pkMember); - /** * 根据pkmember查询 * diff --git a/bd-business/bd-business-member/src/main/java/com/hzs/member/achieve/service/impl/CuMemberTreeServiceImpl.java b/bd-business/bd-business-member/src/main/java/com/hzs/member/achieve/service/impl/CuMemberTreeServiceImpl.java index 862ffddf..a972a7e9 100644 --- a/bd-business/bd-business-member/src/main/java/com/hzs/member/achieve/service/impl/CuMemberTreeServiceImpl.java +++ b/bd-business/bd-business-member/src/main/java/com/hzs/member/achieve/service/impl/CuMemberTreeServiceImpl.java @@ -26,16 +26,6 @@ public class CuMemberTreeServiceImpl extends ServiceImpl 0; - } - - @Override - public Boolean queryCuMemberSettleBloodUnderUmbrella(String settleTableName, Integer awardsValue, Integer placeDept, Long pkMember) { - return baseMapper.queryCuMemberSettleBloodUnderUmbrella(settleTableName, awardsValue, placeDept, pkMember) > 0; - } - @Override public CuMemberSettleExt queryCuMemberTreeByPkMemberTable(String settleTableName, Long pkMember) { return baseMapper.queryCuMemberTreeByPkMemberTable(settleTableName, pkMember); 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 e17663c6..fbc7694c 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 @@ -1500,7 +1500,7 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService { // 保存会员等级变动 saveLevelUpgrade(cuMember, EUpgradeType.BUY_UPGRADE.getValue(), saOrder, 0); - // 判断推送MQ处理推荐人等级 + // 判断处理推荐人等级 handleParentUpgrade(cuMember, saOrder); this.handleRetailMemberAccount(saOrder, cuMemberAccountExt); @@ -1516,7 +1516,7 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService { // 保存会员等级变动(如果旧等级和新等级相同,则不记录) saveLevelUpgrade(cuMember, EUpgradeType.BUY_UPGRADE.getValue(), saOrder, saOrder.getPkGradeOld()); } - // 判断推送MQ处理推荐人等级 + // 判断处理推荐人等级 handleParentUpgrade(cuMember, saOrder); this.handleRetailMemberAccount(saOrder, cuMemberAccountExt); 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 68fc6094..bb04351a 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 @@ -2494,6 +2494,9 @@ public class CuMemberServiceImpl extends ServiceImpl i // 指定会员可见 isShowWares = pkMemberList.contains(showWaresDTO.getLoginMember()); } + if (isShowWares) { + break; + } } resultMap.put(showWaresDTO.getPkWares(), isShowWares); } diff --git a/bd-business/bd-business-member/src/main/java/com/hzs/member/detail/mapper/CuMemberAwardsMapper.java b/bd-business/bd-business-member/src/main/java/com/hzs/member/detail/mapper/CuMemberAwardsMapper.java index fe523df1..8e88c0db 100644 --- a/bd-business/bd-business-member/src/main/java/com/hzs/member/detail/mapper/CuMemberAwardsMapper.java +++ b/bd-business/bd-business-member/src/main/java/com/hzs/member/detail/mapper/CuMemberAwardsMapper.java @@ -2,44 +2,10 @@ package com.hzs.member.detail.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.hzs.common.domain.member.detail.CuMemberAwards; -import com.hzs.common.domain.member.detail.ext.CuMemberAwardsExt; -import org.apache.ibatis.annotations.Param; - -import java.util.List; /** * 会员信息-奖衔升级记录 Mapper 接口 */ public interface CuMemberAwardsMapper extends BaseMapper { - /** - * 批量更新会员奖衔记录,此方法用于奖金结算,批量更新为删除状态,留存奖衔降级记录 - * - * @param cuMemberAwardsList 更新的人 - * @param period 期间 - */ - Integer updateBatchCuMemberAwards(@Param("cuMemberAwardsList") List cuMemberAwardsList, @Param("period") Integer period); - - /** - * 查询会员最后一条奖衔升级记录 - * - * @param cuMemberAwardsList 奖衔升级记录 - */ - List queryLastCuMemberAwards(@Param("cuMemberAwardsList") List cuMemberAwardsList); - - /** - * 批量插入奖衔记录 - * - * @param cuMemberAwardsList 需要插入的奖衔列表 - */ - Integer saveBatchCuMemberAwards(@Param("cuMemberAwardsList") List cuMemberAwardsList); - - /** - * 查询手动升级的最新一条 - * - * @param pkMember 会员ID - * @return - */ - CuMemberAwardsExt queryLastManualAwards(@Param("pkMember") Long pkMember); - } diff --git a/bd-business/bd-business-member/src/main/java/com/hzs/member/detail/provider/CuMemberDetailProvider.java b/bd-business/bd-business-member/src/main/java/com/hzs/member/detail/provider/CuMemberDetailProvider.java index e60f1eae..d60772c4 100644 --- a/bd-business/bd-business-member/src/main/java/com/hzs/member/detail/provider/CuMemberDetailProvider.java +++ b/bd-business/bd-business-member/src/main/java/com/hzs/member/detail/provider/CuMemberDetailProvider.java @@ -3,10 +3,8 @@ package com.hzs.member.detail.provider; import com.hzs.common.core.domain.R; import com.hzs.common.domain.member.base.CuMemberRegister; import com.hzs.common.domain.member.detail.CuMemberLevel; -import com.hzs.common.domain.member.detail.ext.CuMemberAwardsExt; import com.hzs.member.base.service.ICuMemberRegisterService; import com.hzs.member.detail.ICuMemberDetailServiceApi; -import com.hzs.member.detail.service.ICuMemberAwardsService; import com.hzs.member.detail.service.ICuMemberLevelService; import org.apache.dubbo.config.annotation.DubboService; import org.springframework.beans.factory.annotation.Autowired; @@ -22,8 +20,6 @@ public class CuMemberDetailProvider implements ICuMemberDetailServiceApi { @Autowired private ICuMemberLevelService iCuMemberLevelService; @Autowired - private ICuMemberAwardsService iCuMemberAwardsService; - @Autowired private ICuMemberRegisterService iCuMemberRegisterService; @Override @@ -36,11 +32,6 @@ public class CuMemberDetailProvider implements ICuMemberDetailServiceApi { return R.ok(iCuMemberLevelService.getUpgradeList(pkMember)); } - @Override - public R queryLastManualAwards(Long pkMember) { - return R.ok(iCuMemberAwardsService.queryLastManualAwards(pkMember)); - } - @Override public R getMemberRegister(Long pkMember) { return R.ok(iCuMemberRegisterService.queryCuMemberRegister(pkMember)); diff --git a/bd-business/bd-business-member/src/main/java/com/hzs/member/detail/service/ICuMemberAwardsService.java b/bd-business/bd-business-member/src/main/java/com/hzs/member/detail/service/ICuMemberAwardsService.java index a23abec2..ceb5ddae 100644 --- a/bd-business/bd-business-member/src/main/java/com/hzs/member/detail/service/ICuMemberAwardsService.java +++ b/bd-business/bd-business-member/src/main/java/com/hzs/member/detail/service/ICuMemberAwardsService.java @@ -2,7 +2,6 @@ package com.hzs.member.detail.service; import com.baomidou.mybatisplus.extension.service.IService; import com.hzs.common.domain.member.detail.CuMemberAwards; -import com.hzs.common.domain.member.detail.ext.CuMemberAwardsExt; import java.util.Date; @@ -20,12 +19,4 @@ public interface ICuMemberAwardsService extends IService { */ void deleteCuMemberAwards(Long pkOrder, Long pkApprove, Date currentDateTime); - /** - * 查询手动开通的最新一条 - * - * @param pkMember 会员ID - * @return - */ - CuMemberAwardsExt queryLastManualAwards(Long pkMember); - } diff --git a/bd-business/bd-business-member/src/main/java/com/hzs/member/detail/service/impl/CuMemberAwardsServiceImpl.java b/bd-business/bd-business-member/src/main/java/com/hzs/member/detail/service/impl/CuMemberAwardsServiceImpl.java index a3622b68..fbcff62b 100644 --- a/bd-business/bd-business-member/src/main/java/com/hzs/member/detail/service/impl/CuMemberAwardsServiceImpl.java +++ b/bd-business/bd-business-member/src/main/java/com/hzs/member/detail/service/impl/CuMemberAwardsServiceImpl.java @@ -1,20 +1,11 @@ package com.hzs.member.detail.service.impl; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.hzs.common.core.constant.MagicNumberConstants; -import com.hzs.common.core.constant.MemberFieldConstants; import com.hzs.common.core.enums.*; -import com.hzs.common.core.utils.ComputeUtil; import com.hzs.common.domain.member.detail.CuMemberAwards; -import com.hzs.common.domain.member.detail.ext.CuMemberAwardsExt; -import com.hzs.common.domain.member.ext.CuMemberSettleExt; -import com.hzs.common.domain.system.config.BdAwards; -import com.hzs.member.achieve.service.ICuMemberTreeService; import com.hzs.member.detail.mapper.CuMemberAwardsMapper; import com.hzs.member.detail.service.ICuMemberAwardsService; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.*; @@ -25,9 +16,6 @@ import java.util.*; @Service public class CuMemberAwardsServiceImpl extends ServiceImpl implements ICuMemberAwardsService { - @Autowired - private ICuMemberTreeService iCuMemberTreeService; - @Override public void deleteCuMemberAwards(Long pkOrder, Long pkApprove, Date currentDateTime) { LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); @@ -38,155 +26,4 @@ public class CuMemberAwardsServiceImpl extends ServiceImpl updateAwardsRecord(List enoughAwardsMemberList, Map originalCuMemberSettleMap, - Integer period) { - if (enoughAwardsMemberList.size() == 0) { - return null; - } - // 更新奖衔记录变动 - // 增加奖衔记录表 - // 更新升奖衔的会员,插入升衔记录 - return upgradeCuMemberAwards(enoughAwardsMemberList, originalCuMemberSettleMap, period); - - } - - /** - * 插入升级记录 - * - * @param enoughAwardsMemberList 足够升级的 - * @param originalCuMemberSettleMap 记录会员原等级的map - * @param period 期间 - */ - private List upgradeCuMemberAwards(List enoughAwardsMemberList, Map originalCuMemberSettleMap, - Integer period) { - List cuMemberAwardsList = new ArrayList<>(); - if (enoughAwardsMemberList.size() > 0) { - // 记录要入库的,为了验证是否首次晋升 - enoughAwardsMemberList.forEach(enoughAwardsMember -> getCuMemberAwards(originalCuMemberSettleMap, period, cuMemberAwardsList, enoughAwardsMember)); - // 验证满足的这群人是否是首次晋升,查询出值的不是首次晋升 - List originalCuMemberAwardsList = baseMapper.queryLastCuMemberAwards(cuMemberAwardsList); - // 是首次晋升的数据 - Map cuMemberAwardsMap = new HashMap<>(ComputeUtil.mapInitCapacity(originalCuMemberAwardsList.size())); - originalCuMemberAwardsList.forEach(cuMemberAwards -> cuMemberAwardsMap.put(cuMemberAwards.getPkMember(), cuMemberAwards)); - cuMemberAwardsList.forEach(cuMemberAwards -> { - CuMemberAwards memberAwards = cuMemberAwardsMap.get(cuMemberAwards.getPkMember()); - // 没有奖衔升级记录或者奖衔升级记录是会员的 算首次晋升 - if (memberAwards == null || memberAwards.getNewLevel() == EAwards.MEMBER.getValue()) { - cuMemberAwards.setPurchaseStatus(EYesNo.YES.getIntValue()); - } - }); - // 插入记录 - baseMapper.saveBatchCuMemberAwards(cuMemberAwardsList); - } - return cuMemberAwardsList; - } - - private void getCuMemberAwards(Map originalCuMemberSettleMap, Integer period, List cuMemberAwardsList, CuMemberSettleExt enoughAwardsMember) { - CuMemberAwards cuMemberAwards = CuMemberAwards.builder() - .pkMember(enoughAwardsMember.getPkMember()) - .period(period) - .upType(EUpgradeType.AUTO_UPGRADE.getValue()) - // 原等级 - .oldLevel(originalCuMemberSettleMap.get(enoughAwardsMember.getPkMember()).getPkOriAwards()) - .newLevel(enoughAwardsMember.getPkAwards()) - // 默认不免考 - .purchaseStatus(EYesNo.NO.getIntValue()) - .build(); - cuMemberAwards.setPkCreator(MagicNumberConstants.PK_ADMIN); - cuMemberAwards.setPkCountry(enoughAwardsMember.getPkSettleCountry()); - cuMemberAwardsList.add(cuMemberAwards); - } - - /** - * 更新降衔的会员,把升衔记录删除 - * - * @param period 期间 - * @param changeAwardsList 降低奖衔的人 - * @param cuMemberAwardsList 所有变动记录的数据 - */ - private void reduceCuMemberAwards(List changeAwardsList, Integer period, List cuMemberAwardsList) { - // 验证是否有降奖衔的,降奖衔的也要更新 - if (changeAwardsList.size() > 0) { - // 更新奖衔表,将奖衔升级记录修改为删除状态 - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq(MemberFieldConstants.PERIOD, period); - baseMapper.updateBatchCuMemberAwards(changeAwardsList, period); - // 根据 changeAwardsList 查找到这群人的历史奖衔升级记录 - List hisCuMemberAwardsList = baseMapper.queryLastCuMemberAwards(changeAwardsList); - Map cuMemberAwardsMap = new HashMap<>(); - hisCuMemberAwardsList.forEach(cuMemberAwards -> cuMemberAwardsMap.put(cuMemberAwards.getPkMember(), cuMemberAwards)); - // 用于更新网体,将原有奖衔还原 - changeAwardsList.forEach(cuMemberAwards -> { - if (cuMemberAwardsMap.containsKey(cuMemberAwards.getPkMember())) { - // 原有奖衔 - cuMemberAwards.setNewLevel(cuMemberAwardsMap.get(cuMemberAwards.getPkMember()).getNewLevel()); - } else { - // 没有值的变为会员 - cuMemberAwards.setNewLevel(EAwards.MEMBER.getValue()); - } - }); - cuMemberAwardsList.addAll(changeAwardsList); - } - } - - /** - * 查询某一期变动的奖衔 - * - * @param period 奖金期 - */ - private List queryCuMemberAwardsByPeriod(Integer period) { - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq(MemberFieldConstants.PERIOD, period); - queryWrapper.eq(MemberFieldConstants.UP_TYPE, EUpgradeType.AUTO_UPGRADE.getValue()); - return baseMapper.selectList(queryWrapper); - } - - /** - * 验证血缘关系 - * - * @param settleTableName 结算表 - * @param cuMemberSettleExt 会员结算表 - * @param bdAwards 等级 - */ - private Boolean validateBloodRelation(String settleTableName, CuMemberSettleExt cuMemberSettleExt, BdAwards bdAwards) { - // 左区满足,且满足血缘 - if (iCuMemberTreeService.queryCuMemberSettlePlaceUnderUmbrella(settleTableName, bdAwards.getPkCheckAwardsLeft(), EPlaceDept.LEFT_DEPT.getValue(), cuMemberSettleExt.getPkMember()) && - iCuMemberTreeService.queryCuMemberSettleBloodUnderUmbrella(settleTableName, bdAwards.getPkCheckAwardsLeft(), EPlaceDept.LEFT_DEPT.getValue(), cuMemberSettleExt.getPkMember())) { - // 验证血缘,左区存在血缘关系的 - // 右区满足,且满足血缘 - // 进行验证血缘验证 - return iCuMemberTreeService.queryCuMemberSettlePlaceUnderUmbrella(settleTableName, bdAwards.getPkCheckAwardsRight(), EPlaceDept.RIGHT_DEPT.getValue(), cuMemberSettleExt.getPkMember()) && - iCuMemberTreeService.queryCuMemberSettleBloodUnderUmbrella(settleTableName, bdAwards.getPkCheckAwardsRight(), EPlaceDept.RIGHT_DEPT.getValue(), cuMemberSettleExt.getPkMember()); - } - return false; - } - - /** - * 验证左右区安置关系 - * - * @param settleTableName 结算表 - * @param bdAwards 等级 - * @param pkMember 会员 - */ - private Boolean validateCuMemberPlaceRelation(String settleTableName, BdAwards bdAwards, Long pkMember) { - // 验证左区 - if (iCuMemberTreeService.queryCuMemberSettlePlaceUnderUmbrella(settleTableName, bdAwards.getPkCheckAwardsLeft(), EPlaceDept.LEFT_DEPT.getValue(), pkMember)) { - // 在验证右区 - return iCuMemberTreeService.queryCuMemberSettlePlaceUnderUmbrella(settleTableName, bdAwards.getPkCheckAwardsRight(), EPlaceDept.RIGHT_DEPT.getValue(), pkMember); - } - return false; - } - - @Override - public CuMemberAwardsExt queryLastManualAwards(Long pkMember) { - return baseMapper.queryLastManualAwards(pkMember); - } - } diff --git a/bd-business/bd-business-member/src/main/resources/mapper/member/achieve/CuMemberTreeMapper.xml b/bd-business/bd-business-member/src/main/resources/mapper/member/achieve/CuMemberTreeMapper.xml index 8c198fc0..d569839c 100644 --- a/bd-business/bd-business-member/src/main/resources/mapper/member/achieve/CuMemberTreeMapper.xml +++ b/bd-business/bd-business-member/src/main/resources/mapper/member/achieve/CuMemberTreeMapper.xml @@ -105,36 +105,6 @@ where table_name = upper(#{tableName}) - - - - - select ca.pk_member,ba.awards_value new_level from cu_member_awards ca - inner join ( - select pk_member,max(pk_id) pk_id from cu_member_awards - where del_flag=0 and pk_member in - - #{item.pkMember} - - group by pk_member - ) cm - on ca.pk_id=cm.pk_id - inner join bd_awards ba - on ca.new_level = ba.pk_id - where ca.del_flag=0 and ba.del_flag=0 - - - - - diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/retail/wares/controller/api/ApiRetailWaresController.java b/bd-business/bd-business-sale/src/main/java/com/hzs/retail/wares/controller/api/ApiRetailWaresController.java index 576f317d..fd09e7f5 100644 --- a/bd-business/bd-business-sale/src/main/java/com/hzs/retail/wares/controller/api/ApiRetailWaresController.java +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/retail/wares/controller/api/ApiRetailWaresController.java @@ -17,14 +17,12 @@ import com.hzs.common.core.web.domain.AjaxResult; import com.hzs.common.domain.member.ext.CuMemberExt; import com.hzs.common.domain.sale.ext.BdWaresExt; import com.hzs.common.domain.sale.ext.BdWaresSpecsSkuExt; -import com.hzs.common.domain.sale.wares.BdWares; -import com.hzs.common.domain.sale.wares.BdWaresLabel; -import com.hzs.common.domain.sale.wares.BdWaresRange; -import com.hzs.common.domain.sale.wares.BdWaresSpecsSku; +import com.hzs.common.domain.sale.wares.*; import com.hzs.common.domain.system.config.BdLabel; import com.hzs.common.domain.system.ext.BdLabelExt; import com.hzs.common.security.utils.SecurityUtils; import com.hzs.member.base.IMemberServiceApi; +import com.hzs.member.base.dto.ShowWaresDTO; import com.hzs.retail.wares.param.RetailWaresDetailParam; import com.hzs.retail.wares.param.RetailWaresParam; import com.hzs.retail.wares.vo.RetailWaresDetailVO; @@ -174,6 +172,8 @@ public class ApiRetailWaresController extends BaseController { Integer pkGrade, boolean showLabel) { // 返回商品列表 List resultList = new ArrayList<>(); + // 当前会员ID + Long userId = SecurityUtils.getUserId(); // 汇率比例 R currency = currencyServiceApi.getCurrency(SecurityUtils.getPkCountry()); @@ -205,7 +205,26 @@ public class ApiRetailWaresController extends BaseController { } } + // 检验商品团队信息 + Map> waresAuthorityMap = iBdWaresService.getWaresAuthority(waresIdList); + List showWaresList = bdWaresExtList.stream().map(tmpBdWares -> { + ShowWaresDTO showWaresDTO = new ShowWaresDTO(); + showWaresDTO.setPkWares(tmpBdWares.getPkId()); + showWaresDTO.setLoginMember(userId); + showWaresDTO.setWaresAuthorityList(waresAuthorityMap.get(tmpBdWares.getPkId())); + return showWaresDTO; + }).collect(Collectors.toList()); + R> waresShowMapDto = iMemberServiceApi.checkIsShowWares(showWaresList); + Map waresShowMap = waresShowMapDto.getData(); + + for (BdWaresExt bdWaresExt : bdWaresExtList) { + // 校验团队信息 + Boolean isShowWares = waresShowMap.get(bdWaresExt.getPkId()); + if (null == isShowWares || !isShowWares) { + continue; + } + if (null != list) { // 商品标签处理 // 保证标签 diff --git a/bd-business/bd-business-system/src/main/java/com/hzs/system/base/controller/api/ApiBdStorehouseController.java b/bd-business/bd-business-system/src/main/java/com/hzs/system/base/controller/api/ApiBdStorehouseController.java index 09c86d1f..9afa6b3e 100644 --- a/bd-business/bd-business-system/src/main/java/com/hzs/system/base/controller/api/ApiBdStorehouseController.java +++ b/bd-business/bd-business-system/src/main/java/com/hzs/system/base/controller/api/ApiBdStorehouseController.java @@ -18,12 +18,7 @@ import org.springframework.web.bind.annotation.*; import java.util.List; /** - *

* 仓库配置前端控制器 - *

- * - * @author hzs - * @since 2022-08-02 */ @Slf4j @RestController @@ -41,15 +36,15 @@ public class ApiBdStorehouseController extends BaseController { @Log(module = EOperationModule.STOREHOUSE, business = EOperationBusiness.STOREHOUSE, method = EOperationMethod.SELECT) @GetMapping("/list") public TableDataInfo list(BdStorehouseVO bdStorehouse) { - if(bdStorehouse.getPkCountry() == null){ + if (bdStorehouse.getPkCountry() == null) { bdStorehouse.setPkCountry(SecurityUtils.getPkCountry()); } List list = iBdStorehouseService.selectBdStorehouseList(bdStorehouse); - list.forEach( itm ->{ - BdStorehouseAreaMiddleVO sam=new BdStorehouseAreaMiddleVO(); + list.forEach(itm -> { + BdStorehouseAreaMiddleVO sam = new BdStorehouseAreaMiddleVO(); sam.setPkStorehouse(itm.getPkId()); sam.setPkCountry(bdStorehouse.getPkCountry()); - List samList=iBdStorehouseAreaMiddleService.getBdStorehouseAreaMiddleList(sam); + List samList = iBdStorehouseAreaMiddleService.getBdStorehouseAreaMiddleList(sam); itm.setSamList(samList); }); return getDataTable(list); diff --git a/bd-business/bd-business-system/src/main/java/com/hzs/system/base/mapper/BdStorehouseMapper.java b/bd-business/bd-business-system/src/main/java/com/hzs/system/base/mapper/BdStorehouseMapper.java index cf98f2aa..84f0c01d 100644 --- a/bd-business/bd-business-system/src/main/java/com/hzs/system/base/mapper/BdStorehouseMapper.java +++ b/bd-business/bd-business-system/src/main/java/com/hzs/system/base/mapper/BdStorehouseMapper.java @@ -8,17 +8,13 @@ import com.hzs.system.base.vo.BdStorehouseVO; import java.util.List; /** - *

- * 仓库信息Mapper 接口 - *

- * - * @author hzs - * @since 2022-08-02 + * 仓库信息Mapper 接口 */ public interface BdStorehouseMapper extends BaseMapper { /** * 查询仓库列表信息 + * * @param bdStorehouse * @return */ @@ -26,6 +22,7 @@ public interface BdStorehouseMapper extends BaseMapper { /** * 获取单条仓库信息 + * * @param bdStorehouse * @return */ @@ -33,6 +30,7 @@ public interface BdStorehouseMapper extends BaseMapper { /** * 校验仓库信息是否重复 + * * @param bdStorehouse * @return */ diff --git a/bd-business/bd-business-system/src/main/java/com/hzs/system/base/service/impl/BdStorehouseServiceImpl.java b/bd-business/bd-business-system/src/main/java/com/hzs/system/base/service/impl/BdStorehouseServiceImpl.java index 60cc9628..ce273b80 100644 --- a/bd-business/bd-business-system/src/main/java/com/hzs/system/base/service/impl/BdStorehouseServiceImpl.java +++ b/bd-business/bd-business-system/src/main/java/com/hzs/system/base/service/impl/BdStorehouseServiceImpl.java @@ -10,7 +10,6 @@ import com.hzs.common.core.enums.EDelFlag; import com.hzs.common.core.enums.EYesNo; import com.hzs.common.domain.system.base.BdStorehouse; import com.hzs.common.domain.system.base.BdStorehouseAreaMiddle; -import com.hzs.common.security.utils.SecurityUtils; import com.hzs.system.base.mapper.BdStorehouseMapper; import com.hzs.system.base.service.IBdStorehouseAreaMiddleService; import com.hzs.system.base.service.IBdStorehouseService; @@ -20,49 +19,30 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.ArrayList; -import java.util.Date; import java.util.List; import java.util.Set; /** - *

* 仓库信息服务实现类 - *

- * - * @author hzs - * @since 2022-08-02 */ @Service public class BdStorehouseServiceImpl extends ServiceImpl implements IBdStorehouseService { - @Autowired private IBdStorehouseAreaMiddleService iBdStorehouseAreaMiddleService; - /** - * 查询仓库列表信息 - * - * @param bdStorehouse - * @return - */ + @Override public List selectBdStorehouseList(BdStorehouseVO bdStorehouse) { return baseMapper.selectBdStorehouseList(bdStorehouse); } - /** - * 新增仓库信息 - * - * @param bdStorehouseVO - * @return - */ @Transactional(rollbackFor = Exception.class) @Override public boolean intBdStorehouse(BdStorehouseVO bdStorehouseVO) { - BdStorehouse bdStorehouse= BeanUtil.copyProperties(bdStorehouseVO, BdStorehouse.class); + BdStorehouse bdStorehouse = BeanUtil.copyProperties(bdStorehouseVO, BdStorehouse.class); baseMapper.insert(bdStorehouse); - if(CollectionUtil.isNotEmpty(bdStorehouseVO.getProvinceList())){ - BdStorehouseAreaMiddleVO sam=BeanUtil.copyProperties(bdStorehouseVO, BdStorehouseAreaMiddleVO.class); + if (CollectionUtil.isNotEmpty(bdStorehouseVO.getProvinceList())) { + BdStorehouseAreaMiddleVO sam = BeanUtil.copyProperties(bdStorehouseVO, BdStorehouseAreaMiddleVO.class); sam.setPkStorehouse(bdStorehouse.getPkId()); iBdStorehouseAreaMiddleService.intStoArMiddle(sam); } @@ -80,11 +60,6 @@ public class BdStorehouseServiceImpl extends ServiceImpl updateWrapper1=new UpdateWrapper<>(); - updateWrapper1.eq("PK_STOREHOUSE",bdStorehouse.getPkId()); - updateWrapper1.set("DEL_FLAG",EDelFlag.DELETE.getValue()); + UpdateWrapper updateWrapper1 = new UpdateWrapper<>(); + updateWrapper1.eq("PK_STOREHOUSE", bdStorehouse.getPkId()); + updateWrapper1.set("DEL_FLAG", EDelFlag.DELETE.getValue()); iBdStorehouseAreaMiddleService.update(updateWrapper1); - if(CollectionUtil.isNotEmpty(bdStorehouse.getProvinceList())){ - for(Integer i:bdStorehouse.getProvinceList()){ - BdStorehouseAreaMiddle sa=new BdStorehouseAreaMiddle(); + if (CollectionUtil.isNotEmpty(bdStorehouse.getProvinceList())) { + for (Integer i : bdStorehouse.getProvinceList()) { + BdStorehouseAreaMiddle sa = new BdStorehouseAreaMiddle(); sa.setProvince(i); sa.setPkStorehouse(bdStorehouse.getPkId()); sa.setPkCountry(bdStorehouse.getPkCountry()); @@ -147,13 +122,6 @@ public class BdStorehouseServiceImpl extends ServiceImpl