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

本文介绍了一种订单编号自动生成的方法,包括定义常量、获取最后一个订单编号并生成新的订单编号等步骤,适用于商城网站和ERP系统。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在商城网站中,订单编号的自动生成,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;
 }
}

 

转载于:https://www.cnblogs.com/lr393993507/p/5310307.html

# 生鲜集市小程序商城开发模板 ## 一、项目概述 “生鲜集市”小程序商城旨在为用户提供便捷的生鲜采购平台,涵盖丰富的生鲜品,确保新鲜、优质的商品供应。通过简洁易用的界面设计高效的购物流程,提升用户购物体验,同时为商家提供全面的订单管理数据分析功能,助力业务增长。 ## 二、功能模块 ### (一)用户端 1. **商品展示**:以图文形式展示各生鲜商品,包括水果、蔬菜、肉、海鲜等,按分浏览,支持搜索功能,方便用户查找所需商品。提供商品详情页,展示商品规格、产地、保质期、营养成分等信息。 2. **购物车**:用户可将心仪商品加入购物车,在购物车中调整商品数量、选择商品进行结算,支持批量删除商品。显示购物车商品总价,结算时自动计算运费(若有)。 3. **订单管理**:用户可查看所有订单,包括待付款、待发货、运输中、已完成、已取消等状态。对未付款订单进行支付操作,对已发货订单查看物流信息,对已完成订单进行评价。 4. **个人中心**:展示用户基本信息,如头像、昵称、手机,支持修改个人信息。显示用户积分、优惠券、收藏的商品店铺。提供收货地址管理功能,包括添加、修改、删除地址,设置默认收货地址。支持账户安全设置,如修改密码、绑定第三方账。 ### (二)商家端 1. **商品管理**:添加、编辑、删除商品信息,包括商品名称、价格、库存、图片、详情描述等。设置商品分、标签,便于用户筛选。实时查看商品销量、库存预警,及时补货或调整商品策略。 2. **订单管理**:查看所有订单详情,包括订单编号、下单时间、用户信息、商品信息、订单状态等。对订单进行发货操作,填写物流单;处理售后订单,如退款、换货申请。 3. **数据统计**:分析商品销售数据,如销量、销售额、订单量等,按日、周、月查看趋势图表。查看用户行为数据,如访问量、浏览量、购买转化率,优化商品展示营销策略。 ### (三)后台管理 1. **用户管理**:查看所有用户信息,包括基本信息、账户状态、消费记录等。对违规用户进行封禁、限制操作,保障平台秩序。 2. **商品管理**:审核商家提交的商品信息,确保商品合规、质量达标。对商品进行上下架管理,维护平台商品展示。 3. **订单管理**:监控平台所有订单,处理异常订单,如支付异常、物流异常等。统计订单数据,为运营决策提供支持。 4. **数据统计分析**:综合分析平台数据,包括用户增长、商品销售、订单趋势等,生成报表图表。通过数据挖掘,发现潜在业务机会,优化平台运营策略。 ## 三、页面设计 ### (一)首页 1. **顶部导航栏**:展示小程序名称、搜索框、用户头像(点击可进入个人中心)。 2. **轮播图**:展示热门商品、促销活动等,吸引用户注意力。 3. **商品分导航**:以图标文字形式展示各生鲜商品分,方便用户快速进入相应分页面。 4. **热门商品推荐**:展示热门、畅销的生鲜商品,包括商品图片、名称、价格、销量等信息,吸引用户购买。 5. **底部导航栏**:包含“首页”“购物车”“订单”“我的”四个功能模块入口。 ### (二)商品分页 1. **分列表**:以列表形式展示所有商品分,每个分展示分名称、图标下商品数量。 2. **商品列表**:进入具体分后,展示该分下的商品列表,包括商品图片、名称、价格、销量等信息,支持按销量、价格等排序。 ### (三)商品详情页 1. **商品图片轮播**:展示商品多角度高清图片,让用户全面了解商品外观。 2. **商品基本信息**:显示商品名称、价格、规格、产地、保质期等信息。 3. **商品详情描述**:详细介绍商品的特点、营养价值、食用方法等。 4. **用户评价**:展示其他用户对该商品的评价评分,帮助用户了解商品口碑。 5. **购买按钮**:包括“加入购物车”“立即购买”按钮,方便用户操作。 ### (四)购物车页 1. **购物车列表**:展示购物车中所有商品,包括商品图片、名称、规格、数量、单价、总价等信息。 2. **商品操作按钮**:支持对商品进行数量增减、删除操作。 3. **全选/反选按钮**:方便用户快速选择或取消选择购物车中的所有商品。 4. **结算按钮**:显示购物车商品总价,点击可进入结算页面。 ### (五)订单页 1. **订单列表**:按订单状态展示所有订单,包括订单编号、下单时间、订单金额、订单状态等信息。 2. **订单详情按钮**:点击可查看订单详细信息,包括商品信息、收货地址、支付方式等。 ### (六)个人中心页 1. **个人信息展示区**:展示用户头像、昵称、手机,提供“编辑资料”按钮。 2. **功能模块入口**:包括“我的订单”“我的
03-08
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值