## 代码添加注释;调整发布处理;

This commit is contained in:
cabbage 2025-04-12 15:30:10 +08:00
parent 2b06a82ccf
commit 0decded40b
13 changed files with 381 additions and 354 deletions

View File

@ -149,7 +149,7 @@ public interface CuMemberTreeMapper extends BaseMapper<CuMemberTree> {
@Param("sourceTableName") String sourceTableName, @Param("period") Integer period);
/*
* @description: 新增货修改会员数
* @description: 结算日表网体添加到网体月表中
* @author: sui q
* @date: 2023/7/20 11:18
* @param: null null

View File

@ -1,5 +1,6 @@
package com.hzs.bonus.achieve.service.impl;
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.bonus.achieve.service.ICuMemberSettlePeriodDetailService;
@ -39,12 +40,12 @@ public class CuMemberSettlePeriodServiceImpl extends ServiceImpl<CuMemberSettleP
@Autowired
private RedisService redisService;
@Autowired
private ICuMemberSettlePeriodDetailService cuMemberSettlePeriodDetailService;
private ICuMemberSettlePeriodDetailService iCuMemberSettlePeriodDetailService;
@DubboReference
ICountryServiceApi countryServiceApi;
ICountryServiceApi iCountryServiceApi;
@DubboReference
ISystemConfigServiceApi systemConfigServiceApi;
ISystemConfigServiceApi iSystemConfigServiceApi;
@Override
public void initCuMemberPeriod(String settleDate) {
@ -53,7 +54,7 @@ public class CuMemberSettlePeriodServiceImpl extends ServiceImpl<CuMemberSettleP
List<Integer> daySettleCountry = new ArrayList<>();
packageSettleCountry(weekSettleCountry, daySettleCountry);
List<CuMemberSettlePeriodDetail> cuMemberSettlePeriodDetailList = new ArrayList<>();
Date startDate = DateUtils.parseStringToDate("2021-01-12");
Date startDate = DateUtils.parseStringToDate("2025-01-01");
Date endDate = DateUtils.parseStringToDate(settleDate);
Map<String, CuMemberSettlePeriod> memberSettlePeriodMap = queryCuMemberSettlePeriod(startDate, endDate);
List<String> periodList = new ArrayList<>();
@ -103,7 +104,7 @@ public class CuMemberSettlePeriodServiceImpl extends ServiceImpl<CuMemberSettleP
startDate = DateUtils.afterDate(1, ChronoUnit.DAYS, startDate);
}
cuMemberSettlePeriodDetailService.saveBatch(cuMemberSettlePeriodDetailList);
iCuMemberSettlePeriodDetailService.saveBatch(cuMemberSettlePeriodDetailList);
}
@Override
@ -117,7 +118,7 @@ public class CuMemberSettlePeriodServiceImpl extends ServiceImpl<CuMemberSettleP
redisService.setCacheObject(key, cuMemberSettlePeriod);
} else {
QueryWrapper<CuMemberSettlePeriod> queryWrapper1 = new QueryWrapper<>();
queryWrapper1.select("max(pk_id) pk_id,max(settle_date) settle_date");
queryWrapper1.select("max(pk_id) pk_id, max(settle_date) settle_date");
cuMemberSettlePeriod = baseMapper.selectOne(queryWrapper1);
if (DateUtils.compareDateAfter(DateUtils.parseDate(date), cuMemberSettlePeriod.getSettleDate())) {
int addDayNum = 8 - DateUtils.getRecentlyDay(cuMemberSettlePeriod.getSettleDate()) + MagicNumberConstants.PERIOD_AUTO_INCREASE;
@ -179,7 +180,7 @@ public class CuMemberSettlePeriodServiceImpl extends ServiceImpl<CuMemberSettleP
}
}
}
cuMemberSettlePeriodDetailService.saveBatch(cuMemberSettlePeriodDetailList);
iCuMemberSettlePeriodDetailService.saveBatch(cuMemberSettlePeriodDetailList);
cuMemberSettlePeriod = getCuMemberSettlePeriod(date);
} else {
return null;
@ -190,9 +191,9 @@ public class CuMemberSettlePeriodServiceImpl extends ServiceImpl<CuMemberSettleP
}
private void packageSettleCountry(List<Integer> weekSettleCountry, List<Integer> daySettleCountry) {
Map<Integer, BdCountry> allCountryMap = countryServiceApi.getAllCountryMap().getData();
Map<Integer, BdCountry> allCountryMap = iCountryServiceApi.getAllCountryMap().getData();
for (Integer pkCountry : allCountryMap.keySet()) {
String value = systemConfigServiceApi.getBonusSystemConfig(pkCountry, ESystemConfig.EXPAND_CAP_METHOD.getKey()).getData();
String value = iSystemConfigServiceApi.getBonusSystemConfig(pkCountry, ESystemConfig.EXPAND_CAP_METHOD.getKey()).getData();
// 周结
if (StringUtils.isNotEmpty(value) && Objects.equals(Integer.toString(EExpandCapMethod.WEEK_SETTLE.getValue()), value)) {
weekSettleCountry.add(pkCountry);
@ -208,8 +209,8 @@ public class CuMemberSettlePeriodServiceImpl extends ServiceImpl<CuMemberSettleP
}
private CuMemberSettlePeriod getCuMemberSettlePeriod(String date) {
QueryWrapper<CuMemberSettlePeriod> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("SETTLE_DATE", DateUtils.parseStringToDate(date));
LambdaQueryWrapper<CuMemberSettlePeriod> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(CuMemberSettlePeriod::getSettleDate, DateUtils.parseStringToDate(date));
return baseMapper.selectOne(queryWrapper);
}
@ -220,9 +221,9 @@ public class CuMemberSettlePeriodServiceImpl extends ServiceImpl<CuMemberSettleP
* @param: null null
**/
private Map<String, CuMemberSettlePeriod> queryCuMemberSettlePeriod(Date startDate, Date endDate) {
QueryWrapper<CuMemberSettlePeriod> queryWrapper = new QueryWrapper<>();
queryWrapper.ge("SETTLE_DATE", startDate);
queryWrapper.le("SETTLE_DATE", endDate);
LambdaQueryWrapper<CuMemberSettlePeriod> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.ge(CuMemberSettlePeriod::getSettleDate, startDate);
queryWrapper.le(CuMemberSettlePeriod::getSettleDate, endDate);
List<CuMemberSettlePeriod> memberSettlePeriodList = baseMapper.selectList(queryWrapper);
Map<String, CuMemberSettlePeriod> cuMemberSettlePeriodMap = new HashMap<>();
memberSettlePeriodList.forEach(cuMemberSettlePeriod ->
@ -232,9 +233,9 @@ public class CuMemberSettlePeriodServiceImpl extends ServiceImpl<CuMemberSettleP
@Override
public List<CuMemberSettlePeriod> queryCuMemberSettlePeriod() {
QueryWrapper<CuMemberSettlePeriod> queryWrapper = new QueryWrapper<>();
queryWrapper.select("PK_ID,SETTLE_DATE");
queryWrapper.orderByDesc(SystemFieldConstants.PK_ID);
LambdaQueryWrapper<CuMemberSettlePeriod> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.select(CuMemberSettlePeriod::getPkId, CuMemberSettlePeriod::getSettleDate);
queryWrapper.orderByDesc(CuMemberSettlePeriod::getPkId);
return baseMapper.selectList(queryWrapper);
}
@ -246,7 +247,7 @@ public class CuMemberSettlePeriodServiceImpl extends ServiceImpl<CuMemberSettleP
@Override
public void updateCuMemberSettlePeriodByDate(CuMemberSettlePeriodExt cuMemberSettlePeriodByDate) {
// baseMapper.updateById(cuMemberSettlePeriodByDate);
cuMemberSettlePeriodDetailService.updateCuMemberSettlePeriodDetailByPeriod(cuMemberSettlePeriodByDate);
iCuMemberSettlePeriodDetailService.updateCuMemberSettlePeriodDetailByPeriod(cuMemberSettlePeriodByDate);
// String key = CacheConstants.CU_MEMBER_SETTLE_PERIOD + DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, cuMemberSettlePeriodByDate.getSettleDate());
// redisService.deleteObjectByKey(key);
}

View File

@ -42,23 +42,23 @@ import java.util.stream.Collectors;
public class CuMemberTreeServiceImpl extends ServiceImpl<CuMemberTreeMapper, CuMemberTree> implements ICuMemberTreeService {
@Autowired
private ICuMemberTreeService memberTreeService;
private ICuMemberTreeService iCuMemberTreeService;
@Autowired
private ICuMemberAchieveService cuMemberAchieveService;
private ICuMemberAchieveService iCuMemberAchieveService;
@Autowired
private ICuMemberSettlePeriodService iCuMemberSettlePeriodService;
@Autowired
private ICuMemberAssessService iCuMemberAssessService;
@Autowired
private ICuBonusExpandService iCuBonusExpandService;
@Autowired
private CuMemberBonusSettle cuMemberBonusSettle;
@Autowired
private ICuMemberSettlePeriodService cuMemberSettlePeriodService;
@Autowired
private ICuMemberAssessService cuMemberAssessService;
@Autowired
private ICuBonusExpandService bonusExpandService;
@Override
@Transactional(rollbackFor = Exception.class)
public void createCuMemberTree(String date) {
// 创建日表记录表
int period = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(date).getPkId();
// 创建日结算cu_member_settle
int period = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(date).getPkId();
String settleTableName = TableNameConstants.CU_MEMBER_SETTLE + period;
Integer number = baseMapper.queryExistOracleTable(settleTableName);
if (number == null || number <= 0) {
@ -77,50 +77,54 @@ public class CuMemberTreeServiceImpl extends ServiceImpl<CuMemberTreeMapper, CuM
Date startDate = DateUtils.beforeMonthFirstDate(settleDate);
updateCuMemberSettleExemptByAward(settleTableName, startDate, endDate);
}
// 创建极差结算记录表
String rangeTableName = TableNameConstants.CU_MEMBER_RANGE + period;
number = baseMapper.queryExistOracleTable(rangeTableName);
if (number == null || number <= 0) {
baseMapper.createCuMemberRangeTable(rangeTableName);
baseMapper.createCuMemberTreeDayOnlyIndex(rangeTableName);
baseMapper.createCuMemberTreeParentIndex(rangeTableName);
}
number = baseMapper.queryExistOrderTableCount(rangeTableName);
if (number == null || number <= 0) {
// 初始化日表数据将cu_member数据插入到最新的日表记录表
// 获取当前月份第一天
Date firstDate = DateUtils.currentMonthFirstDate(DateUtils.parseStringToDate(date));
Integer firstPeriod = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(DateUtils.parseDateToFormat(DateUtils.YYYY_MM_DD, firstDate)).getPkId();
String year = DateUtils.getYear(date);
baseMapper.insertCuMemberRangeByMember(rangeTableName, year, firstPeriod, firstDate);
}
// 创建月表记录表
// // 创建极差结算记录表
// String rangeTableName = TableNameConstants.CU_MEMBER_RANGE + period;
// number = baseMapper.queryExistOracleTable(rangeTableName);
// if (number == null || number <= 0) {
// baseMapper.createCuMemberRangeTable(rangeTableName);
// baseMapper.createCuMemberTreeDayOnlyIndex(rangeTableName);
// baseMapper.createCuMemberTreeParentIndex(rangeTableName);
// }
// number = baseMapper.queryExistOrderTableCount(rangeTableName);
// if (number == null || number <= 0) {
// // 初始化日表数据将cu_member数据插入到最新的日表记录表
// // 获取当前月份第一天
// Date firstDate = DateUtils.currentMonthFirstDate(DateUtils.parseStringToDate(date));
// Integer firstPeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(DateUtils.parseDateToFormat(DateUtils.YYYY_MM_DD, firstDate)).getPkId();
// String year = DateUtils.getYear(date);
// baseMapper.insertCuMemberRangeByMember(rangeTableName, year, firstPeriod, firstDate);
// }
// 创建会员网体月表cu_member_tree
createMonthTreeTableName(date);
// 创建月表业绩记录表
cuMemberAchieveService.createCuMemberAchieve(date);
// 创建月表业绩记录表cu_member_achieve
iCuMemberAchieveService.createCuMemberAchieve(date);
// 创建秒接表秒结表只需要表结构跟日表一模一样秒结表期间是date+1期间
Date tomorrowDate = DateUtils.afterDate(1, ChronoUnit.DAYS, DateUtils.parseStringToDate(date));
String tomorrow = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, tomorrowDate);
int nextPeriod = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(tomorrow).getPkId();
int nextPeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(tomorrow).getPkId();
// 创建会员秒表cu_member_second
String secondTableName = TableNameConstants.CU_MEMBER_SECOND + nextPeriod;
number = baseMapper.queryExistOracleTable(secondTableName);
if (number == null || number <= 0) {
baseMapper.createCuMemberSecondTable(secondTableName);
baseMapper.createCuMemberTreeDayOnlyIndex(secondTableName);
}
String secondRangeTableName = TableNameConstants.CU_MEMBER_RANGE_S + nextPeriod;
number = baseMapper.queryExistOracleTable(secondRangeTableName);
if (number == null || number <= 0) {
baseMapper.createCuMemberRangeSecondTable(secondRangeTableName);
baseMapper.createCuMemberTreeDayOnlyIndex(secondRangeTableName);
}
// // 创建会员级差秒结表cu_member_second_s
// String secondRangeTableName = TableNameConstants.CU_MEMBER_RANGE_S + nextPeriod;
// number = baseMapper.queryExistOracleTable(secondRangeTableName);
// if (number == null || number <= 0) {
// baseMapper.createCuMemberRangeSecondTable(secondRangeTableName);
// baseMapper.createCuMemberTreeDayOnlyIndex(secondRangeTableName);
// }
// 删除60天前的结算日表结算秒表
Date beforeDate = DateUtils.beforeDate(60, ChronoUnit.DAYS, DateUtils.parseStringToDate(date));
// 上个月最后一天
int beforePeriod = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, beforeDate)).getPkId();
int beforePeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, beforeDate)).getPkId();
// 不删除每月最后一天数据
String afterDate = DateUtils.parseDateTimeToStr(DateUtils.YYYY_MM_DD, DateUtils.afterDate(1, ChronoUnit.DAYS, beforeDate));
if (!afterDate.endsWith("01")) {
@ -136,8 +140,9 @@ public class CuMemberTreeServiceImpl extends ServiceImpl<CuMemberTreeMapper, CuM
baseMapper.dropCuMemberSettleTable(beforeSecondTableName);
}
// 4-N 增加碰次需求
BonusExpandParam bonusExpandParam = BonusExpandParam.builder().settleDate(DateUtils.parseStringToDate(date)).build();
bonusExpandService.firstSaveCuBonusExpand(bonusExpandParam);
iCuBonusExpandService.firstSaveCuBonusExpand(bonusExpandParam);
}
@Override
@ -147,7 +152,7 @@ public class CuMemberTreeServiceImpl extends ServiceImpl<CuMemberTreeMapper, CuM
Integer number = baseMapper.queryExistOrderTableCount(settleTableName);
if (number == null || number <= 0) {
// 初始化日表数据将cu_member数据插入到最新的日表记录表
int period = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(date).getPkId();
int period = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(date).getPkId();
String treeTableName = TableNameConstants.CU_MEMBER_TREE + DateUtils.getMonth(date);
String achieveTableName = TableNameConstants.CU_MEMBER_ACHIEVE + DateUtils.getMonth(date);
baseMapper.insertCuMemberSettleByHis(settleTableName, treeTableName, achieveTableName, period);
@ -155,7 +160,7 @@ public class CuMemberTreeServiceImpl extends ServiceImpl<CuMemberTreeMapper, CuM
}
private String createSettleTable(String date) {
int period = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(date).getPkId();
int period = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(date).getPkId();
String settleTableName = TableNameConstants.CU_MEMBER_SETTLE + period;
Integer number = baseMapper.queryExistOracleTable(settleTableName);
// if(number != null && number >0){
@ -168,16 +173,16 @@ public class CuMemberTreeServiceImpl extends ServiceImpl<CuMemberTreeMapper, CuM
baseMapper.createCuMemberTreePlaceIndex(settleTableName);
}
BonusExpandParam bonusExpandParam = BonusExpandParam.builder().settleDate(DateUtils.parseStringToDate(date)).build();
bonusExpandService.firstSaveCuBonusExpand(bonusExpandParam);
iCuBonusExpandService.firstSaveCuBonusExpand(bonusExpandParam);
return settleTableName;
}
@Override
public void initCuMemberAssessData(String settleDate) {
// 创建日表记录表
int period = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(settleDate).getPkId();
int period = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(settleDate).getPkId();
// 创建月表考核记录表
cuMemberAssessService.initCuMemberAssessData(settleDate, period);
iCuMemberAssessService.initCuMemberAssessData(settleDate, period);
}
private String createMonthTreeTableName(String date) {
@ -197,14 +202,14 @@ public class CuMemberTreeServiceImpl extends ServiceImpl<CuMemberTreeMapper, CuM
@Override
public void initCuMemberTreeTable(String yesterdaySettleTableName, String currentSettleTableName) {
// 更新所有值为0
cuMemberAchieveService.updateCuMemberSettleInitAchieve(currentSettleTableName);
iCuMemberAchieveService.updateCuMemberSettleInitAchieve(currentSettleTableName);
// 初始化结算日的数据将日期-1的数据作为当天的数据
cuMemberAchieveService.updateCuMemberSettleAchieveByBeforeDay(yesterdaySettleTableName, currentSettleTableName);
iCuMemberAchieveService.updateCuMemberSettleAchieveByBeforeDay(yesterdaySettleTableName, currentSettleTableName);
}
@Override
public void initCuMemberExpandTreeTable(String yesterdaySettleTableName, String currentSettleTableName) {
cuMemberAchieveService.updateCuMemberExpandSettleAchieveByBeforeDay(yesterdaySettleTableName, currentSettleTableName);
iCuMemberAchieveService.updateCuMemberExpandSettleAchieveByBeforeDay(yesterdaySettleTableName, currentSettleTableName);
}
/**
@ -216,17 +221,17 @@ public class CuMemberTreeServiceImpl extends ServiceImpl<CuMemberTreeMapper, CuM
*/
@Override
public void updateCuMemberSettle(Map<Long, MemberAchieveParam> cuMemberAchieveHashMap, String currentSettleTableName) {
cuMemberAchieveService.updateCuMemberAchieveEveryDay(cuMemberAchieveHashMap, currentSettleTableName);
iCuMemberAchieveService.updateCuMemberAchieveEveryDay(cuMemberAchieveHashMap, currentSettleTableName);
}
@Override
public void updateCuMemberNetAchieve(List<CuMemberAchieveExt> updMemberAchieveExtList, String currentSettleTableName) {
cuMemberAchieveService.updateCuMemberNetAchieve(updMemberAchieveExtList, currentSettleTableName);
iCuMemberAchieveService.updateCuMemberNetAchieve(updMemberAchieveExtList, currentSettleTableName);
}
@Override
public void updateCuMemberBackSettle(Map<Long, MemberAchieveParam> cuMemberAchieveHashMap, String currentSettleTableName) {
cuMemberAchieveService.updateCuMemberBackOldAchieveEveryDay(cuMemberAchieveHashMap, currentSettleTableName);
iCuMemberAchieveService.updateCuMemberBackOldAchieveEveryDay(cuMemberAchieveHashMap, currentSettleTableName);
}
@Override
@ -266,17 +271,22 @@ public class CuMemberTreeServiceImpl extends ServiceImpl<CuMemberTreeMapper, CuM
@Override
@Transactional(rollbackFor = Exception.class)
public void insertCuMemberTreeBySettleDate(String settleDate, String settleTableName, Integer period) {
// 创建月表记录表
// 创建月表记录表cu_member_achieve
String achieveTableName = iCuMemberAchieveService.createCuMemberAchieve(settleDate);
// 创建会员历史网体月表cu_member_tree
String treeTableName = createMonthTreeTableName(settleDate);
String achieveTableName = cuMemberAchieveService.createCuMemberAchieve(settleDate);
// 删除之前的数据
// baseMapper.deleteCuMemberTreeByPeriod(treeTableName, period);
// baseMapper.deleteCuMemberTreeByPeriod(achieveTableName, period);
// 迁移新的数据
// baseMapper.insertCuMemberTreeBySettleDate(treeTableName, settleTableName, period);
// 结算日表网体添加到网体月表中
baseMapper.mergeCuMemberTreeBySettleDate(treeTableName, settleTableName, period);
// cuMemberAchieveService.insertCuMemberAchieveBySettleDate(achieveTableName, settleTableName, period);
cuMemberAchieveService.mergeCuMemberAchieveBySettleDate(achieveTableName, settleTableName, period);
// iCuMemberAchieveService.insertCuMemberAchieveBySettleDate(achieveTableName, settleTableName, period);
// 结算日表的值插入到结算月表中
iCuMemberAchieveService.mergeCuMemberAchieveBySettleDate(achieveTableName, settleTableName, period);
}
@Override
@ -507,9 +517,9 @@ public class CuMemberTreeServiceImpl extends ServiceImpl<CuMemberTreeMapper, CuM
List<MemberParentCountParam> memberParentCountParamPvList = new ArrayList<>();
if (settleTableName.contains(TableNameConstants.CU_MEMBER_SECOND)) {
// 查询秒结表
memberParentCountParamPvList = memberTreeService.queryByMemberParentSumPv(settleTableName, ids);
memberParentCountParamPvList = iCuMemberTreeService.queryByMemberParentSumPv(settleTableName, ids);
} else {
memberParentCountParamPvList = memberTreeService.queryByMemberParentSettleSumPv(settleTableName, ids);
memberParentCountParamPvList = iCuMemberTreeService.queryByMemberParentSettleSumPv(settleTableName, ids);
}
Map<Long, BigDecimal> memberParentPvMap = memberParentCountParamPvList.stream().collect(Collectors.toMap(MemberParentCountParam::getPkMember, MemberParentCountParam::getParentMemberSumPv));
@ -692,7 +702,7 @@ public class CuMemberTreeServiceImpl extends ServiceImpl<CuMemberTreeMapper, CuM
//查询直推业绩
if (StringUtils.isNotBlank(settleTableName)) {
List<MemberParentCountParam> memberParentCountParamPvList = memberTreeService.queryByMemberParentSumPv(settleTableName, memberIds);
List<MemberParentCountParam> memberParentCountParamPvList = iCuMemberTreeService.queryByMemberParentSumPv(settleTableName, memberIds);
Map<Long, BigDecimal> memberParentPvMap = memberParentCountParamPvList.stream().collect(Collectors.toMap(MemberParentCountParam::getPkMember, MemberParentCountParam::getParentMemberSumPv));
cuMemberSettleExt.setHistoryPerformancePv(memberParentPvMap.getOrDefault(cuMemberSettleExt.getPkMember(), BigDecimal.ZERO));
}

View File

@ -29,20 +29,20 @@ import java.util.Date;
public class MemberSettleBonusProvider implements IMemberSettleBonusApi {
@Autowired
private ICuMemberMonthAchieveService cuMemberMonthAchieveService;
private ICuMemberMonthAchieveService iCuMemberMonthAchieveService;
@Autowired
private IBonusSettleService bonusSettleService;
private IBonusSettleService iBonusSettleService;
@Autowired
private ICuMemberBonusService cuMemberBonusService;
private ICuMemberBonusService iCuMemberBonusService;
@Autowired
private IBonusGrantService bonusGrantService;
private IBonusGrantService iBonusGrantService;
@Autowired
private ICuMemberAchieveService cuMemberAchieveService;
private ICuMemberAchieveService iCuMemberAchieveService;
@Override
public R<Boolean> calculateCumberBonusBySecond(String orderCode) {
try {
bonusSettleService.calculateCumberBonusBySecond(orderCode);
iBonusSettleService.calculateCumberBonusBySecond(orderCode);
} catch (Exception e) {
return R.fail();
}
@ -61,7 +61,7 @@ public class MemberSettleBonusProvider implements IMemberSettleBonusApi {
@Override
public void backupsSettleBonusEveryday() {
cuMemberBonusService.backupsSettleBonusEveryday();
iCuMemberBonusService.backupsSettleBonusEveryday();
}
class BonusCalculateBonus extends Thread {
@ -78,7 +78,7 @@ public class MemberSettleBonusProvider implements IMemberSettleBonusApi {
log.info("奖金结算开始, 结算时间:{}", DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, settleDate));
// 奖金结算
try {
cuMemberBonusService.autoCalculateBonus(settleDate, settleEndDate);
iCuMemberBonusService.autoCalculateBonus(settleDate, settleEndDate);
log.info("奖金结算结束");
} catch (Exception e) {
log.error("奖金结算异常,结算时间:{}", DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, settleDate), e);
@ -88,21 +88,21 @@ public class MemberSettleBonusProvider implements IMemberSettleBonusApi {
@Override
public void insertCuMemberAchieveByEveryDay() {
cuMemberMonthAchieveService.insertCuMemberAchieveByEveryDay(DateUtils.beforeDate(1, ChronoUnit.DAYS));
iCuMemberMonthAchieveService.insertCuMemberAchieveByEveryDay(DateUtils.beforeDate(1, ChronoUnit.DAYS));
}
@Override
public void autoPublishBonus() {
bonusGrantService.publishBonusByPeriodEveryDay();
iBonusGrantService.publishBonusByPeriodEveryDay();
}
@Override
public void autoGrantBonus() {
bonusGrantService.grantWithdrawBonusByPeriodEveryDay();
iBonusGrantService.grantWithdrawBonusByPeriodEveryDay();
}
@Override
public Boolean chargeBackSaOrder(SaOrder saOrder) {
return cuMemberAchieveService.chargeBackSaOrder(saOrder);
return iCuMemberAchieveService.chargeBackSaOrder(saOrder);
}
}

View File

@ -26,6 +26,7 @@ import com.hzs.system.base.ICountryServiceApi;
import com.hzs.system.base.ICurrencyServiceApi;
import com.hzs.system.base.dto.CurrencyDTO;
import com.hzs.system.config.IAccountServiceApi;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -43,43 +44,46 @@ import java.util.*;
* @Classname: BonusGrantServiceImpl
* @PackageName: com.hzs.member.bonus.service.impl
*/
@Slf4j
@Service
public class BonusGrantServiceImpl implements IBonusGrantService {
@DubboReference
IAccountServiceApi accountServiceApi;
IAccountServiceApi iAccountServiceApi;
@DubboReference
IActivityServiceApi activityServiceApi;
IActivityServiceApi iActivityServiceApi;
@DubboReference
ICountryServiceApi countryServiceApi;
ICountryServiceApi iCountryServiceApi;
@DubboReference
ICurrencyServiceApi currencyServiceApi;
ICurrencyServiceApi iCurrencyServiceApi;
@Autowired
private ICuMemberBonusService cuMemberBonusService;
private ICuMemberBonusService iCuMemberBonusService;
@Autowired
private ICuMemberSettlePeriodService cuMemberSettlePeriodService;
private ICuMemberSettlePeriodService iCuMemberSettlePeriodService;
@Autowired
private ICuMemberTradeService iCuMemberTradeService;
@Autowired
private ICuMemberTradeDetailService iCuMemberTradeDetailService;
@Autowired
private ICuMemberAccountService iCuMemberAccountService;
@Autowired
private MemberToolsHandler memberToolsHandler;
@Autowired
private ICuMemberTradeService cuMemberTradeService;
@Autowired
private ICuMemberTradeDetailService cuMemberTradeDetailService;
@Autowired
private ICuMemberAccountService cuMemberAccountService;
@Transactional(rollbackFor = Exception.class)
@Override
public void publishBonusByPeriodEveryDay() {
Map<Integer, BdCountry> integerBdCountryMap = countryServiceApi.getAllCountryMap().getData();
Map<Integer, BdCountry> integerBdCountryMap = iCountryServiceApi.getAllCountryMap().getData();
if (integerBdCountryMap.size() > 0) {
for (Integer pkCountry : integerBdCountryMap.keySet()) {
String settleDate = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, DateUtils.beforeDate(1, ChronoUnit.DAYS, DateUtils.currentDate()));
CuMemberSettlePeriodExt cuMemberSettlePeriod = getCuMemberSettlePeriod(pkCountry, settleDate);
log.info("公布奖金参数, settleDate: {}, ", settleDate);
// 设置不公布后不能自动公布奖金
if (EYesNo.PROHIBIT.getIntValue() == cuMemberSettlePeriod.getIsPublish()) {
return;
}
log.info("公布奖金期数状态, isPublish: {}, ", cuMemberSettlePeriod.getIsPublish());
publishBonus(cuMemberSettlePeriod);
}
}
@ -88,7 +92,7 @@ public class BonusGrantServiceImpl implements IBonusGrantService {
@Override
@Transactional(rollbackFor = Exception.class)
public void grantWithdrawBonusByPeriodEveryDay() {
Map<Integer, BdCountry> integerBdCountryMap = countryServiceApi.getAllCountryMap().getData();
Map<Integer, BdCountry> integerBdCountryMap = iCountryServiceApi.getAllCountryMap().getData();
if (integerBdCountryMap.size() > 0) {
for (Integer pkCountry : integerBdCountryMap.keySet()) {
// 先发放奖金验证是否是周结周结发放上周的直接变为可提现
@ -118,13 +122,15 @@ public class BonusGrantServiceImpl implements IBonusGrantService {
if (EYesNo.YES.getIntValue() == cuMemberSettlePeriod.getIsPublish()) {
return;
}
// 更新奖金状态
cuMemberBonusService.updateCuMemberBonusStatus(null, EGrantStatus.PUBLISHED.getValue(), EGrantStatus.SETTLED.getValue(),
log.info("公布奖金开始, periodId: {}, ", cuMemberSettlePeriod.getPkId());
// 更新奖金状态cu_member_bonus
iCuMemberBonusService.updateCuMemberBonusStatus(null, EGrantStatus.PUBLISHED.getValue(), EGrantStatus.SETTLED.getValue(),
cuMemberSettlePeriod.getPkId(), cuMemberSettlePeriod.getPkId());
// 更新期间表状态
// 更新期间表状态cu_member_settle_period_detail
cuMemberSettlePeriod.setIsPublish(EYesNo.YES.getIntValue());
cuMemberSettlePeriod.setPublishDate(DateUtils.currentDateTime());
cuMemberSettlePeriodService.updateCuMemberSettlePeriodByDate(cuMemberSettlePeriod);
iCuMemberSettlePeriodService.updateCuMemberSettlePeriodByDate(cuMemberSettlePeriod);
}
@Override
@ -143,11 +149,11 @@ public class BonusGrantServiceImpl implements IBonusGrantService {
// 更新期间表状态
cuMemberSettlePeriod.setIsPublish(EYesNo.PROHIBIT.getIntValue());
cuMemberSettlePeriod.setPublishDate(DateUtils.currentDateTime());
cuMemberSettlePeriodService.updateCuMemberSettlePeriodByDate(cuMemberSettlePeriod);
iCuMemberSettlePeriodService.updateCuMemberSettlePeriodByDate(cuMemberSettlePeriod);
}
private CuMemberSettlePeriodExt getCuMemberSettlePeriod(Integer pkCountry, String settleDate) {
CuMemberSettlePeriodExt cuMemberSettlePeriodByDate = cuMemberSettlePeriodService.getCuMemberSettlePeriod(pkCountry, DateUtils.parseStringToDate(settleDate));
CuMemberSettlePeriodExt cuMemberSettlePeriodByDate = iCuMemberSettlePeriodService.getCuMemberSettlePeriod(pkCountry, DateUtils.parseStringToDate(settleDate));
cuMemberSettlePeriodByDate.setPkModified(MagicNumberConstants.PK_ADMIN);
cuMemberSettlePeriodByDate.setModifiedTime(DateUtils.currentDateTime());
return cuMemberSettlePeriodByDate;
@ -172,16 +178,16 @@ public class BonusGrantServiceImpl implements IBonusGrantService {
return Boolean.FALSE;
}
}
Map<Integer, BdAccount> bdAccountValueMap = accountServiceApi.getAccountMapByCountry(pkCountry).getData();
Map<Integer, BdAccount> bdAccountValueMap = iAccountServiceApi.getAccountMapByCountry(pkCountry).getData();
Date currentDateTime = DateUtils.currentDateTime();
// 中国需要发放沙棘种树的复购券
if (CountryConstants.CHINA_COUNTRY.equals(pkCountry)) {
// 查询沙棘种树订单
Date startDate = DateUtils.parseStringToDate(settleDate);
Date endDate = DateUtils.afterDate(1, ChronoUnit.DAYS, startDate);
List<SaTreeOrder> treeOrderList = activityServiceApi.querySaTreeOrderByDate(startDate, endDate).getData();
List<SaTreeOrder> treeOrderList = iActivityServiceApi.querySaTreeOrderByDate(startDate, endDate).getData();
if (CollectionUtil.isNotEmpty(treeOrderList)) {
CurrencyDTO currencyDTO = currencyServiceApi.getCurrency(pkCountry).getData();
CurrencyDTO currencyDTO = iCurrencyServiceApi.getCurrency(pkCountry).getData();
Map<Long, CuMemberAccount> cuMemberAccountMap = new HashMap<>();
List<CuMemberTrade> memberTradeList = new ArrayList<>();
for (SaTreeOrder saTreeOrder : treeOrderList) {
@ -213,26 +219,26 @@ public class BonusGrantServiceImpl implements IBonusGrantService {
cuMemberAccountMap.put(saTreeOrder.getPkMember(), cuMemberAccount);
}
}
List<Long> seqList = cuMemberTradeService.batchQueryCuMemberTradeSeq(memberTradeList.size());
List<Long> seqList = iCuMemberTradeService.batchQueryCuMemberTradeSeq(memberTradeList.size());
for (int i = 0; i < memberTradeList.size(); i++) {
CuMemberTrade cuMemberTrade = memberTradeList.get(i);
cuMemberTrade.setPkId(seqList.get(i));
}
cuMemberTradeService.batchInsertCuMemberTrade(memberTradeList);
iCuMemberTradeService.batchInsertCuMemberTrade(memberTradeList);
if (cuMemberAccountMap.size() > 0) {
cuMemberAccountMap.forEach((pkMember, cumemberAccount) -> {
cuMemberAccountService.updateMemberAccount(cumemberAccount, MagicNumberConstants.PK_ADMIN);
iCuMemberAccountService.updateMemberAccount(cumemberAccount, MagicNumberConstants.PK_ADMIN);
});
}
}
}
// 查询奖金表查询未发放的奖金明细
List<CuMemberBonus> cuMemberBonusList = cuMemberBonusService.queryCuMemberBonusByCondition(pkCountry, EGrantStatus.PUBLISHED.getValue(), cuMemberSettlePeriod.getStartPeriod(), cuMemberSettlePeriod.getEndPeriod());
List<CuMemberBonus> cuMemberBonusList = iCuMemberBonusService.queryCuMemberBonusByCondition(pkCountry, EGrantStatus.PUBLISHED.getValue(), cuMemberSettlePeriod.getStartPeriod(), cuMemberSettlePeriod.getEndPeriod());
if (cuMemberBonusList.size() > 0) {
// 新增交易流水
List<CuMemberTrade> cuMemberTradeList = new ArrayList<>();
cuMemberBonusList.forEach(cuMemberBonus -> {
CurrencyDTO currencyDTO = currencyServiceApi.getCurrency(cuMemberBonus.getPkCountry()).getData();
CurrencyDTO currencyDTO = iCurrencyServiceApi.getCurrency(cuMemberBonus.getPkCountry()).getData();
// 奖金币首购+复购+云代+海粉+嗨粉+创客空间+店铺
packAccountTrade(cuMemberTradeList, bdAccountValueMap, EAccount.BONUS.getValue(), currentDateTime, cuMemberBonus, ComputeUtil.computeMultiply(cuMemberBonus.getRealIncomeTotal(), currencyDTO.getOutExchangeRate()), settleDate);
// 重销币商城重消+平台服务费
@ -245,10 +251,10 @@ public class BonusGrantServiceImpl implements IBonusGrantService {
// 车奖积分
// packAccountTrade(cuMemberTradeList, bdAccountValueMap, EAccount.CAR_AWARD_POINTS.getValue(), currentDateTime, cuMemberBonus, ComputeUtil.computeMultiply(cuMemberBonus.getCarAwardPoints(), currencyDTO.getOutExchangeRate()), settleDate);
});
List<Long> seqList = cuMemberTradeService.batchQueryCuMemberTradeSeq(cuMemberTradeList.size());
List<Long> seqList = iCuMemberTradeService.batchQueryCuMemberTradeSeq(cuMemberTradeList.size());
// 新增流水明细,记录奖金明细的发放状态消费明细
List<CuMemberTradeDetail> cuMemberTradeDetailList = new ArrayList<>();
Map<Integer, BdAccount> bdAccountMap = accountServiceApi.getAccountListByCountry(pkCountry).getData();
Map<Integer, BdAccount> bdAccountMap = iAccountServiceApi.getAccountListByCountry(pkCountry).getData();
for (int i = 0; i < cuMemberTradeList.size(); i++) {
CuMemberTrade cuMemberTrade = cuMemberTradeList.get(i);
cuMemberTrade.setPkId(seqList.get(i));
@ -267,18 +273,18 @@ public class BonusGrantServiceImpl implements IBonusGrantService {
}
}
// 批量保存交易流水交易流水明细
cuMemberTradeService.batchInsertCuMemberTrade(cuMemberTradeList);
cuMemberTradeDetailService.batchInsertCuMemberTradeDetail(cuMemberTradeDetailList);
iCuMemberTradeService.batchInsertCuMemberTrade(cuMemberTradeList);
iCuMemberTradeDetailService.batchInsertCuMemberTradeDetail(cuMemberTradeDetailList);
// 批量更新会员账户更新余额
cuMemberAccountService.updateMemberAccountGrantByPeriod(pkCountry, cuMemberSettlePeriod.getStartPeriod(), cuMemberSettlePeriod.getEndPeriod());
iCuMemberAccountService.updateMemberAccountGrantByPeriod(pkCountry, cuMemberSettlePeriod.getStartPeriod(), cuMemberSettlePeriod.getEndPeriod());
// 更新奖金表发放状态
cuMemberBonusService.updateCuMemberBonusStatus(pkCountry, EGrantStatus.GRANT.getValue(), EGrantStatus.PUBLISHED.getValue(),
iCuMemberBonusService.updateCuMemberBonusStatus(pkCountry, EGrantStatus.GRANT.getValue(), EGrantStatus.PUBLISHED.getValue(),
cuMemberSettlePeriod.getStartPeriod(), cuMemberSettlePeriod.getEndPeriod());
}
// 更新期间表状态
cuMemberSettlePeriod.setIsGrant(EYesNo.YES.getIntValue());
cuMemberSettlePeriod.setGrantDate(DateUtils.currentDateTime());
cuMemberSettlePeriodService.updateCuMemberSettlePeriodByDate(cuMemberSettlePeriod);
iCuMemberSettlePeriodService.updateCuMemberSettlePeriodByDate(cuMemberSettlePeriod);
return Boolean.TRUE;
}
@ -287,14 +293,14 @@ public class BonusGrantServiceImpl implements IBonusGrantService {
// 奖金发放
CuMemberSettlePeriodExt cuMemberSettlePeriod = getCuMemberSettlePeriod(pkCountry, settleDate);
// 查询奖金表查询未发放的奖金明细
List<CuMemberBonus> cuMemberBonusList = cuMemberBonusService.queryCuMemberBonusByCondition(pkCountry, EGrantStatus.PUBLISHED.getValue(), cuMemberSettlePeriod.getStartPeriod(), cuMemberSettlePeriod.getEndPeriod());
Map<Integer, BdAccount> bdAccountValueMap = accountServiceApi.getAccountMapByCountry(pkCountry).getData();
List<CuMemberBonus> cuMemberBonusList = iCuMemberBonusService.queryCuMemberBonusByCondition(pkCountry, EGrantStatus.PUBLISHED.getValue(), cuMemberSettlePeriod.getStartPeriod(), cuMemberSettlePeriod.getEndPeriod());
Map<Integer, BdAccount> bdAccountValueMap = iAccountServiceApi.getAccountMapByCountry(pkCountry).getData();
Date currentDateTime = DateUtils.currentDateTime();
if (cuMemberBonusList.size() > 0) {
// 新增交易流水
List<CuMemberTrade> cuMemberTradeList = new ArrayList<>();
cuMemberBonusList.forEach(cuMemberBonus -> {
CurrencyDTO currencyDTO = currencyServiceApi.getCurrency(cuMemberBonus.getPkCountry()).getData();
CurrencyDTO currencyDTO = iCurrencyServiceApi.getCurrency(cuMemberBonus.getPkCountry()).getData();
// 奖金币首购+复购+云代+海粉+嗨粉+创客空间+店铺
packAccountTrade(cuMemberTradeList, bdAccountValueMap, EAccount.BONUS.getValue(), currentDateTime, cuMemberBonus, ComputeUtil.computeMultiply(cuMemberBonus.getRealIncomeTotal(), currencyDTO.getOutExchangeRate()), settleDate);
// 重销币商城重消+平台服务费
@ -307,10 +313,10 @@ public class BonusGrantServiceImpl implements IBonusGrantService {
// 车奖积分
// packAccountTrade(cuMemberTradeList, bdAccountValueMap, EAccount.CAR_AWARD_POINTS.getValue(), currentDateTime, cuMemberBonus, ComputeUtil.computeMultiply(cuMemberBonus.getCarAwardPoints(), currencyDTO.getOutExchangeRate()), settleDate);
});
List<Long> seqList = cuMemberTradeService.batchQueryCuMemberTradeSeq(cuMemberTradeList.size());
List<Long> seqList = iCuMemberTradeService.batchQueryCuMemberTradeSeq(cuMemberTradeList.size());
// 新增流水明细,记录奖金明细的发放状态消费明细
List<CuMemberTradeDetail> cuMemberTradeDetailList = new ArrayList<>();
Map<Integer, BdAccount> bdAccountMap = accountServiceApi.getAccountListByCountry(pkCountry).getData();
Map<Integer, BdAccount> bdAccountMap = iAccountServiceApi.getAccountListByCountry(pkCountry).getData();
for (int i = 0; i < cuMemberTradeList.size(); i++) {
CuMemberTrade cuMemberTrade = cuMemberTradeList.get(i);
cuMemberTrade.setPkId(seqList.get(i));
@ -329,12 +335,12 @@ public class BonusGrantServiceImpl implements IBonusGrantService {
}
}
// 批量保存交易流水交易流水明细
cuMemberTradeService.batchInsertCuMemberTrade(cuMemberTradeList);
cuMemberTradeDetailService.batchInsertCuMemberTradeDetail(cuMemberTradeDetailList);
iCuMemberTradeService.batchInsertCuMemberTrade(cuMemberTradeList);
iCuMemberTradeDetailService.batchInsertCuMemberTradeDetail(cuMemberTradeDetailList);
// 批量更新会员账户更新余额
cuMemberAccountService.updateMemberAccountGrantByPeriod(pkCountry, cuMemberSettlePeriod.getStartPeriod(), cuMemberSettlePeriod.getEndPeriod());
iCuMemberAccountService.updateMemberAccountGrantByPeriod(pkCountry, cuMemberSettlePeriod.getStartPeriod(), cuMemberSettlePeriod.getEndPeriod());
// 更新奖金表发放状态
cuMemberBonusService.updateCuMemberBonusStatus(pkCountry, EGrantStatus.GRANT.getValue(), EGrantStatus.PUBLISHED.getValue(),
iCuMemberBonusService.updateCuMemberBonusStatus(pkCountry, EGrantStatus.GRANT.getValue(), EGrantStatus.PUBLISHED.getValue(),
cuMemberSettlePeriod.getStartPeriod(), cuMemberSettlePeriod.getEndPeriod());
}
}
@ -361,15 +367,15 @@ public class BonusGrantServiceImpl implements IBonusGrantService {
}
}
// 批量更新会员账户更新余额
cuMemberAccountService.updateMemberAccountWithdrawalByPeriod(cuMemberSettlePeriod.getStartPeriod(), cuMemberSettlePeriod.getEndPeriod(), pkCountry);
iCuMemberAccountService.updateMemberAccountWithdrawalByPeriod(cuMemberSettlePeriod.getStartPeriod(), cuMemberSettlePeriod.getEndPeriod(), pkCountry);
// 更新交易明细表状态 cu_member_trade_detail
cuMemberTradeDetailService.updateCuMemberTradeDetailByPeriod(cuMemberSettlePeriod.getStartPeriod(), cuMemberSettlePeriod.getEndPeriod(), pkCountry);
iCuMemberTradeDetailService.updateCuMemberTradeDetailByPeriod(cuMemberSettlePeriod.getStartPeriod(), cuMemberSettlePeriod.getEndPeriod(), pkCountry);
// 更新奖金表发放状态
cuMemberBonusService.updateCuMemberBonusStatus(pkCountry, EGrantStatus.WITHDRAWAL.getValue(), EGrantStatus.GRANT.getValue(), cuMemberSettlePeriod.getStartPeriod(), cuMemberSettlePeriod.getEndPeriod());
iCuMemberBonusService.updateCuMemberBonusStatus(pkCountry, EGrantStatus.WITHDRAWAL.getValue(), EGrantStatus.GRANT.getValue(), cuMemberSettlePeriod.getStartPeriod(), cuMemberSettlePeriod.getEndPeriod());
// 更新期间表状态
cuMemberSettlePeriod.setIsWithdrawal(EYesNo.YES.getIntValue());
cuMemberSettlePeriod.setWithdrawalDate(DateUtils.currentDateTime());
cuMemberSettlePeriodService.updateCuMemberSettlePeriodByDate(cuMemberSettlePeriod);
iCuMemberSettlePeriodService.updateCuMemberSettlePeriodByDate(cuMemberSettlePeriod);
}
/**

View File

@ -18,7 +18,6 @@ import com.hzs.bonus.bonus.param.LeXueRangeParam;
import com.hzs.bonus.bonus.service.*;
import com.hzs.bonus.bonus.vo.BonusRecordDetailVO;
import com.hzs.bonus.bonus.vo.MemberBonusDetailCalVO;
import com.hzs.bonus.detail.service.ICuMemberAssessService;
import com.hzs.bonus.detail.service.ICuMemberAwardsService;
import com.hzs.bonus.risk.service.ICuMemberRiskControlService;
import com.hzs.bonus.swing.service.ICuMemberSwingNetLogService;
@ -78,49 +77,63 @@ import java.util.*;
public class BonusSettleServiceImpl implements IBonusSettleService {
@DubboReference
ISystemConfigServiceApi systemConfigServiceApi;
ISystemConfigServiceApi iSystemConfigServiceApi;
@DubboReference
IGradeServiceApi gradeServiceApi;
IGradeServiceApi iGradeServiceApi;
@DubboReference
IAwardsServiceApi awardsServiceApi;
IAwardsServiceApi iAwardsServiceApi;
@DubboReference
IRangeServiceApi rangeServiceApi;
IRangeServiceApi iRangeServiceApi;
@DubboReference
IMemberServiceApi memberServiceApi;
IBonusItemsServiceApi iBonusItemsServiceApi;
@DubboReference
IBonusItemsServiceApi bonusItemsServiceApi;
IMemberServiceApi iMemberServiceApi;
@DubboReference
IAcPickServiceApi acPickServiceApi;
ISaOrderServiceApi iSaOrderServiceApi;
@DubboReference
ISaOrderServiceApi saOrderServiceApi;
IAcPickServiceApi iAcPickServiceApi;
@Autowired
private ICuMemberTreeService cuMemberTreeService;
private ICuMemberTreeService iCuMemberTreeService;
@Autowired
private ICuMemberSettlePeriodService cuMemberSettlePeriodService;
private ICuMemberSettlePeriodService iCuMemberSettlePeriodService;
@Autowired
private ICuMemberAwardsService cuMemberAwardsService;
private ICuMemberAwardsService iCuMemberAwardsService;
@Autowired
private ICuMemberAssessService cuMemberAssessService;
private ICuMemberService iCuMemberService;
@Autowired
private ICuMemberService cuMemberService;
private ICuMemberAchieveLogService iCuMemberAchieveLogService;
@Autowired
private ICuMemberAchieveLogService cuMemberAchieveLogService;
private ICuMemberAchieveService iCuMemberAchieveService;
@Autowired
private ICuMemberAchieveService cuMemberAchieveService;
private ICuAwardsControlService iCuAwardsControlService;
@Autowired
private ICuAwardsControlService cuAwardsControlService;
private ICuMemberSwingNetLogService iCuMemberSwingNetLogService;
@Autowired
private ICuMemberSwingNetLogService cuMemberSwingNetLogService;
private ICuMemberRepeatBonusService iCuMemberRepeatBonusService;
@Autowired
private ICuMemberRepeatBonusService cuMemberRepeatBonusService;
private IBdWaresBonusService iBdWaresBonusService;
@Autowired
private ICuBonusExpandService iCuBonusExpandService;
@Autowired
private ICuMemberBonusService iCuMemberBonusService;
@Autowired
private ICuMemberBonusPushService iCuMemberBonusPushService;
@Autowired
private ICuMemberBonusExpandService iCuMemberBonusExpandService;
@Autowired
private ICuMemberBonusCoachService iCuMemberBonusCoachService;
@Autowired
private ICuMemberBonusDetailService iCuMemberBonusDetailService;
@Autowired
private ICuMemberBonusRangeService iCuMemberBonusRangeService;
@Autowired
private ICuMemberRangeService iCuMemberRangeService;
@Autowired
private ICuMemberRiskControlService iCuMemberRiskControlService;
@Autowired
private BonusSettleRangeHandle bonusSettleRangeHandle;
@Autowired
private IBdWaresBonusService bdWaresBonusService;
@Autowired
private ICuBonusExpandService bonusExpandService;
@Autowired
private BonusSettleFirstPurchaseHandle bonusSettleFirstPurchaseHandle;
@Autowired
private BonusSettlePurchaseHandle bonusSettlePurchaseHandle;
@ -132,46 +145,30 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
private BonusSettleRepCouponsHandle bonusSettleRepCouponsHandle;
@Autowired
private BonusSettleMallHandle bonusSettleMallHandle;
@Autowired
private ICuMemberBonusService cuMemberBonusService;
@Autowired
private ICuMemberBonusPushService cuMemberBonusPushService;
@Autowired
private ICuMemberBonusExpandService cuMemberBonusExpandService;
@Autowired
private ICuMemberBonusCoachService cuMemberBonusCoachService;
@Autowired
private ICuMemberBonusDetailService cuMemberBonusDetailService;
@Autowired
private ICuMemberBonusRangeService cuMemberBonusRangeService;
@Autowired
private ICuMemberRangeService cuMemberRangeService;
@Autowired
private ICuMemberRiskControlService cuMemberRiskControlService;
@Override
@Transactional(rollbackFor = Exception.class)
public void calculateCumberBonusBySecond(String orderCode) {
log.info("开始执行秒接,订单编号:{}", orderCode);
Date startDate = DateUtils.currentDate();
SaOrderExt saOrderExt = saOrderServiceApi.querySaOrderByDay(startDate,
SaOrderExt saOrderExt = iSaOrderServiceApi.querySaOrderByDay(startDate,
DateUtils.afterDate(1, ChronoUnit.DAYS, startDate), orderCode).getData();
Map<String, String> systemConfigMap = systemConfigServiceApi.getBonusSystemConfig().getData();
Map<String, RangeDTO> rangeDtoMap = rangeServiceApi.queryRangeDto().getData();
Map<String, String> systemConfigMap = iSystemConfigServiceApi.getBonusSystemConfig().getData();
Map<String, RangeDTO> rangeDtoMap = iRangeServiceApi.queryRangeDto().getData();
// 处理奖金结算秒结表判断是否存在当天结算的秒接表从cu_member中获取网体从昨日结算表中获取累计结余数据
String settleDate = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, saOrderExt.getPayTime());
String beforeDay = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, DateUtils.beforeDate(1, ChronoUnit.DAYS, saOrderExt.getPayTime()));
String beforeYesDay = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, DateUtils.beforeDate(2, ChronoUnit.DAYS, saOrderExt.getPayTime()));
int period = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(settleDate).getPkId();
int beforePeriod = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(beforeDay).getPkId();
int beforeYesPeriod = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(beforeYesDay).getPkId();
int period = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(settleDate).getPkId();
int beforePeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(beforeDay).getPkId();
int beforeYesPeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(beforeYesDay).getPkId();
log.info("查询订单,订单参数:{}", JSONUtil.toJsonStr(saOrderExt));
String secondTableName = TableNameConstants.CU_MEMBER_SECOND + period;
String settleTableName = TableNameConstants.CU_MEMBER_SETTLE + beforePeriod;
// 前天
String yesSettleTableName = TableNameConstants.CU_MEMBER_SETTLE + beforeYesPeriod;
Map<Long, CuMemberBonus> cuMemberBonusMap = new HashMap<>(MagicNumberConstants.DELETE_DATA_BATCH_UPDATE_NUM);
BonusConfigDTO bonusConfigDTO = bonusItemsServiceApi.queryBonusConfigDTO().getData();
BonusConfigDTO bonusConfigDTO = iBonusItemsServiceApi.queryBonusConfigDTO().getData();
Map<Long, CuMemberSettleExt> cuMemberSettleExtMap = new HashMap<>();
Map<Long, CuAwardsControl> cuAwardsControlMap = getCuAwardsControlMap();
// 计算奖金
@ -188,34 +185,34 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
// 领导奖- 安置血缘以上判断奖衔
// 报单服务费 - 报单人
List<Long> memberList = new ArrayList<>();
CuMember cuMember = cuMemberService.getMember(saOrderExt.getPkMember());
CuMember cuMember = iCuMemberService.getMember(saOrderExt.getPkMember());
if (cuMember.getPkCenterCode() != null && !saOrderExt.getPkReference().equals(cuMember.getPkCenterCode())) {
memberList.add(cuMember.getPkCenterCode());
}
getSettleMember(saOrderExt, secondTableName, settleTableName, yesSettleTableName, memberList);
// 查询出上面的网体数据
List<CuMemberSettleExt> cuMemberSettleExtList = cuMemberTreeService.queryCuMemberSecondParent(secondTableName, memberList);
List<CuMemberSettleExt> cuMemberSettleExtList = iCuMemberTreeService.queryCuMemberSecondParent(secondTableName, memberList);
bonusSettleFirstPurchaseHandle.getSecondMemberSettle(cuMemberSettleExtMap, cuMemberSettleExtList);
// 计算奖金
// 计算直推奖
List<GradeDTO> gradeDtoList = gradeServiceApi.queryGradeConfigByCondition(saOrderExt.getPkCountry()).getData();
CuMemberBonusPush cuMemberBonusPush = bonusSettleFirstPurchaseHandle.calculatePushBonusOne(cuMemberSettleExtMap, bonusConfigDTO, systemConfigMap, period, cuMemberBonusMap, saOrderExt, awardsServiceApi.getAwards().getData(), gradeDtoList);
List<GradeDTO> gradeDtoList = iGradeServiceApi.queryGradeConfigByCondition(saOrderExt.getPkCountry()).getData();
CuMemberBonusPush cuMemberBonusPush = bonusSettleFirstPurchaseHandle.calculatePushBonusOne(cuMemberSettleExtMap, bonusConfigDTO, systemConfigMap, period, cuMemberBonusMap, saOrderExt, iAwardsServiceApi.getAwards().getData(), gradeDtoList);
log.info("获得直推奖,奖金为:{}", JSONUtil.toJsonStr(cuMemberBonusPush));
// 计算量奖
// 所有需要计算的父节点只计算新增
List<CuMemberSettleExt> expandMemberSettleExtList = cuMemberTreeService.queryCuMemberSecondPlaceParent(secondTableName, saOrderExt.getPkMember());
List<CuMemberSettleExt> expandMemberSettleExtList = iCuMemberTreeService.queryCuMemberSecondPlaceParent(secondTableName, saOrderExt.getPkMember());
bonusSettleFirstPurchaseHandle.getSecondMemberSettle(cuMemberSettleExtMap, expandMemberSettleExtList);
Map<Long, CuMemberBonus> weekMemberBonusMap = getWeekMemberBonusMap(settleDate, period);
Map<Long, CuMemberAssess> cuMemberAssessMap = bonusSettleFirstPurchaseHandle.getLongCuMemberAssessMap(settleDate, expandMemberSettleExtList);
// 查询K值控制
List<CuMemberRiskControl> cuMemberRiskControlList = cuMemberRiskControlService.queryCuMemberRiskControl(DateUtils.parseStringToDate(settleDate));
List<CuMemberRiskControl> cuMemberRiskControlList = iCuMemberRiskControlService.queryCuMemberRiskControl(DateUtils.parseStringToDate(settleDate));
Map<Long, CuMemberRiskControl> riskControlMap = new HashMap<>();
if (CollectionUtil.isNotEmpty(cuMemberRiskControlList)) {
cuMemberRiskControlList.forEach(cuMemberRiskControl -> riskControlMap.put(cuMemberRiskControl.getPkMember(), cuMemberRiskControl));
}
Map<Long, CuBonusExpandExt> cuBonusExpandExtMap = new HashMap<>();
BonusExpandParam bonusExpandParam = BonusExpandParam.builder().settleDate(DateUtils.parseStringToDate(settleDate)).build();
List<CuBonusExpandExt> cuBonusExpandExtList = bonusExpandService.queryBonusExpand(bonusExpandParam);
List<CuBonusExpandExt> cuBonusExpandExtList = iCuBonusExpandService.queryBonusExpand(bonusExpandParam);
cuBonusExpandExtList.forEach(cuBonusExpandExt -> cuBonusExpandExtMap.put(cuBonusExpandExt.getPkMember(), cuBonusExpandExt));
BigDecimal addTouch = BigDecimal.ZERO;
for (int i = expandMemberSettleExtList.size() - 1; i >= 0; i--) {
@ -236,14 +233,14 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
List<CuMemberBonusDetail> couponsBonusDetailList = bonusSettleRepCouponsHandle.calculateRepurchaseCoupons(startDate, Collections.singletonList(saOrderExt), period, bonusConfigDTO, cuMemberBonusMap, cuMemberSettleExtMap);
saveCuMemberBonus(period, settleDate, cuMemberBonusMap);
cuMemberBonusPush.setPkBonus(cuMemberBonusMap.get(cuMemberBonusPush.getPkBonus()).getPkId());
Set<Long> memberIdSet = cuMemberBonusService.queryMemberBonusByPeriod(period);
cuMemberBonusPushService.insertCuMemberBonusPush(cuMemberBonusPush);
Set<Long> memberIdSet = iCuMemberBonusService.queryMemberBonusByPeriod(period);
iCuMemberBonusPushService.insertCuMemberBonusPush(cuMemberBonusPush);
cuMemberBonusExpandList.forEach(cuMemberBonusExpand ->
cuMemberBonusExpand.setPkBonus(cuMemberBonusMap.get(cuMemberBonusExpand.getPkBonus()).getPkId()));
cuMemberBonusExpandService.batchInsertCuMemberBonusExpand(cuMemberBonusExpandList, memberIdSet);
iCuMemberBonusExpandService.batchInsertCuMemberBonusExpand(cuMemberBonusExpandList, memberIdSet);
cuMemberBonusCoachList.forEach(cuMemberBonusCoach ->
cuMemberBonusCoach.setPkBonus(cuMemberBonusMap.get(cuMemberBonusCoach.getPkBonus()).getPkId()));
cuMemberBonusCoachService.batchInsertCuMemberBonusCoach(cuMemberBonusCoachList, memberIdSet);
iCuMemberBonusCoachService.batchInsertCuMemberBonusCoach(cuMemberBonusCoachList, memberIdSet);
List<CuMemberBonusDetail> cuMemberBonusDetailList = new ArrayList<>();
if (cuMemberBonusDetail != null) {
cuMemberBonusDetailList.add(cuMemberBonusDetail);
@ -254,7 +251,7 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
if (cuMemberBonusDetailList.size() > 0) {
cuMemberBonusDetailList.forEach(bonusDetail ->
bonusDetail.setPkBonus(cuMemberBonusMap.get(bonusDetail.getPkBonus()).getPkId()));
cuMemberBonusDetailService.batchInsertCuMemberBonusDetail(cuMemberBonusDetailList, memberIdSet);
iCuMemberBonusDetailService.batchInsertCuMemberBonusDetail(cuMemberBonusDetailList, memberIdSet);
}
log.info("首购奖金计算完毕");
} else {
@ -262,16 +259,16 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
List<Long> memberList = new ArrayList<>();
getSettleMember(saOrderExt, secondTableName, yesSettleTableName, settleTableName, memberList);
// 初始化需要秒接结算的数据
List<CuMemberSettleExt> pushMemberSettleExtList = cuMemberTreeService.queryCuMemberSecondParent(secondTableName, memberList);
List<CuMemberSettleExt> pushMemberSettleExtList = iCuMemberTreeService.queryCuMemberSecondParent(secondTableName, memberList);
bonusSettleFirstPurchaseHandle.getSecondMemberSettle(cuMemberSettleExtMap, pushMemberSettleExtList);
List<CuMemberBonusPush> cuMemberBonusPushList = bonusSettlePurchaseHandle.calculateRepurchasePushSecondBonus(settleTableName, cuMemberSettleExtMap, bonusConfigDTO, period, cuMemberBonusMap, saOrderExt, pushMemberSettleExtList, settleDate);
// 查询出上面的网体数据
List<CuMemberSettleExt> cuMemberSettleExtList = cuMemberTreeService.queryCuMemberSecondPlaceParent(secondTableName, saOrderExt.getPkMember());
List<CuMemberSettleExt> cuMemberSettleExtList = iCuMemberTreeService.queryCuMemberSecondPlaceParent(secondTableName, saOrderExt.getPkMember());
bonusSettleFirstPurchaseHandle.getSecondMemberSettle(cuMemberSettleExtMap, cuMemberSettleExtList);
Map<Long, CuMemberBonus> weekMemberBonusMap = getWeekMemberBonusMap(settleDate, period);
// 复购订单计算复购推荐 复购极差复购拓展
// 查询K值控制
List<CuMemberRiskControl> cuMemberRiskControlList = cuMemberRiskControlService.queryCuMemberRiskControl(DateUtils.parseStringToDate(settleDate));
List<CuMemberRiskControl> cuMemberRiskControlList = iCuMemberRiskControlService.queryCuMemberRiskControl(DateUtils.parseStringToDate(settleDate));
Map<Long, CuMemberRiskControl> riskControlMap = new HashMap<>();
if (CollectionUtil.isNotEmpty(cuMemberRiskControlList)) {
cuMemberRiskControlList.forEach(cuMemberRiskControl -> riskControlMap.put(cuMemberRiskControl.getPkMember(), cuMemberRiskControl));
@ -279,28 +276,28 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
List<CuMemberBonusExpand> cuMemberBonusExpandList = bonusSettlePurchaseHandle.calculateRepurchaseExpandSecondBonus(riskControlMap, settleTableName,
cuMemberSettleExtMap, bonusConfigDTO, systemConfigMap, period, weekMemberBonusMap, cuMemberBonusMap, saOrderExt, cuMemberSettleExtList, settleDate, BigDecimal.ZERO, BigDecimal.ZERO, 0);
// c)增加奖衔记录表
Map<String, BdAwards> awardsMap = awardsServiceApi.getAwards().getData();
Map<String, BdAwards> awardsMap = iAwardsServiceApi.getAwards().getData();
List<CuMemberBonusRange> cuMemberBonusRangeList = bonusSettlePurchaseHandle.calculateRepurchaseRangeBonus(cuMemberSettleExtMap, settleTableName, settleDate, rangeDtoMap, awardsMap,
bonusConfigDTO, Collections.singletonList(saOrderExt), period, cuMemberBonusMap, cuAwardsControlMap, new LeXueRangeParam());
if (cuMemberBonusMap.size() > 0) {
saveCuMemberBonus(period, settleDate, cuMemberBonusMap);
Set<Long> memberIdSet = cuMemberBonusService.queryMemberBonusByPeriod(period);
Set<Long> memberIdSet = iCuMemberBonusService.queryMemberBonusByPeriod(period);
cuMemberBonusPushList.forEach(cuMemberBonusPush ->
cuMemberBonusPush.setPkBonus(cuMemberBonusMap.get(cuMemberBonusPush.getPkBonus()).getPkId()));
cuMemberBonusPushService.batchInsertCuMemberBonusPush(cuMemberBonusPushList, memberIdSet);
iCuMemberBonusPushService.batchInsertCuMemberBonusPush(cuMemberBonusPushList, memberIdSet);
cuMemberBonusExpandList.forEach(cuMemberBonusExpand ->
cuMemberBonusExpand.setPkBonus(cuMemberBonusMap.get(cuMemberBonusExpand.getPkBonus()).getPkId()));
cuMemberBonusExpandService.batchInsertCuMemberBonusExpand(cuMemberBonusExpandList, memberIdSet);
iCuMemberBonusExpandService.batchInsertCuMemberBonusExpand(cuMemberBonusExpandList, memberIdSet);
cuMemberBonusRangeList.forEach(cuMemberBonusRange ->
cuMemberBonusRange.setPkBonus(cuMemberBonusMap.get(cuMemberBonusRange.getPkBonus()).getPkId()));
cuMemberBonusRangeService.batchInsertCuMemberBonusRange(cuMemberBonusRangeList, memberIdSet);
iCuMemberBonusRangeService.batchInsertCuMemberBonusRange(cuMemberBonusRangeList, memberIdSet);
}
log.info("复购奖金计算完毕");
}
// 更新网体结构
if (cuMemberSettleExtMap.size() > 0) {
// 处理网体更新网体新增 轮次最小值 cuMemberSettleExtMap
cuMemberTreeService.updateCuMemberSecond(secondTableName, cuMemberSettleExtMap);
iCuMemberTreeService.updateCuMemberSecond(secondTableName, cuMemberSettleExtMap);
}
// 1获取业绩做一张新表计算过奖金的放进去 2当天没有计算过奖金的直接根据昨天日表获取业绩放进去进行计算
// 根据网体数据计算奖金
@ -311,7 +308,7 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
memberList.add(saOrderExt.getPkMember());
long pkParent = saOrderExt.getPkReference();
while (true) {
CuMember cuMember = cuMemberService.getMember(pkParent);
CuMember cuMember = iCuMemberService.getMember(pkParent);
if (cuMember == null) {
break;
}
@ -319,7 +316,7 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
pkParent = cuMember.getPkParent();
}
// 初始化需要秒接结算的数据
cuMemberTreeService.updateCuMemberSecondPlaceParent(secondTableName, settleTableName, yesSettleTableName, saOrderExt.getPkMember(), memberList, EYesNo.YES.getIntValue());
iCuMemberTreeService.updateCuMemberSecondPlaceParent(secondTableName, settleTableName, yesSettleTableName, saOrderExt.getPkMember(), memberList, EYesNo.YES.getIntValue());
}
/**
@ -334,8 +331,8 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
// 保存奖金
List<CuMemberBonus> cuMemberBonusList = setCuMemberBonusSeq(settleDate, cuMemberBonusMap);
// 插入奖金主表
cuMemberBonusService.insertOrUpdateCuMemberBonus(cuMemberBonusList);
List<CuMemberBonus> cuMemberBonuses = cuMemberBonusService.queryCuMemberBonus(period, cuMemberBonusList);
iCuMemberBonusService.insertOrUpdateCuMemberBonus(cuMemberBonusList);
List<CuMemberBonus> cuMemberBonuses = iCuMemberBonusService.queryCuMemberBonus(period, cuMemberBonusList);
cuMemberBonuses.forEach(cuMemberBonus -> cuMemberBonusMap.put(cuMemberBonus.getPkMember(), cuMemberBonus));
}
@ -349,29 +346,29 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
public void calculateCuMemberBonus(String settleDate, List<SaOrderExt> saOrderExtList) {
try {
// 期间
Integer period = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(settleDate).getPkId();
Integer period = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(settleDate).getPkId();
// 会员结算日表cu_member_settle + 期间
String currentSettleTableName = TableNameConstants.CU_MEMBER_SETTLE + period;
String yesterday = DateUtils.beforeDateStr(1, ChronoUnit.DAYS, DateUtils.YYYY_MM_DD, settleDate);
// 昨日期间
Integer yesterdayPeriod = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(yesterday).getPkId();
Integer yesterdayPeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(yesterday).getPkId();
// 查询日期-1的网体数据从日历史表中获得
// 将结算日昨日业绩数据 迁移到 网体业绩历史记录结算表
String yesterdayTableName = TableNameConstants.CU_MEMBER_SETTLE + yesterdayPeriod;
validateSettleTable(yesterday, yesterdayTableName);
Map<String, BdAwards> awardsMap = awardsServiceApi.getAwards().getData();
cuMemberTreeService.initCuMemberTreeTable(yesterdayTableName, currentSettleTableName);
Map<String, BdAwards> awardsMap = iAwardsServiceApi.getAwards().getData();
iCuMemberTreeService.initCuMemberTreeTable(yesterdayTableName, currentSettleTableName);
// 查看是否有特殊业务有特殊业务的处理特殊业务注水处理
List<CuMemberAchieveLog> cuMemberAchieveLogList = cuMemberAchieveLogService.queryMemberAchieveLogByPeriod(period);
List<CuMemberAchieveLog> cuMemberAchieveLogList = iCuMemberAchieveLogService.queryMemberAchieveLogByPeriod(period);
// 有特殊业务
if (cuMemberAchieveLogList.size() > 0) {
cuMemberAchieveLogList.forEach(cuMemberAchieveLog -> cuMemberAchieveService.updateCuMemberSettleAchieveBySpecialBus(currentSettleTableName, period, cuMemberAchieveLog.getPkId()));
cuMemberAchieveLogList.forEach(cuMemberAchieveLog -> iCuMemberAchieveService.updateCuMemberSettleAchieveBySpecialBus(currentSettleTableName, period, cuMemberAchieveLog.getPkId()));
}
// 注水到期回退
cuMemberAchieveService.mergeCuMemberSettleByAchieveLogByDate(currentSettleTableName, DateUtils.parseStringToDate(settleDate));
iCuMemberAchieveService.mergeCuMemberSettleByAchieveLogByDate(currentSettleTableName, DateUtils.parseStringToDate(settleDate));
// 判断特殊业务是否有到期日期有到期的需要使用真实业绩昨天的期间真实更新当前的
cuMemberAchieveService.updateCuMemberSettleAchieveByDueDate(currentSettleTableName, yesterdayTableName, DateUtils.parseStringToDate(settleDate));
iCuMemberAchieveService.updateCuMemberSettleAchieveByDueDate(currentSettleTableName, yesterdayTableName, DateUtils.parseStringToDate(settleDate));
// 根据日期开始计算网体 + 业绩
//********************* 更新网体*************/
@ -413,10 +410,10 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
packageSaOrderListByType(firPurchaseOrderList, repurchaseOrderList, mallOrderList, saOrderExt);
});
// 将删除的订单的点位变为死点
cuMemberTreeService.updateCuMemberTreeByCancelOrder(revokeRegSaOrderList, revokeUpdSaOrderList, settleDate, currentSettleTableName);
iCuMemberTreeService.updateCuMemberTreeByCancelOrder(revokeRegSaOrderList, revokeUpdSaOrderList, settleDate, currentSettleTableName);
//********************************* 更新当天最新的业绩*************************/
// 获取所有国家的奖金项 key = 国家 + 奖金项的值
BonusConfigDTO bonusConfigDTO = bonusItemsServiceApi.queryBonusConfigDTO().getData();
BonusConfigDTO bonusConfigDTO = iBonusItemsServiceApi.queryBonusConfigDTO().getData();
//*********************************计算奖衔 更新奖衔*********************************/
// 开始计算奖衔 计算奖衔 更新奖衔根据最新业绩查询变动且业绩满足下一等级根据等级判断是否满足考核安置考核或血缘考核
@ -424,15 +421,16 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
// 获取到奖衔配置
// a)更新会员表
// b)更新结算网体表 (月表日表)
// c)增加奖衔记录表
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);
// 计算完奖衔回退业绩最终根据新增进行回写
cuMemberTreeService.updateCuMemberBackSettle(cuMemberAchieveHashMap, currentSettleTableName);
// 金额业绩先上传处理完奖衔会再退回去
iCuMemberTreeService.updateCuMemberSettle(cuMemberAchieveHashMap, currentSettleTableName);
// 实际处理数据方法
iCuMemberAwardsService.calculateCuMemberAwards(settleDate, awardsMap, currentSettleTableName);
// 计算完奖衔回退金额业绩最终根据新增进行回写
iCuMemberTreeService.updateCuMemberBackSettle(cuMemberAchieveHashMap, currentSettleTableName);
//********************************重新考核*********************************/
// TODO new 乐学没有分红复购考核这个位置需要去掉
@ -489,36 +487,36 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
// // 环球积分和车奖积分的规则有荣衔复购考核通过的10代不压缩以推荐+拓展+领导+分红为合计基数获取对应比例比例根据参数配置
// calculateGlobalCarBonus(cuMemberSettleExtMap, currentSettleTableName, settleDate, bonusConfigDTO, period, recordDetailVO, cuMemberBonusMap);
// 保存当日计算的奖金
// 保存当日计算的奖金
insertCuMemberBonus(settleDate, period, cuMemberBonusMap, recordDetailVO);
// 处理血缘业绩统计伞下直推
bonusSettleFirstPurchaseHandle.calculateCuMemberBloodAchieveByOrder(currentSettleTableName, cuMemberSettleExtMap,
firPurchaseOrderList, repurchaseOrderList, mallOrderList);
if (cuMemberSettleExtMap.size() > 0) {
// 处理网体更新网体新增 轮次最小值 cuMemberSettleExtMap
cuMemberTreeService.updateCuMemberSettle(currentSettleTableName, cuMemberSettleExtMap);
iCuMemberTreeService.updateCuMemberSettle(currentSettleTableName, cuMemberSettleExtMap);
}
// 每日进行甩网业绩按照条件降结算好的业绩甩到想应的会员那边
List<CuMemberAchieveExt> retMemberAchieveExtList = execNetAchieve(period, settleDate, currentSettleTableName);
// 处理甩网数据
if (retMemberAchieveExtList.size() > 0) {
cuMemberSwingNetLogService.mergeCuMemberSwingNetLogByAchieve(retMemberAchieveExtList, currentSettleTableName);
iCuMemberSwingNetLogService.mergeCuMemberSwingNetLogByAchieve(retMemberAchieveExtList, currentSettleTableName);
}
// 迁移网体数据到月表
cuMemberTreeService.insertCuMemberTreeBySettleDate(settleDate, currentSettleTableName, period);
// 迁移网体数据到月表会员网体月表会员业绩月表
iCuMemberTreeService.insertCuMemberTreeBySettleDate(settleDate, currentSettleTableName, period);
// TODO new 之前月奖衔的数据处理
// // 上月最后一天
// Integer beforeMonthPeriod = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(
// Integer beforeMonthPeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(
// DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, DateUtils.beforeMonthLastDate(DateUtils.parseStringToDate(settleDate)))
// ).getPkId();
// // 当月第一天
// Integer currentMonthFirstPeriod = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(
// Integer currentMonthFirstPeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(
// DateUtils.currentMonthFirstDateStr(DateUtils.parseStringToDate(settleDate))
// ).getPkId();
// cuMemberAwardsService.calculateCuMemberAwardsEveryMonth(currentMonthFirstPeriod, yesterdayPeriod, period, settleDate, beforeMonthPeriod, awardsMap);
// iCuMemberAwardsService.calculateCuMemberAwardsEveryMonth(currentMonthFirstPeriod, yesterdayPeriod, period, settleDate, beforeMonthPeriod, awardsMap);
// 计算完当日奖金后根据业绩计算下月奖衔
Date currentDate = DateUtils.afterDate(1, ChronoUnit.DAYS, DateUtils.parseStringToDate(settleDate));
@ -529,34 +527,34 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
// // 月第一天日期
// String monthFirstDate = DateUtils.currentMonthFirstDateStr(DateUtils.parseStringToDate(settleDate));
// // 月第一天期数
// Integer startPeriod = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(monthFirstDate).getPkId();
// Integer startPeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(monthFirstDate).getPkId();
// // 更新奖衔根据新结算的奖衔
// cuMemberTreeService.updateCuMemberAwardsBySettle(currentSettleTableName, rangeTableName, startPeriod, period);
// iCuMemberTreeService.updateCuMemberAwardsBySettle(currentSettleTableName, rangeTableName, startPeriod, period);
// TODO new 现在没有月考核是不是可以去掉
// 结算每月月末那一天都是先删除在新增重新考核
cuMemberTreeService.initCuMemberAssessData(settleDate);
iCuMemberTreeService.initCuMemberAssessData(settleDate);
// 更新奖衔考核结果
cuMemberAwardsService.updateCuMemberAwardsExamine(currentDate, period);
iCuMemberAwardsService.updateCuMemberAwardsExamine(currentDate, period);
// 生成月表cu_member_month
String monthTableName = TableNameConstants.CU_MEMBER_MONTH + DateUtils.getMonth(afterDate);
Integer number = cuMemberTreeService.queryExistOracleTable(monthTableName);
Integer number = iCuMemberTreeService.queryExistOracleTable(monthTableName);
if (number == null || number <= 0) {
// 创建表
cuMemberAchieveService.createCuMemberMonthTable(monthTableName);
cuMemberTreeService.createCuMemberTreeDayOnlyIndex(monthTableName);
cuMemberTreeService.createCuMemberTreeParentIndex(monthTableName);
cuMemberTreeService.createCuMemberTreePlaceIndex(monthTableName);
iCuMemberAchieveService.createCuMemberMonthTable(monthTableName);
iCuMemberTreeService.createCuMemberTreeDayOnlyIndex(monthTableName);
iCuMemberTreeService.createCuMemberTreeParentIndex(monthTableName);
iCuMemberTreeService.createCuMemberTreePlaceIndex(monthTableName);
}
}
// 应该是给4-N配置使用的
bonusExpandService.updateCuBonusExpandRatio(BonusExpandParam.builder().settleDate(DateUtils.parseStringToDate(settleDate)).build(), "cu_member_bonus");
// 奖金计算结束统计拨比业绩4-N拨比
iCuBonusExpandService.updateCuBonusExpandRatio(BonusExpandParam.builder().settleDate(DateUtils.parseStringToDate(settleDate)).build(), "cu_member_bonus");
if (leXueRangeParam != null) {
// 乐学相关处理提货数据
if (CollectionUtil.isNotEmpty(leXueRangeParam.getAcPickExtList())) {
if (!acPickServiceApi.updatePickUse(leXueRangeParam.getAcPickExtList(), leXueRangeParam.getAcPickMemberLogList()).getData()) {
if (!iAcPickServiceApi.updatePickUse(leXueRangeParam.getAcPickExtList(), leXueRangeParam.getAcPickMemberLogList()).getData()) {
throw new RuntimeException("更新提货专区数量失败");
}
}
@ -571,15 +569,15 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
@Transactional(rollbackFor = Exception.class)
public void calculateCuMemberRangAwardsBySaOrder(String orderCode) {
Map<Long, CuMemberBonus> cuMemberBonusMap = new HashMap<>(MagicNumberConstants.DELETE_DATA_BATCH_UPDATE_NUM);
BonusConfigDTO bonusConfigDTO = bonusItemsServiceApi.queryBonusConfigDTO().getData();
SaOrderExt saOrderExt = saOrderServiceApi.querySaOrderByDay(DateUtils.currentDate(), DateUtils.afterDate(1, ChronoUnit.DAYS), orderCode).getData();
BonusConfigDTO bonusConfigDTO = iBonusItemsServiceApi.queryBonusConfigDTO().getData();
SaOrderExt saOrderExt = iSaOrderServiceApi.querySaOrderByDay(DateUtils.currentDate(), DateUtils.afterDate(1, ChronoUnit.DAYS), orderCode).getData();
if (saOrderExt != null) {
// 处理奖金结算秒结表判断是否存在当天结算的秒接表从cu_member中获取网体从昨日结算表中获取累计结余数据
String settleDate = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, saOrderExt.getPayTime());
String beforeDay = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, DateUtils.beforeDate(1, ChronoUnit.DAYS, saOrderExt.getPayTime()));
int currentPeriod = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(settleDate).getPkId();
int beforePeriod = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(beforeDay).getPkId();
List<BdRangeAwards> rangeAwardsList = awardsServiceApi.queryRangeAwards().getData();
int currentPeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(settleDate).getPkId();
int beforePeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(beforeDay).getPkId();
List<BdRangeAwards> rangeAwardsList = iAwardsServiceApi.queryRangeAwards().getData();
String secondRangeTableName = TableNameConstants.CU_MEMBER_RANGE_S + currentPeriod;
Map<Long, CuMemberRangeExt> memberRangeExtMap = bonusSettleRangeHandle.calculateCuMemberRangeAwardsByDay(saOrderExt, rangeAwardsList, secondRangeTableName, beforePeriod, currentPeriod);
List<CuMemberBonusDetail> cuMemberBonusDetailList = new ArrayList<>();
@ -591,33 +589,33 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
cuMemberBonusCoachList.add(cuMemberBonusCoach);
}
List<CuMemberBonusRange> cuMemberBonusRangeList = new ArrayList<>(bonusSettleRangeHandle.calculateRangeBonus(memberRangeExtMap, cuMemberBonusMap, bonusConfigDTO, currentPeriod, saOrderExt, rangeAwardsList, cuMemberBonusDetailList));
List<BdWaresBonusExt> bdWaresBonusExtList = bdWaresBonusService.querySpecialWaresBonus(new BdWaresBonusParam());
List<BdWaresBonusExt> bdWaresBonusExtList = iBdWaresBonusService.querySpecialWaresBonus(new BdWaresBonusParam());
bonusSettleRangeHandle.calculateRangeEvBonus(cuMemberBonusMap, bonusConfigDTO, currentPeriod, memberRangeExtMap, cuMemberBonusPushList, bdWaresBonusExtList, saOrderExt);
saveCuMemberBonus(currentPeriod, settleDate, cuMemberBonusMap);
if (cuMemberBonusPushList.size() > 0) {
for (CuMemberBonusPush cuMemberBonusPush : cuMemberBonusPushList) {
cuMemberBonusPush.setPkBonus(cuMemberBonusMap.get(cuMemberBonusPush.getPkBonus()).getPkId());
cuMemberBonusPushService.insertCuMemberBonusPush(cuMemberBonusPush);
iCuMemberBonusPushService.insertCuMemberBonusPush(cuMemberBonusPush);
}
}
Set<Long> memberIdSet = cuMemberBonusService.queryMemberBonusByPeriod(currentPeriod);
Set<Long> memberIdSet = iCuMemberBonusService.queryMemberBonusByPeriod(currentPeriod);
if (cuMemberBonusCoachList.size() > 0) {
cuMemberBonusCoachList.forEach(cuMemberBonusCoach1 ->
cuMemberBonusCoach1.setPkBonus(cuMemberBonusMap.get(cuMemberBonusCoach1.getPkBonus()).getPkId()));
cuMemberBonusCoachService.batchInsertCuMemberBonusCoach(cuMemberBonusCoachList, memberIdSet);
iCuMemberBonusCoachService.batchInsertCuMemberBonusCoach(cuMemberBonusCoachList, memberIdSet);
}
if (cuMemberBonusRangeList.size() > 0) {
cuMemberBonusRangeList.forEach(cuMemberBonusRange ->
cuMemberBonusRange.setPkBonus(cuMemberBonusMap.get(cuMemberBonusRange.getPkBonus()).getPkId()));
cuMemberBonusRangeService.batchInsertCuMemberBonusRange(cuMemberBonusRangeList, memberIdSet);
iCuMemberBonusRangeService.batchInsertCuMemberBonusRange(cuMemberBonusRangeList, memberIdSet);
}
if (cuMemberBonusDetailList.size() > 0) {
cuMemberBonusDetailList.forEach(bonusDetail ->
bonusDetail.setPkBonus(cuMemberBonusMap.get(bonusDetail.getPkBonus()).getPkId()));
cuMemberBonusDetailService.batchInsertCuMemberBonusDetail(cuMemberBonusDetailList, memberIdSet);
iCuMemberBonusDetailService.batchInsertCuMemberBonusDetail(cuMemberBonusDetailList, memberIdSet);
}
if (memberRangeExtMap.size() > 0) {
cuMemberRangeService.updateCuMemberSecondRange(secondRangeTableName, memberRangeExtMap);
iCuMemberRangeService.updateCuMemberSecondRange(secondRangeTableName, memberRangeExtMap);
}
}
}
@ -625,27 +623,27 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
@Override
@Transactional(rollbackFor = Exception.class)
public void repeatCuMemberBonusByExpand(String settleDate, List<SaOrderExt> saOrderExtList) {
Integer period = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(settleDate).getPkId();
Integer period = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(settleDate).getPkId();
String currentSettleTableName = TableNameConstants.CU_MEMBER_SETTLE + period;
String yesterday = DateUtils.beforeDateStr(1, ChronoUnit.DAYS, DateUtils.YYYY_MM_DD, settleDate);
Integer yesterdayPeriod = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(yesterday).getPkId();
Integer yesterdayPeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(yesterday).getPkId();
String yesterdayTableName = TableNameConstants.CU_MEMBER_SETTLE + yesterdayPeriod;
cuMemberTreeService.initCuMemberExpandTreeTable(yesterdayTableName, currentSettleTableName);
BonusConfigDTO bonusConfigDTO = bonusItemsServiceApi.queryBonusConfigDTO().getData();
iCuMemberTreeService.initCuMemberExpandTreeTable(yesterdayTableName, currentSettleTableName);
BonusConfigDTO bonusConfigDTO = iBonusItemsServiceApi.queryBonusConfigDTO().getData();
Map<Long, CuMemberSettleExt> cuMemberSettleExtMap = new HashMap<>();
Map<Long, CuMemberBonus> cuMemberBonusMap = new HashMap<>();
Map<Long, CuAwardsControl> cuAwardsControlMap = getCuAwardsControlMap();
Map<Long, CuMemberBonus> weekMemberBonusMap = getWeekMemberBonusMap(settleDate, period);
Map<String, String> systemConfigMap = systemConfigServiceApi.getBonusSystemConfig().getData();
Map<String, String> systemConfigMap = iSystemConfigServiceApi.getBonusSystemConfig().getData();
BonusRecordDetailVO recordDetailVO = new BonusRecordDetailVO();
Map<String, BdAwards> awardsMap = awardsServiceApi.getAwards().getData();
Map<String, BdAwards> awardsMap = iAwardsServiceApi.getAwards().getData();
// 首购订单
List<SaOrderExt> firPurchaseOrderList = new ArrayList<>();
saOrderExtList.forEach(saOrderExt ->
packageSaOrderListByType(firPurchaseOrderList, null, null, saOrderExt));
// 查询K值控制
List<CuMemberRiskControl> cuMemberRiskControlList = cuMemberRiskControlService.queryCuMemberRiskControl(DateUtils.parseStringToDate(settleDate));
List<CuMemberRiskControl> cuMemberRiskControlList = iCuMemberRiskControlService.queryCuMemberRiskControl(DateUtils.parseStringToDate(settleDate));
Map<Long, CuMemberRiskControl> riskControlMap = new HashMap<>();
if (CollectionUtil.isNotEmpty(cuMemberRiskControlList)) {
cuMemberRiskControlList.forEach(cuMemberRiskControl -> riskControlMap.put(cuMemberRiskControl.getPkMember(), cuMemberRiskControl));
@ -653,7 +651,7 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
// 查询所有的4-n碰次
BonusExpandParam bonusExpandParam = BonusExpandParam.builder().settleDate(DateUtils.parseStringToDate(settleDate)).build();
Map<Long, CuBonusExpandExt> cuBonusExpandExtMap = new HashMap<>();
List<CuBonusExpandExt> cuBonusExpandExtList = bonusExpandService.queryBonusExpand(bonusExpandParam);
List<CuBonusExpandExt> cuBonusExpandExtList = iCuBonusExpandService.queryBonusExpand(bonusExpandParam);
cuBonusExpandExtList.forEach(cuBonusExpandExt -> cuBonusExpandExtMap.put(cuBonusExpandExt.getPkMember(), cuBonusExpandExt));
if (firPurchaseOrderList.size() > 0) {
calculateFirPurchaseOrder(riskControlMap, cuMemberSettleExtMap, currentSettleTableName, settleDate, systemConfigMap, bonusConfigDTO,
@ -664,11 +662,11 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
cuMemberBonusList.add(BeanUtil.copyProperties(cuMemberBonus, CuMemberRepeatBonus.class));
}
if (cuMemberBonusList.size() > 0) {
cuMemberRepeatBonusService.insertCuMemberRepeatBonus(cuMemberBonusList);
iCuMemberRepeatBonusService.insertCuMemberRepeatBonus(cuMemberBonusList);
}
if (cuMemberSettleExtMap.size() > 0) {
// 处理网体更新网体新增 轮次最小值 cuMemberSettleExtMap
cuMemberTreeService.updateCuMemberExpandSettle(currentSettleTableName, cuMemberSettleExtMap);
iCuMemberTreeService.updateCuMemberExpandSettle(currentSettleTableName, cuMemberSettleExtMap);
}
}
@ -679,11 +677,11 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
* @param: null null
**/
private List<CuMemberAchieveExt> execNetAchieve(Integer period, String settleDate, String currentSettleTableName) {
List<CuMemberSwingNetExt> memberSwingNetExtList = memberServiceApi.queryCuMemberSwingNetExt().getData();
List<CuMemberSwingNetExt> memberSwingNetExtList = iMemberServiceApi.queryCuMemberSwingNetExt().getData();
List<CuMemberAchieveExt> retMemberAchieveExtList = new ArrayList<>();
if (CollectionUtil.isNotEmpty(memberSwingNetExtList)) {
// 查询接入会员的月业绩
List<CuMemberAchieveExt> cuMemberAchieveExtList = cuMemberAchieveService.queryCuMemberMonthAchieveByMemberIdList(currentSettleTableName, memberSwingNetExtList);
List<CuMemberAchieveExt> cuMemberAchieveExtList = iCuMemberAchieveService.queryCuMemberMonthAchieveByMemberIdList(currentSettleTableName, memberSwingNetExtList);
Map<Long, CuMemberAchieveExt> memberAchieveExtMap = new HashMap<>();
cuMemberAchieveExtList.forEach(cuMemberAchieveExt ->
memberAchieveExtMap.put(cuMemberAchieveExt.getPkMember(), cuMemberAchieveExt));
@ -750,16 +748,16 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
if (cuMemberAchieveExtMap.size() > 0) {
// 更新业绩
List<CuMemberAchieveExt> updMemberAchieveExtList = new ArrayList<>(cuMemberAchieveExtMap.values());
cuMemberTreeService.updateCuMemberNetAchieve(updMemberAchieveExtList, currentSettleTableName);
iCuMemberTreeService.updateCuMemberNetAchieve(updMemberAchieveExtList, currentSettleTableName);
}
}
return retMemberAchieveExtList;
}
private void validateSettleTable(String yesterday, String yesterdayTableName) {
Integer number = cuMemberTreeService.queryExistOracleTable(yesterdayTableName);
Integer number = iCuMemberTreeService.queryExistOracleTable(yesterdayTableName);
if (number == null || number <= 0) {
cuMemberTreeService.createCuMemberTree(yesterday);
iCuMemberTreeService.createCuMemberTree(yesterday);
yesterday = DateUtils.beforeDateStr(1, ChronoUnit.DAYS, DateUtils.YYYY_MM_DD, yesterday);
validateSettleTable(yesterday, yesterdayTableName);
}
@ -783,11 +781,11 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
LeXueRangeParam leXueRangeParam = null;
Map<Long, CuAwardsControl> cuAwardsControlMap = getCuAwardsControlMap();
Map<Long, CuMemberBonus> weekMemberBonusMap = getWeekMemberBonusMap(settleDate, period);
Map<String, String> systemConfigMap = systemConfigServiceApi.getBonusSystemConfig().getData();
Map<String, RangeDTO> rangeDtoMap = rangeServiceApi.queryRangeDto().getData();
Map<String, String> systemConfigMap = iSystemConfigServiceApi.getBonusSystemConfig().getData();
Map<String, RangeDTO> rangeDtoMap = iRangeServiceApi.queryRangeDto().getData();
// 查询K值控制
List<CuMemberRiskControl> cuMemberRiskControlList = cuMemberRiskControlService.queryCuMemberRiskControl(DateUtils.parseStringToDate(settleDate));
List<CuMemberRiskControl> cuMemberRiskControlList = iCuMemberRiskControlService.queryCuMemberRiskControl(DateUtils.parseStringToDate(settleDate));
Map<Long, CuMemberRiskControl> riskControlMap = new HashMap<>();
if (CollectionUtil.isNotEmpty(cuMemberRiskControlList)) {
cuMemberRiskControlList.forEach(cuMemberRiskControl -> riskControlMap.put(cuMemberRiskControl.getPkMember(), cuMemberRiskControl));
@ -795,7 +793,7 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
// 查询所有的4-n碰次
BonusExpandParam bonusExpandParam = BonusExpandParam.builder().settleDate(DateUtils.parseStringToDate(settleDate)).build();
Map<Long, CuBonusExpandExt> cuBonusExpandExtMap = new HashMap<>();
List<CuBonusExpandExt> cuBonusExpandExtList = bonusExpandService.queryBonusExpand(bonusExpandParam);
List<CuBonusExpandExt> cuBonusExpandExtList = iCuBonusExpandService.queryBonusExpand(bonusExpandParam);
cuBonusExpandExtList.forEach(cuBonusExpandExt -> cuBonusExpandExtMap.put(cuBonusExpandExt.getPkMember(), cuBonusExpandExt));
// 先计算复购在计算首购
@ -819,14 +817,14 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
private Map<Long, CuMemberBonus> getWeekMemberBonusMap(String settleDate, Integer period) {
// 根据结算日期获取周期的期间用于海外
String recentlyMonday = DateUtils.getRecentlyTuesday(settleDate);
CuMemberSettlePeriod startMemberSettlePeriod = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(recentlyMonday);
CuMemberSettlePeriod startMemberSettlePeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(recentlyMonday);
// 查询封顶周期是周的国家的所有人的拓展收益复购拓展收益
return cuMemberBonusService.queryWeekMemberBonus(startMemberSettlePeriod.getPkId(), period);
return iCuMemberBonusService.queryWeekMemberBonus(startMemberSettlePeriod.getPkId(), period);
}
private Map<Long, CuAwardsControl> getCuAwardsControlMap() {
// 查询真实奖衔控制
List<CuAwardsControl> cuAwardsControls = cuAwardsControlService.queryAllCuAwardsControl();
List<CuAwardsControl> cuAwardsControls = iCuAwardsControlService.queryAllCuAwardsControl();
Map<Long, CuAwardsControl> cuAwardsControlMap = new HashMap<>(ComputeUtil.mapInitCapacity(cuAwardsControls.size()));
if (CollectionUtil.isNotEmpty(cuAwardsControls)) {
cuAwardsControls.forEach(cuAwardsControl ->
@ -845,12 +843,18 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
* @Date: 2022/12/13 11:52
*/
void insertCuMemberBonus(String settleDate, Integer period, Map<Long, CuMemberBonus> cuMemberBonusMap, BonusRecordDetailVO bonusRecordDetailVO) {
cuMemberBonusPushService.deleteCuMemberBonusPush(period);
cuMemberBonusExpandService.deleteCuMemberBonusExpand(period);
cuMemberBonusCoachService.deleteCuMemberBonusCoach(period);
cuMemberBonusDetailService.deleteCuMemberBonusDetail(period);
cuMemberBonusRangeService.deleteCuMemberBonusRange(period);
cuMemberBonusService.deleteCuMemberBonus(period);
// 删除 直推收益明细表
iCuMemberBonusPushService.deleteCuMemberBonusPush(period);
// 删除 拓展收益明细表
iCuMemberBonusExpandService.deleteCuMemberBonusExpand(period);
// 删除 辅导收益明细表
iCuMemberBonusCoachService.deleteCuMemberBonusCoach(period);
// 删除 奖金收益明细表(报单费)
iCuMemberBonusDetailService.deleteCuMemberBonusDetail(period);
// 删除 奖金收益明细表(复购极差)
iCuMemberBonusRangeService.deleteCuMemberBonusRange(period);
// 删除 会员奖金汇总表
iCuMemberBonusService.deleteCuMemberBonus(period);
if (cuMemberBonusMap.size() == 0) {
return;
}
@ -891,17 +895,17 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
batchMemberBonusRangeList.addAll(cuMemberBonusRangeList);
}
// 插入奖金主表
cuMemberBonusService.batchInsertCuMemberBonus(cuMemberBonusList);
Set<Long> memberIdSet = cuMemberBonusService.queryMemberBonusByPeriod(period);
cuMemberBonusPushService.batchInsertCuMemberBonusPush(batchMemberBonusPushList, memberIdSet);
cuMemberBonusExpandService.batchInsertCuMemberBonusExpand(batchMemberBonusExpandList, memberIdSet);
cuMemberBonusCoachService.batchInsertCuMemberBonusCoach(batchMemberBonusCoachList, memberIdSet);
cuMemberBonusDetailService.batchInsertCuMemberBonusDetail(batchMemberBonusDetailList, memberIdSet);
cuMemberBonusRangeService.batchInsertCuMemberBonusRange(batchMemberBonusRangeList, memberIdSet);
iCuMemberBonusService.batchInsertCuMemberBonus(cuMemberBonusList);
Set<Long> memberIdSet = iCuMemberBonusService.queryMemberBonusByPeriod(period);
iCuMemberBonusPushService.batchInsertCuMemberBonusPush(batchMemberBonusPushList, memberIdSet);
iCuMemberBonusExpandService.batchInsertCuMemberBonusExpand(batchMemberBonusExpandList, memberIdSet);
iCuMemberBonusCoachService.batchInsertCuMemberBonusCoach(batchMemberBonusCoachList, memberIdSet);
iCuMemberBonusDetailService.batchInsertCuMemberBonusDetail(batchMemberBonusDetailList, memberIdSet);
iCuMemberBonusRangeService.batchInsertCuMemberBonusRange(batchMemberBonusRangeList, memberIdSet);
}
private List<CuMemberBonus> setCuMemberBonusSeq(String settleDate, Map<Long, CuMemberBonus> cuMemberBonusMap) {
List<Long> pkIdList = cuMemberBonusService.batchQueryCuMemberBonusSeq(cuMemberBonusMap.size());
List<Long> pkIdList = iCuMemberBonusService.batchQueryCuMemberBonusSeq(cuMemberBonusMap.size());
int i = 0;
// 判断时间重算的时候直接是已公布
Integer grantStatus = EGrantStatus.SETTLED.getValue();

View File

@ -55,20 +55,20 @@ import java.util.stream.Collectors;
public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, CuMemberBonus> implements ICuMemberBonusService {
@DubboReference
ISystemConfigServiceApi systemConfigServiceApi;
ISystemConfigServiceApi iSystemConfigServiceApi;
@DubboReference
ISaOrderServiceApi saOrderServiceApi;
ISaOrderServiceApi iSaOrderServiceApi;
@DubboReference
ICurrencyServiceApi currencyServiceApi;
ICurrencyServiceApi iCurrencyServiceApi;
@DubboReference
IBonusItemsServiceApi bonusItemsServiceApi;
IBonusItemsServiceApi iBonusItemsServiceApi;
@Autowired
private CuMemberBonusSettle cuMemberBonusSettle;
@Autowired
private ICuMemberTreeService cuMemberTreeService;
private ICuMemberTreeService iCuMemberTreeService;
@Autowired
private IBonusSettleService bonusSettleService;
private IBonusSettleService iBonusSettleService;
private CuMemberBonusDetailMapper cuMemberBonusDetailMapper;
@ -112,7 +112,7 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C
@Override
public List<CuMemberBonusExt> queryMemberBonusVoByCondition(BonusParam bonusParam) {
String value = systemConfigServiceApi.getBonusSystemConfig(bonusParam.getPkCountry(), ESystemConfig.EXPAND_CAP_METHOD.getKey()).getData();
String value = iSystemConfigServiceApi.getBonusSystemConfig(bonusParam.getPkCountry(), ESystemConfig.EXPAND_CAP_METHOD.getKey()).getData();
if (StringUtils.isNotEmpty(value) && Objects.equals(Integer.toString(EExpandCapMethod.WEEK_SETTLE.getValue()), value)) {
// 周结的话不能查询当前周的数据只能查询上周的数据
bonusParam.setEndDate(DateUtils.parseStringToDate(DateUtils.getRecentlyTuesday(bonusParam.getEndDate())));
@ -181,7 +181,7 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C
@Override
public List<CuMemberBonusExt> queryMemberSecondBonusVoByCondition(BonusParam bonusParam) {
String value = systemConfigServiceApi.getBonusSystemConfig(bonusParam.getPkCountry(), ESystemConfig.EXPAND_CAP_METHOD.getKey()).getData();
String value = iSystemConfigServiceApi.getBonusSystemConfig(bonusParam.getPkCountry(), ESystemConfig.EXPAND_CAP_METHOD.getKey()).getData();
// if (StringUtils.isNotEmpty(value) && Objects.equals(Integer.toString(EExpandCapMethod.WEEK_SETTLE.getValue()), value)) {
// // 周结的话不能查询当前周的数据只能查询上周的数据
// bonusParam.setStartDate(DateUtils.parseStringToDate(DateUtils.getRecentlyTuesday(bonusParam.getStartDate())));
@ -195,7 +195,7 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C
bonusParam.setGrantStatus(EGrantStatus.PUBLISHED.getValue());
}
List<CuMemberBonusExt> cuMemberBonusExtList = baseMapper.queryMemberBonusByCondition(bonusParam);
R<CurrencyDTO> currency = currencyServiceApi.getCurrency(bonusParam.getPkCountry());
R<CurrencyDTO> currency = iCurrencyServiceApi.getCurrency(bonusParam.getPkCountry());
// 汇率比例
BigDecimal inExchangeRate = currency.getData().getInExchangeRate();
for (CuMemberBonusExt cuMemberBonusExt : cuMemberBonusExtList) {
@ -290,7 +290,7 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C
@Override
public List<CuMemberBonusExt> queryMemberBonusTotalByCondition(BonusParam bonusParam) {
String value = systemConfigServiceApi.getBonusSystemConfig(bonusParam.getPkCountry(), ESystemConfig.EXPAND_CAP_METHOD.getKey()).getData();
String value = iSystemConfigServiceApi.getBonusSystemConfig(bonusParam.getPkCountry(), ESystemConfig.EXPAND_CAP_METHOD.getKey()).getData();
if (StringUtils.isNotEmpty(value) && Objects.equals(Integer.toString(EExpandCapMethod.WEEK_SETTLE.getValue()), value)) {
// 周结的话不能查询当前周
bonusParam.setEndDate(DateUtils.parseStringToDate(DateUtils.getRecentlyTuesday(bonusParam.getEndDate())));
@ -366,7 +366,7 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C
TableDataInfo dataTable;
Integer bonusItemsValue = 0;
if (bonusParam.getPkBonusItems() != null) {
BdBonusItems bonusItems = bonusItemsServiceApi.queryBonusItems(bonusParam.getPkCountry(), bonusParam.getPkBonusItems()).getData();
BdBonusItems bonusItems = iBonusItemsServiceApi.queryBonusItems(bonusParam.getPkCountry(), bonusParam.getPkBonusItems()).getData();
bonusItemsValue = bonusItems.getBonusValue();
}
if (null == bonusParam.getPkBonusItems()) {
@ -435,7 +435,7 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C
});
}
Map<Integer, BdBonusItemsExt> bonusItemsMap = convertBonusItems(bonusParam);
CurrencyDTO currencyDTO = currencyServiceApi.getCurrency(bonusParam.getPkCountry()).getData();
CurrencyDTO currencyDTO = iCurrencyServiceApi.getCurrency(bonusParam.getPkCountry()).getData();
memberBonusDetailVOList.forEach(memberBonusDetailVO -> {
if (bonusItemsMap.containsKey(memberBonusDetailVO.getPkBonusItems())) {
memberBonusDetailVO.setBonusName(bonusItemsMap.get(memberBonusDetailVO.getPkBonusItems()).getBonusName());
@ -453,12 +453,12 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C
@Override
public List<MemberBonusDetailVO> queryMemberMarkBonusDetailSource(BonusParam bonusParam) {
List<MemberBonusDetailVO> memberBonusDetailVOList = new ArrayList<>();
BdBonusItems bonusItems = bonusItemsServiceApi.queryBonusItemsByBonusValue(bonusParam.getPkCountry(), bonusParam.getBonusValue()).getData();
BdBonusItems bonusItems = iBonusItemsServiceApi.queryBonusItemsByBonusValue(bonusParam.getPkCountry(), bonusParam.getBonusValue()).getData();
bonusParam.setPkBonusItems(bonusItems.getPkId());
// 其他收益 服务补贴分红收益嗨粉直推
// 拓展收益复购拓展收益
List<CuMemberBonusDetailExt> cuMemberBonusDetailList = cuMemberBonusDetailMapper.queryMemberBonusDetailByBonusItems(bonusParam);
CurrencyDTO currency = currencyServiceApi.getCurrency(bonusParam.getPkCountry()).getData();
CurrencyDTO currency = iCurrencyServiceApi.getCurrency(bonusParam.getPkCountry()).getData();
cuMemberBonusDetailList.forEach(cuMemberBonusDetail -> {
MemberBonusDetailVO memberBonusDetailVO = BeanUtil.copyProperties(cuMemberBonusDetail, MemberBonusDetailVO.class);
String sourceMemberCode = memberBonusDetailVO.getSourceMemberCode();
@ -470,7 +470,7 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C
}
private Map<Integer, BdBonusItemsExt> convertBonusItems(BonusParam bonusParam) {
List<BdBonusItemsExt> bonusItemsExtList = bonusItemsServiceApi.queryBonusItems(bonusParam.getPkCountry()).getData();
List<BdBonusItemsExt> bonusItemsExtList = iBonusItemsServiceApi.queryBonusItems(bonusParam.getPkCountry()).getData();
Map<Integer, BdBonusItemsExt> bonusItemsMap = new HashMap<>(ComputeUtil.mapInitCapacity(bonusItemsExtList.size()));
bonusItemsExtList.forEach(bonusItems ->
bonusItemsMap.put(bonusItems.getPkId(), bonusItems));
@ -483,7 +483,7 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C
List<MemberBonusDetailSerVO> memberBonusDetailSerVoS = new ArrayList<>();
Integer bonusItemsValue = 0;
if (bonusParam.getPkBonusItems() != null) {
BdBonusItems bonusItems = bonusItemsServiceApi.queryBonusItems(bonusParam.getPkCountry(), bonusParam.getPkBonusItems()).getData();
BdBonusItems bonusItems = iBonusItemsServiceApi.queryBonusItems(bonusParam.getPkCountry(), bonusParam.getPkBonusItems()).getData();
bonusItemsValue = bonusItems.getBonusValue();
}
if (bonusParam.getEndDate() != null) {
@ -641,17 +641,17 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C
String settleDate = DateUtils.parseDateTimeToStr(DateUtils.YYYY_MM_DD, startDate);
Date settleEndDate = DateUtils.afterDate(1, ChronoUnit.DAYS, startDate);
// 自动初始化表
cuMemberTreeService.createCuMemberTree(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, DateUtils.beforeDate(1, ChronoUnit.DAYS)));
iCuMemberTreeService.createCuMemberTree(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, DateUtils.beforeDate(1, ChronoUnit.DAYS)));
log.info("初始化表完成");
// 奖金结算
List<SaOrderExt> saOrderExtList = saOrderServiceApi.listSaOrderByDay(startDate, settleEndDate, "").getData();
bonusSettleService.calculateCuMemberBonus(settleDate, saOrderExtList);
List<SaOrderExt> saOrderExtList = iSaOrderServiceApi.listSaOrderByDay(startDate, settleEndDate, "").getData();
iBonusSettleService.calculateCuMemberBonus(settleDate, saOrderExtList);
return Boolean.TRUE;
}
@Override
public void backupsSettleBonusEveryday() {
cuMemberTreeService.createCuMemberTree(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, DateUtils.beforeDate(1, ChronoUnit.DAYS)));
iCuMemberTreeService.createCuMemberTree(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, DateUtils.beforeDate(1, ChronoUnit.DAYS)));
}
@Override

View File

@ -7,9 +7,7 @@ import com.hzs.common.domain.member.swing.CuMemberSwingNetLog;
import java.util.List;
/**
* <p>
* 会员甩网业绩记录 服务类
* </p>
*
* @author hzs
* @since 2024-03-05

View File

@ -10,9 +10,7 @@ import org.springframework.stereotype.Service;
import java.util.List;
/**
* <p>
* 会员甩网业绩记录 服务实现类
* </p>
*
* @author hzs
* @since 2024-03-05

View File

@ -844,6 +844,7 @@
a.r_a_sum_real_pv = a.r_a_sum_real_pv - b.a_new_pv - b.rep_a_new_pv,
a.r_b_sum_real_pv = a.r_b_sum_real_pv - b.b_new_pv - b.rep_b_new_pv
</update>
<update id="updateCuMemberNetAchieve">
merge into ${tableName} a
using (

View File

@ -47,7 +47,7 @@
<select id="queryMemberSettlePeriod" resultMap="CuMemberSettlePeriodExt">
<include refid="memberPeriod"></include>
and cd.pk_country=#{pkCountry}
and cd.pk_country = #{pkCountry}
and cp.settle_date = #{settleDate, jdbcType=DATE}
</select>

View File

@ -66,7 +66,8 @@
</resultMap>
<update id="updateCuMemberBonusStatus">
update cu_member_bonus set grant_status = #{grantStatus}, pk_modified=100000000, modified_time=sysdate
update cu_member_bonus
set grant_status = #{grantStatus}, pk_modified = 100000000, modified_time = sysdate
where del_flag= 0
and grant_status = #{oldGrantStatus}
and period between #{startPeriod} and #{endPeriod}
@ -94,11 +95,14 @@
maker_direct_income,maker_share_income,maker_real_subtotal,real_income_total,
pk_country,pk_creator,grant_status,income_status from(
<foreach item="item" index="index" collection="cuMemberBonusList" separator=" union ">
select #{item.pkId} pk_id,#{item.pkMember} pk_member,#{item.period} period,#{item.pkRate,jdbcType=INTEGER} pk_rate,
#{item.directIncome} direct_income,#{item.expandIncome} expand_income,#{item.expandNoCapping} expand_no_capping,
select #{item.pkId} pk_id,#{item.pkMember} pk_member,#{item.period} period,#{item.pkRate,jdbcType=INTEGER}
pk_rate,
#{item.directIncome} direct_income,#{item.expandIncome} expand_income,#{item.expandNoCapping}
expand_no_capping,
#{item.expandCapping} expand_capping,#{item.coachIncome} coach_income,#{item.shareIncome} share_income,
#{item.serviceIncome} service_income,#{item.backPoints} back_points,#{item.serviceSpend} service_spend,
#{item.purRealSubtotal} pur_real_subtotal,#{item.repurPushIncome} repur_push_income,#{item.repurRangeIncome} repur_range_income,
#{item.purRealSubtotal} pur_real_subtotal,#{item.repurPushIncome} repur_push_income,#{item.repurRangeIncome}
repur_range_income,
#{item.repurExpandIncome} repur_expand_income,#{item.repurRealSubtotal} repur_real_subtotal,
#{item.cloudDirectIncome} cloud_direct_income,#{item.cloudPurIncome} cloud_pur_income,
#{item.cloudRepurIncome} cloud_repur_income,#{item.cloudRealSubtotal} cloud_real_subtotal,
@ -106,8 +110,10 @@
#{item.repurCouponSubtotal} repur_coupon_subtotal,#{item.globalPoints} global_points,
#{item.carAwardPoints} car_award_points,#{item.storeIncome} store_income,#{item.hiFunIncome} hi_fun_income,
#{item.haiFunIncome} hai_fun_income,#{item.makerDirectIncome} maker_direct_income,
#{item.makerShareIncome} maker_share_income,#{item.makerRealSubtotal} maker_real_subtotal,#{item.realIncomeTotal} real_income_total,
#{item.pkCountry} pk_country,#{item.pkCreator} pk_creator,#{item.grantStatus} grant_status,#{item.incomeStatus} income_status from dual
#{item.makerShareIncome} maker_share_income,#{item.makerRealSubtotal}
maker_real_subtotal,#{item.realIncomeTotal} real_income_total,
#{item.pkCountry} pk_country,#{item.pkCreator} pk_creator,#{item.grantStatus}
grant_status,#{item.incomeStatus} income_status from dual
</foreach>) )b
on (cb.pk_member=b.pk_member and cb.period=b.period)
WHEN NOT MATCHED THEN
@ -128,6 +134,7 @@
b.maker_direct_income,b.maker_share_income,b.maker_real_subtotal,b.real_income_total,
b.pk_country,b.pk_creator,b.grant_status,b.income_status)
</insert>
<insert id="insertOrUpdateCuMemberBonus">
merge into cu_member_bonus a
using(

View File

@ -4,49 +4,51 @@
<!-- 通用查询映射结果 -->
<resultMap id="CuMemberSwingNetLog" type="com.hzs.common.domain.member.swing.CuMemberSwingNetLog">
<id column="PK_ID" property="pkId" />
<result column="CREATION_TIME" property="creationTime" />
<result column="MODIFIED_TIME" property="modifiedTime" />
<result column="DEL_FLAG" property="delFlag" />
<result column="PK_CREATOR" property="pkCreator" />
<result column="PK_MODIFIED" property="pkModified" />
<result column="PK_COUNTRY" property="pkCountry" />
<result column="PK_MEMBER" property="pkMember" />
<result column="PERIOD" property="period" />
<result column="PLACE_DEPT" property="placeDept" />
<result column="NET_FIRST_ACHIEVE" property="netFirstAchieve" />
<result column="NET_REPURCHASE_ACHIEVE" property="netRepurchaseAchieve" />
<result column="NET_REAL_ACHIEVE" property="netRealAchieve" />
<result column="A_SUM_PV" property="aSumPv" />
<result column="B_SUM_PV" property="bSumPv" />
<result column="A_SUM_REAL_PV" property="aSumRealPv" />
<result column="B_SUM_REAL_PV" property="bSumRealPv" />
<result column="REP_A_SUM_PV" property="repASumPv" />
<result column="REP_B_SUM_PV" property="repBSumPv" />
<id column="PK_ID" property="pkId"/>
<result column="CREATION_TIME" property="creationTime"/>
<result column="MODIFIED_TIME" property="modifiedTime"/>
<result column="DEL_FLAG" property="delFlag"/>
<result column="PK_CREATOR" property="pkCreator"/>
<result column="PK_MODIFIED" property="pkModified"/>
<result column="PK_COUNTRY" property="pkCountry"/>
<result column="PK_MEMBER" property="pkMember"/>
<result column="PERIOD" property="period"/>
<result column="PLACE_DEPT" property="placeDept"/>
<result column="NET_FIRST_ACHIEVE" property="netFirstAchieve"/>
<result column="NET_REPURCHASE_ACHIEVE" property="netRepurchaseAchieve"/>
<result column="NET_REAL_ACHIEVE" property="netRealAchieve"/>
<result column="A_SUM_PV" property="aSumPv"/>
<result column="B_SUM_PV" property="bSumPv"/>
<result column="A_SUM_REAL_PV" property="aSumRealPv"/>
<result column="B_SUM_REAL_PV" property="bSumRealPv"/>
<result column="REP_A_SUM_PV" property="repASumPv"/>
<result column="REP_B_SUM_PV" property="repBSumPv"/>
</resultMap>
<update id="mergeCuMemberSwingNetLogByAchieve">
merge into cu_member_swing_net_log a
using (
select x.*,(x.net_first_achieve+x.net_repurchase_achieve) net_real_achieve,
y.a_sum_pv,y.b_sum_pv,y.a_sum_real_pv,y.b_sum_real_pv,y.rep_a_new_pv rep_a_sum_pv,y.rep_b_new_pv rep_b_sum_pv,'100000000' pk_creator from(
select pk_member,place_dept,period,pk_country,sum(net_first_achieve) net_first_achieve,
sum(net_repurchase_achieve) net_repurchase_achieve from(
select x.*,(x.net_first_achieve+x.net_repurchase_achieve) net_real_achieve,
y.a_sum_pv,y.b_sum_pv,y.a_sum_real_pv,y.b_sum_real_pv,y.rep_a_new_pv rep_a_sum_pv,y.rep_b_new_pv
rep_b_sum_pv,'100000000' pk_creator from(
select pk_member,place_dept,period,pk_country,sum(net_first_achieve) net_first_achieve,
sum(net_repurchase_achieve) net_repurchase_achieve from(
<foreach collection="cuMemberAchieveExtList" item="item" separator=" union all">
select
#{item.pkMember} pk_member,#{item.placeDept} place_dept,#{item.period} period,
#{item.netFirstAchieve} net_first_achieve,#{item.netRepurchaseAchieve} net_repurchase_achieve,
#{item.pkCountry} pk_country from dual
</foreach>)
group by pk_member,place_dept,period,pk_country) x
inner join ${settleTableName} y
on x.pk_member=y.pk_member
) b
group by pk_member,place_dept,period,pk_country) x
inner join ${settleTableName} y
on x.pk_member=y.pk_member
) b
on (a.pk_member=b.pk_member and a.period=b.period and a.place_dept=b.place_dept)
when matched then
update set a.net_first_achieve=b.net_first_achieve,a.net_repurchase_achieve=b.net_repurchase_achieve,
a.net_real_achieve=b.net_real_achieve,a.a_sum_pv=b.a_sum_pv,a.b_sum_pv=b.b_sum_pv,
a.a_sum_real_pv=b.a_sum_real_pv,a.b_sum_real_pv=b.b_sum_real_pv,
a.rep_a_sum_pv=b.rep_a_sum_pv,a.rep_b_sum_pv=b.rep_b_sum_pv,modified_time=sysdate
update set a.net_first_achieve=b.net_first_achieve,a.net_repurchase_achieve=b.net_repurchase_achieve,
a.net_real_achieve=b.net_real_achieve,a.a_sum_pv=b.a_sum_pv,a.b_sum_pv=b.b_sum_pv,
a.a_sum_real_pv=b.a_sum_real_pv,a.b_sum_real_pv=b.b_sum_real_pv,
a.rep_a_sum_pv=b.rep_a_sum_pv,a.rep_b_sum_pv=b.rep_b_sum_pv,modified_time=sysdate
when not matched then
insert
(PK_ID,pk_member,period,place_dept,net_first_achieve,net_repurchase_achieve,net_real_achieve,