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 ff56c439e..665b6bca3 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java @@ -251,6 +251,8 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity && grantAwardsItem.getLimitPrice().compareTo(cashBackPrice) < 0 ){ cashBackPrice = grantAwardsItem.getLimitPrice(); } + cashBackPrice = awardsRulePrice(cashBackPrice,activityItem.getAwardsItemRule()); + cashBackPriceTotal = cashBackPriceTotal.add(cashBackPrice); } @@ -310,6 +312,8 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity //计算返现金额 BigDecimal cashBackPrice = orderMoneySum .multiply(grantAwardsItem.getCashBackRatio().divide(new BigDecimal(100))); + cashBackPrice = awardsRulePrice(cashBackPrice,activityItem.getAwardsItemRule()); + cashBackPriceTotal = cashBackPriceTotal.add(cashBackPrice); } @@ -323,6 +327,8 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity //计算返现金额 BigDecimal cashBackPrice = wxOfflineActivityGrantAward.getOrderMoneySum() .multiply(grantAwardsSecondItem.getCashBackRatio().divide(new BigDecimal(100))); + cashBackPrice = awardsRulePrice(cashBackPrice,activityItem.getAwardsItemRule()); + cashBackPriceTotal = cashBackPriceTotal.add(cashBackPrice); } } @@ -330,14 +336,6 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity if(cashBackPriceTotal.compareTo(activityItem.getMaxAmount()) >= 0){ cashBackPriceTotal = activityItem.getMaxAmount(); } - if(EnumOfflineActivityAwardsRule.DEF.getCode().equals(activityItem.getAwardsItemRule())){ - cashBackPriceTotal = cashBackPriceTotal.setScale(2, RoundingMode.HALF_UP); - } else if (EnumOfflineActivityAwardsRule.YUAN.getCode().equals(activityItem.getAwardsItemRule())) { - cashBackPriceTotal = cashBackPriceTotal.setScale(0, RoundingMode.HALF_UP); - }else if (EnumOfflineActivityAwardsRule.TEN.getCode().equals(activityItem.getAwardsItemRule())){ - cashBackPriceTotal = cashBackPriceTotal.divide(new BigDecimal(10)) - .setScale(0, RoundingMode.HALF_UP).multiply(new BigDecimal(10)); - } WxOfflineActivityGrantCashBack activityGrantCashBack = new WxOfflineActivityGrantCashBack(); activityGrantCashBack.setActivityId(activity.getId()); @@ -790,6 +788,10 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity && grantAwardsItem.getLimitPrice().compareTo(cashBackPrice) < 0 ){ cashBackPrice = grantAwardsItem.getLimitPrice(); } + cashBackPrice = awardsRulePrice(cashBackPrice,activityItem.getAwardsItemRule()); + if(cashBackPrice.compareTo(BigDecimal.ZERO) == 0){ + continue; + } grantAwardsItem.setPrice(cashBackPrice); handlerGrantItem(grantGrantItem,activity,activityItem,grantAwardsItem); @@ -825,11 +827,14 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity //计算返现金额 BigDecimal cashBackPrice = orderMoneySum .multiply(grantAwardsItem.getCashBackRatio().divide(new BigDecimal(100))); - grantAwardsItem.setPrice(cashBackPrice); - handlerGrantItem(grantGrantItem,activity,activityItem,grantAwardsItem); + cashBackPrice = awardsRulePrice(cashBackPrice,activityItem.getAwardsItemRule()); + if(cashBackPrice.compareTo(BigDecimal.ZERO) > 0){ + grantAwardsItem.setPrice(cashBackPrice); + handlerGrantItem(grantGrantItem,activity,activityItem,grantAwardsItem); - activityGrantItemList.add(grantGrantItem); - cashBackPriceTotal = cashBackPriceTotal.add(cashBackPrice); + activityGrantItemList.add(grantGrantItem); + cashBackPriceTotal = cashBackPriceTotal.add(cashBackPrice); + } } } @@ -843,11 +848,14 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity //计算返现金额 BigDecimal cashBackPrice = wxOfflineActivityGrantAward.getOrderMoneySum() .multiply(awardsSecondItem.getCashBackRatio().divide(new BigDecimal(100))); - awardsSecondItem.setPrice(cashBackPrice); - handlerGrantItem(grantGrantItem,activity,activityItem,awardsSecondItem); + cashBackPrice = awardsRulePrice(cashBackPrice,activityItem.getAwardsItemRule()); + if(cashBackPrice.compareTo(BigDecimal.ZERO) > 0){ + awardsSecondItem.setPrice(cashBackPrice); + handlerGrantItem(grantGrantItem,activity,activityItem,awardsSecondItem); - activityGrantItemList.add(grantGrantItem); - cashBackPriceTotal = cashBackPriceTotal.add(cashBackPrice); + activityGrantItemList.add(grantGrantItem); + cashBackPriceTotal = cashBackPriceTotal.add(cashBackPrice); + } } } @@ -856,22 +864,26 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity prop = activityItem.getMaxAmount().divide(cashBackPriceTotal,4,RoundingMode.HALF_UP); cashBackPriceTotal = activityItem.getMaxAmount(); } - if(EnumOfflineActivityAwardsRule.DEF.getCode().equals(activityItem.getAwardsItemRule())){ - cashBackPriceTotal = cashBackPriceTotal.setScale(2, RoundingMode.HALF_UP); - } else if (EnumOfflineActivityAwardsRule.YUAN.getCode().equals(activityItem.getAwardsItemRule())) { - cashBackPriceTotal = cashBackPriceTotal.setScale(0, RoundingMode.HALF_UP); - }else if (EnumOfflineActivityAwardsRule.TEN.getCode().equals(activityItem.getAwardsItemRule())){ - cashBackPriceTotal = cashBackPriceTotal.divide(new BigDecimal(10)) - .setScale(0, RoundingMode.HALF_UP).multiply(new BigDecimal(10)); - } - for (WxOfflineActivityGrantItem grantItem:activityGrantItemList){ - if(EnumOfflineActivityAwardsRule.DEF.getCode().equals(activityItem.getAwardsItemRule())){ - grantItem.setAwardPrice(grantItem.getAwardPrice().multiply(prop).setScale(2, RoundingMode.HALF_UP)); - } else if (EnumOfflineActivityAwardsRule.YUAN.getCode().equals(activityItem.getAwardsItemRule())) { - grantItem.setAwardPrice(grantItem.getAwardPrice().multiply(prop).setScale(0, RoundingMode.HALF_UP)); - }else if (EnumOfflineActivityAwardsRule.TEN.getCode().equals(activityItem.getAwardsItemRule())){ - grantItem.setAwardPrice(grantItem.getAwardPrice().multiply(prop).divide(new BigDecimal(10)) - .setScale(0, RoundingMode.HALF_UP).multiply(new BigDecimal(10))); +// if(EnumOfflineActivityAwardsRule.DEF.getCode().equals(activityItem.getAwardsItemRule())){ +// cashBackPriceTotal = cashBackPriceTotal.setScale(2, RoundingMode.HALF_UP); +// } else if (EnumOfflineActivityAwardsRule.YUAN.getCode().equals(activityItem.getAwardsItemRule())) { +// cashBackPriceTotal = cashBackPriceTotal.setScale(0, RoundingMode.HALF_UP); +// }else if (EnumOfflineActivityAwardsRule.TEN.getCode().equals(activityItem.getAwardsItemRule())){ +// cashBackPriceTotal = cashBackPriceTotal.divide(new BigDecimal(10)) +// .setScale(0, RoundingMode.HALF_UP).multiply(new BigDecimal(10)); +// } + if(prop.compareTo(BigDecimal.ONE) < 0){ + for (WxOfflineActivityGrantItem grantItem:activityGrantItemList){ + grantItem.setAwardPrice(awardsRulePrice(grantItem.getAwardPrice().multiply(prop),activityItem.getAwardsItemRule())); +// awardsRulePrice(grantItem.getAwardPrice().multiply(prop),activityItem.getAwardsItemRule()); +// if(EnumOfflineActivityAwardsRule.DEF.getCode().equals(activityItem.getAwardsItemRule())){ +// grantItem.setAwardPrice(grantItem.getAwardPrice().multiply(prop).setScale(2, RoundingMode.HALF_UP)); +// } else if (EnumOfflineActivityAwardsRule.YUAN.getCode().equals(activityItem.getAwardsItemRule())) { +// grantItem.setAwardPrice(grantItem.getAwardPrice().multiply(prop).setScale(0, RoundingMode.HALF_UP)); +// }else if (EnumOfflineActivityAwardsRule.TEN.getCode().equals(activityItem.getAwardsItemRule())){ +// grantItem.setAwardPrice(grantItem.getAwardPrice().multiply(prop).divide(new BigDecimal(10)) +// .setScale(0, RoundingMode.HALF_UP).multiply(new BigDecimal(10))); +// } } } @@ -1539,6 +1551,22 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity return headList; } + + + + private BigDecimal awardsRulePrice(BigDecimal awardsPrice,Integer awardsRule){ + BigDecimal awardsRulePrice = BigDecimal.ZERO; + if(EnumOfflineActivityAwardsRule.DEF.getCode().equals(awardsRule)){ + awardsRulePrice = awardsPrice.setScale(2, RoundingMode.HALF_UP); + } else if (EnumOfflineActivityAwardsRule.YUAN.getCode().equals(awardsRule)) { + awardsRulePrice = awardsPrice.setScale(0, RoundingMode.HALF_UP); + }else if (EnumOfflineActivityAwardsRule.TEN.getCode().equals(awardsRule)){ + awardsRulePrice = awardsPrice.divide(new BigDecimal(10)) + .setScale(0, RoundingMode.HALF_UP).multiply(new BigDecimal(10)); + } + return awardsRulePrice; + } + }