## 月奖月度级差、复购级差;

This commit is contained in:
cabbage 2025-06-23 11:58:10 +08:00
parent d402eed6ad
commit a5c2147cbe
14 changed files with 334 additions and 542 deletions

View File

@ -70,16 +70,6 @@ public abstract class BonusSettleHandle {
return bonusConfigDTO.getGradeMap().get(memberSettleExt.getPkSettleCountry().toString() + "_" + memberSettleExt.getPkGrade());
}
/**
* 获取主任奖衔值对应的辅导奖配置
*
* @param bonusConfigDTO 奖金参数汇总
* @param memberSettleExt 会员
*/
protected BdAwards getDirectorAwardsCouch(BonusConfigDTO bonusConfigDTO, CuMemberSettleExt memberSettleExt) {
return bonusConfigDTO.getAwardsValueMap().get(memberSettleExt.getPkSettleCountry().toString() + ERangeType.AWARDS.getValue() + EAwards.HEADER.getValue());
}
/**
* 获取奖衔对应的辅导奖配置
*
@ -293,54 +283,6 @@ public abstract class BonusSettleHandle {
});
}
/**
* 记录需要修改的会员结算表数据, 安置的
*
* @param cuMemberSettleExtMap 会员结算
* @param cuMemberSettleExtList 查询出来的结算数据
*/
protected void getSecondMemberSettle(Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, List<CuMemberSettleExt> cuMemberSettleExtList) {
cuMemberSettleExtList.forEach(cuMemberSettleExt -> {
if (cuMemberSettleExtMap.containsKey(cuMemberSettleExt.getPkMember())) {
CuMemberSettleExt memberSettleExt = cuMemberSettleExtMap.get(cuMemberSettleExt.getPkMember());
if (memberSettleExt.getPkParent() == null) {
memberSettleExt.setPkParent(cuMemberSettleExt.getPkParent());
}
if (memberSettleExt.getPkPlaceParent() == null) {
memberSettleExt.setPkPlaceParent(cuMemberSettleExt.getPkPlaceParent());
}
if (memberSettleExt.getPlaceDept() == null) {
memberSettleExt.setPlaceDept(cuMemberSettleExt.getPlaceDept());
}
if (memberSettleExt.getPkGrade() == null) {
memberSettleExt.setPkGrade(cuMemberSettleExt.getPkGrade());
}
if (memberSettleExt.getGradeValue() == null) {
memberSettleExt.setGradeValue(cuMemberSettleExt.getGradeValue());
}
if (memberSettleExt.getPkAwards() == null) {
memberSettleExt.setPkAwards(cuMemberSettleExt.getPkAwards());
}
if (memberSettleExt.getRegisterAuthority() == null) {
memberSettleExt.setRegisterAuthority(cuMemberSettleExt.getRegisterAuthority());
}
if (memberSettleExt.getCustomerType() == null) {
memberSettleExt.setCustomerType(cuMemberSettleExt.getCustomerType());
}
if (memberSettleExt.getIsMakerSpace() == null) {
memberSettleExt.setIsMakerSpace(cuMemberSettleExt.getIsMakerSpace());
}
} else {
cuMemberSettleExt.setRegisterBloNewPv(BigDecimal.ZERO);
cuMemberSettleExt.setUpgradeBloNewPv(BigDecimal.ZERO);
cuMemberSettleExt.setRepurchaseBloNewPv(BigDecimal.ZERO);
cuMemberSettleExt.setHiFunBloNewPv(BigDecimal.ZERO);
cuMemberSettleExt.setMallBloNewPv(BigDecimal.ZERO);
cuMemberSettleExtMap.put(cuMemberSettleExt.getPkMember(), cuMemberSettleExt);
}
});
}
/**
* 获得 直推收益的备注
*
@ -456,9 +398,6 @@ public abstract class BonusSettleHandle {
* @param sourceMemberRangeExt 提供奖金的人
* @param targetMemberRangeExt 获得奖金的人
* 获得 辅导收益的备注
* @return: String
* @Author: sui q
* @Date: 2022/11/17 11:22
*/
protected void coachRangeRemark(SaOrderExt saOrderExt, CuMemberBonusCoach cuMemberBonusCoach,
CuMemberRangeExt sourceMemberRangeExt, CuMemberRangeExt targetMemberRangeExt) {
@ -476,9 +415,6 @@ public abstract class BonusSettleHandle {
* @param sourceCuMemberSettleExt 提供奖金的人
* @param targetCuMemberSettleExt 获得奖金的人
* 获得 报单服务费收益的备注
* @return: String
* @Author: sui q
* @Date: 2022/11/17 11:22
*/
protected void serviceRemark(SaOrderExt saOrderExt, CuMemberBonusDetail cuMemberBonusDetail,
CuMemberSettleExt sourceCuMemberSettleExt, CuMemberSettleExt targetCuMemberSettleExt) {
@ -495,9 +431,6 @@ public abstract class BonusSettleHandle {
* @param sourceCuMemberRangeExt 提供奖金的人
* @param targetCuMemberRangeExt 获得奖金的人
* 获得 报单服务费收益的备注
* @return: String
* @Author: sui q
* @Date: 2022/11/17 11:22
*/
protected void rangeServiceRemark(SaOrderExt saOrderExt, CuMemberBonusDetail cuMemberBonusDetail,
CuMemberRangeExt sourceCuMemberRangeExt, CuMemberRangeExt targetCuMemberRangeExt) {
@ -554,55 +487,12 @@ public abstract class BonusSettleHandle {
cuMemberBonusDetail.setRemark(remark);
}
/**
* @param cuMemberBonusDetail 分红
* @param settleDate 结算日期
* 获得 分红收益的备注
* @return: String
* @Author: sui q
* @Date: 2022/11/17 11:22
*/
protected void shareCouponRemark(CuMemberBonusDetail cuMemberBonusDetail, String settleDate) {
String remark = String.format(BonusMsgConstants.SHARE_COUPON, DateUtils.getMonth(settleDate),
cuMemberBonusDetail.getPretaxIncome());
cuMemberBonusDetail.setRemark(remark);
}
/**
* @param cuMemberBonusDetail 分红
* @param settleDate 结算日期
* 获得 分红收益的备注
* @return: String
* @Author: sui q
* @Date: 2022/11/17 11:22
*/
protected void storeRemark(CuMemberBonusDetail cuMemberBonusDetail, String settleDate) {
String remark = String.format(BonusMsgConstants.STORE, DateUtils.getMonth(settleDate),
cuMemberBonusDetail.getPretaxIncome());
cuMemberBonusDetail.setRemark(remark);
}
/**
* @param cuMemberBonusDetail 分红
* 获得 分红收益的备注
* @return: String
* @Author: sui q
* @Date: 2022/11/17 11:22
*/
protected void globalShareRemark(CuMemberBonusDetail cuMemberBonusDetail, String msg) {
String remark = String.format(msg, cuMemberBonusDetail.getPretaxIncome());
cuMemberBonusDetail.setRemark(remark);
}
/**
* @param saOrderExt 订单编号
* @param cuMemberBonusRange 报单服务费
* @param sourceCuMemberSettleExt 提供奖金的人
* @param targetCuMemberSettleExt 获得奖金的人
* 获得 报单服务费收益的备注
* @return: String
* @Author: sui q
* @Date: 2022/11/17 11:22
*/
protected void rangeRemark(SaOrderExt saOrderExt, CuMemberBonusRange cuMemberBonusRange, CuMemberSettleExt sourceCuMemberSettleExt,
CuMemberSettleExt targetCuMemberSettleExt, Map<String, RangeDTO> rangePkDtoMap) {
@ -615,25 +505,6 @@ public abstract class BonusSettleHandle {
cuMemberBonusRange.setRemark(remark);
}
/**
* @param saOrderExt 订单编号
* @param cuMemberBonusRange 报单服务费
* @param sourceCuMemberSettleExt 提供奖金的人
* @param targetCuMemberSettleExt 获得奖金的人
* 获得 报单服务费收益的备注
* @return: String
* @Author: sui q
* @Date: 2022/11/17 11:22
*/
protected void rangeRemark(SaOrderExt saOrderExt, CuMemberBonusRange cuMemberBonusRange, CuMemberSettleExt sourceCuMemberSettleExt,
CuMemberSettleExt targetCuMemberSettleExt, RangeDTO parentRangeDto, RangeDTO beforeRangeDto) {
String remark = String.format(BonusMsgConstants.SHARE_RANGE, saOrderExt.getOrderCode(),
sourceCuMemberSettleExt.getMemberCode() + sourceCuMemberSettleExt.getMemberName(),
targetCuMemberSettleExt.getMemberCode() + targetCuMemberSettleExt.getMemberName(),
cuMemberBonusRange.getCalAchieve(), beforeRangeDto.getRangeName(), parentRangeDto.getRangeName());
cuMemberBonusRange.setRemark(remark);
}
/**
* 获得 直推级差收益的备注
*
@ -702,32 +573,12 @@ public abstract class BonusSettleHandle {
cuMemberBonusRange.setRemark(remark);
}
/**
* 获得 报单服务费收益的备注
*
* @param saOrder 订单编号
* @param cuMemberBonusDetail 云代首购
* @param sourceCuMemberSettleExt 提供奖金的人
* @param targetCuMemberSettleExt 获得奖金的人
*/
protected void cloudAgentRemark(SaOrder saOrder, CuMemberBonusDetail cuMemberBonusDetail, CuMemberSettleExt sourceCuMemberSettleExt,
CuMemberSettleExt targetCuMemberSettleExt, String msg) {
String remark = String.format(msg, saOrder.getOrderCode(),
sourceCuMemberSettleExt.getMemberCode() + sourceCuMemberSettleExt.getMemberName(),
targetCuMemberSettleExt.getMemberCode() + targetCuMemberSettleExt.getMemberName(),
cuMemberBonusDetail.getCalAchieve(), cuMemberBonusDetail.getCalValue());
cuMemberBonusDetail.setRemark(remark);
}
/**
* @param saOrder 订单编号
* @param cuMemberBonusDetail 云代首购
* @param sourceCuMemberSettleExt 提供奖金的人
* @param targetCuMemberSettleExt 获得奖金的人
* 获得 报单服务费收益的备注
* @return: String
* @Author: sui q
* @Date: 2022/11/17 11:22
*/
protected void repurchaseCouponsRemark(SaOrder saOrder, CuMemberBonusDetail cuMemberBonusDetail, CuMemberSettleExt sourceCuMemberSettleExt,
CuMemberSettleExt targetCuMemberSettleExt) {
@ -739,12 +590,10 @@ public abstract class BonusSettleHandle {
}
/**
* 获取会员列表的考核结果
*
* @param settleDateStr 结算日期
* @param cuMemberSettleExtList 会员列表
* 获取会员列表的考核结果
* @return: Map<Long, CuMemberAssess>
* @Author: sui q
* @Date: 2022/11/17 14:25
*/
protected Map<Long, CuMemberAssess> getLongCuMemberAssessMap(String settleDateStr, List<CuMemberSettleExt> cuMemberSettleExtList) {
if (cuMemberSettleExtList.size() == 0) {
@ -900,9 +749,6 @@ public abstract class BonusSettleHandle {
* @param settleTableName 结算表
* @param saOrderList 订单
* 根据订单获取会员的血缘父级用于嗨粉推荐复购极差
* @return: void
* @Author: sui q
* @Date: 2023/1/4 14:10
*/
protected List<CuMemberSettleExt> getMemberParentBySaOrder(Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, String settleTableName, List<SaOrderExt> saOrderList) {
Set<Long> memberSet = new HashSet<>();
@ -916,9 +762,6 @@ public abstract class BonusSettleHandle {
* @param awardsMap 奖衔
* @param parentMemberTree 会员树历史记录
* 获取会员的极差等级验证会员是否有奖衔
* @return: String
* @Author: sui q
* @Date: 2023/1/4 14:22
*/
protected String getMemberCountryKey(Map<String, BdAwards> awardsMap, CuMemberTree parentMemberTree, Map<Long, CuAwardsControl> cuAwardsControlMap) {
Integer pkAwards = getPkRealAwards(parentMemberTree.getPkMember(), parentMemberTree.getPkAwards(), cuAwardsControlMap);
@ -939,9 +782,6 @@ public abstract class BonusSettleHandle {
* @param awardsMap 奖衔
* @param parentMemberTree 会员树历史记录
* 获取会员的极差等级验证会员是否有奖衔
* @return: String
* @Author: sui q
* @Date: 2023/1/4 14:22
*/
protected String getMemberKey(Map<String, BdAwards> awardsMap, CuMemberTree parentMemberTree) {
String key = Integer.toString(ERangeType.AWARDS.getValue()) + parentMemberTree.getPkAwards();

View File

@ -8,6 +8,7 @@ import com.hzs.bonus.bonus.vo.BonusRecordDetailVO;
import com.hzs.bonus.detail.service.ICuMemberAwardsService;
import com.hzs.bonus.detail.service.ICuMemberGradeService;
import com.hzs.bonus.order.service.IBonusOrderService;
import com.hzs.common.core.config.BdConfig;
import com.hzs.common.core.constant.MagicNumberConstants;
import com.hzs.common.core.constant.RetailConstants;
import com.hzs.common.core.constant.TableNameConstants;
@ -1822,10 +1823,20 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
// 月订单列表
List<SaOrder> totalMonthOrderList = new ArrayList<>();
// 级差收益
List<CuMemberBonusRange> memberBonusRangeList = new ArrayList<>();
// 分红收益
List<CuMemberBonusDetail> memberBonusDetailList = new ArrayList<>();
// 当前年月
String month = DateUtils.getMonth(settleDateStr);
if (EEnv.TEST.getValue().equals(BdConfig.getEnv())) {
// 测试环境只查昨天订单
Date endDate = DateUtils.afterDate(1, ChronoUnit.DAYS, settleDate);
List<SaOrder> currentMonthOrderList = iBonusOrderService.listSaOrderByTime(settleDate, endDate, orderType);
totalMonthOrderList.addAll(currentMonthOrderList);
} else {
// 非测试环境
while (!DateUtils.compareDateEqual(currentMonthFirstDate, nextMonthFirstDate)) {
// 从上月第一天开始每天查一次订单查到本月第一天停止
Date endDate = DateUtils.afterDate(1, ChronoUnit.DAYS, currentMonthFirstDate);
@ -1834,6 +1845,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
totalMonthOrderList.addAll(currentMonthOrderList);
currentMonthFirstDate = endDate;
}
}
if (totalMonthOrderList.size() > 0) {
// 会员ID集合
@ -1846,7 +1858,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
cuMemberRetailRangeExtList.forEach(cuMemberRetailRangeExt ->
memberRangeExtMap.put(cuMemberRetailRangeExt.getPkMember(), cuMemberRetailRangeExt));
// 按照系将订单区分
// 按照统类型将订单区分 -- 目前只有一个系统类型
// key:会员体系value会员订单列表
Map<Integer, List<SaOrder>> orderMap = new HashMap<>();
for (SaOrder saOrder : totalMonthOrderList) {
@ -1862,36 +1874,52 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
}
}
// 计算福利极差
// 当月总pv用于计算 福利分红福利加权
// 当月总pv用于计算月度分红福利平均福利加权
for (Integer systemType : orderMap.keySet()) {
List<SaOrder> saOrders = orderMap.get(systemType);
// 月所有订单业绩注册升级复购重消
BigDecimal totalMonthConsumePv = BigDecimal.ZERO;
// new 两个月奖
// 月度级差注册升级订单从自己开始往上算最多拨出10代紧缩
// 复购级差复购订单从自己开始往上算最多拨出10代紧缩
for (SaOrder saOrder : saOrders) {
// 累计订单业绩
totalMonthConsumePv = ComputeUtil.computeAdd(totalMonthConsumePv, saOrder.getOrderAchieve());
if (EOrderType.RETAIL_REGISTER.getValue() == saOrder.getOrderType()
|| EOrderType.RETAIL_UPGRADE.getValue() == saOrder.getOrderType()) {
// 注册升级订单计算福利级差收益
// 订单会员
CuMemberRetailRangeExt sourceMemberRetailRangeExt = memberRangeExtMap.get(saOrder.getPkMember());
// 会员奖衔级差比例 -- 初始为下单会员奖衔级差比例
BigDecimal rangeRatio = sourceMemberRetailRangeExt.getRangeRatio();
// 从自己开始往上算第一个人用自己处理
long pkParent = sourceMemberRetailRangeExt.getPkMember();
while (true) {
CuMemberRetailRangeExt targetMemberRangeExt = memberRangeExtMap.get(pkParent);
if (targetMemberRangeExt == null) {
if (null == targetMemberRangeExt) {
break;
}
pkParent = targetMemberRangeExt.getPkParent();
// 只有v5 有福利奖金
if (EAccountStatus.STOP_INCOME.getValue() == targetMemberRangeExt.getAccountStatus() ||
ECategory.NORMAL.getValue() != targetMemberRangeExt.getCategory() ||
targetMemberRangeExt.getGradeValue() != EGrade.S_VIP.getValue() ||
targetMemberRangeExt.getEnableStatus() == EYesNo.NO.getIntValue() ||
EIncomeStatus.STOP_INCOME.getValue() == targetMemberRangeExt.getIncomeStatus()) {
if (EAccountStatus.STOP_INCOME.getValue() == targetMemberRangeExt.getAccountStatus()
|| ECategory.NORMAL.getValue() != targetMemberRangeExt.getCategory()
|| targetMemberRangeExt.getGradeValue() != EGrade.S_VIP.getValue()
|| targetMemberRangeExt.getEnableStatus() == EYesNo.NO.getIntValue()
|| EIncomeStatus.STOP_INCOME.getValue() == targetMemberRangeExt.getIncomeStatus()) {
// 停算收益非正常会员未激活等级不为合伙人停止收益直接跳过
continue;
}
// 当前会员奖衔级差比例
BigDecimal targetRangeRatio = targetMemberRangeExt.getRangeRatio();
if ((targetMemberRangeExt.getPkMember().equals(saOrder.getPkMember()) && ComputeUtil.compareValue(rangeRatio)) ||
ComputeUtil.compareGreaterThan(targetRangeRatio, rangeRatio)) {
if ((targetMemberRangeExt.getPkMember().equals(saOrder.getPkMember()) && ComputeUtil.compareValue(rangeRatio))
|| ComputeUtil.compareGreaterThan(targetRangeRatio, rangeRatio)) {
// 第一代是自己 并且 级差比例大于0 或者 级差比例大于前一代会员的奖衔级差比例
// 计算极差
CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, targetMemberRangeExt.getPkMember(),
targetMemberRangeExt.getIncomeStatus(), targetMemberRangeExt.getPkSettleCountry(), targetMemberRangeExt.getPkRate());
// 福利极差收益
int pkBonusItems = getPkBonusItems(bonusConfigDTO, targetMemberRangeExt.getPkSettleCountry(), EBonusItems.RETAIL_BENEFIT_RANGE_INCOME.getValue());
CuMemberBonusRange cuMemberBonusRange = getCuMemberRetailBonusRange(saOrder, targetMemberRangeExt, cuMemberBonus, pkBonusItems);
if (targetMemberRangeExt.getPkMember().equals(saOrder.getPkMember())) {
@ -1910,102 +1938,164 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
setRetailTotal(bdBonusDeduct, cuMemberBonus, cuMemberBonusRange);
}
memberBonusRangeList.add(cuMemberBonusRange);
// 下一代会员
rangeRatio = targetRangeRatio;
sourceMemberRetailRangeExt = targetMemberRangeExt;
}
}
} else if (EOrderType.RETAIL_REPURCHASE.getValue() == saOrder.getOrderType()) {
// 复购订单计算复购级差收益
// 订单会员
CuMemberRetailRangeExt sourceMemberRetailRangeExt = memberRangeExtMap.get(saOrder.getPkMember());
// 会员奖衔级差比例 -- 初始为下单会员奖衔级差比例
BigDecimal rangeRatio = sourceMemberRetailRangeExt.getMonthRepurchaseRatio();
// 从自己开始往上算第一个人用自己处理
long pkParent = sourceMemberRetailRangeExt.getPkMember();
while (true) {
CuMemberRetailRangeExt targetMemberRangeExt = memberRangeExtMap.get(pkParent);
if (null == targetMemberRangeExt) {
break;
}
pkParent = targetMemberRangeExt.getPkParent();
if (EAccountStatus.STOP_INCOME.getValue() == targetMemberRangeExt.getAccountStatus()
|| ECategory.NORMAL.getValue() != targetMemberRangeExt.getCategory()
|| targetMemberRangeExt.getGradeValue() != EGrade.S_VIP.getValue()
|| targetMemberRangeExt.getEnableStatus() == EYesNo.NO.getIntValue()
|| EIncomeStatus.STOP_INCOME.getValue() == targetMemberRangeExt.getIncomeStatus()) {
// 停算收益非正常会员未激活等级不为合伙人停止收益直接跳过
continue;
}
// 当前会员奖衔级差比例
BigDecimal targetRangeRatio = targetMemberRangeExt.getMonthRepurchaseRatio();
if ((targetMemberRangeExt.getPkMember().equals(saOrder.getPkMember()) && ComputeUtil.compareValue(rangeRatio))
|| ComputeUtil.compareGreaterThan(targetRangeRatio, rangeRatio)) {
// 第一代是自己 并且 级差比例大于0 或者 级差比例大于前一代会员的奖衔级差比例
// 计算极差
CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, targetMemberRangeExt.getPkMember(),
targetMemberRangeExt.getIncomeStatus(), targetMemberRangeExt.getPkSettleCountry(), targetMemberRangeExt.getPkRate());
// 复购级差收益
int pkBonusItems = getPkBonusItems(bonusConfigDTO, targetMemberRangeExt.getPkSettleCountry(), EBonusItems.RETAIL_MONTH_REPURCHASE_INCOME.getValue());
CuMemberBonusRange cuMemberBonusRange = getCuMemberRetailBonusRange(saOrder, targetMemberRangeExt, cuMemberBonus, pkBonusItems);
if (targetMemberRangeExt.getPkMember().equals(saOrder.getPkMember())) {
cuMemberBonusRange.setCalValue(targetRangeRatio);
} else {
cuMemberBonusRange.setCalValue(ComputeUtil.computeSubtract(targetRangeRatio, rangeRatio));
}
cuMemberBonusRange.setPretaxIncome(ComputeUtil.computeBonusMultiply(saOrder.getOrderAchieve(), cuMemberBonusRange.getCalValue()));
cuMemberBonusRange.setPkRange(targetMemberRangeExt.getPkGrade());
cuMemberBonusRange.setPkBeforeRange(sourceMemberRetailRangeExt.getPkGrade());
cuMemberBonusRange.setPkOrderItems(0L);
rangeBenefitRetailRemark(saOrder, cuMemberBonusRange, sourceMemberRetailRangeExt, targetMemberRangeExt);
BdBonusDeduct bdBonusDeduct = setBonusDetailDeduct(bonusConfigDTO, cuMemberBonusRange, saOrder.getOrderAmount(), BigDecimal.ONE);
if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusRange.getIncomeStatus()) {
cuMemberBonus.setRetailMonthRepurchaseIncome(ComputeUtil.computeAdd(cuMemberBonus.getRetailBenefitRangeIncome(), cuMemberBonusRange.getPretaxIncome()));
setRetailTotal(bdBonusDeduct, cuMemberBonus, cuMemberBonusRange);
}
memberBonusRangeList.add(cuMemberBonusRange);
// 下一代会员
rangeRatio = targetRangeRatio;
sourceMemberRetailRangeExt = targetMemberRangeExt;
}
}
}
// CAR_AWARD_POINTS 福利平均收益 SHARE_INCOME 福利收益
// 查询v5 等级 且奖衔>=S4的
List<CuMemberRetailRangeExt> memberRetailRangeExtList = iCuMemberRetailRangeService.batchQueryMemberRetailRangeByAwards(rangeTableName);
if (memberRetailRangeExtList.size() > 0) {
List<CuMemberRetailRangeExt> retailRangeExtList = iCuMemberRetailRangeService.batchQueryMemberRetailRangeByParent(rangeTableName, memberRetailRangeExtList);
Map<Long, List<CuMemberRetailRangeExt>> parentMemberRangeExtMap = new HashMap<>();
for (CuMemberRetailRangeExt cuMemberRetailRangeExt : retailRangeExtList) {
if (parentMemberRangeExtMap.containsKey(cuMemberRetailRangeExt.getPkParent())) {
parentMemberRangeExtMap.get(cuMemberRetailRangeExt.getPkParent()).add(cuMemberRetailRangeExt);
} else {
List<CuMemberRetailRangeExt> cuMemberRangeExtList = new ArrayList<>();
cuMemberRangeExtList.add(cuMemberRetailRangeExt);
parentMemberRangeExtMap.put(cuMemberRetailRangeExt.getPkParent(), cuMemberRangeExtList);
}
}
// 分类分为4 5 6 7 8 9
List<CuMemberRetailRangeExt> firstAwardsRetailRangeList = new ArrayList<>();
BigDecimal benefitAvgRatio = BigDecimal.ZERO;
BigDecimal benefitShareRatio = BigDecimal.ZERO;
BigDecimal firstConsumePv = BigDecimal.ZERO;
BigDecimal secondBenefitAvgRatio = BigDecimal.ZERO;
BigDecimal secondBenefitShareRatio = BigDecimal.ZERO;
BigDecimal secondConsumePv = BigDecimal.ZERO;
List<CuMemberRetailRangeExt> secondAwardsRetailRangeList = new ArrayList<>();
for (CuMemberRetailRangeExt cuMemberRetailRangeExt : memberRetailRangeExtList) {
if (parentMemberRangeExtMap.containsKey(cuMemberRetailRangeExt.getPkMember())) {
List<CuMemberRetailRangeExt> rangeExtList = parentMemberRangeExtMap.get(cuMemberRetailRangeExt.getPkMember());
// 计算小区
BigDecimal bigConsumePv = BigDecimal.ZERO;
for (CuMemberRetailRangeExt memberRetailRangeExt : rangeExtList) {
BigDecimal monthConsumePv = ComputeUtil.computeAdd(memberRetailRangeExt.getMonthConsumePv(), memberRetailRangeExt.getTeamMonthPv());
if (ComputeUtil.compareGreaterThan(monthConsumePv, bigConsumePv)) {
bigConsumePv = monthConsumePv;
}
}
cuMemberRetailRangeExt.setSmallAreaConsumePv(ComputeUtil.computeSubtract(cuMemberRetailRangeExt.getTeamMonthPv(), bigConsumePv));
} else {
cuMemberRetailRangeExt.setSmallAreaConsumePv(BigDecimal.ZERO);
}
if (cuMemberRetailRangeExt.getShareAwardsValue() >= EAwards.SENIOR_MANAGER.getValue() &&
cuMemberRetailRangeExt.getShareAwardsValue() <= EAwards.HIGH_CHIEF.getValue()) {
firstAwardsRetailRangeList.add(cuMemberRetailRangeExt);
benefitAvgRatio = cuMemberRetailRangeExt.getBenefitAvgRatio();
benefitShareRatio = cuMemberRetailRangeExt.getBenefitShareRatio();
firstConsumePv = ComputeUtil.computeAdd(cuMemberRetailRangeExt.getSmallAreaConsumePv(), firstConsumePv);
} else {
secondAwardsRetailRangeList.add(cuMemberRetailRangeExt);
secondBenefitAvgRatio = cuMemberRetailRangeExt.getBenefitAvgRatio();
secondBenefitShareRatio = cuMemberRetailRangeExt.getBenefitShareRatio();
secondConsumePv = ComputeUtil.computeAdd(cuMemberRetailRangeExt.getSmallAreaConsumePv(), secondConsumePv);
}
}
if (firstAwardsRetailRangeList.size() > 0) {
BigDecimal benefitAvgIncome = ComputeUtil.computeDivide(ComputeUtil.computeBonusMultiply(totalMonthConsumePv, benefitAvgRatio), BigDecimal.valueOf(firstAwardsRetailRangeList.size()));
BigDecimal benefitShareIncome = ComputeUtil.computeBonusMultiply(totalMonthConsumePv, benefitShareRatio);
for (CuMemberRetailRangeExt cuMemberRetailRangeExt : firstAwardsRetailRangeList) {
if (ECategory.NORMAL.getValue() != cuMemberRetailRangeExt.getCategory() ||
EAccountStatus.STOP_INCOME.getValue() == cuMemberRetailRangeExt.getAccountStatus() ||
EIncomeStatus.STOP_INCOME.getValue() == cuMemberRetailRangeExt.getIncomeStatus()) {
continue;
}
// 验证是否有奖金
if (validatePkBonusItems(bonusConfigDTO, cuMemberRetailRangeExt.getPkSettleCountry(), EBonusItems.RETAIL_BENEFIT_AVG_INCOME.getValue())) {
continue;
}
memberBonusDetailList.add(packageBenefitIncome(bonusConfigDTO, period, cuMemberBonusMap, month, benefitAvgRatio, benefitAvgIncome, cuMemberRetailRangeExt, EBonusItems.RETAIL_BENEFIT_AVG_INCOME.getValue(), BonusMsgConstants.RETAIL_BENEFIT_AVG_INCOME));
BigDecimal bonusIncome = ComputeUtil.computeDivide(ComputeUtil.computeMultiply(benefitShareIncome, cuMemberRetailRangeExt.getSmallAreaConsumePv()), firstConsumePv);
CuMemberBonusDetail cuMemberBonusDetail = packageBenefitIncome(bonusConfigDTO, period, cuMemberBonusMap, month, benefitShareRatio, bonusIncome, cuMemberRetailRangeExt, EBonusItems.RETAIL_BENEFIT_INCOME.getValue(), BonusMsgConstants.RETAIL_BENEFIT_INCOME);
memberBonusDetailList.add(cuMemberBonusDetail);
}
}
if (secondAwardsRetailRangeList.size() > 0) {
BigDecimal benefitAvgIncome = ComputeUtil.computeDivide(ComputeUtil.computeBonusMultiply(totalMonthConsumePv, secondBenefitAvgRatio), BigDecimal.valueOf(secondAwardsRetailRangeList.size()));
BigDecimal benefitShareIncome = ComputeUtil.computeBonusMultiply(totalMonthConsumePv, secondBenefitShareRatio);
for (CuMemberRetailRangeExt cuMemberRetailRangeExt : secondAwardsRetailRangeList) {
if (ECategory.NORMAL.getValue() != cuMemberRetailRangeExt.getCategory() ||
EAccountStatus.STOP_INCOME.getValue() == cuMemberRetailRangeExt.getAccountStatus() ||
EIncomeStatus.STOP_INCOME.getValue() == cuMemberRetailRangeExt.getIncomeStatus()) {
continue;
}
// 验证是否有奖金
if (validatePkBonusItems(bonusConfigDTO, cuMemberRetailRangeExt.getPkSettleCountry(), EBonusItems.RETAIL_BENEFIT_AVG_INCOME.getValue())) {
continue;
}
memberBonusDetailList.add(packageBenefitIncome(bonusConfigDTO, period, cuMemberBonusMap, month, secondBenefitAvgRatio, benefitAvgIncome, cuMemberRetailRangeExt, EBonusItems.RETAIL_BENEFIT_AVG_INCOME.getValue(), BonusMsgConstants.RETAIL_BENEFIT_AVG_INCOME));
BigDecimal bonusIncome = ComputeUtil.computeDivide(ComputeUtil.computeMultiply(benefitShareIncome, cuMemberRetailRangeExt.getSmallAreaConsumePv()), secondConsumePv);
CuMemberBonusDetail cuMemberBonusDetail = packageBenefitIncome(bonusConfigDTO, period, cuMemberBonusMap, month, secondBenefitShareRatio, bonusIncome, cuMemberRetailRangeExt, EBonusItems.RETAIL_BENEFIT_INCOME.getValue(), BonusMsgConstants.RETAIL_BENEFIT_INCOME);
memberBonusDetailList.add(cuMemberBonusDetail);
}
}
}
// // CAR_AWARD_POINTS 福利平均收益 SHARE_INCOME 福利收益
// // 查询v5 等级 且奖衔>=S4的
// List<CuMemberRetailRangeExt> memberRetailRangeExtList = iCuMemberRetailRangeService.batchQueryMemberRetailRangeByAwards(rangeTableName);
// if (memberRetailRangeExtList.size() > 0) {
// List<CuMemberRetailRangeExt> retailRangeExtList = iCuMemberRetailRangeService.batchQueryMemberRetailRangeByParent(rangeTableName, memberRetailRangeExtList);
// Map<Long, List<CuMemberRetailRangeExt>> parentMemberRangeExtMap = new HashMap<>();
// for (CuMemberRetailRangeExt cuMemberRetailRangeExt : retailRangeExtList) {
// if (parentMemberRangeExtMap.containsKey(cuMemberRetailRangeExt.getPkParent())) {
// parentMemberRangeExtMap.get(cuMemberRetailRangeExt.getPkParent()).add(cuMemberRetailRangeExt);
// } else {
// List<CuMemberRetailRangeExt> cuMemberRangeExtList = new ArrayList<>();
// cuMemberRangeExtList.add(cuMemberRetailRangeExt);
// parentMemberRangeExtMap.put(cuMemberRetailRangeExt.getPkParent(), cuMemberRangeExtList);
// }
// }
// // 分类分为4 5 6 7 8 9
// List<CuMemberRetailRangeExt> firstAwardsRetailRangeList = new ArrayList<>();
// BigDecimal benefitAvgRatio = BigDecimal.ZERO;
// BigDecimal benefitShareRatio = BigDecimal.ZERO;
// BigDecimal firstConsumePv = BigDecimal.ZERO;
// BigDecimal secondBenefitAvgRatio = BigDecimal.ZERO;
// BigDecimal secondBenefitShareRatio = BigDecimal.ZERO;
// BigDecimal secondConsumePv = BigDecimal.ZERO;
// List<CuMemberRetailRangeExt> secondAwardsRetailRangeList = new ArrayList<>();
// for (CuMemberRetailRangeExt cuMemberRetailRangeExt : memberRetailRangeExtList) {
// if (parentMemberRangeExtMap.containsKey(cuMemberRetailRangeExt.getPkMember())) {
// List<CuMemberRetailRangeExt> rangeExtList = parentMemberRangeExtMap.get(cuMemberRetailRangeExt.getPkMember());
// // 计算小区
// BigDecimal bigConsumePv = BigDecimal.ZERO;
// for (CuMemberRetailRangeExt memberRetailRangeExt : rangeExtList) {
// BigDecimal monthConsumePv = ComputeUtil.computeAdd(memberRetailRangeExt.getMonthConsumePv(), memberRetailRangeExt.getTeamMonthPv());
// if (ComputeUtil.compareGreaterThan(monthConsumePv, bigConsumePv)) {
// bigConsumePv = monthConsumePv;
// }
// }
// cuMemberRetailRangeExt.setSmallAreaConsumePv(ComputeUtil.computeSubtract(cuMemberRetailRangeExt.getTeamMonthPv(), bigConsumePv));
// } else {
// cuMemberRetailRangeExt.setSmallAreaConsumePv(BigDecimal.ZERO);
// }
// if (cuMemberRetailRangeExt.getShareAwardsValue() >= EAwards.SENIOR_MANAGER.getValue() &&
// cuMemberRetailRangeExt.getShareAwardsValue() <= EAwards.HIGH_CHIEF.getValue()) {
// firstAwardsRetailRangeList.add(cuMemberRetailRangeExt);
// benefitAvgRatio = cuMemberRetailRangeExt.getBenefitAvgRatio();
// benefitShareRatio = cuMemberRetailRangeExt.getBenefitShareRatio();
// firstConsumePv = ComputeUtil.computeAdd(cuMemberRetailRangeExt.getSmallAreaConsumePv(), firstConsumePv);
// } else {
// secondAwardsRetailRangeList.add(cuMemberRetailRangeExt);
// secondBenefitAvgRatio = cuMemberRetailRangeExt.getBenefitAvgRatio();
// secondBenefitShareRatio = cuMemberRetailRangeExt.getBenefitShareRatio();
// secondConsumePv = ComputeUtil.computeAdd(cuMemberRetailRangeExt.getSmallAreaConsumePv(), secondConsumePv);
// }
// }
// if (firstAwardsRetailRangeList.size() > 0) {
// BigDecimal benefitAvgIncome = ComputeUtil.computeDivide(ComputeUtil.computeBonusMultiply(totalMonthConsumePv, benefitAvgRatio), BigDecimal.valueOf(firstAwardsRetailRangeList.size()));
// BigDecimal benefitShareIncome = ComputeUtil.computeBonusMultiply(totalMonthConsumePv, benefitShareRatio);
// for (CuMemberRetailRangeExt cuMemberRetailRangeExt : firstAwardsRetailRangeList) {
// if (ECategory.NORMAL.getValue() != cuMemberRetailRangeExt.getCategory() ||
// EAccountStatus.STOP_INCOME.getValue() == cuMemberRetailRangeExt.getAccountStatus() ||
// EIncomeStatus.STOP_INCOME.getValue() == cuMemberRetailRangeExt.getIncomeStatus()) {
// continue;
// }
// // 验证是否有奖金
// if (validatePkBonusItems(bonusConfigDTO, cuMemberRetailRangeExt.getPkSettleCountry(), EBonusItems.RETAIL_BENEFIT_AVG_INCOME.getValue())) {
// continue;
// }
// memberBonusDetailList.add(packageBenefitIncome(bonusConfigDTO, period, cuMemberBonusMap, month, benefitAvgRatio,
// benefitAvgIncome, cuMemberRetailRangeExt, EBonusItems.RETAIL_BENEFIT_AVG_INCOME.getValue(), BonusMsgConstants.RETAIL_BENEFIT_AVG_INCOME));
// BigDecimal bonusIncome = ComputeUtil.computeDivide(ComputeUtil.computeMultiply(benefitShareIncome, cuMemberRetailRangeExt.getSmallAreaConsumePv()), firstConsumePv);
// CuMemberBonusDetail cuMemberBonusDetail = packageBenefitIncome(bonusConfigDTO, period, cuMemberBonusMap, month, benefitShareRatio,
// bonusIncome, cuMemberRetailRangeExt, EBonusItems.RETAIL_BENEFIT_INCOME.getValue(), BonusMsgConstants.RETAIL_BENEFIT_INCOME);
// memberBonusDetailList.add(cuMemberBonusDetail);
// }
// }
// if (secondAwardsRetailRangeList.size() > 0) {
// BigDecimal benefitAvgIncome = ComputeUtil.computeDivide(ComputeUtil.computeBonusMultiply(totalMonthConsumePv, secondBenefitAvgRatio), BigDecimal.valueOf(secondAwardsRetailRangeList.size()));
// BigDecimal benefitShareIncome = ComputeUtil.computeBonusMultiply(totalMonthConsumePv, secondBenefitShareRatio);
// for (CuMemberRetailRangeExt cuMemberRetailRangeExt : secondAwardsRetailRangeList) {
// if (ECategory.NORMAL.getValue() != cuMemberRetailRangeExt.getCategory() ||
// EAccountStatus.STOP_INCOME.getValue() == cuMemberRetailRangeExt.getAccountStatus() ||
// EIncomeStatus.STOP_INCOME.getValue() == cuMemberRetailRangeExt.getIncomeStatus()) {
// continue;
// }
// // 验证是否有奖金
// if (validatePkBonusItems(bonusConfigDTO, cuMemberRetailRangeExt.getPkSettleCountry(), EBonusItems.RETAIL_BENEFIT_AVG_INCOME.getValue())) {
// continue;
// }
// memberBonusDetailList.add(packageBenefitIncome(bonusConfigDTO, period, cuMemberBonusMap, month, secondBenefitAvgRatio,
// benefitAvgIncome, cuMemberRetailRangeExt, EBonusItems.RETAIL_BENEFIT_AVG_INCOME.getValue(), BonusMsgConstants.RETAIL_BENEFIT_AVG_INCOME));
// BigDecimal bonusIncome = ComputeUtil.computeDivide(ComputeUtil.computeMultiply(benefitShareIncome, cuMemberRetailRangeExt.getSmallAreaConsumePv()), secondConsumePv);
// CuMemberBonusDetail cuMemberBonusDetail = packageBenefitIncome(bonusConfigDTO, period, cuMemberBonusMap, month, secondBenefitShareRatio,
// bonusIncome, cuMemberRetailRangeExt, EBonusItems.RETAIL_BENEFIT_INCOME.getValue(), BonusMsgConstants.RETAIL_BENEFIT_INCOME);
// memberBonusDetailList.add(cuMemberBonusDetail);
// }
// }
// }
}
}
if (memberBonusDetailList.size() > 0) {
@ -2103,26 +2193,6 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
return cuMemberBonusCoach;
}
private CuMemberBonusRange getCuMemberBonusRange(SaOrderExt saOrderExt, CuMemberRangeExt targetMemberRangeExt,
CuMemberBonus cuMemberBonus, Integer pkBonusItems) {
CuMemberBonusRange cuMemberBonusRange = CuMemberBonusRange.builder()
.pkOrder(saOrderExt.getPkId())
.pkBonus(cuMemberBonus.getPkId())
.pkBonusItems(pkBonusItems)
// 正常还是烧伤
.incomeStatus(targetMemberRangeExt.getIncomeStatus())
.calType(ECalType.VALUE.getValue())
.calAchieve(saOrderExt.getOrderAchieve())
.calValue(BigDecimal.ZERO)
.incomeRatio(BigDecimal.ZERO)
.incomeDialRatio(BigDecimal.ZERO)
.orderDialRatio(BigDecimal.ZERO)
.build();
cuMemberBonusRange.setPkCountry(targetMemberRangeExt.getPkSettleCountry());
cuMemberBonusRange.setPkCreator(MagicNumberConstants.PK_ADMIN);
return cuMemberBonusRange;
}
private CuMemberBonusRange getCuMemberRetailBonusRange(SaOrder saOrderExt, CuMemberRetailRangeExt targetMemberRangeExt,
CuMemberBonus cuMemberBonus, Integer pkBonusItems) {
CuMemberBonusRange cuMemberBonusRange = CuMemberBonusRange.builder()
@ -2130,7 +2200,6 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
.pkOrder(saOrderExt.getPkId())
.pkBonusItems(pkBonusItems)
.pkBonus(cuMemberBonus.getPkId())
// 正常还是烧伤
.calAchieve(saOrderExt.getOrderAchieve())
.calType(ECalType.VALUE.getValue())
.calValue(BigDecimal.ZERO)
@ -2143,28 +2212,6 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
return cuMemberBonusRange;
}
/**
* 记录需要修改的会员结算表数据, 安置的
*
* @param memberRangeMap 查询出来的结算数据
*/
private Map<Long, CuMemberRangeExt> getMemberSettle(Map<Long, List<CuMemberRangeExt>> memberRangeMap) {
Map<Long, CuMemberRangeExt> memberRangeExtMap = new HashMap<>();
memberRangeMap.forEach((key, memberRangeExtList) -> {
memberRangeExtList.forEach(cuMemberSettleExt -> {
if (!memberRangeExtMap.containsKey(cuMemberSettleExt.getPkMember())) {
memberRangeExtMap.put(cuMemberSettleExt.getPkMember(), cuMemberSettleExt);
} else {
CuMemberRangeExt cuMemberRangeExt = memberRangeExtMap.get(cuMemberSettleExt.getPkMember());
if (cuMemberRangeExt.getNewTeamPv() == null) {
cuMemberRangeExt.setNewTeamPv(BigDecimal.ZERO);
}
}
});
});
return memberRangeExtMap;
}
private CuMemberAwards getCuMemberAwards(CuMemberRangeExt sourceRangeExt, Integer period, SaOrderExt saOrderExt, BdRangeAwards bdRangeAwards) {
CuMemberAwards cuMemberAwards = CuMemberAwards.builder()
.pkMember(sourceRangeExt.getPkMember())

View File

@ -5,7 +5,6 @@ import cn.hutool.core.collection.CollectionUtil;
import com.hzs.bonus.achieve.service.ICuMemberSettlePeriodService;
import com.hzs.bonus.achieve.service.ICuMemberTreeService;
import com.hzs.bonus.base.service.ICuAwardsControlService;
import com.hzs.bonus.base.service.ICuMemberService;
import com.hzs.bonus.bonus.param.BonusExpandParam;
import com.hzs.bonus.bonus.param.LeXueRangeParam;
import com.hzs.bonus.bonus.service.*;
@ -14,6 +13,7 @@ import com.hzs.bonus.bonus.vo.MemberBonusDetailCalVO;
import com.hzs.bonus.detail.service.ICuRegionAssessService;
import com.hzs.bonus.order.service.IBonusOrderService;
import com.hzs.bonus.risk.service.ICuMemberRiskControlService;
import com.hzs.common.core.config.BdConfig;
import com.hzs.common.core.constant.BonusFieldConstants;
import com.hzs.common.core.constant.MagicNumberConstants;
import com.hzs.common.core.constant.TableNameConstants;
@ -164,10 +164,17 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
bonusSettleRangeHandle.calculateRetailBonusByDay(settleDate, cuMemberBonusMap, bonusConfigDTO, recordDetailVO,
period, yesterdayPeriod, isSameMonth);
if (settleDate.endsWith("01")) {
// TODO new 每月1号需要计算4个月奖
if (EEnv.TEST.getValue().equals(BdConfig.getEnv())) {
// 测试环境每天都执行
// 计算新零售团队区域福利福利分红奖金
bonusSettleRangeHandle.calculateRetailShareBonus(settleDate, bonusConfigDTO, period, recordDetailVO, cuMemberBonusMap);
} else {
// 非测试环境
if (settleDate.endsWith("01")) {
// 计算新零售团队区域福利福利分红奖金
bonusSettleRangeHandle.calculateRetailShareBonus(settleDate, bonusConfigDTO, period, recordDetailVO, cuMemberBonusMap);
}
}
Date currentDate = DateUtils.afterDate(1, ChronoUnit.DAYS, DateUtils.parseStringToDate(settleDate));
@ -531,70 +538,6 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
// });
}
/**
* 计算首购订单的奖金
*
* @param settleTableName 结算日表
* @param settleDate 结算日期
* @param bonusConfigDTO 各个国家奖金参数
* @param purchaseOrderList 首购订单
*/
private LeXueRangeParam calculatePurchaseOrder(Map<Long, CuMemberRiskControl> riskControlMap, Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, String settleTableName, String settleDate, Map<String, RangeDTO> rangeDtoMap,
Map<String, BdAwards> awardsMap, BonusConfigDTO bonusConfigDTO, Map<String, String> systemConfigMap, List<SaOrderExt> purchaseOrderList, Integer period, Map<Long, CuMemberBonus> weekMemberBonusMap,
Map<Long, CuMemberBonus> cuMemberBonusMap, BonusRecordDetailVO bonusRecordDetailVO, Map<Long, CuAwardsControl> cuAwardsControlMap, Map<Long, CuBonusExpandExt> cuBonusExpandExtMap) {
//****************************复购直推*****************************/ 查找10代血缘验证复购考核考核通过的给与奖金 紧缩
// List<CuMemberBonusPush> cuMemberBonusPushList = bonusSettlePurchaseHandle.calculateRepurchasePushBonus(cuMemberSettleExtMap, settleTableName, settleDate, bonusConfigDTO, purchaseOrderList, period, cuMemberBonusMap);
// if (cuMemberBonusPushList.size() > 0) {
// if (bonusRecordDetailVO.getCuMemberBonusPushList() == null) {
// bonusRecordDetailVO.setCuMemberBonusPushList(cuMemberBonusPushList);
// } else {
// bonusRecordDetailVO.getCuMemberBonusPushList().addAll(cuMemberBonusPushList);
// }
// }
//****************************复购量奖*****************************/
List<CuMemberBonusExpand> cuMemberBonusExpandList = bonusSettlePurchaseHandle.calculateRepurchaseExpandBonus(riskControlMap, cuMemberSettleExtMap, settleTableName, settleDate, bonusConfigDTO, systemConfigMap, purchaseOrderList, period, weekMemberBonusMap, cuMemberBonusMap, cuBonusExpandExtMap);
if (cuMemberBonusExpandList.size() > 0) {
if (bonusRecordDetailVO.getCuMemberBonusExpandList() == null) {
bonusRecordDetailVO.setCuMemberBonusExpandList(cuMemberBonusExpandList);
} else {
bonusRecordDetailVO.getCuMemberBonusExpandList().addAll(cuMemberBonusExpandList);
}
}
LeXueRangeParam leXueRangeParam = new LeXueRangeParam();
//****************************复购极差*****************************/
List<CuMemberBonusRange> cuMemberBonusRangeList = bonusSettlePurchaseHandle.calculateRepurchaseRangeBonus(cuMemberSettleExtMap, settleTableName, settleDate, rangeDtoMap, awardsMap,
bonusConfigDTO, purchaseOrderList, period, cuMemberBonusMap, cuAwardsControlMap, leXueRangeParam);
bonusRecordDetailVO.setCuMemberBonusRangeList(cuMemberBonusRangeList);
Map<Long, MemberBonusDetailCalVO> memberBonusDetailCalVoMap = new HashMap<>(ComputeUtil.mapInitCapacity(purchaseOrderList.size()));
cuMemberBonusExpandList.forEach(cuMemberBonusExpand -> {
MemberBonusDetailCalVO memberBonusDetailCalVO = calculateOrderRatio(memberBonusDetailCalVoMap, cuMemberBonusExpand);
memberBonusDetailCalVO.setRepExpandIncome(ComputeUtil.computeAdd(memberBonusDetailCalVO.getRepExpandIncome(), cuMemberBonusExpand.getRealIncome()));
});
cuMemberBonusRangeList.forEach(cuMemberBonusRange -> {
MemberBonusDetailCalVO memberBonusDetailCalVO = calculateOrderRatio(memberBonusDetailCalVoMap, cuMemberBonusRange);
memberBonusDetailCalVO.setRepRangeIncome(ComputeUtil.computeAdd(memberBonusDetailCalVO.getRepRangeIncome(), cuMemberBonusRange.getRealIncome()));
});
Map<Long, SaOrderExt> saOrderExtMap = new HashMap<>(ComputeUtil.mapInitCapacity(purchaseOrderList.size()));
purchaseOrderList.forEach(saOrderExt ->
saOrderExtMap.put(saOrderExt.getPkId(), saOrderExt));
// 复购拓展
cuMemberBonusExpandList.forEach(cuMemberBonusExpand -> {
MemberBonusDetailCalVO memberBonusDetailCalVO = memberBonusDetailCalVoMap.get(cuMemberBonusExpand.getPkOrder());
SaOrderExt saOrderExt = saOrderExtMap.get(memberBonusDetailCalVO.getPkOrder());
cuMemberBonusExpand.setIncomeDialRatio(ComputeUtil.computeDivide(memberBonusDetailCalVO.getRepExpandIncome(), memberBonusDetailCalVO.getRealIncome()));
cuMemberBonusExpand.setOrderDialRatio(ComputeUtil.computeDivide(memberBonusDetailCalVO.getRealIncome(), saOrderExt.getOrderAmount()));
});
// 复购极差
cuMemberBonusRangeList.forEach(cuMemberBonusRange -> {
MemberBonusDetailCalVO memberBonusDetailCalVO = memberBonusDetailCalVoMap.get(cuMemberBonusRange.getPkOrder());
SaOrderExt saOrderExt = saOrderExtMap.get(memberBonusDetailCalVO.getPkOrder());
cuMemberBonusRange.setIncomeDialRatio(ComputeUtil.computeDivide(memberBonusDetailCalVO.getRepRangeIncome(), memberBonusDetailCalVO.getRealIncome()));
cuMemberBonusRange.setOrderDialRatio(ComputeUtil.computeDivide(memberBonusDetailCalVO.getRealIncome(), saOrderExt.getOrderAmount()));
});
// 插入奖金表 奖金明细表
return leXueRangeParam;
}
/**
* 计算订单奖金累计值
*/

View File

@ -535,7 +535,7 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C
rspData.setCode(HttpStatus.SUCCESS);
rspData.setRows(list);
rspData.setMsg("查询成功");
rspData.setTotal(new PageInfo(list).getTotal());
rspData.setTotal(new PageInfo<>(list).getTotal());
return rspData;
}

View File

@ -51,6 +51,7 @@
<result column="AWARDS_VALUE" property="awardsValue"/>
<result column="SHARE_AWARDS_VALUE" property="shareAwardsValue"/>
<result column="RANGE_RATIO" property="rangeRatio"/>
<result column="MONTH_REPURCHASE_RATIO" property="monthRepurchaseRatio"/>
<result column="BENEFIT_AVG_RATIO" property="benefitAvgRatio"/>
<result column="BENEFIT_SHARE_RATIO" property="benefitShareRatio"/>
<result column="COUNTRY_NAME" property="countryName"/>
@ -349,6 +350,7 @@
a.big_team_pv,
a.small_team_pv,
bw.range_ratio,
bw.month_repurchase_ratio,
bw.benefit_avg_ratio,
bw.benefit_share_ratio,
br.name country_name
@ -415,6 +417,7 @@
bw.awards_name,
bws.awards_value share_awards_value,
bw.range_ratio,
bw.month_repurchase_ratio,
bw.benefit_avg_ratio,
bw.benefit_share_ratio,
br.name country_name
@ -433,10 +436,12 @@
<select id="batchQueryMemberRetailRangeByMemberPk" resultMap="CuMemberRetailRangeExt">
<foreach collection="memberPkList" item="item" close=" " open=" " separator="union">
select pk_member,c.pk_parent,member_code,member_name,c.pk_awards,c.pk_grade,c.pk_rate,c.enable_status,
c.income_status,c.pk_country,c.pk_settle_country,c.account_status,c.category,bwa.awards_value share_awards_value,
bg.grade_value,bg.grade_name,bw.awards_value,bw.awards_name,c.pk_share_awards,c.system_type,
bw.range_ratio,bw.benefit_avg_ratio,bw.benefit_share_ratio
select pk_member, member_code, member_name, c.pk_parent, c.pk_awards, c.pk_grade,
c.pk_rate, c.enable_status, c.income_status, c.pk_country, c.pk_settle_country,
c.account_status, c.category, c.system_type,
bg.grade_value, bg.grade_name, bw.awards_value, bw.awards_name,
c.pk_share_awards, bwa.awards_value share_awards_value,
bw.range_ratio, bw.month_repurchase_ratio, bw.benefit_avg_ratio, bw.benefit_share_ratio
from (
select *
from ${rangeTableName}
@ -474,6 +479,7 @@
a.month_consume_pv,
a.team_month_pv,
bw.range_ratio,
bw.month_repurchase_ratio,
bw.benefit_avg_ratio,
bw.benefit_share_ratio
from ${rangeTableName} a
@ -492,7 +498,8 @@
a.income_status,a.pk_country,a.pk_settle_country,a.account_status,a.category,
bg.grade_value,bg.grade_name,bw.awards_value,bw.awards_name,a.month_consume_pv,
a.team_month_pv,
bw.range_ratio,bw.benefit_avg_ratio,bw.benefit_share_ratio from ${rangeTableName} a
bw.range_ratio, bw.month_repurchase_ratio, bw.benefit_avg_ratio,bw.benefit_share_ratio
from ${rangeTableName} a
inner join bd_awards bw
on bw.pk_id=a.pk_awards
inner join bd_grade bg
@ -527,6 +534,7 @@
a.account_status,
a.category,
bw.range_ratio,
bw.month_repurchase_ratio,
bw.benefit_avg_ratio,
bw.benefit_share_ratio,
a.system_type
@ -566,6 +574,7 @@
cm.category,
cm.system_type,
bw.range_ratio,
bw.month_repurchase_ratio,
bw.benefit_avg_ratio,
bw.benefit_share_ratio,
nvl(nvl(sc.enable_status, r.enable_status), 1) enable_status
@ -633,6 +642,7 @@
bw.awards_value,
bw.awards_name,
bw.range_ratio,
bw.month_repurchase_ratio,
bw.benefit_avg_ratio,
bw.benefit_share_ratio,
bws.awards_value share_awards_value,

View File

@ -115,59 +115,52 @@
<insert id="batchInsertCuMemberBonus">
merge into cu_member_bonus cb
using(
select pk_id,pk_member,period,pk_rate,direct_income,expand_income,expand_no_capping,
expand_capping,coach_income,share_income,service_income,back_points,service_spend,
pur_real_subtotal,repur_push_income,repur_range_income,repur_expand_income,repur_real_subtotal,
cloud_direct_income,cloud_pur_income,cloud_repur_income,cloud_real_subtotal,
repur_coupon,repur_coupon_share,repur_coupon_subtotal,global_points,
car_award_points,store_income,hi_fun_income,hai_fun_income,
maker_direct_income,maker_share_income,maker_real_subtotal,real_income_total,
pk_country,pk_creator,grant_status,income_status,retail_range_income,retail_same_level_income,
retail_area_income,retail_benefit_range_income,retail_benefit_avg_income,retail_benefit_income,
retail_real_subtotal from(
select pk_id, pk_member, period, pk_rate, direct_income,
expand_income, expand_no_capping, expand_capping, coach_income,
share_income, service_income, back_points, service_spend,
pur_real_subtotal, repur_push_income, repur_range_income, repur_expand_income,
repur_real_subtotal, repur_coupon, repur_coupon_share, repur_coupon_subtotal,
store_income, real_income_total, pk_country, pk_creator, grant_status, income_status,
retail_range_income, retail_same_level_income, retail_area_income,
retail_benefit_range_income, retail_month_repurchase_income,
retail_benefit_avg_income, retail_benefit_income, retail_real_subtotal
from (
<foreach item="item" index="index" collection="cuMemberBonusList" separator=" union ">
select #{item.pkId} pk_id,#{item.pkMember} pk_member,#{item.period} period,#{item.pkRate,jdbcType=INTEGER} pk_rate,
#{item.directIncome} direct_income,#{item.expandIncome} expand_income,#{item.expandNoCapping} expand_no_capping,
#{item.expandCapping} expand_capping,#{item.coachIncome} coach_income,#{item.shareIncome} share_income,
#{item.serviceIncome} service_income,#{item.backPoints} back_points,#{item.serviceSpend} service_spend,
#{item.purRealSubtotal} pur_real_subtotal,#{item.repurPushIncome} repur_push_income,#{item.repurRangeIncome} repur_range_income,
#{item.repurExpandIncome} repur_expand_income,#{item.repurRealSubtotal} repur_real_subtotal,
#{item.cloudDirectIncome} cloud_direct_income,#{item.cloudPurIncome} cloud_pur_income,
#{item.cloudRepurIncome} cloud_repur_income,#{item.cloudRealSubtotal} cloud_real_subtotal,
#{item.repurCoupon} repur_coupon,#{item.repurCouponShare} repur_coupon_share,
#{item.repurCouponSubtotal} repur_coupon_subtotal,#{item.globalPoints} global_points,
#{item.carAwardPoints} car_award_points,#{item.storeIncome} store_income,#{item.hiFunIncome} hi_fun_income,
#{item.haiFunIncome} hai_fun_income,#{item.makerDirectIncome} maker_direct_income,
#{item.makerShareIncome} maker_share_income,#{item.makerRealSubtotal} maker_real_subtotal,#{item.realIncomeTotal} real_income_total,
select #{item.pkId} pk_id, #{item.pkMember} pk_member, #{item.period} period, #{item.pkRate,jdbcType=INTEGER} pk_rate,
#{item.directIncome} direct_income, #{item.expandIncome} expand_income, #{item.expandNoCapping} expand_no_capping,
#{item.expandCapping} expand_capping, #{item.coachIncome} coach_income, #{item.shareIncome} share_income,
#{item.serviceIncome} service_income, #{item.backPoints} back_points, #{item.serviceSpend} service_spend,
#{item.purRealSubtotal} pur_real_subtotal, #{item.repurPushIncome} repur_push_income, #{item.repurRangeIncome} repur_range_income,
#{item.repurExpandIncome} repur_expand_income, #{item.repurRealSubtotal} repur_real_subtotal,
#{item.repurCoupon} repur_coupon, #{item.repurCouponShare} repur_coupon_share,
#{item.repurCouponSubtotal} repur_coupon_subtotal, #{item.storeIncome} store_income, #{item.realIncomeTotal} real_income_total,
#{item.pkCountry} pk_country,#{item.pkCreator} pk_creator,#{item.grantStatus} grant_status,#{item.incomeStatus} income_status,
#{item.retailRangeIncome} retail_range_income,#{item.retailSameLevelIncome} retail_same_level_income,
#{item.retailAreaIncome} retail_area_income,#{item.retailBenefitRangeIncome} retail_benefit_range_income,
#{item.retailBenefitAvgIncome} retail_benefit_avg_income,#{item.retailBenefitIncome} retail_benefit_income,
#{item.retailRealSubtotal} retail_real_subtotal from dual
#{item.retailRangeIncome} retail_range_income, #{item.retailSameLevelIncome} retail_same_level_income, #{item.retailAreaIncome} retail_area_income,
#{item.retailBenefitRangeIncome} retail_benefit_range_income, #{item.retailMonthRepurchaseIncome} retail_month_repurchase_income,
#{item.retailBenefitAvgIncome} retail_benefit_avg_income, #{item.retailBenefitIncome} retail_benefit_income,
#{item.retailRealSubtotal} retail_real_subtotal
from dual
</foreach>) )b
on (cb.pk_member=b.pk_member and cb.period=b.period)
WHEN NOT MATCHED THEN
insert(pk_id,pk_member,period,pk_rate,direct_income,expand_income,expand_no_capping,
expand_capping,coach_income,share_income,service_income,back_points,service_spend,
pur_real_subtotal,repur_push_income,repur_range_income,repur_expand_income,repur_real_subtotal,
cloud_direct_income,cloud_pur_income,cloud_repur_income,cloud_real_subtotal,
repur_coupon,repur_coupon_share,repur_coupon_subtotal,global_points,
car_award_points,store_income,hi_fun_income,hai_fun_income,
maker_direct_income,maker_share_income,maker_real_subtotal,real_income_total,
repur_coupon,repur_coupon_share,repur_coupon_subtotal,
store_income, real_income_total,
pk_country,pk_creator,grant_status,income_status,retail_range_income,retail_same_level_income,
retail_area_income,retail_benefit_range_income,retail_benefit_avg_income,retail_benefit_income,
retail_real_subtotal)
values(b.pk_id,b.pk_member,b.period,b.pk_rate,b.direct_income,b.expand_income,b.expand_no_capping,
b.expand_capping,b.coach_income,b.share_income,b.service_income,b.back_points,b.service_spend,
b.pur_real_subtotal,b.repur_push_income,b.repur_range_income,b.repur_expand_income,b.repur_real_subtotal,
b.cloud_direct_income,b.cloud_pur_income,b.cloud_repur_income,b.cloud_real_subtotal,
b.repur_coupon,b.repur_coupon_share,b.repur_coupon_subtotal,b.global_points,
b.car_award_points,b.store_income,b.hi_fun_income,b.hai_fun_income,
b.maker_direct_income,b.maker_share_income,b.maker_real_subtotal,b.real_income_total,
b.repur_coupon,b.repur_coupon_share,b.repur_coupon_subtotal,
b.store_income, b.real_income_total,
b.pk_country,b.pk_creator,b.grant_status,b.income_status,b.retail_range_income,b.retail_same_level_income,
b.retail_area_income,b.retail_benefit_range_income,b.retail_benefit_avg_income,b.retail_benefit_income,
b.retail_real_subtotal)
</insert>
<insert id="insertOrUpdateCuMemberBonus">
merge into cu_member_bonus a
using(

View File

@ -53,7 +53,7 @@ public class BdBonusItemsController extends BaseController {
if (StringUtils.isNotNull(bonusItems.getBonusName())) {
queryWrapper.eq(BdBonusItems::getBonusName, bonusItems.getBonusName());
}
queryWrapper.orderByAsc(BdBonusItems::getPkId);
queryWrapper.orderByAsc(BdBonusItems::getBonusValue);
List<BdBonusItems> list = bonusItemsService.list(queryWrapper);
list.forEach(item -> listExt.add(BeanUtil.copyProperties(item, BdBonusItemsExt.class)));
@ -73,7 +73,7 @@ public class BdBonusItemsController extends BaseController {
if (StringUtils.isNotNull(bonusItems.getBonusName())) {
queryWrapper.eq(BdBonusItems::getBonusName, bonusItems.getBonusName());
}
queryWrapper.orderByAsc(BdBonusItems::getPkId);
queryWrapper.orderByAsc(BdBonusItems::getBonusValue);
List<BdBonusItemsExt> listExt = new ArrayList<>();
List<BdBonusItems> list = bonusItemsService.list(queryWrapper);
list.forEach(item -> listExt.add(BeanUtil.copyProperties(item, BdBonusItemsExt.class)));
@ -92,7 +92,7 @@ public class BdBonusItemsController extends BaseController {
if (StringUtils.isNotNull(bonusItems.getBonusName())) {
queryWrapper.eq(BdBonusItems::getBonusName, bonusItems.getBonusName());
}
queryWrapper.orderByAsc(BdBonusItems::getPkId);
queryWrapper.orderByAsc(BdBonusItems::getBonusValue);
List<ApiBdBonusItemsVO> listVO = new ArrayList<>();
List<BdBonusItems> list = bonusItemsService.list(queryWrapper);
list.forEach(item -> listVO.add(BeanUtil.copyProperties(item, ApiBdBonusItemsVO.class)));

View File

@ -2,35 +2,4 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hzs.system.config.mapper.BdBonusItemsMapper">
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="com.hzs.common.domain.system.config.BdBonusItems">
<id column="PK_ID" property="pkId" />
<result column="DEL_FLAG" property="delFlag" />
<result column="PK_COUNTRY" property="pkCountry" />
<result column="CREATION_TIME" property="creationTime" />
<result column="MODIFIED_TIME" property="modifiedTime" />
<result column="PK_CREATOR" property="pkCreator" />
<result column="PK_MODIFIED" property="pkModified" />
<result column="BONUS_NAME" property="bonusName" />
<result column="PK_TRANSACTION" property="pkTransaction" />
<result column="BONUS_VALUE" property="bonusValue" />
<result column="ENABLE_STATE" property="enableState" />
<result column="SETTLE_TYPE" property="settleType" />
<result column="PUBLISH_TIME" property="publishTime" />
<result column="PUBLISH_DATE" property="publishDate" />
<result column="GRANT_DATE" property="grantDate" />
<result column="WITHDRAWAL_DATE" property="withdrawalDate" />
</resultMap>
<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
DEL_FLAG,
PK_COUNTRY,
CREATION_TIME,
MODIFIED_TIME,
PK_CREATOR,
PK_MODIFIED,
PK_ID, BONUS_NAME, PK_TRANSACTION, BONUS_VALUE, ENABLE_STATE, SETTLE_TYPE, PUBLISH_TIME, PUBLISH_DATE, GRANT_DATE, WITHDRAWAL_DATE
</sql>
</mapper>

View File

@ -99,29 +99,27 @@ public enum EBonusItems {
*/
RETAIL_AREA_INCOME(27, "区域分红", 0, EnumsPrefixConstants.BONUS_ITEMS + 27),
/**
* 福利极差收益 -- 月结月奖
*/
RETAIL_BENEFIT_RANGE_INCOME(30, "福利级差收益", 0, EnumsPrefixConstants.BONUS_ITEMS + 30),
/**
* 复购级差收益 -- 月结月奖
*/
RETAIL_MONTH_REPURCHASE_INCOME(31, "复购级差收益", 0, EnumsPrefixConstants.BONUS_ITEMS + 31),
/**
* 月度分红 - 平均收益新零售福利平均收益 -- 月结月奖
*/
RETAIL_BENEFIT_AVG_INCOME(28, "月度分红平均收益", 0, EnumsPrefixConstants.BONUS_ITEMS + 28),
/**
* 月度分红 - 加权收益新零售福利加权收益 -- 月结月奖
*/
RETAIL_BENEFIT_INCOME(29, "月度分红加权收益", 0, EnumsPrefixConstants.BONUS_ITEMS + 29),
/**
* 培育津贴 -- 月结月奖
*/
RETAIL_COACHING_INCOME(32, "培育津贴", 0, EnumsPrefixConstants.BONUS_ITEMS + 32),
/**
* 旧新零售福利极差收益新零售福利极差收益
* 月度分红 - 平均收益福利平均收益 -- 月结月奖
*/
RETAIL_BENEFIT_RANGE_INCOME(30, "旧新零售福利极差收益", 0, EnumsPrefixConstants.BONUS_ITEMS + 30),
RETAIL_BENEFIT_AVG_INCOME(28, "分红平均收益", 0, EnumsPrefixConstants.BONUS_ITEMS + 28),
/**
* 月度分红 - 加权收益福利加权收益 -- 月结月奖
*/
RETAIL_BENEFIT_INCOME(29, "分红加权收益", 0, EnumsPrefixConstants.BONUS_ITEMS + 29),
;

View File

@ -50,36 +50,30 @@ public class ComputeUtil {
}
/**
* 统一的减法计算方法
*
* @param subtract 值1
* @param subtract1 值2
* 统一的减法计算方法
* @return: BigDecimal
* @Author: sui q
* @Date: 2022/9/20 21:09
*/
public static BigDecimal computeSubtract(BigDecimal subtract, BigDecimal subtract1) {
return subtract.subtract(subtract1);
}
/**
* 统一的减法计算方法, 向下取整
*
* @param subtract 值1
* @param subtract1 值2
* @Description: 统一的减法计算方法, 向下取整
* @return: BigDecimal
* @Author: sui q
* @Date: 2022/9/20 21:09
*/
public static BigDecimal computeSubtractAbs(BigDecimal subtract, BigDecimal subtract1) {
return subtract.subtract(subtract1).abs();
}
/**
* 统一的除法计算方法, 向下取整
*
* @param value1 值1
* @param value2 值2
* @Description: 统一的除法计算方法, 向下取整
* @return: BigDecimal
* @Author: sui q
* @Date: 2022/9/20 21:09
*/
public static BigDecimal obtainMinAchieve(BigDecimal value1, BigDecimal value2) {
if (compareValue(value1, value2)) {
@ -147,11 +141,9 @@ public class ComputeUtil {
}
/**
* 比较大小前面的值大于等于后面的值
*
* @param value1 值1
* @Description: 比较大小前面的值大于等于后面的值
* @return: Boolean
* @Author: sui q
* @Date: 2022/9/20 21:23
*/
public static Boolean compareValue(BigDecimal value1) {
if (value1.compareTo(BigDecimal.ZERO) > 0) {
@ -161,12 +153,10 @@ public class ComputeUtil {
}
/**
* 乘法
*
* @param value1 值1
* @param value2 值2
* @Description: 乘法
* @return: BigDecimal
* @Author: sui q
* @Date: 2022/9/24 14:54
*/
public static BigDecimal computeMultiply(BigDecimal value1, Object value2) {
if (null == value1) {
@ -188,9 +178,6 @@ public class ComputeUtil {
*
* @param value1
* @param value2 比例
* @return: BigDecimal
* @Author: sui q
* @Date: 2022/11/14 17:02
*/
public static BigDecimal computeBonusMultiply(BigDecimal value1, BigDecimal value2) {
return value1.multiply(value2).multiply(BigDecimal.valueOf(0.01));
@ -200,9 +187,6 @@ public class ComputeUtil {
* 计算奖金计算一半
*
* @param value1
* @return: BigDecimal
* @Author: sui q
* @Date: 2022/11/14 17:02
*/
public static BigDecimal computeMultiplyHalf(BigDecimal value1) {
return value1.multiply(BigDecimal.valueOf(0.5));
@ -212,21 +196,16 @@ public class ComputeUtil {
* 计算奖金计算实际
*
* @param value1
* @return: BigDecimal
* @Author: sui q
* @Date: 2022/11/14 17:02
*/
public static BigDecimal computeMultiplyReal(BigDecimal value1, BigDecimal ratio) {
return computeBonusMultiply(value1, computeSubtract(BigDecimal.valueOf(100), ratio));
}
/**
* 乘法
*
* @param value1 值1
* @param value2 值2
* @Description: 乘法
* @return: BigDecimal
* @Author: sui q
* @Date: 2022/9/24 14:54
*/
public static BigDecimal computeAddNum(BigDecimal value1, BigDecimal... value2) {
BigDecimal value = null != value1 ? value1 : BigDecimal.ZERO;
@ -237,24 +216,20 @@ public class ComputeUtil {
}
/**
* 乘法
*
* @param value1 值1
* @param value2 值2
* @Description: 乘法
* @return: BigDecimal
* @Author: sui q
* @Date: 2022/9/24 14:54
*/
public static BigDecimal computeAdd(BigDecimal value1, BigDecimal value2) {
return value1.add(value2);
}
/**
* 乘法
*
* @param value1 值1
* @param value2 值2
* @Description: 乘法
* @return: BigDecimal
* @Author: sui q
* @Date: 2022/9/24 14:54
*/
public static BigDecimal computeAddMultiply(BigDecimal value1, BigDecimal value2, Object value3) {
return value1.add(computeMultiply(value2, value3));

View File

@ -39,17 +39,22 @@ public class CuMemberRetailRangeExt extends CuMemberRetailRange {
private String awardsName;
/**
* 差比例
* 福利级差比例
*/
private BigDecimal rangeRatio;
/**
* 福利平均比例
* 复购级差比例
*/
private BigDecimal monthRepurchaseRatio;
/**
* 分红平均比例
*/
private BigDecimal benefitAvgRatio;
/**
* 福利加权比例
* 分红加权比例
*/
private BigDecimal benefitShareRatio;

View File

@ -242,11 +242,17 @@ public class CuMemberBonus extends BaseEntity {
private BigDecimal retailAreaIncome;
/**
* 新零售福利差收益
* 新零售福利差收益
*/
@TableField("RETAIL_BENEFIT_RANGE_INCOME")
private BigDecimal retailBenefitRangeIncome;
/**
* 新零售复购级差收益
*/
@TableField("RETAIL_MONTH_REPURCHASE_INCOME")
private BigDecimal retailMonthRepurchaseIncome;
/**
* 新零售福利平均收益
*/

View File

@ -77,13 +77,13 @@ public class CuMemberBonusRange extends BaseEntity {
private BigDecimal calValue;
/**
* 差等级
* 差等级
*/
@TableField("PK_RANGE")
private Integer pkRange;
/**
* 前一差等级
* 前一差等级
*/
@TableField("PK_BEFORE_RANGE")
private Integer pkBeforeRange;

View File

@ -198,11 +198,17 @@ public class BdAwards extends BaseEntity {
private BigDecimal shareTotalCheck;
/**
* 差比例
* 福利级差比例
*/
@TableField("RANGE_RATIO")
private BigDecimal rangeRatio;
/**
* 复购级差比例
*/
@TableField("MONTH_REPURCHASE_RATIO")
private BigDecimal monthRepurchaseRatio;
/**
* 福利平均比例
*/