## 首购领导奖新逻辑处理;
This commit is contained in:
parent
87fb08edfb
commit
92379659a1
|
@ -368,9 +368,6 @@ public interface CuMemberTreeMapper extends BaseMapper<CuMemberTree> {
|
||||||
*
|
*
|
||||||
* @param settleTableName 结算表
|
* @param settleTableName 结算表
|
||||||
* @param pkMemberList 有量奖的会员列表
|
* @param pkMemberList 有量奖的会员列表
|
||||||
* @return: Map<Long, List < CuMemberSettleExt>>
|
|
||||||
* @Author: sui q
|
|
||||||
* @Date: 2022/11/15 13:43
|
|
||||||
*/
|
*/
|
||||||
List<CuMemberSettleExt> batchQueryCuMemberSettleParent(@Param("settleTableName") String settleTableName,
|
List<CuMemberSettleExt> batchQueryCuMemberSettleParent(@Param("settleTableName") String settleTableName,
|
||||||
@Param("pkMemberList") List<?> pkMemberList);
|
@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);
|
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 settleTableName 结算表
|
||||||
* @param expandMemberSet 有量奖的会员
|
* @param expandMemberSet 有量奖的会员
|
||||||
* @return: Map<Long, CuMemberSettleExt> 主键,通过推荐人向上找父级
|
|
||||||
* @Author: sui q
|
|
||||||
* @Date: 2022/11/15 13:43
|
|
||||||
*/
|
*/
|
||||||
List<CuMemberSettleExt> batchQueryCuMemberSettleParent(String settleTableName, Set<Long> expandMemberSet);
|
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;
|
package com.hzs.bonus.achieve.service.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import com.hzs.bonus.achieve.service.ICuMemberAchieveService;
|
import com.hzs.bonus.achieve.service.ICuMemberAchieveService;
|
||||||
import com.hzs.bonus.achieve.service.ICuMemberSettlePeriodService;
|
import com.hzs.bonus.achieve.service.ICuMemberSettlePeriodService;
|
||||||
|
@ -401,6 +402,19 @@ public class CuMemberTreeServiceImpl extends ServiceImpl<CuMemberTreeMapper, CuM
|
||||||
return memberSettleMap;
|
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
|
@Override
|
||||||
public List<CuMemberSettleExt> batchQueryCuMemberSettleParent(String settleTableName, Set<Long> expandMemberSet) {
|
public List<CuMemberSettleExt> batchQueryCuMemberSettleParent(String settleTableName, Set<Long> expandMemberSet) {
|
||||||
List<CuMemberSettleExt> cuMemberSettleExtList = new ArrayList<>();
|
List<CuMemberSettleExt> cuMemberSettleExtList = new ArrayList<>();
|
||||||
|
@ -415,15 +429,14 @@ public class CuMemberTreeServiceImpl extends ServiceImpl<CuMemberTreeMapper, CuM
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@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<>();
|
List<CuMemberSettleExt> cuMemberSettleExtList = new ArrayList<>();
|
||||||
if (expandMemberSet == null || expandMemberSet.size() == 0) {
|
if (CollectionUtil.isEmpty(pkMemberList)) {
|
||||||
return cuMemberSettleExtList;
|
return cuMemberSettleExtList;
|
||||||
}
|
}
|
||||||
List<Long> memberPkList = Arrays.asList(expandMemberSet.toArray(new Long[]{}));
|
List<List<?>> listList = cuMemberBonusSettle.handleCutList(pkMemberList, MagicNumberConstants.DELETE_DATA_BATCH_UPDATE_NUM);
|
||||||
List<List<?>> listList = cuMemberBonusSettle.handleCutList(memberPkList, MagicNumberConstants.DELETE_DATA_BATCH_UPDATE_NUM);
|
|
||||||
listList.forEach(list ->
|
listList.forEach(list ->
|
||||||
cuMemberSettleExtList.addAll(baseMapper.batchQuerySpecialCuMemberSettleParent(settleTableName, list)));
|
cuMemberSettleExtList.addAll(baseMapper.listMemberMonthAssess(settleTableName, settleTableNameMonthLast, cuMemberMonth, list)));
|
||||||
return cuMemberSettleExtList;
|
return cuMemberSettleExtList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -660,30 +660,65 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Description: 计算领导奖
|
* 计算辅导收益(领导奖)
|
||||||
* @return: List<CuMemberBonusCoach>
|
*
|
||||||
* @Author: sui q
|
* @param settleTableName 结算表
|
||||||
* @Date: 2023/2/8 17:16
|
* @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,
|
List<CuMemberBonusCoach> calculateCoachBonus(Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, String settleTableName, String settleDateStr, BonusConfigDTO bonusConfigDTO,
|
||||||
Map<Long, SaOrderExt> saOrderExtMap, Map<Long, CuAwardsControl> cuAwardsControlMap, Map<Long, CuMemberRiskControl> riskControlMap) {
|
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<>();
|
List<CuMemberBonusCoach> cuMemberBonusCoachList = new ArrayList<>();
|
||||||
|
|
||||||
if (cuMemberBonusExpandList.size() > 0) {
|
if (cuMemberBonusExpandList.size() > 0) {
|
||||||
|
// 如果存在拓展收益则开始处理领导奖
|
||||||
|
// 产生拓展收益的所有会员ID
|
||||||
Set<Long> expandMemberSet = getMemberExpandBonus(cuMemberBonusMap, cuMemberBonusExpandList);
|
Set<Long> expandMemberSet = getMemberExpandBonus(cuMemberBonusMap, cuMemberBonusExpandList);
|
||||||
|
|
||||||
|
// 查询会员产生拓展收益血缘上会员
|
||||||
List<CuMemberSettleExt> cuMemberSettleExtList = iCuMemberTreeService.batchQueryCuMemberSettleParent(settleTableName, expandMemberSet);
|
List<CuMemberSettleExt> cuMemberSettleExtList = iCuMemberTreeService.batchQueryCuMemberSettleParent(settleTableName, expandMemberSet);
|
||||||
// 初始化父类网体的值
|
// 初始化父类网体的值
|
||||||
getMemberSettle(cuMemberSettleExtMap, cuMemberSettleExtList);
|
getMemberSettle(cuMemberSettleExtMap, cuMemberSettleExtList);
|
||||||
List<CuMemberSettleExt> queryMemberList = getQueryMemberSettleExtList(cuMemberSettleExtMap, cuMemberSettleExtList);
|
|
||||||
// 获取复购考核结果
|
// List<CuMemberSettleExt> queryMemberList = getQueryMemberSettleExtList(cuMemberSettleExtMap, cuMemberSettleExtList);
|
||||||
Map<Long, CuMemberAssess> cuMemberAssessMap = getLongCuMemberAssessMap(settleDateStr, queryMemberList);
|
// // 获取复购考核结果
|
||||||
// 开始计算辅导奖,往上找10代血缘,判断血缘的奖衔是否>= 5的倍数
|
// 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);
|
Map<Long, CuMemberSettleExt> bonusIdSettleMap = getMemberExpandBonus(cuMemberSettleExtMap);
|
||||||
|
// 开始计算辅导奖,往上找10代血缘,判断血缘的奖衔是否 >= 5的倍数
|
||||||
for (CuMemberBonusExpand cuMemberBonusExpand : cuMemberBonusExpandList) {
|
for (CuMemberBonusExpand cuMemberBonusExpand : cuMemberBonusExpandList) {
|
||||||
// 国内没有领导奖
|
// // 国内没有领导奖
|
||||||
if (cuMemberBonusExpand.getPkCountry().equals(CountryConstants.CHINA_COUNTRY)) {
|
// if (cuMemberBonusExpand.getPkCountry().equals(CountryConstants.CHINA_COUNTRY)) {
|
||||||
continue;
|
// continue;
|
||||||
}
|
// }
|
||||||
List<CuMemberBonusCoach> coachBonusList = calculateBonusCoach(cuMemberSettleExtMap, bonusConfigDTO, period, cuMemberBonusMap, saOrderExtMap, cuMemberAssessMap, bonusIdSettleMap, cuMemberBonusExpand, cuAwardsControlMap, riskControlMap);
|
List<CuMemberBonusCoach> coachBonusList = calculateBonusCoach(cuMemberSettleExtMap, bonusConfigDTO, period, cuMemberBonusMap,
|
||||||
|
saOrderExtMap, cuMemberAssessMap, bonusIdSettleMap, cuMemberBonusExpand, cuAwardsControlMap,
|
||||||
|
riskControlMap, cuMemberBonusNumMap, awardsList);
|
||||||
if (coachBonusList.size() > 0) {
|
if (coachBonusList.size() > 0) {
|
||||||
cuMemberBonusCoachList.addAll(coachBonusList);
|
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,
|
private List<CuMemberBonusCoach> calculateBonusCoach(Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, BonusConfigDTO bonusConfigDTO, Integer period,
|
||||||
CuMemberBonusExpand cuMemberBonusExpand, Map<Long, CuAwardsControl> cuAwardsControlMap, Map<Long, CuMemberRiskControl> riskControlMap) {
|
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());
|
CuMemberSettleExt sourceMemberSettleExt = bonusIdSettleMap.get(cuMemberBonusExpand.getPkBonus());
|
||||||
Long pkMember = cuMemberSettleExtMap.get(cuMemberBonusExpand.getPkBonus()).getPkParent();
|
|
||||||
// 获得量奖的人往上找10代血缘
|
|
||||||
// 用于回写血缘总共多少代
|
// 用于回写血缘总共多少代
|
||||||
List<CuMemberBonusCoach> backMemberBonusCoachList = new ArrayList<>();
|
List<CuMemberBonusCoach> backMemberBonusCoachList = new ArrayList<>();
|
||||||
|
|
||||||
|
Long pkMember = cuMemberSettleExtMap.get(cuMemberBonusExpand.getPkBonus()).getPkParent();
|
||||||
|
|
||||||
|
// 领导奖拿一共拿了多少代
|
||||||
int coachGeneration = 0;
|
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);
|
CuMemberSettleExt targetMemberSettleExt = cuMemberSettleExtMap.get(pkMember);
|
||||||
if (targetMemberSettleExt == null) {
|
if (null == targetMemberSettleExt) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
pkMember = targetMemberSettleExt.getPkParent();
|
pkMember = targetMemberSettleExt.getPkParent();
|
||||||
if (ECategory.NORMAL.getValue() != targetMemberSettleExt.getCategory() ||
|
if (ECategory.NORMAL.getValue() != targetMemberSettleExt.getCategory()
|
||||||
EAccountStatus.STOP_INCOME.getValue() == targetMemberSettleExt.getAccountStatus()) {
|
|| EAccountStatus.STOP_INCOME.getValue() == targetMemberSettleExt.getAccountStatus()) {
|
||||||
|
// 会员状态不正常 或者 停算收益 直接跳过
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (validatePkBonusItems(bonusConfigDTO, targetMemberSettleExt.getPkSettleCountry(), EBonusItems.COACHING_INCOME.getValue())) {
|
if (validatePkBonusItems(bonusConfigDTO, targetMemberSettleExt.getPkSettleCountry(), EBonusItems.COACHING_INCOME.getValue())) {
|
||||||
|
// 校验当前国家是否有该奖项
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
SaOrderExt saOrderExt = saOrderExtMap.get(cuMemberBonusExpand.getPkOrder());
|
SaOrderExt saOrderExt = saOrderExtMap.get(cuMemberBonusExpand.getPkOrder());
|
||||||
if (!validateSecondOrderExistBonus(saOrderExt, EBonusItems.COACHING_INCOME.getValue())) {
|
if (null == saOrderExt || !validateSecondOrderExistBonus(saOrderExt, EBonusItems.COACHING_INCOME.getValue())) {
|
||||||
|
// 订单为空 或者 判断二次发货是否有辅导收益
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, saOrderExt, targetMemberSettleExt);
|
|
||||||
|
CuMemberSettleExt coachAwardsMember = cuMemberBonusNumMap.get(targetMemberSettleExt.getPkMember());
|
||||||
|
if (null == coachAwardsMember) {
|
||||||
|
// 判断领导奖参数,如果不存在,直接跳过
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取奖衔对应的领导奖配置
|
||||||
BdAwards awardsCouch = getBdAwards(bonusConfigDTO, targetMemberSettleExt, cuAwardsControlMap);
|
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);
|
BdAwards coachAward = bonusConfigDTO.getAwardsValueMap().get(targetMemberSettleExt.getPkSettleCountry().toString() + ERangeType.AWARDS.getValue() + MagicNumberConstants.BLOOD_GENERATION_SERIES * i);
|
||||||
|
// 辅导奖比例
|
||||||
BigDecimal awardCalRadio = BigDecimal.ZERO;
|
BigDecimal awardCalRadio = BigDecimal.ZERO;
|
||||||
if (coachAward != null) {
|
if (null != coachAward) {
|
||||||
awardCalRadio = coachAward.getCoachRatio();
|
awardCalRadio = coachAward.getCoachRatio();
|
||||||
}
|
}
|
||||||
// 判断会员状态
|
// 生成辅导收益明细
|
||||||
CuMemberBonusCoach cuMemberBonusCoach = getCuMemberBonusCoach(bonusConfigDTO, cuMemberBonusExpand, i, targetMemberSettleExt, awardCalRadio);
|
CuMemberBonusCoach cuMemberBonusCoach = getCuMemberBonusCoach(bonusConfigDTO, cuMemberBonusExpand, i, targetMemberSettleExt, awardCalRadio);
|
||||||
// 正常状态的辅导奖需要判断复购考核,复购考核不通过的状态变为烧伤
|
// TODO new 如果拓展收益是延缓发放,那么辅导收益也需要延缓发放
|
||||||
if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusCoach.getIncomeStatus() &&
|
if (EBonusIncomeStatus.DELAY_GRANT.getValue() == cuMemberBonusExpand.getIncomeStatus()) {
|
||||||
EYesNo.NO.getIntValue() == targetMemberSettleExt.getPurchaseStatus()) {
|
cuMemberBonusCoach.setIncomeStatus(EBonusIncomeStatus.DELAY_GRANT.getValue());
|
||||||
// 需要复购考核的
|
|
||||||
CuMemberAssess cuMemberAssess = cuMemberAssessMap.get(targetMemberSettleExt.getPkMember());
|
|
||||||
if (cuMemberAssess == null) {
|
|
||||||
cuMemberBonusCoach.setIncomeStatus(EBonusIncomeStatus.FIRE_BURN.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值设置
|
// K值设置
|
||||||
if (riskControlMap.containsKey(cuMemberBonus.getPkMember())) {
|
if (riskControlMap.containsKey(cuMemberBonus.getPkMember())) {
|
||||||
Integer generation = riskControlMap.get(cuMemberBonus.getPkMember()).getCoachGeneration();
|
Integer generation = riskControlMap.get(cuMemberBonus.getPkMember()).getCoachGeneration();
|
||||||
|
@ -750,23 +820,27 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle {
|
||||||
cuMemberBonusCoach.setIncomeStatus(EBonusIncomeStatus.RISK_CONTROL.getValue());
|
cuMemberBonusCoach.setIncomeStatus(EBonusIncomeStatus.RISK_CONTROL.getValue());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// 判断考核状态,是否考核通过
|
|
||||||
// 收益占比
|
// 收益占比
|
||||||
BdBonusDeduct bdBonusDeduct = setBonusDetailDeduct(bonusConfigDTO, cuMemberBonusCoach, saOrderExt.getOrderAmount(), saOrderExt.getInExchangeRate());
|
BdBonusDeduct bdBonusDeduct = setBonusDetailDeduct(bonusConfigDTO, cuMemberBonusCoach, saOrderExt.getOrderAmount(), saOrderExt.getInExchangeRate());
|
||||||
coachRemark(saOrderExt, cuMemberBonusCoach, sourceMemberSettleExt, targetMemberSettleExt);
|
coachRemark(saOrderExt, cuMemberBonusCoach, sourceMemberSettleExt, targetMemberSettleExt);
|
||||||
|
|
||||||
if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusCoach.getIncomeStatus()) {
|
if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusCoach.getIncomeStatus()) {
|
||||||
cuMemberBonus.setCoachIncome(ComputeUtil.computeAdd(cuMemberBonus.getCoachIncome(), cuMemberBonusCoach.getPretaxIncome()));
|
cuMemberBonus.setCoachIncome(ComputeUtil.computeAdd(cuMemberBonus.getCoachIncome(), cuMemberBonusCoach.getPretaxIncome()));
|
||||||
setFirstPurchaseTotal(bdBonusDeduct, cuMemberBonus, cuMemberBonusCoach);
|
setFirstPurchaseTotal(bdBonusDeduct, cuMemberBonus, cuMemberBonusCoach);
|
||||||
}
|
}
|
||||||
backMemberBonusCoachList.add(cuMemberBonusCoach);
|
backMemberBonusCoachList.add(cuMemberBonusCoach);
|
||||||
|
|
||||||
|
// 这一代领导奖计算完,计算代数加1
|
||||||
|
i++;
|
||||||
}
|
}
|
||||||
coachGeneration = i;
|
|
||||||
}
|
}
|
||||||
|
coachGeneration = --i;
|
||||||
return handleCoachRemark(backMemberBonusCoachList, coachGeneration);
|
return handleCoachRemark(backMemberBonusCoachList, coachGeneration);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 判断是否是服务中心,服务中心算主任
|
* 判断是否是服务中心,服务中心算主任 -- 目前领导奖单独使用
|
||||||
*
|
*
|
||||||
* @param bonusConfigDTO 奖金参数设置
|
* @param bonusConfigDTO 奖金参数设置
|
||||||
* @param targetMemberSettleExt 父级
|
* @param targetMemberSettleExt 父级
|
||||||
|
@ -824,12 +898,10 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* 处理拓展表备注
|
||||||
|
*
|
||||||
* @param backMemberBonusCoachList 临时记录辅导奖列表
|
* @param backMemberBonusCoachList 临时记录辅导奖列表
|
||||||
* @param i 第几代
|
* @param i 第几代
|
||||||
* @Description: 处理拓展表备注
|
|
||||||
* @return: void
|
|
||||||
* @Author: sui q
|
|
||||||
* @Date: 2022/11/17 18:02
|
|
||||||
*/
|
*/
|
||||||
private List<CuMemberBonusCoach> handleCoachRemark(List<CuMemberBonusCoach> backMemberBonusCoachList, int i) {
|
private List<CuMemberBonusCoach> handleCoachRemark(List<CuMemberBonusCoach> backMemberBonusCoachList, int i) {
|
||||||
List<CuMemberBonusCoach> cuMemberBonusCoachList = new ArrayList<>();
|
List<CuMemberBonusCoach> cuMemberBonusCoachList = new ArrayList<>();
|
||||||
|
@ -1185,14 +1257,14 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle {
|
||||||
}
|
}
|
||||||
|
|
||||||
// 正常状态的辅导奖需要判断复购考核,复购考核不通过的状态变为烧伤
|
// 正常状态的辅导奖需要判断复购考核,复购考核不通过的状态变为烧伤
|
||||||
if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusExpand.getIncomeStatus()
|
// if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusExpand.getIncomeStatus()
|
||||||
&& EYesNo.NO.getIntValue() == targetMemberSettleExt.getPurchaseStatus()) {
|
// && EYesNo.NO.getIntValue() == targetMemberSettleExt.getPurchaseStatus()) {
|
||||||
// 需要复购考核的
|
// // 需要复购考核的
|
||||||
CuMemberAssess cuMemberAssess = cuMemberAssessMap.get(targetMemberSettleExt.getPkMember());
|
// CuMemberAssess cuMemberAssess = cuMemberAssessMap.get(targetMemberSettleExt.getPkMember());
|
||||||
if (cuMemberAssess == null) {
|
// if (cuMemberAssess == null) {
|
||||||
cuMemberBonusExpand.setIncomeStatus(EBonusIncomeStatus.FIRE_BURN.getValue());
|
// cuMemberBonusExpand.setIncomeStatus(EBonusIncomeStatus.FIRE_BURN.getValue());
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusExpand.getIncomeStatus() ||
|
if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusExpand.getIncomeStatus() ||
|
||||||
EBonusIncomeStatus.RISK_CONTROL.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 bonusConfigDTO 奖金参数汇总
|
||||||
* @param memberSettleExt 会员
|
* @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) {
|
protected BdAwards getAwardsCouch(BonusConfigDTO bonusConfigDTO, CuMemberSettleExt memberSettleExt, Map<Long, CuAwardsControl> cuAwardsControlMap) {
|
||||||
Integer pkAwards = getPkRealAwards(memberSettleExt.getPkMember(), memberSettleExt.getPkAwards(), cuAwardsControlMap);
|
Integer pkAwards = getPkRealAwards(memberSettleExt.getPkMember(), memberSettleExt.getPkAwards(), cuAwardsControlMap);
|
||||||
|
@ -178,15 +176,17 @@ public abstract class BonusSettleHandle {
|
||||||
* @param cuMemberBonusExpandList 量奖明细
|
* @param cuMemberBonusExpandList 量奖明细
|
||||||
*/
|
*/
|
||||||
protected Set<Long> getMemberExpandBonus(Map<Long, CuMemberBonus> cuMemberBonusMap, List<CuMemberBonusExpand> 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()));
|
Map<Long, CuMemberBonus> pkMemberSettleMap = new HashMap<>(ComputeUtil.mapInitCapacity(cuMemberBonusMap.size()));
|
||||||
cuMemberBonusMap.forEach((key, cuMemberBonus) -> {
|
cuMemberBonusMap.forEach((key, cuMemberBonus) -> {
|
||||||
// 判断 cuMemberSettleExtMap中这个人是否是免考,免考的不查询考核是否通过,过滤数据
|
// 判断 cuMemberSettleExtMap中这个人是否是免考,免考的不查询考核是否通过,过滤数据
|
||||||
pkMemberSettleMap.put(cuMemberBonus.getPkId(), cuMemberBonus);
|
pkMemberSettleMap.put(cuMemberBonus.getPkId(), cuMemberBonus);
|
||||||
});
|
});
|
||||||
|
|
||||||
Set<Long> expandMemberSet = new HashSet<>();
|
Set<Long> expandMemberSet = new HashSet<>();
|
||||||
cuMemberBonusExpandList.forEach(cuMemberBonusExpand -> {
|
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());
|
expandMemberSet.add(pkMemberSettleMap.get(cuMemberBonusExpand.getPkBonus()).getPkMember());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -208,8 +208,8 @@ public abstract class BonusSettleHandle {
|
||||||
/**
|
/**
|
||||||
* 记录需要修改的会员结算表数据, 安置的
|
* 记录需要修改的会员结算表数据, 安置的
|
||||||
*
|
*
|
||||||
* @param cuMemberSettleExtMap 会员结算
|
* @param cuMemberSettleExtMap 会员结算
|
||||||
* @param cuMemberSettleExt 查询出来的结算数据
|
* @param cuMemberSettleExt 查询出来的结算数据
|
||||||
*/
|
*/
|
||||||
protected void getMemberSettle(Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, CuMemberSettleExt cuMemberSettleExt) {
|
protected void getMemberSettle(Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, CuMemberSettleExt cuMemberSettleExt) {
|
||||||
if (cuMemberSettleExtMap.containsKey(cuMemberSettleExt.getPkMember())) {
|
if (cuMemberSettleExtMap.containsKey(cuMemberSettleExt.getPkMember())) {
|
||||||
|
@ -247,8 +247,8 @@ public abstract class BonusSettleHandle {
|
||||||
if (memberSettleExt.getPkVertex() == null) {
|
if (memberSettleExt.getPkVertex() == null) {
|
||||||
memberSettleExt.setPkVertex(cuMemberSettleExt.getPkVertex());
|
memberSettleExt.setPkVertex(cuMemberSettleExt.getPkVertex());
|
||||||
}
|
}
|
||||||
if (memberSettleExt.getUnGrantIncome() == null) {
|
if (memberSettleExt.getUnGrantIncome() == null || memberSettleExt.getUnGrantIncome().compareTo(BigDecimal.ZERO) == 0) {
|
||||||
memberSettleExt.setUnGrantIncome(cuMemberSettleExt.getUnGrantIncome());
|
memberSettleExt.setUnGrantIncome(null != cuMemberSettleExt.getUnGrantIncome() ? cuMemberSettleExt.getUnGrantIncome() : BigDecimal.ZERO);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
cuMemberSettleExt.setANewAmount(BigDecimal.ZERO);
|
cuMemberSettleExt.setANewAmount(BigDecimal.ZERO);
|
||||||
|
@ -321,8 +321,8 @@ public abstract class BonusSettleHandle {
|
||||||
if (memberSettleExt.getPkVertex() == null) {
|
if (memberSettleExt.getPkVertex() == null) {
|
||||||
memberSettleExt.setPkVertex(cuMemberSettleExt.getPkVertex());
|
memberSettleExt.setPkVertex(cuMemberSettleExt.getPkVertex());
|
||||||
}
|
}
|
||||||
if (memberSettleExt.getUnGrantIncome() == null) {
|
if (memberSettleExt.getUnGrantIncome() == null || memberSettleExt.getUnGrantIncome().compareTo(BigDecimal.ZERO) == 0) {
|
||||||
memberSettleExt.setUnGrantIncome(cuMemberSettleExt.getUnGrantIncome());
|
memberSettleExt.setUnGrantIncome(null != cuMemberSettleExt.getUnGrantIncome() ? cuMemberSettleExt.getUnGrantIncome() : BigDecimal.ZERO);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
cuMemberSettleExt.setANewAmount(BigDecimal.ZERO);
|
cuMemberSettleExt.setANewAmount(BigDecimal.ZERO);
|
||||||
|
@ -777,12 +777,10 @@ public abstract class BonusSettleHandle {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* 获取会员列表的考核结果
|
||||||
|
*
|
||||||
* @param settleDateStr 结算日期
|
* @param settleDateStr 结算日期
|
||||||
* @param cuMemberSettleExtList 会员列表
|
* @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) {
|
protected Map<Long, CuMemberAssess> getLongCuMemberAssessMap(String settleDateStr, List<CuMemberSettleExt> cuMemberSettleExtList) {
|
||||||
if (cuMemberSettleExtList.size() == 0) {
|
if (cuMemberSettleExtList.size() == 0) {
|
||||||
|
@ -804,8 +802,7 @@ public abstract class BonusSettleHandle {
|
||||||
* @param cuMemberSettleExt 获取奖金的会员
|
* @param cuMemberSettleExt 获取奖金的会员
|
||||||
* @return CuMemberBonus
|
* @return CuMemberBonus
|
||||||
*/
|
*/
|
||||||
protected CuMemberBonus getCuMemberBonus(Integer period, Map<Long, CuMemberBonus> cuMemberBonusMap, SaOrder saOrder,
|
protected CuMemberBonus getCuMemberBonus(Integer period, Map<Long, CuMemberBonus> cuMemberBonusMap, SaOrder saOrder, CuMemberSettleExt cuMemberSettleExt) {
|
||||||
CuMemberSettleExt cuMemberSettleExt) {
|
|
||||||
Integer pkRate = saOrder.getPkRate();
|
Integer pkRate = saOrder.getPkRate();
|
||||||
if (pkRate == null || !Objects.equals(cuMemberSettleExt.getPkSettleCountry(), saOrder.getPkCountry())) {
|
if (pkRate == null || !Objects.equals(cuMemberSettleExt.getPkSettleCountry(), saOrder.getPkCountry())) {
|
||||||
CurrencyDTO currencyDTO = iCurrencyServiceApi.getCurrency(cuMemberSettleExt.getPkSettleCountry()).getData();
|
CurrencyDTO currencyDTO = iCurrencyServiceApi.getCurrency(cuMemberSettleExt.getPkSettleCountry()).getData();
|
||||||
|
|
|
@ -1119,14 +1119,14 @@ public class BonusSettlePurchaseHandle extends BonusSettleHandle {
|
||||||
repurchaseExpandRemark(saOrderExt, cuMemberBonusExpand, sourceMemberSettleExt, targetMemberSettleExt);
|
repurchaseExpandRemark(saOrderExt, cuMemberBonusExpand, sourceMemberSettleExt, targetMemberSettleExt);
|
||||||
|
|
||||||
// 正常状态的辅导奖需要判断复购考核,复购考核不通过的状态变为烧伤
|
// 正常状态的辅导奖需要判断复购考核,复购考核不通过的状态变为烧伤
|
||||||
if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusExpand.getIncomeStatus()
|
// if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusExpand.getIncomeStatus()
|
||||||
&& EYesNo.NO.getIntValue() == targetMemberSettleExt.getPurchaseStatus()) {
|
// && EYesNo.NO.getIntValue() == targetMemberSettleExt.getPurchaseStatus()) {
|
||||||
// 需要复购考核的
|
// // 需要复购考核的
|
||||||
CuMemberAssess cuMemberAssess = cuMemberAssessMap.get(targetMemberSettleExt.getPkMember());
|
// CuMemberAssess cuMemberAssess = cuMemberAssessMap.get(targetMemberSettleExt.getPkMember());
|
||||||
if (cuMemberAssess == null) {
|
// if (cuMemberAssess == null) {
|
||||||
cuMemberBonusExpand.setIncomeStatus(EBonusIncomeStatus.FIRE_BURN.getValue());
|
// cuMemberBonusExpand.setIncomeStatus(EBonusIncomeStatus.FIRE_BURN.getValue());
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusExpand.getIncomeStatus()) {
|
if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusExpand.getIncomeStatus()) {
|
||||||
cuMemberBonus.setRepurExpandIncome(ComputeUtil.computeSubtract(expandIncome, cuMemberBonus.getExpandIncome()));
|
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.risk.service.ICuMemberRiskControlService;
|
||||||
import com.hzs.bonus.swing.service.ICuMemberSwingNetLogService;
|
import com.hzs.bonus.swing.service.ICuMemberSwingNetLogService;
|
||||||
import com.hzs.common.core.constant.BonusFieldConstants;
|
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.MagicNumberConstants;
|
||||||
import com.hzs.common.core.constant.TableNameConstants;
|
import com.hzs.common.core.constant.TableNameConstants;
|
||||||
import com.hzs.common.core.enums.*;
|
import com.hzs.common.core.enums.*;
|
||||||
|
@ -179,6 +180,7 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
||||||
BonusConfigDTO bonusConfigDTO = iBonusItemsServiceApi.queryBonusConfigDTO().getData();
|
BonusConfigDTO bonusConfigDTO = iBonusItemsServiceApi.queryBonusConfigDTO().getData();
|
||||||
Map<Long, CuMemberSettleExt> cuMemberSettleExtMap = new HashMap<>();
|
Map<Long, CuMemberSettleExt> cuMemberSettleExtMap = new HashMap<>();
|
||||||
Map<Long, CuAwardsControl> cuAwardsControlMap = getCuAwardsControlMap();
|
Map<Long, CuAwardsControl> cuAwardsControlMap = getCuAwardsControlMap();
|
||||||
|
List<BdAwards> awardsList = iAwardsServiceApi.queryAwards(saOrderExt.getPkCountry()).getData();
|
||||||
// 计算奖金
|
// 计算奖金
|
||||||
if (EOrderType.REGISTER_ORDER.getValue() == saOrderExt.getOrderType() ||
|
if (EOrderType.REGISTER_ORDER.getValue() == saOrderExt.getOrderType() ||
|
||||||
EOrderType.UPGRADE_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);
|
Map<Long, SaOrderExt> saOrderExtMap = new HashMap<>(1);
|
||||||
saOrderExtMap.put(saOrderExt.getPkId(), saOrderExt);
|
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);
|
CuMemberBonusDetail cuMemberBonusDetail = bonusSettleFirstPurchaseHandle.calculateServiceBonusOne(settleDate, cuMemberAssessMap, cuMemberSettleExtMap, bonusConfigDTO, period, cuMemberBonusMap, saOrderExt);
|
||||||
// 复购券
|
// 复购券
|
||||||
|
@ -368,7 +370,9 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
||||||
// 将结算日昨日业绩数据 迁移到 网体业绩历史记录结算表(cu_member_settle)
|
// 将结算日昨日业绩数据 迁移到 网体业绩历史记录结算表(cu_member_settle)
|
||||||
iCuMemberTreeService.initCuMemberTreeTable(yesterdayTableName, currentSettleTableName);
|
iCuMemberTreeService.initCuMemberTreeTable(yesterdayTableName, currentSettleTableName);
|
||||||
|
|
||||||
|
// 国家奖衔map
|
||||||
Map<String, BdAwards> awardsMap = iAwardsServiceApi.getAwards().getData();
|
Map<String, BdAwards> awardsMap = iAwardsServiceApi.getAwards().getData();
|
||||||
|
// 等级map
|
||||||
Map<Integer, BdGrade> gradeMap = iGradeServiceApi.getGrade().getData();
|
Map<Integer, BdGrade> gradeMap = iGradeServiceApi.getGrade().getData();
|
||||||
|
|
||||||
// 查看是否有特殊业务,有特殊业务的处理,特殊业务,注水处理
|
// 查看是否有特殊业务,有特殊业务的处理,特殊业务,注水处理
|
||||||
|
@ -655,6 +659,7 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
||||||
Map<String, String> systemConfigMap = iSystemConfigServiceApi.getBonusSystemConfig().getData();
|
Map<String, String> systemConfigMap = iSystemConfigServiceApi.getBonusSystemConfig().getData();
|
||||||
BonusRecordDetailVO recordDetailVO = new BonusRecordDetailVO();
|
BonusRecordDetailVO recordDetailVO = new BonusRecordDetailVO();
|
||||||
Map<String, BdAwards> awardsMap = iAwardsServiceApi.getAwards().getData();
|
Map<String, BdAwards> awardsMap = iAwardsServiceApi.getAwards().getData();
|
||||||
|
List<BdAwards> awardsList = iAwardsServiceApi.queryAwards(CountryConstants.CHINA_COUNTRY).getData();
|
||||||
// 首购订单
|
// 首购订单
|
||||||
List<SaOrderExt> firPurchaseOrderList = new ArrayList<>();
|
List<SaOrderExt> firPurchaseOrderList = new ArrayList<>();
|
||||||
saOrderExtList.forEach(saOrderExt ->
|
saOrderExtList.forEach(saOrderExt ->
|
||||||
|
@ -673,7 +678,7 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
||||||
cuBonusExpandExtList.forEach(cuBonusExpandExt -> cuBonusExpandExtMap.put(cuBonusExpandExt.getPkMember(), cuBonusExpandExt));
|
cuBonusExpandExtList.forEach(cuBonusExpandExt -> cuBonusExpandExtMap.put(cuBonusExpandExt.getPkMember(), cuBonusExpandExt));
|
||||||
if (firPurchaseOrderList.size() > 0) {
|
if (firPurchaseOrderList.size() > 0) {
|
||||||
calculateFirPurchaseOrder(riskControlMap, cuMemberSettleExtMap, currentSettleTableName, settleDate, systemConfigMap, bonusConfigDTO,
|
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<>();
|
List<CuMemberRepeatBonus> cuMemberBonusList = new ArrayList<>();
|
||||||
for (CuMemberBonus cuMemberBonus : cuMemberBonusMap.values()) {
|
for (CuMemberBonus cuMemberBonus : cuMemberBonusMap.values()) {
|
||||||
|
@ -803,6 +808,8 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
||||||
Map<Long, CuMemberBonus> weekMemberBonusMap = getWeekMemberBonusMap(settleDate, period);
|
Map<Long, CuMemberBonus> weekMemberBonusMap = getWeekMemberBonusMap(settleDate, period);
|
||||||
Map<String, String> systemConfigMap = iSystemConfigServiceApi.getBonusSystemConfig().getData();
|
Map<String, String> systemConfigMap = iSystemConfigServiceApi.getBonusSystemConfig().getData();
|
||||||
Map<String, RangeDTO> rangeDtoMap = iRangeServiceApi.queryRangeDto().getData();
|
Map<String, RangeDTO> rangeDtoMap = iRangeServiceApi.queryRangeDto().getData();
|
||||||
|
// 奖衔列表(奖衔值升序)
|
||||||
|
List<BdAwards> awardsList = iAwardsServiceApi.queryAwards(CountryConstants.CHINA_COUNTRY).getData();
|
||||||
|
|
||||||
// 查询K值控制
|
// 查询K值控制
|
||||||
List<CuMemberRiskControl> cuMemberRiskControlList = iCuMemberRiskControlService.queryCuMemberRiskControl(DateUtils.parseStringToDate(settleDate));
|
List<CuMemberRiskControl> cuMemberRiskControlList = iCuMemberRiskControlService.queryCuMemberRiskControl(DateUtils.parseStringToDate(settleDate));
|
||||||
|
@ -825,7 +832,7 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
||||||
// 计算首购
|
// 计算首购
|
||||||
if (firPurchaseOrderList.size() > 0) {
|
if (firPurchaseOrderList.size() > 0) {
|
||||||
calculateFirPurchaseOrder(riskControlMap, cuMemberSettleExtMap, currentSettleTableName, settleDate, systemConfigMap, bonusConfigDTO,
|
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) {
|
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,
|
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<String, String> systemConfigMap, BonusConfigDTO bonusConfigDTO, List<SaOrderExt> firPurchaseOrderList, Integer period, Integer yesterdayPeriod,
|
||||||
Map<Long, CuMemberBonus> weekMemberBonusMap, Map<Long, CuMemberBonus> cuMemberBonusMap, BonusRecordDetailVO bonusRecordDetailVO,
|
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
|
// 获取有订单国家的系统参数,获得三单循环还是四单循环 key 国家+系统参数key
|
||||||
|
@ -1038,9 +1045,10 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
||||||
|
|
||||||
//*********************************计算领导奖(辅导收益)************************/
|
//*********************************计算领导奖(辅导收益)************************/
|
||||||
// 判断是否有量奖,有量奖有辅导奖
|
// 判断是否有量奖,有量奖有辅导奖
|
||||||
// List<CuMemberBonusCoach> cuMemberBonusCoachList = bonusSettleFirstPurchaseHandle.calculateCoachBonus(cuMemberSettleExtMap, settleTableName, settleDate, bonusConfigDTO, firPurchaseOrderList,
|
List<CuMemberBonusCoach> cuMemberBonusCoachList = bonusSettleFirstPurchaseHandle.calculateCoachBonus(cuMemberSettleExtMap, settleTableName, settleDate, bonusConfigDTO, firPurchaseOrderList,
|
||||||
// cuMemberBonusExpandList, period, cuMemberBonusMap, cuAwardsControlMap, riskControlMap);
|
cuMemberBonusExpandList, period, cuMemberBonusMap, cuAwardsControlMap, riskControlMap, awardsList);
|
||||||
// bonusRecordDetailVO.setCuMemberBonusCoachList(cuMemberBonusCoachList);
|
bonusRecordDetailVO.setCuMemberBonusCoachList(cuMemberBonusCoachList);
|
||||||
|
|
||||||
//*********************************计算服务奖************************/
|
//*********************************计算服务奖************************/
|
||||||
List<CuMemberBonusDetail> cuMemberBonusDetailList = bonusSettleFirstPurchaseHandle.calculateServiceBonus(cuMemberSettleExtMap, settleDate, settleTableName, bonusConfigDTO, firPurchaseOrderList, period, cuMemberBonusMap);
|
List<CuMemberBonusDetail> cuMemberBonusDetailList = bonusSettleFirstPurchaseHandle.calculateServiceBonus(cuMemberSettleExtMap, settleDate, settleTableName, bonusConfigDTO, firPurchaseOrderList, period, cuMemberBonusMap);
|
||||||
bonusRecordDetailVO.setCuMemberBonusDetailList(cuMemberBonusDetailList);
|
bonusRecordDetailVO.setCuMemberBonusDetailList(cuMemberBonusDetailList);
|
||||||
|
|
|
@ -211,12 +211,13 @@
|
||||||
|
|
||||||
<sql id="memberParent">
|
<sql id="memberParent">
|
||||||
select
|
select
|
||||||
pk_member,pk_parent,member_code,member_name,a.pk_awards,account_status,a.register_authority,customer_type,
|
pk_member, pk_parent, member_code, member_name, a.pk_awards, account_status, a.register_authority,
|
||||||
income_status,pk_settle_country,purchase_status,share_status,is_maker_space,
|
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,
|
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,
|
register_amount, register_pv, upgrade_amount, upgrade_pv, repurchase_amount, repurchase_pv,
|
||||||
repurchase_pv,hi_fun_amount,hi_fun_pv,mall_amount,mall_pv,category,pk_grade,
|
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 (
|
min_achieve, round, second, bg.grade_value, store_level, expire_status
|
||||||
|
from (
|
||||||
<include refid="QueryMemberParent"></include>
|
<include refid="QueryMemberParent"></include>
|
||||||
) a
|
) a
|
||||||
inner join bd_grade bg
|
inner join bd_grade bg
|
||||||
|
@ -286,12 +287,12 @@
|
||||||
|
|
||||||
<sql id="QueryMemberParent">
|
<sql id="QueryMemberParent">
|
||||||
<foreach collection="pkMemberList" item="item" open=" " close=" " separator=" union ">
|
<foreach collection="pkMemberList" item="item" open=" " close=" " separator=" union ">
|
||||||
select pk_member,pk_parent,member_code,member_name,pk_awards,account_status,
|
select pk_member, pk_parent, member_code, member_name, pk_awards, register_authority, customer_type,
|
||||||
register_authority,customer_type,income_status,pk_settle_country,purchase_status,share_status,is_maker_space,
|
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,
|
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,
|
register_amount, register_pv, upgrade_amount, upgrade_pv, repurchase_amount, repurchase_pv,
|
||||||
repurchase_pv,hi_fun_amount,hi_fun_pv,mall_amount,mall_pv,category,pk_grade,
|
hi_fun_amount,hi_fun_pv,mall_amount,mall_pv, pk_center_code, category,pk_grade,
|
||||||
min_achieve,round,second,store_level,expire_status
|
min_achieve, round, second, store_level, expire_status
|
||||||
from ${settleTableName}
|
from ${settleTableName}
|
||||||
where pay_status = 1
|
where pay_status = 1
|
||||||
start with pk_member = #{item}
|
start with pk_member = #{item}
|
||||||
|
@ -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_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)
|
b.rep_a_sum_pv,b.rep_b_sum_pv,b.round,b.second,b.min_achieve,b.expire_status)
|
||||||
</update>
|
</update>
|
||||||
|
|
||||||
<update id="dropCuMemberSettleTable">
|
<update id="dropCuMemberSettleTable">
|
||||||
drop table ${tableName}
|
drop table ${tableName}
|
||||||
</update>
|
</update>
|
||||||
|
@ -1380,13 +1382,14 @@
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="batchQuerySpecialCuMemberSettleParent" resultMap="CuMemberSettleExt">
|
<select id="batchQuerySpecialCuMemberSettleParent" resultMap="CuMemberSettleExt">
|
||||||
select a.*,(case when nvl(so.order_achieve,0)>0 then 0 else 1 end ) is_pay_reg from (
|
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>
|
||||||
left join (select pk_member,max(order_achieve) order_achieve from sa_order
|
) a
|
||||||
|
left join (select pk_member, max(order_achieve) order_achieve from sa_order
|
||||||
where del_flag = 0 and order_status = 1
|
where del_flag = 0 and order_status = 1
|
||||||
and order_type=24
|
and order_type = 24
|
||||||
group by pk_member) so
|
group by pk_member) so
|
||||||
on so.pk_member=a.pk_member
|
on so.pk_member = a.pk_member
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="batchQueryCuMemberSettleParentForSpecial" resultMap="CuMemberSettleExt">
|
<select id="batchQueryCuMemberSettleParentForSpecial" resultMap="CuMemberSettleExt">
|
||||||
|
@ -2304,4 +2307,30 @@
|
||||||
order by t.pk_member
|
order by t.pk_member
|
||||||
</select>
|
</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>
|
</mapper>
|
||||||
|
|
|
@ -305,8 +305,8 @@
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="queryCuMemberAssessByMember" resultMap="CuMemberAssess">
|
<select id="queryCuMemberAssessByMember" resultMap="CuMemberAssess">
|
||||||
select pk_member,assess_status from ${tableName}
|
select pk_member, assess_status from ${tableName}
|
||||||
where period= #{period} and assess_type=#{assessType} and assess_status in(0,1)
|
where period= #{period} and assess_type = #{assessType} and assess_status in (0, 1)
|
||||||
and pk_member in
|
and pk_member in
|
||||||
<foreach collection="cuMemberSettleExtList" item="item" open="(" close=")" separator=",">
|
<foreach collection="cuMemberSettleExtList" item="item" open="(" close=")" separator=",">
|
||||||
#{item.pkMember}
|
#{item.pkMember}
|
||||||
|
|
|
@ -2,7 +2,6 @@ package com.hzs.system.config.service.impl;
|
||||||
|
|
||||||
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
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.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import com.hzs.common.core.constant.CacheConstants;
|
import com.hzs.common.core.constant.CacheConstants;
|
||||||
import com.hzs.common.core.domain.R;
|
import com.hzs.common.core.domain.R;
|
||||||
|
@ -34,12 +33,8 @@ import java.util.List;
|
||||||
@Service
|
@Service
|
||||||
public class BdAwardsServiceImpl extends ServiceImpl<BdAwardsMapper, BdAwards> implements IBdAwardsService {
|
public class BdAwardsServiceImpl extends ServiceImpl<BdAwardsMapper, BdAwards> implements IBdAwardsService {
|
||||||
|
|
||||||
private RedisService redisService;
|
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
public void setRedisService(RedisService redisService) {
|
private RedisService redisService;
|
||||||
this.redisService = redisService;
|
|
||||||
}
|
|
||||||
|
|
||||||
@DubboReference
|
@DubboReference
|
||||||
ITransactionServiceApi iTransactionServiceApi;
|
ITransactionServiceApi iTransactionServiceApi;
|
||||||
|
@ -82,7 +77,9 @@ public class BdAwardsServiceImpl extends ServiceImpl<BdAwardsMapper, BdAwards> i
|
||||||
@Override
|
@Override
|
||||||
public List<BdAwards> getBdAwards(Integer pkCountry, Integer enableState) {
|
public List<BdAwards> getBdAwards(Integer pkCountry, Integer enableState) {
|
||||||
LambdaQueryWrapper<BdAwards> queryWrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<BdAwards> queryWrapper = new LambdaQueryWrapper<>();
|
||||||
queryWrapper.eq(BdAwards::getPkCountry, pkCountry);
|
if (null != pkCountry) {
|
||||||
|
queryWrapper.eq(BdAwards::getPkCountry, pkCountry);
|
||||||
|
}
|
||||||
if (null != enableState) {
|
if (null != enableState) {
|
||||||
queryWrapper.eq(BdAwards::getEnableState, enableState);
|
queryWrapper.eq(BdAwards::getEnableState, enableState);
|
||||||
}
|
}
|
||||||
|
@ -202,11 +199,7 @@ public class BdAwardsServiceImpl extends ServiceImpl<BdAwardsMapper, BdAwards> i
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<BdAwards> queryAwards() {
|
public List<BdAwards> queryAwards() {
|
||||||
QueryWrapper<BdAwards> queryWrapper = new QueryWrapper<>();
|
LambdaQueryWrapper<BdAwards> queryWrapper = new LambdaQueryWrapper<>();
|
||||||
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);
|
|
||||||
return baseMapper.selectList(queryWrapper);
|
return baseMapper.selectList(queryWrapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -4,56 +4,43 @@
|
||||||
|
|
||||||
<!-- 通用查询映射结果 -->
|
<!-- 通用查询映射结果 -->
|
||||||
<resultMap id="BaseResultMap" type="com.hzs.common.domain.system.config.BdAwards">
|
<resultMap id="BaseResultMap" type="com.hzs.common.domain.system.config.BdAwards">
|
||||||
<id column="PK_ID" property="pkId" />
|
<id column="PK_ID" property="pkId"/>
|
||||||
<result column="DEL_FLAG" property="delFlag" />
|
<result column="DEL_FLAG" property="delFlag"/>
|
||||||
<result column="PK_COUNTRY" property="pkCountry" />
|
<result column="PK_COUNTRY" property="pkCountry"/>
|
||||||
<result column="PK_CREATOR" property="pkCreator" />
|
<result column="PK_CREATOR" property="pkCreator"/>
|
||||||
<result column="CREATION_TIME" property="creationTime" />
|
<result column="CREATION_TIME" property="creationTime"/>
|
||||||
<result column="PK_MODIFIED" property="pkModified" />
|
<result column="PK_MODIFIED" property="pkModified"/>
|
||||||
<result column="MODIFIED_TIME" property="modifiedTime" />
|
<result column="MODIFIED_TIME" property="modifiedTime"/>
|
||||||
<result column="IMAGE" property="image" />
|
<result column="IMAGE" property="image"/>
|
||||||
<result column="AWARDS_NAME" property="awardsName" />
|
<result column="AWARDS_NAME" property="awardsName"/>
|
||||||
<result column="PK_TRANSACTION" property="pkTransaction" />
|
<result column="PK_TRANSACTION" property="pkTransaction"/>
|
||||||
<result column="AWARDS_VALUE" property="awardsValue" />
|
<result column="AWARDS_VALUE" property="awardsValue"/>
|
||||||
<result column="COMMUNITY_CHECK" property="communityCheck" />
|
<result column="COMMUNITY_CHECK" property="communityCheck"/>
|
||||||
<result column="ALGEBRA" property="algebra" />
|
<result column="ALGEBRA" property="algebra"/>
|
||||||
<result column="PURCHASE_CHECK" property="purchaseCheck" />
|
<result column="PURCHASE_CHECK" property="purchaseCheck"/>
|
||||||
<result column="SHARE_CHECK" property="shareCheck" />
|
<result column="SHARE_CHECK" property="shareCheck"/>
|
||||||
<result column="GLOBAL_INTEGRAL" property="globalIntegral" />
|
<result column="GLOBAL_INTEGRAL" property="globalIntegral"/>
|
||||||
<result column="CAR_AWARD_POINTS" property="carAwardPoints" />
|
<result column="CAR_AWARD_POINTS" property="carAwardPoints"/>
|
||||||
<result column="ENABLE_STATE" property="enableState"/>
|
<result column="ENABLE_STATE" property="enableState"/>
|
||||||
<result column="TEXT_CONTENT" property="textContent"/>
|
<result column="TEXT_CONTENT" property="textContent"/>
|
||||||
|
<result column="SMALL_ASSESS" property="smallAssess"/>
|
||||||
</resultMap>
|
</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"
|
<select id="checkGradeAwards" parameterType="java.lang.Integer" resultType="java.lang.Integer">
|
||||||
parameterType="java.lang.Integer"
|
select count(1) from CU_MEMBER
|
||||||
resultType="java.lang.Integer">
|
|
||||||
select count(1) from CU_MEMBER
|
|
||||||
WHERE
|
WHERE
|
||||||
DEL_FLAG = 0 and (
|
DEL_FLAG = 0 and (
|
||||||
<if test="pkRegisterGrade != null ">
|
<if test="pkRegisterGrade != null ">
|
||||||
PK_REGISTER_GRADE = #{pkRegisterGrade}
|
PK_REGISTER_GRADE = #{pkRegisterGrade}
|
||||||
</if>
|
</if>
|
||||||
<if test="pkSettleGrade != null ">
|
<if test="pkSettleGrade != null ">
|
||||||
or PK_SETTLE_GRADE = #{pkSettleGrade}
|
or PK_SETTLE_GRADE = #{pkSettleGrade}
|
||||||
</if>
|
</if>
|
||||||
<if test="pkAwards != null ">
|
<if test="pkAwards != null ">
|
||||||
PK_AWARDS = #{pkAwards}
|
PK_AWARDS = #{pkAwards}
|
||||||
</if>
|
</if>
|
||||||
)
|
)
|
||||||
|
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -11,9 +11,7 @@ import lombok.*;
|
||||||
import lombok.experimental.Accessors;
|
import lombok.experimental.Accessors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
|
||||||
* 会员奖金-辅导收益明细表
|
* 会员奖金-辅导收益明细表
|
||||||
* </p>
|
|
||||||
*
|
*
|
||||||
* @author hzs
|
* @author hzs
|
||||||
* @since 2022-11-15
|
* @since 2022-11-15
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
package com.hzs.common.domain.member.ext;
|
package com.hzs.common.domain.member.ext;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.annotation.TableField;
|
|
||||||
import com.hzs.common.domain.member.achieve.CuMemberTree;
|
import com.hzs.common.domain.member.achieve.CuMemberTree;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
|
@ -437,4 +436,9 @@ public class CuMemberSettleExt extends CuMemberTree {
|
||||||
*/
|
*/
|
||||||
private BigDecimal afterGrantIncome;
|
private BigDecimal afterGrantIncome;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 奖衔值
|
||||||
|
*/
|
||||||
|
private Integer awardsValue;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,9 +14,7 @@ import org.apache.ibatis.type.JdbcType;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
|
||||||
* 奖衔配置类
|
* 奖衔配置类
|
||||||
* </p>
|
|
||||||
*
|
*
|
||||||
* @author zhangjing
|
* @author zhangjing
|
||||||
* @since 2022-09-08
|
* @since 2022-09-08
|
||||||
|
@ -170,4 +168,10 @@ public class BdAwards extends BaseEntity {
|
||||||
@TableField("TEXT_CONTENT")
|
@TableField("TEXT_CONTENT")
|
||||||
private String textContent;
|
private String textContent;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 安置小区月度考核
|
||||||
|
*/
|
||||||
|
@TableField("SMALL_ASSESS")
|
||||||
|
private BigDecimal smallAssess;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue