## 调整创建语句结构;

This commit is contained in:
cabbage 2025-04-12 10:23:31 +08:00
parent 1ff34e7da2
commit c26c7f59e7
10 changed files with 232 additions and 163 deletions

View File

@ -265,7 +265,7 @@ public interface CuMemberTreeMapper extends BaseMapper<CuMemberTree> {
List<CuMemberSettleExt> queryExemptCuMemberSettle(String tableName);
/**
* 查询出符合下一等级足够业绩的会员
* 查询出符合下一奖衔足够业绩的会员
*
* @param settleTableName 结算表
* @return: List<CuMemberSettleExt>

View File

@ -173,7 +173,7 @@ public interface ICuMemberTreeService extends IService<CuMemberTree> {
List<CuMemberSettleExt> queryExemptCuMemberSettle(String tableName);
/**
* 查询出符合下一等级足够业绩的会员
* 查询出符合下一奖衔足够业绩的会员
*
* @param settleTableName 结算表
* @return: List<CuMemberSettleExt>

View File

@ -1,6 +1,7 @@
package com.hzs.bonus.bonus.service.impl;
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.ICuMemberTreeService;
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()));
}
}
/**
* 处理汇率
*

View File

@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.json.JSONUtil;
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.ICuMemberRangeService;
import com.hzs.bonus.achieve.service.ICuMemberSettlePeriodService;
@ -416,10 +417,6 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
//********************************* 更新当天最新的业绩*************************/
// 获取所有国家的奖金项 key = 国家 + 奖金项的值
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)更新会员表
// 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)增加奖衔记录表
// cuMemberAwardsService.calculateCuMemberAwards(settleDate, awardsMap, currentSettleTableName);
cuMemberAwardsService.calculateCuMemberAwards(settleDate, awardsMap, currentSettleTableName);
// 计算完奖衔回退业绩最终根据新增进行回写
// cuMemberTreeService.updateCuMemberBackSettle(cuMemberAchieveHashMap, currentSettleTableName);
cuMemberTreeService.updateCuMemberBackSettle(cuMemberAchieveHashMap, currentSettleTableName);
//********************************重新考核*********************************/
// TODO new 乐学没有分红复购考核这个位置需要去掉
@ -452,19 +454,20 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
// 计算复购券
calculateRepurchaseCoupons(DateUtils.parseDate(settleDate), firPurchaseOrderList, period, bonusConfigDTO, cuMemberBonusMap,
recordDetailVO, cuMemberSettleExtMap);
// 计算乐享订单奖金按照订单进行日结
// 增加判断是否相同月相同月的话昨天的考核结果更新到今天
Boolean isSameMonth = DateUtils.getMonth(settleDate).equals(DateUtils.getMonth(yesterday));
// 乐享奖金
bonusSettleRangeHandle.calculateLeEnjoyBonusBySaOrder(cuMemberBonusMap, bonusConfigDTO, recordDetailVO,
period, yesterdayPeriod, isSameMonth);
// 计算新零售团队奖金
// // 计算新零售团队奖金
// bonusSettleRangeHandle.calculateRetailBonusBySaOrder(settleDate, cuMemberBonusMap, bonusConfigDTO, recordDetailVO,
// period, yesterdayPeriod, retailOrderList, isSameMonth);
// 验证是否月奖验证是否是结算月底那一天月底那一天计算云代判断是否为月底
// 验证是否月奖验证是否是结算月底那一天月底那一天计算云代判断是否为月底
//*********************************计算云代奖金、 复购券均分收益************************/
// TODO new 云代复购券均分分红暂时不处理
// // TODO new 云代复购券均分分红暂时不处理
// if (settleDate.endsWith("10")) {
// // 计算云代奖金复购券均分
// calculateCloudAgentOrder(settleDate, bonusConfigDTO, period, recordDetailVO, cuMemberBonusMap);
@ -474,16 +477,17 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
// }
// // 计算店铺奖金
// if(settleDate.endsWith("10")){
// if (settleDate.endsWith("10")) {
// calculateStoreOrder(settleDate, bonusConfigDTO, period, recordDetailVO, cuMemberBonusMap);
// }
// // 计算实际分红奖金
// if (settleDate.endsWith("10")) {
// calculateShareBonus(settleDate, bonusConfigDTO, period, recordDetailVO, cuMemberBonusMap);
// }
// 计算全球积分车奖积分
// 环球积分和车奖积分的规则有荣衔复购考核通过的10代不压缩以推荐+拓展+领导+分红为合计基数获取对应比例比例根据参数配置
// // 计算全球积分车奖积分
// // 环球积分和车奖积分的规则有荣衔复购考核通过的10代不压缩以推荐+拓展+领导+分红为合计基数获取对应比例比例根据参数配置
// calculateGlobalCarBonus(cuMemberSettleExtMap, currentSettleTableName, settleDate, bonusConfigDTO, period, recordDetailVO, cuMemberBonusMap);
// 保存当日计算的奖金
insertCuMemberBonus(settleDate, period, cuMemberBonusMap, recordDetailVO);
// 处理血缘业绩统计伞下直推
@ -493,6 +497,7 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
// 处理网体更新网体新增 轮次最小值 cuMemberSettleExtMap
cuMemberTreeService.updateCuMemberSettle(currentSettleTableName, cuMemberSettleExtMap);
}
// 每日进行甩网业绩按照条件降结算好的业绩甩到想应的会员那边
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();
cuMemberAwardsService.calculateCuMemberAwardsEveryMonth(currentMonthFirstPeriod, yesterdayPeriod, period, settleDate, beforeMonthTableName, awardsMap);
// 计算完当日奖金后根据业绩计算下月奖衔
String afterDate = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, currentDate);
if (afterDate.endsWith("01")) {
// TODO new 不是月奖衔每月初不更新月级差奖衔需要去掉
// String rangeTableName = TableNameConstants.CU_MEMBER_RANGE + period;
// // 月第一天日期
// String monthFirstDate = DateUtils.currentMonthFirstDateStr(DateUtils.parseStringToDate(settleDate));
// // 月第一天期数
// Integer startPeriod = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(monthFirstDate).getPkId();
// TODO new 不是月奖衔每月初不更新
// // 更新奖衔根据新结算的奖衔
// cuMemberTreeService.updateCuMemberAwardsBySettle(currentSettleTableName, rangeTableName, startPeriod, period);
// TODO new 现在没有月考核是不是可以去掉
// 结算每月月末那一天都是先删除在新增重新考核
cuMemberTreeService.initCuMemberAssessData(settleDate);
// 更新奖衔考核结果
cuMemberAwardsService.updateCuMemberAwardsExamine(currentDate, period);
// 生成月表cu_member_month
String monthTableName = TableNameConstants.CU_MEMBER_MONTH + DateUtils.getMonth(afterDate);
Integer number = cuMemberTreeService.queryExistOracleTable(monthTableName);

View File

@ -9,9 +9,7 @@ import java.math.BigDecimal;
import java.util.List;
/**
* <p>
* 会员信息-奖衔升级记录 Mapper 接口
* </p>
*
* @author hzs
* @since 2022-08-31
@ -29,6 +27,7 @@ public interface CuMemberAwardsMapper extends BaseMapper<CuMemberAwards> {
/**
* 批量更新会员奖衔记录此方法用于奖金结算批量更新为删除状态留存奖衔降级记录
*
* @param cuMemberAwardsList 更新的人
* @param period 期间
* @return: Integer
@ -39,6 +38,7 @@ public interface CuMemberAwardsMapper extends BaseMapper<CuMemberAwards> {
/**
* 查询会员最后一条奖衔升级记录
*
* @param cuMemberAwardsList 奖衔升级记录
* @return: List<CuMemberAwards>
* @Author: sui q
@ -48,15 +48,17 @@ public interface CuMemberAwardsMapper extends BaseMapper<CuMemberAwards> {
/**
* 删除自动升级的奖衔升级记录
*
* @param period 期间
* @return: Integer
* @Author: sui q
* @Date: 2023/2/23 11:15
*/
Integer deleteCuMemberAwards(@Param("period")Integer period);
Integer deleteCuMemberAwards(@Param("period") Integer period);
/**
* 批量插入奖衔记录
*
* @param cuMemberAwardsList 需要插入的奖衔列表
* @return: Integer
* @Author: sui q

View File

@ -3,16 +3,13 @@ package com.hzs.bonus.detail.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.hzs.common.domain.member.detail.CuMemberAwards;
import com.hzs.common.domain.system.config.BdAwards;
import org.apache.ibatis.annotations.Param;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
* <p>
* 会员信息-奖衔升级记录 服务类
* </p>
*
* @author hzs
* @since 2022-08-31
@ -21,6 +18,7 @@ public interface ICuMemberAwardsService extends IService<CuMemberAwards> {
/**
* 重新计算会员的奖衔根据累计结束后的业绩
*
* @param settleDate 结算日
* @param countryAwardsMap 国家奖衔配置
* @param settleTableName 结算表
@ -32,6 +30,7 @@ public interface ICuMemberAwardsService extends IService<CuMemberAwards> {
/**
* 回退极差奖衔每日重新结算先把奖衔回退到前一天
*
* @param period 结算期间
* @param rangeTableName 结算表
* @return: void
@ -42,6 +41,7 @@ public interface ICuMemberAwardsService extends IService<CuMemberAwards> {
/**
* 批量插入奖衔记录
*
* @param cuMemberAwardsList 需要插入的奖衔列表
* @return: Integer
* @Author: sui q
@ -51,6 +51,7 @@ public interface ICuMemberAwardsService extends IService<CuMemberAwards> {
/**
* 删除奖衔升级记录
*
* @param pkOrder 订单
* @param pkApprove 审核人
* @param currentDateTime 当前时间

View File

@ -1,7 +1,8 @@
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.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.hzs.bonus.achieve.service.ICuMemberSettlePeriodService;
import com.hzs.bonus.achieve.service.ICuMemberTreeService;
@ -24,9 +25,7 @@ import java.time.temporal.ChronoUnit;
import java.util.*;
/**
* <p>
* 会员信息-奖衔升级记录 服务实现类
* </p>
*
* @author hzs
* @since 2022-08-31
@ -34,43 +33,33 @@ import java.util.*;
@Service
public class CuMemberAwardsServiceImpl extends ServiceImpl<CuMemberAwardsMapper, CuMemberAwards> implements ICuMemberAwardsService {
@Autowired
private ICuMemberTreeService cuMemberTreeService;
@Autowired
private ICuMemberService cuMemberService;
@Autowired
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
@Transactional(rollbackFor = Exception.class)
public void calculateCuMemberAwards(String setDate, Map<String, BdAwards> countryAwardsMap, String settleTableName) {
// 查询结算日当天奖衔发生过变动的会员本期
Date settleDate = DateUtils.parseStringToDate(setDate);
Integer period = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(setDate).getPkId();
//删除当天奖衔升级记录自动升级的
// 更新奖衔回退奖衔
// 某一期的会员奖衔
List<CuMemberAwards> cuMemberAwards = queryCuMemberAwardsByPeriod(period);
// 回退会员奖衔日结表
cuMemberTreeService.updateBackCuMemberSettleAward(settleTableName, period);
// 更新会员奖衔根据临时表会员表
cuMemberService.updateBackCuMemberAward(cuMemberAwards, period);
// 回退业绩表奖衔
baseMapper.deleteCuMemberAwards(period);
while (true) {
// 查询出符合下一奖衔足够业绩的会员
List<CuMemberSettleExt> cuMemberSettleExtList = cuMemberTreeService.queryCuMemberSettleEnoughAwardAchieve(settleTableName);
if(!calculateAwards(countryAwardsMap, settleTableName, settleDate, period, cuMemberSettleExtList)){
if (!calculateAwards(countryAwardsMap, settleTableName, settleDate, period, cuMemberSettleExtList)) {
break;
}
}
@ -98,7 +87,9 @@ public class CuMemberAwardsServiceImpl extends ServiceImpl<CuMemberAwardsMapper,
List<CuMemberAwards> cuMemberAwardsList = new ArrayList<>();
List<CuMemberSettleExt> enoughAwardsMemberList = new ArrayList<>();
if (cuMemberSettleExtList.size() > 0) {
// 安置考核会员
List<CuMemberSettleExt> placeAwardsMemberList = new ArrayList<>();
// 血缘考核会员
List<CuMemberSettleExt> bloodAwardsMemberList = new ArrayList<>();
// 用于记录原来的奖衔
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);
// 验证关系
if (null == bdAwards.getRelationType()) {
// 不需要考核
enoughAwardsMemberList.add(cuMemberSettleExt);
} else if (ERelationType.BLOOD_KINSHIP_CHECK.getValue() == bdAwards.getRelationType()) {
// 血缘考核
bloodAwardsMemberList.add(cuMemberSettleExt);
} else if (ERelationType.PLACE_CHECK.getValue() == bdAwards.getRelationType()) {
// 安置考核
placeAwardsMemberList.add(cuMemberSettleExt);
} else {
enoughAwardsMemberList.add(cuMemberSettleExt);
@ -117,7 +111,7 @@ public class CuMemberAwardsServiceImpl extends ServiceImpl<CuMemberAwardsMapper,
});
List<CuMemberAwards> memberAwardsList = updateAwardsRecord(enoughAwardsMemberList, originalCuMemberSettleMap, period);
if(memberAwardsList != null && memberAwardsList.size() >0){
if (memberAwardsList != null && memberAwardsList.size() > 0) {
cuMemberAwardsList.addAll(memberAwardsList);
}
// 需要验证安置的
@ -132,10 +126,10 @@ public class CuMemberAwardsServiceImpl extends ServiceImpl<CuMemberAwardsMapper,
}
});
List<CuMemberAwards> awardsList = updateAwardsRecord(updateAwardsMemberList, originalCuMemberSettleMap, period);
if(updateAwardsMemberList.size() >0) {
if (updateAwardsMemberList.size() > 0) {
enoughAwardsMemberList.addAll(updateAwardsMemberList);
}
if(awardsList != null && awardsList.size() >0){
if (awardsList != null && awardsList.size() > 0) {
cuMemberAwardsList.addAll(awardsList);
}
}
@ -152,10 +146,10 @@ public class CuMemberAwardsServiceImpl extends ServiceImpl<CuMemberAwardsMapper,
}
});
List<CuMemberAwards> awardsList = updateAwardsRecord(updateAwardsMemberList, originalCuMemberSettleMap, period);
if(updateAwardsMemberList.size() >0) {
if (updateAwardsMemberList.size() > 0) {
enoughAwardsMemberList.addAll(updateAwardsMemberList);
}
if(awardsList != null && awardsList.size() >0){
if (awardsList != null && awardsList.size() > 0) {
cuMemberAwardsList.addAll(awardsList);
}
}
@ -164,12 +158,13 @@ public class CuMemberAwardsServiceImpl extends ServiceImpl<CuMemberAwardsMapper,
// 将变动值插入临时表中
// 更新会员表
cuMemberService.updateCuMemberByPeriod(enoughAwardsMemberList, period);
// 更新结算网体表(月表日表)
// 根据结算日期获得所有需要更新的周期
// 更新结算网体表 -- 结算日期到当前日期的所有日结算表
updateMemberAwardPeriod(settleDate);
return Boolean.TRUE;
}else {
} else {
// 更新会员表
cuMemberService.updateCuMemberByPeriod(null, period);
// 更新结算网体表 -- 结算日期到当前日期的所有日结算表
updateMemberAwardPeriod(settleDate);
return Boolean.FALSE;
}
@ -188,11 +183,11 @@ public class CuMemberAwardsServiceImpl extends ServiceImpl<CuMemberAwardsMapper,
@Override
public void deleteCuMemberAwards(Long pkOrder, Long pkApprove, Date currentDateTime) {
UpdateWrapper<CuMemberAwards> updateWrapper = new UpdateWrapper<>();
updateWrapper.set(SystemFieldConstants.DEL_FLAG, EYesNo.NO.getIntValue());
updateWrapper.set(SystemFieldConstants.PK_MODIFIED, pkApprove);
updateWrapper.set(SystemFieldConstants.MODIFIED_TIME, currentDateTime);
updateWrapper.eq(SaOrderFieldConstants.PK_ORDER, pkOrder);
LambdaUpdateWrapper<CuMemberAwards> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.set(CuMemberAwards::getDelFlag, EYesNo.NO.getIntValue());
updateWrapper.set(CuMemberAwards::getPkModified, pkApprove);
updateWrapper.set(CuMemberAwards::getModifiedTime, currentDateTime);
updateWrapper.eq(CuMemberAwards::getPkOrder, pkOrder);
update(updateWrapper);
}
@ -203,10 +198,10 @@ public class CuMemberAwardsServiceImpl extends ServiceImpl<CuMemberAwardsMapper,
List<BdAwards> bdAwardsList = new ArrayList<>();
for (String key : awardsMap.keySet()) {
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();
}
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);
}
}
@ -255,7 +250,6 @@ public class CuMemberAwardsServiceImpl extends ServiceImpl<CuMemberAwardsMapper,
// 增加奖衔记录表
// 更新升奖衔的会员插入升衔记录
return upgradeCuMemberAwards(enoughAwardsMemberList, originalCuMemberSettleMap, period);
}
/**
@ -347,9 +341,9 @@ public class CuMemberAwardsServiceImpl extends ServiceImpl<CuMemberAwardsMapper,
* @Date: 2022/11/5 14:21
*/
private List<CuMemberAwards> queryCuMemberAwardsByPeriod(Integer period) {
QueryWrapper<CuMemberAwards> queryWrapper = new QueryWrapper<>();
queryWrapper.eq(MemberFieldConstants.PERIOD, period);
queryWrapper.eq(MemberFieldConstants.UP_TYPE, EUpgradeType.AUTO_UPGRADE.getValue());
LambdaQueryWrapper<CuMemberAwards> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(CuMemberAwards::getPeriod, period);
queryWrapper.eq(CuMemberAwards::getUpType, EUpgradeType.AUTO_UPGRADE.getValue());
return baseMapper.selectList(queryWrapper);
}

View File

@ -170,18 +170,18 @@
from (
<foreach collection="memberAchieveParamList" item="achieve" open=" " separator=" union all " close=" ">
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.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.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.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.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.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.newRealPv} else 0 end) b_new_real_pv
(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.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.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 = 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.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.newRealAmount} else 0 end) b_new_real_amount,
(case when place_dept = 2 then #{achieve.newRealPv} else 0 end) b_new_real_pv
from(
select pk_place_parent,place_dept from(
select * from ${tableName}
@ -224,18 +224,18 @@
from (
<foreach collection="memberAchieveParamList" item="achieve" open=" " separator=" union all " close=" ">
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.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.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.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.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.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.newRealPv} else 0 end) b_new_real_pv
(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.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.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 = 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.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.newRealAmount} else 0 end) b_new_real_amount,
(case when place_dept = 2 then #{achieve.newRealPv} else 0 end) b_new_real_pv
from(
select pk_place_parent,place_dept from(
select * from ${tableName}

View File

@ -1179,6 +1179,7 @@
connect by t.pk_member = prior t.pk_place_parent) tmp
on ct.pk_member = tmp.pk_member
</select>
<select id="queryCuMemberSettleEnoughAwardAchieve" resultMap="CuMemberSettleExt">
select a.pk_member,
a.pk_parent,

View File

@ -34,8 +34,9 @@
<insert id="saveBatchCuMemberAwards">
insert ALL
<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
<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
(
#{item.pkMember},#{item.period},#{item.upType},#{item.oldLevel},#{item.newLevel},#{item.purchaseStatus},#{item.pkCreator},
#{item.pkCountry}
@ -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)
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 id="calculateCuMemberAwards">
merge into cu_member_settle_awards a
using(
select pk_member,period,max(pk_awards) pk_awards from(
<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}
<if test="item.communityCheckEnd != null and item.communityCheckEnd > 0">
and new_pv &lt;#{item.communityCheckEnd}
</if>
</foreach>)
</foreach>
)
group by pk_member,period
) b on (a.pk_member=b.pk_member and a.period=b.period)
when matched then
update set a.pk_awards=b.pk_awards
update set a.pk_awards = b.pk_awards
</update>
<update id="updateBatchCuMemberAwards">
@ -112,43 +116,57 @@
<update id="calculateCuMemberRangeAwardsEveryMonth">
merge into cu_member_settle_awards a
using(
select #{period} period,b.pk_member,b.max_team_pv,b.small_team_pv new_pv from(
select pk_parent pk_member,max(team_month_pv+new_pv) max_team_pv,
(sum(team_month_pv+new_pv)-max(team_month_pv+new_pv)) small_team_pv,
count(pk_parent) dept_num from ${rangeTableName}
using (
select #{period} period, b.pk_member, b.max_team_pv, b.small_team_pv new_pv
from (
select pk_parent pk_member,
max(team_month_pv + new_pv) max_team_pv,
(sum(team_month_pv + new_pv) - max(team_month_pv + new_pv)) small_team_pv,
count(pk_parent) dept_num
from ${rangeTableName}
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)
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
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
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,0,0,b.max_team_pv,b.new_pv,b.new_pv,1,3)
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, 0, 0, b.max_team_pv, b.new_pv,
b.new_pv, 1, 3)
</update>
<delete id="deleteCuMemberAwards">
delete from cu_member_awards where period = #{period} and up_type = 1
</delete>
<delete id="deleteCuMemberSettleAwards">
delete from cu_member_settle_awards where period = #{period}
</delete>
<delete id="deleteRepeatCuMemberAwards">
delete from cu_member_settle_awards where pk_id in(
select a.pk_id from (
select ct.pk_id,ct.pk_member,ba.awards_value from cu_member_settle_awards ct
delete
from cu_member_settle_awards
where pk_id in (
select a.pk_id
from (
select ct.pk_id, ct.pk_member, ba.awards_value
from cu_member_settle_awards ct
inner join bd_awards ba
on ct.pk_awards=ba.pk_id and ba.del_flag=0
where period= #{period}) a
on ct.pk_awards = ba.pk_id and ba.del_flag = 0
where period = #{period}) a
inner join(
select ct.*,bw.awards_value from(
select pk_member,max(pk_awards) pk_awards from cu_member_settle_awards
select ct.*, bw.awards_value
from (
select pk_member, max(pk_awards) pk_awards
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
on ct.pk_awards = bw.pk_id and bw.del_flag = 0
) b
on a.pk_member=b.pk_member and a.awards_value &lt;=b.awards_value)
on a.pk_member = b.pk_member and a.awards_value &lt;= b.awards_value)
</delete>
<select id="queryLastCuMemberAwards" resultMap="CuMemberAwards">