huangzhiguo преди 1 година
родител
ревизия
3254fa640b

+ 16 - 2
src/main/java/com/caimei365/commodity/controller/ProductShopApi.java

@@ -102,6 +102,20 @@ public class ProductShopApi {
         }
         return shopService.copeFreightTemplateById(id);
     }
+
+    /**
+     * 运费模板回显
+     * @param id
+     * @return
+     */
+    @PostMapping("/templateDetail/{id}")
+    public ResponseJson getFreightTemplateDetail(@PathVariable("id") Integer id) {
+        if (null == id) {
+            return ResponseJson.error(-1,"运费模板Id不能为空");
+        }
+        return shopService.getFreightTemplateDetail(id);
+    }
+
     /**
      * 选择地区
      * @return
@@ -113,11 +127,11 @@ public class ProductShopApi {
     }
 
     /**
-     * 供应商 -- 新增运费模板
+     * 供应商 -- 保存运费模板
      * @param freightTemplateDto
      * @return
      */
-    @ApiOperation("供应商 -- 新增运费模板")
+    @ApiOperation("供应商 -- 保存运费模板")
     @PostMapping("/product/saveFreightTemplate")
     public ResponseJson saveFreightTemplate(FreightTemplateDto freightTemplateDto) {
         if (null == freightTemplateDto) {

+ 18 - 3
src/main/java/com/caimei365/commodity/mapper/ShopMapper.java

@@ -74,6 +74,13 @@ public interface ShopMapper {
      */
     FreightTemplateDto getTemplateById(@Param("id") Integer id);
 
+    /**
+     * 根据Id获取模板信息
+     * @param id
+     * @return
+     */
+    FreightTemplateVo getTemplateVoById(@Param("id") Integer id);
+
     /**
      * 获取运费模板下所有运费规则
      * @param Ids
@@ -81,12 +88,20 @@ public interface ShopMapper {
      */
     List<FreightRuleVo> getRule(List<Integer> Ids);
 
+
+    /**
+     * 根据模板Id获取模板运费规则
+     * @param freightId
+     * @return
+     */
+    List<FreightRuleVo> getRuleById(@Param("freightId") Integer freightId);
+
     /**
      * 根据模板Id获取模板运费规则
      * @param freightId
      * @return
      */
-    List<FreightRuleDto> getRuleById(@Param("freightId") Integer freightId);
+    List<FreightRuleVo> getRuleVoById(@Param("freightId") Integer freightId);
 
     /**
      * 运费规则下所有区域集合
@@ -99,7 +114,7 @@ public interface ShopMapper {
      * 省份集合
      * @return
      */
-    List<ProvinceDto> getProvince();
+    List<ProvinceVo> getProvince();
 
     /**
      * 市集合
@@ -107,7 +122,7 @@ public interface ShopMapper {
      * @param ruleId
      * @return
      */
-    List<CityDto> getCity(@Param("freightId") Integer freightId, @Param("ruleId") Integer ruleId);
+    List<CityVo> getCity(@Param("freightId") Integer freightId, @Param("ruleId") Integer ruleId);
     /**
      * 保存运费模板
      * @param freightTemplateDto

+ 0 - 8
src/main/java/com/caimei365/commodity/model/dto/FreightAreaDto.java

@@ -22,16 +22,8 @@ public class FreightAreaDto implements Serializable {
      * 归属的运费规则
      */
     private Integer type;
-    /**
-     * 省Id
-     */
-    private Integer provinceId;
     /**
      * 市Id
      */
     private Integer cityId;
-    /**
-     * 添加时间
-     */
-    private String addTime;
 }

+ 4 - 0
src/main/java/com/caimei365/commodity/model/dto/FreightRuleDto.java

@@ -19,6 +19,10 @@ public class FreightRuleDto implements Serializable {
      * 运费模板表Id
      */
     private Integer freightId;
+    /**
+     * 运费规则名称
+     */
+    private String ruleTax;
     /**
      * 运费金额
      */

+ 1 - 13
src/main/java/com/caimei365/commodity/model/dto/FreightTemplateDto.java

@@ -18,23 +18,11 @@ public class FreightTemplateDto implements Serializable {
     /**
      * 运费模板名称
      */
-    private Integer name;
+    private String name;
     /**
      * 供应商Id
      */
     private Integer shopId;
-    /**
-     * 添加时间
-     */
-    private String addTime;
-    /**
-     * 修改时间
-     */
-    private String updateTime;
-    /**
-     * 删除标记 0使用 其他删除
-     */
-    private Integer delFlag;
     /**
      * 运费模板对应规则集合
      */

+ 0 - 29
src/main/java/com/caimei365/commodity/model/dto/ProvinceDto.java

@@ -1,29 +0,0 @@
-package com.caimei365.commodity.model.dto;
-
-import lombok.Data;
-
-import java.io.Serializable;
-import java.util.List;
-
-/**
- * Description
- *
- * @author : Charles
- * @date : 2023/8/9
- */
-@Data
-public class ProvinceDto implements Serializable {
-
-    /**
-     * 省份Id
-     */
-    private Integer provinceId;
-    /**
-     * 省名称
-     */
-    private String name;
-    /**
-     * 市集合
-     */
-    private List<CityDto> cityList;
-}

+ 0 - 24
src/main/java/com/caimei365/commodity/model/dto/RegionDto.java

@@ -1,24 +0,0 @@
-package com.caimei365.commodity.model.dto;
-
-import lombok.Data;
-
-import java.io.Serializable;
-import java.util.List;
-
-/**
- * Description
- *
- * @author : Charles
- * @date : 2023/8/9
- */
-@Data
-public class RegionDto implements Serializable {
-    /**
-     * 区域名称
-     */
-    private String name;
-    /**
-     * 省集合
-     */
-    private List<ProvinceDto> provinceList;
-}

+ 1 - 1
src/main/java/com/caimei365/commodity/model/po/ProductPo.java

@@ -139,7 +139,7 @@ public class ProductPo implements Serializable {
      */
     private Integer actStatus;
     /**
-     * 物流方式 0包邮、1到付、2使用运费模板
+     * 物流方式 0包邮、1使用运费模板、2到付
      */
     private Integer freePostFlag;
     /**

+ 6 - 2
src/main/java/com/caimei365/commodity/model/dto/CityDto.java → src/main/java/com/caimei365/commodity/model/vo/CityVo.java

@@ -1,4 +1,4 @@
-package com.caimei365.commodity.model.dto;
+package com.caimei365.commodity.model.vo;
 
 import lombok.Data;
 
@@ -11,7 +11,7 @@ import java.io.Serializable;
  * @date : 2023/8/9
  */
 @Data
-public class CityDto implements Serializable {
+public class CityVo implements Serializable {
 
     /**
      * 省份Id
@@ -25,6 +25,10 @@ public class CityDto implements Serializable {
      * 市名称
      */
     private String name;
+    /**
+     * 是否选中
+     */
+    private Boolean checked;
     /**
      * 归属的运费规则
      */

+ 4 - 0
src/main/java/com/caimei365/commodity/model/vo/FreightRuleVo.java

@@ -18,6 +18,10 @@ public class FreightRuleVo {
      * 运费模板表Id
      */
     private Integer freightId;
+    /**
+     * 运费规则名称
+     */
+    private String ruleTax;
     /**
      * 运费金额
      */

+ 8 - 0
src/main/java/com/caimei365/commodity/model/vo/ProductFormVo.java

@@ -103,6 +103,14 @@ public class ProductFormVo implements Serializable {
      * 价格可见度:0公开价格 1不公开价格 2仅对会员机构公开 price1TextFlag
      */
     private Integer priceFlag;
+    /**
+     * 物流方式 0包邮、1使用运费模板、2到付
+     */
+    private Integer freePostFlag;
+    /**
+     * 运费模板Id
+     */
+    private Integer freightTemplateId;
     /**
      * 启用阶梯价格标识 0否 1是
      */

+ 45 - 0
src/main/java/com/caimei365/commodity/model/vo/ProvinceVo.java

@@ -0,0 +1,45 @@
+package com.caimei365.commodity.model.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * Description
+ *
+ * @author : Charles
+ * @date : 2023/8/9
+ */
+@Data
+public class ProvinceVo implements Serializable {
+
+    /**
+     * 省份Id
+     */
+    private Integer provinceId;
+    /**
+     * 省名称
+     */
+    private String name;
+    /**
+     * 是否选中、前端使用
+     */
+    private Boolean checked;
+    /**
+     * 选中市名称集合
+     */
+    private String[] checkedCities;
+    /**
+     * 是否全选、前端使用
+     */
+    private Boolean isIndeterminate;
+    /**
+     * 归属的运费规则
+     */
+    private Integer type;
+    /**
+     * 市集合
+     */
+    private List<CityVo> cityList;
+}

+ 40 - 0
src/main/java/com/caimei365/commodity/model/vo/RegionVo.java

@@ -0,0 +1,40 @@
+package com.caimei365.commodity.model.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * Description
+ *
+ * @author : Charles
+ * @date : 2023/8/9
+ */
+@Data
+public class RegionVo implements Serializable {
+    /**
+     * 区域名称
+     */
+    private String name;
+    /**
+     * 是否选中
+     */
+    private Boolean checked;
+    /**
+     * 选中省名称集合
+     */
+    private String[] checkedCities;
+    /**
+     * 是否全选、前端使用
+     */
+    private Boolean isIndeterminate;
+    /**
+     * 归属的运费规则
+     */
+    private Integer type;
+    /**
+     * 省集合
+     */
+    private List<ProvinceVo> provinceList;
+}

+ 8 - 1
src/main/java/com/caimei365/commodity/service/ShopService.java

@@ -64,13 +64,20 @@ public interface ShopService {
      */
     ResponseJson copeFreightTemplateById(Integer id);
 
+    /**
+     * 运费模板回显
+     * @param id
+     * @return
+     */
+    ResponseJson getFreightTemplateDetail(Integer id);
+
     /**
      * 选择地区
      * @return
      */
     ResponseJson getArea(Integer freightId, Integer ruleId);
     /**
-     * 供应商 -- 新增运费模板
+     * 供应商 -- 保存运费模板
      * @param freightTemplateDto
      * @return
      */

+ 148 - 42
src/main/java/com/caimei365/commodity/service/impl/ShopServiceImpl.java

@@ -1,7 +1,6 @@
 package com.caimei365.commodity.service.impl;
 
 import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.caimei365.commodity.components.PriceUtilService;
 import com.caimei365.commodity.mapper.PriceMapper;
@@ -168,6 +167,9 @@ public class ShopServiceImpl implements ShopService {
         List<FreightTemplateVo> shopTemplate = shopMapper.getTemplate(shopId);
         // 设置模板信息
         List<FreightTemplateVo> freightTemplateVos = setFreightTemplate(shopTemplate);
+        if (null == freightTemplateVos) {
+            return ResponseJson.error(-1, "模板信息异常",null);
+        }
         PaginationVo<FreightTemplateVo> paginationVo = new PaginationVo<>(freightTemplateVos);
         return ResponseJson.success(paginationVo);
     }
@@ -184,20 +186,21 @@ public class ShopServiceImpl implements ShopService {
         FreightTemplateDto template = shopMapper.getTemplateById(id);
         if (null != template) {
             // 插入新的运费模板
+            template.setName(template.getName()+"的副本");
             shopMapper.insertTemplate(template);
             // 获取运费模板规则
-            List<FreightRuleDto> rule = shopMapper.getRuleById(id);
+            List<FreightRuleVo> rule = shopMapper.getRuleById(id);
             if (null == rule || rule.size() <= 0) {
                 return ResponseJson.error(-1,"运费模板规则异常",null);
             }
             // 获取规则地区
-            List<Integer> ruleIds = rule.stream().map(FreightRuleDto::getId).collect(Collectors.toList());
+            List<Integer> ruleIds = rule.stream().map(FreightRuleVo::getId).collect(Collectors.toList());
             List<FreightAreaVo> area = shopMapper.getArea(ruleIds);
             if (null == area || area.size() <= 0) {
                 return ResponseJson.error(-1,"运费模板规则地区异常",null);
             }
             // 复制运费规则
-            for (FreightRuleDto freightRuleDto : rule) {
+            for (FreightRuleVo freightRuleDto : rule) {
                 FreightRuleDto ruleDto = new FreightRuleDto();
                 BeanUtils.copyProperties(freightRuleDto, ruleDto);
                 ruleDto.setFreightId(template.getId());
@@ -217,6 +220,41 @@ public class ShopServiceImpl implements ShopService {
         return ResponseJson.success();
     }
 
+    /**
+     * 运费模板回显
+     *
+     * @param id
+     * @return
+     */
+    @Override
+    public ResponseJson getFreightTemplateDetail(Integer id) {
+        // 获取运费模板信息
+        FreightTemplateVo template = shopMapper.getTemplateVoById(id);
+        if (null != template) {
+            // 获取运费模板规则
+            List<FreightRuleVo> rule = shopMapper.getRuleVoById(id);
+            if (null == rule || rule.size() <= 0) {
+                return ResponseJson.error(-1,"运费模板规则异常",null);
+            }
+            // 获取规则地区
+            List<Integer> ruleIds = rule.stream().map(FreightRuleVo::getId).collect(Collectors.toList());
+            List<FreightAreaVo> area = shopMapper.getArea(ruleIds);
+            if (null == area || area.size() <= 0) {
+                return ResponseJson.error(-1,"运费模板规则地区异常",null);
+            }
+            // 将地区与运费规则关联
+            for (FreightRuleVo ruleVo : rule) {
+                List<FreightAreaVo> areaVoList = area.stream().filter(a -> a.getRuleId().equals(ruleVo.getId())).collect(Collectors.toList());
+                ruleVo.setFreightAreaList(areaVoList);
+            }
+            // 将运费规则与运费模板关联
+            template.setFreightRuleList(rule);
+        } else {
+            return ResponseJson.error(-1,"运费模板信息异常",null);
+        }
+        return ResponseJson.success(template);
+    }
+
     /**
      * 选择地区
      *
@@ -225,39 +263,40 @@ public class ShopServiceImpl implements ShopService {
     @Override
     public ResponseJson getArea(Integer freightId, Integer ruleId) {
         // 区域
-        List<RegionDto> regionList = new ArrayList<>();
+        List<RegionVo> regionList = new ArrayList<>();
         // 添加区域 东北、华东、华北、华中、华南、西南、西北
-        RegionDto regionDto = new RegionDto();
-        regionDto.setName("东北");
-        regionList.add(regionDto);
-        regionDto = new RegionDto();
-        regionDto.setName("华东");
-        regionList.add(regionDto);
-        regionDto = new RegionDto();
-        regionDto.setName("华北");
-        regionList.add(regionDto);
-        regionDto = new RegionDto();
-        regionDto.setName("华中");
-        regionList.add(regionDto);
-        regionDto = new RegionDto();
-        regionDto.setName("华南");
-        regionList.add(regionDto);
-        regionDto = new RegionDto();
-        regionDto.setName("西南");
-        regionList.add(regionDto);
-        regionDto = new RegionDto();
-        regionDto.setName("西北");
-        regionList.add(regionDto);
+        RegionVo regionVo = new RegionVo();
+        regionVo.setName("东北");
+        regionList.add(regionVo);
+        regionVo = new RegionVo();
+        regionVo.setName("华东");
+        regionList.add(regionVo);
+        regionVo = new RegionVo();
+        regionVo.setName("华北");
+        regionList.add(regionVo);
+        regionVo = new RegionVo();
+        regionVo.setName("华中");
+        regionList.add(regionVo);
+        regionVo = new RegionVo();
+        regionVo.setName("华南");
+        regionList.add(regionVo);
+        regionVo = new RegionVo();
+        regionVo.setName("西南");
+        regionList.add(regionVo);
+        regionVo = new RegionVo();
+        regionVo.setName("西北");
+        regionList.add(regionVo);
         // 省份集合
-        List<ProvinceDto> provinceList = shopMapper.getProvince();
+        List<ProvinceVo> provinceList = shopMapper.getProvince();
         // 市集合
-        List<CityDto> cityList = shopMapper.getCity(freightId, ruleId);
-        for (ProvinceDto procince: provinceList) {
-            List<CityDto> collect = cityList.stream().filter(c -> c.getProvinceId().equals(procince.getProvinceId())).collect(Collectors.toList());
+        List<CityVo> cityList = shopMapper.getCity(freightId, ruleId);
+
+        for (ProvinceVo procince: provinceList) {
+            List<CityVo> collect = cityList.stream().filter(c -> c.getProvinceId().equals(procince.getProvinceId())).collect(Collectors.toList());
             procince.setCityList(collect);
         }
-        for (RegionDto region : regionList) {
-            List<ProvinceDto> collect = null;
+        for (RegionVo region : regionList) {
+            List<ProvinceVo> collect = null;
             if ("东北".equals(region.getName())) {
                 collect = provinceList.stream().filter(p -> p.getName().contains("辽宁") || p.getName().contains("吉林") || p.getName().contains("黑龙江")).collect(Collectors.toList());
                 region.setProvinceList(collect);
@@ -291,12 +330,12 @@ public class ShopServiceImpl implements ShopService {
                 region.setProvinceList(collect);
             }
         }
-
+        setRegion(regionList);
         return ResponseJson.success(regionList);
     }
 
     /**
-     * 供应商 -- 新增运费模板
+     * 供应商 -- 保存运费模板
      *
      * @param freightTemplateDto
      * @return
@@ -309,12 +348,10 @@ public class ShopServiceImpl implements ShopService {
         if (null == freightTemplateDto.getFreightRuleList()) {
             return ResponseJson.error(-1, "运费模板对应规则不能为空", null);
         }
-        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-        String format = dateFormat.format(new Date());
+
         if (null == freightTemplateDto.getId()) {
             // 新增运费模板
 
-            freightTemplateDto.setAddTime(format);
             shopMapper.insertTemplate(freightTemplateDto);
             // 添加运费模板规则
             for (FreightRuleDto ruleDto : freightTemplateDto.getFreightRuleList()) {
@@ -328,13 +365,11 @@ public class ShopServiceImpl implements ShopService {
                 }
                 for (FreightAreaDto areaDto : ruleDto.getFreightAreaList()) {
                     areaDto.setRuleId(ruleDto.getId());
-                    areaDto.setAddTime(format);
                     shopMapper.insertArea(areaDto);
                 }
             }
         } else {
             // 修改
-            freightTemplateDto.setUpdateTime(format);
             shopMapper.updateTemplate(freightTemplateDto);
             for (FreightRuleDto ruleDto : freightTemplateDto.getFreightRuleList()) {
                 shopMapper.updateRule(ruleDto);
@@ -346,7 +381,6 @@ public class ShopServiceImpl implements ShopService {
                 List<Integer> ids = new ArrayList<>();
                 for (FreightAreaDto areaDto : ruleDto.getFreightAreaList()) {
                     areaDto.setRuleId(ruleDto.getId());
-                    areaDto.setAddTime(format);
                     if (null == areaDto.getId()) {
                         shopMapper.insertArea(areaDto);
                     }
@@ -446,7 +480,7 @@ public class ShopServiceImpl implements ShopService {
         if (null == productDto.getFreePostFlag()) {
             return ResponseJson.error("参数异常,物流方式不能为空",null);
         }
-        if (2 == productDto.getFreePostFlag() && null == productDto.getFreightTemplateId()) {
+        if (1 == productDto.getFreePostFlag() && null == productDto.getFreightTemplateId()) {
             return ResponseJson.error("参数异常,运费模板Id不能为空",null);
         }
         List<Sku> skus = JSON.parseArray(productDto.getSkus(), Sku.class);
@@ -932,13 +966,23 @@ public class ShopServiceImpl implements ShopService {
         return ResponseJson.success();
     }
 
-
+    /**
+     * 设置模板信息
+     * @param templateVos
+     * @return
+     */
     private List<FreightTemplateVo> setFreightTemplate(List<FreightTemplateVo> templateVos) {
         if (null != templateVos) {
             List<Integer> templateIds = templateVos.stream().map(FreightTemplateVo::getId).collect(Collectors.toList());
             List<FreightRuleVo> rule = shopMapper.getRule(templateIds);
+            if (null == rule) {
+                return null;
+            }
             List<Integer> ruleIds = rule.stream().map(FreightRuleVo::getId).collect(Collectors.toList());
             List<FreightAreaVo> area = shopMapper.getArea(ruleIds);
+            if (null == area) {
+                return null;
+            }
             // 将地区与运费规则关联
             for (FreightRuleVo ruleVo : rule) {
                 List<FreightAreaVo> areaVoList = area.stream().filter(a -> a.getRuleId().equals(ruleVo.getId())).collect(Collectors.toList());
@@ -952,4 +996,66 @@ public class ShopServiceImpl implements ShopService {
         }
         return templateVos;
     }
+
+    /**
+     * 设置地区选中信息
+     * @param regionList
+     * @return
+     */
+    private void setRegion(List<RegionVo> regionList){
+        if (null != regionList) {
+            for (RegionVo regionVo : regionList) {
+                // 省选中
+                List<String> provinceName = new ArrayList<>();
+                for (ProvinceVo provinceVo : regionVo.getProvinceList()) {
+                    List<String> cityName = new ArrayList<>();
+                    // 市选中状态
+                    for (CityVo cityVo : provinceVo.getCityList()) {
+                        if ( null != cityVo.getType()) {
+                            cityVo.setChecked(true);
+                            cityName.add(cityVo.getName());
+                        } else {
+                            cityVo.setChecked(false);
+                        }
+                    }
+                    String[] splitCity = StringUtils.strip(cityName.toString(),"[]").split(",");
+                    provinceVo.setCheckedCities(splitCity);
+                    /**
+                     * Checked、当省份下的市全被勾选中的话为 true 部分市被勾选中 为false
+                     * IsIndeterminate、当省份下的市全被勾选中的话为 false 部分市被勾选中 为true
+                     */
+                    if (provinceVo.getCityList().stream().allMatch(CityVo::getChecked)) {
+                        // 市全部选中 省设置全选
+                        provinceVo.setIsIndeterminate(false);
+                        provinceVo.setChecked(true);
+                        provinceName.add(provinceVo.getName());
+                    } else if (provinceVo.getCityList().stream().noneMatch(CityVo::getChecked)) {
+                        // 市全部未选中 省设置未全选
+                        provinceVo.setIsIndeterminate(true);
+                        provinceVo.setChecked(false);
+                    } else {
+                        // 市部分选中 省设置未全选
+                        provinceVo.setIsIndeterminate(true);
+                        provinceVo.setChecked(false);
+                    }
+                }
+                String[] spiltProvince = StringUtils.strip(provinceName.toString(),"[]").split(",");
+                regionVo.setCheckedCities(spiltProvince);
+                // 区域选中
+                if (regionVo.getProvinceList().stream().allMatch(ProvinceVo::getChecked)) {
+                    // 省全部选中
+                    regionVo.setIsIndeterminate(false);
+                    regionVo.setChecked(true);
+                } else if (regionVo.getProvinceList().stream().noneMatch(ProvinceVo::getChecked)){
+                    // 省全部未选中
+                    regionVo.setIsIndeterminate(true);
+                    regionVo.setChecked(false);
+                } else {
+                    // 省部分选中
+                    regionVo.setIsIndeterminate(true);
+                    regionVo.setChecked(false);
+                }
+            }
+        }
+    }
 }

+ 20 - 10
src/main/resources/mapper/ShopMapper.xml

@@ -600,6 +600,11 @@
         where delFlag = 0 and id = #{id}
     </select>
 
+    <select id="getTemplateVoById" resultType="com.caimei365.commodity.model.vo.FreightTemplateVo">
+        select name, shopId, addTime, updateTime, delFlag from cm_freight_template
+        where delFlag = 0 and id = #{id}
+    </select>
+
     <select id="getRule" resultType="com.caimei365.commodity.model.vo.FreightRuleVo">
         select id, freightId, freightAmount, areaTax, freeType, freeCondition, productNum, allAmount from cm_freight_rule
         where
@@ -611,8 +616,13 @@
             </if>
     </select>
 
-    <select id="getRuleById" resultType="com.caimei365.commodity.model.dto.FreightRuleDto">
-        select id, freightId, freightAmount, areaTax, freeType, freeCondition, productNum, allAmount from cm_freight_rule
+    <select id="getRuleById" resultType="com.caimei365.commodity.model.vo.FreightRuleVo">
+        select id, freightId, ruleTax, freightAmount, areaTax, freeType, freeCondition, productNum, allAmount from cm_freight_rule
+        where freightId = #{freightId}
+    </select>
+
+    <select id="getRuleVoById" resultType="com.caimei365.commodity.model.vo.FreightRuleVo">
+        select id, freightId, ruleTax, freightAmount, areaTax, freeType, freeCondition, productNum, allAmount from cm_freight_rule
         where freightId = #{freightId}
     </select>
 
@@ -627,11 +637,11 @@
         </if>
     </select>
 
-    <select id="getProvince" resultType="com.caimei365.commodity.model.dto.ProvinceDto">
+    <select id="getProvince" resultType="com.caimei365.commodity.model.vo.ProvinceVo">
         SELECT provinceID AS provinceId, name FROM province WHERE validFlag = 1
     </select>
 
-    <select id="getCity" resultType="com.caimei365.commodity.model.dto.CityDto">
+    <select id="getCity" resultType="com.caimei365.commodity.model.vo.CityVo">
         SELECT c.provinceID AS provinceId, c.cityID AS cityId, name , cf.type
         FROM city c
         left join
@@ -653,25 +663,25 @@
     <insert id="insertTemplate" keyProperty="id" keyColumn="id" parameterType="com.caimei365.commodity.model.dto.FreightTemplateDto">
         insert into cm_freight_template
             ( name, shopId, addTime, delFlag )
-        values( #{name}, #{shopId}, #{addTime}, 0 )
+        values( #{name}, #{shopId}, now(), 0 )
     </insert>
 
     <insert id="insertRule" keyProperty="id" keyColumn="id" parameterType="com.caimei365.commodity.model.dto.FreightRuleDto">
         insert into cm_freight_rule
-            ( freightId, freightAmount, areaTax, freeType, freeCondition, productNum, allAmount )
-            values ( #{freightId}, #{freightAmount}, #{areaTax}, #{freeType}, #{freeCondition}, #{productNum}, #{allAmount})
+            ( freightId, ruleTax, freightAmount, areaTax, freeType, freeCondition, productNum, allAmount )
+            values ( #{freightId}, #{ruleTax}, #{freightAmount}, #{areaTax}, #{freeType}, #{freeCondition}, #{productNum}, #{allAmount})
     </insert>
 
     <insert id="insertArea">
         insert into cm_freight_area
-            ( ruleId, type, provinceId, cityId, addTime )
-        values ( #{ruleId}, #{type}, #{provinceId}, #{cityId}, now() )
+            ( ruleId, type, cityId )
+        values ( #{ruleId}, #{type}, #{cityId} )
     </insert>
 
     <update id="updateTemplate">
         update cm_freight_template
         set name = #{name},
-            updateTime = #{updateTime}
+            updateTime = now()
         where id = #{id}
     </update>