# 订单和流水号的区别
- 订单号:是订单的唯一编号,经常用来做检索,所以应当是数字类型的主键
- 流水号:一般是打印在购物单据上的字符串,便于阅读,但是不用做查询
来看看一个流水号的规则
品类编号:如果一个订单中有多个品类,你可以取最贵的那一个;上图是一个 28 位的流水号。
至于流水号的组成规则,根据自身的业务需求来制定;
下面是用 java 代码生成的一个示例
@Test
public void fun1() {
String orderCode = createOrderCode("S", "123456", "10001", "200520");
// S123456100012005204676137770
System.out.println(orderCode);
}
public static String createOrderCode(String type,
String organizationId,
String spgId,
String date) {
StringBuilder builder = new StringBuilder();
builder.append(type);
builder.append(organizationId);
builder.append(spgId);
builder.append(date);
// 主要是这个生成随机数的 API。 jdk8 中的方式
String random = ThreadLocalRandom.current()
.ints(0, 9)
.limit(10)
.mapToObj(Integer::toString)
.collect(Collectors.joining(""));
builder.append(random);
return builder.toString();
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
← 在线修改表结构 逻辑删除还是物理删除 →