|
|
|
@@ -16,6 +16,8 @@ import com.iformall.mapper.*; |
|
|
|
import com.iformall.service.*; |
|
|
|
import com.iformall.utils.DateUtils; |
|
|
|
import com.iformall.utils.DownFileUtil; |
|
|
|
import org.slf4j.Logger; |
|
|
|
import org.slf4j.LoggerFactory; |
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
|
@@ -23,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; |
|
|
|
@@ -40,6 +43,8 @@ import static java.util.stream.Collectors.*; |
|
|
|
@Service |
|
|
|
public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivityGrantAwardService{ |
|
|
|
|
|
|
|
private static final Logger log = LoggerFactory.getLogger(WxOfflineActivityGrantAwardServiceImpl.class); |
|
|
|
|
|
|
|
@Autowired |
|
|
|
private WxOfflineActivityGrantAwardMapper wxOfflineActivityGrantAwardMapper; |
|
|
|
|
|
|
|
@@ -202,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<WxOfflineActivityAwardsItem> sortAwardsItemList = activityItem.getActivityAwardsItemList().stream().sorted(Comparator.comparing(WxOfflineActivityAwardsItem::getMinAmount)).collect(toList()); |
|
|
|
WxOfflineActivityAwardsItem grantAwardsItem = null; |
|
|
|
for(WxOfflineActivityAwardsItem awardsItem : sortAwardsItemList){ |
|
|
|
@@ -233,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())) { |
|
|
|
@@ -256,10 +268,24 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity |
|
|
|
awardsItem.setPrice(cashBackPriceTen.multiply(new BigDecimal(10))); |
|
|
|
} |
|
|
|
} |
|
|
|
//计算商户商管分别承担金额 |
|
|
|
handlerAwardsSharePrice(activityItem.getActivityAwardsItemList()); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
private void handlerAwardsSharePrice(List<WxOfflineActivityAwardsItem> 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) { |
|
|
|
@@ -466,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()); |
|
|
|
@@ -552,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); |
|
|
|
} |
|
|
|
|