From 83136f1387fadc11a73f32d508443e16bdd3b2b0 Mon Sep 17 00:00:00 2001 From: cabbage <281119120@qq.com> Date: Mon, 29 Sep 2025 18:01:35 +0800 Subject: [PATCH] =?UTF-8?q?##=20=E5=A5=96=E8=A1=94=E8=AE=A1=E7=AE=97?= =?UTF-8?q?=E6=96=B9=E5=BC=8F=E6=94=B9=E4=B8=BA=E5=85=88=E7=AE=97=E5=A5=96?= =?UTF-8?q?=E8=A1=94=EF=BC=9B=E8=B5=A0=E7=82=B9=E6=8E=92=E7=82=B9=E6=96=B9?= =?UTF-8?q?=E5=BC=8F=E9=97=AE=E9=A2=98=E4=BF=AE=E5=A4=8D=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hzs/system/config/dto/BonusConfigDTO.java | 40 +--- .../system/config/dto/BonusDifferenceDTO.java | 7 - .../system/config/dto/BonusDirectLoopDTO.java | 6 +- .../config/dto/BonusRepurchasePushDTO.java | 7 +- .../mapper/CuMemberRetailRangeMapper.java | 23 ++- .../achieve/mapper/CuMemberTreeMapper.java | 5 + .../service/ICuMemberRetailRangeService.java | 17 ++ .../achieve/service/ICuMemberTreeService.java | 6 + .../impl/CuMemberAchieveServiceImpl.java | 17 +- .../impl/CuMemberRetailDetailServiceImpl.java | 2 +- .../impl/CuMemberRetailRangeServiceImpl.java | 27 ++- .../service/impl/CuMemberTreeServiceImpl.java | 10 +- .../hzs/bonus/base/mapper/CuMemberMapper.java | 4 +- .../bonus/base/service/ICuMemberService.java | 5 +- .../service/impl/CuMemberServiceImpl.java | 4 +- .../bonus/service/impl/BonusSettleHandle.java | 24 ++- .../service/impl/BonusSettleRangeHandle.java | 188 +++++++++--------- .../service/ICuMemberAwardsService.java | 9 +- .../impl/CuMemberAwardsServiceImpl.java | 125 +++++++++--- .../achieve/CuMemberRetailRangeMapper.xml | 61 ++++++ .../bonus/achieve/CuMemberTreeMapper.xml | 31 ++- .../mapper/bonus/base/CuMemberMapper.xml | 6 +- .../bonus/detail/CuMemberAwardsMapper.xml | 103 +++++----- .../bonus/mapper/BdBonusServiceMapper.java | 8 +- .../bonus/service/IBdBonusServiceService.java | 17 +- .../impl/BdBonusServiceServiceImpl.java | 21 +- .../mapper/BdBonusDifferenceMapper.java | 6 - .../mapper/BdBonusDirectLoopMapper.java | 16 -- .../config/mapper/BdRepoDirectPushMapper.java | 6 - .../provider/BonusItemsServiceProvider.java | 125 +----------- .../config/service/IBdAwardsService.java | 5 - .../service/IBdBonusDifferenceService.java | 15 -- .../service/IBdBonusDirectLoopService.java | 23 +-- .../service/IBdRepoDirectPushService.java | 15 -- .../service/impl/BdAwardsServiceImpl.java | 10 +- .../impl/BdBonusDifferenceServiceImpl.java | 12 -- .../impl/BdBonusDirectLoopServiceImpl.java | 52 ++--- .../impl/BdRepoDirectPushServiceImpl.java | 14 -- .../system/config/BdBonusDirectLoopMapper.xml | 26 --- .../domain/member/ext/CuMemberSettleExt.java | 40 +--- .../system/config/BdBonusDirectLoop.java | 6 - .../system/config/BdRepoDirectPush.java | 5 - .../config/ext/BdBonusDirectLoopExt.java | 6 +- 43 files changed, 466 insertions(+), 689 deletions(-) diff --git a/bd-api/bd-api-system/src/main/java/com/hzs/system/config/dto/BonusConfigDTO.java b/bd-api/bd-api-system/src/main/java/com/hzs/system/config/dto/BonusConfigDTO.java index cc6cddf5..5219c3bd 100644 --- a/bd-api/bd-api-system/src/main/java/com/hzs/system/config/dto/BonusConfigDTO.java +++ b/bd-api/bd-api-system/src/main/java/com/hzs/system/config/dto/BonusConfigDTO.java @@ -1,7 +1,6 @@ package com.hzs.system.config.dto; import com.hzs.common.domain.bonus.BdBonusDeduct; -import com.hzs.common.domain.bonus.BdBonusService; import com.hzs.common.domain.system.config.*; import com.hzs.common.domain.system.config.ext.BdBonusItemsExt; import com.hzs.system.sys.dto.BdCurrencyDTO; @@ -27,46 +26,14 @@ public class BonusConfigDTO implements Serializable { */ private Map bonusItemsExtMap; - /** - * 循环配置 key 第一个键国家主键 +等级,第二个键 循环类型 EBonusType - */ - private Map bonusDirectLoopDtoMap; - /** * 直推奖励配置 key 第一个键国家主键 ,第二个键 range_type+pk_level */ private Map bonusDirectDtoMap; /** - * 一次性补差 key 国家作为主键,只有一条 + * 奖衔列表 */ - private Map bonusDifferenceDtoMap; - - /** - * 复购推荐奖励配置 key第一个键国家主键,第二个键 代数 - */ - private Map> bonusRepurchasePushMap; - - /** - * 拓展奖配置 国家+等级 - */ - private Map gradeMap; - - /** - * 主任每个国家值对应的配置 需要主键 memberSettleExt.getPkSettleCountry().toString() + 奖衔值 为了解决服务中心算主任 - */ - private Map directorAwardsMap; - - /** - * 辅导奖配置 需要主键 memberSettleExt.getPkSettleCountry().toString() + memberSettleExt.getPkAwards() - */ - private Map awardsMap; - - /** - * 辅导奖配置 需要主键 memberSettleExt.getPkSettleCountry().toString() + memberSettleExt.getAwardsValue() - */ - private Map awardsValueMap; - private List awardsList; /** @@ -74,9 +41,4 @@ public class BonusConfigDTO implements Serializable { */ private Map bonusDeductsMap; - /** - * 报单服务费 需要主键 memberSettleExt.getPkSettleCountry().toString() + memberSettleExt.getservicetype() - */ - private Map bonusServiceMap; - } diff --git a/bd-api/bd-api-system/src/main/java/com/hzs/system/config/dto/BonusDifferenceDTO.java b/bd-api/bd-api-system/src/main/java/com/hzs/system/config/dto/BonusDifferenceDTO.java index 692e926d..b9cff8df 100644 --- a/bd-api/bd-api-system/src/main/java/com/hzs/system/config/dto/BonusDifferenceDTO.java +++ b/bd-api/bd-api-system/src/main/java/com/hzs/system/config/dto/BonusDifferenceDTO.java @@ -5,13 +5,6 @@ import lombok.Data; import java.io.Serializable; import java.math.BigDecimal; -/** - * @Description: - * @Author: sui q - * @Time: 2022/11/14 16:38 - * @Classname: BonusDifferenceDTO - * @PackageName: com.hzs.system.config.dto - */ @Data public class BonusDifferenceDTO implements Serializable { diff --git a/bd-api/bd-api-system/src/main/java/com/hzs/system/config/dto/BonusDirectLoopDTO.java b/bd-api/bd-api-system/src/main/java/com/hzs/system/config/dto/BonusDirectLoopDTO.java index 96616f1e..72482b64 100644 --- a/bd-api/bd-api-system/src/main/java/com/hzs/system/config/dto/BonusDirectLoopDTO.java +++ b/bd-api/bd-api-system/src/main/java/com/hzs/system/config/dto/BonusDirectLoopDTO.java @@ -6,11 +6,7 @@ import java.io.Serializable; import java.math.BigDecimal; /** - * @Description: 循环配置 - * @Author: sui q - * @Time: 2022/11/14 16:26 - * @Classname: BonusDirectLoopDTO - * @PackageName: com.hzs.system.config.dto + * 循环配置 */ @Data public class BonusDirectLoopDTO implements Serializable { diff --git a/bd-api/bd-api-system/src/main/java/com/hzs/system/config/dto/BonusRepurchasePushDTO.java b/bd-api/bd-api-system/src/main/java/com/hzs/system/config/dto/BonusRepurchasePushDTO.java index 403104d6..bb87e9f6 100644 --- a/bd-api/bd-api-system/src/main/java/com/hzs/system/config/dto/BonusRepurchasePushDTO.java +++ b/bd-api/bd-api-system/src/main/java/com/hzs/system/config/dto/BonusRepurchasePushDTO.java @@ -6,12 +6,7 @@ import java.io.Serializable; import java.math.BigDecimal; /** - * @description: 复购直推dto - * @author: sui q - * @time: 2023/6/29 15:17 - * @classname: BonusRepurchasePushDTO - * @package_name: com.hzs.system.config.dto - * version 1.0.0 + * 复购直推dto */ @Data public class BonusRepurchasePushDTO implements Serializable { diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/mapper/CuMemberRetailRangeMapper.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/mapper/CuMemberRetailRangeMapper.java index f3e2d996..34944456 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/mapper/CuMemberRetailRangeMapper.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/mapper/CuMemberRetailRangeMapper.java @@ -8,6 +8,7 @@ import com.hzs.common.domain.member.ext.CuMemberExt; import com.hzs.common.domain.sale.ext.SaOrderExt; import org.apache.ibatis.annotations.Param; +import java.math.BigDecimal; import java.util.List; /** @@ -121,11 +122,31 @@ public interface CuMemberRetailRangeMapper extends BaseMapper listChildRetail(@Param("rangeTableName") String rangeTableName, @Param("pkParentList") List pkParentList); + /** + * 更新会员血缘上累计数据 + */ + Boolean updateMemberParentDate(@Param("rangeTableName") String rangeTableName, + @Param("achieveList") List achieveList); + + /** + * 查询符合奖衔业绩条件会员 + */ + List queryEnoughAwardMember(@Param("rangeTableName") String rangeTableName, + @Param("totalCheck") BigDecimal totalCheck, + @Param("pkAwards") Integer pkAwards); + /** * 查询会员血缘下达标奖衔会员 */ List listChildAwards(@Param("rangeTableName") String rangeTableName, @Param("pkAwards") Integer pkAwards, - @Param("childMemberList") List childMemberList); + @Param("childMemberList") List childMemberList); + + /** + * 更新会员奖衔 + */ + int updateCuMemberAwardsByPeriod(@Param("rangeTableName") String rangeTableName, + @Param("period") Integer period, + @Param("awardType") Integer awardType); } diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/mapper/CuMemberTreeMapper.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/mapper/CuMemberTreeMapper.java index 20f89149..9e03dc77 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/mapper/CuMemberTreeMapper.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/mapper/CuMemberTreeMapper.java @@ -94,6 +94,11 @@ public interface CuMemberTreeMapper extends BaseMapper { */ void truncateCuMemberTreeTable(@Param("tableName") String tableName); + /** + * 清除表数据 + */ + void clearTable(@Param("tableName") String tableName); + /** * 将会员表数据插入结算日表中 * diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/service/ICuMemberRetailRangeService.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/service/ICuMemberRetailRangeService.java index 8d6cba58..3215d569 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/service/ICuMemberRetailRangeService.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/service/ICuMemberRetailRangeService.java @@ -1,6 +1,7 @@ package com.hzs.bonus.achieve.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.hzs.bonus.achieve.param.MemberAchieveParam; import com.hzs.common.domain.member.achieve.CuMemberRetailRange; import com.hzs.common.domain.member.achieve.ext.CuMemberRetailRangeExt; import com.hzs.common.domain.member.base.CuMember; @@ -82,9 +83,25 @@ public interface ICuMemberRetailRangeService extends IService memberAchieveHashMap); + + /** + * 查询符合奖衔业绩条件会员 + */ + List queryEnoughAwardMember(String settleTableName, BigDecimal totalCheck, Integer pkAwards); + /** * 查询会员血缘下达标奖衔会员 */ List listChildAwards(String rangeTableName, Integer pkAwards, List childMemberList); + /** + * 更新会员奖衔 + */ + void updateCuMemberAwardsByPeriod(String rangeTableName, Integer period); + + } diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/service/ICuMemberTreeService.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/service/ICuMemberTreeService.java index 0e1ae3fd..1e66fe54 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/service/ICuMemberTreeService.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/service/ICuMemberTreeService.java @@ -56,6 +56,11 @@ public interface ICuMemberTreeService extends IService { */ void truncateCuMemberTreeTable(String tableName); + /** + * 清除表数据 + */ + void clearTable(String tableName); + /** * 创建会员网体推荐人索引 * @@ -77,4 +82,5 @@ public interface ICuMemberTreeService extends IService { */ void createCuMemberTreePlaceIndex(String tableName); + } diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/service/impl/CuMemberAchieveServiceImpl.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/service/impl/CuMemberAchieveServiceImpl.java index 3c118301..19d195ee 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/service/impl/CuMemberAchieveServiceImpl.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/service/impl/CuMemberAchieveServiceImpl.java @@ -10,7 +10,6 @@ import com.hzs.common.core.utils.DateUtils; import com.hzs.common.domain.member.achieve.CuMemberAchieve; import com.hzs.common.domain.member.achieve.CuMemberSettlePeriod; import com.hzs.common.domain.sale.order.SaOrder; -import com.hzs.common.service.ITransactionCommonService; import com.hzs.bonus.achieve.mapper.CuMemberAchieveMapper; import com.hzs.bonus.achieve.param.MemberAchieveParam; import lombok.extern.slf4j.Slf4j; @@ -18,7 +17,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.math.BigDecimal; -import java.time.temporal.ChronoUnit; import java.util.*; /** @@ -28,22 +26,11 @@ import java.util.*; @Service public class CuMemberAchieveServiceImpl extends ServiceImpl implements ICuMemberAchieveService { + @Autowired private ICuMemberTreeService cuMemberTreeService; - + @Autowired private ICuMemberSettlePeriodService cuMemberSettlePeriodService; - @Autowired - public void setCuMemberSettlePeriodService(ICuMemberSettlePeriodService cuMemberSettlePeriodService) { - this.cuMemberSettlePeriodService = cuMemberSettlePeriodService; - } - - @Autowired - public void setCuMemberTreeService(ICuMemberTreeService cuMemberTreeService) { - this.cuMemberTreeService = cuMemberTreeService; - } - - @Autowired - ITransactionCommonService iTransactionCommonService; @Override public String createCuMemberAchieve(String date) { diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/service/impl/CuMemberRetailDetailServiceImpl.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/service/impl/CuMemberRetailDetailServiceImpl.java index 87a96399..495f3fa5 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/service/impl/CuMemberRetailDetailServiceImpl.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/service/impl/CuMemberRetailDetailServiceImpl.java @@ -95,7 +95,7 @@ public class CuMemberRetailDetailServiceImpl extends ServiceImpl()); // 会员直推数据 - List retailRangeList = cuMemberRetailRangeMapper.listChildRetail(rangeTableName, Collections.singletonList(sourceMember.getPkParent())); + List retailRangeList = cuMemberRetailRangeMapper.listChildRetail(rangeTableName, Collections.singletonList(sourceMember.getPkMember())); if (CollectionUtil.isNotEmpty(retailRangeList)) { // 直推数据列表 LinkedHashMap childRetailMap = sourceMember.getChildRetailMap(); diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/service/impl/CuMemberRetailRangeServiceImpl.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/service/impl/CuMemberRetailRangeServiceImpl.java index 648a498c..3c8f706a 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/service/impl/CuMemberRetailRangeServiceImpl.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/service/impl/CuMemberRetailRangeServiceImpl.java @@ -3,9 +3,11 @@ package com.hzs.bonus.achieve.service.impl; import cn.hutool.core.collection.CollectionUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.hzs.bonus.achieve.mapper.CuMemberRetailRangeMapper; +import com.hzs.bonus.achieve.param.MemberAchieveParam; import com.hzs.bonus.achieve.service.ICuMemberRetailRangeService; import com.hzs.bonus.achieve.service.ICuMemberTreeService; import com.hzs.common.core.constant.MagicNumberConstants; +import com.hzs.common.core.enums.EAwardsType; import com.hzs.common.domain.member.achieve.CuMemberRetailDetail; import com.hzs.common.domain.member.achieve.CuMemberRetailRange; import com.hzs.common.domain.member.achieve.ext.CuMemberRetailRangeExt; @@ -44,7 +46,7 @@ public class CuMemberRetailRangeServiceImpl extends ServiceImpl memberAchieveHashMap) { + if (memberAchieveHashMap.size() == 0) { + return; + } + List> listList = cuMemberBonusSettle.handleCutList(memberAchieveHashMap.values(), MagicNumberConstants.BATCH_UPDATE_NUM); + listList.forEach(list -> { + baseMapper.updateMemberParentDate(rangeTableName, list); + }); + } + + @Override + public List queryEnoughAwardMember(String settleTableName, BigDecimal totalCheck, Integer pkAwards) { + return baseMapper.queryEnoughAwardMember(settleTableName, totalCheck, pkAwards); + } + @Override public List listChildAwards(String rangeTableName, Integer pkAwards, List childMemberList) { List checkList = new ArrayList<>(); List> queryList = cuMemberBonusSettle.handleCutList(childMemberList, MagicNumberConstants.BATCH_QUERY_NUM); queryList.forEach(tmpList -> { - List tmpCheckList = baseMapper.listChildAwards(rangeTableName, pkAwards, childMemberList); + List tmpCheckList = baseMapper.listChildAwards(rangeTableName, pkAwards, tmpList); if (tmpCheckList.size() > 0) { checkList.addAll(tmpCheckList); } @@ -186,4 +204,9 @@ public class CuMemberRetailRangeServiceImpl extends ServiceImpl { CuMember getByPkId(@Param("pkId") Serializable id); /** - * 更新会员奖衔根据临时表 + * 更新会员奖衔 */ - int updateCuMemberRetailAwardsByPeriod(@Param("period") Integer period, @Param("awardType") Integer awardType); + int updateCuMemberAwardsByPeriod(@Param("period") Integer period, @Param("awardType") Integer awardType); /** * 更新会员奖衔根据临时表 diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/base/service/ICuMemberService.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/base/service/ICuMemberService.java index 767b6e94..03c8b431 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/base/service/ICuMemberService.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/base/service/ICuMemberService.java @@ -14,10 +14,11 @@ import java.util.List; public interface ICuMemberService extends IService { CuMember getByPkId(Serializable id); + /** - * 更新会员奖衔根据临时表 -- 日结 + * 更新会员奖衔 */ - void updateCuMemberRetailRangeByPeriod(Integer period); + void updateCuMemberAwardsByPeriod(Integer period); /** * 更新会员奖衔根据临时表 diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/base/service/impl/CuMemberServiceImpl.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/base/service/impl/CuMemberServiceImpl.java index da9e3ba3..eda97baa 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/base/service/impl/CuMemberServiceImpl.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/base/service/impl/CuMemberServiceImpl.java @@ -23,8 +23,8 @@ public class CuMemberServiceImpl extends ServiceImpl i } @Override - public void updateCuMemberRetailRangeByPeriod(Integer period) { - baseMapper.updateCuMemberRetailAwardsByPeriod(period, EAwardsType.RANGE_TYPE.getValue()); + public void updateCuMemberAwardsByPeriod(Integer period) { + baseMapper.updateCuMemberAwardsByPeriod(period, EAwardsType.RANGE_TYPE.getValue()); } @Override 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 7271337e..d298cd9e 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,5 +1,6 @@ package com.hzs.bonus.bonus.service.impl; +import com.hzs.bonus.achieve.param.MemberAchieveParam; import com.hzs.bonus.achieve.service.ICuMemberTreeService; import com.hzs.common.core.constant.BonusFieldConstants; import com.hzs.common.core.constant.MagicNumberConstants; @@ -11,7 +12,6 @@ import com.hzs.common.domain.bonus.BdBonusDeduct; import com.hzs.common.domain.member.achieve.ext.CuMemberRetailRangeExt; import com.hzs.common.domain.member.bonus.*; import com.hzs.common.domain.sale.ext.SaOrderExt; -import com.hzs.common.domain.sale.order.SaOrder; import com.hzs.common.domain.system.config.ext.BdBonusItemsExt; import com.hzs.system.config.dto.BonusConfigDTO; import org.springframework.beans.factory.annotation.Autowired; @@ -234,4 +234,26 @@ public abstract class BonusSettleHandle { return bdBonusDeduct; } + + /** + * 处理订单累计业绩、累计金额 + */ + public void assortSaOrder(Map memberAchieveHashMap, List orderExtList) { + for (SaOrderExt saOrderExt : orderExtList) { + MemberAchieveParam cuMemberAchieve; + if (memberAchieveHashMap.containsKey(saOrderExt.getPkMember())) { + cuMemberAchieve = memberAchieveHashMap.get(saOrderExt.getPkMember()); + } else { + cuMemberAchieve = MemberAchieveParam.builder() + .pkMember(saOrderExt.getPkMember()) + .newPv(BigDecimal.ZERO) + .newAmount(BigDecimal.ZERO) + .build(); + memberAchieveHashMap.put(saOrderExt.getPkMember(), cuMemberAchieve); + } + cuMemberAchieve.setNewPv(ComputeUtil.computeAdd(cuMemberAchieve.getNewPv(), saOrderExt.getOrderAchieve())); + cuMemberAchieve.setNewAmount(ComputeUtil.computeAdd(cuMemberAchieve.getNewAmount(), saOrderExt.getOrderAmount())); + } + } + } 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 df7f5ccb..1a251c45 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 @@ -1,6 +1,7 @@ package com.hzs.bonus.bonus.service.impl; import cn.hutool.core.collection.CollectionUtil; +import com.hzs.bonus.achieve.param.MemberAchieveParam; import com.hzs.bonus.achieve.service.ICuMemberRetailDetailService; import com.hzs.bonus.achieve.service.ICuMemberRetailRangeService; import com.hzs.bonus.base.service.ICuMemberService; @@ -139,7 +140,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { // 实时网体查询血缘伞上会员,更新秒结表奖衔 iCuMemberRetailRangeService.mergeMemberRetailGradeByMember(secondRangeTableName, saOrderExt.getPkMember(), EYesNo.YES.getIntValue()); // 恢复秒结表奖衔 - iCuMemberAwardsService.mergeCuMemberBackAwards(secondRangeTableName, saOrderExt.getPkMember(), currentPeriod, EYesNo.YES.getIntValue()); + iCuMemberAwardsService.mergeCuMemberBackAwards(secondRangeTableName, saOrderExt.getPkMember(), currentPeriod); // 查询 昨天日结 + 今天秒结 血缘伞上+直推 memberRetailRangeExtList = iCuMemberRetailRangeService.queryCuMemberSecondRangeParent(rangeTableName, secondRangeTableName, saOrderExt.getPkMember()); } else { @@ -150,7 +151,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { // 实时网体查询血缘上会员,更新订单支付日结表奖衔 iCuMemberRetailRangeService.mergeMemberRetailGradeByMember(rangeTableName, saOrderExt.getPkMember(), EYesNo.NO.getIntValue()); // 恢复日结表奖衔 - iCuMemberAwardsService.mergeCuMemberBackAwards(rangeTableName, saOrderExt.getPkMember(), beforePeriod, EYesNo.NO.getIntValue()); + iCuMemberAwardsService.mergeCuMemberBackAwards(rangeTableName, saOrderExt.getPkMember(), beforePeriod); // 查询 订单下单日结 血缘上会员结算数据 memberRetailRangeExtList = iCuMemberRetailRangeService.queryCuMemberRetailRangeParent(rangeTableName, retailOrderList); } @@ -275,8 +276,6 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { // 结算明细前一天表 String yesterdayRangeDetailTableName = TableNameConstants.CU_MEMBER_RETAIL_RANGE_DETAIL + yesterdayPeriod; - // 回退奖衔,将奖衔回退到结算前状态 - iCuMemberAwardsService.calculateCuMemberRetailRangeAwardsInit(settleDate, period, rangeTableName); // 初始化结算网体数据(昨天数据更新到今天数据) iCuMemberRetailRangeService.mergeMemberRetailRangeByYesterday(rangeTableName, yesterdayRangeTableName, isSameMonth); // 初始化结算明细数据(昨天数据更新到今天数据) @@ -286,19 +285,6 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { List stageList = new ArrayList<>(); if (orderList.size() > 0) { - // 按照血缘,查询该会员所有伞上会员 - List memberRetailRangeExtList = iCuMemberRetailRangeService.queryCuMemberRetailRangeParent(rangeTableName, orderList); - // 会员结算map(key:会员ID,value:结算扩展) - Map memberRangeExtMap = new HashMap<>(); - // 会员转map - for (CuMemberRetailRangeExt cuMemberRetailRangeExt : memberRetailRangeExtList) { - if (!memberRangeExtMap.containsKey(cuMemberRetailRangeExt.getPkMember())) { - memberRangeExtMap.put(cuMemberRetailRangeExt.getPkMember(), cuMemberRetailRangeExt); - } - } - // 查询血缘会员明细数据(一阶段) - iCuMemberRetailDetailService.listMemberRetailDetail(rangeDetailTableName, memberRangeExtMap, EBonusStage.ONE, EBonusStageStatus.NO, null); - // 奖衔 Map awardsMap = new HashMap<>(); List awardsList = bonusConfigDTO.getAwardsList(); @@ -313,6 +299,28 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { // 阶段收益 List cuMemberBonusStageList = new ArrayList<>(); + // 更新血缘上个人、团队累计业绩,用于处理奖衔 + Map memberAchieveHashMap = new HashMap<>(); + // 订单累计业绩、累计金额 + assortSaOrder(memberAchieveHashMap, orderList); + // 更新血缘上业绩、金额 + iCuMemberRetailRangeService.updateMemberParentDate(rangeTableName, memberAchieveHashMap); + // 处理奖衔 + iCuMemberAwardsService.calculateCuMemberAwards(rangeTableName, awardsList, awardsMap, settleStartDate, period); + + // 按照血缘,查询该会员所有伞上会员 + List memberRetailRangeExtList = iCuMemberRetailRangeService.queryCuMemberRetailRangeParent(rangeTableName, orderList); + // 会员结算map(key:会员ID,value:结算扩展) + Map memberRangeExtMap = new HashMap<>(); + // 会员转map + for (CuMemberRetailRangeExt cuMemberRetailRangeExt : memberRetailRangeExtList) { + if (!memberRangeExtMap.containsKey(cuMemberRetailRangeExt.getPkMember())) { + memberRangeExtMap.put(cuMemberRetailRangeExt.getPkMember(), cuMemberRetailRangeExt); + } + } + // 查询血缘会员明细数据(一阶段) + iCuMemberRetailDetailService.listMemberRetailDetail(rangeDetailTableName, memberRangeExtMap, EBonusStage.ONE, EBonusStageStatus.NO, null); + for (SaOrderExt saOrderExt : orderList) { CuMemberRetailRangeExt sourceMember = memberRangeExtMap.get(saOrderExt.getPkMember()); if (null == sourceMember) { @@ -324,10 +332,8 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { // 自己消费的相关金额、业绩处理 sourceMember.setNewConsumePv(orderAchieve); - sourceMember.setConsumePv(sourceMember.getConsumePv().add(orderAchieve)); sourceMember.setMonthConsumePv(sourceMember.getMonthConsumePv().add(orderAchieve)); sourceMember.setNewConsumeAmount(orderAmount); - sourceMember.setConsumeAmount(sourceMember.getConsumeAmount().add(orderAmount)); sourceMember.setMonthConsumeAmount(sourceMember.getMonthConsumeAmount().add(orderAmount)); // // 自己计算奖衔,目前业绩都只往下传,所以此处暂时不需要处理订单会员的奖衔 // this.calculateAwards(period, memberRangeExtMap, rangeTableName, saOrderExt, retailAwardsMap, cuMemberAwardsList, sourceMember); @@ -367,6 +373,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { // 五折专区 sourceMember.setRepConsumeNewPv(sourceMember.getRepConsumeNewPv().add(orderAchieve)); sourceMember.setRepConsumeNewAmount(sourceMember.getRepConsumeNewAmount().add(orderAmount)); + // 领导级差收益 -- 来源PV this.calculateRetailRangeBonus(cuMemberBonusRangeList, memberRangeExtMap, cuMemberBonusMap, bonusConfigDTO, period, awardsMap, saOrderExt, sourceMember); @@ -406,12 +413,12 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { if (cuMemberBonusStageList.size() > 0) { bonusRecordDetailVO.setCuMemberBonusStageList(cuMemberBonusStageList); } - if (cuMemberAwardsList.size() > 0) { - // 批量插入会员奖衔记录 - iCuMemberAwardsService.saveBatchCuMemberAwards(cuMemberAwardsList); - // 更新会员表奖衔数据 - iCuMemberService.updateCuMemberRetailRangeByPeriod(period); - } +// if (cuMemberAwardsList.size() > 0) { +// // 批量插入会员奖衔记录 +// iCuMemberAwardsService.saveBatchCuMemberAwards(cuMemberAwardsList); +// // 更新会员表奖衔数据 +// iCuMemberService.updateCuMemberAwardsByPeriod(period); +// } // 更新日结数据 iCuMemberRetailRangeService.updateCuMemberRetailRange(rangeTableName, memberRangeExtMap); // 更新日结明细数据 @@ -1024,67 +1031,67 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { return resultList; } - /** - * 计算奖衔 - */ - private void calculateAwards(Integer period, Map memberRangeExtMap, String rangeTableName, - SaOrderExt saOrderExt, Map retailAwardsMap, List cuMemberAwardsList, - CuMemberRetailRangeExt targetMember) { - // 校验大小区会员数据 - List cuMemberRangeExtList = null; - // 计算分红奖衔 - while (true) { - // 当月奖衔值 + 5,获取下一个奖衔值 - int awardsValue = targetMember.getAwardsValue() + 5; - if (retailAwardsMap.containsKey(awardsValue)) { - BdAwards bdAwards = retailAwardsMap.get(awardsValue); - - if (ComputeUtil.compareValue(targetMember.getTeamConsumePv(), bdAwards.getTotalCheck())) { - // 团队累计业绩 >= 奖衔累计业绩 - if (null == cuMemberRangeExtList) { - // 昨日结算表,查询会员直推数据 - cuMemberRangeExtList = iCuMemberRetailRangeService.queryCuMemberRetailRangeExtByParent(rangeTableName, targetMember.getPkMember()); - } - // 大区 - BigDecimal consumeBigPv = BigDecimal.ZERO; - for (CuMemberRetailRangeExt cuMemberRetailRangeExt : cuMemberRangeExtList) { - if (memberRangeExtMap.containsKey(cuMemberRetailRangeExt.getPkMember())) { - cuMemberRetailRangeExt = memberRangeExtMap.get(cuMemberRetailRangeExt.getPkMember()); - } - // 累计业绩 = 团队累计消费业绩 + 个人累计消费业绩 - BigDecimal consumePv = cuMemberRetailRangeExt.getTeamConsumePv().add(cuMemberRetailRangeExt.getConsumePv()); - if (ComputeUtil.compareGreaterThan(consumePv, consumeBigPv)) { - // 累计业绩 > 大区业绩,则累计就成为大区 - consumeBigPv = consumePv; - } - } - // 小区业绩 = 团队累计业绩 - 大区业绩 - BigDecimal smallAreaPv = ComputeUtil.computeSubtract(targetMember.getTeamConsumePv(), consumeBigPv); - if (smallAreaPv.compareTo(bdAwards.getCommunityCheck()) >= 0) { - // 小区业绩 >= 考核小区业绩 - if (bdAwards.getPlaceDeptNum() > 0) { - // 验证每条血缘下,满足达标数量 - List checkList = iCuMemberRetailRangeService.listChildAwards(rangeTableName, bdAwards.getPkCheckAwardsLeft(), - cuMemberRangeExtList.stream().map(CuMemberRetailRangeExt::getPkMember).collect(Collectors.toList())); - if (CollectionUtil.isNotEmpty(checkList) && checkList.size() >= bdAwards.getPlaceDeptNum()) { - cuMemberAwardsList.add(getCuMemberRetailAwards(targetMember, period, saOrderExt, bdAwards, EAwardsType.RANGE_TYPE.getValue(), targetMember.getPkAwards())); - targetMember.setPkAwards(bdAwards.getPkId()); - targetMember.setAwardsValue(bdAwards.getAwardsValue()); - continue; - } - } else { - // 不需要考核血缘达标,直接给奖衔 - cuMemberAwardsList.add(getCuMemberRetailAwards(targetMember, period, saOrderExt, bdAwards, EAwardsType.RANGE_TYPE.getValue(), targetMember.getPkAwards())); - targetMember.setPkAwards(bdAwards.getPkId()); - targetMember.setAwardsValue(bdAwards.getAwardsValue()); - continue; - } - } - } - } - break; - } - } +// /** +// * 计算奖衔 +// */ +// private void calculateAwards(Integer period, Map memberRangeExtMap, String rangeTableName, +// SaOrderExt saOrderExt, Map retailAwardsMap, List cuMemberAwardsList, +// CuMemberRetailRangeExt targetMember) { +// // 校验大小区会员数据 +// List cuMemberRangeExtList = null; +// // 计算分红奖衔 +// while (true) { +// // 当月奖衔值 + 5,获取下一个奖衔值 +// int awardsValue = targetMember.getAwardsValue() + 5; +// if (retailAwardsMap.containsKey(awardsValue)) { +// BdAwards bdAwards = retailAwardsMap.get(awardsValue); +// +// if (ComputeUtil.compareValue(targetMember.getTeamConsumePv(), bdAwards.getTotalCheck())) { +// // 团队累计业绩 >= 奖衔累计业绩 +// if (null == cuMemberRangeExtList) { +// // 昨日结算表,查询会员直推数据 +// cuMemberRangeExtList = iCuMemberRetailRangeService.queryCuMemberRetailRangeExtByParent(rangeTableName, targetMember.getPkMember()); +// } +// // 大区 +// BigDecimal consumeBigPv = BigDecimal.ZERO; +// for (CuMemberRetailRangeExt cuMemberRetailRangeExt : cuMemberRangeExtList) { +// if (memberRangeExtMap.containsKey(cuMemberRetailRangeExt.getPkMember())) { +// cuMemberRetailRangeExt = memberRangeExtMap.get(cuMemberRetailRangeExt.getPkMember()); +// } +// // 累计业绩 = 团队累计消费业绩 + 个人累计消费业绩 +// BigDecimal consumePv = cuMemberRetailRangeExt.getTeamConsumePv().add(cuMemberRetailRangeExt.getConsumePv()); +// if (ComputeUtil.compareGreaterThan(consumePv, consumeBigPv)) { +// // 累计业绩 > 大区业绩,则累计就成为大区 +// consumeBigPv = consumePv; +// } +// } +// // 小区业绩 = 团队累计业绩 - 大区业绩 +// BigDecimal smallAreaPv = ComputeUtil.computeSubtract(targetMember.getTeamConsumePv(), consumeBigPv); +// if (smallAreaPv.compareTo(bdAwards.getCommunityCheck()) >= 0) { +// // 小区业绩 >= 考核小区业绩 +// if (bdAwards.getPlaceDeptNum() > 0) { +// // 验证每条血缘下,满足达标数量 +// List checkList = iCuMemberRetailRangeService.listChildAwards(rangeTableName, bdAwards.getPkCheckAwardsLeft(), +// cuMemberRangeExtList.stream().map(CuMemberRetailRangeExt::getPkMember).collect(Collectors.toList())); +// if (CollectionUtil.isNotEmpty(checkList) && checkList.size() >= bdAwards.getPlaceDeptNum()) { +// cuMemberAwardsList.add(getCuMemberRetailAwards(targetMember, period, saOrderExt, bdAwards, EAwardsType.RANGE_TYPE.getValue(), targetMember.getPkAwards())); +// targetMember.setPkAwards(bdAwards.getPkId()); +// targetMember.setAwardsValue(bdAwards.getAwardsValue()); +// continue; +// } +// } else { +// // 不需要考核血缘达标,直接给奖衔 +// cuMemberAwardsList.add(getCuMemberRetailAwards(targetMember, period, saOrderExt, bdAwards, EAwardsType.RANGE_TYPE.getValue(), targetMember.getPkAwards())); +// targetMember.setPkAwards(bdAwards.getPkId()); +// targetMember.setAwardsValue(bdAwards.getAwardsValue()); +// continue; +// } +// } +// } +// } +// break; +// } +// } /** * 计算团队奖衔 @@ -1101,11 +1108,9 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { while (null != targetMember) { // 累计业绩 targetMember.setTeamNewPv(targetMember.getTeamNewPv().add(orderAchieve)); - targetMember.setTeamConsumePv(targetMember.getTeamConsumePv().add(orderAchieve)); targetMember.setTeamMonthPv(targetMember.getTeamMonthPv().add(orderAchieve)); // 累计金额 targetMember.setTeamNewAmount(targetMember.getTeamNewAmount().add(orderAmount)); - targetMember.setTeamConsumeAmount(targetMember.getTeamConsumeAmount().add(orderAmount)); targetMember.setTeamMonthAmount(targetMember.getTeamMonthAmount().add(orderAmount)); if (EOrderType.RETAIL_REGISTER.getValue() == saOrderExt.getOrderType() || EOrderType.RETAIL_UPGRADE.getValue() == saOrderExt.getOrderType() @@ -1113,13 +1118,14 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { // 团队精品专区 targetMember.setRegTeamNewPv(targetMember.getRegTeamNewPv().add(orderAchieve)); targetMember.setRegTeamNewAmount(targetMember.getRegTeamNewAmount().add(orderAmount)); - } else if (EOrderType.RETAIL_REPURCHASE.getValue() == saOrderExt.getOrderType()) { + } else if (EOrderType.RETAIL_REPURCHASE.getValue() == saOrderExt.getOrderType() + || EOrderType.DISCOUNT_ORDER.getValue() == saOrderExt.getOrderType()) { // 团队商城专区 targetMember.setRepTeamNewPv(targetMember.getRepTeamNewPv().add(orderAchieve)); targetMember.setRepTeamNewAmount(targetMember.getRepTeamNewAmount().add(orderAmount)); } - // 计算奖衔 - calculateAwards(period, memberRangeExtMap, rangeTableName, saOrderExt, retailAwardsMap, cuMemberAwardsList, targetMember); +// // 计算奖衔 +// calculateAwards(period, memberRangeExtMap, rangeTableName, saOrderExt, retailAwardsMap, cuMemberAwardsList, targetMember); targetMember = memberRangeExtMap.get(targetMember.getPkParent()); } diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/detail/service/ICuMemberAwardsService.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/detail/service/ICuMemberAwardsService.java index 1abfc88e..150fdaf3 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/detail/service/ICuMemberAwardsService.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/detail/service/ICuMemberAwardsService.java @@ -3,8 +3,11 @@ package com.hzs.bonus.detail.service; import com.baomidou.mybatisplus.extension.service.IService; import com.hzs.common.domain.member.achieve.ext.CuMemberRetailRangeExt; import com.hzs.common.domain.member.detail.CuMemberAwards; +import com.hzs.common.domain.system.config.BdAwards; +import java.util.Date; import java.util.List; +import java.util.Map; /** * 会员信息-奖衔升级记录 服务类 @@ -12,9 +15,9 @@ import java.util.List; public interface ICuMemberAwardsService extends IService { /** - * 回退极差奖衔,每日重新结算,先把奖衔回退到前一天 + * 计算奖衔 */ - void calculateCuMemberRetailRangeAwardsInit(String settleDate, Integer period, String rangeTableName); + void calculateCuMemberAwards(String rangeTableName, List awardsList, Map awardsMap, Date settleDate, Integer period); /** * 批量插入奖衔记录 @@ -36,6 +39,6 @@ public interface ICuMemberAwardsService extends IService { /** * 回退奖衔 */ - void mergeCuMemberBackAwards(String rangeTableName, Long pkMember, Integer period, Integer isToday); + void mergeCuMemberBackAwards(String rangeTableName, Long pkMember, Integer period); } diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/detail/service/impl/CuMemberAwardsServiceImpl.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/detail/service/impl/CuMemberAwardsServiceImpl.java index f879110d..f98a0506 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/detail/service/impl/CuMemberAwardsServiceImpl.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/detail/service/impl/CuMemberAwardsServiceImpl.java @@ -1,21 +1,25 @@ package com.hzs.bonus.detail.service.impl; +import cn.hutool.core.collection.CollectionUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.hzs.bonus.achieve.service.ICuMemberRetailRangeService; import com.hzs.bonus.achieve.service.ICuMemberTreeService; import com.hzs.bonus.achieve.service.impl.CuMemberBonusSettle; import com.hzs.bonus.detail.service.ICuMemberAwardsService; import com.hzs.common.core.constant.*; import com.hzs.common.core.enums.*; -import com.hzs.common.core.utils.DateUtils; +import com.hzs.common.core.utils.ComputeUtil; import com.hzs.common.domain.member.achieve.ext.CuMemberRetailRangeExt; import com.hzs.common.domain.member.detail.CuMemberAwards; -import com.hzs.common.domain.member.ext.CuMemberSettleExt; import com.hzs.bonus.base.service.ICuMemberService; import com.hzs.bonus.detail.mapper.CuMemberAwardsMapper; +import com.hzs.common.domain.system.config.BdAwards; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.math.BigDecimal; import java.util.*; +import java.util.stream.Collectors; /** * 会员信息-奖衔升级记录 服务实现类 @@ -29,9 +33,11 @@ public class CuMemberAwardsServiceImpl extends ServiceImpl awardsList, Map awardsMap, Date settleDate, Integer period) { // 回退结算表奖衔 iCuMemberTreeService.updateBackCuMemberRetailRangeAward(rangeTableName, period); // 回退会员表奖衔 @@ -41,9 +47,94 @@ public class CuMemberAwardsServiceImpl extends ServiceImpl cuMemberAwardsList = new ArrayList<>(); + // 校验大小区会员数据(key:会员ID,value:会员推荐人列表) + Map> cuMemberRangeExtMap = new HashMap<>(); + + for (BdAwards bdAwards : awardsList) { + List cuMemberRetailRangeExtList = iCuMemberRetailRangeService.queryEnoughAwardMember(rangeTableName, bdAwards.getTotalCheck(), bdAwards.getPkId()); + cuMemberAwardsList.addAll(this.calculateAwards(rangeTableName, bdAwards, period, cuMemberRetailRangeExtList, cuMemberRangeExtMap)); + } + if (cuMemberAwardsList.size() > 0) { + // 插入会员升级记录表 + this.saveBatchCuMemberAwards(cuMemberAwardsList); + // 更新会员表奖衔数据 + iCuMemberService.updateCuMemberAwardsByPeriod(period); + // 更新结算网体表 -- 结算日期到当前日期的所有日结算表 + iCuMemberRetailRangeService.updateCuMemberAwardsByPeriod(rangeTableName, period); + } + } + + private List calculateAwards(String rangeTableName, BdAwards bdAwards, Integer period, + List cuMemberRetailRangeExtList, Map> cuMemberRangeExtMap) { + // 只满足业绩的 + List cuMemberAwardsList = new ArrayList<>(); + + if (cuMemberRetailRangeExtList.size() > 0) { + Date nowDate = new Date(); + + cuMemberRetailRangeExtList.forEach(targetMember -> { + List cuMemberRangeExtList = cuMemberRangeExtMap.get(targetMember.getPkMember()); + if (null == cuMemberRangeExtList) { + cuMemberRangeExtList = iCuMemberRetailRangeService.queryCuMemberRetailRangeExtByParent(rangeTableName, targetMember.getPkMember()); + cuMemberRangeExtMap.put(targetMember.getPkMember(), cuMemberRangeExtList); + } + // 大区 + BigDecimal consumeBigPv = BigDecimal.ZERO; + for (CuMemberRetailRangeExt cuMemberRetailRangeExt : cuMemberRangeExtList) { + // 累计业绩 = 团队累计消费业绩 + 个人累计消费业绩 + BigDecimal consumePv = cuMemberRetailRangeExt.getTeamConsumePv().add(cuMemberRetailRangeExt.getConsumePv()); + if (ComputeUtil.compareGreaterThan(consumePv, consumeBigPv)) { + // 累计业绩 > 大区业绩,则累计就成为大区 + consumeBigPv = consumePv; + } + } + // 小区业绩 = 团队累计业绩 - 大区业绩 + BigDecimal smallAreaPv = ComputeUtil.computeSubtract(targetMember.getTeamConsumePv(), consumeBigPv); + if (smallAreaPv.compareTo(bdAwards.getCommunityCheck()) >= 0) { + // 小区业绩 >= 考核小区业绩 + if (bdAwards.getPlaceDeptNum() > 0) { + if (CollectionUtil.isNotEmpty(cuMemberRangeExtList)) { + // 验证每条血缘下,满足达标数量 + List checkList = iCuMemberRetailRangeService.listChildAwards(rangeTableName, bdAwards.getPkCheckAwardsLeft(), + cuMemberRangeExtList.stream().map(CuMemberRetailRangeExt::getPkMember).collect(Collectors.toList())); + if (CollectionUtil.isNotEmpty(checkList) && checkList.size() >= bdAwards.getPlaceDeptNum()) { + cuMemberAwardsList.add(getCuMemberRetailAwards(targetMember, period, bdAwards, EAwardsType.RANGE_TYPE.getValue(), targetMember.getPkAwards(), nowDate)); + targetMember.setPkAwards(bdAwards.getPkId()); + targetMember.setAwardsValue(bdAwards.getAwardsValue()); + } + } + } else { + // 不需要考核血缘达标,直接给奖衔 + cuMemberAwardsList.add(getCuMemberRetailAwards(targetMember, period, bdAwards, EAwardsType.RANGE_TYPE.getValue(), targetMember.getPkAwards(), nowDate)); + targetMember.setPkAwards(bdAwards.getPkId()); + targetMember.setAwardsValue(bdAwards.getAwardsValue()); + } + } + }); + } + return cuMemberAwardsList; + } + + private CuMemberAwards getCuMemberRetailAwards(CuMemberRetailRangeExt sourceRangeExt, Integer period, BdAwards bdAwards, + Integer awardType, Integer oldLevel, Date nowDate) { + CuMemberAwards cuMemberAwards = CuMemberAwards.builder() + .pkMember(sourceRangeExt.getPkMember()) + .period(period) + .upType(EUpgradeType.AUTO_UPGRADE.getValue()) + .awardType(awardType) + .oldLevel(null == oldLevel ? sourceRangeExt.getPkAwards() : oldLevel) + .newLevel(bdAwards.getPkId()) + .purchaseStatus(EYesNo.NO.getIntValue()) + .build(); + cuMemberAwards.setPkCreator(MagicNumberConstants.PK_ADMIN); + cuMemberAwards.setPkCountry(sourceRangeExt.getPkCountry()); + cuMemberAwards.setCreationTime(nowDate); + return cuMemberAwards; } @Override @@ -64,28 +155,8 @@ public class CuMemberAwardsServiceImpl extends ServiceImpl originalCuMemberSettleMap, Integer period, List cuMemberAwardsList, CuMemberSettleExt enoughAwardsMember) { - CuMemberAwards cuMemberAwards = CuMemberAwards.builder() - .pkMember(enoughAwardsMember.getPkMember()) - .period(period) - .upType(EUpgradeType.AUTO_UPGRADE.getValue()) - // 原等级 - .oldLevel(originalCuMemberSettleMap.get(enoughAwardsMember.getPkMember()).getPkOriAwards()) - .newLevel(enoughAwardsMember.getPkAwards()) - // 默认不免考 - .purchaseStatus(EYesNo.NO.getIntValue()) - .build(); - cuMemberAwards.setPkCreator(MagicNumberConstants.PK_ADMIN); - cuMemberAwards.setPkCountry(enoughAwardsMember.getPkSettleCountry()); - cuMemberAwardsList.add(cuMemberAwards); } } 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 9aeeb940..7393201f 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 @@ -943,6 +943,48 @@ order by a.pk_parent, a.pay_time + + + + merge into ${rangeTableName} a + using ( + select pk_member, + sum(consume_pv) consume_pv, + sum(consume_amount) consume_amount, + sum(team_consume_pv) team_consume_pv, + sum(team_consume_amount) team_consume_amount + from ( + + SELECT cmr.pk_member, + DECODE(cmr.pk_member, #{item.pkMember}, #{item.newPv}, 0) AS consume_pv, + DECODE(cmr.pk_member, #{item.pkMember}, #{item.newAmount}, 0) AS consume_amount, + DECODE(cmr.pk_member, #{item.pkMember}, 0, #{item.newPv}) AS team_consume_pv, + DECODE(cmr.pk_member, #{item.pkMember}, 0, #{item.newAmount}) AS team_consume_amount + FROM ${rangeTableName} cmr + START WITH cmr.pk_member = #{item.pkMember} + CONNECT BY cmr.pk_member = PRIOR cmr.pk_parent + + ) tmp + group by pk_member + ) b + on (a.pk_member = b.pk_member) + when matched then + update set + a.consume_pv = a.consume_pv + b.consume_pv, + a.consume_amount = a.consume_amount + b.consume_amount, + a.team_consume_pv = a.team_consume_pv + b.team_consume_pv, + a.team_consume_amount = a.team_consume_amount + b.team_consume_amount + + + + + + + + + merge into ${rangeTableName} a + using ( + select pk_member, max(new_level) pk_awards + from cu_member_awards + where period = #{period} and award_type = #{awardType} + and del_flag = 0 + group by pk_member + ) b + on (a.pk_member = b.pk_member) + when matched then + update set + + a.pk_awards = b.pk_awards + + + diff --git a/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/achieve/CuMemberTreeMapper.xml b/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/achieve/CuMemberTreeMapper.xml index 05bcb42f..b193e144 100644 --- a/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/achieve/CuMemberTreeMapper.xml +++ b/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/achieve/CuMemberTreeMapper.xml @@ -77,14 +77,11 @@ - - - @@ -96,10 +93,7 @@ - - - @@ -131,8 +125,6 @@ is_bus_license NUMBER(1) default 1 not null, is_maker_space NUMBER(1) default 1 not null, pk_country number(4) default 1 not null, - store_level NUMBER(2) default 0, - is_maker_gift NUMBER(1) default 1, expire_status number(1) default 1 @@ -194,10 +186,7 @@ UPGRADE_Blo_NEW_PV NUMBER(17,6) default 0 not null, REPURCHASE_Blo_NEW_PV NUMBER(17,6) default 0 not null, HI_FUN_Blo_NEW_PV NUMBER(17,6) default 0 not null, - MALL_Blo_NEW_PV NUMBER(17,6) default 0 not null, - min_achieve number(17,6) default 0 not null, - round NUMBER(6) default 0 not null, - second NUMBER(4) default 1 not null + MALL_Blo_NEW_PV NUMBER(17,6) default 0 not null @@ -206,7 +195,7 @@ a_balance,b_balance,r_a_balance,r_b_balance,rep_a_balance,rep_b_balance,r_rep_a_balance,r_rep_b_balance, register_amount,register_pv,upgrade_amount,upgrade_pv,repurchase_amount,pk_center_code, repurchase_pv,hi_fun_amount,hi_fun_pv,mall_amount,mall_pv,category,pk_grade, - min_achieve,round,second,bg.grade_value,store_level,expire_status from ( + bg.grade_value,expire_status from ( ) a inner join bd_grade bg @@ -265,7 +254,7 @@ a_balance,b_balance,r_a_balance,r_b_balance,rep_a_balance,rep_b_balance,r_rep_a_balance,r_rep_b_balance, register_amount,register_pv,upgrade_amount,upgrade_pv,repurchase_amount,pk_center_code, repurchase_pv,hi_fun_amount,hi_fun_pv,mall_amount,mall_pv,category,pk_grade, - min_achieve,round,second,store_level,expire_status + expire_status from ${settleTableName} where pay_status = 1 start with pk_member = #{item} @@ -568,6 +557,11 @@ truncate table ${tableName} + + + delete from ${tableName} + + - diff --git a/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/base/CuMemberMapper.xml b/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/base/CuMemberMapper.xml index 6f1beb34..1567e354 100644 --- a/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/base/CuMemberMapper.xml +++ b/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/base/CuMemberMapper.xml @@ -85,7 +85,8 @@ - + + merge into cu_member a using ( select pk_member, max(new_level) pk_awards @@ -100,9 +101,6 @@ a.pk_awards = b.pk_awards, - - a.pk_range_awards = b.pk_awards, - a.modified_time = sysdate diff --git a/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/detail/CuMemberAwardsMapper.xml b/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/detail/CuMemberAwardsMapper.xml index 3780ae49..40fd08df 100644 --- a/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/detail/CuMemberAwardsMapper.xml +++ b/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/detail/CuMemberAwardsMapper.xml @@ -23,22 +23,6 @@ - - - insert ALL - - into cu_member_awards ( - pk_member, period, up_type, old_level, new_level, - purchase_status, award_type, pk_creator, pk_country, system_type - ) - values ( - #{item.pkMember}, #{item.period}, #{item.upType}, #{item.oldLevel}, #{item.newLevel}, - #{item.purchaseStatus}, #{item.awardType}, #{item.pkCreator}, #{item.pkCountry}, #{item.systemType} - ) - - SELECT 1 FROM dual - - update cu_member_awards set del_flag = 1, modified_time = sysdate, PK_MODIFIED = 1 where period= #{period} and pk_member in @@ -61,39 +45,21 @@ update set a.assess_target = b.assess_target,a.assess_status = b.assess_status - - merge into ${rangeTableName} a - using ( - select cw.* - from cu_member_awards cw - inner join ( - select ca.pk_member, min(ca.pk_id) pk_id - from cu_member_awards ca - inner join bd_awards bw - on ca.new_level = bw.pk_id - and bw.del_flag = 0 - and bw.awards_value >= 5 - where ca.del_flag = 0 - and ca.up_type = 1 - and ca.period = #{period} - and ca.award_type = #{awardType} - and ca.pk_member in - (select pk_id - from cu_member start - with pk_id = #{pkMember} - connect by prior pk_parent = pk_id) - group by ca.pk_member - ) cx on cw.pk_id = cx.pk_id where cw.del_flag = 0 - ) b on (a.pk_member = b.pk_member) - when matched then - update set - - a.pk_awards = b.old_level - - - a.pk_share_awards = b.old_level - - + + + insert ALL + + into cu_member_awards ( + pk_member, period, up_type, old_level, new_level, + purchase_status, award_type, pk_creator, pk_country + ) + values ( + #{item.pkMember}, #{item.period}, #{item.upType}, #{item.oldLevel}, #{item.newLevel}, + #{item.purchaseStatus}, #{item.awardType}, #{item.pkCreator}, #{item.pkCountry} + ) + + SELECT 1 FROM dual + @@ -115,14 +81,6 @@ #{item.pkId} - - + + merge into ${rangeTableName} a + using ( + select cw.* + from cu_member_awards cw + inner join ( + select ca.pk_member, min(ca.pk_id) pk_id + from cu_member_awards ca + inner join bd_awards bw + on ca.new_level = bw.pk_id + and bw.del_flag = 0 + and bw.awards_value >= 5 + where ca.del_flag = 0 + and ca.up_type = 1 + and ca.period = #{period} + and ca.award_type = #{awardType} + and ca.pk_member in + (select pk_id + from cu_member start + with pk_id = #{pkMember} + connect by prior pk_parent = pk_id) + group by ca.pk_member + ) cx on cw.pk_id = cx.pk_id where cw.del_flag = 0 + ) b on (a.pk_member = b.pk_member) + when matched then + update set + + a.pk_awards = b.old_level + + + - select bl.pk_id,bonus_type,first_order,second_order,third_order,fourth_order,bl.pk_country, - cal_type,bd.pk_grade from bd_bonus_direct_loop bl - inner join BD_LOOP_DETAILS bd - on bl.pk_id = bd.pk_bonus_direct - where bl.del_flag=0 and bd.del_flag=0 - - diff --git a/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/member/ext/CuMemberSettleExt.java b/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/member/ext/CuMemberSettleExt.java index 65523da5..ae1744e1 100644 --- a/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/member/ext/CuMemberSettleExt.java +++ b/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/member/ext/CuMemberSettleExt.java @@ -7,11 +7,7 @@ import lombok.EqualsAndHashCode; import java.math.BigDecimal; /** - * @Description: 日结算表,表内存储网体关系、会员业绩 - * @Author: sui q - * @Time: 2022/10/31 14:22 - * @Classname: CuMemberTreeExt - * @PackageName: com.hzs.common.domain.member.ext + * 日结算表,表内存储网体关系、会员业绩 */ @EqualsAndHashCode(callSuper = true) @Data @@ -300,21 +296,6 @@ public class CuMemberSettleExt extends CuMemberTree { */ private BigDecimal mallBloNewPv; - /** - * 循环中最小业绩 - */ - private BigDecimal minAchieve; - - /** - * 轮 - */ - private Integer round; - - /** - * 次 - */ - private Integer second; - /** * 考核类型,不入库,只用来区分复购考核跟分红考核 */ @@ -363,30 +344,11 @@ public class CuMemberSettleExt extends CuMemberTree { */ private BigDecimal historyPerformancePv; - /** - * 店铺等级 - */ - private Integer storeLevel; - - /** - * 购买创客礼包 - */ - private Integer isMakerGift; /** * 有效状态(1=有效期,2=休止期,3=已终止) */ private Integer expireStatus; - /** - * 是否买过注册 - */ - private Integer isPayReg; - - /** - * 福利比例 - */ - private BigDecimal abonusRatio; - /** * 实发收益总计 */ diff --git a/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/system/config/BdBonusDirectLoop.java b/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/system/config/BdBonusDirectLoop.java index 2902e6ed..928387bf 100644 --- a/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/system/config/BdBonusDirectLoop.java +++ b/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/system/config/BdBonusDirectLoop.java @@ -12,12 +12,7 @@ import lombok.experimental.Accessors; import java.math.BigDecimal; /** - *

* 直推循环配置 - *

- * - * @author zhangjing - * @since 2022-11-03 */ @Data @EqualsAndHashCode(callSuper = true) @@ -77,5 +72,4 @@ public class BdBonusDirectLoop extends BaseEntity { private Integer takeValueType; - } diff --git a/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/system/config/BdRepoDirectPush.java b/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/system/config/BdRepoDirectPush.java index 60cd0306..d72aac15 100644 --- a/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/system/config/BdRepoDirectPush.java +++ b/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/system/config/BdRepoDirectPush.java @@ -12,12 +12,7 @@ import lombok.experimental.Accessors; import java.math.BigDecimal; /** - *

* 复购直推配置 - *

- * - * @author zhangjing - * @since 2023-06-29 */ @Data @EqualsAndHashCode(callSuper = true) diff --git a/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/system/config/ext/BdBonusDirectLoopExt.java b/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/system/config/ext/BdBonusDirectLoopExt.java index fa9f80f6..be08afb4 100644 --- a/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/system/config/ext/BdBonusDirectLoopExt.java +++ b/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/system/config/ext/BdBonusDirectLoopExt.java @@ -2,15 +2,11 @@ package com.hzs.common.domain.system.config.ext; import com.hzs.common.domain.system.config.*; import lombok.Data; + import java.util.List; /** - *

* 直推循环配置 - *

- * - * @author zhangjing - * @since 2022-11-03 */ @Data public class BdBonusDirectLoopExt extends BdBonusDirectLoop {