## Opt - 补偿结余金额计算逻辑

This commit is contained in:
sangelxiu1 2025-10-21 14:02:08 +08:00
parent 9e3684a04d
commit 41eda4e79e
3 changed files with 30 additions and 0 deletions

View File

@ -156,6 +156,16 @@ public interface CuMemberAchieveMapper extends BaseMapper<CuMemberAchieve> {
void chargeBackSaOrder(@Param("targetTable") String targetTable, @Param("sourceTable") String sourceTable, void chargeBackSaOrder(@Param("targetTable") String targetTable, @Param("sourceTable") String sourceTable,
@Param("period") Integer period, @Param("achieve") MemberAchieveParam memberAchieveParam); @Param("period") Integer period, @Param("achieve") MemberAchieveParam memberAchieveParam);
/**
* 补偿结余金额
* @param targetTable
* @param sourceTable
* @param period
* @param memberAchieveParam
*/
void compensationBalanceAmount(@Param("targetTable") String targetTable, @Param("sourceTable") String sourceTable,
@Param("period") Integer period, @Param("achieve") MemberAchieveParam memberAchieveParam);
/** /**
* 根据每日日业绩开始更新会员业绩 新增业绩累计业绩新増金额累计金额 * 根据每日日业绩开始更新会员业绩 新增业绩累计业绩新増金额累计金额
* *

View File

@ -185,6 +185,7 @@ public class CuMemberAchieveServiceImpl extends ServiceImpl<CuMemberAchieveMappe
int settlePeriod = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(settleDate).getPkId(); int settlePeriod = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(settleDate).getPkId();
String targetTable = TableNameConstants.CU_MEMBER_SETTLE + settlePeriod; String targetTable = TableNameConstants.CU_MEMBER_SETTLE + settlePeriod;
baseMapper.chargeBackSaOrder(targetTable, sourceTable, period, cuMemberAchieve); baseMapper.chargeBackSaOrder(targetTable, sourceTable, period, cuMemberAchieve);
baseMapper.compensationBalanceAmount(targetTable, sourceTable, period, cuMemberAchieve);
} }
return Boolean.TRUE; return Boolean.TRUE;
} }

View File

@ -1011,6 +1011,25 @@
a.a_balance = b.a_balance,a.b_balance = b.b_balance, a.a_balance = b.a_balance,a.b_balance = b.b_balance,
a.min_achieve = b.min_achieve,a.round = b.round,a.second = b.second a.min_achieve = b.min_achieve,a.round = b.round,a.second = b.second
</update> </update>
<update id="compensationBalanceAmount">
UPDATE ${targetTable} t
SET A_BALANCE = CASE
WHEN t.a_sum_pv > t.b_sum_pv THEN t.a_sum_pv - t.b_sum_pv
ELSE 0
END,
B_BALANCE = CASE
WHEN t.b_sum_pv > t.a_sum_pv THEN t.b_sum_pv - t.a_sum_pv
ELSE 0
END
WHERE t.period = 14
AND t.pk_member IN (
SELECT pk_member
FROM ${targetTable}
WHERE period = #{period}
START WITH pk_member = 20768
CONNECT BY PRIOR pk_member = #{achieve.pkMember}
)
</update>
<select id="queryCuMemberAchieveByPkMember" resultMap="CuMemberAchieve"> <select id="queryCuMemberAchieveByPkMember" resultMap="CuMemberAchieve">
SELECT PK_MEMBER, SELECT PK_MEMBER,