| @@ -251,6 +251,8 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity | |||||
| && grantAwardsItem.getLimitPrice().compareTo(cashBackPrice) < 0 ){ | && grantAwardsItem.getLimitPrice().compareTo(cashBackPrice) < 0 ){ | ||||
| cashBackPrice = grantAwardsItem.getLimitPrice(); | cashBackPrice = grantAwardsItem.getLimitPrice(); | ||||
| } | } | ||||
| cashBackPrice = awardsRulePrice(cashBackPrice,activityItem.getAwardsItemRule()); | |||||
| cashBackPriceTotal = cashBackPriceTotal.add(cashBackPrice); | cashBackPriceTotal = cashBackPriceTotal.add(cashBackPrice); | ||||
| } | } | ||||
| @@ -310,6 +312,8 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity | |||||
| //计算返现金额 | //计算返现金额 | ||||
| BigDecimal cashBackPrice = orderMoneySum | BigDecimal cashBackPrice = orderMoneySum | ||||
| .multiply(grantAwardsItem.getCashBackRatio().divide(new BigDecimal(100))); | .multiply(grantAwardsItem.getCashBackRatio().divide(new BigDecimal(100))); | ||||
| cashBackPrice = awardsRulePrice(cashBackPrice,activityItem.getAwardsItemRule()); | |||||
| cashBackPriceTotal = cashBackPriceTotal.add(cashBackPrice); | cashBackPriceTotal = cashBackPriceTotal.add(cashBackPrice); | ||||
| } | } | ||||
| @@ -323,6 +327,8 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity | |||||
| //计算返现金额 | //计算返现金额 | ||||
| BigDecimal cashBackPrice = wxOfflineActivityGrantAward.getOrderMoneySum() | BigDecimal cashBackPrice = wxOfflineActivityGrantAward.getOrderMoneySum() | ||||
| .multiply(grantAwardsSecondItem.getCashBackRatio().divide(new BigDecimal(100))); | .multiply(grantAwardsSecondItem.getCashBackRatio().divide(new BigDecimal(100))); | ||||
| cashBackPrice = awardsRulePrice(cashBackPrice,activityItem.getAwardsItemRule()); | |||||
| cashBackPriceTotal = cashBackPriceTotal.add(cashBackPrice); | cashBackPriceTotal = cashBackPriceTotal.add(cashBackPrice); | ||||
| } | } | ||||
| } | } | ||||
| @@ -330,14 +336,6 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity | |||||
| if(cashBackPriceTotal.compareTo(activityItem.getMaxAmount()) >= 0){ | if(cashBackPriceTotal.compareTo(activityItem.getMaxAmount()) >= 0){ | ||||
| cashBackPriceTotal = activityItem.getMaxAmount(); | 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(); | WxOfflineActivityGrantCashBack activityGrantCashBack = new WxOfflineActivityGrantCashBack(); | ||||
| activityGrantCashBack.setActivityId(activity.getId()); | activityGrantCashBack.setActivityId(activity.getId()); | ||||
| @@ -790,6 +788,10 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity | |||||
| && grantAwardsItem.getLimitPrice().compareTo(cashBackPrice) < 0 ){ | && grantAwardsItem.getLimitPrice().compareTo(cashBackPrice) < 0 ){ | ||||
| cashBackPrice = grantAwardsItem.getLimitPrice(); | cashBackPrice = grantAwardsItem.getLimitPrice(); | ||||
| } | } | ||||
| cashBackPrice = awardsRulePrice(cashBackPrice,activityItem.getAwardsItemRule()); | |||||
| if(cashBackPrice.compareTo(BigDecimal.ZERO) == 0){ | |||||
| continue; | |||||
| } | |||||
| grantAwardsItem.setPrice(cashBackPrice); | grantAwardsItem.setPrice(cashBackPrice); | ||||
| handlerGrantItem(grantGrantItem,activity,activityItem,grantAwardsItem); | handlerGrantItem(grantGrantItem,activity,activityItem,grantAwardsItem); | ||||
| @@ -825,11 +827,14 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity | |||||
| //计算返现金额 | //计算返现金额 | ||||
| BigDecimal cashBackPrice = orderMoneySum | BigDecimal cashBackPrice = orderMoneySum | ||||
| .multiply(grantAwardsItem.getCashBackRatio().divide(new BigDecimal(100))); | .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() | BigDecimal cashBackPrice = wxOfflineActivityGrantAward.getOrderMoneySum() | ||||
| .multiply(awardsSecondItem.getCashBackRatio().divide(new BigDecimal(100))); | .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); | prop = activityItem.getMaxAmount().divide(cashBackPriceTotal,4,RoundingMode.HALF_UP); | ||||
| cashBackPriceTotal = activityItem.getMaxAmount(); | 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; | 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; | |||||
| } | |||||
| } | } | ||||