## 奖衔处理改为旧逻辑累计处理不走月奖衔;

This commit is contained in:
cabbage 2025-04-12 13:39:22 +08:00
parent d7203842f8
commit c6f4161655
5 changed files with 53 additions and 39 deletions

View File

@ -455,12 +455,13 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
calculateRepurchaseCoupons(DateUtils.parseDate(settleDate), firPurchaseOrderList, period, bonusConfigDTO, cuMemberBonusMap, calculateRepurchaseCoupons(DateUtils.parseDate(settleDate), firPurchaseOrderList, period, bonusConfigDTO, cuMemberBonusMap,
recordDetailVO, cuMemberSettleExtMap); recordDetailVO, cuMemberSettleExtMap);
// 计算乐享订单奖金按照订单进行日结 // TODO new 奖衔走累计一次性的此处不需要处理防止出现奖衔升级记录不对
// 增加判断是否相同月相同月的话昨天的考核结果更新到今天 // // 计算乐享订单奖金按照订单进行日结
Boolean isSameMonth = DateUtils.getMonth(settleDate).equals(DateUtils.getMonth(yesterday)); // // 增加判断是否相同月相同月的话昨天的考核结果更新到今天
// 乐享奖金 // Boolean isSameMonth = DateUtils.getMonth(settleDate).equals(DateUtils.getMonth(yesterday));
bonusSettleRangeHandle.calculateLeEnjoyBonusBySaOrder(cuMemberBonusMap, bonusConfigDTO, recordDetailVO, // // 乐享奖金
period, yesterdayPeriod, isSameMonth); // bonusSettleRangeHandle.calculateLeEnjoyBonusBySaOrder(cuMemberBonusMap, bonusConfigDTO, recordDetailVO,
// period, yesterdayPeriod, isSameMonth);
// // 计算新零售团队奖金 // // 计算新零售团队奖金
// bonusSettleRangeHandle.calculateRetailBonusBySaOrder(settleDate, cuMemberBonusMap, bonusConfigDTO, recordDetailVO, // bonusSettleRangeHandle.calculateRetailBonusBySaOrder(settleDate, cuMemberBonusMap, bonusConfigDTO, recordDetailVO,
// period, yesterdayPeriod, retailOrderList, isSameMonth); // period, yesterdayPeriod, retailOrderList, isSameMonth);

View File

@ -53,7 +53,7 @@ public class CuMemberAwardsServiceImpl extends ServiceImpl<CuMemberAwardsMapper,
cuMemberTreeService.updateBackCuMemberSettleAward(settleTableName, period); cuMemberTreeService.updateBackCuMemberSettleAward(settleTableName, period);
// 更新会员奖衔根据临时表会员表 // 更新会员奖衔根据临时表会员表
cuMemberService.updateBackCuMemberAward(cuMemberAwards, period); cuMemberService.updateBackCuMemberAward(cuMemberAwards, period);
// 回退业绩表奖衔 // 回退业绩表奖衔删除会员奖衔升级记录
baseMapper.deleteCuMemberAwards(period); baseMapper.deleteCuMemberAwards(period);
while (true) { while (true) {
@ -265,17 +265,20 @@ public class CuMemberAwardsServiceImpl extends ServiceImpl<CuMemberAwardsMapper,
if (enoughAwardsMemberList.size() > 0) { if (enoughAwardsMemberList.size() > 0) {
// 记录要入库的为了验证是否首次晋升 // 记录要入库的为了验证是否首次晋升
enoughAwardsMemberList.forEach(enoughAwardsMember -> getCuMemberAwards(originalCuMemberSettleMap, period, cuMemberAwardsList, enoughAwardsMember)); enoughAwardsMemberList.forEach(enoughAwardsMember -> getCuMemberAwards(originalCuMemberSettleMap, period, cuMemberAwardsList, enoughAwardsMember));
// 验证满足的这群人是否是首次晋升查询出值的不是首次晋升
List<CuMemberAwards> originalCuMemberAwardsList = baseMapper.queryLastCuMemberAwards(cuMemberAwardsList); // TODO new 现在没有复购考核不需要记录是不是首次全部按复购免考处理就可以
// 是首次晋升的数据 // // 验证满足的这群人是否是首次晋升查询出值的不是首次晋升
Map<Long, CuMemberAwards> cuMemberAwardsMap = new HashMap<>(ComputeUtil.mapInitCapacity(originalCuMemberAwardsList.size())); // List<CuMemberAwards> originalCuMemberAwardsList = baseMapper.queryLastCuMemberAwards(cuMemberAwardsList);
originalCuMemberAwardsList.forEach(cuMemberAwards -> cuMemberAwardsMap.put(cuMemberAwards.getPkMember(), cuMemberAwards)); // // 是首次晋升的数据
// Map<Long, CuMemberAwards> cuMemberAwardsMap = new HashMap<>(ComputeUtil.mapInitCapacity(originalCuMemberAwardsList.size()));
// originalCuMemberAwardsList.forEach(cuMemberAwards -> cuMemberAwardsMap.put(cuMemberAwards.getPkMember(), cuMemberAwards));
cuMemberAwardsList.forEach(cuMemberAwards -> { cuMemberAwardsList.forEach(cuMemberAwards -> {
CuMemberAwards memberAwards = cuMemberAwardsMap.get(cuMemberAwards.getPkMember()); // CuMemberAwards memberAwards = cuMemberAwardsMap.get(cuMemberAwards.getPkMember());
// 没有奖衔升级记录或者奖衔升级记录是会员的 算首次晋升 // // 没有奖衔升级记录或者奖衔升级记录是会员的 算首次晋升
if (memberAwards == null) { // if (memberAwards == null) {
cuMemberAwards.setPurchaseStatus(EYesNo.YES.getIntValue()); // cuMemberAwards.setPurchaseStatus(EYesNo.YES.getIntValue());
} // }
cuMemberAwards.setPurchaseStatus(EYesNo.YES.getIntValue());
}); });
// 插入记录 // 插入记录
baseMapper.saveBatchCuMemberAwards(cuMemberAwardsList); baseMapper.saveBatchCuMemberAwards(cuMemberAwardsList);

View File

@ -158,15 +158,19 @@
<update id="updateCuMemberBackOldAchieveEveryDay"> <update id="updateCuMemberBackOldAchieveEveryDay">
merge into ${tableName} a merge into ${tableName} a
using ( using (
select pk_member,max(a.pk_rate) pk_rate,sum(a_new_amount/bc.out_exchange_rate) a_new_amount,sum(a_new_pv) select pk_member, max(a.pk_rate) pk_rate,
a_new_pv, sum(a_new_amount/bc.out_exchange_rate) a_new_amount,
sum(b_new_amount/bc.out_exchange_rate) b_new_amount,sum(b_new_pv) b_new_pv, sum(a_new_pv) a_new_pv,
sum(rep_a_new_amount/bc.out_exchange_rate) rep_a_new_amount,sum(rep_b_new_amount/bc.out_exchange_rate) sum(b_new_amount/bc.out_exchange_rate) b_new_amount,
rep_b_new_amount, sum(b_new_pv) b_new_pv,
sum(rep_a_new_pv) rep_a_new_pv,sum(rep_b_new_pv) rep_b_new_pv,sum(a_new_real_amount/bc.out_exchange_rate) sum(rep_a_new_amount/bc.out_exchange_rate) rep_a_new_amount,
a_new_real_amount, sum(rep_a_new_pv) rep_a_new_pv,
sum(a_new_real_pv) a_new_real_pv,sum(b_new_real_amount/bc.out_exchange_rate) sum(rep_b_new_amount/bc.out_exchange_rate) rep_b_new_amount,
b_new_real_amount,sum(b_new_real_pv) b_new_real_pv sum(rep_b_new_pv) rep_b_new_pv,
sum(a_new_real_amount/bc.out_exchange_rate) a_new_real_amount,
sum(a_new_real_pv) a_new_real_pv,
sum(b_new_real_amount/bc.out_exchange_rate) b_new_real_amount,
sum(b_new_real_pv) b_new_real_pv
from ( from (
<foreach collection="memberAchieveParamList" item="achieve" open=" " separator=" union all " close=" "> <foreach collection="memberAchieveParamList" item="achieve" open=" " separator=" union all " close=" ">
select pk_place_parent pk_member,#{achieve.pkRate} pk_rate, select pk_place_parent pk_member,#{achieve.pkRate} pk_rate,
@ -183,7 +187,7 @@
(case when place_dept = 2 then #{achieve.newRealAmount} else 0 end) b_new_real_amount, (case when place_dept = 2 then #{achieve.newRealAmount} else 0 end) b_new_real_amount,
(case when place_dept = 2 then #{achieve.newRealPv} else 0 end) b_new_real_pv (case when place_dept = 2 then #{achieve.newRealPv} else 0 end) b_new_real_pv
from( from(
select pk_place_parent,place_dept from( select pk_place_parent,place_dept from (
select * from ${tableName} select * from ${tableName}
start with pk_member = #{achieve.pkMember} start with pk_member = #{achieve.pkMember}
connect by pk_member = prior pk_place_parent connect by pk_member = prior pk_place_parent
@ -212,15 +216,19 @@
<update id="updateCuMemberBackAchieveEveryDay"> <update id="updateCuMemberBackAchieveEveryDay">
merge into ${tableName} a merge into ${tableName} a
using ( using (
select pk_member,max(a.pk_rate) pk_rate,sum(a_new_amount/bc.out_exchange_rate) a_new_amount,sum(a_new_pv) select pk_member,max(a.pk_rate) pk_rate,
a_new_pv, sum(a_new_amount/bc.out_exchange_rate) a_new_amount,
sum(b_new_amount/bc.out_exchange_rate) b_new_amount,sum(b_new_pv) b_new_pv, sum(a_new_pv) a_new_pv,
sum(rep_a_new_amount/bc.out_exchange_rate) rep_a_new_amount,sum(rep_b_new_amount/bc.out_exchange_rate) sum(b_new_amount/bc.out_exchange_rate) b_new_amount,
rep_b_new_amount, sum(b_new_pv) b_new_pv,
sum(rep_a_new_pv) rep_a_new_pv,sum(rep_b_new_pv) rep_b_new_pv,sum(a_new_real_amount/bc.out_exchange_rate) sum(rep_a_new_amount/bc.out_exchange_rate) rep_a_new_amount,
a_new_real_amount, sum(rep_b_new_amount/bc.out_exchange_rate) rep_b_new_amount,
sum(a_new_real_pv) a_new_real_pv,sum(b_new_real_amount/bc.out_exchange_rate) sum(rep_a_new_pv) rep_a_new_pv,
b_new_real_amount,sum(b_new_real_pv) b_new_real_pv sum(rep_b_new_pv) rep_b_new_pv,
sum(a_new_real_amount/bc.out_exchange_rate) a_new_real_amount,
sum(a_new_real_pv) a_new_real_pv,
sum(b_new_real_amount/bc.out_exchange_rate) b_new_real_amount,
sum(b_new_real_pv) b_new_real_pv
from ( from (
<foreach collection="memberAchieveParamList" item="achieve" open=" " separator=" union all " close=" "> <foreach collection="memberAchieveParamList" item="achieve" open=" " separator=" union all " close=" ">
select pk_place_parent pk_member,#{achieve.pkRate} pk_rate, select pk_place_parent pk_member,#{achieve.pkRate} pk_rate,
@ -643,7 +651,7 @@
<update id="updateCuMemberAchieve"> <update id="updateCuMemberAchieve">
merge into ${tableName} a merge into ${tableName} a
using (select #{period} period, a.* using (select #{period} period, a.*
from (select user_id pk_member, from (select user_id pk_member,
sum(CURR_DAY_MAIN_REG_AMOUNT) / 1 REGISTER_AMOUNT, sum(CURR_DAY_MAIN_REG_AMOUNT) / 1 REGISTER_AMOUNT,
sum(CURR_DAY_MAIN_REG_PV) / 1 REGISTER_PV, sum(CURR_DAY_MAIN_REG_PV) / 1 REGISTER_PV,
sum(CURR_DAY_MAIN_UP_AMOUNT) / 1 UPGRADE_AMOUNT, sum(CURR_DAY_MAIN_UP_AMOUNT) / 1 UPGRADE_AMOUNT,

View File

@ -897,9 +897,10 @@
b.pk_settle_country, b.is_real_name, b.is_bus_license, b.is_maker_space, b.pk_country) b.pk_settle_country, b.is_real_name, b.is_bus_license, b.is_maker_space, b.pk_country)
</update> </update>
<!-- TODO 由 max 改为 min ,如果一天多次升奖衔全部重算,不知道会不会有问题 -->
<update id="updateBackCuMemberSettleAward"> <update id="updateBackCuMemberSettleAward">
merge into ${settleTableName} a merge into ${settleTableName} a
using (select pk_member, max(old_level) old_level using (select pk_member, min(old_level) old_level
from cu_member_awards from cu_member_awards
where period = #{period} where period = #{period}
group by pk_member) b group by pk_member) b

View File

@ -151,9 +151,10 @@
order by pk_awards order by pk_awards
</select> </select>
<!-- TODO 由 max 改为 min ,如果一天多次升奖衔全部重算,不知道会不会有问题 -->
<update id="updateBackCuMemberAward"> <update id="updateBackCuMemberAward">
merge into cu_member a merge into cu_member a
using (select pk_member, max(old_level) old_level using (select pk_member, min(old_level) old_level
from cu_member_awards from cu_member_awards
where period = #{period} where period = #{period}
group by pk_member) b group by pk_member) b