diff --git a/bd-api/bd-api-system/src/main/java/com/hzs/system/config/dto/BonusExpandDTO.java b/bd-api/bd-api-system/src/main/java/com/hzs/system/config/dto/BonusExpandDTO.java index 88f593c9..21d90ba2 100644 --- a/bd-api/bd-api-system/src/main/java/com/hzs/system/config/dto/BonusExpandDTO.java +++ b/bd-api/bd-api-system/src/main/java/com/hzs/system/config/dto/BonusExpandDTO.java @@ -5,13 +5,6 @@ import lombok.Data; import java.io.Serializable; import java.math.BigDecimal; -/** - * @Description: - * @Author: sui q - * @Time: 2023/2/21 15:32 - * @Classname: BonusExpandDTO - * @PackageName: com.hzs.system.config.dto - */ @Data public class BonusExpandDTO implements Serializable { diff --git a/bd-api/bd-api-system/src/main/java/com/hzs/system/config/dto/RangeDTO.java b/bd-api/bd-api-system/src/main/java/com/hzs/system/config/dto/RangeDTO.java index bac6e4c5..9cf807ca 100644 --- a/bd-api/bd-api-system/src/main/java/com/hzs/system/config/dto/RangeDTO.java +++ b/bd-api/bd-api-system/src/main/java/com/hzs/system/config/dto/RangeDTO.java @@ -9,11 +9,7 @@ import java.io.Serializable; import java.math.BigDecimal; /** - * @Description: 极差的配置 - * @Author: sui q - * @Time: 2023/1/3 13:42 - * @Classname: RangeDTO - * @PackageName: com.hzs.system.config.dto + * 极差的配置 */ @Data public class RangeDTO implements Serializable { diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/mapper/CuMemberRangeMapper.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/mapper/CuMemberRangeMapper.java deleted file mode 100644 index 21a700b3..00000000 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/mapper/CuMemberRangeMapper.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.hzs.bonus.achieve.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.hzs.common.domain.member.achieve.CuMemberRange; -import com.hzs.common.domain.member.achieve.ext.CuMemberRangeExt; -import org.apache.ibatis.annotations.Param; - -import java.util.Date; -import java.util.List; - -/** - * Mapper 接口 - */ -public interface CuMemberRangeMapper extends BaseMapper { - - /* - * 推荐推荐人查询推荐人下的所有部门, 该订单日期之前的算他的网体 - **/ - List queryCuMemberRangeExtByParent(@Param("tableName") String tableName, @Param("pkParent") Long pkParent, @Param("orderDate") Date orderDate); - - /* - * 推荐推荐人查询推荐人下的所有部门, 该订单日期之前的算他的网体 - **/ - List querySecondCuMemberRangeExtByParent(@Param("tableName") String tableName, @Param("secondTableName") String secondTableName, @Param("pkParent") Long pkParent); - - /* - * 批量更新网体 - **/ - void mergeCuMemberRangeExt(@Param("rangeTableName") String rangeTableName, @Param("cuMemberRangeExtList") List cuMemberRangeExtList); - - /* - * 批量更新网体 - **/ - void mergeSecondCuMemberRangeExt(@Param("secondTableName") String secondTableName, @Param("cuMemberRangeExtList") List cuMemberRangeExtList); - - /* - * 验证血缘部门 有多少个满足等级 - **/ - Integer validateCuMemberPlaceAwards(@Param("rangeTableName") String rangeTableName, @Param("cuMemberRangeExtList") List cuMemberRangeExtList, - @Param("pkRangeAwards") Integer pkRangeAwards, @Param("orderDate") Date orderDate); - - /* - * 验证血缘部门 有多少个满足等级 - **/ - Integer validateSecondCuMemberPlaceAwards(@Param("secondTableName") String secondTableName, @Param("cuMemberRangeExtList") List cuMemberRangeExtList, - @Param("pkRangeAwards") Integer pkRangeAwards); -} diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/param/MemberAchieveParam.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/param/MemberAchieveParam.java index e34d0462..cc4814c5 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/param/MemberAchieveParam.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/param/MemberAchieveParam.java @@ -13,12 +13,7 @@ import java.io.Serializable; import java.math.BigDecimal; /** - *

* 会员业绩记录 - *

- * - * @author hzs - * @since 2022-10-26 */ @Data @Builder diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/service/ICuMemberRangeService.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/service/ICuMemberRangeService.java deleted file mode 100644 index 78989a54..00000000 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/service/ICuMemberRangeService.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.hzs.bonus.achieve.service; - -import com.baomidou.mybatisplus.extension.service.IService; -import com.hzs.common.domain.member.achieve.CuMemberRange; -import com.hzs.common.domain.member.achieve.ext.CuMemberRangeExt; - -import java.util.Date; -import java.util.List; - -/** - * 服务类 - */ -public interface ICuMemberRangeService extends IService { - - /** - * 推荐推荐人查询推荐人下的所有部门, 该订单日期之前的算他的网体 - */ - List queryCuMemberRangeExtByParent(String tableName, Long pkParent, Date orderDate); - - /** - * 推荐推荐人查询推荐人下的所有部门, 该订单日期之前的算他的网体 - */ - List querySecondCuMemberRangeExtByParent(String tableName, String secondTableName, Long pkParent); - - /** - * 批量更新网体 - */ - void mergeCuMemberRangeExt(String rangeTableName, List cuMemberRangeExtList); - - /** - * 批量更新网体 - */ - void mergeSecondCuMemberRangeExt(String secondTableName, List cuMemberRangeExtList); - - /** - * 验证血缘部门 有多少个满足等级 - */ - Integer validateCuMemberPlaceAwards(String rangeTableName, List cuMemberRangeExtList, Integer pkRangeAwards, Date orderDate); - - /** - * 验证血缘部门 有多少个满足等级 - */ - Integer validateSecondCuMemberPlaceAwards(String secondTableName, List cuMemberRangeExtList, Integer pkRangeAwards); - -} diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/service/impl/CuMemberRangeServiceImpl.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/service/impl/CuMemberRangeServiceImpl.java deleted file mode 100644 index 4490f801..00000000 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/service/impl/CuMemberRangeServiceImpl.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.hzs.bonus.achieve.service.impl; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.hzs.bonus.achieve.mapper.CuMemberRangeMapper; -import com.hzs.bonus.achieve.service.ICuMemberRangeService; -import com.hzs.common.domain.member.achieve.CuMemberRange; -import com.hzs.common.domain.member.achieve.ext.CuMemberRangeExt; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.*; - -/** - * 服务实现类 - */ -@Service -public class CuMemberRangeServiceImpl extends ServiceImpl implements ICuMemberRangeService { - - @Autowired - private CuMemberBonusSettle cuMemberBonusSettle; - - @Override - public List queryCuMemberRangeExtByParent(String tableName, Long pkParent, Date orderDate) { - return baseMapper.queryCuMemberRangeExtByParent(tableName, pkParent, orderDate); - } - - @Override - public List querySecondCuMemberRangeExtByParent(String tableName, String secondTableName, Long pkParent) { - return baseMapper.querySecondCuMemberRangeExtByParent(tableName, secondTableName, pkParent); - } - - @Override - public void mergeCuMemberRangeExt(String rangeTableName, List cuMemberRangeExtList) { - List> lists = cuMemberBonusSettle.handleCutList(cuMemberRangeExtList); - for (List list : lists) { - baseMapper.mergeCuMemberRangeExt(rangeTableName, list); - } - } - - @Override - public void mergeSecondCuMemberRangeExt(String secondTableName, List cuMemberRangeExtList) { - baseMapper.mergeSecondCuMemberRangeExt(secondTableName, cuMemberRangeExtList); - } - - @Override - public Integer validateCuMemberPlaceAwards(String rangeTableName, List cuMemberRangeExtList, Integer pkRangeAwards, Date orderDate) { - return baseMapper.validateCuMemberPlaceAwards(rangeTableName, cuMemberRangeExtList, pkRangeAwards, orderDate); - } - - @Override - public Integer validateSecondCuMemberPlaceAwards(String secondTableName, List cuMemberRangeExtList, Integer pkRangeAwards) { - return baseMapper.validateSecondCuMemberPlaceAwards(secondTableName, cuMemberRangeExtList, pkRangeAwards); - } - -} 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 cc3443e1..3e8adc81 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 @@ -1,38 +1,20 @@ package com.hzs.bonus.bonus.service.impl; -import com.hzs.bonus.achieve.param.MemberAchieveParam; import com.hzs.bonus.achieve.service.ICuMemberSettlePeriodService; import com.hzs.bonus.achieve.service.ICuMemberTreeService; -import com.hzs.bonus.detail.service.ICuMemberAssessService; import com.hzs.common.core.constant.BonusFieldConstants; -import com.hzs.common.core.constant.CountryConstants; import com.hzs.common.core.constant.MagicNumberConstants; -import com.hzs.common.core.constant.TableNameConstants; import com.hzs.common.core.constant.msg.BonusMsgConstants; import com.hzs.common.core.enums.*; import com.hzs.common.core.utils.ComputeUtil; -import com.hzs.common.core.utils.DateUtils; import com.hzs.common.core.utils.reflect.ReflectUtils; import com.hzs.common.domain.bonus.BdBonusDeduct; -import com.hzs.common.domain.member.achieve.CuMemberTree; -import com.hzs.common.domain.member.achieve.ext.CuMemberRangeExt; import com.hzs.common.domain.member.achieve.ext.CuMemberRetailRangeExt; -import com.hzs.common.domain.member.base.CuAwardsControl; import com.hzs.common.domain.member.bonus.*; -import com.hzs.common.domain.member.detail.CuMemberAssess; -import com.hzs.common.domain.member.ext.CuMemberSettleExt; import com.hzs.common.domain.sale.ext.SaOrderExt; import com.hzs.common.domain.sale.order.SaOrder; -import com.hzs.common.domain.system.config.BdAwards; -import com.hzs.common.domain.system.config.BdGrade; import com.hzs.common.domain.system.config.ext.BdBonusItemsExt; -import com.hzs.system.base.ICurrencyServiceApi; -import com.hzs.system.base.dto.CurrencyDTO; import com.hzs.system.config.dto.BonusConfigDTO; -import com.hzs.system.config.dto.BonusExpandDTO; -import com.hzs.system.config.dto.RangeDTO; -import com.hzs.system.sys.dto.BdCurrencyDTO; -import org.apache.dubbo.config.annotation.DubboReference; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -42,116 +24,15 @@ import java.util.*; @Component public abstract class BonusSettleHandle { - @DubboReference - ICurrencyServiceApi iCurrencyServiceApi; - @Autowired protected ICuMemberTreeService cuMemberTreeService; @Autowired private ICuMemberSettlePeriodService cuMemberSettlePeriodService; - @Autowired - private ICuMemberAssessService cuMemberAssessService; public ICuMemberSettlePeriodService getCuMemberSettlePeriodService() { return cuMemberSettlePeriodService; } - public ICuMemberAssessService getCuMemberAssessService() { - return cuMemberAssessService; - } - - /** - * 获取等级对应的拓展奖配置 - * - * @param bonusConfigDTO 奖金参数汇总 - * @param memberSettleExt 会员 - */ - protected BdGrade getGradeExpand(BonusConfigDTO bonusConfigDTO, CuMemberSettleExt memberSettleExt) { - return bonusConfigDTO.getGradeMap().get(memberSettleExt.getPkSettleCountry().toString() + "_" + memberSettleExt.getPkGrade()); - } - - /** - * 获取奖衔对应的辅导奖配置 - * - * @param bonusConfigDTO 奖金参数汇总 - * @param memberSettleExt 会员 - */ - protected BdAwards getAwardsCouch(BonusConfigDTO bonusConfigDTO, CuMemberSettleExt memberSettleExt, Map cuAwardsControlMap) { - Integer pkAwards = getPkRealAwards(memberSettleExt.getPkMember(), memberSettleExt.getPkAwards(), cuAwardsControlMap); - return bonusConfigDTO.getAwardsMap().get(memberSettleExt.getPkSettleCountry().toString() + ERangeType.AWARDS.getValue() + pkAwards); - } - - private Integer getPkRealAwards(Long pkMember, Integer pkAwards, Map cuAwardsControlMap) { - if (cuAwardsControlMap.containsKey(pkMember)) { - if (cuAwardsControlMap.get(pkMember).getMentoringAward() != null) { - pkAwards = cuAwardsControlMap.get(pkMember).getMentoringAward(); - } -// int giveRealAwards = EAwards.MEMBER.getValue(); -// int pkControlAwards = EAwards.MANAGER.getEnable(); -// if(cuAwardsControlMap.get(pkMember).getRealAwards() != null) { -// giveRealAwards = cuAwardsControlMap.get(pkMember).getRealAwards(); -// } -// if(cuAwardsControlMap.get(pkMember).getMentoringAward() != null) { -// pkControlAwards = cuAwardsControlMap.get(pkMember).getExtremeAwards(); -// } -// if (pkAwards <= giveRealAwards && pkAwards < pkControlAwards) { -// // 实际奖衔 <= 赠与奖衔时,用实际奖衔和集成奖衔取大的 -// pkAwards = pkControlAwards; -// } - } - return pkAwards; - } - - /** - * 获得国家对应的4-n参数比例 - * - * @param bonusConfigDTO 奖金配置汇总 - * @param memberSettleExt 会员 - * @param endTouch 4-n的次数 - * @param bdGrade 等级 - */ - protected BigDecimal getCountryExpand(BonusConfigDTO bonusConfigDTO, CuMemberSettleExt memberSettleExt, Integer endTouch, BdGrade bdGrade, - BigDecimal addTouch, BigDecimal editExpandRatio) { - BonusExpandDTO bonusExpand = bonusConfigDTO.getBonusExpandMap().get(memberSettleExt.getPkSettleCountry()); - BigDecimal totalTouch = ComputeUtil.computeAdd(BigDecimal.valueOf(endTouch), addTouch); - BigDecimal expandRatio = bonusExpand.getExpandRatio(); - if (memberSettleExt.getPkVertex() != null && memberSettleExt.getPkVertex().equals(377L)) { - expandRatio = BigDecimal.valueOf(13); - } else if (ComputeUtil.compareValue(editExpandRatio)) { - expandRatio = editExpandRatio; - } - BigDecimal countryExpandRatio = ComputeUtil.computeDivide(expandRatio, totalTouch); - if (ComputeUtil.compareValue(countryExpandRatio, bdGrade.getExpandRatio())) { - return bdGrade.getExpandRatio(); - } - return countryExpandRatio; - } - - /** - * 获得国家对应的4-n参数比例 - * - * @param bonusConfigDTO 奖金配置汇总 - * @param memberSettleExt 会员 - * @param endTouch 4-n的次数 - * @param bdGrade 等级 - */ - protected BigDecimal getCountryRepurchaseExpand(BonusConfigDTO bonusConfigDTO, CuMemberSettleExt memberSettleExt, Integer endTouch, BdGrade bdGrade, BigDecimal addTouch, BigDecimal editExpandRatio) { - BonusExpandDTO bonusExpand = bonusConfigDTO.getBonusExpandMap().get(memberSettleExt.getPkSettleCountry()); - BigDecimal totalTouch = ComputeUtil.computeAdd(BigDecimal.valueOf(endTouch), addTouch); - BigDecimal expandRatio = bonusExpand.getExpandRatio(); - if (memberSettleExt.getPkVertex() != null && memberSettleExt.getPkVertex().equals(377L)) { - expandRatio = BigDecimal.valueOf(13); - } else if (ComputeUtil.compareValue(editExpandRatio)) { - expandRatio = editExpandRatio; - } - // 验证是否是爱美视团队 - BigDecimal countryExpandRatio = ComputeUtil.computeDivide(expandRatio, BigDecimal.valueOf(endTouch)); - if (ComputeUtil.compareValue(countryExpandRatio, bdGrade.getRepurchaseRatio())) { - return bdGrade.getRepurchaseRatio(); - } - return countryExpandRatio; - } - /** * 获得奖项主键,验证该国是否有该奖项 * @@ -177,334 +58,23 @@ public abstract class BonusSettleHandle { return bonusConfigDTO.getBonusItemsExtMap().get(pkCountry.toString() + bonusItems).getPkId(); } - /** - * 获得有量奖的会员 - * - * @param cuMemberBonusMap 奖金汇总表 - * @param cuMemberBonusExpandList 量奖明细 - */ - protected Set getMemberExpandBonus(Map cuMemberBonusMap, List cuMemberBonusExpandList) { - Map pkMemberSettleMap = new HashMap<>(ComputeUtil.mapInitCapacity(cuMemberBonusMap.size())); - cuMemberBonusMap.forEach((key, cuMemberBonus) -> { - // 判断 cuMemberSettleExtMap中这个人是否是免考,免考的不查询考核是否通过,过滤数据 - pkMemberSettleMap.put(cuMemberBonus.getPkId(), cuMemberBonus); - }); - Set expandMemberSet = new HashSet<>(); - cuMemberBonusExpandList.forEach(cuMemberBonusExpand -> { - // 只查询有量奖的人的考核记录, 国内没有领导奖 - if (!cuMemberBonusExpand.getPkCountry().equals(CountryConstants.CHINA_COUNTRY) && pkMemberSettleMap.containsKey(cuMemberBonusExpand.getPkBonus())) { - expandMemberSet.add(pkMemberSettleMap.get(cuMemberBonusExpand.getPkBonus()).getPkMember()); - } - }); - return expandMemberSet; - } - - /** - * 获得有量奖的会员 - * - * @param cuMemberSettleExtMap 奖金汇总表 - */ - protected Map getMemberExpandBonus(Map cuMemberSettleExtMap) { - Map pkMemberSettleMap = new HashMap<>(ComputeUtil.mapInitCapacity(cuMemberSettleExtMap.size())); - cuMemberSettleExtMap.forEach((key, cuMemberSettleExt) -> - pkMemberSettleMap.put(cuMemberSettleExt.getPkMember(), cuMemberSettleExt)); - return pkMemberSettleMap; - } - - /** - * 记录需要修改的会员结算表数据, 安置的 - * - * @param cuMemberSettleExtMap 会员结算 - * @param cuMemberSettleExtList 查询出来的结算数据 - */ - protected void getMemberSettle(Map cuMemberSettleExtMap, List cuMemberSettleExtList) { - cuMemberSettleExtList.forEach(cuMemberSettleExt -> { - if (cuMemberSettleExtMap.containsKey(cuMemberSettleExt.getPkMember())) { - CuMemberSettleExt memberSettleExt = cuMemberSettleExtMap.get(cuMemberSettleExt.getPkMember()); - if (memberSettleExt.getPkParent() == null) { - memberSettleExt.setPkParent(cuMemberSettleExt.getPkParent()); - } - if (memberSettleExt.getPkPlaceParent() == null) { - memberSettleExt.setPkPlaceParent(cuMemberSettleExt.getPkPlaceParent()); - } - if (memberSettleExt.getPlaceDept() == null) { - memberSettleExt.setPlaceDept(cuMemberSettleExt.getPlaceDept()); - } - if (memberSettleExt.getPkGrade() == null) { - memberSettleExt.setPkGrade(cuMemberSettleExt.getPkGrade()); - } - if (memberSettleExt.getGradeValue() == null) { - memberSettleExt.setGradeValue(cuMemberSettleExt.getGradeValue()); - } - if (memberSettleExt.getPkAwards() == null) { - memberSettleExt.setPkAwards(cuMemberSettleExt.getPkAwards()); - } - if (memberSettleExt.getRegisterAuthority() == null) { - memberSettleExt.setRegisterAuthority(cuMemberSettleExt.getRegisterAuthority()); - } - if (memberSettleExt.getCustomerType() == null) { - memberSettleExt.setCustomerType(cuMemberSettleExt.getCustomerType()); - } - if (memberSettleExt.getIsMakerSpace() == null) { - memberSettleExt.setIsMakerSpace(cuMemberSettleExt.getIsMakerSpace()); - } - if (memberSettleExt.getIsMakerGift() == null) { - memberSettleExt.setIsMakerGift(cuMemberSettleExt.getIsMakerGift()); - } - if (memberSettleExt.getPkVertex() == null) { - memberSettleExt.setPkVertex(cuMemberSettleExt.getPkVertex()); - } - } else { - cuMemberSettleExt.setANewAmount(BigDecimal.ZERO); - cuMemberSettleExt.setANewPv(BigDecimal.ZERO); - cuMemberSettleExt.setBNewAmount(BigDecimal.ZERO); - cuMemberSettleExt.setBNewPv(BigDecimal.ZERO); - cuMemberSettleExt.setRepANewAmount(BigDecimal.ZERO); - cuMemberSettleExt.setRepBNewAmount(BigDecimal.ZERO); - cuMemberSettleExt.setRepANewPv(BigDecimal.ZERO); - cuMemberSettleExt.setRepBNewPv(BigDecimal.ZERO); - cuMemberSettleExt.setRegisterNewAmount(BigDecimal.ZERO); - cuMemberSettleExt.setRegisterNewPv(BigDecimal.ZERO); - cuMemberSettleExt.setUpgradeNewAmount(BigDecimal.ZERO); - cuMemberSettleExt.setUpgradeNewPv(BigDecimal.ZERO); - cuMemberSettleExt.setRepurchaseNewAmount(BigDecimal.ZERO); - cuMemberSettleExt.setRepurchaseNewPv(BigDecimal.ZERO); - cuMemberSettleExt.setHiFunNewAmount(BigDecimal.ZERO); - cuMemberSettleExt.setHiFunNewPv(BigDecimal.ZERO); - cuMemberSettleExt.setMallNewAmount(BigDecimal.ZERO); - cuMemberSettleExt.setMallNewPv(BigDecimal.ZERO); - cuMemberSettleExt.setRegisterBloNewPv(BigDecimal.ZERO); - cuMemberSettleExt.setUpgradeBloNewPv(BigDecimal.ZERO); - cuMemberSettleExt.setRepurchaseBloNewPv(BigDecimal.ZERO); - cuMemberSettleExt.setHiFunBloNewPv(BigDecimal.ZERO); - cuMemberSettleExt.setMallBloNewPv(BigDecimal.ZERO); - cuMemberSettleExtMap.put(cuMemberSettleExt.getPkMember(), cuMemberSettleExt); - } - }); - } - - /** - * 获得 直推收益的备注 - * - * @param saOrderExt 订单编号 - * @param cuMemberBonusPush 直推奖 - * @param cuMemberSettleExtMap 存储会员网体的map - */ - protected void recommendRemark(SaOrderExt saOrderExt, CuMemberBonusPush cuMemberBonusPush, Map cuMemberSettleExtMap) { - CuMemberSettleExt sourceCuMemberSettleExt = cuMemberSettleExtMap.get(saOrderExt.getPkMember()); - CuMemberSettleExt targetCuMemberSettleExt = cuMemberSettleExtMap.get(saOrderExt.getPkReference()); - String remark; - if (cuMemberBonusPush.getSecond() == 0) { - remark = String.format(BonusMsgConstants.RECOMMEND_DIRECT, saOrderExt.getOrderCode(), - sourceCuMemberSettleExt.getMemberCode() + sourceCuMemberSettleExt.getMemberName(), - targetCuMemberSettleExt.getMemberCode() + targetCuMemberSettleExt.getMemberName(), - cuMemberBonusPush.getRealIncome()); - } else { - remark = String.format(BonusMsgConstants.RECOMMEND, cuMemberBonusPush.getRound() + 1, cuMemberBonusPush.getSecond(), saOrderExt.getOrderCode(), - sourceCuMemberSettleExt.getMemberCode() + sourceCuMemberSettleExt.getMemberName(), - targetCuMemberSettleExt.getMemberCode() + targetCuMemberSettleExt.getMemberName(), - cuMemberBonusPush.getCalAchieve(), cuMemberBonusPush.getCalValue()); - } - cuMemberBonusPush.setRemark(remark); - } - - /** - * 获得 直推收益的备注 - * - * @param saOrderExt 订单编号 - * @param cuMemberBonusPush 直推奖 - * @param cuMemberRangeExtMap 存储会员网体的map - */ - protected void recommendRangeRemark(SaOrderExt saOrderExt, CuMemberBonusPush cuMemberBonusPush, Map cuMemberRangeExtMap, CuMemberRangeExt targetCuMemberRangeExt) { - CuMemberRangeExt sourceCuMemberRangeExt = cuMemberRangeExtMap.get(saOrderExt.getPkMember()); - String remark = String.format(BonusMsgConstants.RANGE_RECOMMEND, cuMemberBonusPush.getRound(), cuMemberBonusPush.getSecond(), saOrderExt.getOrderCode(), - sourceCuMemberRangeExt.getMemberCode() + sourceCuMemberRangeExt.getMemberName(), - targetCuMemberRangeExt.getMemberCode() + targetCuMemberRangeExt.getMemberName(), - cuMemberBonusPush.getCalAchieve()); - cuMemberBonusPush.setRemark(remark); - } - - /** - * 获得 拓展收益的备注 - * - * @param saOrderExt 订单编号 - * @param cuMemberBonusExpand 拓展奖 - * @param sourceCuMemberSettleExt 提供奖金的人 - * @param targetCuMemberSettleExt 获得奖金的人 - */ - protected void expandRemark(SaOrderExt saOrderExt, CuMemberBonusExpand cuMemberBonusExpand, - CuMemberSettleExt sourceCuMemberSettleExt, CuMemberSettleExt targetCuMemberSettleExt) { - String remark = String.format(BonusMsgConstants.EXPAND, cuMemberBonusExpand.getCurrentTouch(), cuMemberBonusExpand.getExpandTouch(), saOrderExt.getOrderCode(), - sourceCuMemberSettleExt.getMemberCode() + sourceCuMemberSettleExt.getMemberName(), - targetCuMemberSettleExt.getMemberCode() + targetCuMemberSettleExt.getMemberName(), - cuMemberBonusExpand.getCalAchieve(), cuMemberBonusExpand.getCalValue()); - cuMemberBonusExpand.setRemark(remark); - } - - /** - * 获得 拓展收益的备注 - * - * @param saOrderExt 订单编号 - * @param cuMemberBonusPush 拓展奖 - * @param sourceCuMemberSettleExt 提供奖金的人 - * @param targetCuMemberSettleExt 获得奖金的人 - */ - protected void repurchasePushRemark(SaOrderExt saOrderExt, CuMemberBonusPush cuMemberBonusPush, - CuMemberSettleExt sourceCuMemberSettleExt, CuMemberSettleExt targetCuMemberSettleExt, String msg) { - String remark = String.format(msg, saOrderExt.getOrderCode(), - sourceCuMemberSettleExt.getMemberCode() + sourceCuMemberSettleExt.getMemberName(), - targetCuMemberSettleExt.getMemberCode() + targetCuMemberSettleExt.getMemberName(), - cuMemberBonusPush.getCalAchieve(), cuMemberBonusPush.getCalValue()); - cuMemberBonusPush.setRemark(remark); - } - - /** - * 获得 拓展收益的备注 - * - * @param saOrderExt 订单编号 - * @param cuMemberBonusExpand 拓展奖 - * @param sourceCuMemberSettleExt 提供奖金的人 - * @param targetCuMemberSettleExt 获得奖金的人 - */ - protected void repurchaseExpandRemark(SaOrderExt saOrderExt, CuMemberBonusExpand cuMemberBonusExpand, - CuMemberSettleExt sourceCuMemberSettleExt, CuMemberSettleExt targetCuMemberSettleExt) { - String remark = String.format(BonusMsgConstants.REPURCHASE_EXPAND, cuMemberBonusExpand.getCurrentTouch(), cuMemberBonusExpand.getExpandTouch(), saOrderExt.getOrderCode(), - sourceCuMemberSettleExt.getMemberCode() + sourceCuMemberSettleExt.getMemberName(), - targetCuMemberSettleExt.getMemberCode() + targetCuMemberSettleExt.getMemberName(), - cuMemberBonusExpand.getCalAchieve(), cuMemberBonusExpand.getCalValue()); - cuMemberBonusExpand.setRemark(remark); - } - /** * 获得 辅导收益的备注 * - * @param saOrderExt 订单编号 - * @param cuMemberBonusCoach 辅导奖 - * @param sourceCuMemberSettleExt 提供奖金的人 - * @param targetCuMemberSettleExt 获得奖金的人 + * @param saOrder 订单编号 + * @param cuMemberBonusCoach 培育津贴 + * @param sourceCuMemberRetailExt 提供奖金的人 + * @param targetCuMemberRetailExt 获得奖金的人 */ - protected void coachRemark(SaOrderExt saOrderExt, CuMemberBonusCoach cuMemberBonusCoach, - CuMemberSettleExt sourceCuMemberSettleExt, CuMemberSettleExt targetCuMemberSettleExt) { - String remark = String.format(BonusMsgConstants.COACH, cuMemberBonusCoach.getCurrentGeneration(), saOrderExt.getOrderCode(), - sourceCuMemberSettleExt.getMemberCode() + sourceCuMemberSettleExt.getMemberName(), - targetCuMemberSettleExt.getMemberCode() + targetCuMemberSettleExt.getMemberName(), + protected void retailCoachRemark(SaOrder saOrder, CuMemberBonusCoach cuMemberBonusCoach, + CuMemberRetailRangeExt sourceCuMemberRetailExt, CuMemberRetailRangeExt targetCuMemberRetailExt) { + String remark = String.format(BonusMsgConstants.RETAIL_COACH, cuMemberBonusCoach.getCurrentGeneration(), saOrder.getOrderCode(), + sourceCuMemberRetailExt.getMemberCode() + sourceCuMemberRetailExt.getMemberName(), + targetCuMemberRetailExt.getMemberCode() + targetCuMemberRetailExt.getMemberName(), cuMemberBonusCoach.getCalAchieve(), cuMemberBonusCoach.getCalValue()); cuMemberBonusCoach.setRemark(remark); } - /** - * @param saOrderExt 订单编号 - * @param cuMemberBonusCoach 辅导奖 - * @param sourceMemberRangeExt 提供奖金的人 - * @param targetMemberRangeExt 获得奖金的人 - * 获得 辅导收益的备注 - */ - protected void coachRangeRemark(SaOrderExt saOrderExt, CuMemberBonusCoach cuMemberBonusCoach, - CuMemberRangeExt sourceMemberRangeExt, CuMemberRangeExt targetMemberRangeExt) { - String remark = String.format(BonusMsgConstants.RANGE_COACH, cuMemberBonusCoach.getCurrentGeneration(), cuMemberBonusCoach.getCoachGeneration(), - saOrderExt.getOrderCode(), - sourceMemberRangeExt.getMemberCode() + sourceMemberRangeExt.getMemberName(), - targetMemberRangeExt.getMemberCode() + targetMemberRangeExt.getMemberName(), - cuMemberBonusCoach.getCalAchieve(), cuMemberBonusCoach.getCalValue()); - cuMemberBonusCoach.setRemark(remark); - } - - /** - * @param saOrderExt 订单编号 - * @param cuMemberBonusDetail 报单服务费 - * @param sourceCuMemberSettleExt 提供奖金的人 - * @param targetCuMemberSettleExt 获得奖金的人 - * 获得 报单服务费收益的备注 - */ - protected void serviceRemark(SaOrderExt saOrderExt, CuMemberBonusDetail cuMemberBonusDetail, - CuMemberSettleExt sourceCuMemberSettleExt, CuMemberSettleExt targetCuMemberSettleExt) { - String remark = String.format(BonusMsgConstants.SERVICE, saOrderExt.getOrderCode(), - sourceCuMemberSettleExt.getMemberCode() + sourceCuMemberSettleExt.getMemberName(), - targetCuMemberSettleExt.getMemberCode() + targetCuMemberSettleExt.getMemberName(), - cuMemberBonusDetail.getCalAchieve(), cuMemberBonusDetail.getCalValue()); - cuMemberBonusDetail.setRemark(remark); - } - - /** - * @param saOrderExt 订单编号 - * @param cuMemberBonusDetail 报单服务费 - * @param sourceCuMemberRangeExt 提供奖金的人 - * @param targetCuMemberRangeExt 获得奖金的人 - * 获得 报单服务费收益的备注 - */ - protected void rangeServiceRemark(SaOrderExt saOrderExt, CuMemberBonusDetail cuMemberBonusDetail, - CuMemberRangeExt sourceCuMemberRangeExt, CuMemberRangeExt targetCuMemberRangeExt) { - String remark = String.format(BonusMsgConstants.RANGE_SERVICE, saOrderExt.getOrderCode(), - sourceCuMemberRangeExt.getMemberCode() + sourceCuMemberRangeExt.getMemberName(), - targetCuMemberRangeExt.getMemberCode() + targetCuMemberRangeExt.getMemberName(), - cuMemberBonusDetail.getCalAchieve(), cuMemberBonusDetail.getCalValue()); - cuMemberBonusDetail.setRemark(remark); - } - - /** - * 获得 报单服务费收益的备注 - * - * @param saOrderExt 订单编号 - * @param cuMemberBonusDetail 报单服务费 - * @param sourceCuMemberSettleExt 提供奖金的人 - * @param targetCuMemberSettleExt 获得奖金的人 - */ - protected void haiFunRemark(SaOrderExt saOrderExt, CuMemberBonusDetail cuMemberBonusDetail, - CuMemberSettleExt sourceCuMemberSettleExt, CuMemberSettleExt targetCuMemberSettleExt) { - String remark = String.format(BonusMsgConstants.HAI_FUN, saOrderExt.getOrderCode(), - sourceCuMemberSettleExt.getMemberCode() + sourceCuMemberSettleExt.getMemberName(), - targetCuMemberSettleExt.getMemberCode() + targetCuMemberSettleExt.getMemberName(), - cuMemberBonusDetail.getPretaxIncome()); - cuMemberBonusDetail.setRemark(remark); - } - - /** - * 获得 嗨粉推荐的收益 - * - * @param saOrderExt 订单编号 - * @param cuMemberBonusDetail 报单服务费 - * @param sourceCuMemberSettleExt 提供奖金的人 - * @param targetCuMemberSettleExt 获得奖金的人 - */ - protected void hiFunRemark(SaOrderExt saOrderExt, CuMemberBonusDetail cuMemberBonusDetail, - CuMemberSettleExt sourceCuMemberSettleExt, CuMemberSettleExt targetCuMemberSettleExt) { - String remark = String.format(BonusMsgConstants.HI_FUN, saOrderExt.getOrderCode(), - sourceCuMemberSettleExt.getMemberCode() + sourceCuMemberSettleExt.getMemberName(), - targetCuMemberSettleExt.getMemberCode() + targetCuMemberSettleExt.getMemberName(), - cuMemberBonusDetail.getRealIncome()); - cuMemberBonusDetail.setRemark(remark); - } - - /** - * 获得 分红收益的备注 - * - * @param cuMemberBonusDetail 分红 - * @param settleDate 结算日期 - */ - protected void shareRemark(CuMemberBonusDetail cuMemberBonusDetail, String settleDate) { - String remark = String.format(BonusMsgConstants.SHARE, DateUtils.getMonth(settleDate), - cuMemberBonusDetail.getPretaxIncome()); - cuMemberBonusDetail.setRemark(remark); - } - - /** - * @param saOrderExt 订单编号 - * @param cuMemberBonusRange 报单服务费 - * @param sourceCuMemberSettleExt 提供奖金的人 - * @param targetCuMemberSettleExt 获得奖金的人 - * 获得 报单服务费收益的备注 - */ - protected void rangeRemark(SaOrderExt saOrderExt, CuMemberBonusRange cuMemberBonusRange, CuMemberSettleExt sourceCuMemberSettleExt, - CuMemberSettleExt targetCuMemberSettleExt, Map rangePkDtoMap) { - RangeDTO beforeOrderRangeDto = rangePkDtoMap.get(targetCuMemberSettleExt.getPkSettleCountry().toString() + cuMemberBonusRange.getPkBeforeRange()); - RangeDTO orderRangeDto = rangePkDtoMap.get(sourceCuMemberSettleExt.getPkSettleCountry().toString() + cuMemberBonusRange.getPkRange()); - String remark = String.format(BonusMsgConstants.SHARE_RANGE, saOrderExt.getOrderCode(), - sourceCuMemberSettleExt.getMemberCode() + sourceCuMemberSettleExt.getMemberName(), - targetCuMemberSettleExt.getMemberCode() + targetCuMemberSettleExt.getMemberName(), - cuMemberBonusRange.getCalAchieve(), beforeOrderRangeDto == null ? "" : beforeOrderRangeDto.getRangeName(), orderRangeDto == null ? "" : orderRangeDto.getRangeName()); - cuMemberBonusRange.setRemark(remark); - } - /** * 获得 直推级差收益的备注 * @@ -548,7 +118,7 @@ public abstract class BonusSettleHandle { * @param targetMemberRangeExt 获得奖金的人 */ protected void rangeMonthRepurchaseRetailRemark(SaOrder saOrderExt, CuMemberBonusRange cuMemberBonusRange, CuMemberRetailRangeExt sourceMemberRangeExt, - CuMemberRetailRangeExt targetMemberRangeExt) { + CuMemberRetailRangeExt targetMemberRangeExt) { String remark = String.format(BonusMsgConstants.RETAIL_MONTH_REPURCHASE_INCOME, saOrderExt.getOrderCode(), sourceMemberRangeExt.getMemberCode() + sourceMemberRangeExt.getMemberName(), targetMemberRangeExt.getMemberCode() + targetMemberRangeExt.getMemberName(), @@ -573,76 +143,6 @@ public abstract class BonusSettleHandle { cuMemberBonusRange.setRemark(remark); } - /** - * 获得 报单服务费收益的备注 - * - * @param saOrderExt 订单编号 - * @param cuMemberBonusRange 报单服务费 - * @param sourceCuMemberSettleExt 提供奖金的人 - * @param targetCuMemberSettleExt 获得奖金的人 - */ - protected void xueRangeRemark(SaOrderExt saOrderExt, CuMemberBonusRange cuMemberBonusRange, CuMemberSettleExt sourceCuMemberSettleExt, - CuMemberSettleExt targetCuMemberSettleExt) { - String remark = String.format(BonusMsgConstants.LE_XUE_SHARE_RANGE, saOrderExt.getOrderCode(), - sourceCuMemberSettleExt.getMemberCode() + sourceCuMemberSettleExt.getMemberName(), - targetCuMemberSettleExt.getMemberCode() + targetCuMemberSettleExt.getMemberName(), - ComputeUtil.computeDivide(targetCuMemberSettleExt.getRetailPrice(), BigDecimal.ONE), targetCuMemberSettleExt.getGradeValue()); - cuMemberBonusRange.setRemark(remark); - } - - /** - * @param saOrder 订单编号 - * @param cuMemberBonusDetail 云代首购 - * @param sourceCuMemberSettleExt 提供奖金的人 - * @param targetCuMemberSettleExt 获得奖金的人 - * 获得 报单服务费收益的备注 - */ - protected void repurchaseCouponsRemark(SaOrder saOrder, CuMemberBonusDetail cuMemberBonusDetail, CuMemberSettleExt sourceCuMemberSettleExt, - CuMemberSettleExt targetCuMemberSettleExt) { - String remark = String.format(BonusMsgConstants.REPURCHASE_COUPON_RANGE, saOrder.getOrderCode(), - sourceCuMemberSettleExt.getMemberCode() + sourceCuMemberSettleExt.getMemberName(), - targetCuMemberSettleExt.getMemberCode() + targetCuMemberSettleExt.getMemberName(), - cuMemberBonusDetail.getCalAchieve(), cuMemberBonusDetail.getCalValue(), cuMemberBonusDetail.getRealIncome()); - cuMemberBonusDetail.setRemark(remark); - } - - /** - * 获取会员列表的考核结果 - * - * @param settleDateStr 结算日期 - * @param cuMemberSettleExtList 会员列表 - */ - protected Map getLongCuMemberAssessMap(String settleDateStr, List cuMemberSettleExtList) { - if (cuMemberSettleExtList.size() == 0) { - return new HashMap<>(0); - } - Date settleDate = DateUtils.parseStringToDate(settleDateStr); - // 获取结算日期的第一天的日期 - Integer assessPeriod = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(DateUtils.currentMonthFirstDateStr(settleDate)).getPkId(); - String assessTableName = TableNameConstants.CU_MEMBER_ASSESS + DateUtils.getYear(settleDateStr); - return cuMemberAssessService.queryCuMemberAssessByMember(assessTableName, assessPeriod, EAssessmentType.REPURCHASE_ASSESS.getValue(), cuMemberSettleExtList); - } - - /** - * 获取会员奖金汇总表 - * - * @param period 期间 - * @param cuMemberBonusMap 奖金汇总map - * @param saOrder 汇率 - * @param cuMemberSettleExt 获取奖金的会员 - * @return CuMemberBonus - */ - protected CuMemberBonus getCuMemberBonus(Integer period, Map cuMemberBonusMap, SaOrder saOrder, - CuMemberSettleExt cuMemberSettleExt) { - Integer pkRate = saOrder.getPkRate(); - if (pkRate == null || !Objects.equals(cuMemberSettleExt.getPkSettleCountry(), saOrder.getPkCountry())) { - CurrencyDTO currencyDTO = iCurrencyServiceApi.getCurrency(cuMemberSettleExt.getPkSettleCountry()).getData(); - pkRate = currencyDTO.getPkId(); - } - return getCuMemberBonus(period, cuMemberBonusMap, cuMemberSettleExt.getPkMember(), cuMemberSettleExt.getIncomeStatus(), - cuMemberSettleExt.getPkSettleCountry(), pkRate); - } - protected CuMemberBonus getCuMemberBonus(Integer period, Map cuMemberBonusMap, Long pkMember, Integer incomeStatus, Integer pkCountry, Integer pkRate) { if (cuMemberBonusMap.containsKey(pkMember)) { @@ -702,162 +202,6 @@ public abstract class BonusSettleHandle { } } - protected CuMemberBonusExpand getCuMemberBonusExpand(SaOrderExt saOrderExt, int touchNum, int i, CuMemberSettleExt targetMemberSettleExt, BigDecimal countryExpandRatio, CuMemberBonus cuMemberBonus, BigDecimal calAchieve, - Integer pkBonusItems, BigDecimal addTouch) { - CuMemberBonusExpand cuMemberBonusExpand = CuMemberBonusExpand.builder() - .pkBonus(cuMemberBonus.getPkId()) - .pkOrder(saOrderExt.getPkId()) - .pkBonusItems(pkBonusItems) - .calType(ECalType.RATIO.getValue()) - .incomeStatus(targetMemberSettleExt.getIncomeStatus()) - .currentTouch(i) - .expandTouch(touchNum) - .addTouch(addTouch) - .calValue(countryExpandRatio) - .calAchieve(calAchieve) - .pretaxIncome(BigDecimal.ZERO) - .incomeTax(BigDecimal.ZERO) - .realIncome(BigDecimal.ZERO) - .incomeRatio(BigDecimal.ZERO) - .incomeDialRatio(BigDecimal.ZERO) - .orderDialRatio(BigDecimal.ZERO) - .build(); - cuMemberBonusExpand.setPkCountry(targetMemberSettleExt.getPkSettleCountry()); - cuMemberBonusExpand.setPkCreator(MagicNumberConstants.PK_ADMIN); - if (EAccountStatus.STOP_PROFIT.getValue() == targetMemberSettleExt.getAccountStatus()) { - cuMemberBonusExpand.setIncomeStatus(EBonusIncomeStatus.STOP_INCOME.getValue()); - } - if (EExpireStatus.TERMINATED.getValue() == targetMemberSettleExt.getExpireStatus()) { - cuMemberBonusExpand.setIncomeStatus(EBonusIncomeStatus.FIRE_BURN.getValue()); - } - return cuMemberBonusExpand; - } - - protected void packageCuMemberBonusExpand(CuMemberBonusExpand cuMemberBonusExpand, CuMemberBonus cuMemberBonus, - BigDecimal expandCapping, BigDecimal income, BigDecimal actualIncome) { - cuMemberBonusExpand.setExpandNoCapping(income); - cuMemberBonusExpand.setExpandCapping(income); - BigDecimal expandIncome = ComputeUtil.computeAdd(cuMemberBonus.getExpandCapping(), income); - if (ComputeUtil.compareValue(expandIncome, expandCapping)) { - cuMemberBonusExpand.setExpandCapping(ComputeUtil.computeSubtractAbs(cuMemberBonus.getExpandCapping(), income)); - cuMemberBonus.setExpandCapping(expandCapping); - } else { - cuMemberBonus.setExpandCapping(expandIncome); - } - cuMemberBonusExpand.setPretaxIncome(actualIncome); - cuMemberBonusExpand.setExpandNormalHalf(ComputeUtil.computeMultiplyHalf(cuMemberBonusExpand.getExpandCapping())); - cuMemberBonusExpand.setExpandNormalReal(ComputeUtil.computeMultiplyHalf(cuMemberBonusExpand.getPretaxIncome())); - } - - protected void packageCuMemberBonusRepurchaseExpand(CuMemberBonusExpand cuMemberBonusExpand, CuMemberBonus cuMemberBonus, - BigDecimal expandCapping, BigDecimal income, BigDecimal actualIncome) { - cuMemberBonusExpand.setExpandNoCapping(income); - cuMemberBonusExpand.setExpandCapping(income); - BigDecimal expandIncome = ComputeUtil.computeAdd(cuMemberBonus.getExpandCapping(), income); - if (ComputeUtil.compareValue(expandIncome, expandCapping)) { - cuMemberBonusExpand.setExpandCapping(ComputeUtil.computeSubtractAbs(cuMemberBonus.getExpandCapping(), income)); - } - cuMemberBonusExpand.setPretaxIncome(actualIncome); - cuMemberBonusExpand.setExpandNormalHalf(ComputeUtil.computeMultiplyHalf(cuMemberBonusExpand.getExpandCapping())); - cuMemberBonusExpand.setExpandNormalReal(ComputeUtil.computeMultiplyHalf(cuMemberBonusExpand.getPretaxIncome())); - } - - /** - * @param cuMemberSettleExtMap 树关系 - * @param settleTableName 结算表 - * @param saOrderList 订单 - * 根据订单获取会员的血缘父级,用于嗨粉推荐、复购极差 - */ - protected List getMemberParentBySaOrder(Map cuMemberSettleExtMap, String settleTableName, List saOrderList) { - Set memberSet = new HashSet<>(); - saOrderList.forEach(saOrderExt -> memberSet.add(saOrderExt.getPkMember())); - List cuMemberSettleExtList = cuMemberTreeService.batchQueryCuMemberSettleParent(settleTableName, memberSet); - getMemberSettle(cuMemberSettleExtMap, cuMemberSettleExtList); - return cuMemberSettleExtList; - } - - /** - * @param awardsMap 奖衔 - * @param parentMemberTree 会员树历史记录 - * 获取会员的极差等级,验证会员是否有奖衔 - */ - protected String getMemberCountryKey(Map awardsMap, CuMemberTree parentMemberTree, Map cuAwardsControlMap) { - Integer pkAwards = getPkRealAwards(parentMemberTree.getPkMember(), parentMemberTree.getPkAwards(), cuAwardsControlMap); - String key = parentMemberTree.getPkSettleCountry().toString() + ERangeType.AWARDS.getValue() + pkAwards; - String awardKey = parentMemberTree.getPkSettleCountry() + parentMemberTree.getPkAwards().toString(); - if (awardsMap.get(awardKey) != null && EAwards.MEMBER.getValue() == awardsMap.get(awardKey).getAwardsValue()) { - key = parentMemberTree.getPkSettleCountry().toString() + ERangeType.GRADE.getValue() + parentMemberTree.getPkGrade(); - } - return key; - } - - protected RangeDTO getRangeDto(Map rangeDtoMap, Map awardsMap, CuMemberTree parentMemberTree, Map cuAwardsControlMap) { - String key = getMemberCountryKey(awardsMap, parentMemberTree, cuAwardsControlMap); - return rangeDtoMap.get(key); - } - - /** - * @param awardsMap 奖衔 - * @param parentMemberTree 会员树历史记录 - * 获取会员的极差等级,验证会员是否有奖衔 - */ - protected String getMemberKey(Map awardsMap, CuMemberTree parentMemberTree) { - String key = Integer.toString(ERangeType.AWARDS.getValue()) + parentMemberTree.getPkAwards(); - String awardKey = parentMemberTree.getPkSettleCountry().toString() + parentMemberTree.getPkAwards().toString(); - if (EAwards.MEMBER.getValue() == awardsMap.get(awardKey).getAwardsValue()) { - key = Integer.toString(ERangeType.GRADE.getValue()) + parentMemberTree.getPkGrade(); - } - return key; - } - - /** - * 奖金明细 报单服务费、分红、云代首购、云代复购、海豆收益 - * - * @param saOrderExt 订单 - * @param targetMemberSettleExt 奖金网体 - * @param cuMemberBonus 奖金主表 - */ - protected CuMemberBonusDetail getCuMemberBonusDetail(SaOrder saOrderExt, CuMemberSettleExt targetMemberSettleExt, CuMemberBonus cuMemberBonus) { - CuMemberBonusDetail cuMemberBonusDetail = CuMemberBonusDetail.builder() - .pkBonus(cuMemberBonus.getPkId()) - .pkOrder(saOrderExt.getPkId()) - .calType(ECalType.RATIO.getValue()) - .incomeStatus(targetMemberSettleExt.getIncomeStatus()) - .calAchieve(saOrderExt.getOrderAchieve()) - .pretaxIncome(BigDecimal.ZERO) - .incomeTax(BigDecimal.ZERO) - .realIncome(BigDecimal.ZERO) - .incomeRatio(BigDecimal.ZERO) - .incomeDialRatio(BigDecimal.ZERO) - .orderDialRatio(BigDecimal.ZERO) - .build(); - cuMemberBonusDetail.setPkCountry(targetMemberSettleExt.getPkSettleCountry()); - cuMemberBonusDetail.setPkCreator(MagicNumberConstants.PK_ADMIN); - if (EExpireStatus.TERMINATED.getValue() == targetMemberSettleExt.getExpireStatus()) { - cuMemberBonusDetail.setIncomeStatus(EBonusIncomeStatus.FIRE_BURN.getValue()); - } - return cuMemberBonusDetail; - } - - /** - * 获得需要查询的会员,免考通过的不需要查询考核记录 - * - * @param cuMemberSettleExtMap 存储目前有的会员数据 - * @param cuMemberSettleExtList 需要查询的会员数据 - */ - protected List getQueryMemberSettleExtList(Map cuMemberSettleExtMap, List cuMemberSettleExtList) { - // 过滤数据,免考的会员不进行查询 - List queryMemberList = new ArrayList<>(); - cuMemberSettleExtList.forEach(cuMemberSettleExt -> { - CuMemberSettleExt memberSettleExt = cuMemberSettleExtMap.get(cuMemberSettleExt.getPkMember()); - // 免考的不查询 - if (memberSettleExt == null || EYesNo.NO.getIntValue() == memberSettleExt.getPurchaseStatus()) { - queryMemberList.add(cuMemberSettleExt); - } - }); - return queryMemberList; - } - /** * 设置奖金扣项,计算税前收益,扣税,实际收益, 设置主表 * @@ -876,36 +220,6 @@ public abstract class BonusSettleHandle { cuMemberBonus.setServiceSpend(ComputeUtil.computeAdd(cuMemberBonus.getServiceSpend(), ComputeUtil.computeBonusMultiply(pretaxIncome, platformRatio))); } - /** - * 首购计算 扣项,小计,总计 - */ - protected void setFirstPurchaseTotal(BdBonusDeduct bdBonusDeduct, CuMemberBonus cuMemberBonus, Object bonusDetail) { - setBonusDeduct(bdBonusDeduct, cuMemberBonus, bonusDetail); - BigDecimal realIncome = ReflectUtils.invokeGetter(bonusDetail, BonusFieldConstants.REAL_INCOME); - cuMemberBonus.setPurRealSubtotal(ComputeUtil.computeAdd(cuMemberBonus.getPurRealSubtotal(), realIncome)); - cuMemberBonus.setRealIncomeTotal(ComputeUtil.computeAdd(cuMemberBonus.getRealIncomeTotal(), realIncome)); - } - - /** - * 复购计算 扣项,小计,总计 - */ - protected void setPurchaseTotal(BdBonusDeduct bdBonusDeduct, CuMemberBonus cuMemberBonus, Object bonusDetail) { - setBonusDeduct(bdBonusDeduct, cuMemberBonus, bonusDetail); - BigDecimal realIncome = ReflectUtils.invokeGetter(bonusDetail, BonusFieldConstants.REAL_INCOME); - cuMemberBonus.setRepurRealSubtotal(ComputeUtil.computeAdd(cuMemberBonus.getRepurRealSubtotal(), realIncome)); - cuMemberBonus.setRealIncomeTotal(ComputeUtil.computeAdd(cuMemberBonus.getRealIncomeTotal(), realIncome)); - } - - /** - * 云代计算 扣项,小计,总计 - */ - protected void setCloudTotal(BdBonusDeduct bdBonusDeduct, CuMemberBonus cuMemberBonus, Object bonusDetail) { - setBonusDeduct(bdBonusDeduct, cuMemberBonus, bonusDetail); - BigDecimal realIncome = ReflectUtils.invokeGetter(bonusDetail, BonusFieldConstants.REAL_INCOME); - cuMemberBonus.setCloudRealSubtotal(ComputeUtil.computeAdd(cuMemberBonus.getCloudRealSubtotal(), realIncome)); - cuMemberBonus.setRealIncomeTotal(ComputeUtil.computeAdd(cuMemberBonus.getRealIncomeTotal(), realIncome)); - } - /** * 扣项,小计,总计 */ @@ -916,15 +230,6 @@ public abstract class BonusSettleHandle { cuMemberBonus.setRealIncomeTotal(ComputeUtil.computeAdd(cuMemberBonus.getRealIncomeTotal(), realIncome)); } - /** - * 扣项,小计,总计 - */ - protected void setRepurchaseCouponTotal(BdBonusDeduct bdBonusDeduct, CuMemberBonus cuMemberBonus, Object bonusDetail) { - setBonusDeduct(bdBonusDeduct, cuMemberBonus, bonusDetail); - BigDecimal realIncome = ReflectUtils.invokeGetter(bonusDetail, BonusFieldConstants.REAL_INCOME); - cuMemberBonus.setRepurCouponSubtotal(ComputeUtil.computeAdd(cuMemberBonus.getRepurCouponSubtotal(), realIncome)); - } - /** * 设置奖金扣项,计算税前收益,扣税,实际收益, 设置明细表 * @@ -948,79 +253,4 @@ public abstract class BonusSettleHandle { return bdBonusDeduct; } - - protected void setCuMemberAchieve(SaOrderExt saOrderExt, Map cuMemberSettleExtMap, BonusConfigDTO bonusConfigDTO) { - CuMemberSettleExt cuMemberSettleExt = cuMemberSettleExtMap.get(saOrderExt.getPkMember()); - if (EOrderType.REGISTER_ORDER.getValue() == saOrderExt.getOrderType()) { - cuMemberSettleExt.setRegisterAmount(ComputeUtil.computeAdd(cuMemberSettleExt.getRegisterAmount(), convertLocalCurrency(saOrderExt, bonusConfigDTO))); - cuMemberSettleExt.setRegisterPv(ComputeUtil.computeAdd(cuMemberSettleExt.getRegisterPv(), saOrderExt.getOrderAchieve())); - cuMemberSettleExt.setRegisterNewAmount(ComputeUtil.computeAdd(cuMemberSettleExt.getRegisterNewAmount(), convertLocalCurrency(saOrderExt, bonusConfigDTO))); - cuMemberSettleExt.setRegisterNewPv(ComputeUtil.computeAdd(cuMemberSettleExt.getRegisterNewPv(), saOrderExt.getOrderAchieve())); - } else { - cuMemberSettleExt.setUpgradeAmount(ComputeUtil.computeAdd(cuMemberSettleExt.getUpgradeAmount(), convertLocalCurrency(saOrderExt, bonusConfigDTO))); - cuMemberSettleExt.setUpgradePv(ComputeUtil.computeAdd(cuMemberSettleExt.getUpgradePv(), saOrderExt.getOrderAchieve())); - cuMemberSettleExt.setUpgradeNewAmount(ComputeUtil.computeAdd(cuMemberSettleExt.getUpgradeNewAmount(), convertLocalCurrency(saOrderExt, bonusConfigDTO))); - cuMemberSettleExt.setUpgradeNewPv(ComputeUtil.computeAdd(cuMemberSettleExt.getUpgradeNewPv(), saOrderExt.getOrderAchieve())); - } - } - - /** - * 根据订单分类,分为首购、复购、真实,获取新增业绩 - * - * @param orderExtList 订单列表 - */ - public void assortSaOrder(Map cuMemberAchieveHashMap, List orderExtList, BonusConfigDTO bonusConfigDTO, Boolean isFirst) { - // 注册+升级+云代注册+云代升级 首购 除(注册+升级)其他 复购 首购+复购 = 真实 - for (SaOrderExt saOrderExt : orderExtList) { - MemberAchieveParam cuMemberAchieve; - if (cuMemberAchieveHashMap.containsKey(saOrderExt.getPkMember())) { - cuMemberAchieve = cuMemberAchieveHashMap.get(saOrderExt.getPkMember()); - // 所有的都算真实业绩 - } else { - cuMemberAchieve = MemberAchieveParam.builder() - .pkRate(saOrderExt.getPkRate()) - .pkMember(saOrderExt.getPkMember()) - .newAmount(BigDecimal.ZERO) - .newPv(BigDecimal.ZERO) - .repNewAmount(BigDecimal.ZERO) - .repNewPv(BigDecimal.ZERO) - .newRealAmount(BigDecimal.ZERO) - .newRealPv(BigDecimal.ZERO) - .build(); - cuMemberAchieveHashMap.put(saOrderExt.getPkMember(), cuMemberAchieve); - } - if (isFirst) { - cuMemberAchieve.setNewAmount(ComputeUtil.computeAdd(cuMemberAchieve.getNewAmount(), saOrderExt.getOrderAmount())); - cuMemberAchieve.setNewPv(ComputeUtil.computeAdd(cuMemberAchieve.getNewPv(), saOrderExt.getOrderAchieve())); - } else { - cuMemberAchieve.setRepNewAmount(ComputeUtil.computeAdd(cuMemberAchieve.getRepNewAmount(), saOrderExt.getOrderAmount())); - cuMemberAchieve.setRepNewPv(ComputeUtil.computeAdd(cuMemberAchieve.getRepNewPv(), saOrderExt.getOrderAchieve())); - } - cuMemberAchieve.setNewRealAmount(ComputeUtil.computeAdd(cuMemberAchieve.getNewRealAmount(), saOrderExt.getOrderAmount())); - cuMemberAchieve.setNewRealPv(ComputeUtil.computeAdd(cuMemberAchieve.getNewRealPv(), saOrderExt.getOrderAchieve())); - } - } - - protected BigDecimal convertLocalCurrency(SaOrder saOrderExt, BonusConfigDTO bonusConfigDTO) { - Map currencyDtoMap = bonusConfigDTO.getCurrencyDtoMap(); - String key = saOrderExt.getPkCountry().toString() + saOrderExt.getPkRate(); - BigDecimal orderAmount = BigDecimal.ZERO; - if (currencyDtoMap.containsKey(key)) { - orderAmount = ComputeUtil.computeDivide(saOrderExt.getOrderAmount(), currencyDtoMap.get(key).getOutExchangeRate()); - } - return orderAmount; - } - - /** - * 根据会员主键列表获得会员只 - */ - protected Map packageMemberSettleByPkMemberSet(Map cuMemberSettleExtMap, String settleDate, String settleTableName, Set memberSet) { - if (memberSet.size() > 0) { - List cuMemberSettleExtList = cuMemberTreeService.batchQueryMemberSettleByMemberPk(settleTableName, memberSet); - // 初始化父类网体的值 - getMemberSettle(cuMemberSettleExtMap, cuMemberSettleExtList); - return getLongCuMemberAssessMap(settleDate, cuMemberSettleExtList); - } - return null; - } } diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettleHiFunHandle.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettleHiFunHandle.java deleted file mode 100644 index 75be2320..00000000 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettleHiFunHandle.java +++ /dev/null @@ -1,351 +0,0 @@ -package com.hzs.bonus.bonus.service.impl; - -import com.hzs.common.core.constant.BonusFieldConstants; -import com.hzs.common.core.constant.MagicNumberConstants; -import com.hzs.common.core.enums.*; -import com.hzs.common.core.utils.ComputeUtil; -import com.hzs.common.core.utils.reflect.ReflectUtils; -import com.hzs.common.domain.bonus.BdBonusDeduct; -import com.hzs.common.domain.member.base.CuAwardsControl; -import com.hzs.common.domain.member.bonus.CuMemberBonus; -import com.hzs.common.domain.member.bonus.CuMemberBonusDetail; -import com.hzs.common.domain.member.ext.CuMemberSettleExt; -import com.hzs.common.domain.sale.ext.SaOrderExt; -import com.hzs.common.domain.sale.ext.SaOrderItemsExt; -import com.hzs.common.domain.system.config.BdAwards; -import com.hzs.system.config.dto.BonusConfigDTO; -import com.hzs.system.config.dto.BonusHiPinkDTO; -import com.hzs.system.config.dto.RangeDTO; -import org.springframework.stereotype.Component; - -import java.math.BigDecimal; -import java.util.*; - -/** - * @Description: 计算嗨粉订单 - * @Author: sui q - * @Time: 2023/1/4 13:38 - * @Classname: BonusSettleHiFunHandle - * @PackageName: com.hzs.member.bonus.service.impl - */ -@Component -public class BonusSettleHiFunHandle extends BonusSettleHandle { - - /** - * @param period 期间 - * @param bonusConfigDTO 参数 - * @param hiFunSaOrderList 复购订单 - * @param cuMemberBonusMap 所有计算出来的奖金汇总 - * @Description: 计算嗨粉奖金 - * @return: void - * @Author: sui q - * @Date: 2022/11/10 14:17 - */ - List calculateHiFunPushBonus(Map cuMemberSettleExtMap, String settleTableName, Map rangeDtoMap, Map awardsMap, - BonusConfigDTO bonusConfigDTO, List hiFunSaOrderList, Integer period, Map cuMemberBonusMap, Map cuAwardsControlMap) { - // 根据订单明细开始计算奖金,计算嗨粉推荐奖 - List cuMemberBonusDetailList = new ArrayList<>(); - // cuMemberSettleExtMap 需要含自己 - getMemberParentBySaOrder(cuMemberSettleExtMap, settleTableName, hiFunSaOrderList); - // 原来413嗨粉推荐海粉极差收益 - hiFunSaOrderList.forEach(saOrderExt -> { - List bonusDetailList = calculateHiFunPushBonusOne(cuMemberSettleExtMap, rangeDtoMap, awardsMap, bonusConfigDTO, period, cuMemberBonusMap, saOrderExt, cuAwardsControlMap); - if (bonusDetailList.size() > 0) { - cuMemberBonusDetailList.addAll(bonusDetailList); - } - }); - return cuMemberBonusDetailList; - } - - /** - * @param settleTableName 结算表 - * @param period 期间 - * @param bonusConfigDTO 参数 - * @param haiFunOrderList 订单列表 - * @param cuMemberBonusMap 所有计算出来的奖金汇总 - * @Description: 计算报单服务费 - * @return: List - * @Author: sui q - * @Date: 2022/11/17 14:14 - */ - List calculateHaiFunBonus(Map cuMemberSettleExtMap, String settleTableName, BonusConfigDTO bonusConfigDTO, - List haiFunOrderList, Integer period, Map cuMemberBonusMap) { - List cuMemberBonusDetailList = new ArrayList<>(); - // 先过滤数据,验证报单人是否在网体列表中,不在需要从数据库中查询 - Set haiFunMemberSet = new HashSet<>(); - haiFunOrderList.forEach(saOrderExt -> { - CuMemberSettleExt cuMemberSettleExt = cuMemberSettleExtMap.get(saOrderExt.getPkMember()); - if (cuMemberSettleExt == null || cuMemberSettleExtMap.get(cuMemberSettleExt.getPkParent()) == null) { - haiFunMemberSet.add(saOrderExt.getPkMember()); - } - }); - if (haiFunMemberSet.size() > 0) { - List cuMemberSettleExtList = cuMemberTreeService.batchQueryMemberSettleParentByMemberPk(settleTableName, haiFunMemberSet); - // 初始化父类网体的值 - getMemberSettle(cuMemberSettleExtMap, cuMemberSettleExtList); - } - // 计算海粉推荐 - for (SaOrderExt saOrderExt : haiFunOrderList) { - List cuMemberBonusDetails = calculateHaiFunBonusOne(cuMemberSettleExtMap, bonusConfigDTO, period, cuMemberBonusMap, saOrderExt); - if (cuMemberBonusDetails.size() > 0) { - cuMemberBonusDetailList.addAll(cuMemberBonusDetails); - } - } - // 查询会员 - return cuMemberBonusDetailList; - } - - - /** - * @Description: 计算海粉推荐奖 - * @return: CuMemberBonusDetail - * @Author: sui q - * @Date: 2023/2/8 17:22 - */ - List calculateHaiFunBonusOne(Map cuMemberSettleExtMap, BonusConfigDTO bonusConfigDTO, Integer period, Map cuMemberBonusMap, SaOrderExt saOrderExt) { - List cuMemberBonusDetailList = new ArrayList<>(); - CuMemberSettleExt sourceMemberSettleExt = cuMemberSettleExtMap.get(saOrderExt.getPkMember()); - if (sourceMemberSettleExt == null) { - return cuMemberBonusDetailList; - } - CuMemberSettleExt targetMemberSettleExt = cuMemberSettleExtMap.get(sourceMemberSettleExt.getPkParent()); - if (targetMemberSettleExt == null || ECategory.NORMAL.getValue() != targetMemberSettleExt.getCategory() || - EAccountStatus.STOP_INCOME.getValue() == targetMemberSettleExt.getAccountStatus()) { - return cuMemberBonusDetailList; - } - // 验证是否有奖金 -// if (validatePkBonusItems(bonusConfigDTO, targetMemberSettleExt.getPkSettleCountry(), EBonusItems.HAI_DOU_INCOME.getValue())) { -// return cuMemberBonusDetailList; -// } - for (SaOrderItemsExt saOrderItemsExt : saOrderExt.getOrderItemsExtList()) { - CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, saOrderExt, targetMemberSettleExt); - // 海粉直推奖金明细 - CuMemberBonusDetail cuMemberBonusDetail = getCuMemberBonusDetail(saOrderExt, targetMemberSettleExt, cuMemberBonus); - // 计算比例 - cuMemberBonusDetail.setCalValue(BigDecimal.ZERO); -// cuMemberBonusDetail.setPkBonusItems(getPkBonusItems(bonusConfigDTO, targetMemberSettleExt.getPkSettleCountry(), EBonusItems.HAI_DOU_INCOME.getValue())); - cuMemberBonusDetail.setPretaxIncome(saOrderItemsExt.getShareAchieve()); - // 收益占比 - BdBonusDeduct bdBonusDeduct = setBonusDetailDeduct(bonusConfigDTO, cuMemberBonusDetail, saOrderExt.getOrderAmount(), saOrderExt.getInExchangeRate()); - haiFunRemark(saOrderExt, cuMemberBonusDetail, sourceMemberSettleExt, targetMemberSettleExt); - if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusDetail.getIncomeStatus()) { - cuMemberBonus.setHaiFunIncome(ComputeUtil.computeAdd(cuMemberBonus.getHaiFunIncome(), cuMemberBonusDetail.getPretaxIncome())); - setBonusDeduct(bdBonusDeduct, cuMemberBonus, cuMemberBonusDetail); - BigDecimal realIncome = ReflectUtils.invokeGetter(cuMemberBonusDetail, BonusFieldConstants.REAL_INCOME); - cuMemberBonus.setRealIncomeTotal(ComputeUtil.computeAdd(cuMemberBonus.getRealIncomeTotal(), realIncome)); - } - cuMemberBonusDetailList.add(cuMemberBonusDetail); - } - - return cuMemberBonusDetailList; - } - - /** - * @Description: 计算嗨粉奖金,嗨粉推荐,嗨粉极差 - * @return: List - * @Author: sui q - * @Date: 2023/2/9 10:25 - */ - protected List calculateHiFunPushBonusOne(Map cuMemberSettleExtMap, Map rangeDtoMap, Map awardsMap, BonusConfigDTO bonusConfigDTO, Integer period, Map cuMemberBonusMap, SaOrderExt saOrderExt, Map cuAwardsControlMap) { - List cuMemberBonusDetailList = new ArrayList<>(); - CuMemberSettleExt sourceMemberSettleExt = cuMemberSettleExtMap.get(saOrderExt.getPkMember()); - if (sourceMemberSettleExt == null) { - return cuMemberBonusDetailList; - } - BigDecimal waresNum = ComputeUtil.computeDivide(saOrderExt.getOrderAmount(), BigDecimal.valueOf(413)); - sourceMemberSettleExt.setHiFunAmount(ComputeUtil.computeAdd(sourceMemberSettleExt.getHiFunAmount(), convertLocalCurrency(saOrderExt, bonusConfigDTO))); - sourceMemberSettleExt.setHiFunPv(ComputeUtil.computeAdd(sourceMemberSettleExt.getHiFunPv(), saOrderExt.getOrderAchieve())); - sourceMemberSettleExt.setHiFunNewAmount(ComputeUtil.computeAdd(sourceMemberSettleExt.getHiFunNewAmount(), convertLocalCurrency(saOrderExt, bonusConfigDTO))); - sourceMemberSettleExt.setHiFunNewPv(ComputeUtil.computeAdd(sourceMemberSettleExt.getHiFunNewPv(), saOrderExt.getOrderAchieve())); - Map> bonusHiPinkDtoMap = bonusConfigDTO.getBonusHiPinkDtoMap(); - CuMemberSettleExt targetMemberSettleExt = cuMemberSettleExtMap.get(saOrderExt.getPkReference()); - // 找到最大的奖金 - BigDecimal maxBonusValue = BigDecimal.ZERO; - List bonusHiPinkDTOList = bonusHiPinkDtoMap.get(saOrderExt.getPkCountry()); - for (BonusHiPinkDTO bonusHiPinkDTO : bonusHiPinkDTOList) { - if (ComputeUtil.compareGreaterThan(bonusHiPinkDTO.getBonusValue(), maxBonusValue)) { - maxBonusValue = bonusHiPinkDTO.getBonusValue(); - } - } - BigDecimal income = BigDecimal.ZERO; - boolean flag = false; - int i = 0; - while (targetMemberSettleExt != null && targetMemberSettleExt.getPkParent() != 0) { - // 嗨粉直推奖励的配置,从第一级开始获取 - BonusHiPinkDTO startBonusHiPinkDto = bonusHiPinkDTOList.get(i); - targetMemberSettleExt = getCuMemberTree(cuMemberSettleExtMap, rangeDtoMap, awardsMap, targetMemberSettleExt, startBonusHiPinkDto, cuAwardsControlMap); - if (targetMemberSettleExt == null) { - break; - } - String key = getMemberKey(awardsMap, targetMemberSettleExt); - if (ECategory.NORMAL.getValue() != targetMemberSettleExt.getCategory() || EAccountStatus.STOP_INCOME.getValue() == targetMemberSettleExt.getAccountStatus() || - validatePkBonusItems(bonusConfigDTO, targetMemberSettleExt.getPkSettleCountry(), EBonusItems.HI_PINK.getValue())) { - targetMemberSettleExt = cuMemberSettleExtMap.get(targetMemberSettleExt.getPkParent()); - continue; - } - for (int x = i; x < bonusHiPinkDTOList.size(); x++) { - BonusHiPinkDTO bonusHiPinkDTO = bonusHiPinkDTOList.get(x); - String hiKey = bonusHiPinkDTO.getRangeType().toString() + bonusHiPinkDTO.getPkLevel(); - if (key.equals(hiKey)) { - CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, saOrderExt, targetMemberSettleExt); - BigDecimal bonusIncome = ComputeUtil.computeSubtract(bonusHiPinkDTO.getBonusValue(), income); - bonusIncome = ComputeUtil.computeMultiply(bonusIncome, waresNum); - if (ComputeUtil.compareValue(BigDecimal.ZERO, bonusIncome)) { -// flag = true; - break; - } - // 直推奖金明细 - CuMemberBonusDetail cuMemberBonusDetail = getCuMemberBonusDetail(saOrderExt, targetMemberSettleExt, cuMemberBonus); - cuMemberBonusDetail.setPkBonusItems(getPkBonusItems(bonusConfigDTO, targetMemberSettleExt.getPkSettleCountry(), EBonusItems.HI_PINK.getValue())); - // 计算比例 - cuMemberBonusDetail.setCalValue(bonusHiPinkDTO.getBonusValue()); - cuMemberBonusDetail.setPretaxIncome(bonusIncome); - // 收益占比 - BdBonusDeduct bdBonusDeduct = setBonusDetailDeduct(bonusConfigDTO, cuMemberBonusDetail, saOrderExt.getOrderAmount(), saOrderExt.getInExchangeRate()); - hiFunRemark(saOrderExt, cuMemberBonusDetail, sourceMemberSettleExt, targetMemberSettleExt); - if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusDetail.getIncomeStatus()) { - cuMemberBonus.setHiFunIncome(ComputeUtil.computeAdd(cuMemberBonus.getHiFunIncome(), cuMemberBonusDetail.getPretaxIncome())); - setBonusDeduct(bdBonusDeduct, cuMemberBonus, cuMemberBonusDetail); - cuMemberBonus.setRealIncomeTotal(ComputeUtil.computeAdd(cuMemberBonus.getRealIncomeTotal(), cuMemberBonusDetail.getRealIncome())); - } - income = bonusHiPinkDTO.getBonusValue(); - cuMemberBonusDetailList.add(cuMemberBonusDetail); - if (ComputeUtil.compareEqual(maxBonusValue, bonusHiPinkDTO.getBonusValue())) { - flag = true; - } - if (x < bonusHiPinkDTOList.size() - 1) { - i = x + 1; - } else { - flag = true; - } - break; - } - } - targetMemberSettleExt = cuMemberSettleExtMap.get(targetMemberSettleExt.getPkParent()); - if (flag) { - break; - } - } - return cuMemberBonusDetailList; - } - - /** - * @Description: 计算嗨粉奖金,嗨粉推荐,嗨粉极差 - * @return: List - * @Author: sui q - * @Date: 2023/2/9 10:25 - */ - protected List calculateNewHiFunPushBonusOne(Map cuMemberSettleExtMap, Map rangeDtoMap, Map awardsMap, BonusConfigDTO bonusConfigDTO, Integer period, Map cuMemberBonusMap, SaOrderExt saOrderExt, Map cuAwardsControlMap) { - List cuMemberBonusDetailList = new ArrayList<>(); - CuMemberSettleExt sourceMemberSettleExt = cuMemberSettleExtMap.get(saOrderExt.getPkMember()); - if (sourceMemberSettleExt == null) { - return cuMemberBonusDetailList; - } - sourceMemberSettleExt.setHiFunAmount(ComputeUtil.computeAdd(sourceMemberSettleExt.getHiFunAmount(), convertLocalCurrency(saOrderExt, bonusConfigDTO))); - sourceMemberSettleExt.setHiFunPv(ComputeUtil.computeAdd(sourceMemberSettleExt.getHiFunPv(), saOrderExt.getOrderAchieve())); - sourceMemberSettleExt.setHiFunNewAmount(ComputeUtil.computeAdd(sourceMemberSettleExt.getHiFunNewAmount(), convertLocalCurrency(saOrderExt, bonusConfigDTO))); - sourceMemberSettleExt.setHiFunNewPv(ComputeUtil.computeAdd(sourceMemberSettleExt.getHiFunNewPv(), saOrderExt.getOrderAchieve())); -// Map> bonusHiPinkDtoMap = bonusConfigDTO.getBonusHiPinkDtoMap(); - CuMemberSettleExt targetMemberSettleExt = cuMemberSettleExtMap.get(saOrderExt.getPkReference()); - // 找到最大的奖金 -// BigDecimal maxBonusValue = BigDecimal.ZERO; - BigDecimal maxBonusValue = BigDecimal.valueOf(187.5); - BigDecimal grantBonusValue = BigDecimal.ZERO; -// List bonusHiPinkDTOList = bonusHiPinkDtoMap.get(saOrderExt.getPkCountry()); -// for (BonusHiPinkDTO bonusHiPinkDTO : bonusHiPinkDTOList) { -// if (ComputeUtil.compareGreaterThan(bonusHiPinkDTO.getBonusValue(), maxBonusValue)) { -// maxBonusValue = bonusHiPinkDTO.getBonusValue(); -// } -// } -// BigDecimal income = BigDecimal.ZERO; - Integer gradeValue = EGrade.YOU_KE.getValue(); - while (targetMemberSettleExt != null && targetMemberSettleExt.getPkParent() != 0) { - // 嗨粉直推奖励的配置,从第一级开始获取 - targetMemberSettleExt = getCuMemberTree(cuMemberSettleExtMap, targetMemberSettleExt, gradeValue); - if (targetMemberSettleExt == null) { - break; - } - if (ECategory.NORMAL.getValue() != targetMemberSettleExt.getCategory() || EAccountStatus.STOP_INCOME.getValue() == targetMemberSettleExt.getAccountStatus() || - validatePkBonusItems(bonusConfigDTO, targetMemberSettleExt.getPkSettleCountry(), EBonusItems.HI_PINK.getValue())) { - targetMemberSettleExt = cuMemberSettleExtMap.get(targetMemberSettleExt.getPkParent()); - continue; - } - BigDecimal memberMaxBonusValue = BigDecimal.ZERO; - if (targetMemberSettleExt.getGradeValue() == EGrade.YOU_KE.getValue() || targetMemberSettleExt.getGradeValue() == EGrade.MAKER.getValue()) { - memberMaxBonusValue = BigDecimal.valueOf(125); - } else if (targetMemberSettleExt.getGradeValue() == EGrade.VIP.getValue()) { - memberMaxBonusValue = BigDecimal.valueOf(156.25); - } else if (targetMemberSettleExt.getGradeValue() == EGrade.S_VIP.getValue()) { - memberMaxBonusValue = BigDecimal.valueOf(187.5); - } - - CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, saOrderExt, targetMemberSettleExt); - BigDecimal bonusIncome = ComputeUtil.computeSubtract(memberMaxBonusValue, grantBonusValue); - if (ComputeUtil.compareValue(BigDecimal.ZERO, bonusIncome)) { - targetMemberSettleExt = cuMemberSettleExtMap.get(targetMemberSettleExt.getPkParent()); - continue; - } - // 直推奖金明细 - CuMemberBonusDetail cuMemberBonusDetail = getCuMemberBonusDetail(saOrderExt, targetMemberSettleExt, cuMemberBonus); - cuMemberBonusDetail.setPkBonusItems(getPkBonusItems(bonusConfigDTO, targetMemberSettleExt.getPkSettleCountry(), EBonusItems.HI_PINK.getValue())); - // 计算比例 - cuMemberBonusDetail.setCalValue(BigDecimal.ZERO); - cuMemberBonusDetail.setPretaxIncome(bonusIncome); - // 收益占比 - BdBonusDeduct bdBonusDeduct = setBonusDetailDeduct(bonusConfigDTO, cuMemberBonusDetail, saOrderExt.getOrderAmount(), saOrderExt.getInExchangeRate()); - hiFunRemark(saOrderExt, cuMemberBonusDetail, sourceMemberSettleExt, targetMemberSettleExt); - if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusDetail.getIncomeStatus()) { - cuMemberBonus.setHiFunIncome(ComputeUtil.computeAdd(cuMemberBonus.getHiFunIncome(), cuMemberBonusDetail.getPretaxIncome())); - setBonusDeduct(bdBonusDeduct, cuMemberBonus, cuMemberBonusDetail); - cuMemberBonus.setRealIncomeTotal(ComputeUtil.computeAdd(cuMemberBonus.getRealIncomeTotal(), cuMemberBonusDetail.getRealIncome())); - } - grantBonusValue = ComputeUtil.computeAdd(grantBonusValue, bonusIncome); - cuMemberBonusDetailList.add(cuMemberBonusDetail); - if (ComputeUtil.compareEqual(maxBonusValue, grantBonusValue)) { - break; - } else { - targetMemberSettleExt = cuMemberSettleExtMap.get(targetMemberSettleExt.getPkParent()); - } - } - return cuMemberBonusDetailList; - } - - /** - * 根据极差获取会员 - */ - private CuMemberSettleExt getCuMemberTree(Map cuMemberTreeMap, Map rangeDtoMap, - Map awardsMap, CuMemberSettleExt parentMemberTree, BonusHiPinkDTO bonusHiPinkDTO, Map cuAwardsControlMap) { - if (parentMemberTree == null) { - return null; - } - // 获取目标会员的极差配置信息 等级还是奖衔 - RangeDTO rangeDto = getRangeDto(rangeDtoMap, awardsMap, parentMemberTree, cuAwardsControlMap); - // 嗨粉直推奖励的配置,获取目标奖励的配置 - RangeDTO targetRangeDto = rangeDtoMap.get(bonusHiPinkDTO.getPkCountry().toString() + bonusHiPinkDTO.getRangeType() + bonusHiPinkDTO.getPkLevel()); - if (rangeDto == null || targetRangeDto == null) { - return null; - } - // 判断目标会员极差奖励,目标会员的极差等级不足 直推奖励的配置,取上一级,一直取到 目标会员的 极差等级>= 直推推荐奖励配置的 - if (rangeDto.getRangeValue() < targetRangeDto.getRangeValue()) { - parentMemberTree = cuMemberTreeMap.get(parentMemberTree.getPkParent()); - parentMemberTree = getCuMemberTree(cuMemberTreeMap, rangeDtoMap, awardsMap, parentMemberTree, bonusHiPinkDTO, cuAwardsControlMap); - } - return parentMemberTree; - } - - /** - * 根据极差获取会员 - */ - private CuMemberSettleExt getCuMemberTree(Map cuMemberTreeMap, CuMemberSettleExt parentMemberTree, Integer startGradeValue) { - if (parentMemberTree == null) { - return null; - } - // 判断目标会员极差奖励,目标会员的极差等级不足 直推奖励的配置,取上一级,一直取到 目标会员的 极差等级>= 直推推荐奖励配置的 - if (parentMemberTree.getGradeValue() < startGradeValue) { - parentMemberTree = cuMemberTreeMap.get(parentMemberTree.getPkParent()); - parentMemberTree = getCuMemberTree(cuMemberTreeMap, parentMemberTree, startGradeValue); - } - return parentMemberTree; - } - -} 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 b52549bd..5c71b068 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,7 +2,6 @@ package com.hzs.bonus.bonus.service.impl; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.ObjectUtil; -import com.hzs.bonus.achieve.service.ICuMemberRangeService; import com.hzs.bonus.achieve.service.ICuMemberRetailRangeService; import com.hzs.bonus.base.service.ICuMemberService; import com.hzs.bonus.bonus.vo.BonusRecordDetailVO; @@ -19,21 +18,17 @@ import com.hzs.common.core.utils.ComputeUtil; import com.hzs.common.core.utils.DateUtils; import com.hzs.common.domain.bonus.BdBonusDeduct; import com.hzs.common.domain.member.achieve.CuMemberSettlePeriod; -import com.hzs.common.domain.member.achieve.ext.CuMemberRangeExt; 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.CuMemberGrade; import com.hzs.common.domain.member.detail.CuMemberLevel; import com.hzs.common.domain.member.detail.CuMemberServiceLog; -import com.hzs.common.domain.member.ext.BdWaresBonusExt; import com.hzs.common.domain.sale.ext.SaOrderExt; -import com.hzs.common.domain.sale.ext.SaOrderItemsExt; import com.hzs.common.domain.sale.ext.SaOrderWaresExt; import com.hzs.common.domain.sale.order.SaOrder; import com.hzs.common.domain.system.config.BdAwards; import com.hzs.common.domain.system.config.BdGrade; -import com.hzs.common.domain.system.config.BdRangeAwards; import com.hzs.member.detail.ICuMemberServiceLogServiceApi; import com.hzs.system.config.dto.BonusConfigDTO; import lombok.extern.slf4j.Slf4j; @@ -54,8 +49,6 @@ import java.util.stream.Collectors; @Component public class BonusSettleRangeHandle extends BonusSettleHandle { - @Autowired - private ICuMemberRangeService iCuMemberRangeService; @Autowired private ICuMemberRetailRangeService iCuMemberRetailRangeService; @Autowired @@ -607,220 +600,6 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { } } - void calculateRangeEvBonus(Map cuMemberBonusMap, BonusConfigDTO bonusConfigDTO, Integer period, Map memberRangeExtMap, List cuMemberBonusPushList, List bdWaresBonusExtList, SaOrderExt saOrderExt) { - CuMemberRangeExt sourceMemberRangeExt = memberRangeExtMap.get(saOrderExt.getPkMember()); - if (ComputeUtil.compareValue(saOrderExt.getOrderAssAchieve(), BigDecimal.valueOf(15.625))) { - // 1= 自己购买了11单 2= 上3代拿 100 200 300 上3代各拿100 上11代各拿1100 - int specialWaresState = 0; - BdWaresBonusExt calWaresBonusExt = null; - for (SaOrderItemsExt saOrderItemsExt : saOrderExt.getOrderItemsExtList()) { - boolean flag = Boolean.FALSE; - if (bdWaresBonusExtList != null && bdWaresBonusExtList.size() > 0) { - for (BdWaresBonusExt bdWaresBonusExt : bdWaresBonusExtList) { - if (bdWaresBonusExt.getPkWares().equals(saOrderItemsExt.getPkWares())) { - specialWaresState = 2; - flag = Boolean.TRUE; - calWaresBonusExt = bdWaresBonusExt; - break; - } - } - } - if (flag) { - break; - } - } - if (specialWaresState > 0) { - if (specialWaresState == 2) { - sourceMemberRangeExt.setBuyEffectiveNum(sourceMemberRangeExt.getBuyEffectiveNum() + calWaresBonusExt.getTotalAlgebra()); - int algebra = 0; - for (BdWaresBonusItems bdWaresBonusItems : calWaresBonusExt.getBdWaresBonusItemsList()) { - CuMemberBonusPush cuMemberBonusPush = calculatePushBonusOne(sourceMemberRangeExt, memberRangeExtMap, bonusConfigDTO, period, cuMemberBonusMap, saOrderExt, - bdWaresBonusItems.getAlgebra() - algebra, bdWaresBonusItems.getAssAchieve(), cuMemberBonusPushList); - if (cuMemberBonusPush != null) { - sourceMemberRangeExt = memberRangeExtMap.get(cuMemberBonusPush.getPkBonus()); - algebra = bdWaresBonusItems.getAlgebra(); - } - } - } else { - sourceMemberRangeExt.setBuyEffectiveNum(sourceMemberRangeExt.getBuyEffectiveNum() + 11); - sourceMemberRangeExt.setFirstAgent(sourceMemberRangeExt.getFirstAgent() + 1); - setPushBonus(cuMemberBonusMap, bonusConfigDTO, period, memberRangeExtMap, saOrderExt, sourceMemberRangeExt, 1, sourceMemberRangeExt.getFirstAgent()); - } - } else { - sourceMemberRangeExt.setBuyEffectiveNum(sourceMemberRangeExt.getBuyEffectiveNum() + 1); -// if (EYesNo.NO.getIntValue() == sourceMemberRangeExt.getProvideState()) { -// sourceMemberRangeExt.setProvideState(EYesNo.YES.getIntValue()); -// targetMemberRangeExt.setEvEffectiveNum(targetMemberRangeExt.getEvEffectiveNum() + 1); -// } - calculatePushBonusOne(sourceMemberRangeExt, memberRangeExtMap, bonusConfigDTO, period, cuMemberBonusMap, saOrderExt, - sourceMemberRangeExt.getBuyEffectiveNum(), saOrderExt.getOrderAssAchieve(), cuMemberBonusPushList); - } - } - } - - private void setPushBonus(Map cuMemberBonusMap, BonusConfigDTO bonusConfigDTO, Integer period, Map memberRangeExtMap, SaOrderExt saOrderExt, CuMemberRangeExt sourceMemberRangeExt, - Integer round, Integer second) { - // 死点没有奖金,自身没有购买没有奖金 - if (ECategory.NORMAL.getValue() != sourceMemberRangeExt.getCategory() || EAccountStatus.STOP_INCOME.getValue() == sourceMemberRangeExt.getAccountStatus() || - sourceMemberRangeExt.getBuyEffectiveNum() <= 0 || EAssessStatus.EXAMINE_PASS.getValue() != sourceMemberRangeExt.getAssessStatus()) { - return; - } - if (validatePkBonusItems(bonusConfigDTO, sourceMemberRangeExt.getPkSettleCountry(), EBonusItems.HELP_EACH_INCOME.getValue())) { - return; - } - CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, sourceMemberRangeExt.getPkMember(), - sourceMemberRangeExt.getIncomeStatus(), sourceMemberRangeExt.getPkSettleCountry(), sourceMemberRangeExt.getPkRate()); - // 直推奖金明细 - int pkBonusItem = getPkBonusItems(bonusConfigDTO, sourceMemberRangeExt.getPkSettleCountry(), EBonusItems.HELP_EACH_INCOME.getValue()); - CuMemberBonusPush cuMemberBonusPush = getCuMemberBonusPush(saOrderExt, sourceMemberRangeExt, cuMemberBonus, pkBonusItem); - cuMemberBonusPush.setCalType(ECalType.VALUE.getValue()); - cuMemberBonusPush.setRound(round); - cuMemberBonusPush.setSecond(second); - cuMemberBonusPush.setCalAchieve(saOrderExt.getOrderAssAchieve()); - cuMemberBonusPush.setCalValue(BigDecimal.ONE); - cuMemberBonusPush.setPretaxIncome(saOrderExt.getOrderAssAchieve()); - BdBonusDeduct bdBonusDeduct = setBonusDetailDeduct(bonusConfigDTO, cuMemberBonusPush, saOrderExt.getOrderAmount(), saOrderExt.getInExchangeRate()); - recommendRangeRemark(saOrderExt, cuMemberBonusPush, memberRangeExtMap, sourceMemberRangeExt); - if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusPush.getIncomeStatus()) { - cuMemberBonus.setRepurPushIncome(ComputeUtil.computeAdd(cuMemberBonus.getRepurPushIncome(), cuMemberBonusPush.getPretaxIncome())); - setCloudTotal(bdBonusDeduct, cuMemberBonus, cuMemberBonusPush); - } - } - - private void packageRangeAwardsByType(List rangeAwardsList, Map consumeRangeAwardsMap, Map bloodRangeAwardsMap) { - for (BdRangeAwards bdRangeAwards : rangeAwardsList) { - if (ComputeUtil.compareValue(bdRangeAwards.getConsumePv())) { - consumeRangeAwardsMap.put(bdRangeAwards.getAwardsValue(), bdRangeAwards); - } - if (ComputeUtil.compareValue(bdRangeAwards.getTeamConsumeCheck())) { - bloodRangeAwardsMap.put(bdRangeAwards.getAwardsValue(), bdRangeAwards); - } - } - } - - /** - * 先计算奖衔,奖衔计算分为2种,先计算自己消费足够的,S1-S3,S4以上的另一种方式,自消费的只有购买人,其他的都是根据业绩,注意,有人可以直接是S4 - * 先验证团队业绩,小区业绩,验证小市场需要从上往下走 s1只能通过自消费,除了购买人其他人丛S2开始升级 - * 计算个人消费奖项 - */ - public List calculateConsumeRangeAwards(Integer period, Map> parentRangeExtMap, Map memberRangeExtMap, String rangeTableName, - CuMemberRangeExt sourceMemberRangeExt, SaOrderExt saOrderExt, - Map consumeRangeAwardsMap) { - int rangeAwardsValue = 2; - List cuMemberAwardsList = new ArrayList<>(); - while (consumeRangeAwardsMap.containsKey(sourceMemberRangeExt.getRangeAwardsValue() + rangeAwardsValue)) { - // 验证pv是否满足 - BdRangeAwards bdRangeAwards = consumeRangeAwardsMap.get(sourceMemberRangeExt.getRangeAwardsValue() + rangeAwardsValue); - if (ComputeUtil.compareValue(sourceMemberRangeExt.getTeamConsumePv(), bdRangeAwards.getTeamConsumeCheck()) && - ComputeUtil.compareValue(sourceMemberRangeExt.getConsumePv(), bdRangeAwards.getConsumePv())) { - // 去结算表种查询该会员下所有会员,会员团队业绩+消费业绩是业绩 计算小区业绩 团队业绩-小区业绩 验证小区、直推必有一种 - // 如果需要验证小区 - if (ComputeUtil.compareValue(bdRangeAwards.getCommunityCheck())) { - List cuMemberRangeExtList = iCuMemberRangeService.queryCuMemberRangeExtByParent(rangeTableName, sourceMemberRangeExt.getPkMember(), saOrderExt.getPayTime()); - // 需要验证团队业绩,小区业绩 - if (calculateAwards(parentRangeExtMap, memberRangeExtMap, sourceMemberRangeExt, bdRangeAwards, cuMemberRangeExtList, false)) { - break; - } - } - cuMemberAwardsList.add(getCuMemberAwards(sourceMemberRangeExt, period, saOrderExt, bdRangeAwards)); - sourceMemberRangeExt.setPkRangeAwards(bdRangeAwards.getPkId()); - sourceMemberRangeExt.setPkAwards(bdRangeAwards.getPkAwards()); - sourceMemberRangeExt.setRangeAwardsValue(bdRangeAwards.getAwardsValue()); - rangeAwardsValue += 2; - } else { - break; - } - } - // 当月有消费,修改为考核通过 - if (sourceMemberRangeExt.getMonthMember() == EYesNo.YES.getIntValue() && ComputeUtil.compareValue(sourceMemberRangeExt.getMonthPv())) { - sourceMemberRangeExt.setAssessStatus(EAssessStatus.EXAMINE_PASS.getValue()); - } - sourceMemberRangeExt.setConsumeStatus(EYesNo.YES.getIntValue()); - return cuMemberAwardsList; - } - - /** - * 计算团队极差奖衔 - */ - public List calculateBloodRangeAwards(Integer period, Map> parentRangeExtMap, Map memberRangeExtMap, String rangeTableName, SaOrderExt saOrderExt, - Map bloodRangeAwardsMap, long pkParent, String secondRangeTableName) { - // 计算血缘奖衔,一级一级升级,分为2段,s2、s3 一级,s3以上一级,先验证团队总业绩, - // 小市场先验证目前小市场加新增是否满足,满足计算,不满足不计算,不满足小市场先累计,算小市场,每天最终计算完毕重新计算S1以上小市场 - List cuMemberAwardsList = new ArrayList<>(); - CuMemberRangeExt sourceMemberRangeExt = memberRangeExtMap.get(saOrderExt.getPkMember()); - while (true) { - CuMemberRangeExt targetMemberRangeExt = memberRangeExtMap.get(pkParent); - if (targetMemberRangeExt == null) { - break; - } - // 无效会员不累计业绩,当月会员有消费,上月会员考核通过 - if (EYesNo.YES.getIntValue() == targetMemberRangeExt.getConsumeStatus()) { - targetMemberRangeExt.setTeamConsumeAmount(ComputeUtil.computeAdd(targetMemberRangeExt.getTeamConsumeAmount(), saOrderExt.getOrderAmount())); - targetMemberRangeExt.setTeamConsumePv(ComputeUtil.computeAdd(targetMemberRangeExt.getTeamConsumePv(), ComputeUtil.computeAdd(saOrderExt.getOrderAchieve(), saOrderExt.getOrderAssAchieve()))); - targetMemberRangeExt.setTeamMonthAmount(ComputeUtil.computeAdd(targetMemberRangeExt.getTeamMonthAmount(), saOrderExt.getOrderAmount())); - targetMemberRangeExt.setTeamMonthPv(ComputeUtil.computeAdd(targetMemberRangeExt.getTeamMonthPv(), ComputeUtil.computeAdd(saOrderExt.getOrderAchieve(), saOrderExt.getOrderAssAchieve()))); - targetMemberRangeExt.setNewTeamPv(ComputeUtil.computeAdd(targetMemberRangeExt.getNewTeamPv(), ComputeUtil.computeAdd(saOrderExt.getOrderAchieve(), saOrderExt.getOrderAssAchieve()))); - - sourceMemberRangeExt.setDeptTeamConsumeAmount(ComputeUtil.computeAdd(sourceMemberRangeExt.getDeptTeamConsumeAmount(), saOrderExt.getOrderAmount())); - sourceMemberRangeExt.setDeptTeamConsumePv(ComputeUtil.computeAdd(sourceMemberRangeExt.getDeptTeamConsumePv(), ComputeUtil.computeAdd(saOrderExt.getOrderAchieve(), saOrderExt.getOrderAssAchieve()))); - sourceMemberRangeExt.setDeptTeamMonthAmount(ComputeUtil.computeAdd(sourceMemberRangeExt.getDeptTeamMonthAmount(), saOrderExt.getOrderAmount())); - sourceMemberRangeExt.setDeptTeamMonthPv(ComputeUtil.computeAdd(sourceMemberRangeExt.getDeptTeamMonthPv(), ComputeUtil.computeAdd(saOrderExt.getOrderAchieve(), saOrderExt.getOrderAssAchieve()))); - sourceMemberRangeExt.setDeptNewTeamPv(ComputeUtil.computeAdd(sourceMemberRangeExt.getDeptNewTeamPv(), ComputeUtil.computeAdd(saOrderExt.getOrderAchieve(), saOrderExt.getOrderAssAchieve()))); - } - if (targetMemberRangeExt.getAssessStatus() == EAssessStatus.EXAMINE_PASS.getValue()) { - int rangeAwardsValue = 2; - while (bloodRangeAwardsMap.containsKey(targetMemberRangeExt.getRangeAwardsValue() + rangeAwardsValue)) { - // 验证pv是否满足 - BdRangeAwards bdRangeAwards = bloodRangeAwardsMap.get(targetMemberRangeExt.getRangeAwardsValue() + rangeAwardsValue); - if (ComputeUtil.compareValue(targetMemberRangeExt.getTeamConsumePv(), bdRangeAwards.getTeamConsumeCheck())) { - // 去结算表种查询该会员下所有会员,会员团队业绩+消费业绩是业绩 计算小区业绩 团队业绩-小区业绩 验证小区、直推必有一种 - List cuMemberRangeExtList; - if (secondRangeTableName != null) { - cuMemberRangeExtList = iCuMemberRangeService.querySecondCuMemberRangeExtByParent(rangeTableName, secondRangeTableName, targetMemberRangeExt.getPkMember()); - } else { - cuMemberRangeExtList = iCuMemberRangeService.queryCuMemberRangeExtByParent(rangeTableName, targetMemberRangeExt.getPkMember(), saOrderExt.getPayTime()); - } - if (cuMemberRangeExtList.size() > 0) { - if (calculateAwards(parentRangeExtMap, memberRangeExtMap, targetMemberRangeExt, bdRangeAwards, cuMemberRangeExtList, true)) { - break; - } - // 验证血缘部门,需要有几个部门大于考核等级,数据库验证一次, - // 当日的实时奖衔,这个位置直接在会员表中计算就可以 - if (bdRangeAwards.getPlaceNum() > 0) { - if (secondRangeTableName != null) { - iCuMemberRangeService.mergeSecondCuMemberRangeExt(secondRangeTableName, parentRangeExtMap.get(targetMemberRangeExt.getPkMember())); - // 验证 - Integer placeNum = iCuMemberRangeService.validateSecondCuMemberPlaceAwards(secondRangeTableName, cuMemberRangeExtList, bdRangeAwards.getCheckAwards()); - if (bdRangeAwards.getPlaceNum() > placeNum) { - break; - } - } else { - // 更新网体,更新伞下 - iCuMemberRangeService.mergeCuMemberRangeExt(rangeTableName, parentRangeExtMap.get(targetMemberRangeExt.getPkMember())); - // 验证 - Integer placeNum = iCuMemberRangeService.validateCuMemberPlaceAwards(rangeTableName, cuMemberRangeExtList, bdRangeAwards.getCheckAwards(), saOrderExt.getPayTime()); - if (bdRangeAwards.getPlaceNum() > placeNum) { - break; - } - } - } - } - cuMemberAwardsList.add(getCuMemberAwards(targetMemberRangeExt, period, saOrderExt, bdRangeAwards)); - targetMemberRangeExt.setPkRangeAwards(bdRangeAwards.getPkId()); - targetMemberRangeExt.setPkAwards(bdRangeAwards.getPkAwards()); - targetMemberRangeExt.setRangeAwardsValue(bdRangeAwards.getAwardsValue()); - rangeAwardsValue += 2; - continue; - } - break; - } - } - pkParent = targetMemberRangeExt.getPkParent(); - sourceMemberRangeExt = targetMemberRangeExt; - } - return cuMemberAwardsList; - } - /** * 计算团队极差奖衔 */ @@ -1227,93 +1006,6 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { } } - /** - * 计算奖衔,验证小区业绩和推荐数量是否满足 - */ - private boolean calculateAwards(Map> parentRangeExtMap, Map memberRangeExtMap, CuMemberRangeExt targetMemberRangeExt, BdRangeAwards bdRangeAwards, List cuMemberRangeExtList, Boolean isRecommend) { - BigDecimal bigAreaPv = BigDecimal.ZERO; - Integer recommendNum = 0; - for (CuMemberRangeExt cuMemberRangeExt : cuMemberRangeExtList) { - if (parentRangeExtMap.containsKey(cuMemberRangeExt.getPkParent())) { - parentRangeExtMap.get(cuMemberRangeExt.getPkParent()).add(cuMemberRangeExt); - } else { - List memberRangeExtList = new ArrayList<>(); - memberRangeExtList.add(cuMemberRangeExt); - parentRangeExtMap.put(cuMemberRangeExt.getPkParent(), memberRangeExtList); - } - if (memberRangeExtMap.containsKey(cuMemberRangeExt.getPkMember())) { - cuMemberRangeExt = memberRangeExtMap.get(cuMemberRangeExt.getPkMember()); - } - // 团队业绩+个人业绩 - BigDecimal validatePv = ComputeUtil.computeAdd(cuMemberRangeExt.getDeptTeamConsumePv(), cuMemberRangeExt.getConsumePv()); - if (ComputeUtil.compareValue(validatePv, bigAreaPv)) { - bigAreaPv = validatePv; - } - // 有效的,等级满足的算推荐数量、验证部门数量的 需要走语句 - if (cuMemberRangeExt.getAssessStatus() == EAssessStatus.EXAMINE_PASS.getValue() && bdRangeAwards.getCheckAwards() <= cuMemberRangeExt.getPkRangeAwards()) { - recommendNum += 1; - } - } - // 小区业绩 - BigDecimal communityCheck = ComputeUtil.computeSubtract(targetMemberRangeExt.getTeamConsumePv(), bigAreaPv); - // 验证小区,验证失败 - if (ComputeUtil.compareGreaterThan(bdRangeAwards.getCommunityCheck(), communityCheck)) { - return true; - } - // 验证推荐 - return isRecommend && bdRangeAwards.getRecommendNum() > recommendNum; - } - -// /* -// * 计算幸运奖,先计算有效代数,所有有效代数均分,比例10% -// * @author: sui q -// * @date: 2024/10/17 11:34 -// * @param: null null -// **/ -// List calculateLuckBonus(Map memberRangeExtMap, Map cuMemberBonusMap, BonusConfigDTO bonusConfigDTO, -// Integer period, SaOrderExt saOrderExt) { -// CuMemberRangeExt sourceMemberRangeExt = memberRangeExtMap.get(saOrderExt.getPkMember()); -// long pkParent = sourceMemberRangeExt.getPkParent(); -// int generation = 1; -// List memberBonusCoachList = new ArrayList<>(); -// // 计算代数 -// while (true) { -// CuMemberRangeExt targetMemberRangeExt = memberRangeExtMap.get(pkParent); -// if (targetMemberRangeExt == null) { -// generation--; -// break; -// } -// pkParent = targetMemberRangeExt.getPkParent(); -// if (ECategory.NORMAL.getValue() != targetMemberRangeExt.getCategory() || -// EAccountStatus.STOP_INCOME.getValue() == targetMemberRangeExt.getAccountStatus()) { -// continue; -// } -// // 验证推荐有效代数是否大于当前代数 -// if (targetMemberRangeExt.getEffectiveNum() >= generation && EAssessStatus.EXAMINE_PASS.getValue() == targetMemberRangeExt.getAssessStatus()) { -// getCuMemberBonus(period, cuMemberBonusMap, targetMemberRangeExt.getPkMember(), -// targetMemberRangeExt.getIncomeStatus(), targetMemberRangeExt.getPkSettleCountry(), targetMemberRangeExt.getPkRate()); -// CuMemberBonusCoach cuMemberBonusCoach = getCuMemberBonusCoach(bonusConfigDTO, saOrderExt, generation, targetMemberRangeExt); -// memberBonusCoachList.add(cuMemberBonusCoach); -// generation++; -// } -// } -// // 奖金 -// BigDecimal bonusRatio = ComputeUtil.computeDivide(BigDecimal.valueOf(10), BigDecimal.valueOf(generation)); -// for (CuMemberBonusCoach cuMemberBonusCoach : memberBonusCoachList) { -// cuMemberBonusCoach.setCoachGeneration(generation); -// cuMemberBonusCoach.setCalValue(bonusRatio); -// cuMemberBonusCoach.setPretaxIncome(ComputeUtil.computeBonusMultiply(cuMemberBonusCoach.getCalAchieve(), bonusRatio)); -// CuMemberRangeExt targetMemberRangeExt = memberRangeExtMap.get(cuMemberBonusCoach.getPkBonus()); -// CuMemberBonus cuMemberBonus = cuMemberBonusMap.get(cuMemberBonusCoach.getPkBonus()); -// BdBonusDeduct bdBonusDeduct = setBonusDetailDeduct(bonusConfigDTO, cuMemberBonusCoach, saOrderExt.getOrderAmount(), saOrderExt.getInExchangeRate()); -// coachRangeRemark(saOrderExt, cuMemberBonusCoach, sourceMemberRangeExt, targetMemberRangeExt); -// if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusCoach.getIncomeStatus()) { -// cuMemberBonus.setCloudDirectIncome(ComputeUtil.computeAdd(cuMemberBonus.getCloudDirectIncome(), cuMemberBonusCoach.getPretaxIncome())); -// setCloudTotal(bdBonusDeduct, cuMemberBonus, cuMemberBonusCoach); -// } -// } -// return memberBonusCoachList; -// } /** * 计算直推级差收益,根据直推级差收益计算平级收益 @@ -1688,117 +1380,6 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { return cuMemberBonusDetail; } - /** - * 计算某条订单的推荐奖金 - */ - CuMemberBonusPush calculatePushBonusOne(CuMemberRangeExt sourceMemberRangeExt, Map cuMemberRangeExtMap, BonusConfigDTO bonusConfigDTO, Integer period, Map cuMemberBonusMap, - SaOrderExt saOrderExt, int algebra, BigDecimal orderAssAchieve, List cuMemberBonusPushList) { - if (sourceMemberRangeExt == null) { - return null; - } - if (algebra >= 12) { - return null; - } - long pkParent = sourceMemberRangeExt.getPkParent(); - int i = 1; - while (true) { - CuMemberRangeExt targetMemberRangeExt = cuMemberRangeExtMap.get(pkParent); - if (targetMemberRangeExt == null) { - break; - } - pkParent = targetMemberRangeExt.getPkParent(); - if (i < algebra) { - i++; - continue; - } - // 死点没有奖金,自身没有购买没有奖金 - if (ECategory.NORMAL.getValue() != targetMemberRangeExt.getCategory() || EAccountStatus.STOP_INCOME.getValue() == targetMemberRangeExt.getAccountStatus() || - targetMemberRangeExt.getBuyEffectiveNum() <= 0 || EAssessStatus.EXAMINE_PASS.getValue() != targetMemberRangeExt.getAssessStatus()) { - // 记录烧伤记录 - targetMemberRangeExt.setIncomeStatus(EBonusIncomeStatus.FIRE_BURN.getValue()); - } - if (validatePkBonusItems(bonusConfigDTO, targetMemberRangeExt.getPkSettleCountry(), EBonusItems.HELP_EACH_INCOME.getValue())) { - continue; - } - CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, targetMemberRangeExt.getPkMember(), - targetMemberRangeExt.getIncomeStatus(), targetMemberRangeExt.getPkSettleCountry(), targetMemberRangeExt.getPkRate()); - // 直推奖金明细 - int pkBonusItem = getPkBonusItems(bonusConfigDTO, targetMemberRangeExt.getPkSettleCountry(), EBonusItems.HELP_EACH_INCOME.getValue()); - CuMemberBonusPush cuMemberBonusPush = getCuMemberBonusPush(saOrderExt, targetMemberRangeExt, cuMemberBonus, pkBonusItem); - cuMemberBonusPush.setCalType(ECalType.VALUE.getValue()); - // 前2代买的有特殊规则 - if (algebra == 1) { - // 第一代前三单需要自购一单,从第四单开始需要自动二单,需要验证是否买了第二单 - if (targetMemberRangeExt.getFirstAgent() >= 3 && targetMemberRangeExt.getBuyEffectiveNum() <= 1) { - continue; - } - targetMemberRangeExt.setFirstAgent(targetMemberRangeExt.getFirstAgent() + 1); - cuMemberBonusPush.setSecond(targetMemberRangeExt.getFirstAgent()); - } else if (algebra == 2) { - if (targetMemberRangeExt.getSecondAgent() < 3 && targetMemberRangeExt.getBuyEffectiveNum() <= 1) { - continue; - } else if (targetMemberRangeExt.getSecondAgent() >= 3 && targetMemberRangeExt.getBuyEffectiveNum() <= 2) { - continue; - } - targetMemberRangeExt.setSecondAgent(targetMemberRangeExt.getSecondAgent() + 1); - cuMemberBonusPush.setSecond(targetMemberRangeExt.getSecondAgent()); - } else { - if (targetMemberRangeExt.getBuyEffectiveNum() < algebra) { - continue; - } - cuMemberBonusPush.setSecond(-1); - } - cuMemberBonusPush.setRound(algebra); - cuMemberBonusPush.setCalAchieve(orderAssAchieve); - cuMemberBonusPush.setCalValue(BigDecimal.ONE); - cuMemberBonusPush.setPretaxIncome(orderAssAchieve); - BdBonusDeduct bdBonusDeduct = setBonusDetailDeduct(bonusConfigDTO, cuMemberBonusPush, saOrderExt.getOrderAmount(), saOrderExt.getInExchangeRate()); - recommendRangeRemark(saOrderExt, cuMemberBonusPush, cuMemberRangeExtMap, targetMemberRangeExt); - if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusPush.getIncomeStatus()) { - cuMemberBonus.setRepurPushIncome(ComputeUtil.computeAdd(cuMemberBonus.getRepurPushIncome(), cuMemberBonusPush.getPretaxIncome())); - setCloudTotal(bdBonusDeduct, cuMemberBonus, cuMemberBonusPush); - } - cuMemberBonusPushList.add(cuMemberBonusPush); - if (targetMemberRangeExt.getIncomeStatus() == EBonusIncomeStatus.NORMAL.getValue()) { - return cuMemberBonusPush; - } else { - cuMemberBonusPush.setSecond(-1); - } - } - return null; - } - - /** - * 计算服务中心奖 - */ - CuMemberBonusDetail calculateRangeStoreBonusOne(Map cuMemberRangeExtMap, CuMemberRangeExt targetMemberRangeExt, BonusConfigDTO bonusConfigDTO, Integer period, Map cuMemberBonusMap, SaOrderExt saOrderExt) { - CuMemberRangeExt sourceMemberRangeExt = cuMemberRangeExtMap.get(saOrderExt.getPkMember()); - if (targetMemberRangeExt == null || ECategory.NORMAL.getValue() != targetMemberRangeExt.getCategory() || EAccountStatus.STOP_INCOME.getValue() == targetMemberRangeExt.getAccountStatus() || - EAssessStatus.EXAMINE_PASS.getValue() != targetMemberRangeExt.getAssessStatus()) { - return null; - } - // 验证是否有奖金 - if (validatePkBonusItems(bonusConfigDTO, targetMemberRangeExt.getPkSettleCountry(), EBonusItems.STORE_INCOME.getValue())) { - return null; - } - CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, targetMemberRangeExt.getPkMember(), - targetMemberRangeExt.getIncomeStatus(), targetMemberRangeExt.getPkSettleCountry(), targetMemberRangeExt.getPkRate()); - CuMemberBonusDetail cuMemberBonusDetail = getCuMemberBonusDetail(saOrderExt, targetMemberRangeExt.getIncomeStatus(), targetMemberRangeExt.getPkSettleCountry(), cuMemberBonus); - BigDecimal serviceRadio = BigDecimal.valueOf(5); - // 计算比例 - cuMemberBonusDetail.setCalValue(serviceRadio); - cuMemberBonusDetail.setPkBonusItems(getPkBonusItems(bonusConfigDTO, targetMemberRangeExt.getPkSettleCountry(), EBonusItems.STORE_INCOME.getValue())); - cuMemberBonusDetail.setPretaxIncome(ComputeUtil.computeBonusMultiply(cuMemberBonusDetail.getCalAchieve(), serviceRadio)); - // 收益占比 - BdBonusDeduct bdBonusDeduct = setBonusDetailDeduct(bonusConfigDTO, cuMemberBonusDetail, saOrderExt.getOrderAmount(), saOrderExt.getInExchangeRate()); - rangeServiceRemark(saOrderExt, cuMemberBonusDetail, sourceMemberRangeExt, targetMemberRangeExt); - if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusDetail.getIncomeStatus()) { - cuMemberBonus.setStoreIncome(ComputeUtil.computeAdd(cuMemberBonus.getStoreIncome(), cuMemberBonusDetail.getPretaxIncome())); - setCloudTotal(bdBonusDeduct, cuMemberBonus, cuMemberBonusDetail); - } - return cuMemberBonusDetail; - } - /** * @param settleDateStr 结算日期 */ @@ -1831,9 +1412,11 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { // 月订单列表 List totalMonthOrderList = new ArrayList<>(); - // 级差收益(月度级差、复购级差) + // 级差收益(福利级差、复购级差) List memberBonusRangeList = new ArrayList<>(); - // 分红收益 + // 培训津贴 + List memberBonusCoachList = new ArrayList<>(); + // 月度分红收益 List memberBonusDetailList = new ArrayList<>(); // 当前年月 String month = DateUtils.getMonth(settleDateStr); @@ -1891,6 +1474,8 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { List saOrders = orderMap.get(systemType); // 月所有订单业绩(注册、升级、复购) BigDecimal totalMonthConsumePv = BigDecimal.ZERO; + // 订单对应map + Map saOrderMap = new HashMap<>(); // new 两个月奖 // 月度级差:注册、升级订单,从自己开始往上算,最多拨出10代(紧缩) @@ -1898,6 +1483,8 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { for (SaOrder saOrder : saOrders) { // 累计订单业绩 totalMonthConsumePv = ComputeUtil.computeAdd(totalMonthConsumePv, saOrder.getOrderAchieve()); + // 封装订单map + saOrderMap.put(saOrder.getPkId(), saOrder); if (EOrderType.RETAIL_REGISTER.getValue() == saOrder.getOrderType() || EOrderType.RETAIL_UPGRADE.getValue() == saOrder.getOrderType()) { @@ -1925,7 +1512,8 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { } // 当前会员奖衔级差比例 BigDecimal targetRangeRatio = targetMemberRangeExt.getRangeRatio(); - if ((targetMemberRangeExt.getPkMember().equals(saOrder.getPkMember()) && ComputeUtil.compareValue(rangeRatio)) + if ((targetMemberRangeExt.getPkMember().equals(saOrder.getPkMember()) + && ComputeUtil.compareValue(rangeRatio)) || ComputeUtil.compareGreaterThan(targetRangeRatio, rangeRatio)) { // 第一代是自己 并且 级差比例大于0 或者 级差比例大于前一代会员的奖衔级差比例 // 计算极差 @@ -2013,6 +1601,87 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { } } + // 培育津贴 + if (CollectionUtil.isNotEmpty(memberBonusRangeList)) { + for (CuMemberBonusRange cuMemberBonusRange : memberBonusRangeList) { + // 第一代开始 + int i = MagicNumberConstants.BLOOD_GENERATION_START; + // 推荐人 + Long pkMember = memberRangeExtMap.get(cuMemberBonusRange.getPkBonus()).getPkParent(); + // 提供奖金会员 + CuMemberRetailRangeExt sourceMemberRetailExt = memberRangeExtMap.get(cuMemberBonusRange.getPkBonus()); + // 级差所产生的培育津贴列表 + List rangeBonusCoachList = new ArrayList<>(); + // 最多发十代 + while (i <= MagicNumberConstants.BLOOD_GENERATION_END) { + // 当前需要拿奖金的会员 + CuMemberRetailRangeExt targetMemberRetailExt = memberRangeExtMap.get(pkMember); + if (null == targetMemberRetailExt) { + break; + } + pkMember = targetMemberRetailExt.getPkParent(); + + if (EAccountStatus.STOP_INCOME.getValue() == targetMemberRetailExt.getAccountStatus() + || ECategory.NORMAL.getValue() != targetMemberRetailExt.getCategory() + || targetMemberRetailExt.getGradeValue() != EGrade.S_VIP.getValue() + || targetMemberRetailExt.getEnableStatus() == EYesNo.NO.getIntValue() + || EIncomeStatus.STOP_INCOME.getValue() == targetMemberRetailExt.getIncomeStatus()) { + // 停算收益、非正常会员、未激活、等级不为合伙人、停止收益,直接跳过 + continue; + } + + if (validatePkBonusItems(bonusConfigDTO, targetMemberRetailExt.getPkSettleCountry(), EBonusItems.RETAIL_COACHING_INCOME.getValue())) { + // 校验当前国家是否有该奖项 + continue; + } + + // 奖金订单 + SaOrder saOrder = saOrderMap.get(cuMemberBonusRange.getPkOrder()); + if (null == saOrder) { + log.warn("培育津贴因订单为空跳过, cuMemberBonusRange: {}", cuMemberBonusRange); + continue; + } + + // 获取奖衔能拿多少代领导奖的奖衔值 + Integer awardsValue = targetMemberRetailExt.getCoachAlgebra(); + + // 判断是否有奖金 + if (awardsValue >= i) { + // 培育津贴比例 + BigDecimal awardCalRadio = targetMemberRetailExt.getCoachRatio(); + // 生成培育津贴明细 + CuMemberBonusCoach cuMemberBonusCoach = getCuMemberBonusCoach(bonusConfigDTO, cuMemberBonusRange, i, targetMemberRetailExt, awardCalRadio); + // 获取会员奖金数据 + CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, targetMemberRetailExt.getPkMember(), + targetMemberRetailExt.getIncomeStatus(), targetMemberRetailExt.getPkSettleCountry(), targetMemberRetailExt.getPkRate()); + + // 收益占比 + BdBonusDeduct bdBonusDeduct = setBonusDetailDeduct(bonusConfigDTO, cuMemberBonusCoach, saOrder.getOrderAmount(), BigDecimal.ONE); + retailCoachRemark(saOrder, cuMemberBonusCoach, sourceMemberRetailExt, targetMemberRetailExt); + + if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusCoach.getIncomeStatus()) { + cuMemberBonus.setCoachIncome(ComputeUtil.computeAdd(cuMemberBonus.getCoachIncome(), cuMemberBonusCoach.getPretaxIncome())); + setRetailTotal(bdBonusDeduct, cuMemberBonus, cuMemberBonusCoach); + } + rangeBonusCoachList.add(cuMemberBonusCoach); + + // 这一代领导奖计算完,计算代数加1 + i++; + } + } + + if (rangeBonusCoachList.size() > 0) { + // 共多少代 + --i; + for (CuMemberBonusCoach cuMemberBonusCoach : rangeBonusCoachList) { + cuMemberBonusCoach.setCoachGeneration(i); + cuMemberBonusCoach.setRemark(cuMemberBonusCoach.getRemark().replace("#", cuMemberBonusCoach.getCoachGeneration().toString())); + memberBonusCoachList.add(cuMemberBonusCoach); + } + } + } + } + // 查询 v5 等级 且 分红奖衔 >= S4 List memberRetailRangeExtList = iCuMemberRetailRangeService.batchQueryMemberRetailRangeByAwards(rangeTableName); if (memberRetailRangeExtList.size() > 0) { @@ -2141,6 +1810,13 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { bonusRecordDetailVO.getCuMemberBonusDetailList().addAll(memberBonusDetailList); } } + if (memberBonusCoachList.size() > 0) { + if (bonusRecordDetailVO.getCuMemberBonusCoachList() == null) { + bonusRecordDetailVO.setCuMemberBonusCoachList(memberBonusCoachList); + } else { + bonusRecordDetailVO.getCuMemberBonusCoachList().addAll(memberBonusCoachList); + } + } if (memberBonusRangeList.size() > 0) { if (bonusRecordDetailVO.getCuMemberBonusRangeList() == null) { bonusRecordDetailVO.setCuMemberBonusRangeList(memberBonusRangeList); @@ -2183,46 +1859,25 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { return cuMemberBonusDetail; } - CuMemberBonusPush getCuMemberBonusPush(SaOrderExt saOrderExt, CuMemberRangeExt cuMemberRangeExt, CuMemberBonus cuMemberBonus, Integer pkBonusItems) { - CuMemberBonusPush cuMemberBonusPush = CuMemberBonusPush.builder() - .pkOrder(saOrderExt.getPkId()) - .pkBonus(cuMemberBonus.getPkId()) - .pkBonusItems(pkBonusItems) - // 正常还是烧伤 - .incomeStatus(cuMemberRangeExt.getIncomeStatus()) - .calType(ECalType.RATIO.getValue()) - .pretaxIncome(BigDecimal.ZERO) - .incomeTax(BigDecimal.ZERO) - .realIncome(BigDecimal.ZERO) - .incomeRatio(BigDecimal.ZERO) - .incomeDialRatio(BigDecimal.ZERO) - .orderDialRatio(BigDecimal.ZERO) - .round(-1) - .second(-1) - .build(); - cuMemberBonusPush.setPkCountry(cuMemberRangeExt.getPkSettleCountry()); - cuMemberBonusPush.setPkCreator(MagicNumberConstants.PK_ADMIN); - return cuMemberBonusPush; - } - protected CuMemberBonusCoach getCuMemberBonusCoach(BonusConfigDTO bonusConfigDTO, SaOrderExt saOrderExt, - int i, CuMemberRangeExt targetMemberRangeExt) { + protected CuMemberBonusCoach getCuMemberBonusCoach(BonusConfigDTO bonusConfigDTO, CuMemberBonusRange cuMemberBonusRange, + int i, CuMemberRetailRangeExt targetMemberRangeExt, BigDecimal awardCalRadio) { CuMemberBonusCoach cuMemberBonusCoach = CuMemberBonusCoach.builder() .pkBonus(targetMemberRangeExt.getPkMember()) - .pkOrder(saOrderExt.getPkId()) - .pkBonusItems(getPkBonusItems(bonusConfigDTO, targetMemberRangeExt.getPkSettleCountry(), EBonusItems.CLOUD_AGENT_DIRECT_PUSH.getValue())) - .calType(ECalType.RATIO.getValue()) + .pkOrder(cuMemberBonusRange.getPkOrder()) + .pkBonusItems(getPkBonusItems(bonusConfigDTO, targetMemberRangeExt.getPkSettleCountry(), EBonusItems.RETAIL_COACHING_INCOME.getValue())) .incomeStatus(targetMemberRangeExt.getIncomeStatus()) - .calAchieve(saOrderExt.getOrderAchieve()) + .calType(ECalType.RATIO.getValue()) + .calAchieve(cuMemberBonusRange.getCalAchieve()) .currentGeneration(i) // 计算比例 - .calValue(BigDecimal.ZERO) + .calValue(awardCalRadio) .incomeTax(BigDecimal.ZERO) .realIncome(BigDecimal.ZERO) .incomeRatio(BigDecimal.ZERO) .incomeDialRatio(BigDecimal.ZERO) .orderDialRatio(BigDecimal.ZERO) - .pretaxIncome(BigDecimal.ZERO) + .pretaxIncome(ComputeUtil.computeBonusMultiply(cuMemberBonusRange.getPretaxIncome(), awardCalRadio)) .coachNoCapping(BigDecimal.ZERO) .coachCapping(BigDecimal.ZERO) .coachNormalHalf(BigDecimal.ZERO) @@ -2236,10 +1891,10 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { private CuMemberBonusRange getCuMemberRetailBonusRange(SaOrder saOrderExt, CuMemberRetailRangeExt targetMemberRangeExt, CuMemberBonus cuMemberBonus, Integer pkBonusItems) { CuMemberBonusRange cuMemberBonusRange = CuMemberBonusRange.builder() + .pkBonus(cuMemberBonus.getPkId()) .incomeStatus(targetMemberRangeExt.getIncomeStatus()) .pkOrder(saOrderExt.getPkId()) .pkBonusItems(pkBonusItems) - .pkBonus(cuMemberBonus.getPkId()) .calAchieve(saOrderExt.getOrderAchieve()) .calType(ECalType.VALUE.getValue()) .calValue(BigDecimal.ZERO) @@ -2252,25 +1907,6 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { return cuMemberBonusRange; } - private CuMemberAwards getCuMemberAwards(CuMemberRangeExt sourceRangeExt, Integer period, SaOrderExt saOrderExt, BdRangeAwards bdRangeAwards) { - CuMemberAwards cuMemberAwards = CuMemberAwards.builder() - .pkMember(sourceRangeExt.getPkMember()) - .period(period) - .upType(EUpgradeType.AUTO_UPGRADE.getValue()) - // 原等级 - .oldLevel(sourceRangeExt.getPkRangeAwards()) - .newLevel(bdRangeAwards.getPkId()) - // 默认不免考 - .purchaseStatus(EYesNo.NO.getIntValue()) - .pkOrder(saOrderExt.getPkId()) - .systemType(1) - .build(); - cuMemberAwards.setPkCreator(MagicNumberConstants.PK_ADMIN); - cuMemberAwards.setPkCountry(saOrderExt.getPkCountry()); - cuMemberAwards.setCreationTime(saOrderExt.getPayTime()); - return cuMemberAwards; - } - private CuMemberAwards getCuMemberRetailAwards(CuMemberRetailRangeExt sourceRangeExt, Integer period, SaOrderExt saOrderExt, BdAwards bdRangeAwards, Integer awardType, Integer oldLevel) { CuMemberAwards cuMemberAwards = CuMemberAwards.builder() diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettleRepCouponsHandle.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettleRepCouponsHandle.java deleted file mode 100644 index 93cbde50..00000000 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettleRepCouponsHandle.java +++ /dev/null @@ -1,116 +0,0 @@ -package com.hzs.bonus.bonus.service.impl; - -import cn.hutool.core.collection.CollectionUtil; -import com.hzs.activity.base.IActivityServiceApi; -import com.hzs.common.core.domain.R; -import com.hzs.common.core.enums.EBonusIncomeStatus; -import com.hzs.common.core.enums.EBonusItems; -import com.hzs.common.core.enums.ECalType; -import com.hzs.common.core.utils.ComputeUtil; -import com.hzs.common.domain.activity.recommend.AcRepurCouponsRuleConfig; -import com.hzs.common.domain.bonus.BdBonusDeduct; -import com.hzs.common.domain.member.bonus.CuMemberBonus; -import com.hzs.common.domain.member.bonus.CuMemberBonusDetail; -import com.hzs.common.domain.member.ext.CuMemberSettleExt; -import com.hzs.common.domain.sale.ext.SaOrderExt; -import com.hzs.system.config.dto.BonusConfigDTO; -import org.apache.dubbo.config.annotation.DubboReference; -import org.springframework.stereotype.Component; - -import java.util.*; - -/** - * @description: 用于计算复购券收益、复购券均分收益 - * @author: sui q - * @time: 2023/4/28 16:12 - * @classname: BonusSettleRepCouponsHandle - * @package_name: com.hzs.member.bonus.service.impl - * version 1.0.0 - */ -@Component -public class BonusSettleRepCouponsHandle extends BonusSettleHandle { - - @DubboReference - private IActivityServiceApi activityServiceApi; - - /* - * @description: 计算复购券收益 - * @author: sui q - * @date: 2023/4/28 16:11 - * @param: null null - **/ - List calculateRepurchaseCoupons(Date settleDate, List firPurchaseOrderList, Integer period, BonusConfigDTO bonusConfigDTO, Map cuMemberBonusMap, Map cuMemberSettleExtMap) { - // 查询复购券发放规则 - R> acRepurchaseCouponsRule = activityServiceApi.queryAcRepurchaseCouponsRule(settleDate); - List cuMemberBonusDetailList = new ArrayList<>(); - if (acRepurchaseCouponsRule.isSuccess()) { - List repurCouponsRuleConfigList = acRepurchaseCouponsRule.getData(); - if (CollectionUtil.isNotEmpty(repurCouponsRuleConfigList)) { - Map>> couponsMap = new HashMap<>(); - for (AcRepurCouponsRuleConfig acRepurCouponsRuleConfig : repurCouponsRuleConfigList) { - String key = acRepurCouponsRuleConfig.getPkCountry().toString() + "_" + acRepurCouponsRuleConfig.getOrderType(); - if (couponsMap.containsKey(key)) { - Map> couponsListMap = couponsMap.get(key); - if (couponsListMap.containsKey(acRepurCouponsRuleConfig.getPkBaseId())) { - couponsListMap.get(acRepurCouponsRuleConfig.getPkBaseId()).add(acRepurCouponsRuleConfig); - } else { - List acRepurCouponsRuleConfigList = new ArrayList<>(); - acRepurCouponsRuleConfigList.add(acRepurCouponsRuleConfig); - couponsListMap.put(acRepurCouponsRuleConfig.getPkBaseId(), acRepurCouponsRuleConfigList); - } - } else { - Map> couponsListMap = new HashMap<>(); - List acRepurCouponsRuleConfigList = new ArrayList<>(); - acRepurCouponsRuleConfigList.add(acRepurCouponsRuleConfig); - couponsListMap.put(acRepurCouponsRuleConfig.getPkBaseId(), acRepurCouponsRuleConfigList); - couponsMap.put(key, couponsListMap); - } - } - // 查询订单 - for (SaOrderExt saOrderExt : firPurchaseOrderList) { - CuMemberSettleExt sourceMemberSettleExt = cuMemberSettleExtMap.get(saOrderExt.getPkMember()); - if (sourceMemberSettleExt == null) { - continue; - } - String key = saOrderExt.getPkCountry().toString() + "_" + saOrderExt.getOrderType(); - if (couponsMap.containsKey(key)) { - // 计算复购券收益 - Map> couponsListMap = couponsMap.get(key); - for (Long pkBaseId : couponsListMap.keySet()) { - for (AcRepurCouponsRuleConfig acRepurCouponsRuleConfig : couponsListMap.get(pkBaseId)) { - if (ComputeUtil.compareValue(saOrderExt.getOrderAchieve(), acRepurCouponsRuleConfig.getOrderAchieve())) { - // 获得奖金 - CuMemberSettleExt targetMemberSettleExt = cuMemberSettleExtMap.get(saOrderExt.getPkReference()); - if (targetMemberSettleExt == null || validatePkBonusItems(bonusConfigDTO, targetMemberSettleExt.getPkSettleCountry(), EBonusItems.REPURCHASE_COUPONS.getValue())) { - continue; - } - CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, saOrderExt, targetMemberSettleExt); - CuMemberBonusDetail cuMemberBonusDetail = getCuMemberBonusDetail(saOrderExt, targetMemberSettleExt, cuMemberBonus); - // 计算类型 - cuMemberBonusDetail.setCalType(acRepurCouponsRuleConfig.getRatioType()); - // 计算值 - cuMemberBonusDetail.setCalValue(acRepurCouponsRuleConfig.getRatioValue()); - cuMemberBonusDetail.setPkBonusItems(getPkBonusItems(bonusConfigDTO, targetMemberSettleExt.getPkSettleCountry(), EBonusItems.REPURCHASE_COUPONS.getValue())); - if (ECalType.RATIO.getValue() == cuMemberBonusDetail.getCalType()) { - cuMemberBonusDetail.setPretaxIncome(ComputeUtil.computeBonusMultiply(saOrderExt.getOrderAchieve(), acRepurCouponsRuleConfig.getRatioValue())); - } else { - cuMemberBonusDetail.setPretaxIncome(acRepurCouponsRuleConfig.getRatioValue()); - } - BdBonusDeduct bdBonusDeduct = setBonusDetailDeduct(bonusConfigDTO, cuMemberBonusDetail, saOrderExt.getOrderAmount(), saOrderExt.getInExchangeRate()); - if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusDetail.getIncomeStatus()) { - cuMemberBonus.setRepurCoupon(ComputeUtil.computeAdd(cuMemberBonus.getRepurCoupon(), cuMemberBonusDetail.getPretaxIncome())); - setRepurchaseCouponTotal(bdBonusDeduct, cuMemberBonus, cuMemberBonusDetail); - } - repurchaseCouponsRemark(saOrderExt, cuMemberBonusDetail, sourceMemberSettleExt, targetMemberSettleExt); - cuMemberBonusDetailList.add(cuMemberBonusDetail); - break; - } - } - } - } - } - } - } - return cuMemberBonusDetailList; - } -} 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 7b76195e..650747c8 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 @@ -129,12 +129,12 @@ public class BonusSettleServiceImpl implements IBonusSettleService { // TODO new 每月1号,需要计算4个月奖 if (EEnv.TEST.getValue().equals(BdConfig.getEnv())) { // 测试环境,每天都执行 - // 计算新零售团队区域、福利、福利分红奖金 + // 计算新零售团队福利、福利分红等奖金 bonusSettleRangeHandle.calculateRetailShareBonus(settleDate, bonusConfigDTO, period, recordDetailVO, cuMemberBonusMap); } else { // 非测试环境 if (settleDate.endsWith("01")) { - // 计算新零售团队区域、福利、福利分红奖金 + // 计算新零售团队福利、福利分红等奖金 bonusSettleRangeHandle.calculateRetailShareBonus(settleDate, bonusConfigDTO, period, recordDetailVO, cuMemberBonusMap); } } diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/vo/BonusRecordDetailVO.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/vo/BonusRecordDetailVO.java index 24f41aa0..607534f7 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/vo/BonusRecordDetailVO.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/vo/BonusRecordDetailVO.java @@ -18,27 +18,27 @@ public class BonusRecordDetailVO implements Serializable { private Long pkMember; /** - * 推荐奖 + * */ private List cuMemberBonusPushList; /** - * 量奖、复购量奖 + * */ private List cuMemberBonusExpandList; /** - * 辅导奖 + * 新零售 - 培育津贴 */ private List cuMemberBonusCoachList; /** - * 服务奖 嗨粉推荐奖金 创客空间直推 创客空间分享 + * 新零售 - 区域分红、月度分红 */ private List cuMemberBonusDetailList; /** - * 复购极差 + * 新零售 - 直推收益、平级收益、福利级差、复购级差 */ private List cuMemberBonusRangeList; } diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/detail/mapper/CuMemberAssessMapper.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/detail/mapper/CuMemberAssessMapper.java index 87f0a829..e483d22f 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/detail/mapper/CuMemberAssessMapper.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/detail/mapper/CuMemberAssessMapper.java @@ -2,69 +2,18 @@ package com.hzs.bonus.detail.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.hzs.common.domain.member.detail.CuMemberAssess; -import com.hzs.common.domain.member.ext.CuMemberAssessExt; -import com.hzs.bonus.detail.vo.CuMemberAssessVO; import org.apache.ibatis.annotations.Param; import java.util.Date; import java.util.List; /** - *

* 会员信息-会员考核记录 Mapper 接口 - *

- * - * @author hzs - * @since 2022-08-31 */ public interface CuMemberAssessMapper extends BaseMapper { - /** - * 创建每年的会员考核表 - * - * @param tableName 表名 - * @return: void - * @Author: sui q - * @Date: 2022/11/7 14:10 - */ - void createCuMemberAssessTable(String tableName); - - /** - * 创建会员网体推荐人索引 - * - * @param tableName 日期 - * @return: void - * @Author: sui q - * @Date: 2022/10/31 13:32 - */ - void createCuMemberTableUniqueIndex(String tableName); - - /** - * 创建表注释 - * - * @param tableName 表名 - * @return: void - * @Author: sui q - * @Date: 2022/11/9 16:25 - */ - void createCuMemberAssessTableComment(String tableName); - - /** - * 查询表中是否存在数据 - * - * @param tableName 表名 - * @param period 期间 - * @return: Integer - * @Author: sui q - * @Date: 2022/11/7 14:31 - */ - Integer queryCuMemberAssessCount(@Param("tableName") String tableName, @Param("period") Integer period); - /* - * @description: 清空表数据 - * @author: sui q - * @date: 2023/5/25 10:45 - * @param: null null + * 清空表数据 **/ void deleteCuMemberAssessByPeriod(@Param("tableName") String tableName, @Param("period") Integer period); @@ -75,9 +24,6 @@ public interface CuMemberAssessMapper extends BaseMapper { * @param sourceTableName 来源表,用哪个表进行更新 * @param period 期间 * @param month 考核月份 - * @return: Integer - * @Author: sui q - * @Date: 2022/11/7 14:33 */ Integer insertRepCuMemberAssess(@Param("tableName") String tableName, @Param("sourceTableName") String sourceTableName, @Param("period") Integer period, @Param("month") String month); @@ -89,22 +35,9 @@ public interface CuMemberAssessMapper extends BaseMapper { * @param sourceTableName 来源表,用哪个表进行更新 * @param period 期间 * @param month 考核月份 - * @return: Integer - * @Author: sui q - * @Date: 2022/11/7 14:33 */ Integer insertRepCuMemberRangeAssess(@Param("tableName") String tableName, @Param("sourceTableName") String sourceTableName, - @Param("period") Integer period, @Param("month") String month); - - /** - * 将撤单的数据插入临时表中,通过临时表进行批量更新 - * - * @param cuMemberAssessesList 考核数据 - * @return: Integer - * @Author: sui q - * @Date: 2022/11/9 14:30 - */ - Integer insertTmpCuMemberAssess(@Param("cuMemberAssessesList") List cuMemberAssessesList); + @Param("period") Integer period, @Param("month") String month); /** * 更新会员复购考核业绩 @@ -114,9 +47,6 @@ public interface CuMemberAssessMapper extends BaseMapper { * @param sourcePeriod 来源结算期 * @param period 结算结算期间 * @param assessType 考核类型 0=复购考核 1=分红考核 - * @return: Integer - * @Author: sui q - * @Date: 2022/11/7 17:55 */ Integer updateAssessPeriodBeginByBeforeMonth(@Param("beforeTableName") String beforeTableName, @Param("tableName") String tableName, @Param("sourcePeriod") Integer sourcePeriod, @@ -131,9 +61,6 @@ public interface CuMemberAssessMapper extends BaseMapper { * @param startDate 开始时间 * @param endDate 结束时间 * @param orderTypeList 订单类型 - * @return: Integer - * @Author: sui q - * @Date: 2022/11/8 9:21 */ Integer updateAssessPeriodAddBySaOrder(@Param("tableName") String tableName, @Param("period") Integer period, @Param("assessType") Integer assessType, @Param("startDate") Date startDate, @@ -146,9 +73,6 @@ public interface CuMemberAssessMapper extends BaseMapper { * * @param tableName 表名 * @param period 期间 - * @return: Integer - * @Author: sui q - * @Date: 2022/11/8 10:32 */ Integer updateAssessPeriodExemptBalanceByUsed(@Param("tableName") String tableName, @Param("period") Integer period); @@ -160,9 +84,6 @@ public interface CuMemberAssessMapper extends BaseMapper { * @param period 期间 * @param startDate 开始日期 * @param endDate 结束日期 - * @return: Integer - * @Author: sui q - * @Date: 2022/11/8 19:17 */ Integer updateAssessCuMemberToRepExempt(@Param("tableName") String tableName, @Param("settleTableName") String settleTableName, @Param("period") Integer period, @Param("startDate") Date startDate, @Param("endDate") Date endDate, @@ -174,9 +95,6 @@ public interface CuMemberAssessMapper extends BaseMapper { * @param settleTableName 每日结算表 * @param startDate 开始日期 * @param endDate 结束日期 - * @return: Integer - * @Author: sui q - * @Date: 2022/11/8 19:17 */ Integer updateCuMemberSettleToRepExempt(@Param("settleTableName") String settleTableName, @Param("startDate") Date startDate, @Param("endDate") Date endDate, @Param("startPeriod") Integer startPeriod, @@ -186,97 +104,9 @@ public interface CuMemberAssessMapper extends BaseMapper { * 更新考核表,更新复购考核状态为免考,首次注册、首次晋升的会员,更新结算网体 * * @param settleTableName 每日结算表 - * @return: Integer - * @Author: sui q - * @Date: 2022/11/8 19:17 */ Integer updateAllCuMemberSettleToRepExempt(@Param("settleTableName") String settleTableName); - /** - * 更新考核表,更新分红考核状态为免考,根据上一期的考核数据 - * - * @param tableName 需要更新的会员考核表名 - * @param settleTableName 每日结算表 - * @param period 期间 - * @return: Integer - * @Author: sui q - * @Date: 2022/11/8 19:17 - */ - Integer updateAssessCuMemberToShareExempt(@Param("tableName") String tableName, @Param("settleTableName") String settleTableName, - @Param("period") Integer period); - - /** - * 根据临时表中的订单撤单数据进行回写数据 - * - * @param tableName 表名 - * @return: Integer - * @Author: sui q - * @Date: 2022/11/9 15:00 - */ - Integer updateAssessPeriodByRevokeOrder(@Param("tableName") String tableName); - - /** - * 查询出考核表中某一期免考的会员 - * - * @param tableName 表名 - * @param period 期间 - * @return: Integer - * @Author: sui q - * @Date: 2022/11/9 9:09 - */ - List queryExemptAssessCuMember(@Param("tableName") String tableName, @Param("period") Integer period); - - /** - * 查询期间满足会员考核的数据,需要回填明细 - * - * @param tableName 表名 - * @param period 会员期间 - * @return: List - * @Author: sui q - * @Date: 2022/11/8 10:51 - */ - List queryEnoughCuMemberAssess(@Param("tableName") String tableName, @Param("period") Integer period); - - /** - * 发生过撤单的数据,需要变更考核月新增,进行重新考核,撤单可以存在撤奖衔,需要查询目标金额 - * - * @param tableName 表名 - * @param settleTableName 每日结算表 - * @param period 期间 - * @param saOrderList 根据撤单数据过来的订单 - * @return: List - * @Author: sui q - * @Date: 2022/11/9 11:24 - */ - List queryAssessPeriodByRevokeOrder(@Param("tableName") String tableName, @Param("settleTableName") String settleTableName, - @Param("period") Integer period, @Param("saOrderList") List saOrderList); - - /** - * 根据会员主键查询考核结果,只查询出来考核通过的会员 - * - * @param tableName 表名 - * @param period 期间 - * @param assessType 考核类型 - * @param cuMemberSettleExtList 会员列表 - * @return: List - * @Author: sui q - * @Date: 2022/11/16 19:13 - */ - List queryCuMemberAssessByMember(@Param("tableName") String tableName, @Param("period") Integer period, - @Param("assessType") Integer assessType, - @Param("cuMemberSettleExtList") List cuMemberSettleExtList); - - /** - * 查询会员分红考核结果,只查询出免考或者考核通过的,用于分红 - * - * @param tableName 表名 - * @param period 期间 - * @return: List - * @Author: sui q - * @Date: 2022/11/16 19:13 - */ - List queryCuMemberShareAssess(@Param("tableName") String tableName, @Param("period") Integer period); - /** * 更新考核通过的考核表 * 更新会员考核表,根据使用值的更新期末结余,更新结余跟其他的不一样, @@ -284,101 +114,12 @@ public interface CuMemberAssessMapper extends BaseMapper { * * @param tableName 表名 * @param period 期间 - * @return: Integer - * @Author: sui q - * @Date: 2022/11/8 10:32 */ Integer updateAssessPeriodCheckBalanceByUsed(@Param("tableName") String tableName, @Param("period") Integer period); - /** - * 更新考核通过的考核表,根据临时表 - * 更新会员考核表,根据使用值的更新期末结余,更新结余跟其他的不一样, - * 只更新一张表,复购跟分红可以一起更新,复购或分红只需要更新一次 - * - * @param tableName 表名 - * @param period 期间 - * @param newCuMemberSettleExtList 需要更新的会员 - * @return: Integer - * @Author: sui q - * @Date: 2022/11/8 10:32 - */ - Integer updateAssessPeriodCheckBalanceByTmp(@Param("tableName") String tableName, @Param("period") Integer period, @Param("cuMemberList") List newCuMemberSettleExtList); - - /** - * 初始化分红考核表数据,将结算表数据插入到考核表中 - * - * @param tableName 更新表名 - * @param sourceTableName 来源表,用哪个表进行更新 - * @param period 期间 - * @param month 考核月份 - * @return: Integer - * @Author: sui q - * @Date: 2022/11/7 14:33 - */ - Integer insertShareCuMemberAssess(@Param("tableName") String tableName, @Param("sourceTableName") String sourceTableName, - @Param("period") Integer period, @Param("month") String month); - - /** - * 会员-考核明细列表 - * - * @author: zhang jing - * @date: 2023/1/23 10:20 - * @param: [cuMemberAssessVO] 查询条件 - * @return: java.util.List - **/ - List selectAssessList(@Param("tableName") String tableName, - @Param("pkMember") Long pkMember, - @Param("pkCountry") Integer pkCountry, - @Param("assessStatus") Integer assessStatus, - @Param("assessType") Integer assessType, - @Param("changeType") Integer changeType, - @Param("startDate") Date startDate, - @Param("endDate") Date endDate, - @Param("orderTypeList") List orderTypeList - - - - - ); - - /** - * @description: 查询会员月度考核 - * @author: zhang jing - * @date: 2023/3/14 14:44 - * @param: [tableName, cuMemberAssessVO] - * @return: java.util.List - **/ - List getMemberAssessMonthList(@Param("tableName") String tableName, - @Param("pkMember") Long pkMember, - @Param("assessType") Integer assessType, - @Param("pkCountry") Integer pkCountry, - @Param("period") Integer period - ); - - - /** - * @description: 查询会员订单考核积分 - * @author: zhang jing - * @date: 2023/3/14 17:52 - * @param: [cuMemberAssessVO] - * @return: java.util.List - **/ - CuMemberAssessVO getOrderAssessList(CuMemberAssessVO cuMemberAssessVO); - - /** - * @description: 根据考核类型查询会员订单信息 - * @author: zhang jing - * @date: 2023/4/23 19:43 - * @param: [cuMemberAssessVO] - * @return: java.util.List - **/ - List getOrderByAssessList(CuMemberAssessVO cuMemberAssessVO); /* - * @description: 查询满足分红考核的人数,达标人数 - * @author: sui q - * @date: 2023/7/3 16:51 - * @param: null null + * 查询满足分红考核的人数,达标人数 **/ List queryCuMemberAssTotal(@Param("settleTable") String settleTable, @Param("period") Integer period, @Param("pkCountry") Integer pkCountry); diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/detail/service/ICuMemberAssessService.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/detail/service/ICuMemberAssessService.java index 36ecc5b8..b85bb819 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/detail/service/ICuMemberAssessService.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/detail/service/ICuMemberAssessService.java @@ -2,11 +2,9 @@ package com.hzs.bonus.detail.service; import com.baomidou.mybatisplus.extension.service.IService; import com.hzs.common.domain.member.detail.CuMemberAssess; -import com.hzs.common.domain.member.ext.CuMemberSettleExt; import java.util.Date; import java.util.List; -import java.util.Map; /** * 会员信息-会员考核记录 服务类 @@ -25,16 +23,6 @@ public interface ICuMemberAssessService extends IService { */ void retryCalculationAssess(Date currentDate, Boolean flag); - /** - * 根据会员主键查询考核结果 - * - * @param assessTableName 考核表 - * @param period 期间 - * @param assessType 考核类型 - * @param cuMemberSettleExtList 会员列表 - */ - Map queryCuMemberAssessByMember(String assessTableName, Integer period, Integer assessType, List cuMemberSettleExtList); - /* * 查询满足分红考核的人数,达标人数 **/ diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/detail/service/impl/CuMemberAssessServiceImpl.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/detail/service/impl/CuMemberAssessServiceImpl.java index 4cc17ad3..dd512305 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/detail/service/impl/CuMemberAssessServiceImpl.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/detail/service/impl/CuMemberAssessServiceImpl.java @@ -2,16 +2,13 @@ package com.hzs.bonus.detail.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.hzs.bonus.achieve.service.ICuMemberSettlePeriodService; -import com.hzs.bonus.achieve.service.impl.CuMemberBonusSettle; import com.hzs.bonus.detail.service.ICuMemberAssessDetailService; import com.hzs.bonus.detail.service.ICuMemberAssessService; import com.hzs.common.core.constant.TableNameConstants; import com.hzs.common.core.enums.*; -import com.hzs.common.core.utils.ComputeUtil; import com.hzs.common.core.utils.DateUtils; import com.hzs.common.domain.member.achieve.CuMemberSettlePeriod; import com.hzs.common.domain.member.detail.CuMemberAssess; -import com.hzs.common.domain.member.ext.CuMemberSettleExt; import com.hzs.bonus.detail.mapper.CuMemberAssessMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -26,22 +23,10 @@ import java.util.*; @Service public class CuMemberAssessServiceImpl extends ServiceImpl implements ICuMemberAssessService { - private ICuMemberSettlePeriodService cuMemberSettlePeriodService; - - private ICuMemberAssessDetailService cuMemberAssessDetailService; - @Autowired - private CuMemberBonusSettle cuMemberBonusSettle; - + private ICuMemberSettlePeriodService iCuMemberSettlePeriodService; @Autowired - public void setCuMemberAssessDetailService(ICuMemberAssessDetailService cuMemberAssessDetailService) { - this.cuMemberAssessDetailService = cuMemberAssessDetailService; - } - - @Autowired - public void setCuMemberSettlePeriodService(ICuMemberSettlePeriodService cuMemberSettlePeriodService) { - this.cuMemberSettlePeriodService = cuMemberSettlePeriodService; - } + private ICuMemberAssessDetailService iCuMemberAssessDetailService; /** * 复购考核每月第一次考核调用此方法 @@ -54,7 +39,7 @@ public class CuMemberAssessServiceImpl extends ServiceImpl queryCuMemberAssessByMember(String assessTableName, Integer period, Integer assessType, List cuMemberSettleExtList) { - List cuMemberAssessList = new ArrayList<>(); - List> listList = cuMemberBonusSettle.handleCutList(cuMemberSettleExtList); - listList.forEach(list -> - cuMemberAssessList.addAll(baseMapper.queryCuMemberAssessByMember(assessTableName, period, assessType, list))); - Map cuMemberAssessMap = new HashMap<>(ComputeUtil.mapInitCapacity(cuMemberAssessList.size())); - cuMemberAssessList.forEach(cuMemberAssess -> cuMemberAssessMap.put(cuMemberAssess.getPkMember(), cuMemberAssess)); - return cuMemberAssessMap; - } - /** * 奖金计算时重算考核 (复购考核、分红考核),只重算免考的、撤单的 * * @param currentDate 考核时间 - * @return: void - * @Author: sui q - * @Date: 2022/11/7 11:19 */ @Override @Transactional(rollbackFor = Exception.class) public void retryCalculationAssess(Date currentDate, Boolean flag) { // String beforeDateStr = DateUtils.beforeDateStr(1, ChronoUnit.DAYS, DateUtils.YYYY_MM_DD, currentDate); -// Integer beforePeriod = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(beforeDateStr).getPkId(); - Integer currentPeriod = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, currentDate)).getPkId(); +// Integer beforePeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(beforeDateStr).getPkId(); + Integer currentPeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, currentDate)).getPkId(); // String beforeTableName = TableNameConstants.CU_MEMBER_SETTLE + beforePeriod; //// a)更新结算表会员前2部分会员免考状态 满足首次注册的会员 满足满足首次升级的会员 // String tableName = TableNameConstants.CU_MEMBER_ASSESS + DateUtils.currentYear(currentDate); // String currentMonthFirstDateStr = DateUtils.currentMonthFirstDateStr(currentDate); -// Integer monthFirstPeriod = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(currentMonthFirstDateStr).getPkId(); +// Integer monthFirstPeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(currentMonthFirstDateStr).getPkId(); // // 结算日期月份的第一天 Date startDate = DateUtils.beforeMonthFirstDate(currentDate); // // 结算日期后一天 @@ -113,8 +84,8 @@ public class CuMemberAssessServiceImpl extends ServiceImpl oldCuMemberAssessList = baseMapper.queryExemptAssessCuMember(tableName, monthFirstPeriod); -//// b)查询前一天的会员免考记录,查询结算日会员免考记录 -// List oldCuMemberSettleExtList = cuMemberTreeService.queryExemptCuMemberSettle(beforeTableName); -//// c)比较会员2天免考发生的状态,只需要计算变化的值,去掉没有发生变化的值 -// List newCuMemberSettleExtList = new ArrayList<>(); -// if (oldCuMemberAssessList.size() > 0 && oldCuMemberSettleExtList != null && oldCuMemberSettleExtList.size() > 0) { -// Map cuMemberAssessMap = new HashMap<>(ComputeUtil.mapInitCapacity(oldCuMemberAssessList.size())); -// oldCuMemberAssessList.forEach(cuMemberAssess -> -// cuMemberAssessMap.put(cuMemberAssess.getPkMember().toString() + cuMemberAssess.getAssessType().toString(), cuMemberAssess)); -// oldCuMemberSettleExtList.forEach(cuMemberSettleExt -> { -// String key = cuMemberSettleExt.getPkMember().toString() + cuMemberSettleExt.getAssessType().toString(); -// if (!cuMemberAssessMap.containsKey(key)) { -// newCuMemberSettleExtList.add(cuMemberSettleExt); -// } -// }); -// } -//// e)查询有没有撤单,更新撤单的数据 -// List cuMemberAssessExtList = handleCuMemberAssessByRevokeOrder(currentDate, newCuMemberSettleExtList, tableName, monthFirstPeriod, settleTableName); -// if (cuMemberAssessExtList.size() > 0) { -// // 将变更的插入临时表 -// baseMapper.insertTmpCuMemberAssess(cuMemberAssessExtList); -// // 根据临时表里面的值进行更新会员表 -// baseMapper.updateAssessPeriodByRevokeOrder(tableName); -// } -//// f)前一天免考后一天不免考,需要做重新考核,看上月是否可以考核通过 -// if (newCuMemberSettleExtList.size() > 0) { -// // 处理考核数据 -// // 记录流水,新增或修改 -// cuMemberAssessDetailService.insertCuMemberAssessDetailByPeriod(tableName, monthFirstPeriod, newCuMemberSettleExtList); -// List> cutCuMemberSettleExtList = cuMemberBonusSettle.handleCutList(newCuMemberSettleExtList); -// cutCuMemberSettleExtList.forEach(assessExtList -> -// baseMapper.updateAssessPeriodCheckBalanceByTmp(tableName, monthFirstPeriod, assessExtList)); -// } - // 网体数据修改,修改复购免考类型 0=正常 1=手动免考 2=注册免考 3=晋升免考,修改是否复购免考(0=是,1=否) } private void initCurrentAssess(Date currentDate, String currentTableName, Integer currentPeriod) { // 获取上月最后一天 String beforeLastDate = DateUtils.beforeMonthLastDateStr(currentDate); - CuMemberSettlePeriod cuMemberSettlePeriod = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(beforeLastDate); + CuMemberSettlePeriod cuMemberSettlePeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(beforeLastDate); int period = cuMemberSettlePeriod.getPkId(); String sourceTable = TableNameConstants.CU_MEMBER_SETTLE + period; String rangeSourceTable = TableNameConstants.CU_MEMBER_RANGE + period; // 清空子表、主表数据 - cuMemberAssessDetailService.deleteCuMemberAssessDetailByPeriod(currentTableName, currentPeriod); + iCuMemberAssessDetailService.deleteCuMemberAssessDetailByPeriod(currentTableName, currentPeriod); baseMapper.deleteCuMemberAssessByPeriod(currentTableName, currentPeriod); // 初始化复购考核 String month = DateUtils.getMonth(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, currentDate)); @@ -185,7 +119,7 @@ public class CuMemberAssessServiceImpl extends ServiceImpl queryCuMemberAssTotal(String startDate, Integer pkCountry) { - int period = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(startDate).getPkId(); + int period = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(startDate).getPkId(); String tableTable = TableNameConstants.CU_MEMBER_ASSESS + DateUtils.getYear(startDate); return baseMapper.queryCuMemberAssTotal(tableTable, period, pkCountry); } diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/detail/vo/CuMemberAssessVO.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/detail/vo/CuMemberAssessVO.java deleted file mode 100644 index 1f159b63..00000000 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/detail/vo/CuMemberAssessVO.java +++ /dev/null @@ -1,137 +0,0 @@ -package com.hzs.bonus.detail.vo; - -import com.fasterxml.jackson.annotation.JsonFormat; -import com.hzs.common.core.annotation.Transaction; -import com.hzs.common.core.constant.EnumsPrefixConstants; -import lombok.*; - -import java.math.BigDecimal; -import java.util.Date; -import java.util.List; - -/** - * 会员信息-会员考核记录VO - */ -@Data -public class CuMemberAssessVO { - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - private Long pkId; - - /** - * 考核月度主键 - */ - private Long pkAssess; - - /** - * 会员编号 - */ - private Long pkMember; - - /** - * 考核类型( 0=复购考核,1=分红考核) EAssessmentType - */ - @Transaction(transactionKey = EnumsPrefixConstants.ASSESSMENT_TYPE) - private Integer assessType; - - private String assessTypeVal; - - /** - * 考核状态 (0=考核通过,1=免考通过,2=考核不通过,3=不考核) EAssessStatus - */ - @Transaction(transactionKey = EnumsPrefixConstants.ASSESS_STATUS) - private Integer assessStatus; - private String assessStatusVal; - - /** - * 考核年月份 - */ - private String settleMonth; - /** - * 订单编号 - */ - private String orderCode; - - - /** - * 交易时间 - */ - @JsonFormat(pattern = "yyyy-MM-dd") - private Date tradeTime; - - /** - * 变化类型 (0=复购考核新增1=复购考核扣除,2=分红考核新增,3=分红考核扣除) EChangeType - */ - @Transaction(transactionKey = EnumsPrefixConstants.CHANGE_TYPE) - private Integer changeType; - private String changeTypeVal; - - /** - * 交易金额 - */ - private BigDecimal tradeAchieve; - /** - * 交易金额 (带符号) - */ - private String tradeAchieveSign; - - /** - * 开始时间 - */ - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") - private Date startDate; - - /** - * 结束时间 - */ - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") - private Date endDate; - - /** - * 开始时间 - */ - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") - private Date startTradeTime; - - /** - * 结束时间 - */ - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") - private Date endDateTradeTime; - - /** - * 国家 - */ - private Integer pkCountry; - - /** - * 考核月剩余 - */ - private BigDecimal monthSurplus; - /** - * 订单分红考核积分(当月1号-当前时间) - */ - private BigDecimal orderAssAchieve; - /** - * 订单复购考核积分(当月1号-当前时间) - */ - private BigDecimal orderAchieve; - - - /** - * 交易时间 - */ - @JsonFormat(pattern = "yyyy-MM-dd") - private Date creationTime; - /** - * 订单类型 来源于枚举:所属专区 EOrderType - */ - private Integer orderType; - List orderTypeList; - - -} diff --git a/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/achieve/CuMemberRangeMapper.xml b/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/achieve/CuMemberRangeMapper.xml deleted file mode 100644 index a29fd857..00000000 --- a/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/achieve/CuMemberRangeMapper.xml +++ /dev/null @@ -1,215 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - merge into ${rangeTableName} a - using ( - select pk_member,min(consume_status) consume_status,max(pk_range_awards) pk_range_awards, - max(pk_awards) pk_awards,max(consume_pv) consume_pv, - max(month_pv) month_pv,max(new_pv) new_pv,max(new_team_pv) new_team_pv,max(effective_num) effective_num, - max(buy_effective_num) buy_effective_num,max(first_agent) first_agent,max(second_agent) second_agent, - max(team_consume_pv) team_consume_pv,max(team_month_pv) team_month_pv,max(small_area_pv) small_area_pv, - max(team_consume_amount) team_consume_amount,max(team_month_amount) team_month_amount, - max(assess_status) assess_status,max(dept_new_team_pv) dept_new_team_pv, - max(dept_team_consume_amount) dept_team_consume_amount,max(dept_team_consume_pv) dept_team_consume_pv, - max(dept_team_month_amount) dept_team_month_amount,max(dept_team_month_pv) dept_team_month_pv from( - - select #{item.pkMember} pk_member,#{item.pkRangeAwards} pk_range_awards,#{item.pkAwards} pk_awards, - #{item.consumeStatus} consume_status,#{item.consumePv} consume_pv,#{item.monthPv} month_pv, - #{item.newPv} new_pv,#{item.newTeamPv} new_team_pv,#{item.effectiveNum} effective_num, - #{item.buyEffectiveNum} buy_effective_num,#{item.firstAgent} first_agent,#{item.secondAgent} second_agent, - #{item.teamConsumeAmount} team_consume_amount,#{item.teamMonthAmount} team_month_amount, - #{item.deptNewTeamPv} dept_new_team_pv,#{item.deptTeamConsumeAmount} dept_team_consume_amount, - #{item.deptTeamConsumePv} dept_team_consume_pv,#{item.deptTeamMonthAmount} dept_team_month_amount, - #{item.deptTeamMonthPv} dept_team_month_pv, - #{item.teamConsumePv} team_consume_pv,#{item.teamMonthPv} team_month_pv,#{item.smallAreaPv} small_area_pv, - #{item.assessStatus} assess_status from dual - ) - group by pk_member - ) b - on (a.pk_member=b.pk_member) - when matched then - update set a.pk_range_awards=b.pk_range_awards,a.pk_awards=b.pk_awards, - a.consume_status=b.consume_status,a.consume_pv=b.consume_pv, - a.month_pv=b.month_pv,a.effective_num=b.effective_num, - a.new_pv=b.new_pv,a.new_team_pv=b.new_team_pv,a.buy_effective_num=b.buy_effective_num, - a.first_agent=b.first_agent,a.second_agent=b.second_agent,a.team_consume_amount=b.team_consume_amount, - a.team_month_amount=b.team_month_amount,a.dept_new_team_pv=b.dept_new_team_pv, - a.dept_team_consume_amount=b.dept_team_consume_amount, - a.dept_team_consume_pv=b.dept_team_consume_pv,a.dept_team_month_amount=b.dept_team_month_amount, - a.dept_team_month_pv=b.dept_team_month_pv, - a.team_consume_pv=b.team_consume_pv,a.team_month_pv=b.team_month_pv, - a.small_area_pv=b.small_area_pv,a.assess_status=b.assess_status - - - - merge into ${secondTableName} a - using ( - - select #{item.pkMember} pk_member,#{item.pkParent} pk_parent,#{item.pkRangeAwards} pk_range_awards, - #{item.newPv} new_pv,#{item.newTeamPv} new_team_pv,#{item.newEffectiveNum} new_effective_num, - #{item.assessStatus} assess_status,#{item.monthMember} month_member from dual - - ) b - on (a.pk_member=b.pk_member) - when not matched then - insert(pk_member,pk_parent,pk_range_awards,new_pv,new_team_pv,new_effective_num,assess_status,month_member) - values (b.pk_member,b.pk_parent,b.pk_range_awards,b.new_pv,b.new_team_pv,b.new_effective_num,b.assess_status,b.month_member) - when matched then - update set a.pk_range_awards=b.pk_range_awards,a.new_pv=b.new_pv,a.new_team_pv=b.new_team_pv - - - - - - - - - - - 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 4d529683..9c0ec44b 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 @@ -52,8 +52,12 @@ + + + + @@ -436,12 +440,16 @@ - select count(pk_id) from ${tableName} where period = #{period} and del_flag=0 - - - - - - - - - - - - - - - - - - - -