## 月奖月度级差、复购级差;
This commit is contained in:
parent
d402eed6ad
commit
a5c2147cbe
|
@ -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();
|
||||
|
|
|
@ -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())
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
/**
|
||||
* 计算订单奖金累计值
|
||||
*/
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -115,16 +115,16 @@
|
|||
<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,
|
||||
|
@ -132,42 +132,35 @@
|
|||
#{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,
|
||||
#{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.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
|
||||
#{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(
|
||||
|
|
|
@ -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)));
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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),
|
||||
|
||||
;
|
||||
|
||||
|
|
|
@ -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));
|
||||
|
|
|
@ -39,17 +39,22 @@ public class CuMemberRetailRangeExt extends CuMemberRetailRange {
|
|||
private String awardsName;
|
||||
|
||||
/**
|
||||
* 极差比例
|
||||
* 福利级差比例
|
||||
*/
|
||||
private BigDecimal rangeRatio;
|
||||
|
||||
/**
|
||||
* 福利平均比例
|
||||
* 复购级差比例
|
||||
*/
|
||||
private BigDecimal monthRepurchaseRatio;
|
||||
|
||||
/**
|
||||
* 分红平均比例
|
||||
*/
|
||||
private BigDecimal benefitAvgRatio;
|
||||
|
||||
/**
|
||||
* 福利加权比例
|
||||
* 分红加权比例
|
||||
*/
|
||||
private BigDecimal benefitShareRatio;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
/**
|
||||
* 新零售福利平均收益
|
||||
*/
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
||||
/**
|
||||
* 福利平均比例
|
||||
*/
|
||||
|
|
Loading…
Reference in New Issue