Java 编程 订单、支付、退款、发货、退货等编号主动生成类
2016-12-16 14:11
609 查看
订单、支付、退款、发货、退货等编号主动生成类
在商城网站中,订单编号的自动生成,ERP中各个单据的编号自动生成,都可以按照一下的方式来自动生成。
第一步:定义常量订单编号前缀、订单编号起始数、订单编号步长;
第二步:定义订单的最后一个编号号码;
第三步:获取数据库中订单号为最后一个的订单编号,并赋值给lastOrderSnNumber
第四步:生成最新的订单号
第五步:调用编号生成的方法
个人一些看法,这些单据编号的自动生成,都是在写代码的时候定义好的,以后编号更改形式要是变了呢,是否可以改进,个人觉得应该可以改成配置的形式。
一个完整的类如下,在这里记下,为以后开发用:
在商城网站中,订单编号的自动生成,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;
}
}
相关文章推荐
- 订单、支付、退款、发货、退货等编号自动生成类
- 订单、支付、退款、发货、退货等编号自动生成类
- 订单、支付、退款、发货、退货等编号自动生成类
- java生成订单编号工具
- java生成订单编号工具
- 建设银行支付接口,按日期查询已结算订单xml接口解析(JAVA版)
- [置顶] java编程方式生成CA证书
- java图形编程--生成一个窗口的步骤
- 生成规范的订单编号
- mysql 生成流水号 存储过程 订单编号
- mysql 生成流水号 存储过程 订单编号
- Java 编程的动态性,第 8 部分: 用代码生成取代反射
- php web下订单编号的生成(隐藏订单上面的统计信息)
- 轻量级的代码生成方案选择-Java基础-Java-编程开发
- 谨记:android编程R.java未自动生成的重要原因之一
- 电商网站主动取消客户已支付成功订单感想
- Android ndk windows下使用环境设置与编程实例:由.java自动生成xxx.h
- Java下的框架编程(反射,泛型,元数据,CGLib,代码动态生成,AOP,动态语言嵌入)(1)--序
- IBM将公布能够自动生成Java代码的编程工具
- java订单生成