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 7f065cd8..f3e2d996 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,8 +8,6 @@ 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.Date; import java.util.List; /** @@ -68,11 +66,6 @@ public interface CuMemberRetailRangeMapper extends BaseMapper queryCuMemberRetailRangeExtByParent(@Param("tableName") String tableName, @Param("pkParent") Long pkParent); - /** - * 查询推荐人伞下满足 - */ - List queryCuMemberRetailRangeEnoughAchieve(@Param("tableName") String tableName, @Param("pkParent") Long pkParent, @Param("achievePv") BigDecimal achievePv); - /** * 根据会员查询会员上的所有网体, 按照pkParent作为key,查询极差秒接表 */ @@ -112,19 +105,11 @@ public interface CuMemberRetailRangeMapper extends BaseMapper memberList, @Param("updateType") Integer updateType, @Param("symbol") String symbol); @@ -136,4 +121,11 @@ public interface CuMemberRetailRangeMapper extends BaseMapper listChildRetail(@Param("rangeTableName") String rangeTableName, @Param("pkParentList") List pkParentList); + /** + * 查询会员血缘下达标奖衔会员 + */ + List listChildAwards(@Param("rangeTableName") String rangeTableName, + @Param("pkAwards") Integer pkAwards, + @Param("childMemberList") List childMemberList); + } 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 e9a7eb2e..8d6cba58 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 @@ -6,10 +6,8 @@ import com.hzs.common.domain.member.achieve.ext.CuMemberRetailRangeExt; import com.hzs.common.domain.member.base.CuMember; 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.Date; import java.util.List; import java.util.Map; @@ -38,11 +36,6 @@ public interface ICuMemberRetailRangeService extends IService queryCuMemberRetailRangeExtByParent(String tableName, Long pkParent); - /** - * 查询推荐人伞下满足 - */ - List queryCuMemberRetailRangeEnoughAchieve(String tableName, Long pkParent, BigDecimal achievePv); - /** * 根据会员查询会员上的所有网体, 按照pkParent作为key,查询极差秒接表 */ @@ -88,4 +81,10 @@ public interface ICuMemberRetailRangeService extends IService pkMemberList, Integer updateType, String symbol); void initMemberRetailSecondRange(String tableName, CuMemberExt member); + + /** + * 查询会员血缘下达标奖衔会员 + */ + List listChildAwards(String rangeTableName, Integer pkAwards, List childMemberList); + } 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 91841667..648a498c 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 @@ -71,11 +71,6 @@ public class CuMemberRetailRangeServiceImpl extends ServiceImpl queryCuMemberRetailRangeEnoughAchieve(String tableName, Long pkParent, BigDecimal achievePv) { - return baseMapper.queryCuMemberRetailRangeEnoughAchieve(tableName, pkParent, achievePv); - } - @Override public List queryCuMemberSecondRangeParent(String rangeTableName, String secondTableName, Long pkMember) { // 查询伞上 @@ -177,4 +172,18 @@ public class CuMemberRetailRangeServiceImpl extends ServiceImpl cuMemberTreeList.add(value)); return cuMemberBonusSettle.handleCutList(cuMemberTreeList); } + + @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); + if (tmpCheckList.size() > 0) { + checkList.addAll(tmpCheckList); + } + }); + return checkList; + } + } diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/base/mapper/CuMemberMapper.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/base/mapper/CuMemberMapper.java index f5bd31ab..d845838c 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/base/mapper/CuMemberMapper.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/base/mapper/CuMemberMapper.java @@ -21,15 +21,6 @@ public interface CuMemberMapper extends BaseMapper { */ int updateCuMemberRetailAwardsByPeriod(@Param("period") Integer period, @Param("awardType") Integer awardType); - /** - * 更新会员最高奖衔 - * - * @param period - * @param awardType - * @return - */ - int updateCuMemberMaxAwardsByPeriod(@Param("period") Integer period, @Param("awardType") Integer awardType); - /** * 更新会员奖衔根据临时表 * 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 22016d13..da9e3ba3 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 @@ -25,8 +25,6 @@ public class CuMemberServiceImpl extends ServiceImpl i @Override public void updateCuMemberRetailRangeByPeriod(Integer period) { baseMapper.updateCuMemberRetailAwardsByPeriod(period, EAwardsType.RANGE_TYPE.getValue()); - // 更新会员最高奖衔 - baseMapper.updateCuMemberMaxAwardsByPeriod(period, EAwardsType.RANGE_TYPE.getValue()); } @Override 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 23498c70..cb7a5263 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 @@ -339,10 +339,10 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { sourceMember.setNewConsumeAmount(orderAmount); sourceMember.setConsumeAmount(sourceMember.getConsumeAmount().add(orderAmount)); sourceMember.setMonthConsumeAmount(sourceMember.getMonthConsumeAmount().add(orderAmount)); -// // 自己计算奖衔 +// // 自己计算奖衔,目前业绩都只往下传,所以此处暂时不需要处理订单会员的奖衔 // this.calculateAwards(period, memberRangeExtMap, rangeTableName, saOrderExt, retailAwardsMap, cuMemberAwardsList, sourceMember); // 累计团队业绩、金额 + 计算奖衔 - this.calculateParentAwards(period, memberRangeExtMap, rangeTableName, sourceMember, saOrderExt, retailAwardsMap); + cuMemberAwardsList.addAll(this.calculateParentAwards(period, memberRangeExtMap, rangeTableName, sourceMember, saOrderExt, retailAwardsMap)); if (EOrderType.RETAIL_REGISTER.getValue() == saOrderExt.getOrderType() || EOrderType.RETAIL_UPGRADE.getValue() == saOrderExt.getOrderType()) { @@ -833,6 +833,9 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { memberRangeExtMap, saOrderExt, settleDate, rangeTableName, rangeDetailTableName, EBonusStage.ONE, sourceMember, newRetailDetail, returnRetailDetailList); } + pointCount += newPointInt; + sourceMember.setPointCount(pointCount); + // 待激活点位 int waitPointCount = sourceMember.getWaitPointCount(); if (waitPointCount != 0) { @@ -867,7 +870,6 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { } sourceMember.setWaitPointCount(waitPointCount); } - sourceMember.setPointCount(sourceMember.getPointCount() + newPointInt); return returnRetailDetailList; } @@ -1092,8 +1094,6 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { CuMemberRetailRangeExt targetMember) { // 校验大小区会员数据 List cuMemberRangeExtList = null; - // 校验累计小部门会员数据 - List cuMemberRetailRangeExtList = null; // 计算分红奖衔 while (true) { // 当月奖衔值 + 5,获取下一个奖衔值 @@ -1122,39 +1122,22 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { } } -// // 小区业绩 = 团队累计消费业绩 - 大区业绩 -// BigDecimal smallAreaPv = ComputeUtil.computeSubtract(targetMember.getTeamConsumePv(), consumeBigPv); -// if (ComputeUtil.compareValue(smallAreaPv, bdAwards.getShareCommunityCheck())) { -// // 小区业绩 >= 小区考核业绩 -// if (bdAwards.getPlaceDeptNum() > 0) { -// // 验证是否有多个区满足业绩 -// if (null == cuMemberRetailRangeExtList) { -// // 昨日结算表,查询订单会员直推数据 -// cuMemberRetailRangeExtList = iCuMemberRetailRangeService.queryCuMemberRetailRangeEnoughAchieve(rangeTableName, targetMember.getPkMember(), bdAwards.getShareCommunityCheck()); -// } -// -// int enoughNum = 0; -// if (ComputeUtil.compareValue(targetMember.getMonthConsumePv(), bdAwards.getShareCommunityCheck())) { -// enoughNum += 1; -// } -// for (CuMemberRetailRangeExt cuMemberRetailRangeExt : cuMemberRetailRangeExtList) { -// if (memberRangeExtMap.containsKey(cuMemberRetailRangeExt.getPkMember())) { -// cuMemberRetailRangeExt = memberRangeExtMap.get(cuMemberRetailRangeExt.getPkMember()); -// } -// if (ComputeUtil.compareValue(ComputeUtil.computeAdd(cuMemberRetailRangeExt.getMonthConsumePv(), cuMemberRetailRangeExt.getAllTeamMonthPv()), bdAwards.getShareCommunityCheck())) { -// // 本人月消费业绩 + 团队月消费业绩 >= 小区考核业绩,则满足条件小部门 +1 -// enoughNum += 1; -// } -// } -// if (bdAwards.getPlaceDeptNum() > enoughNum) { -// break; -// } -// } -// cuMemberAwardsList.add(getCuMemberRetailAwards(targetMember, period, saOrderExt, bdAwards, EAwardsType.SHARE_TYPE.getValue(), targetMember.getPkShareAwards())); -// targetMember.setAwardsValue(bdAwards.getAwardsValue()); -// targetMember.setPkAwards(bdAwards.getPkId()); -// continue; -// } + // 小区业绩 = 团队累计消费业绩 - 大区业绩 + BigDecimal smallAreaPv = ComputeUtil.computeSubtract(targetMember.getTeamConsumePv(), consumeBigPv); + if (ComputeUtil.compareValue(smallAreaPv, bdAwards.getCommunityCheck())) { + // 小区业绩 >= 小区考核业绩 + 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; + } + } + } } } break; 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 40c0e08a..9aeeb940 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 @@ -59,6 +59,7 @@ + @@ -552,6 +553,7 @@ , a.pk_share_awards = b.pk_range_awards + UPDATE ${tableName} SET @@ -570,6 +572,7 @@ WHERE PK_MEMBER = #{cuMember.pkId} + UPDATE ${tableName} SET @@ -589,6 +592,7 @@ #{member.pkId} + INSERT INTO ${tableName} ("PK_MEMBER", "PK_PARENT", @@ -827,6 +831,7 @@ bw.awards_value, bw.awards_name, bw.range_ratio, + bw.same_level_ratio, bws.awards_value share_awards_value from ( select * @@ -864,24 +869,6 @@ and cm.del_flag = 0 - - + + + 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 66baa0b0..6f1beb34 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 @@ -106,23 +106,6 @@ a.modified_time = sysdate - - merge into cu_member a - using (select c1.* - from (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) c1 - inner join cu_member c2 - on c1.pk_member = c2.pk_id - and c1.pk_awards > c2.pk_max_awards) b - on (a.pk_id = b.pk_member) - when matched then - update set a.pk_max_awards = b.pk_awards, a.modified_time = sysdate - - merge into cu_member a @@ -197,9 +180,12 @@ a.modified_time = sysdate + diff --git a/bd-common/bd-common-core/src/main/java/com/hzs/common/core/constant/MagicNumberConstants.java b/bd-common/bd-common-core/src/main/java/com/hzs/common/core/constant/MagicNumberConstants.java index ccf25238..894be219 100644 --- a/bd-common/bd-common-core/src/main/java/com/hzs/common/core/constant/MagicNumberConstants.java +++ b/bd-common/bd-common-core/src/main/java/com/hzs/common/core/constant/MagicNumberConstants.java @@ -40,7 +40,7 @@ public class MagicNumberConstants { /** * 查询条数 */ - public static final Integer BATCH_QUERY_NUM = 300; + public static final Integer BATCH_QUERY_NUM = 450; /** * 系统管理员主键 diff --git a/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/member/achieve/ext/CuMemberRetailRangeExt.java b/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/member/achieve/ext/CuMemberRetailRangeExt.java index 3dc5bb72..f9561fc6 100644 --- a/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/member/achieve/ext/CuMemberRetailRangeExt.java +++ b/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/member/achieve/ext/CuMemberRetailRangeExt.java @@ -36,9 +36,13 @@ public class CuMemberRetailRangeExt extends CuMemberRetailRange { private String awardsName; /** - * 福利级差比例 + * 领导奖级差比例 */ private BigDecimal rangeRatio; + /** + * 领导奖平级比例 + */ + private BigDecimal sameLevelRatio; /** * 小区业绩 diff --git a/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/system/config/BdAwards.java b/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/system/config/BdAwards.java index 40f0a0a7..29542378 100644 --- a/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/system/config/BdAwards.java +++ b/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/system/config/BdAwards.java @@ -92,16 +92,14 @@ public class BdAwards extends BaseEntity { private BigDecimal carAwardPoints; /** - * 左区奖衔 + * 考核奖衔 */ - @Transaction(transactionKey = EnumsPrefixConstants.KEY_AWARD) @TableField(value = "PK_CHECK_AWARDS_LEFT", jdbcType = JdbcType.NUMERIC, updateStrategy = FieldStrategy.IGNORED) private Integer pkCheckAwardsLeft; /** * 右区奖衔 */ - @Transaction(transactionKey = EnumsPrefixConstants.KEY_AWARD) @TableField(value = "PK_CHECK_AWARDS_RIGHT", jdbcType = JdbcType.NUMERIC, updateStrategy = FieldStrategy.IGNORED) private Integer pkCheckAwardsRight; @@ -159,7 +157,7 @@ public class BdAwards extends BaseEntity { private Integer systemType; /** - * 部门数量 + * 考核部门数量 */ @TableField("PLACE_DEPT_NUM") private Integer placeDeptNum;