package com.ruoyi.order.util; import org.apache.commons.lang3.time.DateFormatUtils; import org.apache.commons.lang3.time.DateUtils; import org.apache.poi.ss.usermodel.DateUtil; import java.security.SecureRandom; import java.util.Date; import java.util.Random; /** * @author jqs34 * @ClassName CodeFactoryUtil * @description: TODO * @date 2023年02月13日 * @version: 1.0 */ public class CodeFactoryUtil { /** * APP用户编码 */ private static final String APP_USER_PREFIX = "HRT_M"; /** * 商户编号 */ private static final String SHOP_PREFIX = "HRT_S"; /** * 商户订单前缀 */ private static final String ORDER_PREFIX = "SC"; /** * 退款订单前缀 */ private static final String ORDER_REFUND_PREFIX = "RO"; /** * 用户id和随机数总长度 */ private static final int maxLength = 4; /** * 更具id进行加密+加随机数组成固定长度编码 */ public static void main(String[] args) { Long orderId = 1L; String userNo = getShopNo(orderId); System.out.println(userNo); } /** * 获取商户编号 * * @param shopId * @return */ public static String getShopNo(Long shopId) { String prefix = SHOP_PREFIX; return toFillZeroCode(prefix, maxLength, shopId); } public static String getShopOrderNo() { String orderNo; String timeTemp = DateFormatUtils.format(new Date(), "yyyyMMdd"); String suffixNumber = "0001"; orderNo = ORDER_PREFIX + timeTemp + suffixNumber; return orderNo; } /** * 0补位 * * @param prefix * @param totalLength * @param id * @return */ private static String toFillZeroCode(String prefix, int totalLength, Long id) { String idStr = id.toString(); int length = idStr.length(); int fillLength = totalLength - length; StringBuilder idsbs = new StringBuilder(prefix); for (int i = 0; i < fillLength; i++) { idsbs.append("0"); } return idsbs.append(idStr).toString(); } /** * 随机6位数生成 */ public static String getRandStr(int num) { // 默认6位 num = num != 0 ? num : 6; Random r = new SecureRandom(); StringBuffer str = new StringBuffer(); int i = 0; while (i < num) { str.append(r.nextInt(10)); i++; } return str.toString(); } }