Compare commits

...

3 Commits

Author SHA1 Message Date
cabbage b9eb35f130 ## 平级收益价格按单商品处理; 2025-06-13 14:34:14 +08:00
sangelxiu1 147e28fbf6 ## Opt - mq补偿增加业绩 2025-06-13 14:34:13 +08:00
sangelxiu1 dc4681cd3b ## Opt - mq补偿增加业绩 2025-06-13 14:34:12 +08:00
2 changed files with 31 additions and 18 deletions

View File

@ -38,6 +38,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.temporal.ChronoUnit;
import java.util.*;
import java.util.stream.Collectors;
@ -1287,6 +1288,9 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
BigDecimal waresPrice = saOrderItems.getWaresPrice();
// 商品数量
BigDecimal waresQuantityBig = new BigDecimal(saOrderItems.getWaresQuantity());
// 单个商品价格
BigDecimal waresOnePrice = waresPrice.divide(waresQuantityBig, 6, RoundingMode.FLOOR);
// 前一个会员等级
int beforeGradeValue = 0;
// 前一个会员等级的平级收益人数
@ -1356,7 +1360,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
continue;
}
// 平级收益商品价格 * 千分之五 -- 6位小数四舍五入
sameBonusIncome = waresPrice.multiply(RetailConstants.SAME_RATIO).setScale(6, BigDecimal.ROUND_HALF_UP);
sameBonusIncome = waresOnePrice.multiply(RetailConstants.SAME_RATIO).setScale(6, BigDecimal.ROUND_HALF_UP).multiply(waresQuantityBig);
// 平级收益累计
beforeSameBonus = beforeSameBonus.add(sameBonusIncome);
// 平级等级代数等级

View File

@ -594,22 +594,31 @@
</select>
<update id="recalculateTeamNewBoxNum">
UPDATE ${retailsTableName}
SET ENABLE_STATUS = 0, TEAM_NEW_BOX_NUM = (
SELECT SUM(boxNum)
FROM (
SELECT b.PK_ID, NVL(s.NEW_BOX_NUM, 0) AS boxNum
FROM ${retailsTableName} s
RIGHT JOIN (
SELECT cm.PK_ID
FROM cu_member cm
WHERE cm.PK_ID != #{pkId}
START WITH cm.PK_ID = #{pkId}
CONNECT BY PRIOR cm.pk_id = cm.pk_parent
ORDER BY LEVEL
) b ON s.PK_MEMBER = b.PK_ID
) c
)
WHERE PK_MEMBER = #{pkId}
MERGE INTO ${retailsTableName} s
USING (
SELECT SUM(boxNum) AS boxNum, SUM(pv) AS pv, pk_id
FROM (
SELECT b.PK_ID,
NVL(s.NEW_BOX_NUM, 0) AS boxNum,
NVL(s.NEW_CONSUME_PV, 0) AS pv
FROM ${retailsTableName} s
RIGHT JOIN (
SELECT cm.PK_ID
FROM cu_member cm
WHERE cm.PK_ID != #{pkId}
START WITH cm.PK_ID = #{pkId}
CONNECT BY PRIOR cm.pk_id = cm.pk_parent
ORDER BY LEVEL
) b ON s.PK_MEMBER = b.PK_ID
) c
GROUP BY pk_id
) result
ON (s.PK_MEMBER = result.PK_ID)
WHEN MATCHED THEN
UPDATE SET
s.ENABLE_STATUS = 0,
s.TEAM_NEW_BOX_NUM = result.boxNum,
s.TEAM_NEW_PV = result.pv
WHERE s.PK_MEMBER = #{pkId}
</update>
</mapper>