## 月度分红处理;

This commit is contained in:
cabbage 2025-06-23 16:43:49 +08:00
parent 5e0d9f2ff4
commit 967e0e851d
14 changed files with 177 additions and 156 deletions

View File

@ -905,7 +905,6 @@ public abstract class BonusSettleHandle {
setBonusDeduct(bdBonusDeduct, cuMemberBonus, bonusDetail); setBonusDeduct(bdBonusDeduct, cuMemberBonus, bonusDetail);
BigDecimal realIncome = ReflectUtils.invokeGetter(bonusDetail, BonusFieldConstants.REAL_INCOME); BigDecimal realIncome = ReflectUtils.invokeGetter(bonusDetail, BonusFieldConstants.REAL_INCOME);
cuMemberBonus.setRepurCouponSubtotal(ComputeUtil.computeAdd(cuMemberBonus.getRepurCouponSubtotal(), realIncome)); cuMemberBonus.setRepurCouponSubtotal(ComputeUtil.computeAdd(cuMemberBonus.getRepurCouponSubtotal(), realIncome));
// cuMemberBonus.setRealIncomeTotal(ComputeUtil.computeAdd(cuMemberBonus.getRealIncomeTotal(), realIncome));
} }
/** /**

View File

@ -1823,7 +1823,7 @@ 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<>();
@ -2005,101 +2005,125 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
} }
} }
// // CAR_AWARD_POINTS 福利平均收益 SHARE_INCOME 福利收益 // 查询 v5 等级 分红奖衔 >=S4
// // 查询v5 等级 且奖衔>=S4的 List<CuMemberRetailRangeExt> memberRetailRangeExtList = iCuMemberRetailRangeService.batchQueryMemberRetailRangeByAwards(rangeTableName);
// List<CuMemberRetailRangeExt> memberRetailRangeExtList = iCuMemberRetailRangeService.batchQueryMemberRetailRangeByAwards(rangeTableName); if (memberRetailRangeExtList.size() > 0) {
// if (memberRetailRangeExtList.size() > 0) { // 查询月度分红会员的直推
// List<CuMemberRetailRangeExt> retailRangeExtList = iCuMemberRetailRangeService.batchQueryMemberRetailRangeByParent(rangeTableName, memberRetailRangeExtList); List<CuMemberRetailRangeExt> retailRangeExtList = iCuMemberRetailRangeService.batchQueryMemberRetailRangeByParent(rangeTableName, memberRetailRangeExtList);
// Map<Long, List<CuMemberRetailRangeExt>> parentMemberRangeExtMap = new HashMap<>(); // 推荐会员列表key推荐人value推荐会员列表
// for (CuMemberRetailRangeExt cuMemberRetailRangeExt : retailRangeExtList) { Map<Long, List<CuMemberRetailRangeExt>> parentMemberRangeExtMap = new HashMap<>();
// if (parentMemberRangeExtMap.containsKey(cuMemberRetailRangeExt.getPkParent())) { for (CuMemberRetailRangeExt cuMemberRetailRangeExt : retailRangeExtList) {
// parentMemberRangeExtMap.get(cuMemberRetailRangeExt.getPkParent()).add(cuMemberRetailRangeExt); if (parentMemberRangeExtMap.containsKey(cuMemberRetailRangeExt.getPkParent())) {
// } else { parentMemberRangeExtMap.get(cuMemberRetailRangeExt.getPkParent()).add(cuMemberRetailRangeExt);
// List<CuMemberRetailRangeExt> cuMemberRangeExtList = new ArrayList<>(); } else {
// cuMemberRangeExtList.add(cuMemberRetailRangeExt); List<CuMemberRetailRangeExt> cuMemberRangeExtList = new ArrayList<>();
// parentMemberRangeExtMap.put(cuMemberRetailRangeExt.getPkParent(), cuMemberRangeExtList); cuMemberRangeExtList.add(cuMemberRetailRangeExt);
// } parentMemberRangeExtMap.put(cuMemberRetailRangeExt.getPkParent(), cuMemberRangeExtList);
// } }
// // 分类分为4 5 6 7 8 9 }
// List<CuMemberRetailRangeExt> firstAwardsRetailRangeList = new ArrayList<>(); // 奖衔分红分类
// BigDecimal benefitAvgRatio = BigDecimal.ZERO; // 4 5 6 级奖衔会员
// BigDecimal benefitShareRatio = BigDecimal.ZERO; List<CuMemberRetailRangeExt> firstAwardsRetailRangeList = new ArrayList<>();
// BigDecimal firstConsumePv = BigDecimal.ZERO; // 4 5 6 级奖衔累计业绩
// BigDecimal secondBenefitAvgRatio = BigDecimal.ZERO; BigDecimal firstConsumePv = BigDecimal.ZERO;
// BigDecimal secondBenefitShareRatio = BigDecimal.ZERO; // 4 5 6 月度分红平均 比例
// BigDecimal secondConsumePv = BigDecimal.ZERO; BigDecimal benefitAvgRatio = BigDecimal.ZERO;
// List<CuMemberRetailRangeExt> secondAwardsRetailRangeList = new ArrayList<>(); // 4 5 6 月度分红加权 比例
// for (CuMemberRetailRangeExt cuMemberRetailRangeExt : memberRetailRangeExtList) { BigDecimal benefitShareRatio = BigDecimal.ZERO;
// if (parentMemberRangeExtMap.containsKey(cuMemberRetailRangeExt.getPkMember())) {
// List<CuMemberRetailRangeExt> rangeExtList = parentMemberRangeExtMap.get(cuMemberRetailRangeExt.getPkMember()); // 7 8 9 级奖衔会员
// // 计算小区 List<CuMemberRetailRangeExt> secondAwardsRetailRangeList = new ArrayList<>();
// BigDecimal bigConsumePv = BigDecimal.ZERO; // 7 8 9 级奖衔累计业绩
// for (CuMemberRetailRangeExt memberRetailRangeExt : rangeExtList) { BigDecimal secondConsumePv = BigDecimal.ZERO;
// BigDecimal monthConsumePv = ComputeUtil.computeAdd(memberRetailRangeExt.getMonthConsumePv(), memberRetailRangeExt.getTeamMonthPv()); // 7 8 9 月度分红平均 比例
// if (ComputeUtil.compareGreaterThan(monthConsumePv, bigConsumePv)) { BigDecimal secondBenefitAvgRatio = BigDecimal.ZERO;
// bigConsumePv = monthConsumePv; // 7 8 9 月度分红加权 比例
// } BigDecimal secondBenefitShareRatio = BigDecimal.ZERO;
// }
// cuMemberRetailRangeExt.setSmallAreaConsumePv(ComputeUtil.computeSubtract(cuMemberRetailRangeExt.getTeamMonthPv(), bigConsumePv)); for (CuMemberRetailRangeExt cuMemberRetailRangeExt : memberRetailRangeExtList) {
// } else { if (parentMemberRangeExtMap.containsKey(cuMemberRetailRangeExt.getPkMember())) {
// cuMemberRetailRangeExt.setSmallAreaConsumePv(BigDecimal.ZERO); // 获取会员的推荐数据
// } List<CuMemberRetailRangeExt> rangeExtList = parentMemberRangeExtMap.get(cuMemberRetailRangeExt.getPkMember());
// if (cuMemberRetailRangeExt.getShareAwardsValue() >= EAwards.SENIOR_MANAGER.getValue() && // 计算小区本人月消费默认为大区
// cuMemberRetailRangeExt.getShareAwardsValue() <= EAwards.HIGH_CHIEF.getValue()) { BigDecimal bigConsumePv = cuMemberRetailRangeExt.getMonthConsumePv();
// firstAwardsRetailRangeList.add(cuMemberRetailRangeExt); for (CuMemberRetailRangeExt memberRetailRangeExt : rangeExtList) {
// benefitAvgRatio = cuMemberRetailRangeExt.getBenefitAvgRatio(); // 本人消费 + 团队消费
// benefitShareRatio = cuMemberRetailRangeExt.getBenefitShareRatio(); BigDecimal monthConsumePv = ComputeUtil.computeAdd(memberRetailRangeExt.getMonthConsumePv(), memberRetailRangeExt.getTeamMonthPv());
// firstConsumePv = ComputeUtil.computeAdd(cuMemberRetailRangeExt.getSmallAreaConsumePv(), firstConsumePv); if (ComputeUtil.compareGreaterThan(monthConsumePv, bigConsumePv)) {
// } else { bigConsumePv = monthConsumePv;
// secondAwardsRetailRangeList.add(cuMemberRetailRangeExt); }
// secondBenefitAvgRatio = cuMemberRetailRangeExt.getBenefitAvgRatio(); }
// secondBenefitShareRatio = cuMemberRetailRangeExt.getBenefitShareRatio(); // 小区业绩 = 本人月团队 + 本人月消费 - 大区业绩
// secondConsumePv = ComputeUtil.computeAdd(cuMemberRetailRangeExt.getSmallAreaConsumePv(), secondConsumePv); cuMemberRetailRangeExt.setSmallAreaConsumePv(ComputeUtil.computeSubtract(cuMemberRetailRangeExt.getTeamMonthPv().add(cuMemberRetailRangeExt.getMonthConsumePv()), bigConsumePv));
// } } else {
// } cuMemberRetailRangeExt.setSmallAreaConsumePv(BigDecimal.ZERO);
// if (firstAwardsRetailRangeList.size() > 0) { }
// BigDecimal benefitAvgIncome = ComputeUtil.computeDivide(ComputeUtil.computeBonusMultiply(totalMonthConsumePv, benefitAvgRatio), BigDecimal.valueOf(firstAwardsRetailRangeList.size())); if (cuMemberRetailRangeExt.getShareAwardsValue() >= EAwards.SENIOR_MANAGER.getValue()
// BigDecimal benefitShareIncome = ComputeUtil.computeBonusMultiply(totalMonthConsumePv, benefitShareRatio); && cuMemberRetailRangeExt.getShareAwardsValue() <= EAwards.HIGH_CHIEF.getValue()) {
// for (CuMemberRetailRangeExt cuMemberRetailRangeExt : firstAwardsRetailRangeList) { // 奖衔 4 5 6 级数据处理
// if (ECategory.NORMAL.getValue() != cuMemberRetailRangeExt.getCategory() || firstAwardsRetailRangeList.add(cuMemberRetailRangeExt);
// EAccountStatus.STOP_INCOME.getValue() == cuMemberRetailRangeExt.getAccountStatus() || benefitAvgRatio = cuMemberRetailRangeExt.getBenefitAvgRatio();
// EIncomeStatus.STOP_INCOME.getValue() == cuMemberRetailRangeExt.getIncomeStatus()) { benefitShareRatio = cuMemberRetailRangeExt.getBenefitShareRatio();
// continue; firstConsumePv = ComputeUtil.computeAdd(cuMemberRetailRangeExt.getSmallAreaConsumePv(), firstConsumePv);
// } } else {
// // 验证是否有奖金 // 奖衔 7 8 9 级数据处理
// if (validatePkBonusItems(bonusConfigDTO, cuMemberRetailRangeExt.getPkSettleCountry(), EBonusItems.RETAIL_BENEFIT_AVG_INCOME.getValue())) { secondAwardsRetailRangeList.add(cuMemberRetailRangeExt);
// continue; secondBenefitAvgRatio = cuMemberRetailRangeExt.getBenefitAvgRatio();
// } secondBenefitShareRatio = cuMemberRetailRangeExt.getBenefitShareRatio();
// memberBonusDetailList.add(packageBenefitIncome(bonusConfigDTO, period, cuMemberBonusMap, month, benefitAvgRatio, secondConsumePv = ComputeUtil.computeAdd(cuMemberRetailRangeExt.getSmallAreaConsumePv(), secondConsumePv);
// 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, if (firstAwardsRetailRangeList.size() > 0) {
// bonusIncome, cuMemberRetailRangeExt, EBonusItems.RETAIL_BENEFIT_INCOME.getValue(), BonusMsgConstants.RETAIL_BENEFIT_INCOME); // 月度分红平均收益 = 订单总业绩 分红平均比例 奖衔人数
// memberBonusDetailList.add(cuMemberBonusDetail); BigDecimal benefitAvgIncome = ComputeUtil.computeDivide(ComputeUtil.computeBonusMultiply(totalMonthConsumePv, benefitAvgRatio), BigDecimal.valueOf(firstAwardsRetailRangeList.size()));
// } // 月度分红加权总收益 = 订单总业绩 分红加权比例
// } BigDecimal benefitShareIncome = ComputeUtil.computeBonusMultiply(totalMonthConsumePv, benefitShareRatio);
// if (secondAwardsRetailRangeList.size() > 0) { for (CuMemberRetailRangeExt cuMemberRetailRangeExt : firstAwardsRetailRangeList) {
// BigDecimal benefitAvgIncome = ComputeUtil.computeDivide(ComputeUtil.computeBonusMultiply(totalMonthConsumePv, secondBenefitAvgRatio), BigDecimal.valueOf(secondAwardsRetailRangeList.size())); if (ECategory.NORMAL.getValue() != cuMemberRetailRangeExt.getCategory()
// BigDecimal benefitShareIncome = ComputeUtil.computeBonusMultiply(totalMonthConsumePv, secondBenefitShareRatio); || EAccountStatus.STOP_INCOME.getValue() == cuMemberRetailRangeExt.getAccountStatus()
// for (CuMemberRetailRangeExt cuMemberRetailRangeExt : secondAwardsRetailRangeList) { || EIncomeStatus.STOP_INCOME.getValue() == cuMemberRetailRangeExt.getIncomeStatus()) {
// if (ECategory.NORMAL.getValue() != cuMemberRetailRangeExt.getCategory() || // 非正常状态停算状态停止收益直接跳过
// EAccountStatus.STOP_INCOME.getValue() == cuMemberRetailRangeExt.getAccountStatus() || continue;
// EIncomeStatus.STOP_INCOME.getValue() == cuMemberRetailRangeExt.getIncomeStatus()) { }
// continue; // 验证是否有奖金
// } if (validatePkBonusItems(bonusConfigDTO, cuMemberRetailRangeExt.getPkSettleCountry(), EBonusItems.RETAIL_BENEFIT_AVG_INCOME.getValue())) {
// // 验证是否有奖金 continue;
// if (validatePkBonusItems(bonusConfigDTO, cuMemberRetailRangeExt.getPkSettleCountry(), EBonusItems.RETAIL_BENEFIT_AVG_INCOME.getValue())) { }
// continue; // 月度分红 - 平均收益
// } memberBonusDetailList.add(packageBenefitIncome(bonusConfigDTO, period, cuMemberBonusMap, month, benefitAvgRatio,
// memberBonusDetailList.add(packageBenefitIncome(bonusConfigDTO, period, cuMemberBonusMap, month, secondBenefitAvgRatio, benefitAvgIncome, cuMemberRetailRangeExt, EBonusItems.RETAIL_BENEFIT_AVG_INCOME.getValue(), BonusMsgConstants.RETAIL_BENEFIT_AVG_INCOME));
// benefitAvgIncome, cuMemberRetailRangeExt, EBonusItems.RETAIL_BENEFIT_AVG_INCOME.getValue(), BonusMsgConstants.RETAIL_BENEFIT_AVG_INCOME)); // 月度分红加权收益 = 月度分红加权总收益 小市场业绩 总小市场业绩
// BigDecimal bonusIncome = ComputeUtil.computeDivide(ComputeUtil.computeMultiply(benefitShareIncome, cuMemberRetailRangeExt.getSmallAreaConsumePv()), secondConsumePv); BigDecimal bonusIncome = ComputeUtil.computeDivide(ComputeUtil.computeMultiply(benefitShareIncome, cuMemberRetailRangeExt.getSmallAreaConsumePv()), firstConsumePv);
// CuMemberBonusDetail cuMemberBonusDetail = packageBenefitIncome(bonusConfigDTO, period, cuMemberBonusMap, month, secondBenefitShareRatio, // 月度分红 - 加权收益
// bonusIncome, cuMemberRetailRangeExt, EBonusItems.RETAIL_BENEFIT_INCOME.getValue(), BonusMsgConstants.RETAIL_BENEFIT_INCOME); memberBonusDetailList.add(packageBenefitIncome(bonusConfigDTO, period, cuMemberBonusMap, month, benefitShareRatio,
// memberBonusDetailList.add(cuMemberBonusDetail); bonusIncome, cuMemberRetailRangeExt, EBonusItems.RETAIL_BENEFIT_INCOME.getValue(), BonusMsgConstants.RETAIL_BENEFIT_INCOME));
// } }
// } }
// } 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);
// 月度分红 - 加权收益
memberBonusDetailList.add(packageBenefitIncome(bonusConfigDTO, period, cuMemberBonusMap, month, secondBenefitShareRatio,
bonusIncome, cuMemberRetailRangeExt, EBonusItems.RETAIL_BENEFIT_INCOME.getValue(), BonusMsgConstants.RETAIL_BENEFIT_INCOME));
}
}
}
} }
} }
if (memberBonusDetailList.size() > 0) { if (memberBonusDetailList.size() > 0) {
@ -2120,10 +2144,13 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
private CuMemberBonusDetail packageBenefitIncome(BonusConfigDTO bonusConfigDTO, Integer period, Map<Long, CuMemberBonus> cuMemberBonusMap, String month, private CuMemberBonusDetail packageBenefitIncome(BonusConfigDTO bonusConfigDTO, Integer period, Map<Long, CuMemberBonus> cuMemberBonusMap, String month,
BigDecimal benefitAvgRatio, BigDecimal benefitAvgIncome, CuMemberRetailRangeExt cuMemberRetailRangeExt, Integer bonusItemsValue, String msg) { BigDecimal benefitAvgRatio, BigDecimal benefitAvgIncome, CuMemberRetailRangeExt cuMemberRetailRangeExt, Integer bonusItemsValue, String msg) {
// 获取会员奖金数据
CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, cuMemberRetailRangeExt.getPkMember(), CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, cuMemberRetailRangeExt.getPkMember(),
cuMemberRetailRangeExt.getIncomeStatus(), cuMemberRetailRangeExt.getPkSettleCountry(), cuMemberRetailRangeExt.getPkRate()); cuMemberRetailRangeExt.getIncomeStatus(), cuMemberRetailRangeExt.getPkSettleCountry(), cuMemberRetailRangeExt.getPkRate());
SaOrder saOrderExt = SaOrder.builder().pkId(0L).orderAchieve(BigDecimal.ZERO).build(); SaOrder saOrderExt = SaOrder.builder().pkId(0L).orderAchieve(BigDecimal.ZERO).build();
CuMemberBonusDetail cuMemberBonusDetail = getCuMemberBonusDetail(saOrderExt, cuMemberRetailRangeExt.getIncomeStatus(), cuMemberRetailRangeExt.getPkSettleCountry(), cuMemberBonus); CuMemberBonusDetail cuMemberBonusDetail = getCuMemberBonusDetail(saOrderExt, cuMemberRetailRangeExt.getIncomeStatus(), cuMemberRetailRangeExt.getPkSettleCountry(), cuMemberBonus);
// 计算比例 // 计算比例
cuMemberBonusDetail.setCalValue(benefitAvgRatio); cuMemberBonusDetail.setCalValue(benefitAvgRatio);
cuMemberBonusDetail.setPretaxIncome(benefitAvgIncome); cuMemberBonusDetail.setPretaxIncome(benefitAvgIncome);
@ -2134,6 +2161,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
String remark = String.format(msg, cuMemberBonusDetail.getPretaxIncome(), month); String remark = String.format(msg, cuMemberBonusDetail.getPretaxIncome(), month);
cuMemberBonusDetail.setRemark(remark); cuMemberBonusDetail.setRemark(remark);
} }
if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusDetail.getIncomeStatus()) { if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusDetail.getIncomeStatus()) {
if (bonusItemsValue == EBonusItems.RETAIL_AREA_INCOME.getValue()) { if (bonusItemsValue == EBonusItems.RETAIL_AREA_INCOME.getValue()) {
cuMemberBonus.setRetailAreaIncome(ComputeUtil.computeAdd(cuMemberBonus.getRetailAreaIncome(), cuMemberBonusDetail.getPretaxIncome())); cuMemberBonus.setRetailAreaIncome(ComputeUtil.computeAdd(cuMemberBonus.getRetailAreaIncome(), cuMemberBonusDetail.getPretaxIncome()));

View File

@ -188,7 +188,7 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
// 保存当日计算的奖金 // 保存当日计算的奖金
insertCuMemberBonus(settleDate, period, cuMemberBonusMap, recordDetailVO); insertCuMemberBonus(settleDate, period, cuMemberBonusMap, recordDetailVO);
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); log.error("奖金结算异常", e);
throw new RuntimeException(e); throw new RuntimeException(e);
} }
} }

View File

@ -144,28 +144,24 @@ public class CuRegionAssessServiceImpl extends ServiceImpl<CuRegionAssessMapper,
} }
/** /**
* @description: 定时处理会员收益区域处理前三天 * 定时处理会员收益区域处理前三天
* @author: zhang jing
* @date: 2025/3/7 9:56
* @param: [startDate]
* @return: void
**/ **/
@Override @Override
public void validateHandAreaAssess(Date startDate,Date endDate) { public void validateHandAreaAssess(Date startDate, Date endDate) {
List<Long> cancelRegionList = new ArrayList<>(); List<Long> cancelRegionList = new ArrayList<>();
List<CuMemberRetailRegion> dueRetailRegionList = baseMapper.queryDueCuMemberRetailRegion(startDate, endDate); List<CuMemberRetailRegion> dueRetailRegionList = baseMapper.queryDueCuMemberRetailRegion(startDate, endDate);
if(dueRetailRegionList.size() > 0) { if (dueRetailRegionList.size() > 0) {
Date assessDate = DateUtils.currentMonthFirstDate(startDate); Date assessDate = DateUtils.currentMonthFirstDate(startDate);
// 查询期初日期 beforeMonthFirstDate startDate 考核期间结束日期 // 查询期初日期 beforeMonthFirstDate startDate 考核期间结束日期
Date assMonthStartDate = DateUtils.beforeMonthFirstDate(5, assessDate); Date assMonthStartDate = DateUtils.beforeMonthFirstDate(5, assessDate);
// assessDate assessDate 查询考核记录 // assessDate assessDate 查询考核记录
Map<Long,CuRegionAssessExt> regionAssessExtMap = new HashMap<>(); Map<Long, CuRegionAssessExt> regionAssessExtMap = new HashMap<>();
List<CuRegionAssessExt> cuRegionAssessExtList = baseMapper.queryRegionAssessByDate(dueRetailRegionList, assMonthStartDate, assessDate); List<CuRegionAssessExt> cuRegionAssessExtList = baseMapper.queryRegionAssessByDate(dueRetailRegionList, assMonthStartDate, assessDate);
cuRegionAssessExtList.forEach(cuRegionAssessExt -> regionAssessExtMap.put(cuRegionAssessExt.getPkMember(), cuRegionAssessExt)); cuRegionAssessExtList.forEach(cuRegionAssessExt -> regionAssessExtMap.put(cuRegionAssessExt.getPkMember(), cuRegionAssessExt));
for (CuMemberRetailRegion cuMemberRetailRegion : dueRetailRegionList) { for (CuMemberRetailRegion cuMemberRetailRegion : dueRetailRegionList) {
if(regionAssessExtMap.containsKey(cuMemberRetailRegion.getPkMember())){ if (regionAssessExtMap.containsKey(cuMemberRetailRegion.getPkMember())) {
CuRegionAssessExt cuRegionAssessExt = regionAssessExtMap.get(cuMemberRetailRegion.getPkMember()); CuRegionAssessExt cuRegionAssessExt = regionAssessExtMap.get(cuMemberRetailRegion.getPkMember());
if(cuRegionAssessExt.getPkId() >=3){ if (cuRegionAssessExt.getPkId() >= 3) {
continue; continue;
} }
} }

View File

@ -494,18 +494,23 @@
</select> </select>
<select id="batchQueryMemberRetailRangeByParent" resultMap="CuMemberRetailRangeExt"> <select id="batchQueryMemberRetailRangeByParent" resultMap="CuMemberRetailRangeExt">
select pk_member,pk_parent,member_code,member_name,a.pk_awards,a.pk_grade,a.pk_rate, select pk_member, pk_parent, member_code, member_name,
a.income_status,a.pk_country,a.pk_settle_country,a.account_status,a.category, a.pk_awards, a.pk_grade, a.pk_rate,
bg.grade_value,bg.grade_name,bw.awards_value,bw.awards_name,a.month_consume_pv, a.income_status, a.pk_country, a.pk_settle_country,
a.team_month_pv, a.account_status, a.category,
bw.range_ratio, bw.month_repurchase_ratio, bw.benefit_avg_ratio,bw.benefit_share_ratio bg.grade_value, bg.grade_name,
bw.awards_value, bw.awards_name,
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 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
and bw.del_flag = 0
inner join bd_grade bg inner join bd_grade bg
on bg.pk_id=a.pk_grade on bg.pk_id = a.pk_grade
where bw.del_flag=0 and bg.del_flag=0 and bg.del_flag = 0
and a.pk_parent in where a.pk_parent in
<foreach collection="memberRetailRangeExtList" item="item" open="(" close=")" separator=","> <foreach collection="memberRetailRangeExtList" item="item" open="(" close=")" separator=",">
#{item.pkMember} #{item.pkMember}
</foreach> </foreach>

View File

@ -61,6 +61,7 @@ public class RetailMemberController extends BaseController {
@DubboReference @DubboReference
IAreaServiceApi iAreaServiceApi; IAreaServiceApi iAreaServiceApi;
/** /**
* 获取登录会员信息 * 获取登录会员信息
* *

View File

@ -131,14 +131,15 @@ public class CommonServiceProvider implements ICommonServiceApi {
memberDataDTO.setGradeVal(bdGrade.getGradeName()); memberDataDTO.setGradeVal(bdGrade.getGradeName());
} }
} }
BdAwards monthAwards = null;
// 当月奖衔 // 当月奖衔
if (null != memberDataDTO.getPkAwards()) { if (null != memberDataDTO.getPkAwards()) {
BdAwards bdAwards = iBdAwardsService.getBdAwardsOne(memberDataDTO.getPkAwards()); monthAwards = iBdAwardsService.getBdAwardsOne(memberDataDTO.getPkAwards());
if (null != bdAwards) { if (null != monthAwards) {
memberDataDTO.setAwardsVal(bdAwards.getAwardsName()); memberDataDTO.setAwardsVal(monthAwards.getAwardsName());
if (EAwards.MEMBER.getValue() != bdAwards.getAwardsValue()) { if (EAwards.MEMBER.getValue() != monthAwards.getAwardsValue()) {
// 奖衔如果是会员级别不返回图标 // 奖衔如果是会员级别不返回图标
memberDataDTO.setAwardsIcon(bdAwards.getImage()); memberDataDTO.setAwardsIcon(monthAwards.getImage());
} }
} }
} }
@ -146,7 +147,8 @@ public class CommonServiceProvider implements ICommonServiceApi {
if (null != memberDataDTO.getPkMaxAwards()) { if (null != memberDataDTO.getPkMaxAwards()) {
BdAwards bdAwards = iBdAwardsService.getBdAwardsOne(memberDataDTO.getPkMaxAwards()); BdAwards bdAwards = iBdAwardsService.getBdAwardsOne(memberDataDTO.getPkMaxAwards());
if (null != bdAwards) { if (null != bdAwards) {
if (EAwards.MEMBER.getValue() == bdAwards.getAwardsValue()) { if (null != monthAwards && monthAwards.getAwardsValue() > bdAwards.getAwardsValue()) {
// 月奖衔 大于 荣誉奖衔显示月奖衔
memberDataDTO.setMaxAwardsVal(memberDataDTO.getAwardsVal()); memberDataDTO.setMaxAwardsVal(memberDataDTO.getAwardsVal());
memberDataDTO.setMaxAwardsIcon(memberDataDTO.getAwardsIcon()); memberDataDTO.setMaxAwardsIcon(memberDataDTO.getAwardsIcon());
} else { } else {

View File

@ -8,7 +8,6 @@ public class BonusMsgConstants {
/** /**
* 直推收益备注 -- 当前是第%d轮,%d次,订单编号%s,%s为%s贡献了推荐收益,计算业绩%f,直推比例%f * 直推收益备注 -- 当前是第%d轮,%d次,订单编号%s,%s为%s贡献了推荐收益,计算业绩%f,直推比例%f
*/ */
// public static String RECOMMEND = "MSG_BONUS_001";
public static String RECOMMEND = "当前是第%d轮,第%d次,订单编号%s,%s为%s贡献了推荐收益,计算业绩%f,直推比例%f。"; public static String RECOMMEND = "当前是第%d轮,第%d次,订单编号%s,%s为%s贡献了推荐收益,计算业绩%f,直推比例%f。";
public static String RANGE_RECOMMEND = "当前是第%d代,第%d次,订单编号%s,%s为%s贡献了推互助收益,计算业绩%f。"; public static String RANGE_RECOMMEND = "当前是第%d代,第%d次,订单编号%s,%s为%s贡献了推互助收益,计算业绩%f。";
@ -16,31 +15,26 @@ public class BonusMsgConstants {
/** /**
* 直推收益备注 -- 订单编号%s,%s为%s贡献了推荐收益,推荐收益为%f * 直推收益备注 -- 订单编号%s,%s为%s贡献了推荐收益,推荐收益为%f
*/ */
// public static String RECOMMEND_DIRECT = "MSG_BONUS_002";
public static String RECOMMEND_DIRECT = "订单编号%s,%s为%s贡献了推荐收益,推荐收益为%f。"; public static String RECOMMEND_DIRECT = "订单编号%s,%s为%s贡献了推荐收益,推荐收益为%f。";
public static String RECOMMEND_SPECIAL_DIRECT = "订单编号%s,%s为%s贡献了乐学易考推荐极差收益,推荐极差收益为%f。"; public static String RECOMMEND_SPECIAL_DIRECT = "订单编号%s,%s为%s贡献了乐学易考推荐极差收益,推荐极差收益为%f。";
/** /**
* 拓展收益备注 -- 当前是第%d碰,%d碰,订单编号%s,%s为%s贡献了拓展收益,计算业绩%f,拓展比例%f * 拓展收益备注 -- 当前是第%d碰,%d碰,订单编号%s,%s为%s贡献了拓展收益,计算业绩%f,拓展比例%f
*/ */
// public static String EXPAND = "MSG_BONUS_003";
public static String EXPAND = "当前是第%d碰,共%d碰,订单编号%s,%s为%s贡献了拓展收益,计算业绩%f,拓展比例%f。"; public static String EXPAND = "当前是第%d碰,共%d碰,订单编号%s,%s为%s贡献了拓展收益,计算业绩%f,拓展比例%f。";
/** /**
* 辅导收益备注 -- 当前是第%d代,#,订单编号%s,%s为%s贡献了辅导收益,计算业绩%f,辅导比例%f * 辅导收益备注 -- 当前是第%d代,#,订单编号%s,%s为%s贡献了辅导收益,计算业绩%f,辅导比例%f
*/ */
// public static String COACH = "MSG_BONUS_004";
public static String COACH = "当前是第%d代,共#代,订单编号%s,%s为%s贡献了辅导收益,计算业绩%f,辅导比例%f。"; public static String COACH = "当前是第%d代,共#代,订单编号%s,%s为%s贡献了辅导收益,计算业绩%f,辅导比例%f。";
/** /**
* 辅导收益备注 -- 当前是第%d代,#,订单编号%s,%s为%s贡献了辅导收益,计算业绩%f,辅导比例%f * 辅导收益备注 -- 当前是第%d代,#,订单编号%s,%s为%s贡献了辅导收益,计算业绩%f,辅导比例%f
*/ */
// public static String COACH = "MSG_BONUS_004";
public static String RANGE_COACH = "当前是第%d代,共%d代,订单编号%s,%s为%s贡献了幸运收益,计算业绩%f,计算比例%f。"; public static String RANGE_COACH = "当前是第%d代,共%d代,订单编号%s,%s为%s贡献了幸运收益,计算业绩%f,计算比例%f。";
/** /**
* 报单服务费收益备注 -- 订单编号%s,%s为%s贡献了报单服务费收益,计算业绩%f,报单服务费比例%f * 报单服务费收益备注 -- 订单编号%s,%s为%s贡献了报单服务费收益,计算业绩%f,报单服务费比例%f
*/ */
// public static String SERVICE = "MSG_BONUS_005";
public static String SERVICE = "订单编号%s,%s为%s贡献了报单服务费收益,计算业绩%f,报单服务费比例%f。"; public static String SERVICE = "订单编号%s,%s为%s贡献了报单服务费收益,计算业绩%f,报单服务费比例%f。";
/** /**
@ -50,55 +44,55 @@ public class BonusMsgConstants {
public static String MONTH_SERVICE = "获得%f月报单服务费收益,结算月%s。"; public static String MONTH_SERVICE = "获得%f月报单服务费收益,结算月%s。";
public static String RETAIL_BENEFIT_AVG_INCOME = "获得%f月福利平均收益,结算月%s。"; /**
* 月度分红平均收益
*/
public static String RETAIL_BENEFIT_AVG_INCOME = "获得 %f 月度分红福利平均收益,结算月%s。";
/**
* 月度分红加权收益
*/
public static String RETAIL_BENEFIT_INCOME = "获得 %f 月度分红福利加权收益,结算月%s。";
/** /**
* 区域分红说明 * 区域分红说明
*/ */
public static String RETAIL_AREA_INCOME = "订单编号%s,%s为%s贡献了区域分红,区域分红%f,收益县%s。"; public static String RETAIL_AREA_INCOME = "订单编号%s,%s为%s贡献了区域分红,区域分红%f,收益县%s。";
public static String RETAIL_BENEFIT_INCOME = "获得%f月福利加权收益,结算月%s。";
/** /**
* 分红收益备注 -- %s获得分红收益%f * 分红收益备注 -- %s获得分红收益%f
*/ */
// public static String SHARE = "MSG_BONUS_008";
public static String SHARE = "%s获得福利收益%f。"; public static String SHARE = "%s获得福利收益%f。";
/** /**
* -- 订单编号%s,%s为%s贡献了海粉推荐收益,海粉推荐收益%f * -- 订单编号%s,%s为%s贡献了海粉推荐收益,海粉推荐收益%f
*/ */
// public static String HAI_FUN = "MSG_BONUS_009";
public static String HAI_FUN = "订单编号%s,%s为%s贡献了海粉推荐收益,海粉推荐收益%f。"; public static String HAI_FUN = "订单编号%s,%s为%s贡献了海粉推荐收益,海粉推荐收益%f。";
/** /**
* 复购券收益备注 -- %s获得复购券均分收益%f * 复购券收益备注 -- %s获得复购券均分收益%f
*/ */
// public static String SHARE_COUPON = "MSG_BONUS_010";
public static String SHARE_COUPON = "%s获得复购券均分收益%f。"; public static String SHARE_COUPON = "%s获得复购券均分收益%f。";
/** /**
* 复购券收益备注 -- %s获得店铺收益%f * 复购券收益备注 -- %s获得店铺收益%f
*/ */
// public static String STORE = "MSG_BONUS_011";
public static String STORE = "%s获得店铺收益%f。"; public static String STORE = "%s获得店铺收益%f。";
/** /**
* 车奖积分收益备注 -- 获得车奖积分收益%f * 车奖积分收益备注 -- 获得车奖积分收益%f
*/ */
// public static String CAR_AWARD_POINTS = "MSG_BONUS_013";
public static String CAR_AWARD_POINTS = "获得车奖积分收益%f。"; public static String CAR_AWARD_POINTS = "获得车奖积分收益%f。";
/** /**
* 嗨粉推荐收益备注 -- 订单编号%s,%s为%s贡献了嗨粉推荐收益,获得嗨粉推荐奖金%f * 嗨粉推荐收益备注 -- 订单编号%s,%s为%s贡献了嗨粉推荐收益,获得嗨粉推荐奖金%f
*/ */
// public static String HI_FUN = "MSG_BONUS_014";
public static String HI_FUN = "订单编号%s,%s为%s贡献了嗨粉推荐收益,获得嗨粉推荐奖金%f。"; public static String HI_FUN = "订单编号%s,%s为%s贡献了嗨粉推荐收益,获得嗨粉推荐奖金%f。";
/** /**
* 复购拓展收益备注 -- 订单编号%s,%s为%s贡献了复购推荐收益,计算业绩%f,直推比例%f * 复购拓展收益备注 -- 订单编号%s,%s为%s贡献了复购推荐收益,计算业绩%f,直推比例%f
*/ */
// public static String REPURCHASE_PUSH = "MSG_BONUS_015";
public static String REPURCHASE_PUSH = "订单编号%s,%s为%s贡献了复购推荐收益,计算业绩%f,直推比例%f。"; public static String REPURCHASE_PUSH = "订单编号%s,%s为%s贡献了复购推荐收益,计算业绩%f,直推比例%f。";
/** /**
@ -154,24 +148,24 @@ public class BonusMsgConstants {
/** /**
* 奖金重算 -- 只能重算7天内的奖金 * 奖金重算 -- 只能重算7天内的奖金
*/ */
public static final String SETTLE_VALIDATE_DATE = "只能重算7天内的奖金"; public static final String SETTLE_VALIDATE_DATE = "只能重算7天内的奖金";
/** /**
* 奖金重算 -- 只能公布近7天的奖金 * 奖金重算 -- 只能公布近7天的奖金
*/ */
public static final String PUBLISH_VALIDATE_DATE = "只能公布近7天的奖金"; public static final String PUBLISH_VALIDATE_DATE = "只能公布近7天的奖金";
/** /**
* 奖金重算 -- 只能不公布近昨天的奖金 * 奖金重算 -- 只能不公布近昨天的奖金
*/ */
public static final String NO_PUBLISH_VALIDATE_DATE = "只能不公布近昨天的奖金!"; public static final String NO_PUBLISH_VALIDATE_DATE = "只能不公布近昨天的奖金!";
/** /**
* 奖金发放 -- 只能发放7天以外的奖金 * 奖金发放 -- 只能发放7天以外的奖金
*/ */
public static final String GRANT_VALIDATE_DATE = "只能发放7天以外的奖金"; public static final String GRANT_VALIDATE_DATE = "只能发放7天以外的奖金";
/** /**
* 奖金发放 -- 只能提现14天以外的奖金 * 奖金发放 -- 只能提现14天以外的奖金
*/ */
public static final String WITHDRAW_VALIDATE_DATE = "只能提现14天以外的奖金"; public static final String WITHDRAW_VALIDATE_DATE = "只能提现14天以外的奖金";
} }

View File

@ -33,6 +33,7 @@ public enum EAwards {
* 蓝宝 * 蓝宝
*/ */
HIGH_MANAGER(4, 15, "三级", 0, EnumsPrefixConstants.AWARDS + 15), HIGH_MANAGER(4, 15, "三级", 0, EnumsPrefixConstants.AWARDS + 15),
/** /**
* 钻石 * 钻石
*/ */
@ -45,6 +46,7 @@ public enum EAwards {
* 绿钻 * 绿钻
*/ */
HIGH_CHIEF(7, 30, "六级", 0, EnumsPrefixConstants.AWARDS + 30), HIGH_CHIEF(7, 30, "六级", 0, EnumsPrefixConstants.AWARDS + 30),
/** /**
* 星耀蓝钻 * 星耀蓝钻
*/ */

View File

@ -107,11 +107,11 @@ public enum EBonusItems {
* 复购级差收益 -- 月结月奖 * 复购级差收益 -- 月结月奖
*/ */
RETAIL_MONTH_REPURCHASE_INCOME(31, "复购级差收益", 0, EnumsPrefixConstants.BONUS_ITEMS + 31), RETAIL_MONTH_REPURCHASE_INCOME(31, "复购级差收益", 0, EnumsPrefixConstants.BONUS_ITEMS + 31),
/** /**
* 培育津贴 -- 月结月奖 * 培育津贴 -- 月结月奖
*/ */
RETAIL_COACHING_INCOME(32, "培育津贴", 0, EnumsPrefixConstants.BONUS_ITEMS + 32), RETAIL_COACHING_INCOME(32, "培育津贴", 0, EnumsPrefixConstants.BONUS_ITEMS + 32),
/** /**
* 月度分红 - 平均收益福利平均收益 -- 月结月奖 * 月度分红 - 平均收益福利平均收益 -- 月结月奖
*/ */

View File

@ -55,7 +55,6 @@ public enum EGrade {
*/ */
S_VIP(6, 70, "V5", 0, EnumsPrefixConstants.GRADE + "70", MemberFrameworkConstants.S_VIP), S_VIP(6, 70, "V5", 0, EnumsPrefixConstants.GRADE + "70", MemberFrameworkConstants.S_VIP),
; ;
/** /**

View File

@ -12,12 +12,7 @@ import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
/** /**
* <p>
* 奖金扣项配置 * 奖金扣项配置
* </p>
*
* @author hzs
* @since 2022-11-04
*/ */
@Data @Data
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)

View File

@ -254,13 +254,13 @@ public class CuMemberBonus extends BaseEntity {
private BigDecimal retailMonthRepurchaseIncome; private BigDecimal retailMonthRepurchaseIncome;
/** /**
* 新零售福利平均收益 * 新零售福利分红平均收益
*/ */
@TableField("RETAIL_BENEFIT_AVG_INCOME") @TableField("RETAIL_BENEFIT_AVG_INCOME")
private BigDecimal retailBenefitAvgIncome; private BigDecimal retailBenefitAvgIncome;
/** /**
* 新零售福利加权收益 修改为福利分红收益 * 新零售福利分红加权收益
*/ */
@TableField("RETAIL_BENEFIT_INCOME") @TableField("RETAIL_BENEFIT_INCOME")
private BigDecimal retailBenefitIncome; private BigDecimal retailBenefitIncome;

View File

@ -198,25 +198,25 @@ 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") @TableField("MONTH_REPURCHASE_RATIO")
private BigDecimal monthRepurchaseRatio; private BigDecimal monthRepurchaseRatio;
/** /**
* 福利平均比例 * 福利平均比例 -- 月度分红平均
*/ */
@TableField("BENEFIT_AVG_RATIO") @TableField("BENEFIT_AVG_RATIO")
private BigDecimal benefitAvgRatio; private BigDecimal benefitAvgRatio;
/** /**
* 福利加权比例 * 福利加权比例 -- 月度分红加权
*/ */
@TableField("BENEFIT_SHARE_RATIO") @TableField("BENEFIT_SHARE_RATIO")
private BigDecimal benefitShareRatio; private BigDecimal benefitShareRatio;