chao 3 лет назад
Родитель
Сommit
d5e3708548

+ 17 - 1
src/main/java/com/caimei365/order/controller/ShipApi.java

@@ -1,6 +1,7 @@
 package com.caimei365.order.controller;
 
 import com.caimei365.order.model.ResponseJson;
+import com.caimei365.order.model.dto.JsonParamsDto;
 import com.caimei365.order.model.dto.LogisticsBatchDto;
 import com.caimei365.order.model.dto.LogisticsDto;
 import com.caimei365.order.model.vo.*;
@@ -319,7 +320,7 @@ public class ShipApi {
      */
     @ApiOperation("查看商品资质信息(旧:/supplier/qualification/data)")
     @ApiImplicitParam(required = true, name = "logisticsInfoId", value = "发货物流信息Id")
-    @GetMapping("/product/qualification")
+    @GetMapping("/qualification/list")
     public ResponseJson<List<QualificationVo>> getProductQualification(Integer logisticsBatchId) {
         if (null == logisticsBatchId) {
             return ResponseJson.error("发货物流信息Id不能为空!", null);
@@ -327,4 +328,19 @@ public class ShipApi {
         return shipService.getProductQualification(logisticsBatchId);
     }
 
+    /**
+     * 保存商品资质
+     *
+     * @param jsonParamsDto params:[{
+     *                         recordId: 商品发货记录id,
+     *                         sn:       sn码,
+     *                         files:    [{fileName:"文件名称",ossName:"oss文件名称"},{fileName:"文件名称",ossName:"oss文件名称"}...]
+     *                         images:   ["图片","图片",...]
+     *                         }, {}]
+     */
+    @ApiOperation("上传商品资质(旧:/supplier/qualification)")
+    @PostMapping("/qualification/save")
+    public ResponseJson<Void> saveProductQualification(JsonParamsDto jsonParamsDto) {
+        return shipService.saveProductQualification(jsonParamsDto);
+    }
 }

+ 22 - 0
src/main/java/com/caimei365/order/mapper/ShipMapper.java

@@ -175,4 +175,26 @@ public interface ShipMapper {
      * 查询商品资质文件
      */
     List<QualificationPo> getQualificationFile(Integer recordId);
+    /**
+     * 删除商品资质文件
+     * @param recordId 商品发货记录id
+     */
+    void deleteQualificationFile(Integer recordId);
+    /**
+     * 删除资质图片
+     * @param recordId 商品发货记录id
+     */
+    void deleteQualificationImage(Integer recordId);
+    /**
+     * 保存资质文件
+     */
+    void insertQualificationFile(QualificationPo qualificationFile);
+    /**
+     * 保存资质图片
+     */
+    void insertQualificationImage(String image, Integer recordId);
+    /**
+     * 更新发货物流记录SN码
+     */
+    void updateLogisticsRecordSn(Integer recordId, String sn);
 }

+ 27 - 0
src/main/java/com/caimei365/order/model/dto/JsonParamsDto.java

@@ -0,0 +1,27 @@
+package com.caimei365.order.model.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * Description
+ *
+ * @author : Charles
+ * @date : 2021/8/12
+ */
+@Data
+public class JsonParamsDto implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("JSON字符串参数")
+    private String params;
+
+    @Override
+    public String toString() {
+        return "JsonParamsDto{" +
+                "params='" + params + '\'' +
+                '}';
+    }
+}

+ 3 - 1
src/main/java/com/caimei365/order/model/dto/OrderDto.java

@@ -3,6 +3,8 @@ package com.caimei365.order.model.dto;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import java.io.Serializable;
+
 /**
  * Description
  *
@@ -10,7 +12,7 @@ import lombok.Data;
  * @date : 2021/7/19
  */
 @Data
-public class OrderDto {
+public class OrderDto implements Serializable {
     private static final long serialVersionUID = 1L;
     /**
      * 订单Id

+ 3 - 1
src/main/java/com/caimei365/order/model/dto/PayDto.java

@@ -3,6 +3,8 @@ package com.caimei365.order.model.dto;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import java.io.Serializable;
+
 /**
  * Description
  *
@@ -10,7 +12,7 @@ import lombok.Data;
  * @date : 2021/7/30
  */
 @Data
-public class PayDto {
+public class PayDto implements Serializable {
     private static final long serialVersionUID = 1L;
     /**
      * 订单Id

+ 3 - 1
src/main/java/com/caimei365/order/model/dto/PayLinkDto.java

@@ -3,6 +3,8 @@ package com.caimei365.order.model.dto;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import java.io.Serializable;
+
 /**
  * Description
  *
@@ -10,7 +12,7 @@ import lombok.Data;
  * @date : 2021/8/2
  */
 @Data
-public class PayLinkDto {
+public class PayLinkDto implements Serializable {
     private static final long serialVersionUID = 1L;
     /**
      * 订单Id

+ 3 - 1
src/main/java/com/caimei365/order/model/dto/SecondPayDto.java

@@ -3,6 +3,8 @@ package com.caimei365.order.model.dto;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import java.io.Serializable;
+
 /**
  * Description
  *
@@ -10,7 +12,7 @@ import lombok.Data;
  * @date : 2021/7/30
  */
 @Data
-public class SecondPayDto {
+public class SecondPayDto implements Serializable {
     private static final long serialVersionUID = 1L;
     /**
      * 二手发布商品id

+ 12 - 0
src/main/java/com/caimei365/order/service/ShipService.java

@@ -1,6 +1,7 @@
 package com.caimei365.order.service;
 
 import com.caimei365.order.model.ResponseJson;
+import com.caimei365.order.model.dto.JsonParamsDto;
 import com.caimei365.order.model.dto.LogisticsBatchDto;
 import com.caimei365.order.model.dto.LogisticsDto;
 import com.caimei365.order.model.vo.*;
@@ -142,4 +143,15 @@ public interface ShipService {
      * @param logisticsBatchId 发货物流批次Id
      */
     ResponseJson<List<QualificationVo>> getProductQualification(Integer logisticsBatchId);
+     /**
+     * 保存商品资质
+     *
+     * @param jsonParamsDto params:[{
+     *                         recordId: 商品发货记录id,
+     *                         sn:       sn码,
+     *                         files:    [{fileName:"文件名称",ossName:"oss文件名称"},{fileName:"文件名称",ossName:"oss文件名称"}...]
+     *                         images:   ["图片","图片",...]
+     *                         }, {}]
+     */
+    ResponseJson<Void> saveProductQualification(JsonParamsDto jsonParamsDto);
 }

+ 56 - 4
src/main/java/com/caimei365/order/service/impl/ShipServiceImpl.java

@@ -7,6 +7,7 @@ import com.caimei365.order.mapper.BaseMapper;
 import com.caimei365.order.mapper.OrderCommonMapper;
 import com.caimei365.order.mapper.ShipMapper;
 import com.caimei365.order.model.ResponseJson;
+import com.caimei365.order.model.dto.JsonParamsDto;
 import com.caimei365.order.model.dto.LogisticsBatchDto;
 import com.caimei365.order.model.dto.LogisticsDto;
 import com.caimei365.order.model.po.*;
@@ -845,14 +846,65 @@ public class ShipServiceImpl implements ShipService {
             // 商品资质文件
             List<QualificationPo> fileList = shipMapper.getQualificationFile(qualification.getRecordId());
             qualification.setFileList(fileList);
-            boolean isFile = (fileList == null || fileList.size() == 0);
-            boolean isImage = (images == null || images.size() == 0);
-            if (StringUtils.isBlank(qualification.getSn()) && isFile && isImage) {
+            if (StringUtils.isBlank(qualification.getSn()) && fileList.isEmpty() && images.isEmpty()) {
                 iterator.remove();
             }
         }
         return ResponseJson.success(qualificationList);
     }
 
-
+    /**
+     * 保存商品资质
+     *
+     * @param jsonParamsDto params:[{
+     *                         recordId: 商品发货记录id,
+     *                         sn:       sn码,
+     *                         files:    [{fileName:"文件名称",ossName:"oss文件名称"},{fileName:"文件名称",ossName:"oss文件名称"}...]
+     *                         images:   ["图片","图片",...]
+     *                         }, {}]
+     */
+    @Override
+    public ResponseJson<Void> saveProductQualification(JsonParamsDto jsonParamsDto) {
+        try {
+            JSONArray paramsArray = parseArray(jsonParamsDto.getParams());
+            for (Object paramObj: paramsArray) {
+                JSONObject jsonObject = (JSONObject) paramObj;
+                Integer recordId = jsonObject.getInteger("recordId");
+                String sn = jsonObject.getString("sn");
+                JSONArray filesArray = jsonObject.getJSONArray("files");
+                // 删除旧的资质文件
+                shipMapper.deleteQualificationFile(recordId);
+                if (!filesArray.isEmpty()) {
+                    QualificationPo qualificationFile = new QualificationPo();
+                    qualificationFile.setRecordId(recordId);
+                    for (Object fileObj: filesArray) {
+                        JSONObject file = (JSONObject) fileObj;
+                        qualificationFile.setFileName(file.getString("fileName"));
+                        qualificationFile.setOssName(file.getString("ossName"));
+                        // 保存资质文件
+                        shipMapper.insertQualificationFile(qualificationFile);
+                    }
+                }
+                JSONArray imagesArray = jsonObject.getJSONArray("images");
+                // 删除旧的资质图片
+                shipMapper.deleteQualificationImage(recordId);
+                if (!imagesArray.isEmpty()) {
+                    for (Object imageObj: imagesArray) {
+                        String image = String.valueOf(imageObj);
+                        // 保存资质图片
+                        shipMapper.insertQualificationImage(image, recordId);
+                    }
+                }
+                if (StringUtils.isNotBlank(sn)) {
+                    // 更新商品发货记录SN码
+                    shipMapper.updateLogisticsRecordSn(recordId, sn);
+                }
+            }
+            return ResponseJson.success(null);
+        } catch (Exception e) {
+            log.info("保存商品资质参数:" + jsonParamsDto.toString());
+            log.error("【保存商品资质】>>>参数解析异常try-catch:", e);
+            return ResponseJson.error("保存商品资质参数解析异常!", null);
+        }
+    }
 }

+ 26 - 0
src/main/resources/mapper/ShipMapper.xml

@@ -23,6 +23,21 @@
         INSERT INTO cm_shop_consignment_share_code (shopOrderID, shareCode, addTime, expiredTime, delFlag)
         VALUES (#{orderId}, #{shareCode}, #{addTime}, #{expiredTime}, #{delFlag})
     </insert>
+    <insert id="insertQualificationFile">
+        INSERT INTO `cm_qualification_file` (
+        `recordId`, `fileName`, `ossName`
+        )
+        VALUES
+        (
+        #{recordId}, #{fileName}, #{ossName}
+        )
+    </insert>
+    <insert id="insertQualificationImage">
+        INSERT INTO `cm_qualification_image` (
+        `recordId`, `image`)
+        VALUES
+        (#{recordId}, #{image})
+    </insert>
     <update id="updateNotOutStore">
         UPDATE cm_order_product SET notOutStore = #{notOutStore} WHERE orderProductID = #{orderProductId}
     </update>
@@ -53,6 +68,11 @@
         SET shareCode = #{shareCode}, expiredTime = #{expiredTime}, delFlag = #{delFlag}
         WHERE id = #{id}
     </update>
+    <update id="updateLogisticsRecordSn">
+        UPDATE cm_logistics_record
+        SET sn = #{sn}, uploadTime = NOW()
+        WHERE id = #{recordId}
+    </update>
     <delete id="deleteLogisticsInfoByInfoId">
         DELETE FROM logistics_information WHERE id = #{logisticsInfoId}
     </delete>
@@ -68,6 +88,12 @@
     <delete id="deleteShipShareCodeRecord">
         DELETE FROM cm_shop_consignment_share_code_record WHERE shopOrderID = #{shopOrderId}
     </delete>
+    <delete id="deleteQualificationFile">
+        DELETE FROM cm_qualification_file WHERE recordId = #{recordId}
+    </delete>
+    <delete id="deleteQualificationImage">
+        DELETE FROM cm_qualification_image WHERE recordId = #{recordId}
+    </delete>
     <select id="getShopOrderList" resultType="com.caimei365.order.model.vo.ShopOrderVo">
         SELECT
             a.shopOrderId AS shopOrderId,