zoukankan      html  css  js  c++  java
  • Java 编程 订单、支付、退款、发货、退货等编号主动生成类

    订单、支付、退款、发货、退货等编号主动生成类

    在商城网站中,订单编号的自动生成,ERP中各个单据的编号自动生成,都可以按照一下的方式来自动生成。

    第一步:定义常量订单编号前缀、订单编号起始数、订单编号步长;

     public static final String ORDER_SN_PREFIX = "";// 订单编号前缀 
     public static final long ORDER_SN_FIRST = 100000L;// 订单编号起始数
     public static final long ORDER_SN_STEP = 1L;// 订单编号步长

    第二步:定义订单的最后一个编号号码;

     public static Long lastOrderSnNumber;      //最后的订单编号号码

    第三步:获取数据库中订单号为最后一个的订单编号,并赋值给lastOrderSnNumber

    复制代码
    // 订单编号
      OrderService orderService = (OrderService) SpringUtil.getBean("orderServiceImpl");
      String lastOrderSn = orderService.getLastOrderSn();
      if (StringUtils.isNotEmpty(lastOrderSn)) {
       lastOrderSnNumber = Long.parseLong(StringUtils.removeStartIgnoreCase(lastOrderSn, ORDER_SN_PREFIX));
      } else {
       lastOrderSnNumber = ORDER_SN_FIRST;
      }
    复制代码

    第四步:生成最新的订单号

    复制代码
    /**
      * 生成订单编号
      * @return 订单编号
      */
     public synchronized static String buildOrderSn() {
      lastOrderSnNumber += ORDER_SN_STEP;
      return ORDER_SN_PREFIX + lastOrderSnNumber;
     }
    复制代码

    第五步:调用编号生成的方法

    order.setOrderSn(SerialNumberUtil.buildOrderSn());

    个人一些看法,这些单据编号的自动生成,都是在写代码的时候定义好的,以后编号更改形式要是变了呢,是否可以改进,个人觉得应该可以改成配置的形式。

    一个完整的类如下,在这里记下,为以后开发用:

    复制代码
    package net.shopxx.util;
    import java.util.UUID;
    import net.shopxx.service.OrderService;
    import net.shopxx.service.PaymentService;
    import net.shopxx.service.RefundService;
    import net.shopxx.service.ReshipService;
    import net.shopxx.service.ShippingService;
    import org.apache.commons.lang3.StringUtils;
    /**
     * 工具类 - 编号生成
     */
    public class SerialNumberUtil {
     
     public static final String PRODUCT_SN_PREFIX = "SN_";// 货号前缀
     
     public static final String ORDER_SN_PREFIX = "";// 订单编号前缀 
     public static final long ORDER_SN_FIRST = 100000L;// 订单编号起始数
     public static final long ORDER_SN_STEP = 1L;// 订单编号步长
     
     public static final String PAYMENT_SN_PREFIX = "";// 支付编号前缀
     public static final long PAYMENT_SN_FIRST = 100000L;// 支付编号起始数
     public static final long PAYMENT_SN_STEP = 1L;// 支付编号步长
     
     public static final String REFUND_SN_PREFIX = "";// 退款编号前缀
     public static final long REFUND_SN_FIRST = 100000L;// 退款编号起始数
     public static final long REFUND_SN_STEP = 1L;// 退款编号步长
     
     public static final String SHIPPING_SN_PREFIX = "";// 发货编号前缀
     public static final long SHIPPING_SN_FIRST = 100000L;// 发货编号起始数
     public static final long SHIPPING_SN_STEP = 1L;// 发货编号步长
     
     public static final String RESHIP_SN_PREFIX = "";// 退货编号前缀
     public static final long RESHIP_SN_FIRST = 100000L;// 退货编号起始数
     public static final long RESHIP_SN_STEP = 1L;// 退货编号步长
     
     public static Long lastOrderSnNumber;      //最后的订单编号号码
     public static Long lastPaymentSnNumber;
     public static Long lastRefundSnNumber;
     public static Long lastShippingSnNumber;
     public static Long lastReshipSnNumber;
     public static Long lastTenpayTransactionIdNumber;
     static {
      // 订单编号
      OrderService orderService = (OrderService) SpringUtil.getBean("orderServiceImpl");
      String lastOrderSn = orderService.getLastOrderSn();
      if (StringUtils.isNotEmpty(lastOrderSn)) {
       lastOrderSnNumber = Long.parseLong(StringUtils.removeStartIgnoreCase(lastOrderSn, ORDER_SN_PREFIX));
      } else {
       lastOrderSnNumber = ORDER_SN_FIRST;
      }
      
      // 支付编号
      PaymentService paymentService = (PaymentService) SpringUtil.getBean("paymentServiceImpl");
      String lastPaymentSn = paymentService.getLastPaymentSn();
      if (StringUtils.isNotEmpty(lastPaymentSn)) {
       lastPaymentSnNumber = Long.parseLong(StringUtils.removeStartIgnoreCase(lastPaymentSn, PAYMENT_SN_PREFIX));
      } else {
       lastPaymentSnNumber = PAYMENT_SN_FIRST;
      }
      
      // 退款编号
      RefundService refundService = (RefundService) SpringUtil.getBean("refundServiceImpl");
      String lastRefundSn = refundService.getLastRefundSn();
      if (StringUtils.isNotEmpty(lastRefundSn)) {
       lastRefundSnNumber = Long.parseLong(StringUtils.removeStartIgnoreCase(lastRefundSn, REFUND_SN_PREFIX));
      } else {
       lastRefundSnNumber = REFUND_SN_FIRST;
      }
      
      // 发货编号
      ShippingService shippingService = (ShippingService) SpringUtil.getBean("shippingServiceImpl");
      String lastShippingSn = shippingService.getLastShippingSn();
      if (StringUtils.isNotEmpty(lastShippingSn)) {
       lastShippingSnNumber = Long.parseLong(StringUtils.removeStartIgnoreCase(lastShippingSn, SHIPPING_SN_PREFIX));
      } else {
       lastShippingSnNumber = SHIPPING_SN_FIRST;
      }
      
      // 退货编号
      ReshipService reshipService = (ReshipService) SpringUtil.getBean("reshipServiceImpl");
      String lastReshipSn = reshipService.getLastReshipSn();
      if (StringUtils.isNotEmpty(lastReshipSn)) {
       lastReshipSnNumber = Long.parseLong(StringUtils.removeStartIgnoreCase(lastReshipSn, RESHIP_SN_PREFIX));
      } else {
       lastReshipSnNumber = RESHIP_SN_FIRST;
      }
     }
     
     /**
      * 生成货号
      * 
      * @return 货号
      */
     public static String buildProductSn() {
      String uuid = UUID.randomUUID().toString();
      return PRODUCT_SN_PREFIX + (uuid.substring(0, 8) + uuid.substring(9, 13)).toUpperCase();
     }
     
     /**
      * 生成订单编号
      * @return 订单编号
      */
     public synchronized static String buildOrderSn() {
      lastOrderSnNumber += ORDER_SN_STEP;
      return ORDER_SN_PREFIX + lastOrderSnNumber;
     }
     
     /**
      * 生成支付编号
      * @return 支付编号
      */
     public synchronized static String buildPaymentSn() {
      lastPaymentSnNumber += PAYMENT_SN_STEP;
      return PAYMENT_SN_PREFIX + lastPaymentSnNumber;
     }
     
     /**
      * 生成退款编号
      * 
      * @return 退款编号
      */
     public synchronized static String buildRefundSn() {
      lastRefundSnNumber += REFUND_SN_STEP;
      return REFUND_SN_PREFIX + lastRefundSnNumber;
     }
     
     /**
      * 生成发货编号
      * 
      * @return 发货编号
      */
     public synchronized static String buildShippingSn() {
      lastShippingSnNumber += SHIPPING_SN_STEP;
      return SHIPPING_SN_PREFIX + lastShippingSnNumber;
     }
     
     /**
      * 生成退货编号
      * 
      * @return 退货编号
      */
     public synchronized static String buildReshipSn() {
      lastReshipSnNumber += RESHIP_SN_STEP;
      return RESHIP_SN_PREFIX + lastReshipSnNumber;
     }
    }
    复制代码
    逼着你往前走的,不是前方梦想的微弱光芒,而是身后现实的万丈深渊。 ---------致自己
  • 相关阅读:
    swoole创建进程
    php中,posix_getpid() 和 getmypid() 有什么不同
    php查看进程
    初探PHP多进程
    nginx转发
    mime类型
    acwing 517. 信息传递
    LeetCode 1255 得分最高的单词集合 Maximum Score Words Formed by Letters
    LEETCODE 1254 统计封闭岛屿的数目 Number of Closed Islands
    算法问题实战策略 SORTGAME
  • 原文地址:https://www.cnblogs.com/Fairy-02-11/p/6186645.html
Copyright © 2011-2022 走看看