|
|
@ -21,6 +21,14 @@ waynboot-mall是一套全部开源的微商城项目,包含一个运营后台
|
|
|
|
|
|
|
|
|
|
|
|
> 如果有任何使用问题,欢迎提交Issue或加wx告知,方便互相交流反馈~ 💘。最后,喜欢的话麻烦给我个star
|
|
|
|
> 如果有任何使用问题,欢迎提交Issue或加wx告知,方便互相交流反馈~ 💘。最后,喜欢的话麻烦给我个star
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 功能设计
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
![功能设计](images/系统设计.png)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 系统设计
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
![系统设计](images/系统设计.png)
|
|
|
|
|
|
|
|
|
|
|
|
关注公众号:waynblog,每周更新最新技术文章。回复关键字:
|
|
|
|
关注公众号:waynblog,每周更新最新技术文章。回复关键字:
|
|
|
|
- **学习**:加群交流,群内问题都会一一解答。
|
|
|
|
- **学习**:加群交流,群内问题都会一一解答。
|
|
|
|
- **演示账号**:获得线上项目管理后台演示账号。
|
|
|
|
- **演示账号**:获得线上项目管理后台演示账号。
|
|
|
@ -31,21 +39,24 @@ waynboot-mall是一套全部开源的微商城项目,包含一个运营后台
|
|
|
|
---
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
- [waynboot-mall](#waynboot-mall)
|
|
|
|
- [waynboot-mall](#waynboot-mall)
|
|
|
|
- [简介](#简介)
|
|
|
|
- [简介](#简介)
|
|
|
|
- [技术特点](#技术特点)
|
|
|
|
- [功能设计](#功能设计)
|
|
|
|
- [商城设计](#商城设计)
|
|
|
|
- [系统设计](#系统设计)
|
|
|
|
- [文件目录](#文件目录)
|
|
|
|
- [系统设计](#系统设计-1)
|
|
|
|
- [1. 库存扣减操作是在下单操作扣减还是在支付成功时扣减?(ps:扣减库存使用乐观锁机制 `where goods_num - num >= 0`)](#1-库存扣减操作是在下单操作扣减还是在支付成功时扣减ps扣减库存使用乐观锁机制-where-goods_num---num--0)
|
|
|
|
- [技术特点](#技术特点)
|
|
|
|
- [2. 首页商品展示接口利用多线程技术进行查询优化,将多个sql语句的排队查询变成异步查询,接口时长只跟查询时长最大的sql查询挂钩](#2-首页商品展示接口利用多线程技术进行查询优化将多个sql语句的排队查询变成异步查询接口时长只跟查询时长最大的sql查询挂钩)
|
|
|
|
- [商城设计](#商城设计)
|
|
|
|
- [3. `ElasticSearch`搜索查询,查询包含搜索关键字并且是上架中的商品,在根据指定字段进行排序,最后分页返回](#3-elasticsearch搜索查询查询包含搜索关键字并且是上架中的商品在根据指定字段进行排序最后分页返回)
|
|
|
|
- [文件目录](#文件目录)
|
|
|
|
- [4. 订单编号生成规则:秒级时间戳 + 加密用户ID + 今日第几次下单](#4-订单编号生成规则秒级时间戳--加密用户id--今日第几次下单)
|
|
|
|
- [1. 库存扣减操作是在下单操作扣减还是在支付成功时扣减?(ps:扣减库存使用乐观锁机制 `where goods_num - num >= 0`)](#1-库存扣减操作是在下单操作扣减还是在支付成功时扣减ps扣减库存使用乐观锁机制-where-goods_num---num--0)
|
|
|
|
- [5. 下单流程处理过程,通过rabbitMQ异步生成订单,提高系统下单处理能力](#5-下单流程处理过程通过rabbitmq异步生成订单提高系统下单处理能力)
|
|
|
|
- [2. 首页商品展示接口利用多线程技术进行查询优化,将多个sql语句的排队查询变成异步查询,接口时长只跟查询时长最大的sql查询挂钩](#2-首页商品展示接口利用多线程技术进行查询优化将多个sql语句的排队查询变成异步查询接口时长只跟查询时长最大的sql查询挂钩)
|
|
|
|
- [6. 金刚区跳转使用策略模式](#6-金刚区跳转使用策略模式)
|
|
|
|
- [3. `ElasticSearch`搜索查询,查询包含搜索关键字并且是上架中的商品,在根据指定字段进行排序,最后分页返回](#3-elasticsearch搜索查询查询包含搜索关键字并且是上架中的商品在根据指定字段进行排序最后分页返回)
|
|
|
|
- [todo](#todo)
|
|
|
|
- [4. 订单编号生成规则:秒级时间戳 + 6为redis自增id](#4-订单编号生成规则秒级时间戳--6为redis自增id)
|
|
|
|
- [开发部署](#开发部署)
|
|
|
|
- [5. 下单流程处理过程,通过rabbitMQ异步生成订单,提高系统下单处理能力](#5-下单流程处理过程通过rabbitmq异步生成订单提高系统下单处理能力)
|
|
|
|
- [在线体验](#在线体验)
|
|
|
|
- [6. 金刚区跳转使用策略模式](#6-金刚区跳转使用策略模式)
|
|
|
|
- [演示图](#演示图)
|
|
|
|
- [todo](#todo)
|
|
|
|
- [感谢](#感谢)
|
|
|
|
- [开发部署](#开发部署)
|
|
|
|
|
|
|
|
- [在线体验](#在线体验)
|
|
|
|
|
|
|
|
- [演示图](#演示图)
|
|
|
|
|
|
|
|
- [感谢](#感谢)
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
@ -159,9 +170,9 @@ searchSourceBuilder.size((int) page.getSize());
|
|
|
|
List<JSONObject> list = elasticDocument.search("goods", searchSourceBuilder, JSONObject.class);
|
|
|
|
List<JSONObject> list = elasticDocument.search("goods", searchSourceBuilder, JSONObject.class);
|
|
|
|
```
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 4. 订单编号生成规则:秒级时间戳 + 6为redis自增id
|
|
|
|
## 4. 订单编号生成规则:秒级时间戳 + 6位redis自增id
|
|
|
|
1. 秒级时间戳:时间递增保证唯一性
|
|
|
|
1. 秒级时间戳:时间递增保证唯一性
|
|
|
|
2. redis自增id:保证高并发情况下订单不重复
|
|
|
|
2. redis自增id:理论每秒可以生成99万订单编号,保证高并发情况下订单不重复
|
|
|
|
```java
|
|
|
|
```java
|
|
|
|
@Component
|
|
|
|
@Component
|
|
|
|
@AllArgsConstructor
|
|
|
|
@AllArgsConstructor
|
|
|
|