## 首购领导奖新逻辑处理;
This commit is contained in:
parent
87fb08edfb
commit
92379659a1
|
@ -368,9 +368,6 @@ public interface CuMemberTreeMapper extends BaseMapper<CuMemberTree> {
|
|||
*
|
||||
* @param settleTableName 结算表
|
||||
* @param pkMemberList 有量奖的会员列表
|
||||
* @return: Map<Long, List < CuMemberSettleExt>>
|
||||
* @Author: sui q
|
||||
* @Date: 2022/11/15 13:43
|
||||
*/
|
||||
List<CuMemberSettleExt> batchQueryCuMemberSettleParent(@Param("settleTableName") String settleTableName,
|
||||
@Param("pkMemberList") List<?> pkMemberList);
|
||||
|
@ -804,4 +801,18 @@ public interface CuMemberTreeMapper extends BaseMapper<CuMemberTree> {
|
|||
*/
|
||||
List<CuMemberSettleExt> listUpgradeAwards(@Param("settleTableName") String settleTableName, @Param("awardsValue") Integer awardsValue);
|
||||
|
||||
/**
|
||||
* 有奖衔的会员,本月左右区新増,上月最后一期左右区结余
|
||||
*
|
||||
* @param settleTableName 当天结算表
|
||||
* @param settleTableNameMonthLast 上月最后一天结算表
|
||||
* @param cuMemberMonth 当月月业绩表
|
||||
* @param pkMemberList 查询奖衔会员
|
||||
* @return
|
||||
*/
|
||||
List<CuMemberSettleExt> listMemberMonthAssess(@Param("settleTableName") String settleTableName,
|
||||
@Param("settleTableNameMonthLast") String settleTableNameMonthLast,
|
||||
@Param("cuMemberMonth") String cuMemberMonth,
|
||||
@Param("pkMemberList") List<?> pkMemberList);
|
||||
|
||||
}
|
||||
|
|
|
@ -291,12 +291,20 @@ public interface ICuMemberTreeService extends IService<CuMemberTree> {
|
|||
*
|
||||
* @param settleTableName 结算表
|
||||
* @param expandMemberSet 有量奖的会员
|
||||
* @return: Map<Long, CuMemberSettleExt> 主键,通过推荐人向上找父级
|
||||
* @Author: sui q
|
||||
* @Date: 2022/11/15 13:43
|
||||
*/
|
||||
List<CuMemberSettleExt> batchQueryCuMemberSettleParent(String settleTableName, Set<Long> expandMemberSet);
|
||||
|
||||
/**
|
||||
* 有奖衔的会员,本月左右区新増,上月最后一期左右区结余
|
||||
*
|
||||
* @param settleTableName 当天结算表
|
||||
* @param settleTableNameMonthLast 上月最后一天结算表
|
||||
* @param cuMemberMonth 当月月业绩表
|
||||
* @param pkMemberList 查询奖衔会员
|
||||
* @return
|
||||
*/
|
||||
List<CuMemberSettleExt> listMemberMonthAssess(String settleTableName, String settleTableNameMonthLast, String cuMemberMonth, List<Long> pkMemberList);
|
||||
|
||||
/**
|
||||
* 批量根据量奖信息查询会员结算表中的父级血缘数据
|
||||
*
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package com.hzs.bonus.achieve.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.hzs.bonus.achieve.service.ICuMemberAchieveService;
|
||||
import com.hzs.bonus.achieve.service.ICuMemberSettlePeriodService;
|
||||
|
@ -401,6 +402,19 @@ public class CuMemberTreeServiceImpl extends ServiceImpl<CuMemberTreeMapper, CuM
|
|||
return memberSettleMap;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<CuMemberSettleExt> batchQuerySpecialCuMemberSettleParent(String settleTableName, Set<Long> expandMemberSet) {
|
||||
List<CuMemberSettleExt> cuMemberSettleExtList = new ArrayList<>();
|
||||
if (expandMemberSet == null || expandMemberSet.size() == 0) {
|
||||
return cuMemberSettleExtList;
|
||||
}
|
||||
List<Long> memberPkList = Arrays.asList(expandMemberSet.toArray(new Long[]{}));
|
||||
List<List<?>> listList = cuMemberBonusSettle.handleCutList(memberPkList, MagicNumberConstants.DELETE_DATA_BATCH_UPDATE_NUM);
|
||||
listList.forEach(list ->
|
||||
cuMemberSettleExtList.addAll(baseMapper.batchQuerySpecialCuMemberSettleParent(settleTableName, list)));
|
||||
return cuMemberSettleExtList;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<CuMemberSettleExt> batchQueryCuMemberSettleParent(String settleTableName, Set<Long> expandMemberSet) {
|
||||
List<CuMemberSettleExt> cuMemberSettleExtList = new ArrayList<>();
|
||||
|
@ -415,15 +429,14 @@ public class CuMemberTreeServiceImpl extends ServiceImpl<CuMemberTreeMapper, CuM
|
|||
}
|
||||
|
||||
@Override
|
||||
public List<CuMemberSettleExt> batchQuerySpecialCuMemberSettleParent(String settleTableName, Set<Long> expandMemberSet) {
|
||||
public List<CuMemberSettleExt> listMemberMonthAssess(String settleTableName, String settleTableNameMonthLast, String cuMemberMonth, List<Long> pkMemberList) {
|
||||
List<CuMemberSettleExt> cuMemberSettleExtList = new ArrayList<>();
|
||||
if (expandMemberSet == null || expandMemberSet.size() == 0) {
|
||||
if (CollectionUtil.isEmpty(pkMemberList)) {
|
||||
return cuMemberSettleExtList;
|
||||
}
|
||||
List<Long> memberPkList = Arrays.asList(expandMemberSet.toArray(new Long[]{}));
|
||||
List<List<?>> listList = cuMemberBonusSettle.handleCutList(memberPkList, MagicNumberConstants.DELETE_DATA_BATCH_UPDATE_NUM);
|
||||
List<List<?>> listList = cuMemberBonusSettle.handleCutList(pkMemberList, MagicNumberConstants.DELETE_DATA_BATCH_UPDATE_NUM);
|
||||
listList.forEach(list ->
|
||||
cuMemberSettleExtList.addAll(baseMapper.batchQuerySpecialCuMemberSettleParent(settleTableName, list)));
|
||||
cuMemberSettleExtList.addAll(baseMapper.listMemberMonthAssess(settleTableName, settleTableNameMonthLast, cuMemberMonth, list)));
|
||||
return cuMemberSettleExtList;
|
||||
}
|
||||
|
||||
|
|
|
@ -660,30 +660,65 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle {
|
|||
}
|
||||
|
||||
/**
|
||||
* @Description: 计算领导奖
|
||||
* @return: List<CuMemberBonusCoach>
|
||||
* @Author: sui q
|
||||
* @Date: 2023/2/8 17:16
|
||||
* 计算辅导收益(领导奖)
|
||||
*
|
||||
* @param settleTableName 结算表
|
||||
* @param settleDateStr 结算日期
|
||||
* @param period 期间
|
||||
* @param bonusConfigDTO 参数
|
||||
* @param firPurchaseOrderList 订单列表
|
||||
* @param cuMemberBonusExpandList 量奖明细
|
||||
* @param cuMemberBonusMap 所有计算出来的奖金汇总
|
||||
*/
|
||||
List<CuMemberBonusCoach> calculateCoachBonusOne(Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, String settleTableName, String settleDateStr, BonusConfigDTO bonusConfigDTO, List<CuMemberBonusExpand> cuMemberBonusExpandList, Integer period, Map<Long, CuMemberBonus> cuMemberBonusMap,
|
||||
Map<Long, SaOrderExt> saOrderExtMap, Map<Long, CuAwardsControl> cuAwardsControlMap, Map<Long, CuMemberRiskControl> riskControlMap) {
|
||||
List<CuMemberBonusCoach> calculateCoachBonus(Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, String settleTableName, String settleDateStr, BonusConfigDTO bonusConfigDTO,
|
||||
List<SaOrderExt> firPurchaseOrderList, List<CuMemberBonusExpand> cuMemberBonusExpandList, Integer period, Map<Long, CuMemberBonus> cuMemberBonusMap,
|
||||
Map<Long, CuAwardsControl> cuAwardsControlMap, Map<Long, CuMemberRiskControl> riskControlMap, List<BdAwards> awardsList) {
|
||||
Map<Long, SaOrderExt> saOrderExtMap = new HashMap<>(ComputeUtil.mapInitCapacity(firPurchaseOrderList.size()));
|
||||
firPurchaseOrderList.forEach(saOrderExt ->
|
||||
saOrderExtMap.put(saOrderExt.getPkId(), saOrderExt));
|
||||
return calculateCoachBonusOne(cuMemberSettleExtMap, settleTableName, settleDateStr, bonusConfigDTO, cuMemberBonusExpandList, period,
|
||||
cuMemberBonusMap, saOrderExtMap, cuAwardsControlMap, riskControlMap, awardsList);
|
||||
}
|
||||
|
||||
/**
|
||||
* 计算领导奖
|
||||
*/
|
||||
List<CuMemberBonusCoach> calculateCoachBonusOne(Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, String settleTableName, String settleDateStr, BonusConfigDTO bonusConfigDTO,
|
||||
List<CuMemberBonusExpand> cuMemberBonusExpandList, Integer period, Map<Long, CuMemberBonus> cuMemberBonusMap,
|
||||
Map<Long, SaOrderExt> saOrderExtMap, Map<Long, CuAwardsControl> cuAwardsControlMap, Map<Long, CuMemberRiskControl> riskControlMap,
|
||||
List<BdAwards> awardsList) {
|
||||
// 领导奖数据列表
|
||||
List<CuMemberBonusCoach> cuMemberBonusCoachList = new ArrayList<>();
|
||||
|
||||
if (cuMemberBonusExpandList.size() > 0) {
|
||||
// 如果存在拓展收益则开始处理领导奖
|
||||
// 产生拓展收益的所有会员ID
|
||||
Set<Long> expandMemberSet = getMemberExpandBonus(cuMemberBonusMap, cuMemberBonusExpandList);
|
||||
|
||||
// 查询会员产生拓展收益血缘上会员
|
||||
List<CuMemberSettleExt> cuMemberSettleExtList = iCuMemberTreeService.batchQueryCuMemberSettleParent(settleTableName, expandMemberSet);
|
||||
// 初始化父类网体的值
|
||||
getMemberSettle(cuMemberSettleExtMap, cuMemberSettleExtList);
|
||||
List<CuMemberSettleExt> queryMemberList = getQueryMemberSettleExtList(cuMemberSettleExtMap, cuMemberSettleExtList);
|
||||
// 获取复购考核结果
|
||||
Map<Long, CuMemberAssess> cuMemberAssessMap = getLongCuMemberAssessMap(settleDateStr, queryMemberList);
|
||||
// 开始计算辅导奖,往上找10代血缘,判断血缘的奖衔是否>= 5的倍数
|
||||
|
||||
// List<CuMemberSettleExt> queryMemberList = getQueryMemberSettleExtList(cuMemberSettleExtMap, cuMemberSettleExtList);
|
||||
// // 获取复购考核结果
|
||||
// Map<Long, CuMemberAssess> cuMemberAssessMap = getLongCuMemberAssessMap(settleDateStr, queryMemberList);
|
||||
Map<Long, CuMemberAssess> cuMemberAssessMap = new HashMap<>();
|
||||
|
||||
// TODO new 新逻辑没有复购考核,根据上月结余判断大小区,然后判断本月小区新増业绩来判断拿几代
|
||||
// 奖衔会员能拿几代领导奖(key:会员ID,value:拿几代)
|
||||
Map<Long, CuMemberSettleExt> cuMemberBonusNumMap = getCoachAwardsMemberMap(settleTableName, settleDateStr, cuMemberSettleExtList);
|
||||
|
||||
Map<Long, CuMemberSettleExt> bonusIdSettleMap = getMemberExpandBonus(cuMemberSettleExtMap);
|
||||
// 开始计算辅导奖,往上找10代血缘,判断血缘的奖衔是否 >= 5的倍数
|
||||
for (CuMemberBonusExpand cuMemberBonusExpand : cuMemberBonusExpandList) {
|
||||
// 国内没有领导奖
|
||||
if (cuMemberBonusExpand.getPkCountry().equals(CountryConstants.CHINA_COUNTRY)) {
|
||||
continue;
|
||||
}
|
||||
List<CuMemberBonusCoach> coachBonusList = calculateBonusCoach(cuMemberSettleExtMap, bonusConfigDTO, period, cuMemberBonusMap, saOrderExtMap, cuMemberAssessMap, bonusIdSettleMap, cuMemberBonusExpand, cuAwardsControlMap, riskControlMap);
|
||||
// // 国内没有领导奖
|
||||
// if (cuMemberBonusExpand.getPkCountry().equals(CountryConstants.CHINA_COUNTRY)) {
|
||||
// continue;
|
||||
// }
|
||||
List<CuMemberBonusCoach> coachBonusList = calculateBonusCoach(cuMemberSettleExtMap, bonusConfigDTO, period, cuMemberBonusMap,
|
||||
saOrderExtMap, cuMemberAssessMap, bonusIdSettleMap, cuMemberBonusExpand, cuAwardsControlMap,
|
||||
riskControlMap, cuMemberBonusNumMap, awardsList);
|
||||
if (coachBonusList.size() > 0) {
|
||||
cuMemberBonusCoachList.addAll(coachBonusList);
|
||||
}
|
||||
|
@ -693,56 +728,91 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle {
|
|||
}
|
||||
|
||||
/**
|
||||
* @Description: 计算领导奖
|
||||
* @return: List<CuMemberBonusCoach>
|
||||
* @Author: sui q
|
||||
* @Date: 2023/2/8 17:16
|
||||
* 计算领导奖(每条拓展收益计算领导奖)
|
||||
*/
|
||||
private List<CuMemberBonusCoach> calculateBonusCoach(Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, BonusConfigDTO bonusConfigDTO, Integer period, Map<Long, CuMemberBonus> cuMemberBonusMap, Map<Long, SaOrderExt> saOrderExtMap, Map<Long, CuMemberAssess> cuMemberAssessMap, Map<Long, CuMemberSettleExt> bonusIdSettleMap,
|
||||
CuMemberBonusExpand cuMemberBonusExpand, Map<Long, CuAwardsControl> cuAwardsControlMap, Map<Long, CuMemberRiskControl> riskControlMap) {
|
||||
private List<CuMemberBonusCoach> calculateBonusCoach(Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, BonusConfigDTO bonusConfigDTO, Integer period,
|
||||
Map<Long, CuMemberBonus> cuMemberBonusMap, Map<Long, SaOrderExt> saOrderExtMap, Map<Long, CuMemberAssess> cuMemberAssessMap,
|
||||
Map<Long, CuMemberSettleExt> bonusIdSettleMap, CuMemberBonusExpand cuMemberBonusExpand, Map<Long, CuAwardsControl> cuAwardsControlMap,
|
||||
Map<Long, CuMemberRiskControl> riskControlMap, Map<Long, CuMemberSettleExt> cuMemberBonusNumMap, List<BdAwards> awardsList) {
|
||||
// 目前这个会员只用来处理备注会员信息使用
|
||||
CuMemberSettleExt sourceMemberSettleExt = bonusIdSettleMap.get(cuMemberBonusExpand.getPkBonus());
|
||||
Long pkMember = cuMemberSettleExtMap.get(cuMemberBonusExpand.getPkBonus()).getPkParent();
|
||||
// 获得量奖的人往上找10代血缘
|
||||
// 用于回写血缘总共多少代
|
||||
List<CuMemberBonusCoach> backMemberBonusCoachList = new ArrayList<>();
|
||||
|
||||
Long pkMember = cuMemberSettleExtMap.get(cuMemberBonusExpand.getPkBonus()).getPkParent();
|
||||
|
||||
// 领导奖拿一共拿了多少代
|
||||
int coachGeneration = 0;
|
||||
for (int i = MagicNumberConstants.BLOOD_GENERATION_START; i <= MagicNumberConstants.BLOOD_GENERATION_END; i++) {
|
||||
// 获得量奖的人往上找10代血缘(非紧缩) -- 旧逻辑
|
||||
// for (int i = MagicNumberConstants.BLOOD_GENERATION_START; i <= MagicNumberConstants.BLOOD_GENERATION_END; i++) {
|
||||
|
||||
// TODO new 新逻辑中使用紧缩制,向上发10次,奖衔满足考核的判断拿几代,要么发完10次,要么找到顶为止
|
||||
int i = MagicNumberConstants.BLOOD_GENERATION_START;
|
||||
// 领导奖从第1代开始计算,最多发10次
|
||||
while (i <= MagicNumberConstants.BLOOD_GENERATION_END) {
|
||||
// 当前需要拿奖金的会员
|
||||
CuMemberSettleExt targetMemberSettleExt = cuMemberSettleExtMap.get(pkMember);
|
||||
if (targetMemberSettleExt == null) {
|
||||
if (null == targetMemberSettleExt) {
|
||||
break;
|
||||
}
|
||||
pkMember = targetMemberSettleExt.getPkParent();
|
||||
if (ECategory.NORMAL.getValue() != targetMemberSettleExt.getCategory() ||
|
||||
EAccountStatus.STOP_INCOME.getValue() == targetMemberSettleExt.getAccountStatus()) {
|
||||
if (ECategory.NORMAL.getValue() != targetMemberSettleExt.getCategory()
|
||||
|| EAccountStatus.STOP_INCOME.getValue() == targetMemberSettleExt.getAccountStatus()) {
|
||||
// 会员状态不正常 或者 停算收益 直接跳过
|
||||
continue;
|
||||
}
|
||||
if (validatePkBonusItems(bonusConfigDTO, targetMemberSettleExt.getPkSettleCountry(), EBonusItems.COACHING_INCOME.getValue())) {
|
||||
// 校验当前国家是否有该奖项
|
||||
continue;
|
||||
}
|
||||
SaOrderExt saOrderExt = saOrderExtMap.get(cuMemberBonusExpand.getPkOrder());
|
||||
if (!validateSecondOrderExistBonus(saOrderExt, EBonusItems.COACHING_INCOME.getValue())) {
|
||||
if (null == saOrderExt || !validateSecondOrderExistBonus(saOrderExt, EBonusItems.COACHING_INCOME.getValue())) {
|
||||
// 订单为空 或者 判断二次发货是否有辅导收益
|
||||
continue;
|
||||
}
|
||||
CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, saOrderExt, targetMemberSettleExt);
|
||||
|
||||
CuMemberSettleExt coachAwardsMember = cuMemberBonusNumMap.get(targetMemberSettleExt.getPkMember());
|
||||
if (null == coachAwardsMember) {
|
||||
// 判断领导奖参数,如果不存在,直接跳过
|
||||
continue;
|
||||
}
|
||||
|
||||
// 获取奖衔对应的领导奖配置
|
||||
BdAwards awardsCouch = getBdAwards(bonusConfigDTO, targetMemberSettleExt, cuAwardsControlMap);
|
||||
|
||||
// 获取奖衔能拿多少代领导奖的奖衔值
|
||||
Integer awardsValue = this.getCoachAwardsMemberNum(awardsList, coachAwardsMember, awardsCouch);
|
||||
|
||||
// 判断是否有奖金
|
||||
if (awardsCouch.getAwardsValue() >= MagicNumberConstants.BLOOD_GENERATION_SERIES * i) {
|
||||
if (awardsValue >= MagicNumberConstants.BLOOD_GENERATION_SERIES * i) {
|
||||
// TODO new 第一代必须是奖衔值大于等于5的,第二代必须是奖衔值大于等于10的...
|
||||
BdAwards coachAward = bonusConfigDTO.getAwardsValueMap().get(targetMemberSettleExt.getPkSettleCountry().toString() + ERangeType.AWARDS.getValue() + MagicNumberConstants.BLOOD_GENERATION_SERIES * i);
|
||||
// 辅导奖比例
|
||||
BigDecimal awardCalRadio = BigDecimal.ZERO;
|
||||
if (coachAward != null) {
|
||||
if (null != coachAward) {
|
||||
awardCalRadio = coachAward.getCoachRatio();
|
||||
}
|
||||
// 判断会员状态
|
||||
// 生成辅导收益明细
|
||||
CuMemberBonusCoach cuMemberBonusCoach = getCuMemberBonusCoach(bonusConfigDTO, cuMemberBonusExpand, i, targetMemberSettleExt, awardCalRadio);
|
||||
// 正常状态的辅导奖需要判断复购考核,复购考核不通过的状态变为烧伤
|
||||
if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusCoach.getIncomeStatus() &&
|
||||
EYesNo.NO.getIntValue() == targetMemberSettleExt.getPurchaseStatus()) {
|
||||
// 需要复购考核的
|
||||
CuMemberAssess cuMemberAssess = cuMemberAssessMap.get(targetMemberSettleExt.getPkMember());
|
||||
if (cuMemberAssess == null) {
|
||||
cuMemberBonusCoach.setIncomeStatus(EBonusIncomeStatus.FIRE_BURN.getValue());
|
||||
}
|
||||
// TODO new 如果拓展收益是延缓发放,那么辅导收益也需要延缓发放
|
||||
if (EBonusIncomeStatus.DELAY_GRANT.getValue() == cuMemberBonusExpand.getIncomeStatus()) {
|
||||
cuMemberBonusCoach.setIncomeStatus(EBonusIncomeStatus.DELAY_GRANT.getValue());
|
||||
}
|
||||
|
||||
// TODO new 不走复购考核,改为根据本月新増小区业绩
|
||||
// // 正常状态的辅导奖需要判断复购考核,复购考核不通过的状态变为烧伤
|
||||
// if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusCoach.getIncomeStatus()
|
||||
// && EYesNo.NO.getIntValue() == targetMemberSettleExt.getPurchaseStatus()) {
|
||||
// // 需要复购考核的
|
||||
// CuMemberAssess cuMemberAssess = cuMemberAssessMap.get(targetMemberSettleExt.getPkMember());
|
||||
// if (cuMemberAssess == null) {
|
||||
// cuMemberBonusCoach.setIncomeStatus(EBonusIncomeStatus.FIRE_BURN.getValue());
|
||||
// }
|
||||
// }
|
||||
|
||||
// 获取会员奖金数据
|
||||
CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, saOrderExt, targetMemberSettleExt);
|
||||
|
||||
// K值设置
|
||||
if (riskControlMap.containsKey(cuMemberBonus.getPkMember())) {
|
||||
Integer generation = riskControlMap.get(cuMemberBonus.getPkMember()).getCoachGeneration();
|
||||
|
@ -750,23 +820,27 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle {
|
|||
cuMemberBonusCoach.setIncomeStatus(EBonusIncomeStatus.RISK_CONTROL.getValue());
|
||||
}
|
||||
}
|
||||
// 判断考核状态,是否考核通过
|
||||
|
||||
// 收益占比
|
||||
BdBonusDeduct bdBonusDeduct = setBonusDetailDeduct(bonusConfigDTO, cuMemberBonusCoach, saOrderExt.getOrderAmount(), saOrderExt.getInExchangeRate());
|
||||
coachRemark(saOrderExt, cuMemberBonusCoach, sourceMemberSettleExt, targetMemberSettleExt);
|
||||
|
||||
if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusCoach.getIncomeStatus()) {
|
||||
cuMemberBonus.setCoachIncome(ComputeUtil.computeAdd(cuMemberBonus.getCoachIncome(), cuMemberBonusCoach.getPretaxIncome()));
|
||||
setFirstPurchaseTotal(bdBonusDeduct, cuMemberBonus, cuMemberBonusCoach);
|
||||
}
|
||||
backMemberBonusCoachList.add(cuMemberBonusCoach);
|
||||
|
||||
// 这一代领导奖计算完,计算代数加1
|
||||
i++;
|
||||
}
|
||||
coachGeneration = i;
|
||||
}
|
||||
coachGeneration = --i;
|
||||
return handleCoachRemark(backMemberBonusCoachList, coachGeneration);
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断是否是服务中心,服务中心算主任
|
||||
* 判断是否是服务中心,服务中心算主任 -- 目前领导奖单独使用
|
||||
*
|
||||
* @param bonusConfigDTO 奖金参数设置
|
||||
* @param targetMemberSettleExt 父级
|
||||
|
@ -824,12 +898,10 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle {
|
|||
}
|
||||
|
||||
/**
|
||||
* 处理拓展表备注
|
||||
*
|
||||
* @param backMemberBonusCoachList 临时记录辅导奖列表
|
||||
* @param i 第几代
|
||||
* @Description: 处理拓展表备注
|
||||
* @return: void
|
||||
* @Author: sui q
|
||||
* @Date: 2022/11/17 18:02
|
||||
*/
|
||||
private List<CuMemberBonusCoach> handleCoachRemark(List<CuMemberBonusCoach> backMemberBonusCoachList, int i) {
|
||||
List<CuMemberBonusCoach> cuMemberBonusCoachList = new ArrayList<>();
|
||||
|
@ -1185,14 +1257,14 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle {
|
|||
}
|
||||
|
||||
// 正常状态的辅导奖需要判断复购考核,复购考核不通过的状态变为烧伤
|
||||
if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusExpand.getIncomeStatus()
|
||||
&& EYesNo.NO.getIntValue() == targetMemberSettleExt.getPurchaseStatus()) {
|
||||
// 需要复购考核的
|
||||
CuMemberAssess cuMemberAssess = cuMemberAssessMap.get(targetMemberSettleExt.getPkMember());
|
||||
if (cuMemberAssess == null) {
|
||||
cuMemberBonusExpand.setIncomeStatus(EBonusIncomeStatus.FIRE_BURN.getValue());
|
||||
}
|
||||
}
|
||||
// if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusExpand.getIncomeStatus()
|
||||
// && EYesNo.NO.getIntValue() == targetMemberSettleExt.getPurchaseStatus()) {
|
||||
// // 需要复购考核的
|
||||
// CuMemberAssess cuMemberAssess = cuMemberAssessMap.get(targetMemberSettleExt.getPkMember());
|
||||
// if (cuMemberAssess == null) {
|
||||
// cuMemberBonusExpand.setIncomeStatus(EBonusIncomeStatus.FIRE_BURN.getValue());
|
||||
// }
|
||||
// }
|
||||
|
||||
if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusExpand.getIncomeStatus() ||
|
||||
EBonusIncomeStatus.RISK_CONTROL.getValue() == cuMemberBonusExpand.getIncomeStatus()) {
|
||||
|
@ -1455,5 +1527,86 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取奖衔会员各能拿多少代
|
||||
*
|
||||
* @param settleTableName 结算表
|
||||
* @param settleDateStr 结算日期
|
||||
* @param cuMemberSettleExtList
|
||||
*/
|
||||
private Map<Long, CuMemberSettleExt> getCoachAwardsMemberMap(String settleTableName, String settleDateStr, List<CuMemberSettleExt> cuMemberSettleExtList) {
|
||||
// 奖衔会员能拿几代领导奖(key:会员ID,value:奖衔值)
|
||||
Map<Long, CuMemberSettleExt> cuMemberBonusNumMap = new HashMap<>();
|
||||
|
||||
// 拓展收益血缘上会员ID
|
||||
List<Long> pkAwardsMemberList = cuMemberSettleExtList.stream().map(CuMemberSettleExt::getPkMember).distinct().collect(Collectors.toList());
|
||||
|
||||
Date settleDate = DateUtils.parseStringToDate(settleDateStr);
|
||||
// 之前月份的最后一期
|
||||
Integer monthLastPeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(DateUtils.beforeMonthLastDateStr(settleDate)).getPkId();
|
||||
String settleTableNameMonthLast = TableNameConstants.CU_MEMBER_SETTLE + monthLastPeriod;
|
||||
|
||||
// 当前月表
|
||||
String cuMemberMonth = TableNameConstants.CU_MEMBER_MONTH + DateUtils.getMonth(settleDateStr);
|
||||
|
||||
// TODO new 有奖衔的会员,本月左右区新増,上月最后一期左右区结余(需要确保上月最后一期日结表存在,结算月表存在)
|
||||
List<CuMemberSettleExt> awardsMemberSettleList = iCuMemberTreeService.listMemberMonthAssess(settleTableName, settleTableNameMonthLast, cuMemberMonth, pkAwardsMemberList);
|
||||
|
||||
if (CollectionUtil.isNotEmpty(awardsMemberSettleList)) {
|
||||
for (CuMemberSettleExt tmpCuMemberSettleExt : awardsMemberSettleList) {
|
||||
cuMemberBonusNumMap.put(tmpCuMemberSettleExt.getPkMember(), tmpCuMemberSettleExt);
|
||||
}
|
||||
}
|
||||
return cuMemberBonusNumMap;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取领导奖实际的奖衔值
|
||||
*
|
||||
* @param awardsList 奖衔列表
|
||||
* @param coachAwardsMember 会员奖衔数据(上月结余、本月新増等)
|
||||
* @param bdAwards 当前奖衔(处理过真实奖衔控制)
|
||||
* @return
|
||||
*/
|
||||
private Integer getCoachAwardsMemberNum(List<BdAwards> awardsList, CuMemberSettleExt coachAwardsMember, BdAwards bdAwards) {
|
||||
// 奖衔值倒序排序
|
||||
List<BdAwards> tmpAwardsList = awardsList.stream().sorted(Comparator.comparingInt(BdAwards::getAwardsValue).reversed()).collect(Collectors.toList());
|
||||
|
||||
// TODO new 2025年9月之前不需要校验,直接按奖衔拿
|
||||
|
||||
// 小区业绩
|
||||
BigDecimal smallPV;
|
||||
// 上月左右区结余
|
||||
if (coachAwardsMember.getABalance().compareTo(coachAwardsMember.getBBalance()) > 0) {
|
||||
// 左区大,右区小区
|
||||
smallPV = coachAwardsMember.getBSumPv();
|
||||
} else if (coachAwardsMember.getABalance().compareTo(coachAwardsMember.getBBalance()) < 0) {
|
||||
// 右区大,左区小区
|
||||
smallPV = coachAwardsMember.getASumPv();
|
||||
} else {
|
||||
// 左右区相同
|
||||
if (coachAwardsMember.getASumPv().compareTo(coachAwardsMember.getBSumPv()) <= 0) {
|
||||
// 左区 小于等于 右区,左区等于小区
|
||||
smallPV = coachAwardsMember.getASumPv();
|
||||
} else {
|
||||
// 右区小区
|
||||
smallPV = coachAwardsMember.getBSumPv();
|
||||
}
|
||||
}
|
||||
// 业绩判断奖衔值,默认为Q0
|
||||
Integer pvAwardsValue = EAwards.MEMBER.getValue();
|
||||
// 月新増业绩判断应该拿几代
|
||||
for (BdAwards tmpBdAwards : tmpAwardsList) {
|
||||
if (tmpBdAwards.getSmallAssess().compareTo(smallPV) <= 0) {
|
||||
pvAwardsValue = tmpBdAwards.getAwardsValue();
|
||||
break;
|
||||
}
|
||||
}
|
||||
// 业绩判断奖衔值不能大于当前奖衔的奖衔值
|
||||
if (pvAwardsValue.compareTo(bdAwards.getAwardsValue()) > 0) {
|
||||
return bdAwards.getAwardsValue();
|
||||
}
|
||||
return pvAwardsValue;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -74,12 +74,10 @@ public abstract class BonusSettleHandle {
|
|||
}
|
||||
|
||||
/**
|
||||
* 获取奖衔对应的辅导奖配置
|
||||
*
|
||||
* @param bonusConfigDTO 奖金参数汇总
|
||||
* @param memberSettleExt 会员
|
||||
* @Description: 获取奖衔对应的辅导奖配置
|
||||
* @return: BdAwards
|
||||
* @Author: sui q
|
||||
* @Date: 2022/11/17 10:13
|
||||
*/
|
||||
protected BdAwards getAwardsCouch(BonusConfigDTO bonusConfigDTO, CuMemberSettleExt memberSettleExt, Map<Long, CuAwardsControl> cuAwardsControlMap) {
|
||||
Integer pkAwards = getPkRealAwards(memberSettleExt.getPkMember(), memberSettleExt.getPkAwards(), cuAwardsControlMap);
|
||||
|
@ -178,15 +176,17 @@ public abstract class BonusSettleHandle {
|
|||
* @param cuMemberBonusExpandList 量奖明细
|
||||
*/
|
||||
protected Set<Long> getMemberExpandBonus(Map<Long, CuMemberBonus> cuMemberBonusMap, List<CuMemberBonusExpand> cuMemberBonusExpandList) {
|
||||
// 这一步感觉有点多余。。在奖金入库之前,奖金汇总map的key和奖金汇总ID都是用会员ID做临时处理的
|
||||
Map<Long, CuMemberBonus> pkMemberSettleMap = new HashMap<>(ComputeUtil.mapInitCapacity(cuMemberBonusMap.size()));
|
||||
cuMemberBonusMap.forEach((key, cuMemberBonus) -> {
|
||||
// 判断 cuMemberSettleExtMap中这个人是否是免考,免考的不查询考核是否通过,过滤数据
|
||||
pkMemberSettleMap.put(cuMemberBonus.getPkId(), cuMemberBonus);
|
||||
});
|
||||
|
||||
Set<Long> expandMemberSet = new HashSet<>();
|
||||
cuMemberBonusExpandList.forEach(cuMemberBonusExpand -> {
|
||||
// 只查询有量奖的人的考核记录, 国内没有领导奖
|
||||
if (!cuMemberBonusExpand.getPkCountry().equals(CountryConstants.CHINA_COUNTRY) && pkMemberSettleMap.containsKey(cuMemberBonusExpand.getPkBonus())) {
|
||||
// 只查询有量奖的人的考核记录
|
||||
if (pkMemberSettleMap.containsKey(cuMemberBonusExpand.getPkBonus())) {
|
||||
expandMemberSet.add(pkMemberSettleMap.get(cuMemberBonusExpand.getPkBonus()).getPkMember());
|
||||
}
|
||||
});
|
||||
|
@ -247,8 +247,8 @@ public abstract class BonusSettleHandle {
|
|||
if (memberSettleExt.getPkVertex() == null) {
|
||||
memberSettleExt.setPkVertex(cuMemberSettleExt.getPkVertex());
|
||||
}
|
||||
if (memberSettleExt.getUnGrantIncome() == null) {
|
||||
memberSettleExt.setUnGrantIncome(cuMemberSettleExt.getUnGrantIncome());
|
||||
if (memberSettleExt.getUnGrantIncome() == null || memberSettleExt.getUnGrantIncome().compareTo(BigDecimal.ZERO) == 0) {
|
||||
memberSettleExt.setUnGrantIncome(null != cuMemberSettleExt.getUnGrantIncome() ? cuMemberSettleExt.getUnGrantIncome() : BigDecimal.ZERO);
|
||||
}
|
||||
} else {
|
||||
cuMemberSettleExt.setANewAmount(BigDecimal.ZERO);
|
||||
|
@ -321,8 +321,8 @@ public abstract class BonusSettleHandle {
|
|||
if (memberSettleExt.getPkVertex() == null) {
|
||||
memberSettleExt.setPkVertex(cuMemberSettleExt.getPkVertex());
|
||||
}
|
||||
if (memberSettleExt.getUnGrantIncome() == null) {
|
||||
memberSettleExt.setUnGrantIncome(cuMemberSettleExt.getUnGrantIncome());
|
||||
if (memberSettleExt.getUnGrantIncome() == null || memberSettleExt.getUnGrantIncome().compareTo(BigDecimal.ZERO) == 0) {
|
||||
memberSettleExt.setUnGrantIncome(null != cuMemberSettleExt.getUnGrantIncome() ? cuMemberSettleExt.getUnGrantIncome() : BigDecimal.ZERO);
|
||||
}
|
||||
} else {
|
||||
cuMemberSettleExt.setANewAmount(BigDecimal.ZERO);
|
||||
|
@ -777,12 +777,10 @@ public abstract class BonusSettleHandle {
|
|||
}
|
||||
|
||||
/**
|
||||
* 获取会员列表的考核结果
|
||||
*
|
||||
* @param settleDateStr 结算日期
|
||||
* @param cuMemberSettleExtList 会员列表
|
||||
* @Description: 获取会员列表的考核结果
|
||||
* @return: Map<Long, CuMemberAssess>
|
||||
* @Author: sui q
|
||||
* @Date: 2022/11/17 14:25
|
||||
*/
|
||||
protected Map<Long, CuMemberAssess> getLongCuMemberAssessMap(String settleDateStr, List<CuMemberSettleExt> cuMemberSettleExtList) {
|
||||
if (cuMemberSettleExtList.size() == 0) {
|
||||
|
@ -804,8 +802,7 @@ public abstract class BonusSettleHandle {
|
|||
* @param cuMemberSettleExt 获取奖金的会员
|
||||
* @return CuMemberBonus
|
||||
*/
|
||||
protected CuMemberBonus getCuMemberBonus(Integer period, Map<Long, CuMemberBonus> cuMemberBonusMap, SaOrder saOrder,
|
||||
CuMemberSettleExt cuMemberSettleExt) {
|
||||
protected CuMemberBonus getCuMemberBonus(Integer period, Map<Long, CuMemberBonus> cuMemberBonusMap, SaOrder saOrder, CuMemberSettleExt cuMemberSettleExt) {
|
||||
Integer pkRate = saOrder.getPkRate();
|
||||
if (pkRate == null || !Objects.equals(cuMemberSettleExt.getPkSettleCountry(), saOrder.getPkCountry())) {
|
||||
CurrencyDTO currencyDTO = iCurrencyServiceApi.getCurrency(cuMemberSettleExt.getPkSettleCountry()).getData();
|
||||
|
|
|
@ -1119,14 +1119,14 @@ public class BonusSettlePurchaseHandle extends BonusSettleHandle {
|
|||
repurchaseExpandRemark(saOrderExt, cuMemberBonusExpand, sourceMemberSettleExt, targetMemberSettleExt);
|
||||
|
||||
// 正常状态的辅导奖需要判断复购考核,复购考核不通过的状态变为烧伤
|
||||
if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusExpand.getIncomeStatus()
|
||||
&& EYesNo.NO.getIntValue() == targetMemberSettleExt.getPurchaseStatus()) {
|
||||
// 需要复购考核的
|
||||
CuMemberAssess cuMemberAssess = cuMemberAssessMap.get(targetMemberSettleExt.getPkMember());
|
||||
if (cuMemberAssess == null) {
|
||||
cuMemberBonusExpand.setIncomeStatus(EBonusIncomeStatus.FIRE_BURN.getValue());
|
||||
}
|
||||
}
|
||||
// if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusExpand.getIncomeStatus()
|
||||
// && EYesNo.NO.getIntValue() == targetMemberSettleExt.getPurchaseStatus()) {
|
||||
// // 需要复购考核的
|
||||
// CuMemberAssess cuMemberAssess = cuMemberAssessMap.get(targetMemberSettleExt.getPkMember());
|
||||
// if (cuMemberAssess == null) {
|
||||
// cuMemberBonusExpand.setIncomeStatus(EBonusIncomeStatus.FIRE_BURN.getValue());
|
||||
// }
|
||||
// }
|
||||
|
||||
if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusExpand.getIncomeStatus()) {
|
||||
cuMemberBonus.setRepurExpandIncome(ComputeUtil.computeSubtract(expandIncome, cuMemberBonus.getExpandIncome()));
|
||||
|
|
|
@ -23,6 +23,7 @@ import com.hzs.bonus.detail.service.ICuMemberLevelService;
|
|||
import com.hzs.bonus.risk.service.ICuMemberRiskControlService;
|
||||
import com.hzs.bonus.swing.service.ICuMemberSwingNetLogService;
|
||||
import com.hzs.common.core.constant.BonusFieldConstants;
|
||||
import com.hzs.common.core.constant.CountryConstants;
|
||||
import com.hzs.common.core.constant.MagicNumberConstants;
|
||||
import com.hzs.common.core.constant.TableNameConstants;
|
||||
import com.hzs.common.core.enums.*;
|
||||
|
@ -179,6 +180,7 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
|||
BonusConfigDTO bonusConfigDTO = iBonusItemsServiceApi.queryBonusConfigDTO().getData();
|
||||
Map<Long, CuMemberSettleExt> cuMemberSettleExtMap = new HashMap<>();
|
||||
Map<Long, CuAwardsControl> cuAwardsControlMap = getCuAwardsControlMap();
|
||||
List<BdAwards> awardsList = iAwardsServiceApi.queryAwards(saOrderExt.getPkCountry()).getData();
|
||||
// 计算奖金
|
||||
if (EOrderType.REGISTER_ORDER.getValue() == saOrderExt.getOrderType() ||
|
||||
EOrderType.UPGRADE_ORDER.getValue() == saOrderExt.getOrderType() ||
|
||||
|
@ -234,7 +236,7 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
|||
// 计算领导奖
|
||||
Map<Long, SaOrderExt> saOrderExtMap = new HashMap<>(1);
|
||||
saOrderExtMap.put(saOrderExt.getPkId(), saOrderExt);
|
||||
List<CuMemberBonusCoach> cuMemberBonusCoachList = bonusSettleFirstPurchaseHandle.calculateCoachBonusOne(cuMemberSettleExtMap, settleTableName, settleDate, bonusConfigDTO, cuMemberBonusExpandList, period, cuMemberBonusMap, saOrderExtMap, cuAwardsControlMap, riskControlMap);
|
||||
List<CuMemberBonusCoach> cuMemberBonusCoachList = bonusSettleFirstPurchaseHandle.calculateCoachBonusOne(cuMemberSettleExtMap, settleTableName, settleDate, bonusConfigDTO, cuMemberBonusExpandList, period, cuMemberBonusMap, saOrderExtMap, cuAwardsControlMap, riskControlMap, awardsList);
|
||||
// 计算报单服务费
|
||||
CuMemberBonusDetail cuMemberBonusDetail = bonusSettleFirstPurchaseHandle.calculateServiceBonusOne(settleDate, cuMemberAssessMap, cuMemberSettleExtMap, bonusConfigDTO, period, cuMemberBonusMap, saOrderExt);
|
||||
// 复购券
|
||||
|
@ -368,7 +370,9 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
|||
// 将结算日昨日业绩数据 迁移到 网体业绩历史记录结算表(cu_member_settle)
|
||||
iCuMemberTreeService.initCuMemberTreeTable(yesterdayTableName, currentSettleTableName);
|
||||
|
||||
// 国家奖衔map
|
||||
Map<String, BdAwards> awardsMap = iAwardsServiceApi.getAwards().getData();
|
||||
// 等级map
|
||||
Map<Integer, BdGrade> gradeMap = iGradeServiceApi.getGrade().getData();
|
||||
|
||||
// 查看是否有特殊业务,有特殊业务的处理,特殊业务,注水处理
|
||||
|
@ -655,6 +659,7 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
|||
Map<String, String> systemConfigMap = iSystemConfigServiceApi.getBonusSystemConfig().getData();
|
||||
BonusRecordDetailVO recordDetailVO = new BonusRecordDetailVO();
|
||||
Map<String, BdAwards> awardsMap = iAwardsServiceApi.getAwards().getData();
|
||||
List<BdAwards> awardsList = iAwardsServiceApi.queryAwards(CountryConstants.CHINA_COUNTRY).getData();
|
||||
// 首购订单
|
||||
List<SaOrderExt> firPurchaseOrderList = new ArrayList<>();
|
||||
saOrderExtList.forEach(saOrderExt ->
|
||||
|
@ -673,7 +678,7 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
|||
cuBonusExpandExtList.forEach(cuBonusExpandExt -> cuBonusExpandExtMap.put(cuBonusExpandExt.getPkMember(), cuBonusExpandExt));
|
||||
if (firPurchaseOrderList.size() > 0) {
|
||||
calculateFirPurchaseOrder(riskControlMap, cuMemberSettleExtMap, currentSettleTableName, settleDate, systemConfigMap, bonusConfigDTO,
|
||||
firPurchaseOrderList, period, yesterdayPeriod, weekMemberBonusMap, cuMemberBonusMap, recordDetailVO, awardsMap, cuAwardsControlMap, cuBonusExpandExtMap);
|
||||
firPurchaseOrderList, period, yesterdayPeriod, weekMemberBonusMap, cuMemberBonusMap, recordDetailVO, awardsMap, awardsList, cuAwardsControlMap, cuBonusExpandExtMap);
|
||||
}
|
||||
List<CuMemberRepeatBonus> cuMemberBonusList = new ArrayList<>();
|
||||
for (CuMemberBonus cuMemberBonus : cuMemberBonusMap.values()) {
|
||||
|
@ -803,6 +808,8 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
|||
Map<Long, CuMemberBonus> weekMemberBonusMap = getWeekMemberBonusMap(settleDate, period);
|
||||
Map<String, String> systemConfigMap = iSystemConfigServiceApi.getBonusSystemConfig().getData();
|
||||
Map<String, RangeDTO> rangeDtoMap = iRangeServiceApi.queryRangeDto().getData();
|
||||
// 奖衔列表(奖衔值升序)
|
||||
List<BdAwards> awardsList = iAwardsServiceApi.queryAwards(CountryConstants.CHINA_COUNTRY).getData();
|
||||
|
||||
// 查询K值控制
|
||||
List<CuMemberRiskControl> cuMemberRiskControlList = iCuMemberRiskControlService.queryCuMemberRiskControl(DateUtils.parseStringToDate(settleDate));
|
||||
|
@ -825,7 +832,7 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
|||
// 计算首购
|
||||
if (firPurchaseOrderList.size() > 0) {
|
||||
calculateFirPurchaseOrder(riskControlMap, cuMemberSettleExtMap, currentSettleTableName, settleDate, systemConfigMap, bonusConfigDTO,
|
||||
firPurchaseOrderList, period, yesterdayPeriod, weekMemberBonusMap, cuMemberBonusMap, recordDetailVO, awardsMap, cuAwardsControlMap, cuBonusExpandExtMap);
|
||||
firPurchaseOrderList, period, yesterdayPeriod, weekMemberBonusMap, cuMemberBonusMap, recordDetailVO, awardsMap, awardsList, cuAwardsControlMap, cuBonusExpandExtMap);
|
||||
}
|
||||
// 计算商城业绩
|
||||
if (mallOrderList.size() > 0) {
|
||||
|
@ -1013,7 +1020,7 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
|||
private void calculateFirPurchaseOrder(Map<Long, CuMemberRiskControl> riskControlMap, Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, String settleTableName, String settleDate,
|
||||
Map<String, String> systemConfigMap, BonusConfigDTO bonusConfigDTO, List<SaOrderExt> firPurchaseOrderList, Integer period, Integer yesterdayPeriod,
|
||||
Map<Long, CuMemberBonus> weekMemberBonusMap, Map<Long, CuMemberBonus> cuMemberBonusMap, BonusRecordDetailVO bonusRecordDetailVO,
|
||||
Map<String, BdAwards> awardsMap, Map<Long, CuAwardsControl> cuAwardsControlMap, Map<Long, CuBonusExpandExt> cuBonusExpandExtMap) {
|
||||
Map<String, BdAwards> awardsMap, List<BdAwards> awardsList, Map<Long, CuAwardsControl> cuAwardsControlMap, Map<Long, CuBonusExpandExt> cuBonusExpandExtMap) {
|
||||
// 获得国家是三单循环还是四单循环
|
||||
// 获得升级方式是纳入三单循环还是固定值
|
||||
// 获取有订单国家的系统参数,获得三单循环还是四单循环 key 国家+系统参数key
|
||||
|
@ -1038,9 +1045,10 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
|||
|
||||
//*********************************计算领导奖(辅导收益)************************/
|
||||
// 判断是否有量奖,有量奖有辅导奖
|
||||
// List<CuMemberBonusCoach> cuMemberBonusCoachList = bonusSettleFirstPurchaseHandle.calculateCoachBonus(cuMemberSettleExtMap, settleTableName, settleDate, bonusConfigDTO, firPurchaseOrderList,
|
||||
// cuMemberBonusExpandList, period, cuMemberBonusMap, cuAwardsControlMap, riskControlMap);
|
||||
// bonusRecordDetailVO.setCuMemberBonusCoachList(cuMemberBonusCoachList);
|
||||
List<CuMemberBonusCoach> cuMemberBonusCoachList = bonusSettleFirstPurchaseHandle.calculateCoachBonus(cuMemberSettleExtMap, settleTableName, settleDate, bonusConfigDTO, firPurchaseOrderList,
|
||||
cuMemberBonusExpandList, period, cuMemberBonusMap, cuAwardsControlMap, riskControlMap, awardsList);
|
||||
bonusRecordDetailVO.setCuMemberBonusCoachList(cuMemberBonusCoachList);
|
||||
|
||||
//*********************************计算服务奖************************/
|
||||
List<CuMemberBonusDetail> cuMemberBonusDetailList = bonusSettleFirstPurchaseHandle.calculateServiceBonus(cuMemberSettleExtMap, settleDate, settleTableName, bonusConfigDTO, firPurchaseOrderList, period, cuMemberBonusMap);
|
||||
bonusRecordDetailVO.setCuMemberBonusDetailList(cuMemberBonusDetailList);
|
||||
|
|
|
@ -211,12 +211,13 @@
|
|||
|
||||
<sql id="memberParent">
|
||||
select
|
||||
pk_member,pk_parent,member_code,member_name,a.pk_awards,account_status,a.register_authority,customer_type,
|
||||
income_status,pk_settle_country,purchase_status,share_status,is_maker_space,
|
||||
pk_member, pk_parent, member_code, member_name, a.pk_awards, account_status, a.register_authority,
|
||||
customer_type, income_status, pk_settle_country, purchase_status, share_status, is_maker_space,
|
||||
a_balance, b_balance, r_a_balance, r_b_balance, rep_a_balance, rep_b_balance, r_rep_a_balance, r_rep_b_balance,
|
||||
register_amount,register_pv,upgrade_amount,upgrade_pv,repurchase_amount,pk_center_code,
|
||||
repurchase_pv,hi_fun_amount,hi_fun_pv,mall_amount,mall_pv,category,pk_grade,
|
||||
min_achieve,round,second,bg.grade_value,store_level,expire_status from (
|
||||
register_amount, register_pv, upgrade_amount, upgrade_pv, repurchase_amount, repurchase_pv,
|
||||
hi_fun_amount, hi_fun_pv, mall_amount, mall_pv, category, pk_grade, pk_center_code,
|
||||
min_achieve, round, second, bg.grade_value, store_level, expire_status
|
||||
from (
|
||||
<include refid="QueryMemberParent"></include>
|
||||
) a
|
||||
inner join bd_grade bg
|
||||
|
@ -286,11 +287,11 @@
|
|||
|
||||
<sql id="QueryMemberParent">
|
||||
<foreach collection="pkMemberList" item="item" open=" " close=" " separator=" union ">
|
||||
select pk_member,pk_parent,member_code,member_name,pk_awards,account_status,
|
||||
register_authority,customer_type,income_status,pk_settle_country,purchase_status,share_status,is_maker_space,
|
||||
select pk_member, pk_parent, member_code, member_name, pk_awards, register_authority, customer_type,
|
||||
account_status, income_status, pk_settle_country, purchase_status, share_status, is_maker_space,
|
||||
a_balance, b_balance, r_a_balance, r_b_balance, rep_a_balance, rep_b_balance, r_rep_a_balance, r_rep_b_balance,
|
||||
register_amount,register_pv,upgrade_amount,upgrade_pv,repurchase_amount,pk_center_code,
|
||||
repurchase_pv,hi_fun_amount,hi_fun_pv,mall_amount,mall_pv,category,pk_grade,
|
||||
register_amount, register_pv, upgrade_amount, upgrade_pv, repurchase_amount, repurchase_pv,
|
||||
hi_fun_amount,hi_fun_pv,mall_amount,mall_pv, pk_center_code, category,pk_grade,
|
||||
min_achieve, round, second, store_level, expire_status
|
||||
from ${settleTableName}
|
||||
where pay_status = 1
|
||||
|
@ -848,6 +849,7 @@
|
|||
b.rep_b_new_amount,b.rep_a_new_pv,b.rep_b_new_pv,b.rep_a_sum_amount,b.rep_b_sum_amount,
|
||||
b.rep_a_sum_pv,b.rep_b_sum_pv,b.round,b.second,b.min_achieve,b.expire_status)
|
||||
</update>
|
||||
|
||||
<update id="dropCuMemberSettleTable">
|
||||
drop table ${tableName}
|
||||
</update>
|
||||
|
@ -1381,7 +1383,8 @@
|
|||
|
||||
<select id="batchQuerySpecialCuMemberSettleParent" resultMap="CuMemberSettleExt">
|
||||
select a.*, (case when nvl(so.order_achieve,0)>0 then 0 else 1 end ) is_pay_reg from (
|
||||
<include refid="memberParent"></include>) a
|
||||
<include refid="memberParent"></include>
|
||||
) a
|
||||
left join (select pk_member, max(order_achieve) order_achieve from sa_order
|
||||
where del_flag = 0 and order_status = 1
|
||||
and order_type = 24
|
||||
|
@ -2304,4 +2307,30 @@
|
|||
order by t.pk_member
|
||||
</select>
|
||||
|
||||
<!-- 有奖衔的会员,本月左右区新増,上月最后一期左右区结余 -->
|
||||
<select id="listMemberMonthAssess" resultType="com.hzs.common.domain.member.ext.CuMemberSettleExt">
|
||||
select t.*,
|
||||
nvl(cms.a_balance, 0) a_balance,
|
||||
nvl(cms.b_balance, 0) b_balance,
|
||||
nvl(cmm.a_sum_pv, 0) + nvl(cmm.rep_a_sum_pv, 0) a_sum_pv,
|
||||
nvl(cmm.b_sum_pv, 0) + nvl(cmm.rep_b_sum_pv, 0) b_sum_pv
|
||||
from (
|
||||
select cms.*, ba.awards_value
|
||||
from (select cms.pk_member, cms.pk_awards
|
||||
from ${settleTableName} cms
|
||||
where cms.pk_member in
|
||||
<foreach collection="pkMemberList" item="item" open="(" close=")" separator=",">
|
||||
#{item}
|
||||
</foreach>
|
||||
) cms
|
||||
left join bd_awards ba
|
||||
on ba.pk_id = cms.pk_awards
|
||||
where ba.awards_value > 0
|
||||
) t
|
||||
left join ${settleTableNameMonthLast} cms
|
||||
on cms.pk_member = t.pk_member
|
||||
left join ${cuMemberMonth} cmm
|
||||
on cmm.pk_member = t.pk_member
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
|
|
|
@ -2,7 +2,6 @@ package com.hzs.system.config.service.impl;
|
|||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.hzs.common.core.constant.CacheConstants;
|
||||
import com.hzs.common.core.domain.R;
|
||||
|
@ -34,12 +33,8 @@ import java.util.List;
|
|||
@Service
|
||||
public class BdAwardsServiceImpl extends ServiceImpl<BdAwardsMapper, BdAwards> implements IBdAwardsService {
|
||||
|
||||
private RedisService redisService;
|
||||
|
||||
@Autowired
|
||||
public void setRedisService(RedisService redisService) {
|
||||
this.redisService = redisService;
|
||||
}
|
||||
private RedisService redisService;
|
||||
|
||||
@DubboReference
|
||||
ITransactionServiceApi iTransactionServiceApi;
|
||||
|
@ -82,7 +77,9 @@ public class BdAwardsServiceImpl extends ServiceImpl<BdAwardsMapper, BdAwards> i
|
|||
@Override
|
||||
public List<BdAwards> getBdAwards(Integer pkCountry, Integer enableState) {
|
||||
LambdaQueryWrapper<BdAwards> queryWrapper = new LambdaQueryWrapper<>();
|
||||
if (null != pkCountry) {
|
||||
queryWrapper.eq(BdAwards::getPkCountry, pkCountry);
|
||||
}
|
||||
if (null != enableState) {
|
||||
queryWrapper.eq(BdAwards::getEnableState, enableState);
|
||||
}
|
||||
|
@ -202,11 +199,7 @@ public class BdAwardsServiceImpl extends ServiceImpl<BdAwardsMapper, BdAwards> i
|
|||
|
||||
@Override
|
||||
public List<BdAwards> queryAwards() {
|
||||
QueryWrapper<BdAwards> queryWrapper = new QueryWrapper<>();
|
||||
String querySql = "PK_ID,AWARDS_VALUE,COMMUNITY_CHECK,COMMUNITY_CHECK_END,ALGEBRA,PURCHASE_CHECK,SHARE_CHECK,"
|
||||
+ "GLOBAL_INTEGRAL,CAR_AWARD_POINTS,PK_CHECK_AWARDS_LEFT,"
|
||||
+ "PK_CHECK_AWARDS_RIGHT,RELATION_TYPE,COACH_ALGEBRA,COACH_RATIO,ABONUS_RATIO,PK_COUNTRY";
|
||||
queryWrapper.select(querySql);
|
||||
LambdaQueryWrapper<BdAwards> queryWrapper = new LambdaQueryWrapper<>();
|
||||
return baseMapper.selectList(queryWrapper);
|
||||
}
|
||||
|
||||
|
|
|
@ -23,23 +23,11 @@
|
|||
<result column="CAR_AWARD_POINTS" property="carAwardPoints"/>
|
||||
<result column="ENABLE_STATE" property="enableState"/>
|
||||
<result column="TEXT_CONTENT" property="textContent"/>
|
||||
<result column="SMALL_ASSESS" property="smallAssess"/>
|
||||
</resultMap>
|
||||
|
||||
<!-- 通用查询结果列 -->
|
||||
<sql id="Base_Column_List">
|
||||
DEL_FLAG,
|
||||
PK_COUNTRY,
|
||||
PK_CREATOR,
|
||||
CREATION_TIME,
|
||||
PK_MODIFIED,
|
||||
MODIFIED_TIME,
|
||||
PK_ID, AWARDS_NAME, PK_TRANSACTION, AWARDS_VALUE, COMMUNITY_CHECK, ALGEBRA, PURCHASE_CHECK, SHARE_CHECK, GLOBAL_INTEGRAL, CAR_AWARD_POINTS
|
||||
</sql>
|
||||
|
||||
<!-- 查询等级或奖衔是否被使用-->
|
||||
<select id="checkGradeAwards"
|
||||
parameterType="java.lang.Integer"
|
||||
resultType="java.lang.Integer">
|
||||
<select id="checkGradeAwards" parameterType="java.lang.Integer" resultType="java.lang.Integer">
|
||||
select count(1) from CU_MEMBER
|
||||
WHERE
|
||||
DEL_FLAG = 0 and (
|
||||
|
@ -53,7 +41,6 @@
|
|||
PK_AWARDS = #{pkAwards}
|
||||
</if>
|
||||
)
|
||||
|
||||
</select>
|
||||
|
||||
|
||||
|
|
|
@ -11,9 +11,7 @@ import lombok.*;
|
|||
import lombok.experimental.Accessors;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 会员奖金-辅导收益明细表
|
||||
* </p>
|
||||
*
|
||||
* @author hzs
|
||||
* @since 2022-11-15
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
package com.hzs.common.domain.member.ext;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.hzs.common.domain.member.achieve.CuMemberTree;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
@ -437,4 +436,9 @@ public class CuMemberSettleExt extends CuMemberTree {
|
|||
*/
|
||||
private BigDecimal afterGrantIncome;
|
||||
|
||||
/**
|
||||
* 奖衔值
|
||||
*/
|
||||
private Integer awardsValue;
|
||||
|
||||
}
|
||||
|
|
|
@ -14,9 +14,7 @@ import org.apache.ibatis.type.JdbcType;
|
|||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 奖衔配置类
|
||||
* </p>
|
||||
*
|
||||
* @author zhangjing
|
||||
* @since 2022-09-08
|
||||
|
@ -170,4 +168,10 @@ public class BdAwards extends BaseEntity {
|
|||
@TableField("TEXT_CONTENT")
|
||||
private String textContent;
|
||||
|
||||
/**
|
||||
* 安置小区月度考核
|
||||
*/
|
||||
@TableField("SMALL_ASSESS")
|
||||
private BigDecimal smallAssess;
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue