| @@ -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; | |||
| } | |||
| } | |||