## 调整创建语句结构;
This commit is contained in:
parent
1ff34e7da2
commit
c26c7f59e7
|
@ -265,7 +265,7 @@ public interface CuMemberTreeMapper extends BaseMapper<CuMemberTree> {
|
||||||
List<CuMemberSettleExt> queryExemptCuMemberSettle(String tableName);
|
List<CuMemberSettleExt> queryExemptCuMemberSettle(String tableName);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询出符合下一等级足够业绩的会员
|
* 查询出符合下一奖衔足够业绩的会员
|
||||||
*
|
*
|
||||||
* @param settleTableName 结算表
|
* @param settleTableName 结算表
|
||||||
* @return: List<CuMemberSettleExt>
|
* @return: List<CuMemberSettleExt>
|
||||||
|
|
|
@ -173,7 +173,7 @@ public interface ICuMemberTreeService extends IService<CuMemberTree> {
|
||||||
List<CuMemberSettleExt> queryExemptCuMemberSettle(String tableName);
|
List<CuMemberSettleExt> queryExemptCuMemberSettle(String tableName);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询出符合下一等级足够业绩的会员
|
* 查询出符合下一奖衔足够业绩的会员
|
||||||
*
|
*
|
||||||
* @param settleTableName 结算表
|
* @param settleTableName 结算表
|
||||||
* @return: List<CuMemberSettleExt>
|
* @return: List<CuMemberSettleExt>
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package com.hzs.bonus.bonus.service.impl;
|
package com.hzs.bonus.bonus.service.impl;
|
||||||
|
|
||||||
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
|
import com.hzs.bonus.achieve.param.MemberAchieveParam;
|
||||||
import com.hzs.bonus.achieve.service.ICuMemberSettlePeriodService;
|
import com.hzs.bonus.achieve.service.ICuMemberSettlePeriodService;
|
||||||
import com.hzs.bonus.achieve.service.ICuMemberTreeService;
|
import com.hzs.bonus.achieve.service.ICuMemberTreeService;
|
||||||
import com.hzs.bonus.detail.service.ICuMemberAssessService;
|
import com.hzs.bonus.detail.service.ICuMemberAssessService;
|
||||||
|
@ -1072,6 +1073,49 @@ public abstract class BonusSettleHandle {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param orderExtList 订单列表
|
||||||
|
* @Description: 根据订单分类,分为首购、复购、真实,获取新增业绩
|
||||||
|
* @return: void
|
||||||
|
* @Author: sui q
|
||||||
|
* @Date: 2022/11/2 11:24
|
||||||
|
*/
|
||||||
|
public void assortSaOrder(Map<Long, MemberAchieveParam> cuMemberAchieveHashMap, List<SaOrderExt> orderExtList, BonusConfigDTO bonusConfigDTO, Boolean isFirst) {
|
||||||
|
// 注册+升级 首购
|
||||||
|
// 除(注册+升级)其他 复购
|
||||||
|
// 首购+复购 = 真实
|
||||||
|
for (SaOrderExt saOrderExt : orderExtList) {
|
||||||
|
MemberAchieveParam cuMemberAchieve;
|
||||||
|
if (cuMemberAchieveHashMap.containsKey(saOrderExt.getPkMember())) {
|
||||||
|
cuMemberAchieve = cuMemberAchieveHashMap.get(saOrderExt.getPkMember());
|
||||||
|
// 所有的都算真实业绩
|
||||||
|
} else {
|
||||||
|
cuMemberAchieve = MemberAchieveParam.builder()
|
||||||
|
.pkRate(saOrderExt.getPkRate())
|
||||||
|
.pkMember(saOrderExt.getPkMember())
|
||||||
|
.newAmount(BigDecimal.ZERO)
|
||||||
|
.newPv(BigDecimal.ZERO)
|
||||||
|
.repNewAmount(BigDecimal.ZERO)
|
||||||
|
.repNewPv(BigDecimal.ZERO)
|
||||||
|
.newRealAmount(BigDecimal.ZERO)
|
||||||
|
.newRealPv(BigDecimal.ZERO)
|
||||||
|
.build();
|
||||||
|
cuMemberAchieveHashMap.put(saOrderExt.getPkMember(), cuMemberAchieve);
|
||||||
|
}
|
||||||
|
if (isFirst) {
|
||||||
|
// 首购处理
|
||||||
|
cuMemberAchieve.setNewAmount(ComputeUtil.computeAdd(cuMemberAchieve.getNewAmount(), saOrderExt.getOrderAmount()));
|
||||||
|
cuMemberAchieve.setNewPv(ComputeUtil.computeAdd(cuMemberAchieve.getNewPv(), saOrderExt.getOrderAchieve()));
|
||||||
|
} else {
|
||||||
|
// 非首购处理
|
||||||
|
cuMemberAchieve.setRepNewAmount(ComputeUtil.computeAdd(cuMemberAchieve.getRepNewAmount(), saOrderExt.getOrderAmount()));
|
||||||
|
cuMemberAchieve.setRepNewPv(ComputeUtil.computeAdd(cuMemberAchieve.getRepNewPv(), saOrderExt.getOrderAchieve()));
|
||||||
|
}
|
||||||
|
cuMemberAchieve.setNewRealAmount(ComputeUtil.computeAdd(cuMemberAchieve.getNewRealAmount(), saOrderExt.getOrderAmount()));
|
||||||
|
cuMemberAchieve.setNewRealPv(ComputeUtil.computeAdd(cuMemberAchieve.getNewRealPv(), saOrderExt.getOrderAchieve()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 处理汇率
|
* 处理汇率
|
||||||
*
|
*
|
||||||
|
|
|
@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil;
|
||||||
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
import cn.hutool.json.JSONUtil;
|
import cn.hutool.json.JSONUtil;
|
||||||
import com.hzs.activity.pick.IAcPickServiceApi;
|
import com.hzs.activity.pick.IAcPickServiceApi;
|
||||||
|
import com.hzs.bonus.achieve.param.MemberAchieveParam;
|
||||||
import com.hzs.bonus.achieve.service.ICuMemberAchieveService;
|
import com.hzs.bonus.achieve.service.ICuMemberAchieveService;
|
||||||
import com.hzs.bonus.achieve.service.ICuMemberRangeService;
|
import com.hzs.bonus.achieve.service.ICuMemberRangeService;
|
||||||
import com.hzs.bonus.achieve.service.ICuMemberSettlePeriodService;
|
import com.hzs.bonus.achieve.service.ICuMemberSettlePeriodService;
|
||||||
|
@ -416,10 +417,6 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
||||||
//********************************* 更新当天最新的业绩*************************/
|
//********************************* 更新当天最新的业绩*************************/
|
||||||
// 获取所有国家的奖金项 key = 国家 + 奖金项的值
|
// 获取所有国家的奖金项 key = 国家 + 奖金项的值
|
||||||
BonusConfigDTO bonusConfigDTO = bonusItemsServiceApi.queryBonusConfigDTO().getData();
|
BonusConfigDTO bonusConfigDTO = bonusItemsServiceApi.queryBonusConfigDTO().getData();
|
||||||
// Map<Long, MemberAchieveParam> cuMemberAchieveHashMap = new HashMap<>();
|
|
||||||
// bonusSettlePurchaseHandle.assortSaOrder(cuMemberAchieveHashMap, firPurchaseOrderList, bonusConfigDTO, Boolean.TRUE);
|
|
||||||
// bonusSettlePurchaseHandle.assortSaOrder(cuMemberAchieveHashMap, repurchaseOrderList, bonusConfigDTO, Boolean.FALSE);
|
|
||||||
// cuMemberTreeService.updateCuMemberSettle(cuMemberAchieveHashMap, currentSettleTableName);
|
|
||||||
|
|
||||||
//*********************************计算奖衔 更新奖衔*********************************/
|
//*********************************计算奖衔 更新奖衔*********************************/
|
||||||
// 开始计算奖衔 计算奖衔 更新奖衔(根据最新业绩查询变动且业绩满足下一等级,根据等级判断是否满足考核,安置考核或血缘考核)
|
// 开始计算奖衔 计算奖衔 更新奖衔(根据最新业绩查询变动且业绩满足下一等级,根据等级判断是否满足考核,安置考核或血缘考核)
|
||||||
|
@ -427,10 +424,15 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
||||||
// 获取到奖衔配置
|
// 获取到奖衔配置
|
||||||
// a)更新会员表
|
// a)更新会员表
|
||||||
// b)更新结算网体表 (月表、日表)
|
// b)更新结算网体表 (月表、日表)
|
||||||
|
|
||||||
|
Map<Long, MemberAchieveParam> cuMemberAchieveHashMap = new HashMap<>();
|
||||||
|
bonusSettlePurchaseHandle.assortSaOrder(cuMemberAchieveHashMap, firPurchaseOrderList, bonusConfigDTO, Boolean.TRUE);
|
||||||
|
bonusSettlePurchaseHandle.assortSaOrder(cuMemberAchieveHashMap, repurchaseOrderList, bonusConfigDTO, Boolean.FALSE);
|
||||||
|
cuMemberTreeService.updateCuMemberSettle(cuMemberAchieveHashMap, currentSettleTableName);
|
||||||
// c)增加奖衔记录表
|
// c)增加奖衔记录表
|
||||||
// cuMemberAwardsService.calculateCuMemberAwards(settleDate, awardsMap, currentSettleTableName);
|
cuMemberAwardsService.calculateCuMemberAwards(settleDate, awardsMap, currentSettleTableName);
|
||||||
// 计算完奖衔回退业绩,最终根据新增进行回写
|
// 计算完奖衔回退业绩,最终根据新增进行回写
|
||||||
// cuMemberTreeService.updateCuMemberBackSettle(cuMemberAchieveHashMap, currentSettleTableName);
|
cuMemberTreeService.updateCuMemberBackSettle(cuMemberAchieveHashMap, currentSettleTableName);
|
||||||
|
|
||||||
//********************************重新考核*********************************/
|
//********************************重新考核*********************************/
|
||||||
// TODO new 乐学没有分红、复购考核,这个位置需要去掉
|
// TODO new 乐学没有分红、复购考核,这个位置需要去掉
|
||||||
|
@ -452,19 +454,20 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
||||||
// 计算复购券
|
// 计算复购券
|
||||||
calculateRepurchaseCoupons(DateUtils.parseDate(settleDate), firPurchaseOrderList, period, bonusConfigDTO, cuMemberBonusMap,
|
calculateRepurchaseCoupons(DateUtils.parseDate(settleDate), firPurchaseOrderList, period, bonusConfigDTO, cuMemberBonusMap,
|
||||||
recordDetailVO, cuMemberSettleExtMap);
|
recordDetailVO, cuMemberSettleExtMap);
|
||||||
|
|
||||||
// 计算乐享订单奖金,按照订单进行日结
|
// 计算乐享订单奖金,按照订单进行日结
|
||||||
// 增加判断是否相同月,相同月的话昨天的考核结果更新到今天
|
// 增加判断是否相同月,相同月的话昨天的考核结果更新到今天
|
||||||
Boolean isSameMonth = DateUtils.getMonth(settleDate).equals(DateUtils.getMonth(yesterday));
|
Boolean isSameMonth = DateUtils.getMonth(settleDate).equals(DateUtils.getMonth(yesterday));
|
||||||
// 乐享奖金
|
// 乐享奖金
|
||||||
bonusSettleRangeHandle.calculateLeEnjoyBonusBySaOrder(cuMemberBonusMap, bonusConfigDTO, recordDetailVO,
|
bonusSettleRangeHandle.calculateLeEnjoyBonusBySaOrder(cuMemberBonusMap, bonusConfigDTO, recordDetailVO,
|
||||||
period, yesterdayPeriod, isSameMonth);
|
period, yesterdayPeriod, isSameMonth);
|
||||||
// 计算新零售团队奖金
|
// // 计算新零售团队奖金
|
||||||
// bonusSettleRangeHandle.calculateRetailBonusBySaOrder(settleDate, cuMemberBonusMap, bonusConfigDTO, recordDetailVO,
|
// bonusSettleRangeHandle.calculateRetailBonusBySaOrder(settleDate, cuMemberBonusMap, bonusConfigDTO, recordDetailVO,
|
||||||
// period, yesterdayPeriod, retailOrderList, isSameMonth);
|
// period, yesterdayPeriod, retailOrderList, isSameMonth);
|
||||||
// 验证是否月奖,验证是否是结算月底那一天,月底那一天计算云代,判断是否为月底
|
|
||||||
|
|
||||||
|
// 验证是否月奖,验证是否是结算月底那一天,月底那一天计算云代,判断是否为月底
|
||||||
//*********************************计算云代奖金、 复购券均分收益************************/
|
//*********************************计算云代奖金、 复购券均分收益************************/
|
||||||
// TODO new 云代、复购券均分、分红,暂时不处理
|
// // TODO new 云代、复购券均分、分红,暂时不处理
|
||||||
// if (settleDate.endsWith("10")) {
|
// if (settleDate.endsWith("10")) {
|
||||||
// // 计算云代奖金、复购券均分
|
// // 计算云代奖金、复购券均分
|
||||||
// calculateCloudAgentOrder(settleDate, bonusConfigDTO, period, recordDetailVO, cuMemberBonusMap);
|
// calculateCloudAgentOrder(settleDate, bonusConfigDTO, period, recordDetailVO, cuMemberBonusMap);
|
||||||
|
@ -473,17 +476,18 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
||||||
// calculateShareBonus(settleDate, bonusConfigDTO, period, recordDetailVO, cuMemberBonusMap, cuAwardsControlMap);
|
// calculateShareBonus(settleDate, bonusConfigDTO, period, recordDetailVO, cuMemberBonusMap, cuAwardsControlMap);
|
||||||
// }
|
// }
|
||||||
|
|
||||||
// // 计算店铺奖金
|
// // 计算店铺奖金
|
||||||
// if(settleDate.endsWith("10")){
|
// if (settleDate.endsWith("10")) {
|
||||||
// calculateStoreOrder(settleDate, bonusConfigDTO, period, recordDetailVO, cuMemberBonusMap);
|
// calculateStoreOrder(settleDate, bonusConfigDTO, period, recordDetailVO, cuMemberBonusMap);
|
||||||
// }
|
// }
|
||||||
// // 计算实际分红奖金
|
// // 计算实际分红奖金
|
||||||
// if (settleDate.endsWith("10")) {
|
// if (settleDate.endsWith("10")) {
|
||||||
// calculateShareBonus(settleDate, bonusConfigDTO, period, recordDetailVO, cuMemberBonusMap);
|
// calculateShareBonus(settleDate, bonusConfigDTO, period, recordDetailVO, cuMemberBonusMap);
|
||||||
// }
|
// }
|
||||||
// 计算全球积分、车奖积分
|
// // 计算全球积分、车奖积分
|
||||||
// 环球积分和车奖积分的规则。有荣衔,复购考核通过的10代不压缩,以推荐+拓展+领导+分红为合计基数,获取对应比例,比例根据参数配置
|
// // 环球积分和车奖积分的规则。有荣衔,复购考核通过的10代不压缩,以推荐+拓展+领导+分红为合计基数,获取对应比例,比例根据参数配置
|
||||||
// calculateGlobalCarBonus(cuMemberSettleExtMap, currentSettleTableName, settleDate, bonusConfigDTO, period, recordDetailVO, cuMemberBonusMap);
|
// calculateGlobalCarBonus(cuMemberSettleExtMap, currentSettleTableName, settleDate, bonusConfigDTO, period, recordDetailVO, cuMemberBonusMap);
|
||||||
|
|
||||||
// 保存当日计算的奖金
|
// 保存当日计算的奖金
|
||||||
insertCuMemberBonus(settleDate, period, cuMemberBonusMap, recordDetailVO);
|
insertCuMemberBonus(settleDate, period, cuMemberBonusMap, recordDetailVO);
|
||||||
// 处理血缘业绩,统计伞下直推
|
// 处理血缘业绩,统计伞下直推
|
||||||
|
@ -493,6 +497,7 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
||||||
// 处理网体,更新网体新增 轮次最小值 cuMemberSettleExtMap
|
// 处理网体,更新网体新增 轮次最小值 cuMemberSettleExtMap
|
||||||
cuMemberTreeService.updateCuMemberSettle(currentSettleTableName, cuMemberSettleExtMap);
|
cuMemberTreeService.updateCuMemberSettle(currentSettleTableName, cuMemberSettleExtMap);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 每日进行甩网业绩,按照条件,降结算好的业绩甩到想应的会员那边
|
// 每日进行甩网业绩,按照条件,降结算好的业绩甩到想应的会员那边
|
||||||
List<CuMemberAchieveExt> retMemberAchieveExtList = execNetAchieve(period, settleDate, currentSettleTableName);
|
List<CuMemberAchieveExt> retMemberAchieveExtList = execNetAchieve(period, settleDate, currentSettleTableName);
|
||||||
// 处理甩网数据
|
// 处理甩网数据
|
||||||
|
@ -509,21 +514,25 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
||||||
// 当月第一天
|
// 当月第一天
|
||||||
Integer currentMonthFirstPeriod = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(DateUtils.currentMonthFirstDateStr(DateUtils.parseStringToDate(settleDate))).getPkId();
|
Integer currentMonthFirstPeriod = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(DateUtils.currentMonthFirstDateStr(DateUtils.parseStringToDate(settleDate))).getPkId();
|
||||||
cuMemberAwardsService.calculateCuMemberAwardsEveryMonth(currentMonthFirstPeriod, yesterdayPeriod, period, settleDate, beforeMonthTableName, awardsMap);
|
cuMemberAwardsService.calculateCuMemberAwardsEveryMonth(currentMonthFirstPeriod, yesterdayPeriod, period, settleDate, beforeMonthTableName, awardsMap);
|
||||||
|
|
||||||
// 计算完当日奖金后,根据业绩计算下月奖衔
|
// 计算完当日奖金后,根据业绩计算下月奖衔
|
||||||
String afterDate = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, currentDate);
|
String afterDate = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, currentDate);
|
||||||
if (afterDate.endsWith("01")) {
|
if (afterDate.endsWith("01")) {
|
||||||
|
// TODO new 不是月奖衔,每月初不更新(月级差奖衔需要去掉)
|
||||||
// String rangeTableName = TableNameConstants.CU_MEMBER_RANGE + period;
|
// String rangeTableName = TableNameConstants.CU_MEMBER_RANGE + period;
|
||||||
// // 月第一天日期
|
// // 月第一天日期
|
||||||
// String monthFirstDate = DateUtils.currentMonthFirstDateStr(DateUtils.parseStringToDate(settleDate));
|
// String monthFirstDate = DateUtils.currentMonthFirstDateStr(DateUtils.parseStringToDate(settleDate));
|
||||||
// // 月第一天期数
|
// // 月第一天期数
|
||||||
// Integer startPeriod = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(monthFirstDate).getPkId();
|
// Integer startPeriod = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(monthFirstDate).getPkId();
|
||||||
// TODO new 不是月奖衔,每月初不更新
|
|
||||||
// // 更新奖衔,根据新结算的奖衔
|
// // 更新奖衔,根据新结算的奖衔
|
||||||
// cuMemberTreeService.updateCuMemberAwardsBySettle(currentSettleTableName, rangeTableName, startPeriod, period);
|
// cuMemberTreeService.updateCuMemberAwardsBySettle(currentSettleTableName, rangeTableName, startPeriod, period);
|
||||||
|
|
||||||
|
// TODO new 现在没有月考核,是不是可以去掉?
|
||||||
// 结算每月月末那一天,都是先删除,在新增,重新考核
|
// 结算每月月末那一天,都是先删除,在新增,重新考核
|
||||||
cuMemberTreeService.initCuMemberAssessData(settleDate);
|
cuMemberTreeService.initCuMemberAssessData(settleDate);
|
||||||
// 更新奖衔考核结果
|
// 更新奖衔考核结果
|
||||||
cuMemberAwardsService.updateCuMemberAwardsExamine(currentDate, period);
|
cuMemberAwardsService.updateCuMemberAwardsExamine(currentDate, period);
|
||||||
|
|
||||||
// 生成月表(cu_member_month)
|
// 生成月表(cu_member_month)
|
||||||
String monthTableName = TableNameConstants.CU_MEMBER_MONTH + DateUtils.getMonth(afterDate);
|
String monthTableName = TableNameConstants.CU_MEMBER_MONTH + DateUtils.getMonth(afterDate);
|
||||||
Integer number = cuMemberTreeService.queryExistOracleTable(monthTableName);
|
Integer number = cuMemberTreeService.queryExistOracleTable(monthTableName);
|
||||||
|
|
|
@ -9,9 +9,7 @@ import java.math.BigDecimal;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
|
||||||
* 会员信息-奖衔升级记录 Mapper 接口
|
* 会员信息-奖衔升级记录 Mapper 接口
|
||||||
* </p>
|
|
||||||
*
|
*
|
||||||
* @author hzs
|
* @author hzs
|
||||||
* @since 2022-08-31
|
* @since 2022-08-31
|
||||||
|
@ -29,39 +27,43 @@ public interface CuMemberAwardsMapper extends BaseMapper<CuMemberAwards> {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 批量更新会员奖衔记录,此方法用于奖金结算,批量更新为删除状态,留存奖衔降级记录
|
* 批量更新会员奖衔记录,此方法用于奖金结算,批量更新为删除状态,留存奖衔降级记录
|
||||||
|
*
|
||||||
* @param cuMemberAwardsList 更新的人
|
* @param cuMemberAwardsList 更新的人
|
||||||
* @param period 期间
|
* @param period 期间
|
||||||
* @return: Integer
|
* @return: Integer
|
||||||
* @Author: sui q
|
* @Author: sui q
|
||||||
* @Date: 2022/11/5 16:04
|
* @Date: 2022/11/5 16:04
|
||||||
*/
|
*/
|
||||||
Integer updateBatchCuMemberAwards(@Param("cuMemberAwardsList") List<CuMemberAwards> cuMemberAwardsList, @Param("period") Integer period);
|
Integer updateBatchCuMemberAwards(@Param("cuMemberAwardsList") List<CuMemberAwards> cuMemberAwardsList, @Param("period") Integer period);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询会员最后一条奖衔升级记录
|
* 查询会员最后一条奖衔升级记录
|
||||||
|
*
|
||||||
* @param cuMemberAwardsList 奖衔升级记录
|
* @param cuMemberAwardsList 奖衔升级记录
|
||||||
* @return: List<CuMemberAwards>
|
* @return: List<CuMemberAwards>
|
||||||
* @Author: sui q
|
* @Author: sui q
|
||||||
* @Date: 2022/11/5 15:28
|
* @Date: 2022/11/5 15:28
|
||||||
*/
|
*/
|
||||||
List<CuMemberAwards> queryLastCuMemberAwards(@Param("cuMemberAwardsList") List<?> cuMemberAwardsList);
|
List<CuMemberAwards> queryLastCuMemberAwards(@Param("cuMemberAwardsList") List<?> cuMemberAwardsList);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 删除自动升级的奖衔升级记录
|
* 删除自动升级的奖衔升级记录
|
||||||
|
*
|
||||||
* @param period 期间
|
* @param period 期间
|
||||||
* @return: Integer
|
* @return: Integer
|
||||||
* @Author: sui q
|
* @Author: sui q
|
||||||
* @Date: 2023/2/23 11:15
|
* @Date: 2023/2/23 11:15
|
||||||
*/
|
*/
|
||||||
Integer deleteCuMemberAwards(@Param("period")Integer period);
|
Integer deleteCuMemberAwards(@Param("period") Integer period);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 批量插入奖衔记录
|
* 批量插入奖衔记录
|
||||||
|
*
|
||||||
* @param cuMemberAwardsList 需要插入的奖衔列表
|
* @param cuMemberAwardsList 需要插入的奖衔列表
|
||||||
* @return: Integer
|
* @return: Integer
|
||||||
* @Author: sui q
|
* @Author: sui q
|
||||||
* @Date: 2022/11/5 16:55
|
* @Date: 2022/11/5 16:55
|
||||||
*/
|
*/
|
||||||
Integer saveBatchCuMemberAwards(@Param("cuMemberAwardsList") List<CuMemberAwards> cuMemberAwardsList);
|
Integer saveBatchCuMemberAwards(@Param("cuMemberAwardsList") List<CuMemberAwards> cuMemberAwardsList);
|
||||||
|
|
||||||
void deleteCuMemberSettleAwards(@Param("period") Integer period);
|
void deleteCuMemberSettleAwards(@Param("period") Integer period);
|
||||||
|
@ -107,5 +109,5 @@ public interface CuMemberAwardsMapper extends BaseMapper<CuMemberAwards> {
|
||||||
* @param: null null
|
* @param: null null
|
||||||
**/
|
**/
|
||||||
void updateCuMemberAwardsExamine(@Param("assessTableName") String assessTableName, @Param("awardPeriod") Integer awardPeriod,
|
void updateCuMemberAwardsExamine(@Param("assessTableName") String assessTableName, @Param("awardPeriod") Integer awardPeriod,
|
||||||
@Param("assessPeriod") Integer assessPeriod);
|
@Param("assessPeriod") Integer assessPeriod);
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,16 +3,13 @@ package com.hzs.bonus.detail.service;
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
import com.hzs.common.domain.member.detail.CuMemberAwards;
|
import com.hzs.common.domain.member.detail.CuMemberAwards;
|
||||||
import com.hzs.common.domain.system.config.BdAwards;
|
import com.hzs.common.domain.system.config.BdAwards;
|
||||||
import org.apache.ibatis.annotations.Param;
|
|
||||||
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
|
||||||
* 会员信息-奖衔升级记录 服务类
|
* 会员信息-奖衔升级记录 服务类
|
||||||
* </p>
|
|
||||||
*
|
*
|
||||||
* @author hzs
|
* @author hzs
|
||||||
* @since 2022-08-31
|
* @since 2022-08-31
|
||||||
|
@ -21,18 +18,20 @@ public interface ICuMemberAwardsService extends IService<CuMemberAwards> {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 重新计算会员的奖衔,根据累计结束后的业绩
|
* 重新计算会员的奖衔,根据累计结束后的业绩
|
||||||
* @param settleDate 结算日
|
*
|
||||||
|
* @param settleDate 结算日
|
||||||
* @param countryAwardsMap 国家奖衔配置
|
* @param countryAwardsMap 国家奖衔配置
|
||||||
* @param settleTableName 结算表
|
* @param settleTableName 结算表
|
||||||
* @return: void
|
* @return: void
|
||||||
* @Author: sui q
|
* @Author: sui q
|
||||||
* @Date: 2022/11/4 17:35
|
* @Date: 2022/11/4 17:35
|
||||||
*/
|
*/
|
||||||
void calculateCuMemberAwards(String settleDate, Map<String, BdAwards> countryAwardsMap, String settleTableName);
|
void calculateCuMemberAwards(String settleDate, Map<String, BdAwards> countryAwardsMap, String settleTableName);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 回退极差奖衔,每日重新结算,先把奖衔回退到前一天
|
* 回退极差奖衔,每日重新结算,先把奖衔回退到前一天
|
||||||
* @param period 结算期间
|
*
|
||||||
|
* @param period 结算期间
|
||||||
* @param rangeTableName 结算表
|
* @param rangeTableName 结算表
|
||||||
* @return: void
|
* @return: void
|
||||||
* @Author: sui q
|
* @Author: sui q
|
||||||
|
@ -42,6 +41,7 @@ public interface ICuMemberAwardsService extends IService<CuMemberAwards> {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 批量插入奖衔记录
|
* 批量插入奖衔记录
|
||||||
|
*
|
||||||
* @param cuMemberAwardsList 需要插入的奖衔列表
|
* @param cuMemberAwardsList 需要插入的奖衔列表
|
||||||
* @return: Integer
|
* @return: Integer
|
||||||
* @Author: sui q
|
* @Author: sui q
|
||||||
|
@ -51,13 +51,14 @@ public interface ICuMemberAwardsService extends IService<CuMemberAwards> {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 删除奖衔升级记录
|
* 删除奖衔升级记录
|
||||||
* @param pkOrder 订单
|
*
|
||||||
* @param pkApprove 审核人
|
* @param pkOrder 订单
|
||||||
|
* @param pkApprove 审核人
|
||||||
* @param currentDateTime 当前时间
|
* @param currentDateTime 当前时间
|
||||||
* @return: void
|
* @return: void
|
||||||
* @Author: sui q
|
* @Author: sui q
|
||||||
* @Date: 2023/3/30 9:21
|
* @Date: 2023/3/30 9:21
|
||||||
*/
|
*/
|
||||||
void deleteCuMemberAwards(Long pkOrder, Long pkApprove, Date currentDateTime);
|
void deleteCuMemberAwards(Long pkOrder, Long pkApprove, Date currentDateTime);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
package com.hzs.bonus.detail.service.impl;
|
package com.hzs.bonus.detail.service.impl;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import com.hzs.bonus.achieve.service.ICuMemberSettlePeriodService;
|
import com.hzs.bonus.achieve.service.ICuMemberSettlePeriodService;
|
||||||
import com.hzs.bonus.achieve.service.ICuMemberTreeService;
|
import com.hzs.bonus.achieve.service.ICuMemberTreeService;
|
||||||
|
@ -24,9 +25,7 @@ import java.time.temporal.ChronoUnit;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
|
||||||
* 会员信息-奖衔升级记录 服务实现类
|
* 会员信息-奖衔升级记录 服务实现类
|
||||||
* </p>
|
|
||||||
*
|
*
|
||||||
* @author hzs
|
* @author hzs
|
||||||
* @since 2022-08-31
|
* @since 2022-08-31
|
||||||
|
@ -34,43 +33,33 @@ import java.util.*;
|
||||||
@Service
|
@Service
|
||||||
public class CuMemberAwardsServiceImpl extends ServiceImpl<CuMemberAwardsMapper, CuMemberAwards> implements ICuMemberAwardsService {
|
public class CuMemberAwardsServiceImpl extends ServiceImpl<CuMemberAwardsMapper, CuMemberAwards> implements ICuMemberAwardsService {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
private ICuMemberTreeService cuMemberTreeService;
|
private ICuMemberTreeService cuMemberTreeService;
|
||||||
|
@Autowired
|
||||||
private ICuMemberService cuMemberService;
|
private ICuMemberService cuMemberService;
|
||||||
|
@Autowired
|
||||||
private ICuMemberSettlePeriodService cuMemberSettlePeriodService;
|
private ICuMemberSettlePeriodService cuMemberSettlePeriodService;
|
||||||
|
|
||||||
@Autowired
|
|
||||||
public void setCuMemberSettlePeriodService(ICuMemberSettlePeriodService cuMemberSettlePeriodService) {
|
|
||||||
this.cuMemberSettlePeriodService = cuMemberSettlePeriodService;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
public void setCuMemberService(ICuMemberService cuMemberService) {
|
|
||||||
this.cuMemberService = cuMemberService;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
public void setCuMemberTreeService(ICuMemberTreeService cuMemberTreeService) {
|
|
||||||
this.cuMemberTreeService = cuMemberTreeService;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void calculateCuMemberAwards(String setDate, Map<String, BdAwards> countryAwardsMap, String settleTableName) {
|
public void calculateCuMemberAwards(String setDate, Map<String, BdAwards> countryAwardsMap, String settleTableName) {
|
||||||
// 查询结算日当天奖衔发生过变动的会员,本期
|
// 查询结算日当天奖衔发生过变动的会员,本期
|
||||||
Date settleDate = DateUtils.parseStringToDate(setDate);
|
Date settleDate = DateUtils.parseStringToDate(setDate);
|
||||||
Integer period = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(setDate).getPkId();
|
Integer period = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(setDate).getPkId();
|
||||||
//删除当天奖衔升级记录,自动升级的
|
|
||||||
// 更新奖衔,回退奖衔
|
// 某一期的会员奖衔
|
||||||
List<CuMemberAwards> cuMemberAwards = queryCuMemberAwardsByPeriod(period);
|
List<CuMemberAwards> cuMemberAwards = queryCuMemberAwardsByPeriod(period);
|
||||||
|
// 回退会员奖衔(日结表)
|
||||||
cuMemberTreeService.updateBackCuMemberSettleAward(settleTableName, period);
|
cuMemberTreeService.updateBackCuMemberSettleAward(settleTableName, period);
|
||||||
|
// 更新会员奖衔根据临时表(会员表)
|
||||||
cuMemberService.updateBackCuMemberAward(cuMemberAwards, period);
|
cuMemberService.updateBackCuMemberAward(cuMemberAwards, period);
|
||||||
// 回退业绩表奖衔
|
// 回退业绩表奖衔
|
||||||
baseMapper.deleteCuMemberAwards(period);
|
baseMapper.deleteCuMemberAwards(period);
|
||||||
|
|
||||||
while (true) {
|
while (true) {
|
||||||
|
// 查询出符合下一奖衔足够业绩的会员
|
||||||
List<CuMemberSettleExt> cuMemberSettleExtList = cuMemberTreeService.queryCuMemberSettleEnoughAwardAchieve(settleTableName);
|
List<CuMemberSettleExt> cuMemberSettleExtList = cuMemberTreeService.queryCuMemberSettleEnoughAwardAchieve(settleTableName);
|
||||||
if(!calculateAwards(countryAwardsMap, settleTableName, settleDate, period, cuMemberSettleExtList)){
|
if (!calculateAwards(countryAwardsMap, settleTableName, settleDate, period, cuMemberSettleExtList)) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -98,7 +87,9 @@ public class CuMemberAwardsServiceImpl extends ServiceImpl<CuMemberAwardsMapper,
|
||||||
List<CuMemberAwards> cuMemberAwardsList = new ArrayList<>();
|
List<CuMemberAwards> cuMemberAwardsList = new ArrayList<>();
|
||||||
List<CuMemberSettleExt> enoughAwardsMemberList = new ArrayList<>();
|
List<CuMemberSettleExt> enoughAwardsMemberList = new ArrayList<>();
|
||||||
if (cuMemberSettleExtList.size() > 0) {
|
if (cuMemberSettleExtList.size() > 0) {
|
||||||
|
// 安置考核会员
|
||||||
List<CuMemberSettleExt> placeAwardsMemberList = new ArrayList<>();
|
List<CuMemberSettleExt> placeAwardsMemberList = new ArrayList<>();
|
||||||
|
// 血缘考核会员
|
||||||
List<CuMemberSettleExt> bloodAwardsMemberList = new ArrayList<>();
|
List<CuMemberSettleExt> bloodAwardsMemberList = new ArrayList<>();
|
||||||
// 用于记录原来的奖衔
|
// 用于记录原来的奖衔
|
||||||
Map<Long, CuMemberSettleExt> originalCuMemberSettleMap = new HashMap<>(ComputeUtil.mapInitCapacity(cuMemberSettleExtList.size()));
|
Map<Long, CuMemberSettleExt> originalCuMemberSettleMap = new HashMap<>(ComputeUtil.mapInitCapacity(cuMemberSettleExtList.size()));
|
||||||
|
@ -106,10 +97,13 @@ public class CuMemberAwardsServiceImpl extends ServiceImpl<CuMemberAwardsMapper,
|
||||||
BdAwards bdAwards = getBdAwards(countryAwardsMap, originalCuMemberSettleMap, cuMemberSettleExt);
|
BdAwards bdAwards = getBdAwards(countryAwardsMap, originalCuMemberSettleMap, cuMemberSettleExt);
|
||||||
// 验证关系
|
// 验证关系
|
||||||
if (null == bdAwards.getRelationType()) {
|
if (null == bdAwards.getRelationType()) {
|
||||||
|
// 不需要考核
|
||||||
enoughAwardsMemberList.add(cuMemberSettleExt);
|
enoughAwardsMemberList.add(cuMemberSettleExt);
|
||||||
} else if (ERelationType.BLOOD_KINSHIP_CHECK.getValue() == bdAwards.getRelationType()) {
|
} else if (ERelationType.BLOOD_KINSHIP_CHECK.getValue() == bdAwards.getRelationType()) {
|
||||||
|
// 血缘考核
|
||||||
bloodAwardsMemberList.add(cuMemberSettleExt);
|
bloodAwardsMemberList.add(cuMemberSettleExt);
|
||||||
} else if (ERelationType.PLACE_CHECK.getValue() == bdAwards.getRelationType()) {
|
} else if (ERelationType.PLACE_CHECK.getValue() == bdAwards.getRelationType()) {
|
||||||
|
// 安置考核
|
||||||
placeAwardsMemberList.add(cuMemberSettleExt);
|
placeAwardsMemberList.add(cuMemberSettleExt);
|
||||||
} else {
|
} else {
|
||||||
enoughAwardsMemberList.add(cuMemberSettleExt);
|
enoughAwardsMemberList.add(cuMemberSettleExt);
|
||||||
|
@ -117,7 +111,7 @@ public class CuMemberAwardsServiceImpl extends ServiceImpl<CuMemberAwardsMapper,
|
||||||
});
|
});
|
||||||
|
|
||||||
List<CuMemberAwards> memberAwardsList = updateAwardsRecord(enoughAwardsMemberList, originalCuMemberSettleMap, period);
|
List<CuMemberAwards> memberAwardsList = updateAwardsRecord(enoughAwardsMemberList, originalCuMemberSettleMap, period);
|
||||||
if(memberAwardsList != null && memberAwardsList.size() >0){
|
if (memberAwardsList != null && memberAwardsList.size() > 0) {
|
||||||
cuMemberAwardsList.addAll(memberAwardsList);
|
cuMemberAwardsList.addAll(memberAwardsList);
|
||||||
}
|
}
|
||||||
// 需要验证安置的
|
// 需要验证安置的
|
||||||
|
@ -132,10 +126,10 @@ public class CuMemberAwardsServiceImpl extends ServiceImpl<CuMemberAwardsMapper,
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
List<CuMemberAwards> awardsList = updateAwardsRecord(updateAwardsMemberList, originalCuMemberSettleMap, period);
|
List<CuMemberAwards> awardsList = updateAwardsRecord(updateAwardsMemberList, originalCuMemberSettleMap, period);
|
||||||
if(updateAwardsMemberList.size() >0) {
|
if (updateAwardsMemberList.size() > 0) {
|
||||||
enoughAwardsMemberList.addAll(updateAwardsMemberList);
|
enoughAwardsMemberList.addAll(updateAwardsMemberList);
|
||||||
}
|
}
|
||||||
if(awardsList != null && awardsList.size() >0){
|
if (awardsList != null && awardsList.size() > 0) {
|
||||||
cuMemberAwardsList.addAll(awardsList);
|
cuMemberAwardsList.addAll(awardsList);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -152,10 +146,10 @@ public class CuMemberAwardsServiceImpl extends ServiceImpl<CuMemberAwardsMapper,
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
List<CuMemberAwards> awardsList = updateAwardsRecord(updateAwardsMemberList, originalCuMemberSettleMap, period);
|
List<CuMemberAwards> awardsList = updateAwardsRecord(updateAwardsMemberList, originalCuMemberSettleMap, period);
|
||||||
if(updateAwardsMemberList.size() >0) {
|
if (updateAwardsMemberList.size() > 0) {
|
||||||
enoughAwardsMemberList.addAll(updateAwardsMemberList);
|
enoughAwardsMemberList.addAll(updateAwardsMemberList);
|
||||||
}
|
}
|
||||||
if(awardsList != null && awardsList.size() >0){
|
if (awardsList != null && awardsList.size() > 0) {
|
||||||
cuMemberAwardsList.addAll(awardsList);
|
cuMemberAwardsList.addAll(awardsList);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -164,12 +158,13 @@ public class CuMemberAwardsServiceImpl extends ServiceImpl<CuMemberAwardsMapper,
|
||||||
// 将变动值插入临时表中
|
// 将变动值插入临时表中
|
||||||
// 更新会员表
|
// 更新会员表
|
||||||
cuMemberService.updateCuMemberByPeriod(enoughAwardsMemberList, period);
|
cuMemberService.updateCuMemberByPeriod(enoughAwardsMemberList, period);
|
||||||
// 更新结算网体表(月表、日表)
|
// 更新结算网体表 -- 结算日期到当前日期的所有日结算表
|
||||||
// 根据结算日期获得所有需要更新的周期
|
|
||||||
updateMemberAwardPeriod(settleDate);
|
updateMemberAwardPeriod(settleDate);
|
||||||
return Boolean.TRUE;
|
return Boolean.TRUE;
|
||||||
}else {
|
} else {
|
||||||
|
// 更新会员表
|
||||||
cuMemberService.updateCuMemberByPeriod(null, period);
|
cuMemberService.updateCuMemberByPeriod(null, period);
|
||||||
|
// 更新结算网体表 -- 结算日期到当前日期的所有日结算表
|
||||||
updateMemberAwardPeriod(settleDate);
|
updateMemberAwardPeriod(settleDate);
|
||||||
return Boolean.FALSE;
|
return Boolean.FALSE;
|
||||||
}
|
}
|
||||||
|
@ -188,11 +183,11 @@ public class CuMemberAwardsServiceImpl extends ServiceImpl<CuMemberAwardsMapper,
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void deleteCuMemberAwards(Long pkOrder, Long pkApprove, Date currentDateTime) {
|
public void deleteCuMemberAwards(Long pkOrder, Long pkApprove, Date currentDateTime) {
|
||||||
UpdateWrapper<CuMemberAwards> updateWrapper = new UpdateWrapper<>();
|
LambdaUpdateWrapper<CuMemberAwards> updateWrapper = new LambdaUpdateWrapper<>();
|
||||||
updateWrapper.set(SystemFieldConstants.DEL_FLAG, EYesNo.NO.getIntValue());
|
updateWrapper.set(CuMemberAwards::getDelFlag, EYesNo.NO.getIntValue());
|
||||||
updateWrapper.set(SystemFieldConstants.PK_MODIFIED, pkApprove);
|
updateWrapper.set(CuMemberAwards::getPkModified, pkApprove);
|
||||||
updateWrapper.set(SystemFieldConstants.MODIFIED_TIME, currentDateTime);
|
updateWrapper.set(CuMemberAwards::getModifiedTime, currentDateTime);
|
||||||
updateWrapper.eq(SaOrderFieldConstants.PK_ORDER, pkOrder);
|
updateWrapper.eq(CuMemberAwards::getPkOrder, pkOrder);
|
||||||
update(updateWrapper);
|
update(updateWrapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -203,10 +198,10 @@ public class CuMemberAwardsServiceImpl extends ServiceImpl<CuMemberAwardsMapper,
|
||||||
List<BdAwards> bdAwardsList = new ArrayList<>();
|
List<BdAwards> bdAwardsList = new ArrayList<>();
|
||||||
for (String key : awardsMap.keySet()) {
|
for (String key : awardsMap.keySet()) {
|
||||||
BdAwards bdAwards = awardsMap.get(key);
|
BdAwards bdAwards = awardsMap.get(key);
|
||||||
if(bdAwards.getPkCountry().equals(CountryConstants.CHINA_COUNTRY) && ComputeUtil.compareValue(bdAwards.getCommunityCheck()) && ComputeUtil.compareGreaterThan(minAchieve, bdAwards.getCommunityCheck())){
|
if (bdAwards.getPkCountry().equals(CountryConstants.CHINA_COUNTRY) && ComputeUtil.compareValue(bdAwards.getCommunityCheck()) && ComputeUtil.compareGreaterThan(minAchieve, bdAwards.getCommunityCheck())) {
|
||||||
minAchieve = bdAwards.getCommunityCheck();
|
minAchieve = bdAwards.getCommunityCheck();
|
||||||
}
|
}
|
||||||
if(ComputeUtil.compareValue(bdAwards.getCommunityCheck()) && bdAwards.getPkCountry().equals(CountryConstants.CHINA_COUNTRY)) {
|
if (ComputeUtil.compareValue(bdAwards.getCommunityCheck()) && bdAwards.getPkCountry().equals(CountryConstants.CHINA_COUNTRY)) {
|
||||||
bdAwardsList.add(bdAwards);
|
bdAwardsList.add(bdAwards);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -246,8 +241,8 @@ public class CuMemberAwardsServiceImpl extends ServiceImpl<CuMemberAwardsMapper,
|
||||||
* @Author: sui q
|
* @Author: sui q
|
||||||
* @Date: 2023/2/23 17:44
|
* @Date: 2023/2/23 17:44
|
||||||
*/
|
*/
|
||||||
private List<CuMemberAwards> updateAwardsRecord(List<CuMemberSettleExt> enoughAwardsMemberList, Map<Long, CuMemberSettleExt> originalCuMemberSettleMap,
|
private List<CuMemberAwards> updateAwardsRecord(List<CuMemberSettleExt> enoughAwardsMemberList, Map<Long, CuMemberSettleExt> originalCuMemberSettleMap,
|
||||||
Integer period) {
|
Integer period) {
|
||||||
if (enoughAwardsMemberList.size() == 0) {
|
if (enoughAwardsMemberList.size() == 0) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@ -255,7 +250,6 @@ public class CuMemberAwardsServiceImpl extends ServiceImpl<CuMemberAwardsMapper,
|
||||||
// 增加奖衔记录表
|
// 增加奖衔记录表
|
||||||
// 更新升奖衔的会员,插入升衔记录
|
// 更新升奖衔的会员,插入升衔记录
|
||||||
return upgradeCuMemberAwards(enoughAwardsMemberList, originalCuMemberSettleMap, period);
|
return upgradeCuMemberAwards(enoughAwardsMemberList, originalCuMemberSettleMap, period);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -266,7 +260,7 @@ public class CuMemberAwardsServiceImpl extends ServiceImpl<CuMemberAwardsMapper,
|
||||||
* @param period 期间
|
* @param period 期间
|
||||||
*/
|
*/
|
||||||
private List<CuMemberAwards> upgradeCuMemberAwards(List<CuMemberSettleExt> enoughAwardsMemberList, Map<Long, CuMemberSettleExt> originalCuMemberSettleMap,
|
private List<CuMemberAwards> upgradeCuMemberAwards(List<CuMemberSettleExt> enoughAwardsMemberList, Map<Long, CuMemberSettleExt> originalCuMemberSettleMap,
|
||||||
Integer period) {
|
Integer period) {
|
||||||
List<CuMemberAwards> cuMemberAwardsList = new ArrayList<>();
|
List<CuMemberAwards> cuMemberAwardsList = new ArrayList<>();
|
||||||
if (enoughAwardsMemberList.size() > 0) {
|
if (enoughAwardsMemberList.size() > 0) {
|
||||||
// 记录要入库的,为了验证是否首次晋升
|
// 记录要入库的,为了验证是否首次晋升
|
||||||
|
@ -347,9 +341,9 @@ public class CuMemberAwardsServiceImpl extends ServiceImpl<CuMemberAwardsMapper,
|
||||||
* @Date: 2022/11/5 14:21
|
* @Date: 2022/11/5 14:21
|
||||||
*/
|
*/
|
||||||
private List<CuMemberAwards> queryCuMemberAwardsByPeriod(Integer period) {
|
private List<CuMemberAwards> queryCuMemberAwardsByPeriod(Integer period) {
|
||||||
QueryWrapper<CuMemberAwards> queryWrapper = new QueryWrapper<>();
|
LambdaQueryWrapper<CuMemberAwards> queryWrapper = new LambdaQueryWrapper<>();
|
||||||
queryWrapper.eq(MemberFieldConstants.PERIOD, period);
|
queryWrapper.eq(CuMemberAwards::getPeriod, period);
|
||||||
queryWrapper.eq(MemberFieldConstants.UP_TYPE, EUpgradeType.AUTO_UPGRADE.getValue());
|
queryWrapper.eq(CuMemberAwards::getUpType, EUpgradeType.AUTO_UPGRADE.getValue());
|
||||||
return baseMapper.selectList(queryWrapper);
|
return baseMapper.selectList(queryWrapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -170,18 +170,18 @@
|
||||||
from (
|
from (
|
||||||
<foreach collection="memberAchieveParamList" item="achieve" open=" " separator=" union all " close=" ">
|
<foreach collection="memberAchieveParamList" item="achieve" open=" " separator=" union all " close=" ">
|
||||||
select pk_place_parent pk_member,#{achieve.pkRate} pk_rate,
|
select pk_place_parent pk_member,#{achieve.pkRate} pk_rate,
|
||||||
(case when place_dept =1 then #{achieve.newAmount} else 0 end) a_new_amount,
|
(case when place_dept = 1 then #{achieve.newAmount} else 0 end) a_new_amount,
|
||||||
(case when place_dept =1 then #{achieve.newPv} else 0 end) a_new_pv,
|
(case when place_dept = 1 then #{achieve.newPv} else 0 end) a_new_pv,
|
||||||
(case when place_dept =1 then #{achieve.repNewAmount} else 0 end) rep_a_new_amount,
|
(case when place_dept = 1 then #{achieve.repNewAmount} else 0 end) rep_a_new_amount,
|
||||||
(case when place_dept =1 then #{achieve.repNewPv} else 0 end) rep_a_new_pv,
|
(case when place_dept = 1 then #{achieve.repNewPv} else 0 end) rep_a_new_pv,
|
||||||
(case when place_dept =1 then #{achieve.newRealAmount} else 0 end) a_new_real_amount,
|
(case when place_dept = 1 then #{achieve.newRealAmount} else 0 end) a_new_real_amount,
|
||||||
(case when place_dept =1 then #{achieve.newRealPv} else 0 end) a_new_real_pv,
|
(case when place_dept = 1 then #{achieve.newRealPv} else 0 end) a_new_real_pv,
|
||||||
(case when place_dept =2 then #{achieve.newAmount} else 0 end) b_new_amount,
|
(case when place_dept = 2 then #{achieve.newAmount} else 0 end) b_new_amount,
|
||||||
(case when place_dept =2 then #{achieve.newPv} else 0 end) b_new_pv,
|
(case when place_dept = 2 then #{achieve.newPv} else 0 end) b_new_pv,
|
||||||
(case when place_dept =2 then #{achieve.repNewAmount} else 0 end) rep_b_new_amount,
|
(case when place_dept = 2 then #{achieve.repNewAmount} else 0 end) rep_b_new_amount,
|
||||||
(case when place_dept =2 then #{achieve.repNewPv} else 0 end) rep_b_new_pv,
|
(case when place_dept = 2 then #{achieve.repNewPv} else 0 end) rep_b_new_pv,
|
||||||
(case when place_dept =2 then #{achieve.newRealAmount} else 0 end) b_new_real_amount,
|
(case when place_dept = 2 then #{achieve.newRealAmount} else 0 end) b_new_real_amount,
|
||||||
(case when place_dept =2 then #{achieve.newRealPv} else 0 end) b_new_real_pv
|
(case when place_dept = 2 then #{achieve.newRealPv} else 0 end) b_new_real_pv
|
||||||
from(
|
from(
|
||||||
select pk_place_parent,place_dept from(
|
select pk_place_parent,place_dept from(
|
||||||
select * from ${tableName}
|
select * from ${tableName}
|
||||||
|
@ -224,18 +224,18 @@
|
||||||
from (
|
from (
|
||||||
<foreach collection="memberAchieveParamList" item="achieve" open=" " separator=" union all " close=" ">
|
<foreach collection="memberAchieveParamList" item="achieve" open=" " separator=" union all " close=" ">
|
||||||
select pk_place_parent pk_member,#{achieve.pkRate} pk_rate,
|
select pk_place_parent pk_member,#{achieve.pkRate} pk_rate,
|
||||||
(case when place_dept =1 then #{achieve.newAmount} else 0 end) a_new_amount,
|
(case when place_dept = 1 then #{achieve.newAmount} else 0 end) a_new_amount,
|
||||||
(case when place_dept =1 then #{achieve.newPv} else 0 end) a_new_pv,
|
(case when place_dept = 1 then #{achieve.newPv} else 0 end) a_new_pv,
|
||||||
(case when place_dept =1 then #{achieve.repNewAmount} else 0 end) rep_a_new_amount,
|
(case when place_dept = 1 then #{achieve.repNewAmount} else 0 end) rep_a_new_amount,
|
||||||
(case when place_dept =1 then #{achieve.repNewPv} else 0 end) rep_a_new_pv,
|
(case when place_dept = 1 then #{achieve.repNewPv} else 0 end) rep_a_new_pv,
|
||||||
(case when place_dept =1 then #{achieve.newRealAmount} else 0 end) a_new_real_amount,
|
(case when place_dept = 1 then #{achieve.newRealAmount} else 0 end) a_new_real_amount,
|
||||||
(case when place_dept =1 then #{achieve.newRealPv} else 0 end) a_new_real_pv,
|
(case when place_dept = 1 then #{achieve.newRealPv} else 0 end) a_new_real_pv,
|
||||||
(case when place_dept =2 then #{achieve.newAmount} else 0 end) b_new_amount,
|
(case when place_dept = 2 then #{achieve.newAmount} else 0 end) b_new_amount,
|
||||||
(case when place_dept =2 then #{achieve.newPv} else 0 end) b_new_pv,
|
(case when place_dept = 2 then #{achieve.newPv} else 0 end) b_new_pv,
|
||||||
(case when place_dept =2 then #{achieve.repNewAmount} else 0 end) rep_b_new_amount,
|
(case when place_dept = 2 then #{achieve.repNewAmount} else 0 end) rep_b_new_amount,
|
||||||
(case when place_dept =2 then #{achieve.repNewPv} else 0 end) rep_b_new_pv,
|
(case when place_dept = 2 then #{achieve.repNewPv} else 0 end) rep_b_new_pv,
|
||||||
(case when place_dept =2 then #{achieve.newRealAmount} else 0 end) b_new_real_amount,
|
(case when place_dept = 2 then #{achieve.newRealAmount} else 0 end) b_new_real_amount,
|
||||||
(case when place_dept =2 then #{achieve.newRealPv} else 0 end) b_new_real_pv
|
(case when place_dept = 2 then #{achieve.newRealPv} else 0 end) b_new_real_pv
|
||||||
from(
|
from(
|
||||||
select pk_place_parent,place_dept from(
|
select pk_place_parent,place_dept from(
|
||||||
select * from ${tableName}
|
select * from ${tableName}
|
||||||
|
|
|
@ -1179,6 +1179,7 @@
|
||||||
connect by t.pk_member = prior t.pk_place_parent) tmp
|
connect by t.pk_member = prior t.pk_place_parent) tmp
|
||||||
on ct.pk_member = tmp.pk_member
|
on ct.pk_member = tmp.pk_member
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="queryCuMemberSettleEnoughAwardAchieve" resultMap="CuMemberSettleExt">
|
<select id="queryCuMemberSettleEnoughAwardAchieve" resultMap="CuMemberSettleExt">
|
||||||
select a.pk_member,
|
select a.pk_member,
|
||||||
a.pk_parent,
|
a.pk_parent,
|
||||||
|
|
|
@ -34,11 +34,12 @@
|
||||||
|
|
||||||
<insert id="saveBatchCuMemberAwards">
|
<insert id="saveBatchCuMemberAwards">
|
||||||
insert ALL
|
insert ALL
|
||||||
<foreach item="item" index="index" collection="cuMemberAwardsList" separator=" " >
|
<foreach item="item" index="index" collection="cuMemberAwardsList" separator=" ">
|
||||||
into cu_member_awards(pk_member,period,up_type,old_level,new_level,purchase_status,pk_creator,pk_country) values
|
into cu_member_awards(pk_member,period,up_type,old_level,new_level,purchase_status,pk_creator,pk_country)
|
||||||
|
values
|
||||||
(
|
(
|
||||||
#{item.pkMember},#{item.period},#{item.upType},#{item.oldLevel},#{item.newLevel},#{item.purchaseStatus},#{item.pkCreator},
|
#{item.pkMember},#{item.period},#{item.upType},#{item.oldLevel},#{item.newLevel},#{item.purchaseStatus},#{item.pkCreator},
|
||||||
#{item.pkCountry}
|
#{item.pkCountry}
|
||||||
)
|
)
|
||||||
</foreach>
|
</foreach>
|
||||||
SELECT 1 FROM dual
|
SELECT 1 FROM dual
|
||||||
|
@ -71,21 +72,24 @@
|
||||||
insert(pk_id,period,pk_member,a_balance,b_balance,a_new_pv,b_new_pv,new_pv,pk_country,assess_status)
|
insert(pk_id,period,pk_member,a_balance,b_balance,a_new_pv,b_new_pv,new_pv,pk_country,assess_status)
|
||||||
values(cu_member_settle_awards_seq.nextval,b.period,b.pk_member,b.a_balance,b.b_balance,b.a_new_pv,b.b_new_pv,b.new_pv,b.pk_country,3)
|
values(cu_member_settle_awards_seq.nextval,b.period,b.pk_member,b.a_balance,b.b_balance,b.a_new_pv,b.b_new_pv,b.new_pv,b.pk_country,3)
|
||||||
</update>
|
</update>
|
||||||
|
|
||||||
<update id="calculateCuMemberAwards">
|
<update id="calculateCuMemberAwards">
|
||||||
merge into cu_member_settle_awards a
|
merge into cu_member_settle_awards a
|
||||||
using(
|
using(
|
||||||
select pk_member,period,max(pk_awards) pk_awards from(
|
select pk_member,period,max(pk_awards) pk_awards from(
|
||||||
<foreach collection="bdAwardsList" item="item" open=" " close=" " separator=" union ">
|
<foreach collection="bdAwardsList" item="item" open=" " close=" " separator=" union ">
|
||||||
select pk_member,period,#{item.pkId} pk_awards from cu_member_settle_awards
|
select pk_member,period,#{item.pkId} pk_awards
|
||||||
|
from cu_member_settle_awards
|
||||||
where period = #{period} and pk_country=#{item.pkCountry} and new_pv>=#{item.communityCheck}
|
where period = #{period} and pk_country=#{item.pkCountry} and new_pv>=#{item.communityCheck}
|
||||||
<if test="item.communityCheckEnd != null and item.communityCheckEnd > 0">
|
<if test="item.communityCheckEnd != null and item.communityCheckEnd > 0">
|
||||||
and new_pv <#{item.communityCheckEnd}
|
and new_pv <#{item.communityCheckEnd}
|
||||||
</if>
|
</if>
|
||||||
</foreach>)
|
</foreach>
|
||||||
group by pk_member,period
|
)
|
||||||
|
group by pk_member,period
|
||||||
) b on (a.pk_member=b.pk_member and a.period=b.period)
|
) b on (a.pk_member=b.pk_member and a.period=b.period)
|
||||||
when matched then
|
when matched then
|
||||||
update set a.pk_awards=b.pk_awards
|
update set a.pk_awards = b.pk_awards
|
||||||
</update>
|
</update>
|
||||||
|
|
||||||
<update id="updateBatchCuMemberAwards">
|
<update id="updateBatchCuMemberAwards">
|
||||||
|
@ -112,43 +116,57 @@
|
||||||
|
|
||||||
<update id="calculateCuMemberRangeAwardsEveryMonth">
|
<update id="calculateCuMemberRangeAwardsEveryMonth">
|
||||||
merge into cu_member_settle_awards a
|
merge into cu_member_settle_awards a
|
||||||
using(
|
using (
|
||||||
select #{period} period,b.pk_member,b.max_team_pv,b.small_team_pv new_pv from(
|
select #{period} period, b.pk_member, b.max_team_pv, b.small_team_pv new_pv
|
||||||
select pk_parent pk_member,max(team_month_pv+new_pv) max_team_pv,
|
from (
|
||||||
(sum(team_month_pv+new_pv)-max(team_month_pv+new_pv)) small_team_pv,
|
select pk_parent pk_member,
|
||||||
count(pk_parent) dept_num from ${rangeTableName}
|
max(team_month_pv + new_pv) max_team_pv,
|
||||||
group by pk_parent
|
(sum(team_month_pv + new_pv) - max(team_month_pv + new_pv)) small_team_pv,
|
||||||
having count(pk_parent)>=2) b
|
count(pk_parent) dept_num
|
||||||
where b.small_team_pv>=#{minAchieve}) b
|
from ${rangeTableName}
|
||||||
on (a.pk_member=b.pk_member and a.period=b.period)
|
group by pk_parent
|
||||||
|
having count(pk_parent) >= 2) b
|
||||||
|
where b.small_team_pv >= #{minAchieve}) b
|
||||||
|
on (a.pk_member = b.pk_member and a.period = b.period)
|
||||||
when matched then
|
when matched then
|
||||||
update set a.a_new_pv=b.max_team_pv,a.b_new_pv=b.new_pv,a.new_pv=b.new_pv
|
update set a.a_new_pv = b.max_team_pv,a.b_new_pv = b.new_pv,a.new_pv = b.new_pv
|
||||||
when not matched then
|
when not matched then
|
||||||
insert(pk_id,period,pk_member,a_balance,b_balance,a_new_pv,b_new_pv,new_pv,pk_country,assess_status)
|
insert (pk_id, period, pk_member, a_balance, b_balance, a_new_pv, b_new_pv, new_pv, pk_country,
|
||||||
values(cu_member_settle_awards_seq.nextval,b.period,b.pk_member,0,0,b.max_team_pv,b.new_pv,b.new_pv,1,3)
|
assess_status)
|
||||||
|
values (cu_member_settle_awards_seq.nextval, b.period, b.pk_member, 0, 0, b.max_team_pv, b.new_pv,
|
||||||
|
b.new_pv, 1, 3)
|
||||||
</update>
|
</update>
|
||||||
|
|
||||||
<delete id="deleteCuMemberAwards">
|
<delete id="deleteCuMemberAwards">
|
||||||
delete from cu_member_awards where period = #{period} and up_type = 1
|
delete from cu_member_awards where period = #{period} and up_type = 1
|
||||||
</delete>
|
</delete>
|
||||||
|
|
||||||
<delete id="deleteCuMemberSettleAwards">
|
<delete id="deleteCuMemberSettleAwards">
|
||||||
delete from cu_member_settle_awards where period = #{period}
|
delete from cu_member_settle_awards where period = #{period}
|
||||||
</delete>
|
</delete>
|
||||||
|
|
||||||
<delete id="deleteRepeatCuMemberAwards">
|
<delete id="deleteRepeatCuMemberAwards">
|
||||||
delete from cu_member_settle_awards where pk_id in(
|
delete
|
||||||
select a.pk_id from (
|
from cu_member_settle_awards
|
||||||
select ct.pk_id,ct.pk_member,ba.awards_value from cu_member_settle_awards ct
|
where pk_id in (
|
||||||
inner join bd_awards ba
|
select a.pk_id
|
||||||
on ct.pk_awards=ba.pk_id and ba.del_flag=0
|
from (
|
||||||
where period= #{period}) a
|
select ct.pk_id, ct.pk_member, ba.awards_value
|
||||||
inner join(
|
from cu_member_settle_awards ct
|
||||||
select ct.*,bw.awards_value from(
|
inner join bd_awards ba
|
||||||
select pk_member,max(pk_awards) pk_awards from cu_member_settle_awards
|
on ct.pk_awards = ba.pk_id and ba.del_flag = 0
|
||||||
where period between #{firstPeriod} and #{yesPeriod}
|
where period = #{period}) a
|
||||||
group by pk_member) ct
|
inner join(
|
||||||
inner join bd_awards bw
|
select ct.*, bw.awards_value
|
||||||
on ct.pk_awards=bw.pk_id and bw.del_flag=0
|
from (
|
||||||
) b
|
select pk_member, max(pk_awards) pk_awards
|
||||||
on a.pk_member=b.pk_member and a.awards_value <=b.awards_value)
|
from cu_member_settle_awards
|
||||||
|
where period between #{firstPeriod} and #{yesPeriod}
|
||||||
|
group by pk_member) ct
|
||||||
|
inner join bd_awards bw
|
||||||
|
on ct.pk_awards = bw.pk_id and bw.del_flag = 0
|
||||||
|
) b
|
||||||
|
on a.pk_member = b.pk_member and a.awards_value <= b.awards_value)
|
||||||
</delete>
|
</delete>
|
||||||
|
|
||||||
<select id="queryLastCuMemberAwards" resultMap="CuMemberAwards">
|
<select id="queryLastCuMemberAwards" resultMap="CuMemberAwards">
|
||||||
|
|
Loading…
Reference in New Issue