浏览代码

活动相关bug修复

lhm 3 年之前
父节点
当前提交
928bcb0d11
共有 1 个文件被更改,包括 6 次插入7 次删除
  1. 6 7
      kmall-admin/src/main/java/com/kmall/admin/service/impl/OrderServiceImpl.java

+ 6 - 7
kmall-admin/src/main/java/com/kmall/admin/service/impl/OrderServiceImpl.java

@@ -4516,7 +4516,7 @@ public class OrderServiceImpl implements OrderService {
                 Integer score = memberInfoDTO.getScore();
                 if (Objects.nonNull(score) && score > 0) {
                     // 有积分
-                    afterDiscountPrice = calculatePreferentialPrice(orderTotalPrice, score, memberCode, storeId, calculateOrderDiscountPriceResponseVO, goodsDetailsDtos, promotionSkuList, mkActivitiesEntityList);
+                    afterDiscountPrice = calculatePreferentialPrice(orderTotalPrice, score, memberCode, calculateOrderDiscountPriceResponseVO, goodsDetailsDtos, promotionSkuList, mkActivitiesEntityList);
                     LOGGER.info("会员【{}】,当前积分:{},积分抵扣后的订单金额:{},积分抵扣前的订单金额:{}", memberCode, score, afterDiscountPrice, orderTotalPrice);
                     calculateOrderDiscountPriceResponseVO.setOrderTotalPrice(afterDiscountPrice);
                     calculateOrderDiscountPriceResponseVO.setGoodsDetailsDtos(goodsDetailsDtos);
@@ -4549,7 +4549,6 @@ public class OrderServiceImpl implements OrderService {
      * @param score             积分
      * @param memberCode        会员码
      * @param goodsDetailsDtos  订单商品详情
-     * @param activityFlag      是否参加过活动
      * @param calculateOrderDiscountPriceResponseVO 响应数据
      * @param promotionSkuList  参与了限时特价活动并且与积分抵扣互斥的sku集合
      *
@@ -4558,7 +4557,6 @@ public class OrderServiceImpl implements OrderService {
     private BigDecimal calculatePreferentialPrice(BigDecimal orderTotalPrice,
                                                   Integer score,
                                                   String memberCode,
-                                                  String storeId,
                                                   CalculateOrderDiscountPriceResponseVO calculateOrderDiscountPriceResponseVO,
                                                   List<GoodsDetailsDto> goodsDetailsDtos,
                                                   List<String> promotionSkuList,
@@ -4590,8 +4588,8 @@ public class OrderServiceImpl implements OrderService {
                 .collect(Collectors.toMap(MkActivitiesScoreEntity::getSku, mkActivitiesScoreEntity -> {
                     BigDecimal scoreLimit = mkActivitiesScoreEntity.getScoreLimit();
                     if (Objects.isNull(scoreLimit)) {
-                        LOGGER.error("商品:【{}】,未设置最大抵扣比例!请设置后计算优惠价!", mkActivitiesScoreEntity.getSku());
-                        throw new ServiceException(String.format("商品:【%s】,未设置最大抵扣比例!请设置后计算优惠价!", mkActivitiesScoreEntity.getSku()));
+                        LOGGER.error("商品:【{}】,未设置最大抵扣比例!请设置后计算优惠价!", mkActivitiesScoreEntity.getSku());
+                        throw new ServiceException(String.format("商品:【%s】,未设置最大抵扣比例!请设置后计算优惠价!", mkActivitiesScoreEntity.getSku()));
                     }
                     return scoreLimit;
                 }, (k1, k2) -> k2));
@@ -4635,7 +4633,8 @@ public class OrderServiceImpl implements OrderService {
                     GoodsDetailsDto goodsDetailsDto = goodsDetailsDtos.get(i);
                     // 抵扣积分分摊
                     int index = size - 1;
-                    goodsDetailsDto.setActivity(org.springframework.util.StringUtils.isEmpty(goodsDetailsDto.getActivity()) ? "积分抵扣" : goodsDetailsDto.getActivity() + ",积分抵扣");
+                    String activity = goodsDetailsDto.getActivity();
+                    goodsDetailsDto.setActivity(org.springframework.util.StringUtils.isEmpty(activity) ? "积分抵扣" : activity.contains("积分抵扣") ? activity : activity + ",积分抵扣");
                     String sku = goodsDetailsDto.getGoodsSn();
                     // 系统设置的最大抵扣比例(最多能抵扣订单金额的比例),导入积分抵扣活动时设置
                     BigDecimal scoreLimitDecimal = skuScoreLimitMap.get(sku);
@@ -4654,7 +4653,7 @@ public class OrderServiceImpl implements OrderService {
                     BigDecimal discountedPrice = BigDecimal.ZERO;
                     // 计算抵扣,当商品不是最后一个商品
                     if (i < index) {
-                        shareScoreItem = actualPaymentAmount.divide(skuTotalPrice, 2, BigDecimal.ROUND_HALF_UP).multiply(scoreIntegerDecimal);
+                        shareScoreItem = actualPaymentAmount.divide(skuTotalPrice, 10, BigDecimal.ROUND_HALF_UP).multiply(scoreIntegerDecimal).setScale(0, BigDecimal.ROUND_FLOOR);
                         discountedPrice = shareScoreItem.divide(BigDecimal.valueOf(scoreLimit), 2, BigDecimal.ROUND_HALF_UP);
                     }
                     // 订单商品详情最后一个商品并且详情不止一个商品