## 首购领导奖新逻辑处理;

This commit is contained in:
cabbage 2025-04-18 17:11:33 +08:00
parent 87fb08edfb
commit 92379659a1
14 changed files with 375 additions and 170 deletions

View File

@ -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);
}

View File

@ -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);
/**
* 批量根据量奖信息查询会员结算表中的父级血缘数据
*

View File

@ -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;
}

View File

@ -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:会员IDvalue:拿几代
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:会员IDvalue:奖衔值
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;
}
}

View File

@ -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();

View File

@ -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()));

View File

@ -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);

View File

@ -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,
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 (
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, 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,12 +287,12 @@
<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,
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,store_level,expire_status
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, 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
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_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>
@ -1380,13 +1382,14 @@
</select>
<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
left join (select pk_member,max(order_achieve) order_achieve from sa_order
select a.*, (case when nvl(so.order_achieve,0)>0 then 0 else 1 end ) is_pay_reg from (
<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
and order_type = 24
group by pk_member) so
on so.pk_member=a.pk_member
on so.pk_member = a.pk_member
</select>
<select id="batchQueryCuMemberSettleParentForSpecial" resultMap="CuMemberSettleExt">
@ -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>

View File

@ -305,8 +305,8 @@
</select>
<select id="queryCuMemberAssessByMember" resultMap="CuMemberAssess">
select pk_member,assess_status from ${tableName}
where period= #{period} and assess_type=#{assessType} and assess_status in(0,1)
select pk_member, assess_status from ${tableName}
where period= #{period} and assess_type = #{assessType} and assess_status in (0, 1)
and pk_member in
<foreach collection="cuMemberSettleExtList" item="item" open="(" close=")" separator=",">
#{item.pkMember}

View File

@ -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);
}

View File

@ -4,42 +4,30 @@
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="com.hzs.common.domain.system.config.BdAwards">
<id column="PK_ID" property="pkId" />
<result column="DEL_FLAG" property="delFlag" />
<result column="PK_COUNTRY" property="pkCountry" />
<result column="PK_CREATOR" property="pkCreator" />
<result column="CREATION_TIME" property="creationTime" />
<result column="PK_MODIFIED" property="pkModified" />
<result column="MODIFIED_TIME" property="modifiedTime" />
<result column="IMAGE" property="image" />
<result column="AWARDS_NAME" property="awardsName" />
<result column="PK_TRANSACTION" property="pkTransaction" />
<result column="AWARDS_VALUE" property="awardsValue" />
<result column="COMMUNITY_CHECK" property="communityCheck" />
<result column="ALGEBRA" property="algebra" />
<result column="PURCHASE_CHECK" property="purchaseCheck" />
<result column="SHARE_CHECK" property="shareCheck" />
<result column="GLOBAL_INTEGRAL" property="globalIntegral" />
<result column="CAR_AWARD_POINTS" property="carAwardPoints" />
<id column="PK_ID" property="pkId"/>
<result column="DEL_FLAG" property="delFlag"/>
<result column="PK_COUNTRY" property="pkCountry"/>
<result column="PK_CREATOR" property="pkCreator"/>
<result column="CREATION_TIME" property="creationTime"/>
<result column="PK_MODIFIED" property="pkModified"/>
<result column="MODIFIED_TIME" property="modifiedTime"/>
<result column="IMAGE" property="image"/>
<result column="AWARDS_NAME" property="awardsName"/>
<result column="PK_TRANSACTION" property="pkTransaction"/>
<result column="AWARDS_VALUE" property="awardsValue"/>
<result column="COMMUNITY_CHECK" property="communityCheck"/>
<result column="ALGEBRA" property="algebra"/>
<result column="PURCHASE_CHECK" property="purchaseCheck"/>
<result column="SHARE_CHECK" property="shareCheck"/>
<result column="GLOBAL_INTEGRAL" property="globalIntegral"/>
<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>

View File

@ -11,9 +11,7 @@ import lombok.*;
import lombok.experimental.Accessors;
/**
* <p>
* 会员奖金-辅导收益明细表
* </p>
*
* @author hzs
* @since 2022-11-15

View File

@ -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;
}

View File

@ -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;
}