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

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

  • 第一位代表的是线上还是线下,如果是线上购物就是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);}
}

谈谈订单号和流水号的关系相关推荐

  1. java 生成交易快照_Java生成订单号/交易流水号

    分析:既然是订单号/交易流水号,首先是不能重复,其次需考虑到性能问题. 设计如下: "HF"+时间戳+随机数+循环数 代码如下: int x = 1000; for(int i=0 ...

  2. 简单介绍订单号或者流水号的生成方法

    一般订单号或者流水号等可能在一些平台会用到,然后我就简单的介绍一个我自己生成订单号和流水号的一个方法吧,如果程序有问题或者你有更好的生成办法,欢迎留言,留下你的文章链接,我们一起学习和进步哈. 方法简 ...

  3. Java 有序生成订单号或流水号

    前言   最近用到了一些编号的生成规则记录一下,有序的生成订单号或者流水号 概述   第一种方式,适用于循环生成订单编号,例如有 100 条数据,需要循环生成相对应编号可以使用,下方的方法,仅限于特定 ...

  4. 解析各大电子商务网站订单号的生成方式

    http://blog.csdn.net/yahuvi/article/details/50818789 摘要:订单是整个电子商务的核心.整个电子商务的流程也是围绕订单的状态执行的.这篇博客主要向大家 ...

  5. 高并发分布式系统中生成全局唯一订单号

    高并发分布式系统中生成全局唯一订单号 我了解的方案如下-------------------------- 1.  使用数据库自增Id 优势:编码简单,无需考虑记录唯一标识的问题. 缺陷: 1)    ...

  6. 电子商务网站中订单号设计有什么规则和依据吗?

     https://www.zhihu.com/question/19805896#answer-31069940 你是个程序员. 隔壁老王通过你老婆找到你,说要做个"巨牛逼电商网站&qu ...

  7. SAP MM Inbound Delivery凭证流里不出现采购订单号?

    SAP MM Inbound Delivery凭证流里不出现采购订单号? VL33N显示如下内向交货单,看其凭证流, 看行项目的document flow, 结果类似,对应的PO号码并没有显示在里面, ...

  8. java批量生成订单号_【笔记6-支付及订单模块】从0开始 独立完成企业级Java电商网站开发(服务端)...

    支付模块 实际开发工作中经常会遇见如下场景,一个支付模块,一个订单模块,有一定依赖,一个同事负责支付模块,另一个同事负责订单模块,但是开发支付模块的时候要依赖订单模块的相关类 ,方法,或者工具类,这些 ...

  9. 雪花算法(snowflake) :分布式环境,生成全局唯一的订单号 | CSDN 博文精选

    戳蓝字"CSDN云计算"关注我们哦! 作者 |  琦彦  责编 | 阿秃 转自 | CSDN 博客 snowflake方案 snowflake是Twitter开源的分布式ID生成算 ...

  10. ASP.NET 生成唯一不重复的订单号 支持多用户并发、持多数据库的实现参考(C#.NET通用权限管理系统组件源码组成部分)...

    我们在日常开发项目过程中往往需要各种订单单号的产生方法,而且是支持多用户并发.支持多种数据库的,我们并不想为每个项目都写一些独立的代码去实现这些功能,往往需要有个通用的函数比较爽一些. 下面我们以C# ...

最新文章

  1. 网页中获取微信用户是否关注订阅号的思路
  2. 第五章 处理器拦截器详解——跟着开涛学SpringMVC
  3. java中thread实例_Java多线程2:Thread中的实例方法
  4. 【C语言简单说】三:整数变量和输出扩展(1)
  5. 音视频之使用sonic.cpp实现音频倍速播放功能
  6. 偷天换日?公众号广告新骗局 被坑的多是运营
  7. 【计算机网络笔记】物理层:概念传输媒体传输方式
  8. polyval polyvalm
  9. ITIL 4 Foundation-指导原则
  10. GitHub Actions 快速入门
  11. js Web APIs
  12. 黑马程序员最新版JavaWeb基础教程-学习笔记
  13. UEFI+GPT引导基础
  14. Python-3 EXCEL 操作-1
  15. setTimeout理解
  16. 1.1 机器学习与Python
  17. CGB2105-Day09
  18. 【tio-websocket】4、tio-websocket-server实现自定义集群模式
  19. CentOS-7.2部署DNS域名解析服务器并进行相关配置测试
  20. Ubuntu(Linux)上安装微信(windows应用)

热门文章

  1. python面板数据模型操作步骤_面板数据模型估计一般要做哪些步骤
  2. 【JavaScript】支持js代码的博客有…
  3. 计算机网络速成【网络层】
  4. 浏览器flash/html5视频播放如何倍速(Enounce MySpeed)
  5. 智通标书制作系统 5.1
  6. Struts2默认拦截器
  7. Linux系统版本大全
  8. linux下列目录清单用命令,Linux入门必看的Is命令实用范例!
  9. playwright之贴吧签到
  10. win10亮度_安利一款PC端调节多显示器亮度的软件