后端解决jeecgBoot代码生成订单编码不好使

文章讲述了在使用JeecgBoot框架时遇到一对多关系下订单编码无法自动生成的问题。作者通过查阅官方文档了解到,代码生成时不包含JS增强和编码规则。为了解决这个问题,作者从后端出发,创建了一个名为OrderUtils的工具类,该类能根据时间戳和随机数生成订单编码。在添加信息后,系统会自动为订单生成编码,而不是在添加页面时生成。
摘要由CSDN通过智能技术生成

问题描述

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


}

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值