#### 项目介绍
一个基于spring boot、shiro、mybatis、redis的轻量级、前后端分离、防范xss攻击、拥有分布式锁,为生产环境多实例完全准备,拥有完整sku和下单流程的商城
#### 项目架构
项目架构说明
```
qwer
├─qwer-app-auth -- product和chat工程公共授权模块
├─qwer-chat -- 聊天模块接口服务
├─qwer-manager -- 管理后台接口服务
├─qwer-product -- 产品接口服务
├─qwer-netty-im -- netty及时通讯服务
├─qwer-common -- 公共模块
│ ├─qwer-common-base -- 公共异常
│ └─qwer-common-util -- 公共工具类
├─qwer-business -- 公共业务端
├─qwer-starters -- 自定义starter
│ ├─qwer-redis-starter -- redis,redssion相关操作
│ ├─qwer-rocketmq-starter -- rocketmq
│ └─qwer-third-serve-starter -- 第三方服务:阿里云短信、身份证认证、微信登录等
└─
#### 项目技术选型
| 技术 | 版本 | 说明 |
| ---------------------- | ------ | --------------------------------------- |
| Spring Boot | 2.2.1 | MVC核心框架 |
| Shiro | 1.4.1 | 认证和授权框架 |
| MyBatis | 3.5.0 | ORM框架 |
| MyBatisPlus | 3.3.0 | 基于mybatis,使用lambda表达式的 |
| Swagger-UI | 2.8.0 | 文档生产工具 |
| Hibernator-Validator | 6.0.17 | 验证框架 |
| Redisson | 3.11.6 | 对redis进行封装、集成分布式锁、分布式限流器等 |
| Alibaba Druid | 1.1.18 | 数据库连接池 |
| log4j2 | 2.11.2 | 更快的log日志工具 |
| RocketMq | 4.6.0 | 系统消息队列 |
| JwtToken+AES | 3.8.2 | 安全授权框架 |
| lombok | 1.18.10| 简化对象封装工具 |
| hutool | 5.2.3 | 更适合国人的java工具集 |
| fastjson | 1.2.35 | JSON解析框架 |
| shardingsphere | 4.0.0-RC1 | 分表插件 |
| eatthepath | 0.14.2 | 苹果推送 |
## 软件环境
1. jdk 1.8+
2. mysql 5.7
3. maven 3.6.3
4. redis 4.0+
5. rocketMq
## 注意事项
1. redis采用持久化存储;用户好友、群组信息持久化在redis中,若数据丢失则添加好友、群组会失败;若丢失数据可以调/im/reload/cache下接口重新初始化缓存。
2. redisson的配置文件在qwer-starters/qwer-redis-starter工程resources目录下,注意修改redis地址。
3. 交易流水表(tr_trade_record开头表的),是根据yyyy-mm(年月)来分表的,tr_trade_record作为热点表,保留前3天(包含今天)的数据,
每天凌晨定时任务执行,把最近3天之前的数据根据complete_time字段,迁移到不同的分区表;定时任务自定创建下个月的分表。
4. 红包订单表(tr_red_order)和红包领取记录(tr_red_order_record),是根据数据量分表(2000千万分一个表)
5. 用户余额明细表(pt_user_record),是根据数据量分表(2000千万分一个表),pt_user_record作为热点包保留最新的,超过(2000千万)迁移到备份表。
6. 支付回调日志表(tr_trade_return),第三方接口请求日志(tr_channel_log),定时任务自动删除X天之前数据。