Browse Source

Merge remote-tracking branch 'origin/developerD' into developerD

zhijiezhao 1 year ago
parent
commit
90259ecd08

+ 14 - 0
src/main/java/com/caimei365/commodity/mapper/ShopMapper.java

@@ -156,6 +156,13 @@ public interface ShopMapper {
      */
     void updateRule(FreightRuleDto freightRuleDto);
 
+    /**
+     * 删除运费模板运费规则
+     * @param freightId
+     * @param ruleIds
+     */
+    void deleteRule(@Param("freightId") Integer freightId, @Param("ruleIds") List<Integer> ruleIds);
+
     /**
      * 删除运费模板规则地区
      * @param ruleId
@@ -163,6 +170,13 @@ public interface ShopMapper {
      */
     void deleteArea(Integer ruleId, List<Integer> ids);
 
+    /**
+     * 根据模板查询使用该模板商品数
+     * @param freightTemplateId
+     * @return
+     */
+    Integer getProductNum(@Param("freightTemplateId") Integer freightTemplateId);
+
     /**
      * 删除运费模板
      * @param id

+ 14 - 2
src/main/java/com/caimei365/commodity/service/impl/ShopServiceImpl.java

@@ -356,7 +356,6 @@ public class ShopServiceImpl implements ShopService {
      */
     @Override
     public ResponseJson saveFreightTemplate(FreightTemplateDto freightTemplateDto) {
-        log.info("freightTemplateDto===="+freightTemplateDto);
         if (null == freightTemplateDto) {
             return ResponseJson.error(-1, "运费模板不能为空",null);
         }
@@ -403,8 +402,15 @@ public class ShopServiceImpl implements ShopService {
         } else {
             // 修改
             shopMapper.updateTemplate(freightTemplateDto);
+            List<Integer> ruleIds = new ArrayList<>();
             for (FreightRuleDto ruleDto : freightRuleDtos) {
-                shopMapper.updateRule(ruleDto);
+                if (null == ruleDto.getId()) {
+                    ruleDto.setFreightId(freightTemplateDto.getId());
+                    shopMapper.insertRule(ruleDto);
+                } else {
+                    shopMapper.updateRule(ruleDto);
+                }
+                ruleIds.add(ruleDto.getId());
                 List<FreightAreaDto> freightAreaDtos = JSONArray.parseArray(ruleDto.getFreightAreaList(), FreightAreaDto.class);
                 if (null != freightAreaDtos && freightAreaDtos.size() > 0) {
                     freightAreaDtos.forEach(a -> {
@@ -424,8 +430,11 @@ public class ShopServiceImpl implements ShopService {
                     }
                     ids.add(areaDto.getId());
                 }
+                // 删除运费规则地区
                 shopMapper.deleteArea(ruleDto.getId(),ids);
             }
+            // 删除运费模板规则
+            shopMapper.deleteRule(freightTemplateDto.getId(), ruleIds);
         }
         return ResponseJson.success();
     }
@@ -438,6 +447,9 @@ public class ShopServiceImpl implements ShopService {
      */
     @Override
     public ResponseJson deleteFreightTemplate(Integer id) {
+        if (0 < shopMapper.getProductNum(id)) {
+            return ResponseJson.error(-1, "该模板有关联商品,请更改商品关联的模板后再删除", null);
+        }
         shopMapper.deleteTemplate(id);
         return ResponseJson.success();
     }

+ 27 - 6
src/main/resources/mapper/ShopMapper.xml

@@ -570,10 +570,16 @@
     </select>
     <select id="getCodeByTypeId" resultType="java.lang.String">
         select
-        CONCAT(IFNULL(b.bigTypeCode,''), IFNULL(s.smallTypeCode,''), IFNULL(t.tinyTypeCode,''))
+        CONCAT(IFNULL(b.bigTypeCode,''),
+            IFNULL(<if test="smallTypeId != null">s.smallTypeCode</if><if test="smallTypeId == null">''</if>,''),
+            IFNULL(<if test="tinyTypeId != null">t.tinyTypeCode</if><if test="tinyTypeId == null">''</if>,''))
         from bigtype b
-        left join smalltype s on s.bigTypeID = b.bigTypeID
-        left join tinytype t on t.smallTypeID = s.smallTypeID
+        <if test="smallTypeId != null">
+            left join smalltype s on s.bigTypeID = b.bigTypeID
+        </if>
+        <if test="tinyTypeId != null">
+            left join tinytype t on t.smallTypeID = s.smallTypeID
+        </if>
         <where>
             <if test="bigTypeId != null">
                 b.bigTypeID = #{bigTypeId}
@@ -649,14 +655,14 @@
 
     <select id="getCity" resultType="com.caimei365.commodity.model.vo.CityVo">
         SELECT c.provinceID AS provinceId, c.cityID AS cityId, name ,
-        <if test="ruleId != null">
+        <if test="freightId != null">
                ifnull(cf.type, 0) as type
         </if>
-        <if test="ruleId == null">
+        <if test="freightId == null">
             0 as type
         </if>
         FROM city c
-        <if test="ruleId != null">
+        <if test="freightId != null">
             left join
                 (
                 SELECT cfa.type, cfa.cityId FROM cm_freight_area cfa
@@ -711,6 +717,17 @@
         where id = #{id}
     </update>
 
+    <delete id="deleteRule">
+        delete from cm_freight_rule
+        where freightId = #{freightId}
+        <if test="ruleIds.size() > 0">
+            and id not in
+            <foreach collection="ruleIds" item="id" open="(" separator="," close=")">
+                #{id}
+            </foreach>
+        </if>
+    </delete>
+
     <delete id="deleteArea">
         delete from cm_freight_area
         where ruleId = #{ruleId}
@@ -722,6 +739,10 @@
             </if>
     </delete>
 
+    <select id="getProductNum" resultType="java.lang.Integer">
+        select count(productId) from product where freightTemplateId = #{freightTemplateId}
+    </select>
+
     <update id="deleteTemplate">
         update cm_freight_template
         set delFlag = 1