From 7b005ca364613c9738dbc66f3e4fe3fb7bec043d Mon Sep 17 00:00:00 2001
From: jiangqs <jiangqs>
Date: 星期三, 17 五月 2023 17:02:30 +0800
Subject: [PATCH] demo补完

---
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/CodeFactoryUtil.java |   44 ++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 42 insertions(+), 2 deletions(-)

diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/CodeFactoryUtil.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/CodeFactoryUtil.java
index 3e8d6fd..c060fc6 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/CodeFactoryUtil.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/CodeFactoryUtil.java
@@ -2,13 +2,16 @@
 
 
 
+import com.ruoyi.common.redis.service.RedisService;
 import org.apache.commons.lang3.time.DateFormatUtils;
 import org.apache.commons.lang3.time.DateUtils;
 import org.apache.poi.ss.usermodel.DateUtil;
+import org.springframework.beans.factory.annotation.Autowired;
 
 import java.security.SecureRandom;
 import java.util.Date;
 import java.util.Random;
+import java.util.concurrent.TimeUnit;
 
 /**
  * @author jqs34
@@ -18,6 +21,16 @@
  * @version: 1.0
  */
 public class CodeFactoryUtil {
+
+
+    //静态住入到自己的类中
+    private static RedisService redisService;
+
+    //将静态属性以入参(形参)的方式传入一个方法中,然后将此方法通过 @Autowired 注入到Spring容器中
+    @Autowired
+    public  void setService(RedisService redisService) {
+        CodeFactoryUtil.redisService = redisService;
+    }
 
     /**
      * APP用户编码
@@ -69,11 +82,38 @@
     public static String getShopOrderNo() {
         String orderNo;
         String timeTemp = DateFormatUtils.format(new Date(), "yyyyMMdd");
-        String suffixNumber = "0001";
-        orderNo = ORDER_PREFIX + timeTemp + suffixNumber;
+        String prefix = ORDER_PREFIX + timeTemp;
+        String suffixNumber = getSuffixNumber(prefix);
+        orderNo = prefix + suffixNumber;
         return orderNo;
     }
 
+    private static String getSuffixNumber(String prefix){
+        Integer suffixNumberInt;
+        String suffixNumber = "0001";
+        if(redisService.hasKey(prefix)){
+            suffixNumberInt = redisService.getCacheObject(prefix);
+            suffixNumber = toFillZeroSuffixNumber(suffixNumberInt);
+            suffixNumberInt = suffixNumberInt + 1;
+            redisService.setCacheObject(prefix, suffixNumberInt, 24L, TimeUnit.HOURS);
+        }else{
+            redisService.setCacheObject(prefix, 1, 24L, TimeUnit.HOURS);
+        }
+        return suffixNumber;
+    }
+
+    private static String toFillZeroSuffixNumber(Integer suffixNumberInt){
+        String suffixNumberStr = suffixNumberInt.toString();
+        int length = suffixNumberStr.length();
+        int fillLength = 4 - length;
+        StringBuilder idsbs = new StringBuilder();
+        for (int i = 0; i < fillLength; i++) {
+            idsbs.append("0");
+        }
+        return idsbs.append(suffixNumberStr).toString();
+    }
+
+
     /**
      * 0补位
      *

--
Gitblit v1.7.1