Browse Source

不同类型商品不能混合提货,卡密商品不计算运费

cup 2 years ago
parent
commit
8bc66e6d27

+ 12 - 1
mp-admin/src/main/java/com/qs/mp/web/controller/api/user/UserDeliverOrderController.java

@@ -45,6 +45,7 @@ import java.time.Duration;
 import java.time.LocalDateTime;
 import java.util.*;
 import java.util.concurrent.TimeUnit;
+import java.util.stream.Collectors;
 import javax.validation.Valid;
 
 import io.swagger.annotations.ApiResponse;
@@ -235,9 +236,19 @@ public class UserDeliverOrderController extends BaseApiController {
             orderSettleVO.setResource(DeliverOrderResourceEnum.DELIVER.getValue());
         }
 
+        List<Long> goodsIdList = prizeStorageList.stream().map(UserPrizeStorage::getGoodsId).collect(Collectors.toList());
+        int count = goodsService.count(new LambdaQueryWrapper<Goods>()
+            .in(Goods::getGoodsId, goodsIdList)
+            .eq(Goods::getType, GoodsTypeEnum.REAL_GOODS.getValue()));
+        // 比对是否所有商品都是实物商品
+        if (goodsIdList.size() != count) {
+            return AjaxResult.error("实物商品和卡密商品不能混合提货");
+        }
+
         // 计算运费
         UserAddr userAddr = orderSettleVO.getAddr();
-        if (Objects.nonNull(userAddr)) {
+        // 地址不为空,并且是实物商品,计算运费
+        if (Objects.nonNull(userAddr) && count > 0) {
             // TODO: 4L上线需要调整,后期放开就是取的商品里配的运费模板id
             ShippingTemplateCalculateVO shippingTemplateCalculateVO = shippingTemplateRuleService.getShippingTemplateRuleByTemplateIdAndAreaInfo(
                 shippingTemplateId, userAddr.getProvinceId(), userAddr.getCityId());