Browse Source

新增运费模板

cup 3 years ago
parent
commit
341caf4dbb

+ 40 - 0
mp-admin/src/main/java/com/qs/mp/web/controller/api/admin/ShippingTemplateController.java

@@ -0,0 +1,40 @@
+package com.qs.mp.web.controller.api.admin;
+
+import com.qs.mp.admin.domain.param.ShippingTemplateParam;
+import com.qs.mp.common.core.domain.AjaxResult;
+import com.qs.mp.common.service.IShippingTemplateService;
+import com.qs.mp.web.controller.common.BaseApiController;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 运费模板相关接口
+ *
+ * @author Cup
+ * @date 2022/5/5
+ */
+@Api(tags = "运费模板相关接口")
+@RestController
+@RequestMapping("/api/v1/mp/admin/shipping/template/*")
+public class ShippingTemplateController extends BaseApiController {
+
+    @Autowired
+    private IShippingTemplateService shippingTemplateService;
+
+    @PostMapping("/create")
+    @ApiOperation("新增运费模板")
+    public AjaxResult create(@RequestBody ShippingTemplateParam shippingTemplateParam) {
+        // 新增运费模板
+        return AjaxResult.success(shippingTemplateService.create(shippingTemplateParam));
+    }
+
+
+
+
+
+}

+ 26 - 0
mp-service/src/main/java/com/qs/mp/admin/domain/param/ShippingTemplateParam.java

@@ -0,0 +1,26 @@
+package com.qs.mp.admin.domain.param;
+
+
+import com.qs.mp.common.domain.ShippingTemplate;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 运费模板入参类
+ *
+ * @author Cup
+ * @date 2022/5/5
+ */
+@ApiModel("运费模板入参类")
+@Data
+public class ShippingTemplateParam extends ShippingTemplate {
+
+
+    @ApiModelProperty("运费模板相关规则列表")
+    List<ShippingTemplateRuleParam> shippingTemplateRuleList;
+
+
+}

+ 19 - 0
mp-service/src/main/java/com/qs/mp/admin/domain/param/ShippingTemplateRuleAreaParam.java

@@ -0,0 +1,19 @@
+package com.qs.mp.admin.domain.param;
+
+
+import com.qs.mp.common.domain.ShippingTemplateRuleArea;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 运费模板规则区域入参类
+ *
+ * @author Cup
+ * @date 2022/5/5
+ */
+@ApiModel("运费模板规则区域入参类")
+@Data
+public class ShippingTemplateRuleAreaParam extends ShippingTemplateRuleArea {
+
+}

+ 25 - 0
mp-service/src/main/java/com/qs/mp/admin/domain/param/ShippingTemplateRuleParam.java

@@ -0,0 +1,25 @@
+package com.qs.mp.admin.domain.param;
+
+
+import com.qs.mp.common.domain.ShippingTemplateRule;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 运费模板规则入参类
+ *
+ * @author Cup
+ * @date 2022/5/5
+ */
+@ApiModel("运费模板规则入参类")
+@Data
+public class ShippingTemplateRuleParam extends ShippingTemplateRule {
+
+
+    @ApiModelProperty("运费规则相关区域列表")
+    List<ShippingTemplateRuleAreaParam> shippingTemplateRuleAreaList;
+
+}

+ 9 - 0
mp-service/src/main/java/com/qs/mp/common/service/IShippingTemplateService.java

@@ -1,5 +1,6 @@
 package com.qs.mp.common.service;
 
+import com.qs.mp.admin.domain.param.ShippingTemplateParam;
 import com.qs.mp.common.domain.ShippingTemplate;
 import com.baomidou.mybatisplus.extension.service.IService;
 
@@ -13,4 +14,12 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface IShippingTemplateService extends IService<ShippingTemplate> {
 
+    /**
+     * 新增运费模板
+     * @param shippingTemplateParam 运费模板入参类
+     * @return
+     */
+    boolean create(ShippingTemplateParam shippingTemplateParam);
+
+
 }

+ 103 - 0
mp-service/src/main/java/com/qs/mp/common/service/impl/ShippingTemplateServiceImpl.java

@@ -1,10 +1,28 @@
 package com.qs.mp.common.service.impl;
 
+import com.qs.mp.admin.domain.param.ShippingTemplateParam;
+import com.qs.mp.admin.domain.param.ShippingTemplateRuleAreaParam;
+import com.qs.mp.admin.domain.param.ShippingTemplateRuleParam;
 import com.qs.mp.common.domain.ShippingTemplate;
+import com.qs.mp.common.domain.ShippingTemplateRule;
+import com.qs.mp.common.domain.ShippingTemplateRuleArea;
+import com.qs.mp.common.exception.ServiceException;
 import com.qs.mp.common.mapper.ShippingTemplateMapper;
+import com.qs.mp.common.service.IShippingTemplateRuleAreaService;
+import com.qs.mp.common.service.IShippingTemplateRuleService;
 import com.qs.mp.common.service.IShippingTemplateService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.Assert;
+import org.springframework.util.CollectionUtils;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
 
 /**
  * <p>
@@ -17,4 +35,89 @@ import org.springframework.stereotype.Service;
 @Service
 public class ShippingTemplateServiceImpl extends ServiceImpl<ShippingTemplateMapper, ShippingTemplate> implements IShippingTemplateService {
 
+    @Autowired
+    private IShippingTemplateRuleService shippingTemplateRuleService;;
+
+    @Autowired
+    private IShippingTemplateRuleAreaService shippingTemplateRuleAreaService;
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public boolean create(ShippingTemplateParam shippingTemplateParam) {
+
+        // 校验运费模板参数
+        this.checkCreateShippingTemplateParam(shippingTemplateParam);
+
+        // 新增运费模板
+        ShippingTemplate shippingTemplate = new ShippingTemplate();
+        BeanUtils.copyProperties(shippingTemplateParam, shippingTemplate);
+        this.save(shippingTemplate);
+
+        // 新增运费模板规则
+        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);
+            }
+            shippingTemplateRuleAreaService.saveBatch(params);
+        }
+        return true;
+    }
+
+
+
+    /**
+     * 校验运费模板参数
+     * @param shippingTemplateParam 运费模板入参类
+     */
+    private void checkCreateShippingTemplateParam(ShippingTemplateParam shippingTemplateParam) {
+
+        if (StringUtils.isBlank(shippingTemplateParam.getTitle())) {
+            throw new ServiceException("运费模板标题不能为空");
+        }
+
+        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("运费模板规则区域不能为空");
+            }
+
+            for (ShippingTemplateRuleAreaParam shippingTemplateRuleAreaParam : shippingTemplateRuleAreaList) {
+
+                if (StringUtils.isBlank(shippingTemplateRuleAreaParam.getProvince())) {
+                    throw new ServiceException("省份不能为空");
+                }
+
+                if (Objects.isNull(shippingTemplateRuleAreaParam.getProvinceId())) {
+                    throw new ServiceException("省份ID不能为空");
+                }
+
+                if (StringUtils.isBlank(shippingTemplateRuleAreaParam.getCity())) {
+                    throw new ServiceException("城市不能为空");
+                }
+
+                if (Objects.isNull(shippingTemplateRuleAreaParam.getCityId())) {
+                    throw new ServiceException("城市ID不能为空");
+                }
+            }
+        }
+
+
+    }
 }