问题描述
最近在学习jeecgboot的时候发现,一对多生成代码的时候,订单编码不好使,在线开发测试时是会自动生成订单的,可是生成代码后发现并没有了,如下:
解决办法
通过查询jeecgboot官网发现,这个是原本就存在的问题,当我们代码生成的时候,伴随的js增强、编码规则等不会随着生成,需要我们后边自己去添加,基于我是后端开发人员,所以本文是通过后端办法去解决的。
基于后端解决,就需要我们把添加页面的自动生成订单号隐藏,通过保存信息后自动生成订单号,
一、创建一个自动生成编码的工具
public class OrderUtils {
/**
* 前缀
*/
private static final String prefix = "CN";
/**
* 随即编码
*/
private static final int[] r = new int[]{7, 9, 6, 2, 8, 1, 3, 0, 5, 4};
private static StringBuilder toCode(String shopOrderId) {
String idStr = shopOrderId.toString();
StringBuilder idsbs = new StringBuilder();
for (int i = idStr.length() - 1; i >= 0; i--) {
idsbs.append(r[idStr.charAt(i) - '0']);
}
return idsbs.append(getRandom());
}
/**
* 生成时间戳
*/
private static String getDateTime() {
DateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
return sdf.format(new Date());
}
/**
* 生成不带类别标头的编码
*/
private static synchronized String getCode(String shopOrderId) {
shopOrderId = shopOrderId == null ? "" : shopOrderId;
return getDateTime() + toCode(shopOrderId);
}
/**
* 生成固定长度随机码
*/
private static int getRandom() {
int random = RandomUtils.nextInt(90) + 10;
return random;
}
/**
* 生成订单单号编码(调用方法)
*/
public static String getOrderCode(String shopOrderId) {
return prefix + getCode(shopOrderId);
}
}
二、修改添加方法、添加如下信息
基于以上就可以完成自动生成订单编号了
如果您有更好的方法,期待您的分享☺