谈谈订单号和流水号的关系

您所在的位置:网站首页 交易单号有用吗 谈谈订单号和流水号的关系

谈谈订单号和流水号的关系

2024-07-09 13:12| 来源: 网络整理| 查看: 265

订单号和流水号是不同的。 首先订单号是订单唯一的编号,而且电商平台的各种子系统也是根据订单来统计业务完成的情况,订单编号经常用来被查询,所以数据类型必须是数字,而且是全局唯一,那肯定就得主键字段了。

然后流水号是打印在一般是打印在购物单据上面的,里面一般包含了订单的相关信息,方便人员阅读,比如说有的工作人员看一眼单子就知道是线上还是线下,在哪家零售店买的,或者哪家仓库给你发的货,因为流水号是一个很长的字符串,所以注定合格字段不适合用来当主键,我们设计订单表时候是那订单号作为主键的,流水号只不过是个普通的字段,也没有设计索引,下面我们来看一个具体的流水号规则,看下图:

在这里插入图片描述

第一位代表的是线上还是线下,如果是线上购物就是E,如果是线下购物那么这个字符就是S,当然这个可以随意的规定,没有人去限制你。第二部分是零售店或者仓库编号,你要结合前面的标志位,比如说S代表的是线下,所以S后面的字符就是零售店的编号第三部分就是商品的品类编号,因为我们在品类表中设计的编号是5位字符的,所以这里我就用5位字符来表示订单的品类编号。如果订单中购买的商品很多,品类还不相同怎么办?也没有关系你把其中最贵的商品的品类作为流水的品类就好了呀,流水号只是一个标示的字符串而已,没有什么大不了的第四部分是购物日期,年月日加起来是6个字符第五部分是随机数,10位字符,这是用程序动态生成的

这五个部分加在一起,一共是28个流水号,这是我们记的流水号规则,当然了同学们也可以根据实际的业务自己设计流水号。接下来模拟生成下流水号

public class Demo1{ public static String createOrder(String type,String organizationId,String spId,String date){ StringBuffer buffer=new StringBuffer(); buffer.append(type); buffer.append(organizationId); buffer.append(spgId); buffer.append(date); //java里挺好的新的生成随机数的方法 ThreadLocaleRandom.current().ints(0,9).limit(10).forEach((one)->{ buffer.append(one); }); return buffer.toString(); } public static void main(String [] args){ String code=createOrderCode("S","000012","11002","20180514"); System.out.println(code); } }


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3