فهرست منبع

小程序分享发货-获取分享码

chao 3 سال پیش
والد
کامیت
09f7d0a901

+ 13 - 0
src/main/java/com/caimei365/order/controller/ShipApi.java

@@ -223,6 +223,19 @@ public class ShipApi {
         return shipService.deleteLogisticsInfo(logisticsBatchId);
     }
 
+    /**
+     * 小程序分享发货-获取分享码
+     */
+    @ApiOperation("小程序分享发货-获取分享码(旧:/supplier/shopShareShipments)")
+    @ApiImplicitParam(required = true, name = "shopOrderId", value = "子订单Id")
+    @GetMapping("/share/code")
+    public ResponseJson<String> getShipShareCode(Integer shopOrderId) {
+        if (null == shopOrderId) {
+            return ResponseJson.error("子订单Id不能为空!", null);
+        }
+        return shipService.getShipShareCode(shopOrderId);
+    }
+
     /**
      * 小程序分享发货-分享权限控制
      */

+ 15 - 3
src/main/java/com/caimei365/order/mapper/ShipMapper.java

@@ -136,13 +136,25 @@ public interface ShipMapper {
     /**
      * 采美供应商发货分享码使用记录Id
      */
-    Integer getConsignmentShareRecordId(String openId, Integer shopOrderId);
+    Integer getShipShareCodeRecordId(String openId, Integer shopOrderId);
     /**
      * 采美供应商发货分享码
      */
-    OrderShareCodeVo getConsignmentShare(String shareCode, Integer shopOrderId);
+    OrderShareCodeVo getShipShareCode(String shareCode, Integer shopOrderId);
     /**
      * 保存发货分享码使用记录
      */
-    void insertConsignmentShareRecord(OrderShareCodeRecordVo codeRecord);
+    void insertShipShareCodeRecord(OrderShareCodeRecordVo codeRecord);
+    /**
+     * 删除发货分享码使用记录
+     */
+    void deleteShipShareCodeRecord(Integer shopOrderId);
+    /**
+     * 新增发货分享码
+     */
+    void insertShipShareCode(OrderShareCodeVo shareCode);
+    /**
+     * 更新发货分享码
+     */
+    void updateShipShareCode(OrderShareCodeVo orderCodeVo);
 }

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

@@ -102,6 +102,11 @@ public interface ShipService {
      * @param logisticsInfoId  发货物流信息Id
      */
     ResponseJson<Void> deleteLogisticsInfo(Integer logisticsInfoId);
+    /**
+     * 小程序分享发货-获取分享码
+     * @param shopOrderId 子订单Id
+     */
+    ResponseJson<String> getShipShareCode(Integer shopOrderId);
     /**
      * 小程序分享发货-分享权限控制
      * @param source 来源:1:客服扫码,2:供应商运营人员查看,3:分享码查看
@@ -113,4 +118,6 @@ public interface ShipService {
      * @param headers HttpHeaders
      */
     ResponseJson<Map<String, Object>> checkShipShareCode(Integer source, Integer shopOrderId, String shareCode, String code, String encryptedData, String iv, HttpHeaders headers);
+
+
 }

+ 51 - 7
src/main/java/com/caimei365/order/service/impl/ShipServiceImpl.java

@@ -20,6 +20,7 @@ import com.caimei365.order.utils.ImageUtil;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang.RandomStringUtils;
 import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.http.HttpHeaders;
@@ -28,10 +29,7 @@ import org.springframework.transaction.interceptor.TransactionAspectSupport;
 import org.springframework.util.CollectionUtils;
 
 import javax.annotation.Resource;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 import static com.alibaba.fastjson.JSON.parseArray;
 
@@ -636,6 +634,52 @@ public class ShipServiceImpl implements ShipService {
         return ResponseJson.success(null);
     }
 
+    /**
+     * 小程序分享发货-获取分享码
+     *
+     * @param shopOrderId 子订单Id
+     */
+    @Override
+    public ResponseJson<String> getShipShareCode(Integer shopOrderId) {
+        // 子订单所属供应商Id
+        Integer dbShopId = shipMapper.getShopIdByShopOrderId(shopOrderId);
+        if (null == dbShopId) {
+            return ResponseJson.error("订单异常", null);
+        }
+        // 生成分享码
+        String shareCode = RandomStringUtils.random(4, false, true);
+        // 过期时间
+        Date date = new Date();
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(date);
+        calendar.add(Calendar.DATE, 3);
+        // 获取数据库已有分享码
+        OrderShareCodeVo orderCodeVo = shipMapper.getShipShareCode(null, shopOrderId);
+        if (orderCodeVo != null && orderCodeVo.getExpiredTime().compareTo(date) >= 0 ) {
+            // 旧分享码还未过期,直接返回
+            return ResponseJson.success(orderCodeVo.getShareCode());
+        } else if (orderCodeVo != null) {
+            // 如果旧分享码已经过期,删除分享码使用记录
+            shipMapper.deleteShipShareCodeRecord(shopOrderId);
+            // 更新数据库的分享码
+            orderCodeVo.setShareCode(shareCode);
+            orderCodeVo.setExpiredTime(calendar.getTime());
+            orderCodeVo.setDelFlag(0);
+            shipMapper.updateShipShareCode(orderCodeVo);
+        } else {
+            // 如果没有分享记录,新增数据库的分享码
+            OrderShareCodeVo newShareCodeVo = new OrderShareCodeVo();
+            newShareCodeVo.setOrderId(shopOrderId);
+            newShareCodeVo.setShareCode(shareCode);
+            newShareCodeVo.setExpiredTime(calendar.getTime());
+            newShareCodeVo.setAddTime(date);
+            newShareCodeVo.setDelFlag(0);
+            shipMapper.insertShipShareCode(newShareCodeVo);
+        }
+        // 返回新生成的分享码
+        return ResponseJson.success(shareCode);
+    }
+
     /**
      * 小程序分享发货-分享权限控制
      *
@@ -697,14 +741,14 @@ public class ShipServiceImpl implements ShipService {
             // 分享码进入
             resultMap.put("resultCode", 3);
             // 获取采美供应商发货分享码使用记录
-            Integer shareCodeRecordId = shipMapper.getConsignmentShareRecordId(openId, shopOrderId);
+            Integer shareCodeRecordId = shipMapper.getShipShareCodeRecordId(openId, shopOrderId);
             if (null != shareCodeRecordId && shareCodeRecordId > 0) {
                 return ResponseJson.success("分享码人员权限", resultMap);
             }
             if (StringUtils.isBlank(shareCode)) {
                 return ResponseJson.error("请联系分享人获取分享码", null);
             }
-            OrderShareCodeVo orderCodeVo = shipMapper.getConsignmentShare(shareCode, shopOrderId);
+            OrderShareCodeVo orderCodeVo = shipMapper.getShipShareCode(shareCode, shopOrderId);
             Date date = new Date();
             if (null == orderCodeVo) {
                 return ResponseJson.error("分享码错误", null);
@@ -718,7 +762,7 @@ public class ShipServiceImpl implements ShipService {
                 codeRecord.setOrderId(shopOrderId);
                 codeRecord.setDelFlag(0);
                 codeRecord.setShareCodeId(orderCodeVo.getId());
-                shipMapper.insertConsignmentShareRecord(codeRecord);
+                shipMapper.insertShipShareCodeRecord(codeRecord);
                 return ResponseJson.success("分享码人员权限", resultMap);
             }
         }

+ 2 - 4
src/main/resources/mapper/OrderClubMapper.xml

@@ -90,13 +90,11 @@
         SET status = 1, updateDate = NOW(), receiptTime = NOW()
         WHERE orderID = #{orderId}
     </update>
-
     <update id="updateOrderShareCode">
         UPDATE cm_mall_order_share_code
         SET shareCode = #{shareCode}, expiredTime = #{expiredTime}, delFlag = #{delFlag}
-        WHERE orderID = #{orderId}
+        WHERE id = #{id}
     </update>
-
     <delete id="deleteOrderSearchHistory">
         DELETE FROM user_order_history WHERE userId=#{userId}
     </delete>
@@ -417,7 +415,7 @@
     <select id="getOrderCodeById" resultType="com.caimei365.order.model.vo.OrderShareCodeVo">
         SELECT
             id,
-            orderID,
+            orderID AS orderId,
             shareCode,
             addTime,
             expiredTime,

+ 19 - 4
src/main/resources/mapper/ShipMapper.xml

@@ -15,10 +15,14 @@
         INSERT INTO logistics_information (logisticsBatchID, type, shopOrderID, orderID, nu, logisticsCompanyName, logisticsCompanyCode, shopID, updateDate)
         VALUES (#{logisticsBatchId}, #{type}, #{shopOrderId}, #{orderId}, #{nu}, #{logisticsCompanyName}, #{logisticsCompanyCode}, #{shopId}, #{updateDate})
     </insert>
-    <insert id="insertConsignmentShareRecord">
+    <insert id="insertShipShareCodeRecord">
         INSERT INTO cm_shop_consignment_share_code_record (openid, shopOrderID, shareCodeId, addTime, delFlag)
         VALUES (#{openId}, #{orderId}, #{shareCodeId}, #{addTime}, #{delFlag})
     </insert>
+    <insert id="insertShipShareCode">
+        INSERT INTO cm_shop_consignment_share_code (shopOrderID, shareCode, addTime, expiredTime, delFlag)
+        VALUES (#{orderId}, #{shareCode}, #{addTime}, #{expiredTime}, #{delFlag})
+    </insert>
     <update id="updateNotOutStore">
         UPDATE cm_order_product SET notOutStore = #{notOutStore} WHERE orderProductID = #{orderProductId}
     </update>
@@ -44,6 +48,11 @@
         </set>
         WHERE id = #{id}
     </update>
+    <update id="updateShipShareCode">
+        UPDATE cm_shop_consignment_share_code
+        SET shareCode = #{shareCode}, expiredTime = #{expiredTime}, delFlag = #{delFlag}
+        WHERE id = #{id}
+    </update>
     <delete id="deleteLogisticsInfoByInfoId">
         DELETE FROM logistics_information WHERE id = #{logisticsInfoId}
     </delete>
@@ -56,6 +65,9 @@
     <delete id="deleteLogisticsInfoByBatchId">
         DELETE FROM logistics_information WHERE logisticsBatchID = #{logisticsBatchId}
     </delete>
+    <delete id="deleteShipShareCodeRecord">
+        DELETE FROM cm_shop_consignment_share_code_record WHERE shopOrderID = #{shopOrderId}
+    </delete>
     <select id="getShopOrderList" resultType="com.caimei365.order.model.vo.ShopOrderVo">
         SELECT
             shopOrderId,
@@ -259,12 +271,12 @@
         SELECT shopID FROM cm_shop_order
         WHERE shopOrderID = #{shopOrderId} AND delFlag = '0'
     </select>
-    <select id="getConsignmentShareRecordId" resultType="java.lang.Integer">
+    <select id="getShipShareCodeRecordId" resultType="java.lang.Integer">
         SELECT id
         FROM cm_shop_consignment_share_code_record
         WHERE openid = #{openId} AND shopOrderID = #{shopOrderId} AND delFlag='0'
     </select>
-    <select id="getConsignmentShare" resultType="com.caimei365.order.model.vo.OrderShareCodeVo">
+    <select id="getShipShareCode" resultType="com.caimei365.order.model.vo.OrderShareCodeVo">
         SELECT
             id,
             shopOrderID AS orderId,
@@ -274,7 +286,10 @@
             delFlag
         FROM
         cm_shop_consignment_share_code
-        WHERE shopOrderID = #{shopOrderId} AND shareCode = #{shareCode}
+        WHERE shopOrderID = #{shopOrderId}
+        <if test="shareCode != null and shareCode != ''">
+            AND shareCode = #{shareCode}
+        </if>
         AND delFlag = '0'
     </select>
 </mapper>