问题描述

最近在学习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);
    }


}

二、修改添加方法、添加如下信息

基于以上就可以完成自动生成订单编号了

如果您有更好的方法,期待您的分享☺

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐