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

This commit is contained in:
cabbage 2025-04-12 13:39:22 +08:00
parent c26c7f59e7
commit acdaf44bdc
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,
recordDetailVO, cuMemberSettleExtMap);
// 计算乐享订单奖金按照订单进行日结
// 增加判断是否相同月相同月的话昨天的考核结果更新到今天
Boolean isSameMonth = DateUtils.getMonth(settleDate).equals(DateUtils.getMonth(yesterday));
// 乐享奖金
bonusSettleRangeHandle.calculateLeEnjoyBonusBySaOrder(cuMemberBonusMap, bonusConfigDTO, recordDetailVO,
period, yesterdayPeriod, isSameMonth);
// TODO new 奖衔走累计一次性的此处不需要处理防止出现奖衔升级记录不对
// // 计算乐享订单奖金按照订单进行日结
// // 增加判断是否相同月相同月的话昨天的考核结果更新到今天
// Boolean isSameMonth = DateUtils.getMonth(settleDate).equals(DateUtils.getMonth(yesterday));
// // 乐享奖金
// bonusSettleRangeHandle.calculateLeEnjoyBonusBySaOrder(cuMemberBonusMap, bonusConfigDTO, recordDetailVO,
// period, yesterdayPeriod, isSameMonth);
// // 计算新零售团队奖金
// bonusSettleRangeHandle.calculateRetailBonusBySaOrder(settleDate, cuMemberBonusMap, bonusConfigDTO, recordDetailVO,
// period, yesterdayPeriod, retailOrderList, isSameMonth);

View File

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

View File

@ -158,15 +158,19 @@
<update id="updateCuMemberBackOldAchieveEveryDay">
merge into ${tableName} a
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)
a_new_pv,
sum(b_new_amount/bc.out_exchange_rate) b_new_amount,sum(b_new_pv) b_new_pv,
sum(rep_a_new_amount/bc.out_exchange_rate) rep_a_new_amount,sum(rep_b_new_amount/bc.out_exchange_rate)
rep_b_new_amount,
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)
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
select pk_member, max(a.pk_rate) pk_rate,
sum(a_new_amount/bc.out_exchange_rate) a_new_amount,
sum(a_new_pv) a_new_pv,
sum(b_new_amount/bc.out_exchange_rate) b_new_amount,
sum(b_new_pv) b_new_pv,
sum(rep_a_new_amount/bc.out_exchange_rate) rep_a_new_amount,
sum(rep_a_new_pv) rep_a_new_pv,
sum(rep_b_new_amount/bc.out_exchange_rate) rep_b_new_amount,
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 (
<foreach collection="memberAchieveParamList" item="achieve" open=" " separator=" union all " close=" ">
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.newRealPv} else 0 end) b_new_real_pv
from(
select pk_place_parent,place_dept from(
select pk_place_parent,place_dept from (
select * from ${tableName}
start with pk_member = #{achieve.pkMember}
connect by pk_member = prior pk_place_parent
@ -212,15 +216,19 @@
<update id="updateCuMemberBackAchieveEveryDay">
merge into ${tableName} a
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)
a_new_pv,
sum(b_new_amount/bc.out_exchange_rate) b_new_amount,sum(b_new_pv) b_new_pv,
sum(rep_a_new_amount/bc.out_exchange_rate) rep_a_new_amount,sum(rep_b_new_amount/bc.out_exchange_rate)
rep_b_new_amount,
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)
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
select pk_member,max(a.pk_rate) pk_rate,
sum(a_new_amount/bc.out_exchange_rate) a_new_amount,
sum(a_new_pv) a_new_pv,
sum(b_new_amount/bc.out_exchange_rate) b_new_amount,
sum(b_new_pv) b_new_pv,
sum(rep_a_new_amount/bc.out_exchange_rate) rep_a_new_amount,
sum(rep_b_new_amount/bc.out_exchange_rate) rep_b_new_amount,
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) 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 (
<foreach collection="memberAchieveParamList" item="achieve" open=" " separator=" union all " close=" ">
select pk_place_parent pk_member,#{achieve.pkRate} pk_rate,
@ -643,7 +651,7 @@
<update id="updateCuMemberAchieve">
merge into ${tableName} 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_PV) / 1 REGISTER_PV,
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)
</update>
<!-- TODO 由 max 改为 min ,如果一天多次升奖衔全部重算,不知道会不会有问题 -->
<update id="updateBackCuMemberSettleAward">
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
where period = #{period}
group by pk_member) b

View File

@ -151,9 +151,10 @@
order by pk_awards
</select>
<!-- TODO 由 max 改为 min ,如果一天多次升奖衔全部重算,不知道会不会有问题 -->
<update id="updateBackCuMemberAward">
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
where period = #{period}
group by pk_member) b