Przeglądaj źródła

Merge branch 'dev' into 'mp-server-test'

Dev

See merge request quanshu/mp-server!457
zhong chunping 3 lat temu
rodzic
commit
e8cdeeadbd

+ 9 - 2
mp-admin/src/main/java/com/qs/mp/web/controller/api/admin/ShippingTemplateController.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.qs.mp.admin.domain.param.ShippingTemplateParam;
 import com.qs.mp.admin.domain.vo.ShippingTemplateVO;
 import com.qs.mp.common.core.domain.AjaxResult;
+import com.qs.mp.common.core.page.TableDataInfo;
 import com.qs.mp.common.domain.ShippingTemplate;
 import com.qs.mp.common.service.IShippingTemplateService;
 import com.qs.mp.web.controller.common.BaseApiController;
@@ -12,6 +13,7 @@ import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiResponse;
 import io.swagger.annotations.ApiResponses;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
@@ -31,6 +33,7 @@ public class ShippingTemplateController extends BaseApiController {
     private IShippingTemplateService shippingTemplateService;
 
     @PostMapping("/create")
+    @PreAuthorize("@ss.hasPermi('setting:template:add')")
     @ApiOperation("新增运费模板")
     public AjaxResult create(@RequestBody ShippingTemplateParam shippingTemplateParam) {
         // 新增运费模板
@@ -40,6 +43,7 @@ public class ShippingTemplateController extends BaseApiController {
     }
 
     @PostMapping("/update")
+    @PreAuthorize("@ss.hasPermi('setting:template:edit')")
     @ApiOperation("更新运费模板")
     public AjaxResult update(@RequestBody ShippingTemplateParam shippingTemplateParam){
         // 修改运费模板
@@ -49,6 +53,7 @@ public class ShippingTemplateController extends BaseApiController {
 
 
     @PostMapping("/detail/{id}")
+    @PreAuthorize("@ss.hasPermi('setting:template:query')")
     @ApiOperation("运费模板详情")
     @ApiResponses(
             @ApiResponse(code = 200, message = "返回运费模板详情",response = ShippingTemplateVO.class)
@@ -59,19 +64,21 @@ public class ShippingTemplateController extends BaseApiController {
     }
 
     @PostMapping("list")
+    @PreAuthorize("@ss.hasPermi('setting:template:list')")
     @ApiOperation("运费模板列表")
     @ApiResponses(
             @ApiResponse(code = 200, message = "返回运费模板列表",response = ShippingTemplate.class)
     )
-    public AjaxResult list(){
+    public TableDataInfo list(){
         startPage();
         List<ShippingTemplate> list = shippingTemplateService.list(new LambdaQueryWrapper<ShippingTemplate>()
                 .orderByDesc(ShippingTemplate::getCreatedTime));
         // 运费模板列表
-        return AjaxResult.success(list);
+        return getDataTable(list);
     }
 
     @PostMapping("/delete/{id}")
+    @PreAuthorize("@ss.hasPermi('setting:template:remove')")
     @ApiOperation("删除运费模板")
     public AjaxResult delete(@PathVariable("id") Long id){
         // 删除运费模板

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

@@ -1,18 +1,21 @@
 package com.qs.mp.web.controller.api.user;
 
 import cn.hutool.core.date.LocalDateTimeUtil;
+import cn.hutool.core.util.NumberUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.qs.mp.admin.domain.vo.ShippingTemplateCalculateVO;
 import com.qs.mp.channel.domain.ChannelOrder;
 import com.qs.mp.channel.domain.param.OrderPayParam;
 import com.qs.mp.common.core.domain.AjaxResult;
 import com.qs.mp.common.core.page.TableDataInfo;
 import com.qs.mp.common.core.redis.RedisCache;
-import com.qs.mp.common.enums.BizTypeEnum;
-import com.qs.mp.common.enums.DeliverOrderStatusEnum;
-import com.qs.mp.common.enums.ErrorCodeEnum;
-import com.qs.mp.common.enums.PrizeStorageStatusEnum;
+import com.qs.mp.common.domain.ShippingTemplate;
+import com.qs.mp.common.domain.ShippingTemplateRule;
+import com.qs.mp.common.enums.*;
 import com.qs.mp.common.exception.ServiceException;
+import com.qs.mp.common.service.IShippingTemplateRuleService;
+import com.qs.mp.common.service.IShippingTemplateService;
 import com.qs.mp.common.utils.LogUtil;
 import com.qs.mp.common.utils.StringUtils;
 import com.qs.mp.framework.redis.RedisKey;
@@ -32,11 +35,15 @@ import com.qs.mp.web.controller.common.BaseApiController;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 
+import java.math.BigDecimal;
 import java.time.Duration;
 import java.time.LocalDateTime;
 import java.util.*;
 import java.util.concurrent.TimeUnit;
 import javax.validation.Valid;
+
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
 import lombok.AllArgsConstructor;
 import ma.glasnost.orika.MapperFacade;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -77,6 +84,9 @@ public class UserDeliverOrderController extends BaseApiController {
   @Autowired
   private RedisCache redisCache;
 
+  @Autowired
+  private IShippingTemplateRuleService shippingTemplateRuleService;
+
   /**
    * 订单列表
    */
@@ -138,6 +148,9 @@ public class UserDeliverOrderController extends BaseApiController {
    */
   @PostMapping("/order/settle")
   @ApiOperation(value = "订单结算" , notes = "奖品库里点提货")
+  @ApiResponses(
+          @ApiResponse(code = 200, message = "success", response = DeliverOrderSettleVO.class)
+  )
   public AjaxResult settle(@Valid @RequestBody DeliverOrderParam param) {
     Long userId = SecurityUtils.getLoginUser().getUserId();
 
@@ -161,6 +174,29 @@ public class UserDeliverOrderController extends BaseApiController {
         .in(UserPrizeStorage::getStorageId, param.getIds()));
 
 
+    // 计算运费
+    UserAddr userAddr = orderSettleVO.getAddr();
+    // TODO: 4L上线需要调整,后期放开就是取的商品里配的运费模板id
+    ShippingTemplateCalculateVO shippingTemplateCalculateVO = shippingTemplateRuleService.getShippingTemplateRuleByTemplateIdAndAreaInfo(4L, userAddr.getProvinceId(), userAddr.getCityId());
+    // 无法查到运费模板则默认为0
+    if (Objects.nonNull(shippingTemplateCalculateVO)) {
+
+      orderSettleVO.setFreightRemark(shippingTemplateCalculateVO.getRemark());
+      orderSettleVO.setFreightType(shippingTemplateCalculateVO.getType());
+
+      if (ShippingTemplateRuleTypeEnum.SHIP.getValue().equals(shippingTemplateCalculateVO.getType())) {
+        int goodsNum = prizeStorageList.stream().mapToInt(UserPrizeStorage::getGoodsNum).sum();
+        freightAmt = shippingTemplateCalculateVO.getDefaultNumber();
+        if (goodsNum - shippingTemplateCalculateVO.getDefaultNumber() >= shippingTemplateCalculateVO.getCreateNumber()) {
+
+          // 运费:首件价格 + ((商品数量 - 首件数量) / 续件数量)向上取整 * 续件价格
+          int createNumber = shippingTemplateCalculateVO.getCreateNumber();
+          freightAmt += ((int) Math.ceil(NumberUtil.div(goodsNum - shippingTemplateCalculateVO.getDefaultNumber(), createNumber))) * shippingTemplateCalculateVO.getCreatePrice();
+        }
+      }
+
+    }
+
     orderSettleVO.setOrderAmt(orderAmt);
     orderSettleVO.setFreightAmt(freightAmt);
     orderSettleVO.setPayAmt(orderAmt + freightAmt);

+ 37 - 0
mp-common/src/main/java/com/qs/mp/common/enums/ShippingTemplateRuleTypeEnum.java

@@ -0,0 +1,37 @@
+package com.qs.mp.common.enums;
+
+import com.alibaba.fastjson.annotation.JSONType;
+import com.baomidou.mybatisplus.annotation.IEnum;
+import com.qs.mp.common.json.EnumValueDeserializer;
+import io.swagger.annotations.ApiModel;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.Getter;
+
+/**
+ * 运费模板规则类型枚举类
+ * @author Cup
+ * @date 2022/5/5
+ */
+@ApiModel("运费模板规则类型枚举类")
+public enum ShippingTemplateRuleTypeEnum implements IEnum<Integer> {
+
+    SHIP(1,"发货"),
+
+    NOT_SHIP(2,"不发货");
+
+
+    ShippingTemplateRuleTypeEnum(int value, String desc) {
+        this.value = value;
+        this.desc = desc;
+    }
+
+    private final int value;
+    private final String desc;
+
+
+    @Override
+    public Integer getValue() {
+        return value;
+    }
+}

+ 1 - 1
mp-common/src/main/java/com/qs/mp/common/pulsar/PulsarClientService.java

@@ -67,7 +67,7 @@ public class PulsarClientService {
     if (consumerConn) {
       consumer = client.newConsumer()
           .topic(topics.split(","))//topic完整路径,格式为persistent://集群(租户)ID/命名空间/Topic名称
-          .subscriptionName("ygp")//需要现在控制台或者通过控制台API创建好一个订阅,此处填写订阅名
+          .subscriptionName("mp")//需要现在控制台或者通过控制台API创建好一个订阅,此处填写订阅名
           .subscriptionType(SubscriptionType.Exclusive)//声明消费模式为exclusive(独占)模式
           .subscriptionInitialPosition(
               SubscriptionInitialPosition.Earliest)//配置从最早开始消费,否则可能会消费不到历史消息

+ 2 - 1
mp-framework/src/main/java/com/qs/mp/framework/monitor/SendErrorMsgAppender.java

@@ -28,7 +28,8 @@ public class SendErrorMsgAppender extends UnsynchronizedAppenderBase<ILoggingEve
         Throwable throwable = throwableProxy.getThrowable();
         String throwableMsg = throwable.getMessage();
         if (StringUtils.isNotBlank(throwableMsg) && (throwableMsg.startsWith("验证码失效") || throwableMsg.startsWith("重复购买,请稍后再试")
-        || throwableMsg.startsWith("盲票已付款,") || throwableMsg.startsWith("盲票已兑奖") || throwableMsg.startsWith("登录用户不存在:"))) {
+        || throwableMsg.startsWith("盲票已付款,") || throwableMsg.startsWith("盲票已兑奖") || throwableMsg.startsWith("登录用户不存在:")
+        || throwableMsg.startsWith("用户不存在/密码错误") || throwableMsg.startsWith("验证码已失效"))) {
           return;
         }
         StackTraceElementProxy[] stackTraceElementProxy = iThrowableProxy.getStackTraceElementProxyArray();

+ 51 - 0
mp-service/src/main/java/com/qs/mp/admin/domain/vo/ShippingTemplateCalculateVO.java

@@ -0,0 +1,51 @@
+package com.qs.mp.admin.domain.vo;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 运费计算出参类
+ * @author Cup
+ * @date 2022/5/5
+ */
+@ApiModel("运费计算出参类")
+@Data
+public class ShippingTemplateCalculateVO {
+
+    /**
+     * 类型 1发货,2不发货,默认1
+     */
+    @ApiModelProperty("类型 1发货,2不发货,默认1")
+    private Integer type;
+
+    /**
+     * 默认数量
+     */
+    @ApiModelProperty("默认数量")
+    private Integer defaultNumber;
+
+    /**
+     * 默认价格
+     */
+    @ApiModelProperty("默认价格")
+    private Integer defaultPrice;
+
+    /**
+     * 新增数量
+     */
+    @ApiModelProperty("新增数量")
+    private Integer createNumber;
+
+    /**
+     * 新增价格
+     */
+    @ApiModelProperty("新增价格")
+    private Integer createPrice;
+
+
+    @ApiModelProperty("备注")
+    private String remark;
+
+}

+ 6 - 0
mp-service/src/main/java/com/qs/mp/common/domain/ShippingTemplate.java

@@ -37,6 +37,12 @@ public class ShippingTemplate implements Serializable {
     @TableField("title")
     private String title;
 
+
+    @ApiModelProperty("默认模板 0不默认,1默认")
+    @TableField("is_default")
+    private Integer isDefault;
+
+
     /**
      * 创建时间
      */

+ 12 - 0
mp-service/src/main/java/com/qs/mp/common/mapper/ShippingTemplateRuleMapper.java

@@ -1,7 +1,12 @@
 package com.qs.mp.common.mapper;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
+import com.qs.mp.admin.domain.vo.ShippingTemplateCalculateVO;
 import com.qs.mp.common.domain.ShippingTemplateRule;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * @auther quanshu
@@ -10,4 +15,11 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface ShippingTemplateRuleMapper extends BaseMapper<ShippingTemplateRule> {
 
+    /**
+     * 根据运费模板和地区信息获取运费规则
+     *
+     * @param queryWrapper
+     * @return
+     */
+    ShippingTemplateCalculateVO selectShippingTemplateRuleByTemplateIdAndAreaInfo(@Param(Constants.WRAPPER) QueryWrapper<ShippingTemplateRule> queryWrapper);
 }

+ 10 - 0
mp-service/src/main/java/com/qs/mp/common/service/IShippingTemplateRuleService.java

@@ -1,5 +1,6 @@
 package com.qs.mp.common.service;
 
+import com.qs.mp.admin.domain.vo.ShippingTemplateCalculateVO;
 import com.qs.mp.common.domain.ShippingTemplateRule;
 import com.baomidou.mybatisplus.extension.service.IService;
 
@@ -13,4 +14,13 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface IShippingTemplateRuleService extends IService<ShippingTemplateRule> {
 
+    /**
+     * 根据运费模板和地区信息获取运费规则
+     *
+     * @param shippingTemplateId 运费模板id
+     * @param provinceId         省份id
+     * @param cityId             城市id
+     * @return
+     */
+    ShippingTemplateCalculateVO getShippingTemplateRuleByTemplateIdAndAreaInfo(long shippingTemplateId, Long provinceId, Long cityId);
 }

+ 12 - 0
mp-service/src/main/java/com/qs/mp/common/service/impl/ShippingTemplateRuleServiceImpl.java

@@ -1,5 +1,9 @@
 package com.qs.mp.common.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.qs.mp.admin.domain.vo.ShippingTemplateCalculateVO;
+import com.qs.mp.common.domain.Area;
 import com.qs.mp.common.domain.ShippingTemplateRule;
 import com.qs.mp.common.mapper.ShippingTemplateRuleMapper;
 import com.qs.mp.common.service.IShippingTemplateRuleService;
@@ -17,4 +21,12 @@ import org.springframework.stereotype.Service;
 @Service
 public class ShippingTemplateRuleServiceImpl extends ServiceImpl<ShippingTemplateRuleMapper, ShippingTemplateRule> implements IShippingTemplateRuleService {
 
+    @Override
+    public ShippingTemplateCalculateVO getShippingTemplateRuleByTemplateIdAndAreaInfo(long shippingTemplateId, Long provinceId, Long cityId) {
+        QueryWrapper<ShippingTemplateRule> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("t1.id", shippingTemplateId);
+        queryWrapper.eq("t3.province_id", provinceId);
+        queryWrapper.eq("t3.city_id", cityId);
+        return this.getBaseMapper().selectShippingTemplateRuleByTemplateIdAndAreaInfo(queryWrapper);
+    }
 }

+ 70 - 59
mp-service/src/main/java/com/qs/mp/common/service/impl/ShippingTemplateServiceImpl.java

@@ -52,14 +52,19 @@ public class ShippingTemplateServiceImpl extends ServiceImpl<ShippingTemplateMap
         if (Objects.isNull(shippingTemplate)) {
             throw new ServiceException("运费模板不存在");
         }
+        if (shippingTemplate.getIsDefault() == 1) {
+            throw new ServiceException("默认模板不能删除");
+        }
 
         // 清除原来运费模板规则地区
         List<ShippingTemplateRule> shippingTemplateRules = shippingTemplateRuleService.list(new LambdaQueryWrapper<ShippingTemplateRule>().eq(ShippingTemplateRule::getShippingTemplateId, id));
-        for (ShippingTemplateRule shippingTemplateRule : shippingTemplateRules) {
-            shippingTemplateRuleAreaService.remove(new LambdaQueryWrapper<ShippingTemplateRuleArea>().eq(ShippingTemplateRuleArea::getShippingTemplateRuleId, shippingTemplateRule.getId()));
+        if (!CollectionUtils.isEmpty(shippingTemplateRules)) {
+            for (ShippingTemplateRule shippingTemplateRule : shippingTemplateRules) {
+                shippingTemplateRuleAreaService.remove(new LambdaQueryWrapper<ShippingTemplateRuleArea>().eq(ShippingTemplateRuleArea::getShippingTemplateRuleId, shippingTemplateRule.getId()));
+            }
+            // 清除原来的运费模板规则
+            shippingTemplateRuleService.remove(new LambdaQueryWrapper<ShippingTemplateRule>().eq(ShippingTemplateRule::getShippingTemplateId, id));
         }
-        // 清除原来的运费模板规则
-        shippingTemplateRuleService.remove(new LambdaQueryWrapper<ShippingTemplateRule>().eq(ShippingTemplateRule::getShippingTemplateId, id));
 
         // 删除运费模板
         this.removeById(id);
@@ -114,23 +119,26 @@ public class ShippingTemplateServiceImpl extends ServiceImpl<ShippingTemplateMap
 
         // 新增运费模板规则
         List<ShippingTemplateRuleParam> shippingTemplateRuleList = shippingTemplateParam.getShippingTemplateRuleList();
-        for (ShippingTemplateRuleParam shippingTemplateRuleParam : shippingTemplateRuleList) {
-            ShippingTemplateRule shippingTemplateRule = new ShippingTemplateRule();
-            BeanUtils.copyProperties(shippingTemplateRuleParam, shippingTemplateRule);
-            shippingTemplateRule.setShippingTemplateId(shippingTemplate.getId());
-            shippingTemplateRuleService.save(shippingTemplateRule);
-
-            // 新增运费模板规则地区
-            List<ShippingTemplateRuleAreaParam> shippingTemplateRuleAreaList = shippingTemplateRuleParam.getShippingTemplateRuleAreaList();
-            List<ShippingTemplateRuleArea> params = new ArrayList<>();
-            for (ShippingTemplateRuleAreaParam shippingTemplateRuleAreaParam : shippingTemplateRuleAreaList) {
-                ShippingTemplateRuleArea param = new ShippingTemplateRuleArea();
-                BeanUtils.copyProperties(shippingTemplateRuleAreaParam, param);
-                param.setShippingTemplateRuleId(shippingTemplateRule.getId());
-                params.add(param);
+        if (!CollectionUtils.isEmpty(shippingTemplateRuleList)) {
+            for (ShippingTemplateRuleParam shippingTemplateRuleParam : shippingTemplateRuleList) {
+                ShippingTemplateRule shippingTemplateRule = new ShippingTemplateRule();
+                BeanUtils.copyProperties(shippingTemplateRuleParam, shippingTemplateRule);
+                shippingTemplateRule.setShippingTemplateId(shippingTemplate.getId());
+                shippingTemplateRuleService.save(shippingTemplateRule);
+
+                // 新增运费模板规则地区
+                List<ShippingTemplateRuleAreaParam> shippingTemplateRuleAreaList = shippingTemplateRuleParam.getShippingTemplateRuleAreaList();
+                List<ShippingTemplateRuleArea> params = new ArrayList<>();
+                for (ShippingTemplateRuleAreaParam shippingTemplateRuleAreaParam : shippingTemplateRuleAreaList) {
+                    ShippingTemplateRuleArea param = new ShippingTemplateRuleArea();
+                    BeanUtils.copyProperties(shippingTemplateRuleAreaParam, param);
+                    param.setShippingTemplateRuleId(shippingTemplateRule.getId());
+                    params.add(param);
+                }
+                shippingTemplateRuleAreaService.saveBatch(params);
             }
-            shippingTemplateRuleAreaService.saveBatch(params);
         }
+
         return true;
     }
 
@@ -149,11 +157,13 @@ public class ShippingTemplateServiceImpl extends ServiceImpl<ShippingTemplateMap
 
         // 清除原来运费模板规则地区
         List<ShippingTemplateRule> shippingTemplateRules = shippingTemplateRuleService.list(new LambdaQueryWrapper<ShippingTemplateRule>().eq(ShippingTemplateRule::getShippingTemplateId, shippingTemplateId));
-        for (ShippingTemplateRule shippingTemplateRule : shippingTemplateRules) {
-            shippingTemplateRuleAreaService.remove(new LambdaQueryWrapper<ShippingTemplateRuleArea>().eq(ShippingTemplateRuleArea::getShippingTemplateRuleId, shippingTemplateRule.getId()));
+        if (!CollectionUtils.isEmpty(shippingTemplateRules)) {
+            for (ShippingTemplateRule shippingTemplateRule : shippingTemplateRules) {
+                shippingTemplateRuleAreaService.remove(new LambdaQueryWrapper<ShippingTemplateRuleArea>().eq(ShippingTemplateRuleArea::getShippingTemplateRuleId, shippingTemplateRule.getId()));
+            }
+            // 清除原来的运费模板规则
+            shippingTemplateRuleService.remove(new LambdaQueryWrapper<ShippingTemplateRule>().eq(ShippingTemplateRule::getShippingTemplateId, shippingTemplateId));
         }
-        // 清除原来的运费模板规则
-        shippingTemplateRuleService.remove(new LambdaQueryWrapper<ShippingTemplateRule>().eq(ShippingTemplateRule::getShippingTemplateId, shippingTemplateId));
 
         // 更新运费模板
         ShippingTemplate shippingTemplate = new ShippingTemplate();
@@ -162,22 +172,24 @@ public class ShippingTemplateServiceImpl extends ServiceImpl<ShippingTemplateMap
 
         // 新增运费模板规则
         List<ShippingTemplateRuleParam> shippingTemplateRuleList = shippingTemplateParam.getShippingTemplateRuleList();
-        for (ShippingTemplateRuleParam shippingTemplateRuleParam : shippingTemplateRuleList) {
-            ShippingTemplateRule shippingTemplateRule = new ShippingTemplateRule();
-            BeanUtils.copyProperties(shippingTemplateRuleParam, shippingTemplateRule);
-            shippingTemplateRule.setShippingTemplateId(shippingTemplateId);
-            shippingTemplateRuleService.save(shippingTemplateRule);
-
-            // 新增运费模板规则地区
-            List<ShippingTemplateRuleAreaParam> shippingTemplateRuleAreaList = shippingTemplateRuleParam.getShippingTemplateRuleAreaList();
-            List<ShippingTemplateRuleArea> params = new ArrayList<>();
-            for (ShippingTemplateRuleAreaParam shippingTemplateRuleAreaParam : shippingTemplateRuleAreaList) {
-                ShippingTemplateRuleArea param = new ShippingTemplateRuleArea();
-                BeanUtils.copyProperties(shippingTemplateRuleAreaParam, param);
-                param.setShippingTemplateRuleId(shippingTemplateRule.getId());
-                params.add(param);
+        if (!CollectionUtils.isEmpty(shippingTemplateRuleList)) {
+            for (ShippingTemplateRuleParam shippingTemplateRuleParam : shippingTemplateRuleList) {
+                ShippingTemplateRule shippingTemplateRule = new ShippingTemplateRule();
+                BeanUtils.copyProperties(shippingTemplateRuleParam, shippingTemplateRule);
+                shippingTemplateRule.setShippingTemplateId(shippingTemplateId);
+                shippingTemplateRuleService.save(shippingTemplateRule);
+
+                // 新增运费模板规则地区
+                List<ShippingTemplateRuleAreaParam> shippingTemplateRuleAreaList = shippingTemplateRuleParam.getShippingTemplateRuleAreaList();
+                List<ShippingTemplateRuleArea> params = new ArrayList<>();
+                for (ShippingTemplateRuleAreaParam shippingTemplateRuleAreaParam : shippingTemplateRuleAreaList) {
+                    ShippingTemplateRuleArea param = new ShippingTemplateRuleArea();
+                    BeanUtils.copyProperties(shippingTemplateRuleAreaParam, param);
+                    param.setShippingTemplateRuleId(shippingTemplateRule.getId());
+                    params.add(param);
+                }
+                shippingTemplateRuleAreaService.saveBatch(params);
             }
-            shippingTemplateRuleAreaService.saveBatch(params);
         }
 
         return true;
@@ -194,36 +206,35 @@ public class ShippingTemplateServiceImpl extends ServiceImpl<ShippingTemplateMap
         }
 
         List<ShippingTemplateRuleParam> shippingTemplateRuleList = shippingTemplateParam.getShippingTemplateRuleList();
-        if (CollectionUtils.isEmpty(shippingTemplateRuleList)) {
-            throw new ServiceException("运费模板规则不能为空");
-        }
-
-        for (ShippingTemplateRuleParam shippingTemplateRuleParam : shippingTemplateRuleList) {
-            List<ShippingTemplateRuleAreaParam> shippingTemplateRuleAreaList = shippingTemplateRuleParam.getShippingTemplateRuleAreaList();
-            if (CollectionUtils.isEmpty(shippingTemplateRuleAreaList)) {
-                throw new ServiceException("运费模板规则区域不能为空");
-            }
+        if (!CollectionUtils.isEmpty(shippingTemplateRuleList)) {
+            for (ShippingTemplateRuleParam shippingTemplateRuleParam : shippingTemplateRuleList) {
+                List<ShippingTemplateRuleAreaParam> shippingTemplateRuleAreaList = shippingTemplateRuleParam.getShippingTemplateRuleAreaList();
+                if (CollectionUtils.isEmpty(shippingTemplateRuleAreaList)) {
+                    throw new ServiceException("运费模板规则区域不能为空");
+                }
 
-            for (ShippingTemplateRuleAreaParam shippingTemplateRuleAreaParam : shippingTemplateRuleAreaList) {
+                for (ShippingTemplateRuleAreaParam shippingTemplateRuleAreaParam : shippingTemplateRuleAreaList) {
 
-                if (StringUtils.isBlank(shippingTemplateRuleAreaParam.getProvince())) {
-                    throw new ServiceException("省份不能为空");
-                }
+                    if (StringUtils.isBlank(shippingTemplateRuleAreaParam.getProvince())) {
+                        throw new ServiceException("省份不能为空");
+                    }
 
-                if (Objects.isNull(shippingTemplateRuleAreaParam.getProvinceId())) {
-                    throw new ServiceException("省份ID不能为空");
-                }
+                    if (Objects.isNull(shippingTemplateRuleAreaParam.getProvinceId())) {
+                        throw new ServiceException("省份ID不能为空");
+                    }
 
-                if (StringUtils.isBlank(shippingTemplateRuleAreaParam.getCity())) {
-                    throw new ServiceException("城市不能为空");
-                }
+                    if (StringUtils.isBlank(shippingTemplateRuleAreaParam.getCity())) {
+                        throw new ServiceException("城市不能为空");
+                    }
 
-                if (Objects.isNull(shippingTemplateRuleAreaParam.getCityId())) {
-                    throw new ServiceException("城市ID不能为空");
+                    if (Objects.isNull(shippingTemplateRuleAreaParam.getCityId())) {
+                        throw new ServiceException("城市ID不能为空");
+                    }
                 }
             }
         }
 
 
+
     }
 }

+ 17 - 0
mp-service/src/main/java/com/qs/mp/user/domain/UserPrizeStorage.java

@@ -10,6 +10,9 @@ import com.qs.mp.common.enums.PrizeStorageInTypeEnum;
 import com.qs.mp.common.enums.PrizeStorageStatusEnum;
 import java.io.Serializable;
 import java.util.Date;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 /**
@@ -19,6 +22,7 @@ import lombok.Data;
  */
 @TableName("mp_user_prize_storage")
 @Data
+@ApiModel(value = "用户实物奖品仓库实体类")
 public class UserPrizeStorage implements Serializable {
 
   private static final long serialVersionUID = 1L;
@@ -27,48 +31,56 @@ public class UserPrizeStorage implements Serializable {
    * 主键
    */
   @TableId(value = "storage_id", type = IdType.INPUT)
+  @ApiModelProperty("主键")
   private String storageId;
 
   /**
    * 用户ID
    */
   @TableField("user_id")
+  @ApiModelProperty("用户ID")
   private Long userId;
 
   /**
    * 商品ID
    */
   @TableField("goods_id")
+  @ApiModelProperty("商品ID")
   private Long goodsId;
 
   /**
    * sku ID
    */
   @TableField("sku_id")
+  @ApiModelProperty("sku ID")
   private Long skuId;
 
   /**
    * sku 属性
    */
   @TableField("properties")
+  @ApiModelProperty("sku 属性")
   private String properties;
 
   /**
    * 商品标题
    */
   @TableField("title")
+  @ApiModelProperty("商品标题")
   private String title;
 
   /**
    * 商品图片
    */
   @TableField("pic_url")
+  @ApiModelProperty("商品图片")
   private String picUrl;
 
   /**
    * 商品数
    */
   @TableField("goods_num")
+  @ApiModelProperty("商品数")
   private Integer goodsNum;
 
   /**
@@ -76,12 +88,14 @@ public class UserPrizeStorage implements Serializable {
    */
   @TableField("in_type")
   @JSONField(serialzeFeatures = SerializerFeature.WriteEnumUsingToString)
+  @ApiModelProperty("入库类型;1盲票兑奖、2盲豆兑换")
   private PrizeStorageInTypeEnum inType;
 
   /**
    * 关联业务ID
    */
   @TableField("ref_id")
+  @ApiModelProperty("关联业务ID")
   private String refId;
 
   /**
@@ -89,17 +103,20 @@ public class UserPrizeStorage implements Serializable {
    */
   @TableField("status")
   @JSONField(serialzeFeatures = SerializerFeature.WriteEnumUsingToString)
+  @ApiModelProperty("状态;1待提货、2已提货")
   private PrizeStorageStatusEnum status;
 
   /**
    * 创建时间
    */
+  @ApiModelProperty("创建时间")
   @TableField("created_time")
   private Date createdTime;
 
   /**
    * 更新时间
    */
+  @ApiModelProperty("更新时间")
   @TableField("updated_time")
   private Date updatedTime;
 

+ 15 - 0
mp-service/src/main/java/com/qs/mp/user/domain/vo/DeliverOrderSettleVO.java

@@ -4,6 +4,9 @@ import com.qs.mp.user.domain.UserAddr;
 import com.qs.mp.user.domain.UserPrizeStorage;
 import java.util.ArrayList;
 import java.util.List;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 /**
@@ -11,28 +14,40 @@ import lombok.Data;
  * @Date 2022/3/3
  */
 @Data
+@ApiModel("用户提货订单结算出参类")
 public class DeliverOrderSettleVO {
 
+  @ApiModelProperty("用户配送地址")
   private UserAddr addr;
 
   /**
    * 订单金额
    */
+  @ApiModelProperty("订单金额")
   private Integer orderAmt = 0;
 
   /**
    * 运费
    */
+  @ApiModelProperty("运费")
   private Integer freightAmt = 0;
 
+  @ApiModelProperty("运费模板类型 1发货,2不发货")
+  private Integer freightType;
+
+  @ApiModelProperty("运费备注")
+  private String freightRemark;
+
   /**
    * 实付金额
    */
+  @ApiModelProperty("实付金额")
   private Integer payAmt = 0;
 
   /**
    * 奖品库列表
    */
+  @ApiModelProperty("奖品库列表")
   List<UserPrizeStorage> prizeList = new ArrayList<>();
 
 }

+ 13 - 0
mp-service/src/main/resources/mapper/common/ShippingTemplateRuleMapper.xml

@@ -20,4 +20,17 @@
         id, shipping_template_id, type, default_number, default_price, create_number, create_price, created_time, updated_time
     </sql>
 
+
+        <select id="selectShippingTemplateRuleByTemplateIdAndAreaInfo" resultType="com.qs.mp.admin.domain.vo.ShippingTemplateCalculateVO">
+        select t2.type,
+               t2.default_number,
+               t2.default_price,
+               t2.create_number,
+               t2.create_price,
+                t3.remark
+        FROM mp_shipping_template t1
+         LEFT JOIN mp_shipping_template_rule t2 on t1.id = t2.shipping_template_id
+         LEFT JOIN mp_shipping_template_rule_area t3 on t2.id = t3.shipping_template_rule_id
+         ${ew.customSqlSegment}
+    </select>
 </mapper>