Merge remote-tracking branch 'origin/dev' into dev

This commit is contained in:
sangelxiu1 2025-09-29 11:01:34 +08:00
commit 7e23a37798
7 changed files with 128 additions and 86 deletions

View File

@ -261,9 +261,9 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
// 结算期间日期后一天 // 结算期间日期后一天
Date settleEndDate = DateUtils.afterDate(1, ChronoUnit.DAYS, settleStartDate); Date settleEndDate = DateUtils.afterDate(1, ChronoUnit.DAYS, settleStartDate);
// 新零售订单注册复购 // 订单精品甄选商城五折
List<SaOrderExt> orderList = iBonusOrderService.listRetailSaOrder(settleStartDate, settleEndDate, null, List<SaOrderExt> orderList = iBonusOrderService.listRetailSaOrder(settleStartDate, settleEndDate, null,
Arrays.asList(EOrderType.RETAIL_REGISTER.getValue(), EOrderType.RETAIL_UPGRADE.getValue(), EOrderType.RETAIL_REPURCHASE.getValue())); Arrays.asList(EOrderType.RETAIL_REGISTER.getValue(), EOrderType.RETAIL_UPGRADE.getValue(), EOrderType.RETAIL_REPURCHASE.getValue(), EOrderType.DISCOUNT_ORDER.getValue()));
// 更新当月会员 将昨天业绩更到到今天更新当月会员考核结果有消费的考核通过 // 更新当月会员 将昨天业绩更到到今天更新当月会员考核结果有消费的考核通过
// 结算期间表 // 结算期间表
@ -308,12 +308,10 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
List<CuMemberAwards> cuMemberAwardsList = new ArrayList<>(); List<CuMemberAwards> cuMemberAwardsList = new ArrayList<>();
// 直推收益见点收益 // 直推收益见点收益
List<CuMemberBonusPush> cuMemberBonusPushList = new ArrayList<>(); List<CuMemberBonusPush> cuMemberBonusPushList = new ArrayList<>();
// 领导奖收益平级奖收益
List<CuMemberBonusRange> cuMemberBonusRangeList = new ArrayList<>();
// 阶段收益 // 阶段收益
List<CuMemberBonusStage> cuMemberBonusStageList = new ArrayList<>(); List<CuMemberBonusStage> cuMemberBonusStageList = new ArrayList<>();
// 复购级差收益
List<CuMemberBonusRange> cuMemberBonusRangeList = new ArrayList<>();
// 会员奖金明细
List<CuMemberBonusDetail> cuMemberBonusDetailList = new ArrayList<>();
for (SaOrderExt saOrderExt : orderList) { for (SaOrderExt saOrderExt : orderList) {
CuMemberRetailRangeExt sourceMember = memberRangeExtMap.get(saOrderExt.getPkMember()); CuMemberRetailRangeExt sourceMember = memberRangeExtMap.get(saOrderExt.getPkMember());
@ -342,30 +340,36 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
sourceMember.setRegConsumeNewPv(sourceMember.getRegConsumeNewPv().add(orderAchieve)); sourceMember.setRegConsumeNewPv(sourceMember.getRegConsumeNewPv().add(orderAchieve));
sourceMember.setRegConsumeNewAmount(sourceMember.getRegConsumeNewAmount().add(orderAmount)); sourceMember.setRegConsumeNewAmount(sourceMember.getRegConsumeNewAmount().add(orderAmount));
// 直推收益 -- 来源订单金额直推拿金额的10%
this.calculateDirectIncome(cuMemberBonusPushList, memberRangeExtMap, sourceMember, saOrderExt,
bonusConfigDTO, period, cuMemberBonusMap);
// 一阶段收益 -- 来源订单金额 // 一阶段收益 -- 来源订单金额
stageList.addAll(this.calculateStageIncome(cuMemberBonusStageList, cuMemberBonusMap, bonusConfigDTO, period, stageList.addAll(this.calculateStageIncome(cuMemberBonusStageList, cuMemberBonusMap, bonusConfigDTO, period,
memberRangeExtMap, sourceMember, saOrderExt, settleStartDate, rangeTableName, rangeDetailTableName)); memberRangeExtMap, sourceMember, saOrderExt, settleStartDate, rangeTableName, rangeDetailTableName));
// 直推收益 -- 来源订单金额直推拿金额的10%
// TODO 领导级差收益平级收益 -- 来源PV this.calculateDirectIncome(cuMemberBonusPushList, memberRangeExtMap, sourceMember, saOrderExt,
bonusConfigDTO, period, cuMemberBonusMap);
// 领导级差收益平级收益 -- 来源PV
this.calculateRetailRangeBonus(cuMemberBonusRangeList, memberRangeExtMap, cuMemberBonusMap, bonusConfigDTO, period,
awardsMap, saOrderExt, sourceMember);
} else if (EOrderType.RETAIL_REPURCHASE.getValue() == saOrderExt.getOrderType()) { } else if (EOrderType.RETAIL_REPURCHASE.getValue() == saOrderExt.getOrderType()) {
// 商城专区 // 商城专区
sourceMember.setRepConsumeNewPv(sourceMember.getRepConsumeNewPv().add(orderAchieve)); sourceMember.setRepConsumeNewPv(sourceMember.getRepConsumeNewPv().add(orderAchieve));
sourceMember.setRepConsumeNewAmount(sourceMember.getRepConsumeNewAmount().add(orderAmount)); sourceMember.setRepConsumeNewAmount(sourceMember.getRepConsumeNewAmount().add(orderAmount));
// 见点收益 -- 来源订单业绩血缘上20代每代拿业绩的10%
this.calculateRepurDirectIncome(cuMemberBonusPushList, memberRangeExtMap, sourceMember, saOrderExt,
bonusConfigDTO, period, cuMemberBonusMap);
// 一阶段收益 -- 来源订单累计业绩 // 一阶段收益 -- 来源订单累计业绩
stageList.addAll(this.calculateStageIncome(cuMemberBonusStageList, cuMemberBonusMap, bonusConfigDTO, period, stageList.addAll(this.calculateStageIncome(cuMemberBonusStageList, cuMemberBonusMap, bonusConfigDTO, period,
memberRangeExtMap, sourceMember, saOrderExt, settleStartDate, rangeTableName, rangeDetailTableName)); memberRangeExtMap, sourceMember, saOrderExt, settleStartDate, rangeTableName, rangeDetailTableName));
// 见点收益 -- 来源订单业绩血缘上20代每代拿业绩的10%
// TODO 领导级差收益平级收益 -- 来源PV this.calculateRepurDirectIncome(cuMemberBonusPushList, memberRangeExtMap, sourceMember, saOrderExt,
bonusConfigDTO, period, cuMemberBonusMap);
// 领导级差收益平级收益 -- 来源PV
this.calculateRetailRangeBonus(cuMemberBonusRangeList, memberRangeExtMap, cuMemberBonusMap, bonusConfigDTO, period,
awardsMap, saOrderExt, sourceMember);
} else if (EOrderType.DISCOUNT_ORDER.getValue() == saOrderExt.getOrderType()) {
// 五折专区
sourceMember.setRepConsumeNewPv(sourceMember.getRepConsumeNewPv().add(orderAchieve));
sourceMember.setRepConsumeNewAmount(sourceMember.getRepConsumeNewAmount().add(orderAmount));
// 领导级差收益 -- 来源PV
this.calculateRetailRangeBonus(cuMemberBonusRangeList, memberRangeExtMap, cuMemberBonusMap, bonusConfigDTO, period,
awardsMap, saOrderExt, sourceMember);
} }
} }
@ -396,14 +400,11 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
if (cuMemberBonusPushList.size() > 0) { if (cuMemberBonusPushList.size() > 0) {
bonusRecordDetailVO.setCuMemberBonusPushList(cuMemberBonusPushList); bonusRecordDetailVO.setCuMemberBonusPushList(cuMemberBonusPushList);
} }
if (cuMemberBonusStageList.size() > 0) {
bonusRecordDetailVO.setCuMemberBonusStageList(cuMemberBonusStageList);
}
if (cuMemberBonusRangeList.size() > 0) { if (cuMemberBonusRangeList.size() > 0) {
bonusRecordDetailVO.setCuMemberBonusRangeList(cuMemberBonusRangeList); bonusRecordDetailVO.setCuMemberBonusRangeList(cuMemberBonusRangeList);
} }
if (cuMemberBonusDetailList.size() > 0) { if (cuMemberBonusStageList.size() > 0) {
bonusRecordDetailVO.setCuMemberBonusDetailList(cuMemberBonusDetailList); bonusRecordDetailVO.setCuMemberBonusStageList(cuMemberBonusStageList);
} }
if (cuMemberAwardsList.size() > 0) { if (cuMemberAwardsList.size() > 0) {
// 批量插入会员奖衔记录 // 批量插入会员奖衔记录
@ -562,8 +563,10 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
} }
// 死点 停算收益 顾客 没有奖金 // 死点 停算收益 顾客 没有奖金
if (ECategory.NORMAL.getValue() != targetMember.getCategory() if (ECategory.NORMAL.getValue() != targetMember.getCategory()
|| EIncomeStatus.STOP_INCOME.getValue() == targetMember.getIncomeStatus()
|| EAccountStatus.STOP_INCOME.getValue() == targetMember.getAccountStatus()) { || EAccountStatus.STOP_INCOME.getValue() == targetMember.getAccountStatus()) {
log.warn("直推收益:订单会员推荐人不满足计算奖金条件, memberCode: {}, category: {}, accountStatus: {}", targetMember.getMemberCode(), targetMember.getCategory(), targetMember.getAccountStatus()); // 非正常会员停止收益停算收益直接跳过
log.warn("直推收益:订单会员推荐人不满足计算奖金条件, memberCode: {}", targetMember.getMemberCode());
return; return;
} }
// 订单金额 // 订单金额
@ -615,8 +618,10 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
} }
// 死点 停算收益 顾客 没有奖金 // 死点 停算收益 顾客 没有奖金
if (ECategory.NORMAL.getValue() != targetMember.getCategory() if (ECategory.NORMAL.getValue() != targetMember.getCategory()
|| EIncomeStatus.STOP_INCOME.getValue() == targetMember.getIncomeStatus()
|| EAccountStatus.STOP_INCOME.getValue() == targetMember.getAccountStatus()) { || EAccountStatus.STOP_INCOME.getValue() == targetMember.getAccountStatus()) {
log.warn("见点收益:订单会员血缘上推荐人不满足计算奖金条件, memberCode: {}, category: {}, accountStatus: {}", targetMember.getMemberCode(), targetMember.getCategory(), targetMember.getAccountStatus()); // 非正常会员停止收益停算收益直接跳过
log.warn("见点收益:订单会员血缘上推荐人不满足计算奖金条件, memberCode: {}", targetMember.getMemberCode());
return; return;
} }
pkParent = targetMember.getPkParent(); pkParent = targetMember.getPkParent();
@ -845,6 +850,15 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
giftPayTime = keyDate; giftPayTime = keyDate;
// 需要填充的直推会员 // 需要填充的直推会员
CuMemberRetailRangeExt targetMember = childRetailMap.get(keyDate); CuMemberRetailRangeExt targetMember = childRetailMap.get(keyDate);
if (ECategory.NORMAL.getValue() != targetMember.getCategory()
|| EIncomeStatus.STOP_INCOME.getValue() == targetMember.getIncomeStatus()
|| EAccountStatus.STOP_INCOME.getValue() == targetMember.getAccountStatus()) {
// 非正常会员停止收益停算收益直接跳过
log.warn("阶段收益:订单会员推荐人不满足计算奖金条件, memberCode: {}", targetMember.getMemberCode());
continue;
}
// 推荐人一阶段子点位列表 // 推荐人一阶段子点位列表
LinkedHashMap<Integer, CuMemberRetailDetail> parentDetailList = targetMember.getOneDetailMap(); LinkedHashMap<Integer, CuMemberRetailDetail> parentDetailList = targetMember.getOneDetailMap();
if (CollectionUtil.isEmpty(parentDetailList)) { if (CollectionUtil.isEmpty(parentDetailList)) {
@ -893,6 +907,14 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
} }
pkParent = targetMember.getPkParent(); pkParent = targetMember.getPkParent();
if (ECategory.NORMAL.getValue() != targetMember.getCategory()
|| EIncomeStatus.STOP_INCOME.getValue() == targetMember.getIncomeStatus()
|| EAccountStatus.STOP_INCOME.getValue() == targetMember.getAccountStatus()) {
// 非正常会员停止收益停算收益直接跳过
log.warn("阶段收益:订单会员推荐人不满足计算奖金条件, memberCode: {}", targetMember.getMemberCode());
continue;
}
// 推荐人一阶段子点位列表 // 推荐人一阶段子点位列表
LinkedHashMap<Integer, CuMemberRetailDetail> parentDetailList = null; LinkedHashMap<Integer, CuMemberRetailDetail> parentDetailList = null;
if (EBonusStage.ONE.getValue() == eBonusStage.getValue()) { if (EBonusStage.ONE.getValue() == eBonusStage.getValue()) {
@ -1013,10 +1035,9 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
int awardsValue = targetMember.getAwardsValue() + 5; int awardsValue = targetMember.getAwardsValue() + 5;
if (retailAwardsMap.containsKey(awardsValue)) { if (retailAwardsMap.containsKey(awardsValue)) {
BdAwards bdAwards = retailAwardsMap.get(awardsValue); BdAwards bdAwards = retailAwardsMap.get(awardsValue);
// 先验证累计业绩
if (ComputeUtil.compareValue(targetMember.getTeamConsumePv(), bdAwards.getTotalCheck())) { if (ComputeUtil.compareValue(targetMember.getTeamConsumePv(), bdAwards.getTotalCheck())) {
// 团队累计业绩 >= 奖衔业绩 // 团队累计业绩 >= 奖衔累计业绩
// 再验证小区计算小区业绩拉取直推会员数据
if (null == cuMemberRangeExtList) { if (null == cuMemberRangeExtList) {
// 昨日结算表查询会员直推数据 // 昨日结算表查询会员直推数据
cuMemberRangeExtList = iCuMemberRetailRangeService.queryCuMemberRetailRangeExtByParent(rangeTableName, targetMember.getPkMember()); cuMemberRangeExtList = iCuMemberRetailRangeService.queryCuMemberRetailRangeExtByParent(rangeTableName, targetMember.getPkMember());
@ -1034,11 +1055,10 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
consumeBigPv = consumePv; consumeBigPv = consumePv;
} }
} }
// 小区业绩 = 团队累计业绩 - 大区业绩
// 小区业绩 = 团队累计消费业绩 - 大区业绩
BigDecimal smallAreaPv = ComputeUtil.computeSubtract(targetMember.getTeamConsumePv(), consumeBigPv); BigDecimal smallAreaPv = ComputeUtil.computeSubtract(targetMember.getTeamConsumePv(), consumeBigPv);
if (ComputeUtil.compareValue(smallAreaPv, bdAwards.getCommunityCheck())) { if (smallAreaPv.compareTo(bdAwards.getCommunityCheck()) >= 0) {
// 小区业绩 >= 小区考核业绩 // 小区业绩 >= 考核小区业绩
if (bdAwards.getPlaceDeptNum() > 0) { if (bdAwards.getPlaceDeptNum() > 0) {
// 验证每条血缘下满足达标数量 // 验证每条血缘下满足达标数量
List<Integer> checkList = iCuMemberRetailRangeService.listChildAwards(rangeTableName, bdAwards.getPkCheckAwardsLeft(), List<Integer> checkList = iCuMemberRetailRangeService.listChildAwards(rangeTableName, bdAwards.getPkCheckAwardsLeft(),
@ -1049,6 +1069,12 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
targetMember.setAwardsValue(bdAwards.getAwardsValue()); targetMember.setAwardsValue(bdAwards.getAwardsValue());
continue; continue;
} }
} else {
// 不需要考核血缘达标直接给奖衔
cuMemberAwardsList.add(getCuMemberRetailAwards(targetMember, period, saOrderExt, bdAwards, EAwardsType.RANGE_TYPE.getValue(), targetMember.getPkAwards()));
targetMember.setPkAwards(bdAwards.getPkId());
targetMember.setAwardsValue(bdAwards.getAwardsValue());
continue;
} }
} }
} }
@ -1060,8 +1086,8 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
/** /**
* 计算团队奖衔 * 计算团队奖衔
*/ */
public List<CuMemberAwards> calculateParentAwards(Integer period, Map<Long, CuMemberRetailRangeExt> memberRangeExtMap, String rangeTableName, private List<CuMemberAwards> calculateParentAwards(Integer period, Map<Long, CuMemberRetailRangeExt> memberRangeExtMap, String rangeTableName,
CuMemberRetailRangeExt sourceMember, SaOrderExt saOrderExt, Map<Integer, BdAwards> retailAwardsMap) { CuMemberRetailRangeExt sourceMember, SaOrderExt saOrderExt, Map<Integer, BdAwards> retailAwardsMap) {
// 会员奖衔升级列表 // 会员奖衔升级列表
List<CuMemberAwards> cuMemberAwardsList = new ArrayList<>(); List<CuMemberAwards> cuMemberAwardsList = new ArrayList<>();
// 订单会员的推荐人 // 订单会员的推荐人
@ -1101,14 +1127,18 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
/** /**
* 计算领导奖平级奖 * 计算领导奖平级奖
*/ */
List<CuMemberBonusRange> calculateRetailRangeBonus(Map<Long, CuMemberRetailRangeExt> memberRangeExtMap, Map<Long, CuMemberBonus> cuMemberBonusMap, private void calculateRetailRangeBonus(List<CuMemberBonusRange> cuMemberBonusRangeList, Map<Long, CuMemberRetailRangeExt> memberRangeExtMap,
BonusConfigDTO bonusConfigDTO, Integer period, Map<Integer, BdAwards> awardsMap, Map<Long, CuMemberBonus> cuMemberBonusMap, BonusConfigDTO bonusConfigDTO, Integer period,
SaOrderExt saOrderExt, CuMemberRetailRangeExt sourceMember) { Map<Integer, BdAwards> awardsMap, SaOrderExt saOrderExt, CuMemberRetailRangeExt sourceMember) {
// 直推级差返回数据
List<CuMemberBonusRange> memberBonusRangeList = new ArrayList<>();
// 订单PV // 订单PV
BigDecimal orderAchieve = saOrderExt.getOrderAchieve(); BigDecimal orderAchieve = saOrderExt.getOrderAchieve();
if (EOrderType.RETAIL_REGISTER.getValue() == saOrderExt.getOrderType()
|| EOrderType.RETAIL_UPGRADE.getValue() == saOrderExt.getOrderType()) {
// 精品专区甄选专区最大值为350PV超过的也算350PV
if (orderAchieve.compareTo(BonusConstants.RANGE_BONUS_ACHIEVE) > 0) {
orderAchieve = BonusConstants.RANGE_BONUS_ACHIEVE;
}
}
// 领导奖从自己开始算 // 领导奖从自己开始算
long pkParent = sourceMember.getPkMember(); long pkParent = sourceMember.getPkMember();
@ -1123,15 +1153,17 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
while (true) { while (true) {
// 推荐人 // 推荐人
CuMemberRetailRangeExt targetMember = memberRangeExtMap.get(pkParent); CuMemberRetailRangeExt targetMember = memberRangeExtMap.get(pkParent);
if (targetMember == null) { if (null == targetMember) {
break; break;
} }
// 推荐人的推荐人 // 推荐人的推荐人
pkParent = targetMember.getPkParent(); pkParent = targetMember.getPkParent();
if (ECategory.NORMAL.getValue() != targetMember.getCategory() if (ECategory.NORMAL.getValue() != targetMember.getCategory()
|| EIncomeStatus.STOP_INCOME.getValue() == targetMember.getIncomeStatus()) { || EIncomeStatus.STOP_INCOME.getValue() == targetMember.getIncomeStatus()
// 非正常会员停止收益直接跳过 || EAccountStatus.STOP_INCOME.getValue() == targetMember.getAccountStatus()) {
// 非正常会员停止收益停算收益直接跳过
log.warn("领导奖或平级奖收益:订单会员推荐人不满足计算奖金条件, memberCode: {}", targetMember.getMemberCode());
continue; continue;
} }
// 当前会员奖衔值 // 当前会员奖衔值
@ -1146,10 +1178,13 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
if (calAwardsValue > beforeAwardsValue) { if (calAwardsValue > beforeAwardsValue) {
// 当前会员奖衔值大于前一个奖衔值会有领导奖级差 // 当前会员奖衔值大于前一个奖衔值会有领导奖级差
beforeRangeRatio = bdAwards.getRangeRatio().subtract(beforeRangeRatio); rangeBonusIncome = orderAchieve.multiply(bdAwards.getRangeRatio().subtract(beforeRangeRatio));
rangeBonusIncome = orderAchieve.multiply(beforeRangeRatio);
} else if (EAwards.GLOBAL_CHAIRMAN.getValue() == beforeAwardsValue && beforeSameAlgebra < 3) { beforeRangeRatio = bdAwards.getRangeRatio();
// 前一个等级是皇冠大使需要有3代平级 beforeAwardsValue = calAwardsValue;
} else if (EAwards.GLOBAL_CHAIRMAN.getValue() == beforeAwardsValue && beforeSameAlgebra < 3
&& EOrderType.DISCOUNT_ORDER.getValue() != saOrderExt.getOrderType()) {
// 前一个等级是皇冠大使需要有3代平级五折专区不走平级收益
sameBonusIncome = orderAchieve.multiply(BonusConstants.SAME_LEVEL_RATIO).multiply(bdAwards.getSameLevelRatio()); sameBonusIncome = orderAchieve.multiply(BonusConstants.SAME_LEVEL_RATIO).multiply(bdAwards.getSameLevelRatio());
beforeSameAlgebra += 1; beforeSameAlgebra += 1;
} }
@ -1170,7 +1205,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
cuMemberBonus.setRetailRangeIncome(ComputeUtil.computeAdd(cuMemberBonus.getRetailRangeIncome(), cuMemberBonusRange.getPretaxIncome())); cuMemberBonus.setRetailRangeIncome(ComputeUtil.computeAdd(cuMemberBonus.getRetailRangeIncome(), cuMemberBonusRange.getPretaxIncome()));
setRetailTotal(bdBonusDeduct, cuMemberBonus, cuMemberBonusRange); setRetailTotal(bdBonusDeduct, cuMemberBonus, cuMemberBonusRange);
} }
memberBonusRangeList.add(cuMemberBonusRange); cuMemberBonusRangeList.add(cuMemberBonusRange);
} }
if (null != sameBonusIncome) { if (null != sameBonusIncome) {
// 处理平级奖收益 // 处理平级奖收益
@ -1188,10 +1223,19 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
cuMemberBonus.setRetailSameLevelIncome(ComputeUtil.computeAdd(cuMemberBonus.getRetailSameLevelIncome(), sameLevelMemberBonusRange.getPretaxIncome())); cuMemberBonus.setRetailSameLevelIncome(ComputeUtil.computeAdd(cuMemberBonus.getRetailSameLevelIncome(), sameLevelMemberBonusRange.getPretaxIncome()));
setRetailTotal(bdBonusDeduct, cuMemberBonus, sameLevelMemberBonusRange); setRetailTotal(bdBonusDeduct, cuMemberBonus, sameLevelMemberBonusRange);
} }
memberBonusRangeList.add(sameLevelMemberBonusRange); cuMemberBonusRangeList.add(sameLevelMemberBonusRange);
}
if (EOrderType.DISCOUNT_ORDER.getValue() != saOrderExt.getOrderType()
&& EAwards.GLOBAL_CHAIRMAN.getValue() == beforeAwardsValue && beforeSameAlgebra >= 3) {
// 非五折专区有领导奖平级奖本次奖衔是最高并且已经拿满3次直接退回
break;
} else if (EOrderType.DISCOUNT_ORDER.getValue() == saOrderExt.getOrderType()
&& EAwards.GLOBAL_CHAIRMAN.getValue() == beforeAwardsValue) {
// 五折专区只有领导奖本次奖衔是最高直接退回
break;
} }
} }
return memberBonusRangeList;
} }

View File

@ -218,47 +218,34 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
void insertCuMemberBonus(String settleDate, Integer period, Map<Long, CuMemberBonus> cuMemberBonusMap, BonusRecordDetailVO bonusRecordDetailVO) { void insertCuMemberBonus(String settleDate, Integer period, Map<Long, CuMemberBonus> cuMemberBonusMap, BonusRecordDetailVO bonusRecordDetailVO) {
iCuMemberBonusPushService.deleteCuMemberBonusPush(period); iCuMemberBonusPushService.deleteCuMemberBonusPush(period);
iCuMemberBonusStageService.deleteCuMemberBonusStage(period); iCuMemberBonusStageService.deleteCuMemberBonusStage(period);
iCuMemberBonusDetailService.deleteCuMemberBonusDetail(period);
iCuMemberBonusRangeService.deleteCuMemberBonusRange(period); iCuMemberBonusRangeService.deleteCuMemberBonusRange(period);
iCuMemberBonusService.deleteCuMemberBonus(period); iCuMemberBonusService.deleteCuMemberBonus(period);
if (cuMemberBonusMap.size() == 0) { if (cuMemberBonusMap.size() == 0) {
return; return;
} }
List<CuMemberBonusPush> batchMemberBonusPushList = new ArrayList<>();
List<CuMemberBonusDetail> batchMemberBonusDetailList = new ArrayList<>();
List<CuMemberBonusRange> batchMemberBonusRangeList = new ArrayList<>();
List<CuMemberBonus> cuMemberBonusList = setCuMemberBonusSeq(settleDate, cuMemberBonusMap); List<CuMemberBonus> cuMemberBonusList = setCuMemberBonusSeq(settleDate, cuMemberBonusMap);
List<CuMemberBonusPush> cuMemberBonusPushList = bonusRecordDetailVO.getCuMemberBonusPushList(); List<CuMemberBonusPush> cuMemberBonusPushList = bonusRecordDetailVO.getCuMemberBonusPushList();
List<CuMemberBonusDetail> cuMemberBonusDetailList = bonusRecordDetailVO.getCuMemberBonusDetailList();
List<CuMemberBonusRange> cuMemberBonusRangeList = bonusRecordDetailVO.getCuMemberBonusRangeList(); List<CuMemberBonusRange> cuMemberBonusRangeList = bonusRecordDetailVO.getCuMemberBonusRangeList();
// 阶段收益奖金明细
List<CuMemberBonusStage> cuMemberBonusStageList = bonusRecordDetailVO.getCuMemberBonusStageList(); List<CuMemberBonusStage> cuMemberBonusStageList = bonusRecordDetailVO.getCuMemberBonusStageList();
if (cuMemberBonusPushList != null && cuMemberBonusPushList.size() > 0) { if (cuMemberBonusPushList != null && cuMemberBonusPushList.size() > 0) {
cuMemberBonusPushList.forEach(cuMemberBonusPush -> cuMemberBonusPushList.forEach(cuMemberBonusPush ->
cuMemberBonusPush.setPkBonus(cuMemberBonusMap.get(cuMemberBonusPush.getPkBonus()).getPkId())); cuMemberBonusPush.setPkBonus(cuMemberBonusMap.get(cuMemberBonusPush.getPkBonus()).getPkId()));
batchMemberBonusPushList.addAll(cuMemberBonusPushList); }
if (cuMemberBonusRangeList != null && cuMemberBonusRangeList.size() > 0) {
cuMemberBonusRangeList.forEach(cuMemberBonusRange ->
cuMemberBonusRange.setPkBonus(cuMemberBonusMap.get(cuMemberBonusRange.getPkBonus()).getPkId()));
} }
if (cuMemberBonusStageList != null && cuMemberBonusStageList.size() > 0) { if (cuMemberBonusStageList != null && cuMemberBonusStageList.size() > 0) {
cuMemberBonusStageList.forEach(cuMemberBonusStage -> cuMemberBonusStageList.forEach(cuMemberBonusStage ->
cuMemberBonusStage.setPkBonus(cuMemberBonusMap.get(cuMemberBonusStage.getPkBonus()).getPkId())); cuMemberBonusStage.setPkBonus(cuMemberBonusMap.get(cuMemberBonusStage.getPkBonus()).getPkId()));
} }
if (cuMemberBonusDetailList != null && cuMemberBonusDetailList.size() > 0) {
cuMemberBonusDetailList.forEach(cuMemberBonusDetail ->
cuMemberBonusDetail.setPkBonus(cuMemberBonusMap.get(cuMemberBonusDetail.getPkBonus()).getPkId()));
batchMemberBonusDetailList.addAll(cuMemberBonusDetailList);
}
if (cuMemberBonusRangeList != null && cuMemberBonusRangeList.size() > 0) {
cuMemberBonusRangeList.forEach(cuMemberBonusRange ->
cuMemberBonusRange.setPkBonus(cuMemberBonusMap.get(cuMemberBonusRange.getPkBonus()).getPkId()));
batchMemberBonusRangeList.addAll(cuMemberBonusRangeList);
}
// 插入奖金主表 // 插入奖金主表
iCuMemberBonusService.batchInsertCuMemberBonus(cuMemberBonusList); iCuMemberBonusService.batchInsertCuMemberBonus(cuMemberBonusList);
Set<Long> memberIdSet = iCuMemberBonusService.queryMemberBonusByPeriod(period); Set<Long> memberIdSet = iCuMemberBonusService.queryMemberBonusByPeriod(period);
iCuMemberBonusPushService.batchInsertCuMemberBonusPush(batchMemberBonusPushList, memberIdSet); iCuMemberBonusPushService.batchInsertCuMemberBonusPush(cuMemberBonusPushList, memberIdSet);
iCuMemberBonusRangeService.batchInsertCuMemberBonusRange(cuMemberBonusRangeList, memberIdSet);
iCuMemberBonusStageService.batchInsertCuMemberBonusStage(cuMemberBonusStageList, memberIdSet); iCuMemberBonusStageService.batchInsertCuMemberBonusStage(cuMemberBonusStageList, memberIdSet);
iCuMemberBonusDetailService.batchInsertCuMemberBonusDetail(batchMemberBonusDetailList, memberIdSet);
iCuMemberBonusRangeService.batchInsertCuMemberBonusRange(batchMemberBonusRangeList, memberIdSet);
} }
private List<CuMemberBonus> setCuMemberBonusSeq(String settleDate, Map<Long, CuMemberBonus> cuMemberBonusMap) { private List<CuMemberBonus> setCuMemberBonusSeq(String settleDate, Map<Long, CuMemberBonus> cuMemberBonusMap) {

View File

@ -22,6 +22,7 @@ import com.hzs.common.core.utils.ComputeUtil;
import com.hzs.common.core.utils.DateUtils; import com.hzs.common.core.utils.DateUtils;
import com.hzs.common.core.web.page.TableDataInfo; import com.hzs.common.core.web.page.TableDataInfo;
import com.hzs.common.domain.member.bonus.CuMemberBonus; import com.hzs.common.domain.member.bonus.CuMemberBonus;
import com.hzs.common.domain.member.bonus.CuMemberBonusRange;
import com.hzs.common.domain.member.ext.*; import com.hzs.common.domain.member.ext.*;
import com.hzs.common.domain.system.config.BdBonusItems; import com.hzs.common.domain.system.config.BdBonusItems;
import com.hzs.common.domain.system.config.ext.BdBonusItemsExt; import com.hzs.common.domain.system.config.ext.BdBonusItemsExt;
@ -400,7 +401,16 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C
// MemberBonusDetailSerVO memberBonusDetailVO = BeanUtil.copyProperties(cuMemberBonusRange, MemberBonusDetailSerVO.class); // MemberBonusDetailSerVO memberBonusDetailVO = BeanUtil.copyProperties(cuMemberBonusRange, MemberBonusDetailSerVO.class);
// memberBonusDetailSerVoS.add(memberBonusDetailVO); // memberBonusDetailSerVoS.add(memberBonusDetailVO);
// }); // });
} else if(EBonusItems.STAGE_INCOME.getValue() == bonusItemsValue) { } else if (EBonusItems.RANGE_INCOME.getValue() == bonusItemsValue
|| EBonusItems.SAME_LEVEL_INCOME.getValue() == bonusItemsValue) {
// 领导奖收益平级奖收益
List<CuMemberBonusRangeExt> cuMemberBonusRangeList = cuMemberBonusRangeMapper.queryMemberBonusRangeByBonusItemsForServer(bonusParam);
dataTable = getDataTable(cuMemberBonusRangeList);
cuMemberBonusRangeList.forEach(cuMemberBonusRange -> {
MemberBonusDetailSerVO memberBonusDetailVO = BeanUtil.copyProperties(cuMemberBonusRange, MemberBonusDetailSerVO.class);
memberBonusDetailSerVoS.add(memberBonusDetailVO);
});
} else if (EBonusItems.STAGE_INCOME.getValue() == bonusItemsValue) {
// 阶段收益 // 阶段收益
List<CuMemberBonusDetailExt> cuMemberBonusDetailList = cuMemberBonusStageMapper.queryMemberBonusStageByBonusItemsFoServer(bonusParam); List<CuMemberBonusDetailExt> cuMemberBonusDetailList = cuMemberBonusStageMapper.queryMemberBonusStageByBonusItemsFoServer(bonusParam);
dataTable = getDataTable(cuMemberBonusDetailList); dataTable = getDataTable(cuMemberBonusDetailList);

View File

@ -22,18 +22,13 @@ public class BonusRecordDetailVO implements Serializable {
*/ */
private List<CuMemberBonusPush> cuMemberBonusPushList; private List<CuMemberBonusPush> cuMemberBonusPushList;
/**
* 领导奖收益平级奖收益
*/
private List<CuMemberBonusRange> cuMemberBonusRangeList;
/** /**
* 阶段收益 * 阶段收益
*/ */
private List<CuMemberBonusStage> cuMemberBonusStageList; private List<CuMemberBonusStage> cuMemberBonusStageList;
/**
* 新零售 - 区域分红月度分红
*/
private List<CuMemberBonusDetail> cuMemberBonusDetailList;
/**
* 新零售 - 直推收益平级收益月度福利级差月度复购级差复购级差
*/
private List<CuMemberBonusRange> cuMemberBonusRangeList;
} }

View File

@ -15,6 +15,11 @@ public class BonusConstants {
*/ */
public static final BigDecimal SAME_LEVEL_RATIO = new BigDecimal("0.02"); public static final BigDecimal SAME_LEVEL_RATIO = new BigDecimal("0.02");
/**
* 领导奖处理时满350PV以上按350算
*/
public static final BigDecimal RANGE_BONUS_ACHIEVE = new BigDecimal("350");
/** /**
* 赠送2个点位订单金额 * 赠送2个点位订单金额
*/ */

View File

@ -161,9 +161,10 @@
where so.del_flag = 0 where so.del_flag = 0
) so ) so
inner join ( inner join (
select select cb.pk_member, cr.pk_order, cb.period, cb.pk_country, cr.pk_bonus_items,
cb.pk_member,cr.pk_order,cb.period,cb.pk_country,cr.pk_bonus_items,cr.income_status,cr.CAL_ACHIEVE,cr.pretax_income,cr.income_tax,cr.real_income, cr.income_status, cr.cal_achieve, cr.remark,
cr.remark,cr.income_ratio,cr.income_dial_ratio,cr.order_dial_ratio cr.pretax_income, cr.income_tax, cr.real_income,
cr.income_ratio, cr.income_dial_ratio, cr.order_dial_ratio
from cu_member_bonus cb from cu_member_bonus cb
inner join CU_MEMBER_BONUS_RANGE cr inner join CU_MEMBER_BONUS_RANGE cr
on cb.pk_id = cr.pk_bonus on cb.pk_id = cr.pk_bonus

View File

@ -27,7 +27,7 @@ public class BonusMsgConstants {
/** /**
* 领导奖收益 * 领导奖收益
*/ */
public static String RANGE = "订单编号%s,%s为%s贡献了领导奖收益,计算金额%f,前一级差奖衔名称%s,当前奖衔名称%s。"; public static String RANGE = "订单编号%s,%s为%s贡献了领导奖收益,计算业绩%f,前一级差奖衔名称%s,当前奖衔名称%s。";
/** /**
* 平级收益 * 平级收益