## 月奖月度级差、复购级差;
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());
|
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 sourceMemberRangeExt 提供奖金的人
|
||||||
* @param targetMemberRangeExt 获得奖金的人
|
* @param targetMemberRangeExt 获得奖金的人
|
||||||
* 获得 辅导收益的备注
|
* 获得 辅导收益的备注
|
||||||
* @return: String
|
|
||||||
* @Author: sui q
|
|
||||||
* @Date: 2022/11/17 11:22
|
|
||||||
*/
|
*/
|
||||||
protected void coachRangeRemark(SaOrderExt saOrderExt, CuMemberBonusCoach cuMemberBonusCoach,
|
protected void coachRangeRemark(SaOrderExt saOrderExt, CuMemberBonusCoach cuMemberBonusCoach,
|
||||||
CuMemberRangeExt sourceMemberRangeExt, CuMemberRangeExt targetMemberRangeExt) {
|
CuMemberRangeExt sourceMemberRangeExt, CuMemberRangeExt targetMemberRangeExt) {
|
||||||
|
@ -476,9 +415,6 @@ public abstract class BonusSettleHandle {
|
||||||
* @param sourceCuMemberSettleExt 提供奖金的人
|
* @param sourceCuMemberSettleExt 提供奖金的人
|
||||||
* @param targetCuMemberSettleExt 获得奖金的人
|
* @param targetCuMemberSettleExt 获得奖金的人
|
||||||
* 获得 报单服务费收益的备注
|
* 获得 报单服务费收益的备注
|
||||||
* @return: String
|
|
||||||
* @Author: sui q
|
|
||||||
* @Date: 2022/11/17 11:22
|
|
||||||
*/
|
*/
|
||||||
protected void serviceRemark(SaOrderExt saOrderExt, CuMemberBonusDetail cuMemberBonusDetail,
|
protected void serviceRemark(SaOrderExt saOrderExt, CuMemberBonusDetail cuMemberBonusDetail,
|
||||||
CuMemberSettleExt sourceCuMemberSettleExt, CuMemberSettleExt targetCuMemberSettleExt) {
|
CuMemberSettleExt sourceCuMemberSettleExt, CuMemberSettleExt targetCuMemberSettleExt) {
|
||||||
|
@ -495,9 +431,6 @@ public abstract class BonusSettleHandle {
|
||||||
* @param sourceCuMemberRangeExt 提供奖金的人
|
* @param sourceCuMemberRangeExt 提供奖金的人
|
||||||
* @param targetCuMemberRangeExt 获得奖金的人
|
* @param targetCuMemberRangeExt 获得奖金的人
|
||||||
* 获得 报单服务费收益的备注
|
* 获得 报单服务费收益的备注
|
||||||
* @return: String
|
|
||||||
* @Author: sui q
|
|
||||||
* @Date: 2022/11/17 11:22
|
|
||||||
*/
|
*/
|
||||||
protected void rangeServiceRemark(SaOrderExt saOrderExt, CuMemberBonusDetail cuMemberBonusDetail,
|
protected void rangeServiceRemark(SaOrderExt saOrderExt, CuMemberBonusDetail cuMemberBonusDetail,
|
||||||
CuMemberRangeExt sourceCuMemberRangeExt, CuMemberRangeExt targetCuMemberRangeExt) {
|
CuMemberRangeExt sourceCuMemberRangeExt, CuMemberRangeExt targetCuMemberRangeExt) {
|
||||||
|
@ -554,55 +487,12 @@ public abstract class BonusSettleHandle {
|
||||||
cuMemberBonusDetail.setRemark(remark);
|
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 saOrderExt 订单编号
|
||||||
* @param cuMemberBonusRange 报单服务费
|
* @param cuMemberBonusRange 报单服务费
|
||||||
* @param sourceCuMemberSettleExt 提供奖金的人
|
* @param sourceCuMemberSettleExt 提供奖金的人
|
||||||
* @param targetCuMemberSettleExt 获得奖金的人
|
* @param targetCuMemberSettleExt 获得奖金的人
|
||||||
* 获得 报单服务费收益的备注
|
* 获得 报单服务费收益的备注
|
||||||
* @return: String
|
|
||||||
* @Author: sui q
|
|
||||||
* @Date: 2022/11/17 11:22
|
|
||||||
*/
|
*/
|
||||||
protected void rangeRemark(SaOrderExt saOrderExt, CuMemberBonusRange cuMemberBonusRange, CuMemberSettleExt sourceCuMemberSettleExt,
|
protected void rangeRemark(SaOrderExt saOrderExt, CuMemberBonusRange cuMemberBonusRange, CuMemberSettleExt sourceCuMemberSettleExt,
|
||||||
CuMemberSettleExt targetCuMemberSettleExt, Map<String, RangeDTO> rangePkDtoMap) {
|
CuMemberSettleExt targetCuMemberSettleExt, Map<String, RangeDTO> rangePkDtoMap) {
|
||||||
|
@ -615,25 +505,6 @@ public abstract class BonusSettleHandle {
|
||||||
cuMemberBonusRange.setRemark(remark);
|
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);
|
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 saOrder 订单编号
|
||||||
* @param cuMemberBonusDetail 云代首购
|
* @param cuMemberBonusDetail 云代首购
|
||||||
* @param sourceCuMemberSettleExt 提供奖金的人
|
* @param sourceCuMemberSettleExt 提供奖金的人
|
||||||
* @param targetCuMemberSettleExt 获得奖金的人
|
* @param targetCuMemberSettleExt 获得奖金的人
|
||||||
* 获得 报单服务费收益的备注
|
* 获得 报单服务费收益的备注
|
||||||
* @return: String
|
|
||||||
* @Author: sui q
|
|
||||||
* @Date: 2022/11/17 11:22
|
|
||||||
*/
|
*/
|
||||||
protected void repurchaseCouponsRemark(SaOrder saOrder, CuMemberBonusDetail cuMemberBonusDetail, CuMemberSettleExt sourceCuMemberSettleExt,
|
protected void repurchaseCouponsRemark(SaOrder saOrder, CuMemberBonusDetail cuMemberBonusDetail, CuMemberSettleExt sourceCuMemberSettleExt,
|
||||||
CuMemberSettleExt targetCuMemberSettleExt) {
|
CuMemberSettleExt targetCuMemberSettleExt) {
|
||||||
|
@ -739,12 +590,10 @@ public abstract class BonusSettleHandle {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* 获取会员列表的考核结果
|
||||||
|
*
|
||||||
* @param settleDateStr 结算日期
|
* @param settleDateStr 结算日期
|
||||||
* @param cuMemberSettleExtList 会员列表
|
* @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) {
|
protected Map<Long, CuMemberAssess> getLongCuMemberAssessMap(String settleDateStr, List<CuMemberSettleExt> cuMemberSettleExtList) {
|
||||||
if (cuMemberSettleExtList.size() == 0) {
|
if (cuMemberSettleExtList.size() == 0) {
|
||||||
|
@ -900,9 +749,6 @@ public abstract class BonusSettleHandle {
|
||||||
* @param settleTableName 结算表
|
* @param settleTableName 结算表
|
||||||
* @param saOrderList 订单
|
* @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) {
|
protected List<CuMemberSettleExt> getMemberParentBySaOrder(Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, String settleTableName, List<SaOrderExt> saOrderList) {
|
||||||
Set<Long> memberSet = new HashSet<>();
|
Set<Long> memberSet = new HashSet<>();
|
||||||
|
@ -916,9 +762,6 @@ public abstract class BonusSettleHandle {
|
||||||
* @param awardsMap 奖衔
|
* @param awardsMap 奖衔
|
||||||
* @param parentMemberTree 会员树历史记录
|
* @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) {
|
protected String getMemberCountryKey(Map<String, BdAwards> awardsMap, CuMemberTree parentMemberTree, Map<Long, CuAwardsControl> cuAwardsControlMap) {
|
||||||
Integer pkAwards = getPkRealAwards(parentMemberTree.getPkMember(), parentMemberTree.getPkAwards(), cuAwardsControlMap);
|
Integer pkAwards = getPkRealAwards(parentMemberTree.getPkMember(), parentMemberTree.getPkAwards(), cuAwardsControlMap);
|
||||||
|
@ -939,9 +782,6 @@ public abstract class BonusSettleHandle {
|
||||||
* @param awardsMap 奖衔
|
* @param awardsMap 奖衔
|
||||||
* @param parentMemberTree 会员树历史记录
|
* @param parentMemberTree 会员树历史记录
|
||||||
* 获取会员的极差等级,验证会员是否有奖衔
|
* 获取会员的极差等级,验证会员是否有奖衔
|
||||||
* @return: String
|
|
||||||
* @Author: sui q
|
|
||||||
* @Date: 2023/1/4 14:22
|
|
||||||
*/
|
*/
|
||||||
protected String getMemberKey(Map<String, BdAwards> awardsMap, CuMemberTree parentMemberTree) {
|
protected String getMemberKey(Map<String, BdAwards> awardsMap, CuMemberTree parentMemberTree) {
|
||||||
String key = Integer.toString(ERangeType.AWARDS.getValue()) + parentMemberTree.getPkAwards();
|
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.ICuMemberAwardsService;
|
||||||
import com.hzs.bonus.detail.service.ICuMemberGradeService;
|
import com.hzs.bonus.detail.service.ICuMemberGradeService;
|
||||||
import com.hzs.bonus.order.service.IBonusOrderService;
|
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.MagicNumberConstants;
|
||||||
import com.hzs.common.core.constant.RetailConstants;
|
import com.hzs.common.core.constant.RetailConstants;
|
||||||
import com.hzs.common.core.constant.TableNameConstants;
|
import com.hzs.common.core.constant.TableNameConstants;
|
||||||
|
@ -1822,17 +1823,28 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
||||||
|
|
||||||
// 月订单列表
|
// 月订单列表
|
||||||
List<SaOrder> totalMonthOrderList = new ArrayList<>();
|
List<SaOrder> totalMonthOrderList = new ArrayList<>();
|
||||||
|
// 级差收益
|
||||||
List<CuMemberBonusRange> memberBonusRangeList = new ArrayList<>();
|
List<CuMemberBonusRange> memberBonusRangeList = new ArrayList<>();
|
||||||
|
// 分红收益
|
||||||
List<CuMemberBonusDetail> memberBonusDetailList = new ArrayList<>();
|
List<CuMemberBonusDetail> memberBonusDetailList = new ArrayList<>();
|
||||||
// 当前年月
|
// 当前年月
|
||||||
String month = DateUtils.getMonth(settleDateStr);
|
String month = DateUtils.getMonth(settleDateStr);
|
||||||
while (!DateUtils.compareDateEqual(currentMonthFirstDate, nextMonthFirstDate)) {
|
|
||||||
// 从上月第一天开始,每天查一次订单,查到本月第一天停止
|
if (EEnv.TEST.getValue().equals(BdConfig.getEnv())) {
|
||||||
Date endDate = DateUtils.afterDate(1, ChronoUnit.DAYS, currentMonthFirstDate);
|
// 测试环境,只查昨天订单
|
||||||
// 查询指定时间范围内订单
|
Date endDate = DateUtils.afterDate(1, ChronoUnit.DAYS, settleDate);
|
||||||
List<SaOrder> currentMonthOrderList = iBonusOrderService.listSaOrderByTime(currentMonthFirstDate, endDate, orderType);
|
List<SaOrder> currentMonthOrderList = iBonusOrderService.listSaOrderByTime(settleDate, endDate, orderType);
|
||||||
totalMonthOrderList.addAll(currentMonthOrderList);
|
totalMonthOrderList.addAll(currentMonthOrderList);
|
||||||
currentMonthFirstDate = endDate;
|
} else {
|
||||||
|
// 非测试环境
|
||||||
|
while (!DateUtils.compareDateEqual(currentMonthFirstDate, nextMonthFirstDate)) {
|
||||||
|
// 从上月第一天开始,每天查一次订单,查到本月第一天停止
|
||||||
|
Date endDate = DateUtils.afterDate(1, ChronoUnit.DAYS, currentMonthFirstDate);
|
||||||
|
// 查询指定时间范围内订单
|
||||||
|
List<SaOrder> currentMonthOrderList = iBonusOrderService.listSaOrderByTime(currentMonthFirstDate, endDate, orderType);
|
||||||
|
totalMonthOrderList.addAll(currentMonthOrderList);
|
||||||
|
currentMonthFirstDate = endDate;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (totalMonthOrderList.size() > 0) {
|
if (totalMonthOrderList.size() > 0) {
|
||||||
|
@ -1846,7 +1858,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
||||||
cuMemberRetailRangeExtList.forEach(cuMemberRetailRangeExt ->
|
cuMemberRetailRangeExtList.forEach(cuMemberRetailRangeExt ->
|
||||||
memberRangeExtMap.put(cuMemberRetailRangeExt.getPkMember(), cuMemberRetailRangeExt));
|
memberRangeExtMap.put(cuMemberRetailRangeExt.getPkMember(), cuMemberRetailRangeExt));
|
||||||
|
|
||||||
// 按照体系将订单区分
|
// 按照系统类型将订单区分 -- 目前只有一个系统类型
|
||||||
// key:会员体系,value:会员订单列表
|
// key:会员体系,value:会员订单列表
|
||||||
Map<Integer, List<SaOrder>> orderMap = new HashMap<>();
|
Map<Integer, List<SaOrder>> orderMap = new HashMap<>();
|
||||||
for (SaOrder saOrder : totalMonthOrderList) {
|
for (SaOrder saOrder : totalMonthOrderList) {
|
||||||
|
@ -1862,150 +1874,228 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 计算福利极差
|
// 当月总pv,用于计算月度分红(福利平均、福利加权)
|
||||||
// 当月总pv,用于计算 福利分红、福利加权
|
|
||||||
for (Integer systemType : orderMap.keySet()) {
|
for (Integer systemType : orderMap.keySet()) {
|
||||||
List<SaOrder> saOrders = orderMap.get(systemType);
|
List<SaOrder> saOrders = orderMap.get(systemType);
|
||||||
|
// 月所有订单业绩(注册、升级、复购、重消)
|
||||||
BigDecimal totalMonthConsumePv = BigDecimal.ZERO;
|
BigDecimal totalMonthConsumePv = BigDecimal.ZERO;
|
||||||
|
|
||||||
|
// new 两个月奖
|
||||||
|
// 月度级差:注册、升级订单,从自己开始往上算,最多拨出10代(紧缩)
|
||||||
|
// 复购级差:复购订单,从自己开始往上算,最多拨出10代(紧缩)
|
||||||
for (SaOrder saOrder : saOrders) {
|
for (SaOrder saOrder : saOrders) {
|
||||||
|
// 累计订单业绩
|
||||||
totalMonthConsumePv = ComputeUtil.computeAdd(totalMonthConsumePv, saOrder.getOrderAchieve());
|
totalMonthConsumePv = ComputeUtil.computeAdd(totalMonthConsumePv, saOrder.getOrderAchieve());
|
||||||
CuMemberRetailRangeExt sourceMemberRetailRangeExt = memberRangeExtMap.get(saOrder.getPkMember());
|
|
||||||
BigDecimal rangeRatio = sourceMemberRetailRangeExt.getRangeRatio();
|
if (EOrderType.RETAIL_REGISTER.getValue() == saOrder.getOrderType()
|
||||||
long pkParent = sourceMemberRetailRangeExt.getPkMember();
|
|| EOrderType.RETAIL_UPGRADE.getValue() == saOrder.getOrderType()) {
|
||||||
while (true) {
|
// 注册、升级订单,计算福利级差收益
|
||||||
CuMemberRetailRangeExt targetMemberRangeExt = memberRangeExtMap.get(pkParent);
|
// 订单会员
|
||||||
if (targetMemberRangeExt == null) {
|
CuMemberRetailRangeExt sourceMemberRetailRangeExt = memberRangeExtMap.get(saOrder.getPkMember());
|
||||||
break;
|
// 会员奖衔级差比例 -- 初始为下单会员奖衔级差比例
|
||||||
}
|
BigDecimal rangeRatio = sourceMemberRetailRangeExt.getRangeRatio();
|
||||||
pkParent = targetMemberRangeExt.getPkParent();
|
// 从自己开始往上算,第一个人用自己处理
|
||||||
// 只有v5 有福利奖金
|
long pkParent = sourceMemberRetailRangeExt.getPkMember();
|
||||||
if (EAccountStatus.STOP_INCOME.getValue() == targetMemberRangeExt.getAccountStatus() ||
|
while (true) {
|
||||||
ECategory.NORMAL.getValue() != targetMemberRangeExt.getCategory() ||
|
CuMemberRetailRangeExt targetMemberRangeExt = memberRangeExtMap.get(pkParent);
|
||||||
targetMemberRangeExt.getGradeValue() != EGrade.S_VIP.getValue() ||
|
if (null == targetMemberRangeExt) {
|
||||||
targetMemberRangeExt.getEnableStatus() == EYesNo.NO.getIntValue() ||
|
break;
|
||||||
EIncomeStatus.STOP_INCOME.getValue() == targetMemberRangeExt.getIncomeStatus()) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
BigDecimal targetRangeRatio = targetMemberRangeExt.getRangeRatio();
|
|
||||||
if ((targetMemberRangeExt.getPkMember().equals(saOrder.getPkMember()) && ComputeUtil.compareValue(rangeRatio)) ||
|
|
||||||
ComputeUtil.compareGreaterThan(targetRangeRatio, rangeRatio)) {
|
|
||||||
// 计算极差
|
|
||||||
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())) {
|
|
||||||
cuMemberBonusRange.setCalValue(targetRangeRatio);
|
|
||||||
} else {
|
|
||||||
cuMemberBonusRange.setCalValue(ComputeUtil.computeSubtract(targetRangeRatio, rangeRatio));
|
|
||||||
}
|
}
|
||||||
cuMemberBonusRange.setPretaxIncome(ComputeUtil.computeBonusMultiply(saOrder.getOrderAchieve(), cuMemberBonusRange.getCalValue()));
|
pkParent = targetMemberRangeExt.getPkParent();
|
||||||
cuMemberBonusRange.setPkRange(targetMemberRangeExt.getPkGrade());
|
|
||||||
cuMemberBonusRange.setPkBeforeRange(sourceMemberRetailRangeExt.getPkGrade());
|
if (EAccountStatus.STOP_INCOME.getValue() == targetMemberRangeExt.getAccountStatus()
|
||||||
cuMemberBonusRange.setPkOrderItems(0L);
|
|| ECategory.NORMAL.getValue() != targetMemberRangeExt.getCategory()
|
||||||
rangeBenefitRetailRemark(saOrder, cuMemberBonusRange, sourceMemberRetailRangeExt, targetMemberRangeExt);
|
|| targetMemberRangeExt.getGradeValue() != EGrade.S_VIP.getValue()
|
||||||
BdBonusDeduct bdBonusDeduct = setBonusDetailDeduct(bonusConfigDTO, cuMemberBonusRange, saOrder.getOrderAmount(), BigDecimal.ONE);
|
|| targetMemberRangeExt.getEnableStatus() == EYesNo.NO.getIntValue()
|
||||||
if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusRange.getIncomeStatus()) {
|
|| EIncomeStatus.STOP_INCOME.getValue() == targetMemberRangeExt.getIncomeStatus()) {
|
||||||
cuMemberBonus.setRetailBenefitRangeIncome(ComputeUtil.computeAdd(cuMemberBonus.getRetailBenefitRangeIncome(), cuMemberBonusRange.getPretaxIncome()));
|
// 停算收益、非正常会员、未激活、等级不为合伙人、停止收益,直接跳过
|
||||||
setRetailTotal(bdBonusDeduct, cuMemberBonus, cuMemberBonusRange);
|
continue;
|
||||||
}
|
}
|
||||||
memberBonusRangeList.add(cuMemberBonusRange);
|
// 当前会员奖衔级差比例
|
||||||
rangeRatio = targetRangeRatio;
|
BigDecimal targetRangeRatio = targetMemberRangeExt.getRangeRatio();
|
||||||
sourceMemberRetailRangeExt = targetMemberRangeExt;
|
if ((targetMemberRangeExt.getPkMember().equals(saOrder.getPkMember()) && ComputeUtil.compareValue(rangeRatio))
|
||||||
}
|
|| ComputeUtil.compareGreaterThan(targetRangeRatio, rangeRatio)) {
|
||||||
}
|
// 第一代是自己 并且 级差比例大于0 或者 级差比例大于前一代会员的奖衔级差比例
|
||||||
}
|
// 计算极差
|
||||||
// CAR_AWARD_POINTS 福利平均收益 SHARE_INCOME 福利收益
|
CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, targetMemberRangeExt.getPkMember(),
|
||||||
// 查询v5 等级 且奖衔>=S4的
|
targetMemberRangeExt.getIncomeStatus(), targetMemberRangeExt.getPkSettleCountry(), targetMemberRangeExt.getPkRate());
|
||||||
List<CuMemberRetailRangeExt> memberRetailRangeExtList = iCuMemberRetailRangeService.batchQueryMemberRetailRangeByAwards(rangeTableName);
|
// 福利极差收益
|
||||||
if (memberRetailRangeExtList.size() > 0) {
|
int pkBonusItems = getPkBonusItems(bonusConfigDTO, targetMemberRangeExt.getPkSettleCountry(), EBonusItems.RETAIL_BENEFIT_RANGE_INCOME.getValue());
|
||||||
List<CuMemberRetailRangeExt> retailRangeExtList = iCuMemberRetailRangeService.batchQueryMemberRetailRangeByParent(rangeTableName, memberRetailRangeExtList);
|
CuMemberBonusRange cuMemberBonusRange = getCuMemberRetailBonusRange(saOrder, targetMemberRangeExt, cuMemberBonus, pkBonusItems);
|
||||||
Map<Long, List<CuMemberRetailRangeExt>> parentMemberRangeExtMap = new HashMap<>();
|
if (targetMemberRangeExt.getPkMember().equals(saOrder.getPkMember())) {
|
||||||
for (CuMemberRetailRangeExt cuMemberRetailRangeExt : retailRangeExtList) {
|
cuMemberBonusRange.setCalValue(targetRangeRatio);
|
||||||
if (parentMemberRangeExtMap.containsKey(cuMemberRetailRangeExt.getPkParent())) {
|
} else {
|
||||||
parentMemberRangeExtMap.get(cuMemberRetailRangeExt.getPkParent()).add(cuMemberRetailRangeExt);
|
cuMemberBonusRange.setCalValue(ComputeUtil.computeSubtract(targetRangeRatio, rangeRatio));
|
||||||
} 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;
|
|
||||||
}
|
}
|
||||||
|
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.setRetailBenefitRangeIncome(ComputeUtil.computeAdd(cuMemberBonus.getRetailBenefitRangeIncome(), cuMemberBonusRange.getPretaxIncome()));
|
||||||
|
setRetailTotal(bdBonusDeduct, cuMemberBonus, cuMemberBonusRange);
|
||||||
|
}
|
||||||
|
memberBonusRangeList.add(cuMemberBonusRange);
|
||||||
|
// 下一代会员
|
||||||
|
rangeRatio = targetRangeRatio;
|
||||||
|
sourceMemberRetailRangeExt = targetMemberRangeExt;
|
||||||
}
|
}
|
||||||
cuMemberRetailRangeExt.setSmallAreaConsumePv(ComputeUtil.computeSubtract(cuMemberRetailRangeExt.getTeamMonthPv(), bigConsumePv));
|
|
||||||
} else {
|
|
||||||
cuMemberRetailRangeExt.setSmallAreaConsumePv(BigDecimal.ZERO);
|
|
||||||
}
|
}
|
||||||
if (cuMemberRetailRangeExt.getShareAwardsValue() >= EAwards.SENIOR_MANAGER.getValue() &&
|
} else if (EOrderType.RETAIL_REPURCHASE.getValue() == saOrder.getOrderType()) {
|
||||||
cuMemberRetailRangeExt.getShareAwardsValue() <= EAwards.HIGH_CHIEF.getValue()) {
|
// 复购订单,计算复购级差收益
|
||||||
firstAwardsRetailRangeList.add(cuMemberRetailRangeExt);
|
// 订单会员
|
||||||
benefitAvgRatio = cuMemberRetailRangeExt.getBenefitAvgRatio();
|
CuMemberRetailRangeExt sourceMemberRetailRangeExt = memberRangeExtMap.get(saOrder.getPkMember());
|
||||||
benefitShareRatio = cuMemberRetailRangeExt.getBenefitShareRatio();
|
// 会员奖衔级差比例 -- 初始为下单会员奖衔级差比例
|
||||||
firstConsumePv = ComputeUtil.computeAdd(cuMemberRetailRangeExt.getSmallAreaConsumePv(), firstConsumePv);
|
BigDecimal rangeRatio = sourceMemberRetailRangeExt.getMonthRepurchaseRatio();
|
||||||
} else {
|
// 从自己开始往上算,第一个人用自己处理
|
||||||
secondAwardsRetailRangeList.add(cuMemberRetailRangeExt);
|
long pkParent = sourceMemberRetailRangeExt.getPkMember();
|
||||||
secondBenefitAvgRatio = cuMemberRetailRangeExt.getBenefitAvgRatio();
|
while (true) {
|
||||||
secondBenefitShareRatio = cuMemberRetailRangeExt.getBenefitShareRatio();
|
CuMemberRetailRangeExt targetMemberRangeExt = memberRangeExtMap.get(pkParent);
|
||||||
secondConsumePv = ComputeUtil.computeAdd(cuMemberRetailRangeExt.getSmallAreaConsumePv(), secondConsumePv);
|
if (null == targetMemberRangeExt) {
|
||||||
}
|
break;
|
||||||
}
|
}
|
||||||
if (firstAwardsRetailRangeList.size() > 0) {
|
pkParent = targetMemberRangeExt.getPkParent();
|
||||||
BigDecimal benefitAvgIncome = ComputeUtil.computeDivide(ComputeUtil.computeBonusMultiply(totalMonthConsumePv, benefitAvgRatio), BigDecimal.valueOf(firstAwardsRetailRangeList.size()));
|
|
||||||
BigDecimal benefitShareIncome = ComputeUtil.computeBonusMultiply(totalMonthConsumePv, benefitShareRatio);
|
if (EAccountStatus.STOP_INCOME.getValue() == targetMemberRangeExt.getAccountStatus()
|
||||||
for (CuMemberRetailRangeExt cuMemberRetailRangeExt : firstAwardsRetailRangeList) {
|
|| ECategory.NORMAL.getValue() != targetMemberRangeExt.getCategory()
|
||||||
if (ECategory.NORMAL.getValue() != cuMemberRetailRangeExt.getCategory() ||
|
|| targetMemberRangeExt.getGradeValue() != EGrade.S_VIP.getValue()
|
||||||
EAccountStatus.STOP_INCOME.getValue() == cuMemberRetailRangeExt.getAccountStatus() ||
|
|| targetMemberRangeExt.getEnableStatus() == EYesNo.NO.getIntValue()
|
||||||
EIncomeStatus.STOP_INCOME.getValue() == cuMemberRetailRangeExt.getIncomeStatus()) {
|
|| EIncomeStatus.STOP_INCOME.getValue() == targetMemberRangeExt.getIncomeStatus()) {
|
||||||
|
// 停算收益、非正常会员、未激活、等级不为合伙人、停止收益,直接跳过
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
// 验证是否有奖金
|
// 当前会员奖衔级差比例
|
||||||
if (validatePkBonusItems(bonusConfigDTO, cuMemberRetailRangeExt.getPkSettleCountry(), EBonusItems.RETAIL_BENEFIT_AVG_INCOME.getValue())) {
|
BigDecimal targetRangeRatio = targetMemberRangeExt.getMonthRepurchaseRatio();
|
||||||
continue;
|
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;
|
||||||
}
|
}
|
||||||
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) {
|
if (memberBonusDetailList.size() > 0) {
|
||||||
|
@ -2103,26 +2193,6 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
||||||
return cuMemberBonusCoach;
|
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,
|
private CuMemberBonusRange getCuMemberRetailBonusRange(SaOrder saOrderExt, CuMemberRetailRangeExt targetMemberRangeExt,
|
||||||
CuMemberBonus cuMemberBonus, Integer pkBonusItems) {
|
CuMemberBonus cuMemberBonus, Integer pkBonusItems) {
|
||||||
CuMemberBonusRange cuMemberBonusRange = CuMemberBonusRange.builder()
|
CuMemberBonusRange cuMemberBonusRange = CuMemberBonusRange.builder()
|
||||||
|
@ -2130,7 +2200,6 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
||||||
.pkOrder(saOrderExt.getPkId())
|
.pkOrder(saOrderExt.getPkId())
|
||||||
.pkBonusItems(pkBonusItems)
|
.pkBonusItems(pkBonusItems)
|
||||||
.pkBonus(cuMemberBonus.getPkId())
|
.pkBonus(cuMemberBonus.getPkId())
|
||||||
// 正常还是烧伤
|
|
||||||
.calAchieve(saOrderExt.getOrderAchieve())
|
.calAchieve(saOrderExt.getOrderAchieve())
|
||||||
.calType(ECalType.VALUE.getValue())
|
.calType(ECalType.VALUE.getValue())
|
||||||
.calValue(BigDecimal.ZERO)
|
.calValue(BigDecimal.ZERO)
|
||||||
|
@ -2143,28 +2212,6 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
||||||
return cuMemberBonusRange;
|
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) {
|
private CuMemberAwards getCuMemberAwards(CuMemberRangeExt sourceRangeExt, Integer period, SaOrderExt saOrderExt, BdRangeAwards bdRangeAwards) {
|
||||||
CuMemberAwards cuMemberAwards = CuMemberAwards.builder()
|
CuMemberAwards cuMemberAwards = CuMemberAwards.builder()
|
||||||
.pkMember(sourceRangeExt.getPkMember())
|
.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.ICuMemberSettlePeriodService;
|
||||||
import com.hzs.bonus.achieve.service.ICuMemberTreeService;
|
import com.hzs.bonus.achieve.service.ICuMemberTreeService;
|
||||||
import com.hzs.bonus.base.service.ICuAwardsControlService;
|
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.BonusExpandParam;
|
||||||
import com.hzs.bonus.bonus.param.LeXueRangeParam;
|
import com.hzs.bonus.bonus.param.LeXueRangeParam;
|
||||||
import com.hzs.bonus.bonus.service.*;
|
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.detail.service.ICuRegionAssessService;
|
||||||
import com.hzs.bonus.order.service.IBonusOrderService;
|
import com.hzs.bonus.order.service.IBonusOrderService;
|
||||||
import com.hzs.bonus.risk.service.ICuMemberRiskControlService;
|
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.BonusFieldConstants;
|
||||||
import com.hzs.common.core.constant.MagicNumberConstants;
|
import com.hzs.common.core.constant.MagicNumberConstants;
|
||||||
import com.hzs.common.core.constant.TableNameConstants;
|
import com.hzs.common.core.constant.TableNameConstants;
|
||||||
|
@ -164,10 +164,17 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
||||||
bonusSettleRangeHandle.calculateRetailBonusByDay(settleDate, cuMemberBonusMap, bonusConfigDTO, recordDetailVO,
|
bonusSettleRangeHandle.calculateRetailBonusByDay(settleDate, cuMemberBonusMap, bonusConfigDTO, recordDetailVO,
|
||||||
period, yesterdayPeriod, isSameMonth);
|
period, yesterdayPeriod, isSameMonth);
|
||||||
|
|
||||||
if (settleDate.endsWith("01")) {
|
// TODO new 每月1号,需要计算4个月奖
|
||||||
// TODO new 每月1号,需要计算4个月奖
|
if (EEnv.TEST.getValue().equals(BdConfig.getEnv())) {
|
||||||
|
// 测试环境,每天都执行
|
||||||
// 计算新零售团队区域、福利、福利分红奖金
|
// 计算新零售团队区域、福利、福利分红奖金
|
||||||
bonusSettleRangeHandle.calculateRetailShareBonus(settleDate, bonusConfigDTO, period, recordDetailVO, cuMemberBonusMap);
|
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));
|
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.setCode(HttpStatus.SUCCESS);
|
||||||
rspData.setRows(list);
|
rspData.setRows(list);
|
||||||
rspData.setMsg("查询成功");
|
rspData.setMsg("查询成功");
|
||||||
rspData.setTotal(new PageInfo(list).getTotal());
|
rspData.setTotal(new PageInfo<>(list).getTotal());
|
||||||
return rspData;
|
return rspData;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -51,6 +51,7 @@
|
||||||
<result column="AWARDS_VALUE" property="awardsValue"/>
|
<result column="AWARDS_VALUE" property="awardsValue"/>
|
||||||
<result column="SHARE_AWARDS_VALUE" property="shareAwardsValue"/>
|
<result column="SHARE_AWARDS_VALUE" property="shareAwardsValue"/>
|
||||||
<result column="RANGE_RATIO" property="rangeRatio"/>
|
<result column="RANGE_RATIO" property="rangeRatio"/>
|
||||||
|
<result column="MONTH_REPURCHASE_RATIO" property="monthRepurchaseRatio"/>
|
||||||
<result column="BENEFIT_AVG_RATIO" property="benefitAvgRatio"/>
|
<result column="BENEFIT_AVG_RATIO" property="benefitAvgRatio"/>
|
||||||
<result column="BENEFIT_SHARE_RATIO" property="benefitShareRatio"/>
|
<result column="BENEFIT_SHARE_RATIO" property="benefitShareRatio"/>
|
||||||
<result column="COUNTRY_NAME" property="countryName"/>
|
<result column="COUNTRY_NAME" property="countryName"/>
|
||||||
|
@ -349,6 +350,7 @@
|
||||||
a.big_team_pv,
|
a.big_team_pv,
|
||||||
a.small_team_pv,
|
a.small_team_pv,
|
||||||
bw.range_ratio,
|
bw.range_ratio,
|
||||||
|
bw.month_repurchase_ratio,
|
||||||
bw.benefit_avg_ratio,
|
bw.benefit_avg_ratio,
|
||||||
bw.benefit_share_ratio,
|
bw.benefit_share_ratio,
|
||||||
br.name country_name
|
br.name country_name
|
||||||
|
@ -415,6 +417,7 @@
|
||||||
bw.awards_name,
|
bw.awards_name,
|
||||||
bws.awards_value share_awards_value,
|
bws.awards_value share_awards_value,
|
||||||
bw.range_ratio,
|
bw.range_ratio,
|
||||||
|
bw.month_repurchase_ratio,
|
||||||
bw.benefit_avg_ratio,
|
bw.benefit_avg_ratio,
|
||||||
bw.benefit_share_ratio,
|
bw.benefit_share_ratio,
|
||||||
br.name country_name
|
br.name country_name
|
||||||
|
@ -433,10 +436,12 @@
|
||||||
|
|
||||||
<select id="batchQueryMemberRetailRangeByMemberPk" resultMap="CuMemberRetailRangeExt">
|
<select id="batchQueryMemberRetailRangeByMemberPk" resultMap="CuMemberRetailRangeExt">
|
||||||
<foreach collection="memberPkList" item="item" close=" " open=" " separator="union">
|
<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,
|
select pk_member, member_code, member_name, c.pk_parent, c.pk_awards, c.pk_grade,
|
||||||
c.income_status,c.pk_country,c.pk_settle_country,c.account_status,c.category,bwa.awards_value share_awards_value,
|
c.pk_rate, c.enable_status, c.income_status, c.pk_country, c.pk_settle_country,
|
||||||
bg.grade_value,bg.grade_name,bw.awards_value,bw.awards_name,c.pk_share_awards,c.system_type,
|
c.account_status, c.category, c.system_type,
|
||||||
bw.range_ratio,bw.benefit_avg_ratio,bw.benefit_share_ratio
|
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 (
|
from (
|
||||||
select *
|
select *
|
||||||
from ${rangeTableName}
|
from ${rangeTableName}
|
||||||
|
@ -474,6 +479,7 @@
|
||||||
a.month_consume_pv,
|
a.month_consume_pv,
|
||||||
a.team_month_pv,
|
a.team_month_pv,
|
||||||
bw.range_ratio,
|
bw.range_ratio,
|
||||||
|
bw.month_repurchase_ratio,
|
||||||
bw.benefit_avg_ratio,
|
bw.benefit_avg_ratio,
|
||||||
bw.benefit_share_ratio
|
bw.benefit_share_ratio
|
||||||
from ${rangeTableName} a
|
from ${rangeTableName} a
|
||||||
|
@ -492,7 +498,8 @@
|
||||||
a.income_status,a.pk_country,a.pk_settle_country,a.account_status,a.category,
|
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,
|
bg.grade_value,bg.grade_name,bw.awards_value,bw.awards_name,a.month_consume_pv,
|
||||||
a.team_month_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
|
inner join bd_awards bw
|
||||||
on bw.pk_id=a.pk_awards
|
on bw.pk_id=a.pk_awards
|
||||||
inner join bd_grade bg
|
inner join bd_grade bg
|
||||||
|
@ -527,6 +534,7 @@
|
||||||
a.account_status,
|
a.account_status,
|
||||||
a.category,
|
a.category,
|
||||||
bw.range_ratio,
|
bw.range_ratio,
|
||||||
|
bw.month_repurchase_ratio,
|
||||||
bw.benefit_avg_ratio,
|
bw.benefit_avg_ratio,
|
||||||
bw.benefit_share_ratio,
|
bw.benefit_share_ratio,
|
||||||
a.system_type
|
a.system_type
|
||||||
|
@ -566,6 +574,7 @@
|
||||||
cm.category,
|
cm.category,
|
||||||
cm.system_type,
|
cm.system_type,
|
||||||
bw.range_ratio,
|
bw.range_ratio,
|
||||||
|
bw.month_repurchase_ratio,
|
||||||
bw.benefit_avg_ratio,
|
bw.benefit_avg_ratio,
|
||||||
bw.benefit_share_ratio,
|
bw.benefit_share_ratio,
|
||||||
nvl(nvl(sc.enable_status, r.enable_status), 1) enable_status
|
nvl(nvl(sc.enable_status, r.enable_status), 1) enable_status
|
||||||
|
@ -633,6 +642,7 @@
|
||||||
bw.awards_value,
|
bw.awards_value,
|
||||||
bw.awards_name,
|
bw.awards_name,
|
||||||
bw.range_ratio,
|
bw.range_ratio,
|
||||||
|
bw.month_repurchase_ratio,
|
||||||
bw.benefit_avg_ratio,
|
bw.benefit_avg_ratio,
|
||||||
bw.benefit_share_ratio,
|
bw.benefit_share_ratio,
|
||||||
bws.awards_value share_awards_value,
|
bws.awards_value share_awards_value,
|
||||||
|
|
|
@ -115,59 +115,52 @@
|
||||||
<insert id="batchInsertCuMemberBonus">
|
<insert id="batchInsertCuMemberBonus">
|
||||||
merge into cu_member_bonus cb
|
merge into cu_member_bonus cb
|
||||||
using(
|
using(
|
||||||
select pk_id,pk_member,period,pk_rate,direct_income,expand_income,expand_no_capping,
|
select pk_id, pk_member, period, pk_rate, direct_income,
|
||||||
expand_capping,coach_income,share_income,service_income,back_points,service_spend,
|
expand_income, expand_no_capping, expand_capping, coach_income,
|
||||||
pur_real_subtotal,repur_push_income,repur_range_income,repur_expand_income,repur_real_subtotal,
|
share_income, service_income, back_points, service_spend,
|
||||||
cloud_direct_income,cloud_pur_income,cloud_repur_income,cloud_real_subtotal,
|
pur_real_subtotal, repur_push_income, repur_range_income, repur_expand_income,
|
||||||
repur_coupon,repur_coupon_share,repur_coupon_subtotal,global_points,
|
repur_real_subtotal, repur_coupon, repur_coupon_share, repur_coupon_subtotal,
|
||||||
car_award_points,store_income,hi_fun_income,hai_fun_income,
|
store_income, real_income_total, pk_country, pk_creator, grant_status, income_status,
|
||||||
maker_direct_income,maker_share_income,maker_real_subtotal,real_income_total,
|
retail_range_income, retail_same_level_income, retail_area_income,
|
||||||
pk_country,pk_creator,grant_status,income_status,retail_range_income,retail_same_level_income,
|
retail_benefit_range_income, retail_month_repurchase_income,
|
||||||
retail_area_income,retail_benefit_range_income,retail_benefit_avg_income,retail_benefit_income,
|
retail_benefit_avg_income, retail_benefit_income, retail_real_subtotal
|
||||||
retail_real_subtotal from(
|
from (
|
||||||
<foreach item="item" index="index" collection="cuMemberBonusList" separator=" union ">
|
<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,
|
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.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.expandCapping} expand_capping, #{item.coachIncome} coach_income, #{item.shareIncome} share_income,
|
||||||
#{item.serviceIncome} service_income,#{item.backPoints} back_points,#{item.serviceSpend} service_spend,
|
#{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.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.repurExpandIncome} repur_expand_income, #{item.repurRealSubtotal} repur_real_subtotal,
|
||||||
#{item.cloudDirectIncome} cloud_direct_income,#{item.cloudPurIncome} cloud_pur_income,
|
#{item.repurCoupon} repur_coupon, #{item.repurCouponShare} repur_coupon_share,
|
||||||
#{item.cloudRepurIncome} cloud_repur_income,#{item.cloudRealSubtotal} cloud_real_subtotal,
|
#{item.repurCouponSubtotal} repur_coupon_subtotal, #{item.storeIncome} store_income, #{item.realIncomeTotal} real_income_total,
|
||||||
#{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.pkCountry} pk_country,#{item.pkCreator} pk_creator,#{item.grantStatus} grant_status,#{item.incomeStatus} income_status,
|
#{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.retailRangeIncome} retail_range_income, #{item.retailSameLevelIncome} retail_same_level_income, #{item.retailAreaIncome} retail_area_income,
|
||||||
#{item.retailAreaIncome} retail_area_income,#{item.retailBenefitRangeIncome} retail_benefit_range_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.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
|
</foreach>) )b
|
||||||
on (cb.pk_member=b.pk_member and cb.period=b.period)
|
on (cb.pk_member=b.pk_member and cb.period=b.period)
|
||||||
WHEN NOT MATCHED THEN
|
WHEN NOT MATCHED THEN
|
||||||
insert(pk_id,pk_member,period,pk_rate,direct_income,expand_income,expand_no_capping,
|
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,
|
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,
|
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,
|
||||||
repur_coupon,repur_coupon_share,repur_coupon_subtotal,global_points,
|
store_income, real_income_total,
|
||||||
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,
|
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_area_income,retail_benefit_range_income,retail_benefit_avg_income,retail_benefit_income,
|
||||||
retail_real_subtotal)
|
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,
|
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.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.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.repur_coupon,b.repur_coupon_share,b.repur_coupon_subtotal,b.global_points,
|
b.store_income, b.real_income_total,
|
||||||
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.pk_country,b.pk_creator,b.grant_status,b.income_status,b.retail_range_income,b.retail_same_level_income,
|
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_area_income,b.retail_benefit_range_income,b.retail_benefit_avg_income,b.retail_benefit_income,
|
||||||
b.retail_real_subtotal)
|
b.retail_real_subtotal)
|
||||||
</insert>
|
</insert>
|
||||||
|
|
||||||
<insert id="insertOrUpdateCuMemberBonus">
|
<insert id="insertOrUpdateCuMemberBonus">
|
||||||
merge into cu_member_bonus a
|
merge into cu_member_bonus a
|
||||||
using(
|
using(
|
||||||
|
|
|
@ -53,7 +53,7 @@ public class BdBonusItemsController extends BaseController {
|
||||||
if (StringUtils.isNotNull(bonusItems.getBonusName())) {
|
if (StringUtils.isNotNull(bonusItems.getBonusName())) {
|
||||||
queryWrapper.eq(BdBonusItems::getBonusName, bonusItems.getBonusName());
|
queryWrapper.eq(BdBonusItems::getBonusName, bonusItems.getBonusName());
|
||||||
}
|
}
|
||||||
queryWrapper.orderByAsc(BdBonusItems::getPkId);
|
queryWrapper.orderByAsc(BdBonusItems::getBonusValue);
|
||||||
List<BdBonusItems> list = bonusItemsService.list(queryWrapper);
|
List<BdBonusItems> list = bonusItemsService.list(queryWrapper);
|
||||||
list.forEach(item -> listExt.add(BeanUtil.copyProperties(item, BdBonusItemsExt.class)));
|
list.forEach(item -> listExt.add(BeanUtil.copyProperties(item, BdBonusItemsExt.class)));
|
||||||
|
|
||||||
|
@ -73,7 +73,7 @@ public class BdBonusItemsController extends BaseController {
|
||||||
if (StringUtils.isNotNull(bonusItems.getBonusName())) {
|
if (StringUtils.isNotNull(bonusItems.getBonusName())) {
|
||||||
queryWrapper.eq(BdBonusItems::getBonusName, bonusItems.getBonusName());
|
queryWrapper.eq(BdBonusItems::getBonusName, bonusItems.getBonusName());
|
||||||
}
|
}
|
||||||
queryWrapper.orderByAsc(BdBonusItems::getPkId);
|
queryWrapper.orderByAsc(BdBonusItems::getBonusValue);
|
||||||
List<BdBonusItemsExt> listExt = new ArrayList<>();
|
List<BdBonusItemsExt> listExt = new ArrayList<>();
|
||||||
List<BdBonusItems> list = bonusItemsService.list(queryWrapper);
|
List<BdBonusItems> list = bonusItemsService.list(queryWrapper);
|
||||||
list.forEach(item -> listExt.add(BeanUtil.copyProperties(item, BdBonusItemsExt.class)));
|
list.forEach(item -> listExt.add(BeanUtil.copyProperties(item, BdBonusItemsExt.class)));
|
||||||
|
@ -92,7 +92,7 @@ public class BdBonusItemsController extends BaseController {
|
||||||
if (StringUtils.isNotNull(bonusItems.getBonusName())) {
|
if (StringUtils.isNotNull(bonusItems.getBonusName())) {
|
||||||
queryWrapper.eq(BdBonusItems::getBonusName, bonusItems.getBonusName());
|
queryWrapper.eq(BdBonusItems::getBonusName, bonusItems.getBonusName());
|
||||||
}
|
}
|
||||||
queryWrapper.orderByAsc(BdBonusItems::getPkId);
|
queryWrapper.orderByAsc(BdBonusItems::getBonusValue);
|
||||||
List<ApiBdBonusItemsVO> listVO = new ArrayList<>();
|
List<ApiBdBonusItemsVO> listVO = new ArrayList<>();
|
||||||
List<BdBonusItems> list = bonusItemsService.list(queryWrapper);
|
List<BdBonusItems> list = bonusItemsService.list(queryWrapper);
|
||||||
list.forEach(item -> listVO.add(BeanUtil.copyProperties(item, ApiBdBonusItemsVO.class)));
|
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">
|
<!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">
|
<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>
|
</mapper>
|
||||||
|
|
|
@ -99,29 +99,27 @@ public enum EBonusItems {
|
||||||
*/
|
*/
|
||||||
RETAIL_AREA_INCOME(27, "区域分红", 0, EnumsPrefixConstants.BONUS_ITEMS + 27),
|
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_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_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 subtract 值1
|
||||||
* @param subtract1 值2
|
* @param subtract1 值2
|
||||||
* 统一的减法计算方法
|
|
||||||
* @return: BigDecimal
|
|
||||||
* @Author: sui q
|
|
||||||
* @Date: 2022/9/20 21:09
|
|
||||||
*/
|
*/
|
||||||
public static BigDecimal computeSubtract(BigDecimal subtract, BigDecimal subtract1) {
|
public static BigDecimal computeSubtract(BigDecimal subtract, BigDecimal subtract1) {
|
||||||
return subtract.subtract(subtract1);
|
return subtract.subtract(subtract1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* 统一的减法计算方法, 向下取整
|
||||||
|
*
|
||||||
* @param subtract 值1
|
* @param subtract 值1
|
||||||
* @param subtract1 值2
|
* @param subtract1 值2
|
||||||
* @Description: 统一的减法计算方法, 向下取整
|
|
||||||
* @return: BigDecimal
|
|
||||||
* @Author: sui q
|
|
||||||
* @Date: 2022/9/20 21:09
|
|
||||||
*/
|
*/
|
||||||
public static BigDecimal computeSubtractAbs(BigDecimal subtract, BigDecimal subtract1) {
|
public static BigDecimal computeSubtractAbs(BigDecimal subtract, BigDecimal subtract1) {
|
||||||
return subtract.subtract(subtract1).abs();
|
return subtract.subtract(subtract1).abs();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* 统一的除法计算方法, 向下取整
|
||||||
|
*
|
||||||
* @param value1 值1
|
* @param value1 值1
|
||||||
* @param value2 值2
|
* @param value2 值2
|
||||||
* @Description: 统一的除法计算方法, 向下取整
|
|
||||||
* @return: BigDecimal
|
|
||||||
* @Author: sui q
|
|
||||||
* @Date: 2022/9/20 21:09
|
|
||||||
*/
|
*/
|
||||||
public static BigDecimal obtainMinAchieve(BigDecimal value1, BigDecimal value2) {
|
public static BigDecimal obtainMinAchieve(BigDecimal value1, BigDecimal value2) {
|
||||||
if (compareValue(value1, value2)) {
|
if (compareValue(value1, value2)) {
|
||||||
|
@ -147,11 +141,9 @@ public class ComputeUtil {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* 比较大小,前面的值大于等于后面的值
|
||||||
|
*
|
||||||
* @param value1 值1
|
* @param value1 值1
|
||||||
* @Description: 比较大小,前面的值大于等于后面的值
|
|
||||||
* @return: Boolean
|
|
||||||
* @Author: sui q
|
|
||||||
* @Date: 2022/9/20 21:23
|
|
||||||
*/
|
*/
|
||||||
public static Boolean compareValue(BigDecimal value1) {
|
public static Boolean compareValue(BigDecimal value1) {
|
||||||
if (value1.compareTo(BigDecimal.ZERO) > 0) {
|
if (value1.compareTo(BigDecimal.ZERO) > 0) {
|
||||||
|
@ -161,12 +153,10 @@ public class ComputeUtil {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* 乘法
|
||||||
|
*
|
||||||
* @param value1 值1
|
* @param value1 值1
|
||||||
* @param value2 值2
|
* @param value2 值2
|
||||||
* @Description: 乘法
|
|
||||||
* @return: BigDecimal
|
|
||||||
* @Author: sui q
|
|
||||||
* @Date: 2022/9/24 14:54
|
|
||||||
*/
|
*/
|
||||||
public static BigDecimal computeMultiply(BigDecimal value1, Object value2) {
|
public static BigDecimal computeMultiply(BigDecimal value1, Object value2) {
|
||||||
if (null == value1) {
|
if (null == value1) {
|
||||||
|
@ -188,9 +178,6 @@ public class ComputeUtil {
|
||||||
*
|
*
|
||||||
* @param value1 值
|
* @param value1 值
|
||||||
* @param value2 比例
|
* @param value2 比例
|
||||||
* @return: BigDecimal
|
|
||||||
* @Author: sui q
|
|
||||||
* @Date: 2022/11/14 17:02
|
|
||||||
*/
|
*/
|
||||||
public static BigDecimal computeBonusMultiply(BigDecimal value1, BigDecimal value2) {
|
public static BigDecimal computeBonusMultiply(BigDecimal value1, BigDecimal value2) {
|
||||||
return value1.multiply(value2).multiply(BigDecimal.valueOf(0.01));
|
return value1.multiply(value2).multiply(BigDecimal.valueOf(0.01));
|
||||||
|
@ -200,9 +187,6 @@ public class ComputeUtil {
|
||||||
* 计算奖金,计算一半
|
* 计算奖金,计算一半
|
||||||
*
|
*
|
||||||
* @param value1 值
|
* @param value1 值
|
||||||
* @return: BigDecimal
|
|
||||||
* @Author: sui q
|
|
||||||
* @Date: 2022/11/14 17:02
|
|
||||||
*/
|
*/
|
||||||
public static BigDecimal computeMultiplyHalf(BigDecimal value1) {
|
public static BigDecimal computeMultiplyHalf(BigDecimal value1) {
|
||||||
return value1.multiply(BigDecimal.valueOf(0.5));
|
return value1.multiply(BigDecimal.valueOf(0.5));
|
||||||
|
@ -212,21 +196,16 @@ public class ComputeUtil {
|
||||||
* 计算奖金,计算实际
|
* 计算奖金,计算实际
|
||||||
*
|
*
|
||||||
* @param value1 值
|
* @param value1 值
|
||||||
* @return: BigDecimal
|
|
||||||
* @Author: sui q
|
|
||||||
* @Date: 2022/11/14 17:02
|
|
||||||
*/
|
*/
|
||||||
public static BigDecimal computeMultiplyReal(BigDecimal value1, BigDecimal ratio) {
|
public static BigDecimal computeMultiplyReal(BigDecimal value1, BigDecimal ratio) {
|
||||||
return computeBonusMultiply(value1, computeSubtract(BigDecimal.valueOf(100), ratio));
|
return computeBonusMultiply(value1, computeSubtract(BigDecimal.valueOf(100), ratio));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* 乘法
|
||||||
|
*
|
||||||
* @param value1 值1
|
* @param value1 值1
|
||||||
* @param value2 值2
|
* @param value2 值2
|
||||||
* @Description: 乘法
|
|
||||||
* @return: BigDecimal
|
|
||||||
* @Author: sui q
|
|
||||||
* @Date: 2022/9/24 14:54
|
|
||||||
*/
|
*/
|
||||||
public static BigDecimal computeAddNum(BigDecimal value1, BigDecimal... value2) {
|
public static BigDecimal computeAddNum(BigDecimal value1, BigDecimal... value2) {
|
||||||
BigDecimal value = null != value1 ? value1 : BigDecimal.ZERO;
|
BigDecimal value = null != value1 ? value1 : BigDecimal.ZERO;
|
||||||
|
@ -237,24 +216,20 @@ public class ComputeUtil {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* 乘法
|
||||||
|
*
|
||||||
* @param value1 值1
|
* @param value1 值1
|
||||||
* @param value2 值2
|
* @param value2 值2
|
||||||
* @Description: 乘法
|
|
||||||
* @return: BigDecimal
|
|
||||||
* @Author: sui q
|
|
||||||
* @Date: 2022/9/24 14:54
|
|
||||||
*/
|
*/
|
||||||
public static BigDecimal computeAdd(BigDecimal value1, BigDecimal value2) {
|
public static BigDecimal computeAdd(BigDecimal value1, BigDecimal value2) {
|
||||||
return value1.add(value2);
|
return value1.add(value2);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* 乘法
|
||||||
|
*
|
||||||
* @param value1 值1
|
* @param value1 值1
|
||||||
* @param value2 值2
|
* @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) {
|
public static BigDecimal computeAddMultiply(BigDecimal value1, BigDecimal value2, Object value3) {
|
||||||
return value1.add(computeMultiply(value2, value3));
|
return value1.add(computeMultiply(value2, value3));
|
||||||
|
|
|
@ -39,17 +39,22 @@ public class CuMemberRetailRangeExt extends CuMemberRetailRange {
|
||||||
private String awardsName;
|
private String awardsName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 极差比例
|
* 福利级差比例
|
||||||
*/
|
*/
|
||||||
private BigDecimal rangeRatio;
|
private BigDecimal rangeRatio;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 福利平均比例
|
* 复购级差比例
|
||||||
|
*/
|
||||||
|
private BigDecimal monthRepurchaseRatio;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分红平均比例
|
||||||
*/
|
*/
|
||||||
private BigDecimal benefitAvgRatio;
|
private BigDecimal benefitAvgRatio;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 福利加权比例
|
* 分红加权比例
|
||||||
*/
|
*/
|
||||||
private BigDecimal benefitShareRatio;
|
private BigDecimal benefitShareRatio;
|
||||||
|
|
||||||
|
|
|
@ -242,11 +242,17 @@ public class CuMemberBonus extends BaseEntity {
|
||||||
private BigDecimal retailAreaIncome;
|
private BigDecimal retailAreaIncome;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 新零售福利极差收益
|
* 新零售福利级差收益
|
||||||
*/
|
*/
|
||||||
@TableField("RETAIL_BENEFIT_RANGE_INCOME")
|
@TableField("RETAIL_BENEFIT_RANGE_INCOME")
|
||||||
private BigDecimal retailBenefitRangeIncome;
|
private BigDecimal retailBenefitRangeIncome;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新零售复购级差收益
|
||||||
|
*/
|
||||||
|
@TableField("RETAIL_MONTH_REPURCHASE_INCOME")
|
||||||
|
private BigDecimal retailMonthRepurchaseIncome;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 新零售福利平均收益
|
* 新零售福利平均收益
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -77,13 +77,13 @@ public class CuMemberBonusRange extends BaseEntity {
|
||||||
private BigDecimal calValue;
|
private BigDecimal calValue;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 极差等级
|
* 级差等级
|
||||||
*/
|
*/
|
||||||
@TableField("PK_RANGE")
|
@TableField("PK_RANGE")
|
||||||
private Integer pkRange;
|
private Integer pkRange;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 前一极差等级
|
* 前一级差等级
|
||||||
*/
|
*/
|
||||||
@TableField("PK_BEFORE_RANGE")
|
@TableField("PK_BEFORE_RANGE")
|
||||||
private Integer pkBeforeRange;
|
private Integer pkBeforeRange;
|
||||||
|
|
|
@ -198,11 +198,17 @@ public class BdAwards extends BaseEntity {
|
||||||
private BigDecimal shareTotalCheck;
|
private BigDecimal shareTotalCheck;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 极差比例
|
* 福利级差比例
|
||||||
*/
|
*/
|
||||||
@TableField("RANGE_RATIO")
|
@TableField("RANGE_RATIO")
|
||||||
private BigDecimal rangeRatio;
|
private BigDecimal rangeRatio;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 复购级差比例
|
||||||
|
*/
|
||||||
|
@TableField("MONTH_REPURCHASE_RATIO")
|
||||||
|
private BigDecimal monthRepurchaseRatio;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 福利平均比例
|
* 福利平均比例
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in New Issue