Parcourir la source

订单号生成工具类

yzc il y a 2 ans
Parent
commit
7e7a751d6d

+ 51 - 0
sckw-common/sckw-common-core/src/main/java/com/sckw/core/utils/OrderGenerateUtils.java

@@ -0,0 +1,51 @@
+package com.sckw.core.utils;
+
+import com.sckw.redis.utils.RedissonUtils;
+import org.springframework.stereotype.Component;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+/**
+ * @desc: TODO
+ * @author: yzc
+ * @date: 2023-07-12 19:10
+ */
+@Component
+public class OrderGenerateUtils {
+
+
+    /**
+     * 格式化的时间字符串
+     */
+    private static final SimpleDateFormat SDF = new SimpleDateFormat("yyyyMMddHHmmss");
+
+    /**
+     * redisson生成订单号 name
+     */
+    private static final String ORDER_NO_GENERATOR = "order_no_generator";
+
+
+    /**
+     * @desc: 生成订单号
+     * @author: yzc
+     * @date: 2023-07-12 20:20
+     * @Param prefix:
+     * @return: java.lang.String
+     */
+    public static String generateOrderNo(String prefix) {
+        String date = getNowDateStr();
+        long orderId = RedissonUtils.getAtomicLong(ORDER_NO_GENERATOR + date,60L);
+        return String.format("%s-%s%04d", prefix, date, orderId);
+    }
+
+    /**
+     * 获取当前时间年月日字符串
+     *
+     * @return
+     */
+    private static String getNowDateStr() {
+        return SDF.format(new Date());
+    }
+
+}

+ 9 - 1
sckw-common/sckw-common-redis/src/main/java/com/sckw/redis/utils/RedissonUtils.java

@@ -7,7 +7,9 @@ import org.redisson.client.codec.StringCodec;
 import org.redisson.config.Config;
 
 import java.time.Duration;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
 import java.util.concurrent.TimeUnit;
 
 @Slf4j
@@ -267,6 +269,12 @@ public class RedissonUtils {
         }
     }
 
+    public static Long getAtomicLong(String name,Long expired) {
+        RAtomicLong atomicLong = redissonUtils.redissonClient.getAtomicLong(name);
+        atomicLong.expire(expired <= 0 ? Duration.ofSeconds(DEFAULT_EXPIRED) : Duration.ofSeconds(expired));
+        return atomicLong.incrementAndGet();
+    }
+
     public static void main(String[] args) {
         List<String> set = new ArrayList<>();
         set.add("asdsad");

+ 18 - 2
sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwoTradeOrderService.java

@@ -1,7 +1,11 @@
 package com.sckw.order.serivce;
 
+import com.sckw.core.common.enums.enums.DictEnum;
 import com.sckw.core.model.vo.TableStatisticRes;
+import com.sckw.core.utils.BeanUtils;
+import com.sckw.core.utils.OrderGenerateUtils;
 import com.sckw.order.dao.KwoTradeOrderMapper;
+import com.sckw.order.model.KwoTradeOrder;
 import com.sckw.order.model.vo.req.*;
 import com.sckw.order.model.vo.res.OrderDetailRes;
 import com.sckw.order.model.vo.res.OrderListRes;
@@ -25,16 +29,28 @@ public class KwoTradeOrderService {
 
     private final KwoTradeOrderMapper kwoTradeOrderMapper;
     private final StreamBridge streamBridge;
+    private final KwoTradeOrderAddressService kwoTradeOrderAddressService;
+    private final KwoTradeOrderUnitService kwoTradeOrderUnitService;
+    private final KwoTradeOrderGoodsService kwoTradeOrderGoodsService;
+    private final KwoTradeOrderTrackService kwoTradeOrderTrackService;
+
+    private static final String ORDER_NO_PREFIX = "CD";
 
     /**
      * @desc: 采购下单草稿
      * @author: yzc
      * @date: 2023-07-07 15:31
-     * @Param purchaseOrderParam:
+     * @Param param:
      * @return: void
      */
-    public void addPurchaseOrderDraft(PurchaseOrderParam purchaseOrderParam) {
+    public void addPurchaseOrderDraft(PurchaseOrderParam param) {
+        KwoTradeOrder order = BeanUtils.copyProperties(param, KwoTradeOrder.class);
+        order.setTOrderNo(OrderGenerateUtils.generateOrderNo("CD")).setSource(DictEnum.TORDER_SOURCE_0.getValue())
+                .setStatus(Integer.valueOf(DictEnum.TORDER_STATUS_0.getValue()));
+        kwoTradeOrderMapper.insert(order);
+        //存MongoD
         SckwBusSum sckwBusSum = new SckwBusSum();
+        streamBridge.send("sckw-busSum", sckwBusSum);
     }
 
     /**