| | |
| | | import org.apache.commons.lang3.time.DateFormatUtils; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.security.SecureRandom; |
| | | import java.util.Date; |
| | | import java.util.Random; |
| | |
| | | @Component |
| | | public class CodeFactoryUtil { |
| | | |
| | | private static RedisService redisService = null; |
| | | |
| | | //静态住入到自己的类中 |
| | | private static RedisService redisService; |
| | | |
| | | //将静态属性以入参(形参)的方式传入一个方法中,然后将此方法通过 @Resource 注入到Spring容器中 |
| | | @Resource |
| | | public void setService(RedisService redisService) { |
| | | CodeFactoryUtil.redisService = redisService; |
| | | private static RedisService getRedisService() { |
| | | if (redisService == null) { |
| | | redisService = ApplicationContextUtil.getBean(RedisService.class); |
| | | } |
| | | return redisService; |
| | | } |
| | | |
| | | /** |
| | |
| | | * 商户编号 |
| | | */ |
| | | private static final String SHOP_PREFIX = "HRT_S"; |
| | | |
| | | /** |
| | | * 商品编号 |
| | | */ |
| | | private static final String GOODS_PREFIX = "HRT_G"; |
| | | |
| | | |
| | | |
| | | /** |
| | | * 商户订单前缀 |
| | |
| | | */ |
| | | private static final String SHOP_ORDER_PREFIX = "CJ"; |
| | | |
| | | /** |
| | | * 积分商城订单前缀 |
| | | */ |
| | | private static final String INTEGRAL_ORDER_PREFIX = "JF"; |
| | | |
| | | /** |
| | | * 直播订单前缀 |
| | | */ |
| | | private static final String LIVE_ORDER_PREFIX = "ZB"; |
| | | |
| | | /** |
| | | * 拼团订单前缀 |
| | | */ |
| | | private static final String GROUP_ORDER_PREFIX = "PT"; |
| | | |
| | | /** |
| | | * 砍价订单前缀 |
| | | */ |
| | | private static final String CUT_ORDER_PREFIX = "KJ"; |
| | | |
| | | /** |
| | | * 采购订单前缀 |
| | | */ |
| | | private static final String PURCHASE_ORDER_PREFIX = "CG"; |
| | | |
| | | /** |
| | | * 入库订单前缀 |
| | | */ |
| | | private static final String IN_ORDER_PREFIX = "RK"; |
| | | |
| | | /** |
| | | * 出库订单前缀 |
| | | */ |
| | | private static final String OUT_ORDER_PREFIX = "CK"; |
| | | |
| | | |
| | | /** |
| | | * 退款订单前缀 |
| | |
| | | * 用户id和随机数总长度 |
| | | */ |
| | | |
| | | private static final int SHOP_LENGTH = 4; |
| | | private static final int SHOP_LENGTH = 5; |
| | | |
| | | private static final int MEMBER_LENGTH = 6; |
| | | |
| | |
| | | * 更具id进行加密+加随机数组成固定长度编码 |
| | | */ |
| | | |
| | | /*public static void main(String[] args) { |
| | | |
| | | }*/ |
| | | public static void main(String[] args) { |
| | | System.out.printf("getShopNo()"+getShopNo()); |
| | | } |
| | | |
| | | /** |
| | | * 获取商户编号 |
| | | * |
| | | * @param shopId |
| | | * @return |
| | | */ |
| | | public static String getShopNo(Long shopId) { |
| | | public static String getShopNo() { |
| | | String shopNo; |
| | | String prefix = SHOP_PREFIX; |
| | | return toFillZeroCode(prefix, SHOP_LENGTH, shopId); |
| | | String suffixNumber = getNoSuffixNumber(prefix); |
| | | shopNo = prefix + suffixNumber; |
| | | return shopNo; |
| | | } |
| | | |
| | | /** |
| | |
| | | return toFillZeroCode(prefix, MEMBER_LENGTH, userId); |
| | | } |
| | | |
| | | public static String getShopOrderNo() { |
| | | String orderNo; |
| | | String timeTemp = DateFormatUtils.format(new Date(), "yyyyMMdd"); |
| | | String prefix = ORDER_PREFIX + timeTemp; |
| | | String suffixNumber = getSuffixNumber(prefix); |
| | | orderNo = prefix + suffixNumber; |
| | | return orderNo; |
| | | /** |
| | | * @description 获取商品编号 |
| | | * @author jqs |
| | | * @date 2023/6/13 14:48 |
| | | * @param |
| | | * @return String |
| | | */ |
| | | public static String getGoodsNo() { |
| | | String goodsNo; |
| | | String prefix = GOODS_PREFIX; |
| | | String suffixNumber = getNoSuffixNumber(prefix); |
| | | goodsNo = prefix + suffixNumber; |
| | | return goodsNo; |
| | | } |
| | | |
| | | private static String getSuffixNumber(String prefix){ |
| | | |
| | | private static String getNoSuffixNumber(String prefix){ |
| | | Integer suffixNumberInt; |
| | | String suffixNumber = "0001"; |
| | | if(redisService.hasKey(prefix)){ |
| | | suffixNumberInt = redisService.getCacheObject(prefix); |
| | | suffixNumber = toFillZeroSuffixNumber(suffixNumberInt); |
| | | String suffixNumber = "00001"; |
| | | if(getRedisService().hasKey(prefix)){ |
| | | suffixNumberInt = getRedisService().getCacheObject(prefix); |
| | | suffixNumber = toFillZeroSuffixNumber(suffixNumberInt,SHOP_LENGTH); |
| | | suffixNumberInt = suffixNumberInt + 1; |
| | | redisService.setCacheObject(prefix, suffixNumberInt, 24L, TimeUnit.HOURS); |
| | | getRedisService().setCacheObject(prefix, suffixNumberInt); |
| | | }else{ |
| | | redisService.setCacheObject(prefix, 1, 24L, TimeUnit.HOURS); |
| | | getRedisService().setCacheObject(prefix, 1); |
| | | } |
| | | return suffixNumber; |
| | | } |
| | | |
| | | private static String toFillZeroSuffixNumber(Integer suffixNumberInt){ |
| | | |
| | | /** |
| | | * @description 获取商城订单编号 |
| | | * @author jqs |
| | | * @date 2023/6/13 14:48 |
| | | * @param |
| | | * @return String |
| | | */ |
| | | public static String getShopOrderNo() { |
| | | String orderNo; |
| | | String timeTemp = DateFormatUtils.format(new Date(), "yyyyMMdd"); |
| | | String prefix = ORDER_PREFIX + timeTemp; |
| | | String suffixNumber = getOrderSuffixNumber(prefix); |
| | | orderNo = prefix + suffixNumber; |
| | | return orderNo; |
| | | } |
| | | |
| | | |
| | | |
| | | private static String getOrderSuffixNumber(String prefix){ |
| | | Integer suffixNumberInt; |
| | | String suffixNumber = "0001"; |
| | | if(getRedisService().hasKey(prefix)){ |
| | | suffixNumberInt = getRedisService().getCacheObject(prefix); |
| | | suffixNumber = toFillZeroSuffixNumber(suffixNumberInt,ORDER_LENGTH); |
| | | suffixNumberInt = suffixNumberInt + 1; |
| | | getRedisService().setCacheObject(prefix, suffixNumberInt, 24L, TimeUnit.HOURS); |
| | | }else{ |
| | | getRedisService().setCacheObject(prefix, 1, 24L, TimeUnit.HOURS); |
| | | } |
| | | return suffixNumber; |
| | | } |
| | | |
| | | private static String toFillZeroSuffixNumber(Integer suffixNumberInt,Integer maxLength){ |
| | | String suffixNumberStr = suffixNumberInt.toString(); |
| | | int length = suffixNumberStr.length(); |
| | | int fillLength = 4 - length; |
| | | int fillLength = maxLength - length; |
| | | StringBuilder idsbs = new StringBuilder(); |
| | | for (int i = 0; i < fillLength; i++) { |
| | | idsbs.append("0"); |