jiangqs
2023-05-17 7b005ca364613c9738dbc66f3e4fe3fb7bec043d
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补位
     *