From fc39a04331e80226d50242ac1ec27f93494fb359 Mon Sep 17 00:00:00 2001 From: jiangqs <jiangqs> Date: 星期二, 30 五月 2023 18:23:09 +0800 Subject: [PATCH] 用户管理 --- ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/CodeFactoryUtil.java | 50 ++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 46 insertions(+), 4 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..0b1f251 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,17 @@ +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 org.springframework.stereotype.Component; import java.security.SecureRandom; import java.util.Date; import java.util.Random; +import java.util.concurrent.TimeUnit; /** * @author jqs34 @@ -17,7 +21,18 @@ * @date 2023年02月13日 * @version: 1.0 */ +@Component public class CodeFactoryUtil { + + + //静态住入到自己的类中 + private static RedisService redisService; + + //将静态属性以入参(形参)的方式传入一个方法中,然后将此方法通过 @Autowired 注入到Spring容器中 + @Autowired + public void setService(RedisService redisService) { + CodeFactoryUtil.redisService = redisService; + } /** * APP用户编码 @@ -43,7 +58,7 @@ * 用户id和随机数总长度 */ - private static final int maxLength = 4; + private static final int MAX_LENGTH = 4; /** * 更具id进行加密+加随机数组成固定长度编码 @@ -63,17 +78,44 @@ */ public static String getShopNo(Long shopId) { String prefix = SHOP_PREFIX; - return toFillZeroCode(prefix, maxLength, shopId); + return toFillZeroCode(prefix, MAX_LENGTH, shopId); } 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