From 808dacb4e8c8eed03e414ddd60fa8ce407a09a63 Mon Sep 17 00:00:00 2001 From: xiaohu <1901900812@qq.com> Date: Fri, 16 Aug 2024 13:39:22 +0800 Subject: [PATCH] //OfflineActivity --- .../po/WxOfflineActivityAwardsItem.java | 4 +++ .../domain/po/WxOfflineActivityGrantItem.java | 4 +++ ...xOfflineActivityGrantAwardServiceImpl.java | 30 ++++++++++++++++++- 3 files changed, 37 insertions(+), 1 deletion(-) diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityAwardsItem.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityAwardsItem.java index f2511929b..dc95ebc54 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityAwardsItem.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityAwardsItem.java @@ -79,12 +79,16 @@ public class WxOfflineActivityAwardsItem extends TenantEntity { */ @TableField(value = "mall_share_rate") private BigDecimal mallShareRate; + @TableField(exist = false) + private BigDecimal mallSharePrice; /** * 商户分担比例 */ @TableField(value = "merchant_share_rate") private BigDecimal merchantShareRate; + @TableField(exist = false) + private BigDecimal merchantSharePrice; /** * 创建时间 diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantItem.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantItem.java index 3b5f84b3d..7bd378699 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantItem.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantItem.java @@ -129,12 +129,16 @@ public class WxOfflineActivityGrantItem extends TenantEntity { */ @TableField(value = "mall_share_rate") private BigDecimal mallShareRate; + @TableField(exist = false) + private BigDecimal mallSharePrice; /** * 商户分担比例 */ @TableField(value = "merchant_share_rate") private BigDecimal merchantShareRate; + @TableField(exist = false) + private BigDecimal merchantSharePrice; /** * 创建时间 diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java index 6b6df9620..61db73e7b 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java @@ -25,6 +25,7 @@ import org.springframework.transaction.annotation.Transactional; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.math.BigDecimal; +import java.math.RoundingMode; import java.net.MalformedURLException; import java.net.URL; import java.text.NumberFormat; @@ -206,8 +207,13 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity limitCount = activityItem.getAwardsItemLimit(); } activityItem.setRealAwardsItemLimit(limitCount); + //计算商户商管分别承担金额 + handlerAwardsSharePrice(activityItem.getActivityAwardsItemList()); } else if(EnumOfflineActivityType.GIFT.getCode().equals(activityItem.getType())){ + //计算商户商管分别承担金额 + handlerAwardsSharePrice(activityItem.getActivityAwardsItemList()); + List sortAwardsItemList = activityItem.getActivityAwardsItemList().stream().sorted(Comparator.comparing(WxOfflineActivityAwardsItem::getMinAmount)).collect(toList()); WxOfflineActivityAwardsItem grantAwardsItem = null; for(WxOfflineActivityAwardsItem awardsItem : sortAwardsItemList){ @@ -237,7 +243,9 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity grantItem.setAwardPrice(grantAwardsItem.getPrice()); grantItem.setMoneyRule(grantAwardsItem.getMoneyRule()); grantItem.setMallShareRate(grantAwardsItem.getMallShareRate()); + grantItem.setMallSharePrice(grantAwardsItem.getMallSharePrice()); grantItem.setMerchantShareRate(grantAwardsItem.getMerchantShareRate()); + grantItem.setMerchantSharePrice(grantAwardsItem.getMerchantSharePrice()); activityItem.setActivityGrantItemList(Collections.singletonList(grantItem)); } else if (EnumOfflineActivityType.CASHBACK.getCode().equals(activityItem.getType())) { @@ -260,10 +268,24 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity awardsItem.setPrice(cashBackPriceTen.multiply(new BigDecimal(10))); } } + //计算商户商管分别承担金额 + handlerAwardsSharePrice(activityItem.getActivityAwardsItemList()); } } } + private void handlerAwardsSharePrice(List awardsItemList){ + if(awardsItemList == null || awardsItemList.isEmpty()){ + return; + } + for(WxOfflineActivityAwardsItem awardsItem : awardsItemList){ + awardsItem.setMallSharePrice(awardsItem.getPrice() + .multiply(awardsItem.getMallShareRate().divide(new BigDecimal(100))) + .setScale(0, RoundingMode.HALF_UP)); + awardsItem.setMerchantSharePrice(awardsItem.getPrice().subtract(awardsItem.getMallSharePrice())); + } + } + @Override @Transactional(rollbackFor = Exception.class) public void grantAward(WxOfflineActivityGrantAward wxOfflineActivityGrantAward) { @@ -470,7 +492,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity grantGrantItem.setAwardMaxAmount(awardsItem.getMaxAmount()); grantGrantItem.setAwardsItemRule(activityItem.getAwardsItemRule()); grantGrantItem.setCashBackRatio(awardsItem.getCashBackRatio()); - grantGrantItem.setAwardPrice(awardsItem.getPrice().multiply(new BigDecimal(grantGrantItem.getAwardCount())).setScale(2, BigDecimal.ROUND_HALF_UP)); + grantGrantItem.setAwardPrice(awardsItem.getPrice().multiply(new BigDecimal(grantGrantItem.getAwardCount())).setScale(2, RoundingMode.HALF_UP)); grantGrantItem.setMoneyRule(awardsItem.getMoneyRule()); grantGrantItem.setMallShareRate(awardsItem.getMallShareRate()); grantGrantItem.setMerchantShareRate(awardsItem.getMerchantShareRate()); @@ -556,6 +578,12 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity activityItem.setIsMeet(false); continue; } + for (WxOfflineActivityGrantItem grantItem : grantActivityItemList) { + grantItem.setMallSharePrice(grantItem.getAwardPrice() + .multiply(grantItem.getMallShareRate().divide(new BigDecimal(100))) + .setScale(0, RoundingMode.HALF_UP)); + grantItem.setMerchantSharePrice(grantItem.getAwardPrice().subtract(grantItem.getMallSharePrice())); + } activityItem.setIsMeet(true); activityItem.setActivityGrantItemList(grantActivityItemList); }