汽车代办服务系统详细设计说明书
1. 引言
1.1 编写目的
本文档旨在详细描述汽车代办服务系统的设计细节,包括模块设计、接口设计、数据库设计等,为开发人员提供明确的开发指导,确保系统能够满足业务需求并具备良好的扩展性和维护性。
1.2 项目背景
随着汽车保有量的增加,车主对于车辆上牌、过户、年检、违章处理等代办服务的需求日益增长。为提升服务效率和客户体验,需建设一套集成化、智能化的汽车代办服务系统,实现业务流程数字化、信息透明化、服务智能化。
项目名称: 汽车代办服务系统 开发单位: [开发单位名称]
用户群体: 管理员、代理商、客户、财务人员、运营人员
1.3 术语定义
| 术语 | 定义 |
|---|---|
| VIN 码 | 车辆识别代号,用于唯一标识车辆 |
| OCR | 光学字符识别,用于自动识别图片中的文字 |
| API | 应用程序编程接口,用于系统间数据交互 |
| 代理商 | 提供代办服务的第三方机构或个人 |
| 分润 | 代理商从订单中获得的收益分成 |
| 上牌 | 新车或二手车办理机动车号牌登记手续 |
| 过户 | 机动车所有权转移,将车辆从原车主名下转移到新车主名下 |
| 年检 | 机动车年度检验,对车辆安全性能、环保性能等进行定期检查 |
| 违章处理 | 处理机动车违反交通法规的行为,包括罚款缴纳、扣分处理等 |
| 代办服务 | 代理客户办理车辆相关业务的服务 |
| 代驾 | 为客户提供驾驶服务,代替客户驾驶车辆 |
| 检测站 | 提供车辆检测服务的机构或场所 |
| 结算 | 平台与代理商之间的资金结算,包括收入分配、费用扣除等 |
| 订单 | 客户提交的代办服务申请,包含服务类型、车辆信息、客户信息等 |
| 订单状态 | 订单在业务流程中的当前状态,如待支付、已支付、办理中、已完成等 |
| 客户 | 使用平台代办服务的个人或企业用户 |
| 实名认证 | 验证客户身份真实性的过程,确保客户信息的准确性 |
| 权限管理 | 控制不同用户角色对系统功能的访问权限 |
| 角色 | 系统用户的身份分类,如管理员、代理商、客户等 |
| 操作日志 | 记录用户在系统中的操作行为,用于审计和问题追踪 |
| 数据统计 | 对业务数据进行收集、整理、分析,生成各类报表 |
| 消息通知 | 系统向用户推送的各类消息,包括订单进度、系统公告等 |
| 菜单管理 | 配置系统功能菜单的显示和权限控制 |
| 字典管理 | 维护系统中各类基础数据项,如服务类型、订单状态等 |
| 高可用 | High Availability,系统的高可用性,确保服务持续稳定运行 |
| 并发用户 | 同时在线使用系统的用户数量 |
| 响应时间 | 系统响应用户操作所需的时间 |
| 数据加密 | 对敏感数据进行加密处理,确保数据传输和存储安全 |
| 二次验证 | 除密码外的额外身份验证方式,如短信验证码、邮箱验证等 |
| 自适应 | 系统界面能够根据设备屏幕尺寸自动调整显示效果 |
| 数据备份 | 定期复制系统数据,防止数据丢失 |
| 异常监控 | 实时监控系统运行状态,及时发现和处理异常情况 |
| RBAC | Role-Based Access Control,基于角色的访问控制 |
1.4 参考资料
- 《汽车代办服务系统需求文档》
- 《系统架构设计规范》
- 《数据库设计规范》
- 《API 接口设计规范》
2. 系统概述
2.1 系统目标
- 主要目标: 搭建高效、稳定、安全的汽车代办服务后台管理平台
- 功能目标: 支持多角色协作、流程自动化、数据统计分析
- 性能目标: 页面响应时间 ≤2 秒,支持 500 人同时在线
- 安全目标: 数据加密传输存储,多角色权限认证
2.2 系统架构
2.2.1 整体架构
系统采用前后端分离的单体架构:
单体架构优势:
- 开发简单: 所有功能模块集中在一个应用中,开发、测试、部署相对简单
- 性能优良: 避免了微服务间的网络调用开销,系统响应更快
- 维护方便: 代码集中管理,问题定位和修复更加便捷
- 资源利用率高: 减少了服务间的资源消耗,整体资源利用率更高
- 数据一致性: 所有业务操作在同一事务中,数据一致性更容易保证
- 成本较低: 减少了基础设施和运维成本
单体架构部署:
- 应用部署: 单个 Spring Boot 应用,包含所有业务模块
- 数据库: 统一使用 MySQL 数据库,所有业务数据集中存储
- 缓存: 使用 Redis 作为统一缓存,提升系统性能
- 负载均衡: 可通过 Nginx 实现多实例负载均衡
- 监控: 统一监控应用性能、数据库性能、系统资源使用情况
2.2.2 系统功能架构

2.2.3 核心模块
- 用户管理模块: 管理员、代理商、客户信息管理
- 订单管理模块: 代办订单全流程管理
- 车辆管理模块: 车辆信息及办理记录管理
- 服务管理模块: 服务类型及价格配置
- 财务管理模块: 订单收支及结算管理
- 资金管理模块: 财务数据统计及可视化
- 检测站管理模块: 检测站信息及业务管理
- 代驾管理模块: 代驾服务及人员管理
- 客户管理模块: 客户信息及积分管理
- 部门管理模块: 组织架构管理
- 角色管理模块: 角色及权限管理
- 菜单管理模块: 系统菜单配置
- 字典管理模块: 系统字典维护
- 通知管理模块: 消息推送及公告管理
- 统计分析模块: 业务数据统计及报表
- 系统配置模块: 系统参数配置
2.3 运行环境
2.3.1 硬件环境
- 服务器: 4 核 8G 内存,100GB 存储空间
- 数据库服务器: 8 核 16G 内存,500GB 存储空间
- 缓存服务器: 2 核 4G 内存,50GB 存储空间
2.3.2 软件环境
- 操作系统: CentOS 7.6 / Ubuntu 18.04
- 数据库: MySQL 8.0
- 缓存: Redis 6.0
- 消息队列: RabbitMQ 3.8
- 容器化: Docker 20.10
2.3.3 开发环境
- 后端: Java 11, Spring Boot 2.6
- 前端: Vue.js 3.0 / React 18.0
- 移动端: React Native 0.70
- 构建工具: Maven 3.8, Node.js 16.0
3. 模块详细设计
3.1 用户管理模块
3.1.1 功能描述
管理系统中所有用户信息,包括管理员、代理商、客户等不同角色的用户,提供用户注册、登录、权限分配、信息维护等功能。
3.1.2 输入输出
- 输入: 用户注册信息、登录凭证、权限配置、用户信息更新
- 输出: 用户认证结果、用户信息、权限列表、操作日志
3.1.3 处理流程
用户注册/登录流程
权限验证流程
3.1.4 接口设计
用户注册接口
- 接口名称:
/api/user/register - 请求方法: POST
- 请求参数:
- username: String (必填) - 用户名
- password: String (必填) - 密码
- email: String (必填) - 邮箱
- phone: String (必填) - 手机号
- role: String (必填) - 用户角色
- 响应参数:
- code: Integer - 响应码
- message: String - 响应消息
- data: Object - 用户信息
用户登录接口
- 接口名称:
/api/user/login - 请求方法: POST
- 请求参数:
- username: String (必填) - 用户名
- password: String (必填) - 密码
- captcha: String (必填) - 验证码
- 响应参数:
- code: Integer - 响应码
- message: String - 响应消息
- data: Object - 包含 token 和用户信息
3.2 订单管理模块
3.2.1 功能描述
管理代办订单的全生命周期,包括订单创建、状态流转、进度跟踪、订单查询等功能,支持多种代办服务类型的订单处理。
3.2.2 输入输出
- 输入: 订单创建信息、状态更新、进度信息、查询条件
- 输出: 订单详情、状态列表、进度信息、统计数据
3.2.3 处理流程
订单创建流程
订单状态流转
订单进度跟踪
3.2.4 接口设计
创建订单接口
- 接口名称:
/api/order/create - 请求方法: POST
- 请求参数:
- serviceType: String (必填) - 服务类型
- vehicleInfo: Object (必填) - 车辆信息
- customerInfo: Object (必填) - 客户信息
- documents: Array (必填) - 证件文件列表
- 响应参数:
- code: Integer - 响应码
- message: String - 响应消息
- data: Object - 订单信息
更新订单状态接口
- 接口名称:
/api/order/status/update - 请求方法: PUT
- 请求参数:
- orderId: Long (必填) - 订单 ID
- status: String (必填) - 新状态
- remark: String (可选) - 备注信息
- 响应参数:
- code: Integer - 响应码
- message: String - 响应消息
3.3 车辆管理模块
3.3.1 功能描述
管理车辆基础信息、证件信息、办理记录等,支持车辆信息的录入、查询、更新,以及车辆历史办理记录的追踪。
3.3.2 输入输出
- 输入: 车辆信息、证件文件、查询条件
- 输出: 车辆详情、证件信息、办理记录、统计数据
3.3.3 处理流程
车辆信息录入流程
车辆查询流程
3.3.4 接口设计
添加车辆信息接口
- 接口名称:
/api/vehicle/add - 请求方法: POST
- 请求参数:
- brand: String (必填) - 品牌
- model: String (必填) - 型号
- plateNumber: String (必填) - 车牌号
- vinCode: String (必填) - VIN 码
- ownerInfo: Object (必填) - 车主信息
- documents: Array (必填) - 证件文件
- 响应参数:
- code: Integer - 响应码
- message: String - 响应消息
- data: Object - 车辆信息
查询车辆信息接口
- 接口名称:
/api/vehicle/query - 请求方法: GET
- 请求参数:
- plateNumber: String (可选) - 车牌号
- vinCode: String (可选) - VIN 码
- ownerPhone: String (可选) - 车主手机号
- 响应参数:
- code: Integer - 响应码
- message: String - 响应消息
- data: Object - 车辆信息及历史记录
3.4 服务管理模块
3.4.1 功能描述
配置和管理可办理的服务类型,包括服务价格设置、办理流程配置、材料清单管理等,为订单创建提供基础配置支持。
3.4.2 输入输出
- 输入: 服务类型信息、价格配置、流程设置、材料清单
- 输出: 服务列表、价格信息、流程配置、材料要求
3.4.3 处理流程
服务配置流程
价格计算流程
3.4.4 接口设计
创建服务类型接口
- 接口名称:
/api/service/create - 请求方法: POST
- 请求参数:
- serviceName: String (必填) - 服务名称
- serviceCode: String (必填) - 服务代码
- basePrice: BigDecimal (必填) - 基础价格
- description: String (可选) - 服务描述
- materials: Array (必填) - 材料清单
- 响应参数:
- code: Integer - 响应码
- message: String - 响应消息
- data: Object - 服务信息
查询服务列表接口
- 接口名称:
/api/service/list - 请求方法: GET
- 请求参数:
- status: String (可选) - 服务状态
- page: Integer (可选) - 页码
- size: Integer (可选) - 每页大小
- 响应参数:
- code: Integer - 响应码
- message: String - 响应消息
- data: Object - 服务列表及分页信息
3.5 财务管理模块
3.5.1 功能描述
管理订单收支明细、代理商结算、财务报表等财务相关功能,提供完整的财务管理解决方案。
3.5.2 输入输出
- 输入: 订单支付信息、结算数据、查询条件
- 输出: 收支明细、结算报表、财务报表、统计数据
3.5.3 处理流程
订单支付流程
代理商结算流程
3.5.4 接口设计
订单支付接口
- 接口名称:
/api/finance/pay - 请求方法: POST
- 请求参数:
- orderId: Long (必填) - 订单 ID
- payMethod: String (必填) - 支付方式
- amount: BigDecimal (必填) - 支付金额
- 响应参数:
- code: Integer - 响应码
- message: String - 响应消息
- data: Object - 支付结果
代理商结算接口
- 接口名称:
/api/finance/agent/settle - 请求方法: POST
- 请求参数:
- agentId: Long (必填) - 代理商 ID
- startDate: String (必填) - 开始日期
- endDate: String (必填) - 结束日期
- 响应参数:
- code: Integer - 响应码
- message: String - 响应消息
- data: Object - 结算信息
3.6 通知管理模块
3.6.1 功能描述
管理订单进度通知、系统公告、异常提醒等消息推送功能,支持多种通知方式(短信、微信、APP 推送)。
3.6.2 输入输出
- 输入: 通知内容、接收对象、通知类型、发送时间
- 输出: 发送状态、通知历史、统计信息
3.6.3 处理流程
消息发送流程
通知模板管理
3.6.4 接口设计
发送通知接口
- 接口名称:
/api/notification/send - 请求方法: POST
- 请求参数:
- templateId: String (必填) - 模板 ID
- recipients: Array (必填) - 接收对象
- params: Object (可选) - 模板参数
- sendTime: String (可选) - 发送时间
- 响应参数:
- code: Integer - 响应码
- message: String - 响应消息
- data: Object - 发送结果
查询通知历史接口
- 接口名称:
/api/notification/history - 请求方法: GET
- 请求参数:
- userId: Long (可选) - 用户 ID
- type: String (可选) - 通知类型
- startDate: String (可选) - 开始日期
- endDate: String (可选) - 结束日期
- 响应参数:
- code: Integer - 响应码
- message: String - 响应消息
- data: Object - 通知历史列表
3.7 资金管理模块
3.7.1 功能描述
管理系统的财务数据,包括营业额、净利润、支出等,提供财务数据统计、分析和可视化展示功能。
3.7.2 输入输出
- 输入: 订单收入数据、支出记录、时间范围、统计维度
- 输出: 财务统计数据、图表展示、财务报表、趋势分析
3.7.3 处理流程
财务数据统计流程
数据可视化流程
3.7.4 接口设计
获取财务统计数据接口
- 接口名称:
/api/finance/statistics - 请求方法: GET
- 请求参数:
- timeRange: String (必填) - 时间范围(day/week/month)
- startDate: String (可选) - 开始日期
- endDate: String (可选) - 结束日期
- 响应参数:
- code: Integer - 响应码
- message: String - 响应消息
- data: Object - 财务统计数据
获取财务趋势图表接口
- 接口名称:
/api/finance/trend - 请求方法: GET
- 请求参数:
- chartType: String (必填) - 图表类型
- timeRange: String (必填) - 时间范围
- 响应参数:
- code: Integer - 响应码
- message: String - 响应消息
- data: Object - 图表数据
3.8 检测站管理模块
3.8.1 功能描述
管理系统中的检测站信息及业务,包括检测站的增删改查、业务统计、服务评价等功能。
3.8.2 输入输出
- 输入: 检测站信息、业务数据、评价信息、查询条件
- 输出: 检测站列表、业务统计、评价数据、详细信息
3.8.3 处理流程
检测站管理流程
检测站业务统计流程
3.8.4 接口设计
添加检测站接口
- 接口名称:
/api/inspection-station/add - 请求方法: POST
- 请求参数:
- stationName: String (必填) - 检测站名称
- stationCode: String (必填) - 检测站编码
- address: String (必填) - 检测站地址
- contactPhone: String (必填) - 联系电话
- serviceTypes: Array (必填) - 服务类型
- status: Integer (必填) - 状态
- 响应参数:
- code: Integer - 响应码
- message: String - 响应消息
- data: Object - 检测站信息
查询检测站列表接口
- 接口名称:
/api/inspection-station/list - 请求方法: GET
- 请求参数:
- page: Integer (可选) - 页码
- size: Integer (可选) - 每页大小
- status: Integer (可选) - 状态
- keyword: String (可选) - 关键词
- 响应参数:
- code: Integer - 响应码
- message: String - 响应消息
- data: Object - 检测站列表及分页信息
3.9 代驾管理模块
3.9.1 功能描述
管理系统中的代驾服务及代驾人员,包括代驾人员的增删改查、订单分配、服务评价、费用结算等功能。
3.9.2 输入输出
- 输入: 代驾人员信息、订单分配、评价数据、结算信息
- 输出: 代驾人员列表、订单状态、评价统计、结算报表
3.9.3 处理流程
代驾人员管理流程
代驾订单分配流程
3.9.4 接口设计
添加代驾人员接口
- 接口名称:
/api/driver/add - 请求方法: POST
- 请求参数:
- driverName: String (必填) - 代驾人员姓名
- phone: String (必填) - 联系电话
- idCard: String (必填) - 身份证号
- licenseNumber: String (必填) - 驾驶证号
- serviceArea: Array (必填) - 服务区域
- hourlyRate: BigDecimal (必填) - 小时费率
- 响应参数:
- code: Integer - 响应码
- message: String - 响应消息
- data: Object - 代驾人员信息
分配代驾订单接口
- 接口名称:
/api/driver/assign-order - 请求方法: POST
- 请求参数:
- orderId: Long (必填) - 订单 ID
- driverId: Long (必填) - 代驾人员 ID
- pickupLocation: String (必填) - 接车地点
- dropoffLocation: String (必填) - 送车地点
- 响应参数:
- code: Integer - 响应码
- message: String - 响应消息
- data: Object - 分配结果
3.10 客户管理模块
3.10.1 功能描述
管理客户信息及历史订单,包括客户信息的增删改查、实名认证、历史订单查询、积分管理等功能。
3.10.2 输入输出
- 输入: 客户信息、认证数据、查询条件、积分操作
- 输出: 客户列表、认证状态、历史订单、积分信息
3.10.3 处理流程
客户信息管理流程
客户积分管理流程
3.10.4 接口设计
添加客户信息接口
- 接口名称:
/api/customer/add - 请求方法: POST
- 请求参数:
- customerName: String (必填) - 客户姓名
- phone: String (必填) - 手机号
- idCard: String (必填) - 身份证号
- email: String (可选) - 邮箱
- address: String (可选) - 地址
- 响应参数:
- code: Integer - 响应码
- message: String - 响应消息
- data: Object - 客户信息
客户实名认证接口
- 接口名称:
/api/customer/verify - 请求方法: POST
- 请求参数:
- customerId: Long (必填) - 客户 ID
- idCardFront: String (必填) - 身份证正面照片
- idCardBack: String (必填) - 身份证背面照片
- facePhoto: String (必填) - 人脸照片
- 响应参数:
- code: Integer - 响应码
- message: String - 响应消息
- data: Object - 认证结果
3.11 部门管理模块
3.11.1 功能描述
管理系统的组织架构,包括部门的增删改查、层级管理、人员统计等功能。
3.11.2 输入输出
- 输入: 部门信息、层级关系、查询条件
- 输出: 部门列表、层级结构、人员统计、详细信息
3.11.3 处理流程
部门管理流程
部门人员统计流程
3.11.4 接口设计
添加部门接口
- 接口名称:
/api/department/add - 请求方法: POST
- 请求参数:
- deptName: String (必填) - 部门名称
- deptCode: String (必填) - 部门编码
- parentId: Long (可选) - 父部门 ID
- leaderId: Long (可选) - 部门负责人 ID
- description: String (可选) - 部门描述
- 响应参数:
- code: Integer - 响应码
- message: String - 响应消息
- data: Object - 部门信息
查询部门树结构接口
- 接口名称:
/api/department/tree - 请求方法: GET
- 请求参数:
- includeDisabled: Boolean (可选) - 是否包含禁用部门
- 响应参数:
- code: Integer - 响应码
- message: String - 响应消息
- data: Array - 部门树结构
3.12 角色管理模块
3.12.1 功能描述
管理系统角色及权限分配,包括角色的增删改查、权限配置、用户关联等功能。
3.12.2 输入输出
- 输入: 角色信息、权限配置、用户关联、查询条件
- 输出: 角色列表、权限信息、用户列表、详细信息
3.12.3 处理流程
角色管理流程
权限配置流程
3.12.4 接口设计
添加角色接口
- 接口名称:
/api/role/add - 请求方法: POST
- 请求参数:
- roleName: String (必填) - 角色名称
- roleCode: String (必填) - 角色编码
- description: String (可选) - 角色描述
- menuIds: Array (可选) - 菜单权限 ID 列表
- 响应参数:
- code: Integer - 响应码
- message: String - 响应消息
- data: Object - 角色信息
配置角色权限接口
- 接口名称:
/api/role/permission/config - 请求方法: POST
- 请求参数:
- roleId: Long (必填) - 角色 ID
- menuIds: Array (必填) - 菜单权限 ID 列表
- dataScope: String (可选) - 数据权限范围
- 响应参数:
- code: Integer - 响应码
- message: String - 响应消息
3.13 菜单管理模块
3.13.1 功能描述
系统菜单配置与管理,包括菜单的增删改查、层级管理、权限分配等功能。
3.13.2 输入输出
- 输入: 菜单信息、层级关系、权限配置、查询条件
- 输出: 菜单列表、层级结构、权限信息、详细信息
3.13.3 处理流程
菜单管理流程
菜单权限分配流程
3.13.4 接口设计
添加菜单接口
- 接口名称:
/api/menu/add - 请求方法: POST
- 请求参数:
- menuName: String (必填) - 菜单名称
- parentId: Long (可选) - 父菜单 ID
- menuType: Integer (必填) - 菜单类型
- path: String (可选) - 路由路径
- component: String (可选) - 组件路径
- perms: String (可选) - 权限标识
- icon: String (可选) - 菜单图标
- sort: Integer (可选) - 显示顺序
- 响应参数:
- code: Integer - 响应码
- message: String - 响应消息
- data: Object - 菜单信息
获取菜单树结构接口
- 接口名称:
/api/menu/tree - 请求方法: GET
- 请求参数:
- includeDisabled: Boolean (可选) - 是否包含禁用菜单
- 响应参数:
- code: Integer - 响应码
- message: String - 响应消息
- data: Array - 菜单树结构
3.14 字典管理模块
3.14.1 功能描述
系统字典项维护,包括字典类型和字典数据的增删改查、分类管理、导入导出等功能。
3.14.2 输入输出
- 输入: 字典类型信息、字典数据、查询条件、导入数据
- 输出: 字典列表、字典数据、分类信息、导出数据
3.14.3 处理流程
字典类型管理流程
字典数据管理流程
4. 数据库详细设计
4.1 数据库概述
系统采用 MySQL 8.0 作为主数据库,Redis 6.0 作为缓存数据库。数据库设计遵循第三范式,确保数据一致性和完整性。
4.2 数据表结构
4.2.1 系统基础表
1. 管理员表(sys_user)
| 字段名 | 数据类型 | 长度 | 是否为空 | 默认值 | 说明 |
|---|---|---|---|---|---|
| user_id | bigint | - | NOT NULL | AUTO_INCREMENT | 用户 ID,主键 |
| dept_id | bigint | - | NULL | NULL | 部门 ID |
| user_name | varchar | 30 | NULL | NULL | 用户姓名 |
| account | varchar | 30 | NULL | NULL | 账号 |
| user_type | varchar | 2 | NULL | '00' | 用户类型(00 系统用户) |
| varchar | 50 | NULL | '' | 用户邮箱 | |
| phone | varchar | 11 | NULL | '' | 手机号码 |
| sex | varchar | 1 | NULL | '0' | 用户性别(0 男 1 女 2 未知) |
| avatar | varchar | 100 | NULL | '' | 头像地址 |
| password | varchar | 100 | NULL | '' | 密码 |
| status | varchar | 1 | NULL | '0' | 帐号状态(0 正常 1 停用) |
| del_flag | varchar | 1 | NULL | '0' | 删除标志(0 存在 1 删除) |
| login_ip | varchar | 128 | NULL | '' | 最后登录 IP |
| login_date | datetime | - | NULL | NULL | 最后登录时间 |
| create_by | varchar | 64 | NULL | '' | 创建者 |
| create_time | datetime | - | NULL | NULL | 创建时间 |
| update_by | varchar | 64 | NULL | '' | 更新者 |
| update_time | datetime | - | NULL | NULL | 更新时间 |
| remark | varchar | 500 | NULL | NULL | 备注 |
索引设计:
- 主键索引:user_id
- 唯一索引:phone
- 普通索引:user_name, account
- 复合索引:phone, create_time
2. 部门表 (sys_dept)
| 字段名 | 数据类型 | 长度 | 是否为空 | 默认值 | 说明 |
|---|---|---|---|---|---|
| dept_id | bigint | - | NOT NULL | AUTO_INCREMENT | 部门 ID,主键 |
| parent_id | bigint | - | NULL | 0 | 父部门 ID |
| ancestors | varchar | 50 | NULL | '' | 祖级列表 |
| dept_name | varchar | 30 | NULL | '' | 部门名称 |
| order_num | int | - | NULL | 0 | 显示顺序 |
| leader | varchar | 20 | NULL | NULL | 负责人 |
| phone | varchar | 11 | NULL | NULL | 联系电话 |
| varchar | 50 | NULL | NULL | 邮箱 | |
| status | varchar | 1 | NULL | '0' | 部门状态(0 正常 1 停用) |
| del_flag | varchar | 1 | NULL | '0' | 删除标志(0 存在 1 删除) |
| create_by | varchar | 64 | NULL | '' | 创建者 |
| create_time | datetime | - | NULL | NULL | 创建时间 |
| update_by | varchar | 64 | NULL | '' | 更新者 |
| update_time | datetime | - | NULL | NULL | 更新时间 |
3. 角色信息表 (sys_role)
| 字段名 | 数据类型 | 长度 | 是否为空 | 默认值 | 说明 |
|---|---|---|---|---|---|
| role_id | bigint | - | NOT NULL | AUTO_INCREMENT | 角色 ID,主键 |
| role_name | varchar | 30 | NOT NULL | - | 角色名称 |
| role_key | varchar | 100 | NOT NULL | - | 角色权限字符串 |
| role_sort | int | - | NOT NULL | - | 显示顺序 |
| data_scope | varchar | 1 | NULL | '1' | 数据范围 |
| menu_check_strictly | tinyint(1) | - | NULL | 1 | 菜单树选择项是否关联显示 |
| dept_check_strictly | tinyint(1) | - | NULL | 1 | 部门树选择项是否关联显示 |
| status | varchar | 1 | NOT NULL | - | 角色状态(0 正常 1 停用) |
| del_flag | varchar | 1 | NULL | '0' | 删除标志(0 存在 1 删除) |
| create_by | varchar | 64 | NULL | '' | 创建者 |
| create_time | datetime | - | NULL | NULL | 创建时间 |
| update_by | varchar | 64 | NULL | '' | 更新者 |
| update_time | datetime | - | NULL | NULL | 更新时间 |
| remark | varchar | 500 | NULL | NULL | 备注 |
4. 菜单权限表 (sys_menu)
| 字段名 | 数据类型 | 长度 | 是否为空 | 默认值 | 说明 |
|---|---|---|---|---|---|
| menu_id | bigint | - | NOT NULL | AUTO_INCREMENT | 菜单 ID,主键 |
| menu_name | varchar | 50 | NOT NULL | - | 菜单名称 |
| parent_id | bigint | - | NULL | 0 | 父菜单 ID |
| order_num | int | - | NULL | 0 | 显示顺序 |
| path | varchar | 200 | NULL | '' | 路由地址 |
| component | varchar | 255 | NULL | NULL | 组件路径 |
| query | varchar | 255 | NULL | NULL | 路由参数 |
| is_frame | int | - | NULL | 1 | 是否为外链(0 是 1 否) |
| is_cache | int | - | NULL | 0 | 是否缓存(0 缓存 1 不缓存) |
| menu_type | varchar | 1 | NULL | '' | 菜单类型(M 目录 C 菜单 F 按钮) |
| visible | varchar | 1 | NULL | '0' | 菜单状态(0 显示 1 隐藏) |
| status | varchar | 1 | NULL | '0' | 菜单状态(0 正常 1 停用) |
| perms | varchar | 100 | NULL | NULL | 权限标识 |
| icon | varchar | 100 | NULL | '#' | 菜单图标 |
| create_by | varchar | 64 | NULL | '' | 创建者 |
| create_time | datetime | - | NULL | NULL | 创建时间 |
| update_by | varchar | 64 | NULL | '' | 更新者 |
| update_time | datetime | - | NULL | NULL | 更新时间 |
| remark | varchar | 500 | NULL | '' | 备注 |
5. 岗位信息表 (sys_post)
| 字段名 | 数据类型 | 长度 | 是否为空 | 默认值 | 说明 |
|---|---|---|---|---|---|
| post_id | bigint | - | NOT NULL | AUTO_INCREMENT | 岗位 ID,主键 |
| post_code | varchar | 64 | NOT NULL | - | 岗位编码 |
| post_name | varchar | 50 | NOT NULL | - | 岗位名称 |
| post_sort | int | - | NOT NULL | - | 显示顺序 |
| status | varchar | 1 | NOT NULL | - | 状态(0 正常 1 停用) |
| create_by | varchar | 64 | NULL | '' | 创建者 |
| create_time | datetime | - | NULL | NULL | 创建时间 |
| update_by | varchar | 64 | NULL | '' | 更新者 |
| update_time | datetime | - | NULL | NULL | 更新时间 |
| remark | varchar | 500 | NULL | NULL | 备注 |
6. 字典类型表 (sys_dict_type)
| 字段名 | 数据类型 | 长度 | 是否为空 | 默认值 | 说明 |
|---|---|---|---|---|---|
| dict_id | bigint | - | NOT NULL | AUTO_INCREMENT | 字典主键 |
| dict_name | varchar | 100 | NULL | '' | 字典名称 |
| dict_type | varchar | 100 | NULL | '' | 字典类型 |
| status | varchar | 1 | NULL | '0' | 状态(0 正常 1 停用) |
| create_by | varchar | 64 | NULL | '' | 创建者 |
| create_time | datetime | - | NULL | NULL | 创建时间 |
| update_by | varchar | 64 | NULL | '' | 更新者 |
| update_time | datetime | - | NULL | NULL | 更新时间 |
| remark | varchar | 500 | NULL | NULL | 备注 |
7. 字典数据表 (sys_dict_data)
| 字段名 | 数据类型 | 长度 | 是否为空 | 默认值 | 说明 |
|---|---|---|---|---|---|
| dict_code | bigint | - | NOT NULL | AUTO_INCREMENT | 字典编码 |
| dict_sort | int | - | NULL | 0 | 字典排序 |
| dict_label | varchar | 100 | NULL | '' | 字典标签 |
| dict_value | varchar | 100 | NULL | '' | 字典键值 |
| dict_type | varchar | 100 | NULL | '' | 字典类型 |
| css_class | varchar | 100 | NULL | NULL | 样式属性 |
| list_class | varchar | 100 | NULL | NULL | 表格回显样式 |
| is_default | varchar | 1 | NULL | 'N' | 是否默认(Y 是 N 否) |
| status | varchar | 1 | NULL | '0' | 状态(0 正常 1 停用) |
| create_by | varchar | 64 | NULL | '' | 创建者 |
| create_time | datetime | - | NULL | NULL | 创建时间 |
| update_by | varchar | 64 | NULL | '' | 更新者 |
| update_time | datetime | - | NULL | NULL | 更新时间 |
| remark | varchar | 500 | NULL | NULL | 备注 |
8. 通知公告表 (sys_notice)
| 字段名 | 数据类型 | 长度 | 是否为空 | 默认值 | 说明 |
|---|---|---|---|---|---|
| notice_id | bigint | - | NOT NULL | AUTO_INCREMENT | 公告 ID,主键 |
| notice_title | varchar | 50 | NOT NULL | - | 公告标题 |
| notice_type | char | 1 | NOT NULL | - | 公告类型(1 通知 2 公告) |
| notice_content | longtext | - | NULL | NULL | 公告内容 |
| status | char | 1 | NULL | '0' | 公告状态(0 正常 1 关闭) |
| publish_time | datetime | - | NULL | NULL | 发布时间 |
| create_by | varchar | 64 | NULL | '' | 创建者 |
| create_time | datetime | - | NULL | NULL | 创建时间 |
| update_by | varchar | 64 | NULL | '' | 更新者 |
| update_time | datetime | - | NULL | NULL | 更新时间 |
| remark | varchar | 255 | NULL | NULL | 备注 |
4.2.2 关联表
1. 用户和角色关联表 (sys_user_role)
| 字段名 | 数据类型 | 长度 | 是否为空 | 默认值 | 说明 |
|---|---|---|---|---|---|
| user_id | bigint | - | NOT NULL | - | 用户 ID,联合主键 |
| role_id | bigint | - | NOT NULL | - | 角色 ID,联合主键 |
2. 用户与岗位关联表 (sys_user_post)
| 字段名 | 数据类型 | 长度 | 是否为空 | 默认值 | 说明 |
|---|---|---|---|---|---|
| user_id | bigint | - | NOT NULL | - | 用户 ID,联合主键 |
| post_id | bigint | - | NOT NULL | - | 岗位 ID,联合主键 |
3. 角色和菜单关联表 (sys_role_menu)
| 字段名 | 数据类型 | 长度 | 是否为空 | 默认值 | 说明 |
|---|---|---|---|---|---|
| role_id | bigint | - | NOT NULL | - | 角色 ID,联合主键 |
| menu_id | bigint | - | NOT NULL | - | 菜单 ID,联合主键 |
4.2.3 日志表
1. 系统访问记录表 (sys_login_log)
| 字段名 | 数据类型 | 长度 | 是否为空 | 默认值 | 说明 |
|---|---|---|---|---|---|
| login_id | bigint | - | NOT NULL | AUTO_INCREMENT | 访问 ID,主键 |
| user_name | varchar | 50 | NULL | '' | 用户账号 |
| ipaddr | varchar | 128 | NULL | '' | 登录 IP 地址 |
| login_location | varchar | 255 | NULL | '' | 登录地点 |
| browser | varchar | 50 | NULL | '' | 浏览器类型 |
| os | varchar | 50 | NULL | '' | 操作系统 |
| status | varchar | 1 | NULL | '0' | 登录状态(0 成功 1 失败) |
| msg | varchar | 255 | NULL | '' | 提示消息 |
| login_time | datetime | - | NULL | NULL | 访问时间 |
2. 操作日志记录表 (sys_oper_log)
| 字段名 | 数据类型 | 长度 | 是否为空 | 默认值 | 说明 |
|---|---|---|---|---|---|
| oper_id | bigint | - | NOT NULL | AUTO_INCREMENT | 日志主键 |
| title | varchar | 50 | NULL | '' | 模块标题 |
| business_type | int | - | NULL | 0 | 业务类型(0 其它 1 新增 2 修改 3 删除) |
| method | varchar | 100 | NULL | '' | 方法名称 |
| request_method | varchar | 10 | NULL | '' | 请求方式 |
| operator_type | int | - | NULL | 0 | 操作类别(0 其它 1 后台用户 2 手机端用户) |
| oper_name | varchar | 50 | NULL | '' | 操作人员 |
| dept_name | varchar | 50 | NULL | '' | 部门名称 |
| oper_url | varchar | 255 | NULL | '' | 请求 URL |
| oper_ip | varchar | 128 | NULL | '' | 主机地址 |
| oper_location | varchar | 255 | NULL | '' | 操作地点 |
| oper_param | varchar | 2000 | NULL | '' | 请求参数 |
| json_result | varchar | 2000 | NULL | '' | 返回参数 |
| status | int | - | NULL | 0 | 操作状态(0 正常 1 异常) |
| error_msg | varchar | 2000 | NULL | '' | 错误消息 |
| oper_time | datetime | - | NULL | NULL | 操作时间 |
| cost_time | bigint | - | NULL | 0 | 消耗时间 |
4.2.4 监控表
1. 监控服务器表 (monitor_server)
| 字段名 | 数据类型 | 长度 | 是否为空 | 默认值 | 说明 |
|---|---|---|---|---|---|
| server_id | bigint | - | NOT NULL | AUTO_INCREMENT | 监控 ID,主键 |
| server_name | varchar | 100 | NOT NULL | - | 服务器名称 |
| server_ip | varchar | 50 | NOT NULL | - | 服务器 IP 地址 |
| server_port | int | - | NULL | NULL | 服务器端口 |
| os_name | varchar | 100 | NULL | NULL | 操作系统名称 |
| os_version | varchar | 100 | NULL | NULL | 操作系统版本 |
| cpu_info | varchar | 500 | NULL | NULL | 内核信息 |
| memory_size | bigint | - | NULL | NULL | 内存大小(GB) |
| disk_size | int | - | NULL | NULL | 磁盘总容量(GB) |
| connect_user | varchar | 100 | NULL | NULL | 连接用户 |
| connect_password | varchar | 255 | NULL | NULL | 连接密码 |
| thread_count | int | - | NULL | NULL | 线程数量 |
| status | char | 1 | NULL | '0' | 状态(0 正常 1 异常) |
| create_time | datetime | - | NULL | CURRENT_TIMESTAMP | 创建时间 |
| update_time | datetime | - | NULL | CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
2. 监控任务表 (monitor_task)
| 字段名 | 数据类型 | 长度 | 是否为空 | 默认值 | 说明 |
|---|---|---|---|---|---|
| task_id | bigint | - | NOT NULL | AUTO_INCREMENT | 任务 ID,主键 |
| task_name | varchar | 100 | NOT NULL | - | 任务名称 |
| task_type | varchar | 50 | NOT NULL | - | 任务类型 |
| cron_expression | varchar | 100 | NULL | NULL | Cron 表达式 |
| task_class | varchar | 200 | NULL | NULL | 任务类名 |
| task_params | text | - | NULL | NULL | 任务参数 |
| status | char | 1 | NULL | '0' | 状态(0 停止 1 运行) |
| last_execute_time | datetime | - | NULL | NULL | 最后执行时间 |
| next_execute_time | datetime | - | NULL | NULL | 下次执行时间 |
| execute_count | bigint | - | NULL | 0 | 执行次数 |
| success_count | bigint | - | NULL | 0 | 成功次数 |
| fail_count | bigint | - | NULL | 0 | 失败次数 |
| remark | varchar | 500 | NULL | NULL | 备注 |
| create_time | datetime | - | NULL | CURRENT_TIMESTAMP | 创建时间 |
| update_time | datetime | - | NULL | CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
4.2.5 业务表
1. 订单表 (car_order)
| 字段名 | 数据类型 | 长度 | 是否为空 | 默认值 | 说明 |
|---|---|---|---|---|---|
| order_id | bigint | - | NOT NULL | AUTO_INCREMENT | 订单 ID,主键 |
| order_no | varchar | 32 | NOT NULL | - | 订单编号 |
| customer_id | bigint | - | NOT NULL | - | 客户 ID |
| agent_id | bigint | - | NULL | NULL | 代理商 ID |
| service_type_id | bigint | - | NOT NULL | - | 服务类型 ID |
| vehicle_id | bigint | - | NOT NULL | - | 车辆 ID |
| order_status | varchar | 20 | NOT NULL | 'PENDING' | 订单状态 |
| order_amount | decimal | 10,2 | NOT NULL | 0.00 | 订单金额 |
| actual_amount | decimal | 10,2 | NULL | NULL | 实际支付金额 |
| discount_amount | decimal | 10,2 | NULL | 0.00 | 优惠金额 |
| commission_rate | decimal | 5,2 | NULL | 0.00 | 佣金比例 |
| commission_amount | decimal | 10,2 | NULL | 0.00 | 佣金金额 |
| payment_method | varchar | 20 | NULL | NULL | 支付方式 |
| payment_status | varchar | 20 | NOT NULL | 'UNPAID' | 支付状态 |
| payment_time | datetime | - | NULL | NULL | 支付时间 |
| expected_time | datetime | - | NULL | NULL | 预计完成时间 |
| actual_time | datetime | - | NULL | NULL | 实际完成时间 |
| remark | text | - | NULL | NULL | 备注 |
| create_by | varchar | 64 | NULL | '' | 创建者 |
| create_time | datetime | - | NULL | CURRENT_TIMESTAMP | 创建时间 |
| update_by | varchar | 64 | NULL | '' | 更新者 |
| update_time | datetime | - | NULL | CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
2. 车辆信息表 (car_vehicle)
| 字段名 | 数据类型 | 长度 | 是否为空 | 默认值 | 说明 |
|---|---|---|---|---|---|
| vehicle_id | bigint | - | NOT NULL | AUTO_INCREMENT | 车辆 ID,主键 |
| customer_id | bigint | - | NOT NULL | - | 客户 ID |
| brand | varchar | 50 | NOT NULL | - | 品牌 |
| model | varchar | 50 | NOT NULL | - | 型号 |
| plate_number | varchar | 20 | NULL | NULL | 车牌号 |
| vin_code | varchar | 17 | NULL | NULL | VIN 码 |
| engine_number | varchar | 20 | NULL | NULL | 发动机号 |
| color | varchar | 20 | NULL | NULL | 颜色 |
| year | int | - | NULL | NULL | 年份 |
| mileage | decimal | 10,2 | NULL | NULL | 里程数 |
| fuel_type | varchar | 20 | NULL | NULL | 燃料类型 |
| transmission | varchar | 20 | NULL | NULL | 变速箱类型 |
| owner_name | varchar | 50 | NOT NULL | - | 车主姓名 |
| owner_phone | varchar | 11 | NOT NULL | - | 车主手机号 |
| owner_id_card | varchar | 18 | NULL | NULL | 车主身份证号 |
| registration_date | date | - | NULL | NULL | 注册日期 |
| insurance_expiry | date | - | NULL | NULL | 保险到期日 |
| status | varchar | 20 | NOT NULL | 'ACTIVE' | 状态 |
| remark | text | - | NULL | NULL | 备注 |
| create_by | varchar | 64 | NULL | '' | 创建者 |
| create_time | datetime | - | NULL | CURRENT_TIMESTAMP | 创建时间 |
| update_by | varchar | 64 | NULL | '' | 更新者 |
| update_time | datetime | - | NULL | CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
3. 服务类型表 (car_service_type)
| 字段名 | 数据类型 | 长度 | 是否为空 | 默认值 | 说明 |
|---|---|---|---|---|---|
| service_id | bigint | - | NOT NULL | AUTO_INCREMENT | 服务 ID,主键 |
| service_code | varchar | 20 | NOT NULL | - | 服务代码 |
| service_name | varchar | 100 | NOT NULL | - | 服务名称 |
| service_desc | text | - | NULL | NULL | 服务描述 |
| base_price | decimal | 10,2 | NOT NULL | 0.00 | 基础价格 |
| min_price | decimal | 10,2 | NULL | NULL | 最低价格 |
| max_price | decimal | 10,2 | NULL | NULL | 最高价格 |
| commission_rate | decimal | 5,2 | NULL | 0.00 | 佣金比例 |
| processing_time | int | - | NULL | NULL | 处理时间(天) |
| required_materials | text | - | NULL | NULL | 所需材料 |
| service_category | varchar | 50 | NOT NULL | - | 服务分类 |
| status | varchar | 20 | NOT NULL | 'ACTIVE' | 状态 |
| sort_order | int | - | NULL | 0 | 排序顺序 |
| create_by | varchar | 64 | NULL | '' | 创建者 |
| create_time | datetime | - | NULL | CURRENT_TIMESTAMP | 创建时间 |
| update_by | varchar | 64 | NULL | '' | 更新者 |
| update_time | datetime | - | NULL | CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
4. 客户信息表 (car_customer)
| 字段名 | 数据类型 | 长度 | 是否为空 | 默认值 | 说明 |
|---|---|---|---|---|---|
| customer_id | bigint | - | NOT NULL | AUTO_INCREMENT | 客户 ID,主键 |
| customer_name | varchar | 50 | NOT NULL | - | 客户姓名 |
| phone | varchar | 11 | NOT NULL | - | 手机号 |
| varchar | 100 | NULL | NULL | 邮箱 | |
| id_card | varchar | 18 | NULL | NULL | 身份证号 |
| address | varchar | 200 | NULL | NULL | 地址 |
| gender | varchar | 10 | NULL | NULL | 性别 |
| birthday | date | - | NULL | NULL | 生日 |
| points_balance | int | - | NULL | 0 | 积分余额 |
| total_points | int | - | NULL | 0 | 累计积分 |
| member_level | varchar | 20 | NULL | 'REGULAR' | 会员等级 |
| verification_status | varchar | 20 | NOT NULL | 'UNVERIFIED' | 认证状态 |
| status | varchar | 20 | NOT NULL | 'ACTIVE' | 状态 |
| remark | text | - | NULL | NULL | 备注 |
| create_by | varchar | 64 | NULL | '' | 创建者 |
| create_time | datetime | - | NULL | CURRENT_TIMESTAMP | 创建时间 |
| update_by | varchar | 64 | NULL | '' | 更新者 |
| update_time | datetime | - | NULL | CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
5. 代理商表 (car_agent)
| 字段名 | 数据类型 | 长度 | 是否为空 | 默认值 | 说明 |
|---|---|---|---|---|---|
| agent_id | bigint | - | NOT NULL | AUTO_INCREMENT | 代理商 ID,主键 |
| agent_code | varchar | 20 | NOT NULL | - | 代理商编码 |
| agent_name | varchar | 100 | NOT NULL | - | 代理商名称 |
| contact_person | varchar | 50 | NOT NULL | - | 联系人 |
| contact_phone | varchar | 11 | NOT NULL | - | 联系电话 |
| contact_email | varchar | 100 | NULL | NULL | 联系邮箱 |
| address | varchar | 200 | NULL | NULL | 地址 |
| business_license | varchar | 50 | NULL | NULL | 营业执照号 |
| tax_number | varchar | 50 | NULL | NULL | 税务登记号 |
| bank_name | varchar | 100 | NULL | NULL | 开户银行 |
| bank_account | varchar | 50 | NULL | NULL | 银行账号 |
| commission_rate | decimal | 5,2 | NULL | 0.00 | 佣金比例 |
| service_area | varchar | 200 | NULL | NULL | 服务区域 |
| service_types | varchar | 500 | NULL | NULL | 服务类型 |
| status | varchar | 20 | NOT NULL | 'ACTIVE' | 状态 |
| verification_status | varchar | 20 | NOT NULL | 'UNVERIFIED' | 认证状态 |
| remark | text | - | NULL | NULL | 备注 |
| create_by | varchar | 64 | NULL | '' | 创建者 |
| create_time | datetime | - | NULL | CURRENT_TIMESTAMP | 创建时间 |
| update_by | varchar | 64 | NULL | '' | 更新者 |
| update_time | datetime | - | NULL | CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
6. 检测站表 (car_inspection_station)
| 字段名 | 数据类型 | 长度 | 是否为空 | 默认值 | 说明 |
|---|---|---|---|---|---|
| station_id | bigint | - | NOT NULL | AUTO_INCREMENT | 检测站 ID,主键 |
| station_code | varchar | 20 | NOT NULL | - | 检测站编码 |
| station_name | varchar | 100 | NOT NULL | - | 检测站名称 |
| contact_person | varchar | 50 | NOT NULL | - | 联系人 |
| contact_phone | varchar | 11 | NOT NULL | - | 联系电话 |
| address | varchar | 200 | NOT NULL | - | 地址 |
| business_hours | varchar | 100 | NULL | NULL | 营业时间 |
| service_types | varchar | 500 | NULL | NULL | 服务类型 |
| capacity | int | - | NULL | NULL | 日处理能力 |
| rating | decimal | 3,2 | NULL | 0.00 | 评分 |
| status | varchar | 20 | NOT NULL | 'ACTIVE' | 状态 |
| remark | text | - | NULL | NULL | 备注 |
| create_by | varchar | 64 | NULL | '' | 创建者 |
| create_time | datetime | - | NULL | CURRENT_TIMESTAMP | 创建时间 |
| update_by | varchar | 64 | NULL | '' | 更新者 |
| update_time | datetime | - | NULL | CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
7. 代驾人员表 (car_driver)
| 字段名 | 数据类型 | 长度 | 是否为空 | 默认值 | 说明 |
|---|---|---|---|---|---|
| driver_id | bigint | - | NOT NULL | AUTO_INCREMENT | 代驾人员 ID,主键 |
| driver_code | varchar | 20 | NOT NULL | - | 代驾人员编码 |
| driver_name | varchar | 50 | NOT NULL | - | 代驾人员姓名 |
| phone | varchar | 11 | NOT NULL | - | 联系电话 |
| id_card | varchar | 18 | NOT NULL | - | 身份证号 |
| license_number | varchar | 20 | NOT NULL | - | 驾驶证号 |
| license_type | varchar | 20 | NOT NULL | - | 驾驶证类型 |
| license_expiry | date | - | NULL | NULL | 驾驶证到期日 |
| service_area | varchar | 200 | NULL | NULL | 服务区域 |
| hourly_rate | decimal | 8,2 | NOT NULL | 0.00 | 小时费率 |
| rating | decimal | 3,2 | NULL | 0.00 | 评分 |
| total_orders | int | - | NULL | 0 | 总订单数 |
| completed_orders | int | - | NULL | 0 | 完成订单数 |
| status | varchar | 20 | NOT NULL | 'ACTIVE' | 状态 |
| verification_status | varchar | 20 | NOT NULL | 'UNVERIFIED' | 认证状态 |
| remark | text | - | NULL | NULL | 备注 |
| create_by | varchar | 64 | NULL | '' | 创建者 |
| create_time | datetime | - | NULL | CURRENT_TIMESTAMP | 创建时间 |
| update_by | varchar | 64 | NULL | '' | 更新者 |
| update_time | datetime | - | NULL | CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
8. 代驾订单表 (car_driver_order)
| 字段名 | 数据类型 | 长度 | 是否为空 | 默认值 | 说明 |
|---|---|---|---|---|---|
| driver_order_id | bigint | - | NOT NULL | AUTO_INCREMENT | 代驾订单 ID,主键 |
| order_id | bigint | - | NOT NULL | - | 关联订单 ID |
| driver_id | bigint | - | NOT NULL | - | 代驾人员 ID |
| pickup_location | varchar | 200 | NOT NULL | - | 接车地点 |
| dropoff_location | varchar | 200 | NOT NULL | - | 送车地点 |
| pickup_time | datetime | - | NULL | NULL | 接车时间 |
| dropoff_time | datetime | - | NULL | NULL | 送车时间 |
| service_hours | decimal | 5,2 | NULL | NULL | 服务时长(小时) |
| hourly_rate | decimal | 8,2 | NOT NULL | 0.00 | 小时费率 |
| total_amount | decimal | 10,2 | NOT NULL | 0.00 | 总金额 |
| order_status | varchar | 20 | NOT NULL | 'PENDING' | 订单状态 |
| remark | text | - | NULL | NULL | 备注 |
| create_by | varchar | 64 | NULL | '' | 创建者 |
| create_time | datetime | - | NULL | CURRENT_TIMESTAMP | 创建时间 |
| update_by | varchar | 64 | NULL | '' | 更新者 |
| update_time | datetime | - | NULL | CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
9. 支付记录表 (car_payment_record)
| 字段名 | 数据类型 | 长度 | 是否为空 | 默认值 | 说明 |
|---|---|---|---|---|---|
| payment_id | bigint | - | NOT NULL | AUTO_INCREMENT | 支付记录 ID,主键 |
| order_id | bigint | - | NOT NULL | - | 订单 ID |
| payment_no | varchar | 32 | NOT NULL | - | 支付单号 |
| payment_method | varchar | 20 | NOT NULL | - | 支付方式 |
| payment_amount | decimal | 10,2 | NOT NULL | 0.00 | 支付金额 |
| payment_status | varchar | 20 | NOT NULL | 'PENDING' | 支付状态 |
| payment_time | datetime | - | NULL | NULL | 支付时间 |
| third_party_no | varchar | 50 | NULL | NULL | 第三方支付单号 |
| refund_amount | decimal | 10,2 | NULL | 0.00 | 退款金额 |
| refund_time | datetime | - | NULL | NULL | 退款时间 |
| remark | text | - | NULL | NULL | 备注 |
| create_by | varchar | 64 | NULL | '' | 创建者 |
| create_time | datetime | - | NULL | CURRENT_TIMESTAMP | 创建时间 |
| update_by | varchar | 64 | NULL | '' | 更新者 |
| update_time | datetime | - | NULL | CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
10. 财务统计表 (car_finance_statistics)
| 字段名 | 数据类型 | 长度 | 是否为空 | 默认值 | 说明 |
|---|---|---|---|---|---|
| stat_id | bigint | - | NOT NULL | AUTO_INCREMENT | 统计 ID,主键 |
| stat_date | date | - | NOT NULL | - | 统计日期 |
| total_revenue | decimal | 12,2 | NOT NULL | 0.00 | 总收入 |
| total_expense | decimal | 12,2 | NOT NULL | 0.00 | 总支出 |
| net_profit | decimal | 12,2 | NOT NULL | 0.00 | 净利润 |
| order_count | int | - | NOT NULL | 0 | 订单数量 |
| completed_orders | int | - | NOT NULL | 0 | 完成订单数 |
| cancelled_orders | int | - | NOT NULL | 0 | 取消订单数 |
| commission_paid | decimal | 12,2 | NOT NULL | 0.00 | 已付佣金 |
| commission_pending | decimal | 12,2 | NOT NULL | 0.00 | 待付佣金 |
| stat_type | varchar | 20 | NOT NULL | 'DAILY' | 统计类型 |
| remark | text | - | NULL | NULL | 备注 |
| create_by | varchar | 64 | NULL | '' | 创建者 |
| create_time | datetime | - | NULL | CURRENT_TIMESTAMP | 创建时间 |
| update_by | varchar | 64 | NULL | '' | 更新者 |
| update_time | datetime | - | NULL | CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
11. 通知记录表 (car_notification_record)
| 字段名 | 数据类型 | 长度 | 是否为空 | 默认值 | 说明 |
|---|---|---|---|---|---|
| notification_id | bigint | - | NOT NULL | AUTO_INCREMENT | 通知记录 ID,主键 |
| recipient_id | bigint | NOT NULL | - | - | 接收者 ID |
| recipient_type | varchar | 20 | NOT NULL | - | 接收者类型 |
| notification_type | varchar | 20 | NOT NULL | - | 通知类型 |
| title | varchar | 100 | NOT NULL | - | 通知标题 |
| content | text | - | NOT NULL | - | 通知内容 |
| send_method | varchar | 20 | NOT NULL | - | 发送方式 |
| send_status | varchar | 20 | NOT NULL | 'PENDING' | 发送状态 |
| send_time | datetime | - | NULL | NULL | 发送时间 |
| read_status | varchar | 20 | NOT NULL | 'UNREAD' | 阅读状态 |
| read_time | datetime | - | NULL | NULL | 阅读时间 |
| remark | text | - | NULL | NULL | 备注 |
| create_by | varchar | 64 | NULL | '' | 创建者 |
| create_time | datetime | - | NULL | CURRENT_TIMESTAMP | 创建时间 |
| update_by | varchar | 64 | NULL | '' | 更新者 |
| update_time | datetime | - | NULL | CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
12. 积分记录表 (car_points_record)
| 字段名 | 数据类型 | 长度 | 是否为空 | 默认值 | 说明 |
|---|---|---|---|---|---|
| points_id | bigint | - | NOT NULL | AUTO_INCREMENT | 积分记录 ID,主键 |
| customer_id | bigint | - | NOT NULL | - | 客户 ID |
| order_id | bigint | - | NULL | NULL | 订单 ID |
| points_type | varchar | 20 | NOT NULL | - | 积分类型 |
| points_amount | int | - | NOT NULL | 0 | 积分数量 |
| balance_before | int | - | NOT NULL | 0 | 变动前余额 |
| balance_after | int | - | NOT NULL | 0 | 变动后余额 |
| expire_date | date | - | NULL | NULL | 过期日期 |
| status | varchar | 20 | NOT NULL | 'ACTIVE' | 状态 |
| remark | text | - | NULL | NULL | 备注 |
| create_by | varchar | 64 | NULL | '' | 创建者 |
| create_time | datetime | - | NULL | CURRENT_TIMESTAMP | 创建时间 |
| update_by | varchar | 64 | NULL | '' | 更新者 |
| update_time | datetime | - | NULL | CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
13. 评价记录表 (car_evaluation_record)
| 字段名 | 数据类型 | 长度 | 是否为空 | 默认值 | 说明 |
|---|---|---|---|---|---|
| evaluation_id | bigint | - | NOT NULL | AUTO_INCREMENT | 评价记录 ID,主键 |
| order_id | bigint | - | NOT NULL | - | 订单 ID |
| customer_id | bigint | - | NOT NULL | - | 客户 ID |
| service_rating | int | - | NOT NULL | 5 | 服务评分 |
| quality_rating | int | - | NOT NULL | 5 | 质量评分 |
| speed_rating | int | - | NOT NULL | 5 | 速度评分 |
| overall_rating | decimal | 3,2 | NOT NULL | 5.00 | 综合评分 |
| comment | text | - | NULL | NULL | 评价内容 |
| reply_content | text | - | NULL | NULL | 回复内容 |
| reply_time | datetime | - | NULL | NULL | 回复时间 |
| status | varchar | 20 | NOT NULL | 'ACTIVE' | 状态 |
| remark | text | - | NULL | NULL | 备注 |
| create_by | varchar | 64 | NULL | '' | 创建者 |
| create_time | datetime | - | NULL | CURRENT_TIMESTAMP | 创建时间 |
| update_by | varchar | 64 | NULL | '' | 更新者 |
| update_time | datetime | - | NULL | CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
14. 文件上传表 (car_file_upload)
| 字段名 | 数据类型 | 长度 | 是否为空 | 默认值 | 说明 |
|---|---|---|---|---|---|
| file_id | bigint | - | NOT NULL | AUTO_INCREMENT | 文件 ID,主键 |
| file_name | varchar | 200 | NOT NULL | - | 文件名 |
| original_name | varchar | 200 | NOT NULL | - | 原始文件名 |
| file_path | varchar | 500 | NOT NULL | - | 文件路径 |
| file_size | bigint | - | NOT NULL | 0 | 文件大小(字节) |
| file_type | varchar | 50 | NOT NULL | - | 文件类型 |
| mime_type | varchar | 100 | NULL | NULL | MIME 类型 |
| business_type | varchar | 50 | NOT NULL | - | 业务类型 |
| business_id | bigint | - | NULL | NULL | 业务 ID |
| upload_user_id | bigint | - | NOT NULL | - | 上传用户 ID |
| download_count | int | - | NULL | 0 | 下载次数 |
| status | varchar | 20 | NOT NULL | 'ACTIVE' | 状态 |
| remark | text | - | NULL | NULL | 备注 |
| create_by | varchar | 64 | NULL | '' | 创建者 |
| create_time | datetime | - | NULL | CURRENT_TIMESTAMP | 创建时间 |
| update_by | varchar | 64 | NULL | '' | 更新者 |
| update_time | datetime | - | NULL | CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
15. 操作记录表 (car_operation_log)
| 字段名 | 数据类型 | 长度 | 是否为空 | 默认值 | 说明 |
|---|---|---|---|---|---|
| log_id | bigint | - | NOT NULL | AUTO_INCREMENT | 日志 ID,主键 |
| business_type | varchar | 50 | NOT NULL | - | 业务类型 |
| business_id | bigint | - | NOT NULL | - | 业务 ID |
| operation_type | varchar | 20 | NOT NULL | - | 操作类型 |
| operation_desc | varchar | 200 | NOT NULL | - | 操作描述 |
| operator_id | bigint | - | NOT NULL | - | 操作人 ID |
| operator_name | varchar | 50 | NOT NULL | - | 操作人姓名 |
| operator_ip | varchar | 50 | NULL | NULL | 操作人 IP |
| before_data | text | - | NULL | NULL | 操作前数据 |
| after_data | text | - | NULL | NULL | 操作后数据 |
| operation_time | datetime | - | NOT NULL | CURRENT_TIMESTAMP | 操作时间 |
| remark | text | - | NULL | NULL | 备注 |
| create_by | varchar | 64 | NULL | '' | 创建者 |
| create_time | datetime | - | NULL | CURRENT_TIMESTAMP | 创建时间 |
| update_by | varchar | 64 | NULL | '' | 更新者 |
| update_time | datetime | - | NULL | CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
这些业务表的具体结构将在后续版本中详细补充。
4.3 数据关系
4.3.1 主要关系
- 用户-角色关系: 多对多关系,通过
sys_user_role关联表实现 - 用户-部门关系: 多对一关系,一个部门可以有多个用户
- 用户-岗位关系: 多对多关系,通过
sys_user_post关联表实现 - 角色-菜单关系: 多对多关系,通过
sys_role_menu关联表实现 - 部门层级关系: 自关联关系,通过
parent_id字段实现树形结构 - 菜单层级关系: 自关联关系,通过
parent_id字段实现树形结构 - 字典类型-字典数据关系: 一对多关系,一个字典类型可以有多个字典数据
- 订单-客户关系: 多对一关系,一个客户可以有多个订单
- 订单-代理商关系: 多对一关系,一个代理商可以有多个订单
- 订单-服务类型关系: 多对一关系,一个服务类型可以有多个订单
- 订单-车辆关系: 多对一关系,一个车辆可以有多个订单
- 订单-支付记录关系: 一对多关系,一个订单可以有多个支付记录
- 客户-车辆关系: 一对多关系,一个客户可以有多个车辆
- 客户-积分记录关系: 一对多关系,一个客户可以有多个积分记录
- 客户-评价记录关系: 一对多关系,一个客户可以有多个评价记录
- 代驾人员-代驾订单关系: 一对多关系,一个代驾人员可以有多个代驾订单
- 检测站-评价关系: 一对多关系,一个检测站可以有多个评价
- 财务统计-支出记录关系: 一对多关系,一个统计周期可以有多个支出记录
4.3.2 数据库 ER 图
4.3.3 索引设计
主键索引
- 所有表的主键字段都建立主键索引
唯一索引
sys_user.phone- 手机号唯一索引sys_user.account- 账号唯一索引car_order.order_no- 订单号唯一索引car_vehicle.plate_number- 车牌号唯一索引car_vehicle.vin_code- VIN 码唯一索引car_customer.phone- 客户手机号唯一索引car_customer.id_card- 客户身份证号唯一索引car_agent.agent_code- 代理商编码唯一索引car_driver.driver_code- 代驾人员编码唯一索引car_driver.phone- 代驾人员手机号唯一索引car_driver.id_card- 代驾人员身份证号唯一索引car_inspection_station.station_code- 检测站编码唯一索引car_payment_record.payment_no- 支付单号唯一索引
普通索引
sys_user.user_name- 用户姓名索引sys_user.create_time- 用户创建时间索引car_order.customer_id- 订单客户 ID 索引car_order.agent_id- 订单代理商 ID 索引car_order.order_status- 订单状态索引car_order.create_time- 订单创建时间索引car_vehicle.customer_id- 车辆客户 ID 索引car_vehicle.brand- 车辆品牌索引car_vehicle.model- 车辆型号索引car_customer.customer_name- 客户姓名索引car_customer.create_time- 客户创建时间索引car_agent.agent_name- 代理商名称索引car_driver.driver_name- 代驾人员姓名索引car_driver_order.driver_id- 代驾订单代驾人员 ID 索引car_payment_record.order_id- 支付记录订单 ID 索引car_payment_record.payment_status- 支付状态索引car_evaluation_record.order_id- 评价记录订单 ID 索引car_evaluation_record.customer_id- 评价记录客户 ID 索引
复合索引
sys_user.phone, sys_user.create_time- 手机号创建时间复合索引car_order.customer_id, car_order.create_time- 客户 ID 创建时间复合索引car_order.order_status, car_order.create_time- 订单状态创建时间复合索引car_payment_record.order_id, car_payment_record.payment_status- 订单 ID 支付状态复合索引
4.3.4 外键约束
系统表外键约束
sys_user.dept_id→sys_dept.dept_idsys_user_role.user_id→sys_user.user_idsys_user_role.role_id→sys_role.role_idsys_user_post.user_id→sys_user.user_idsys_user_post.post_id→sys_post.post_idsys_role_menu.role_id→sys_role.role_idsys_role_menu.menu_id→sys_menu.menu_idsys_dict_data.dict_type→sys_dict_type.dict_type
业务表外键约束
car_order.customer_id→car_customer.customer_idcar_order.agent_id→car_agent.agent_idcar_order.service_type_id→car_service_type.service_idcar_order.vehicle_id→car_vehicle.vehicle_idcar_vehicle.customer_id→car_customer.customer_idcar_driver_order.order_id→car_order.order_idcar_driver_order.driver_id→car_driver.driver_idcar_payment_record.order_id→car_order.order_idcar_points_record.customer_id→car_customer.customer_idcar_points_record.order_id→car_order.order_idcar_evaluation_record.order_id→car_order.order_idcar_evaluation_record.customer_id→car_customer.customer_idcar_notification_record.recipient_id→car_customer.customer_idcar_file_upload.upload_user_id→sys_user.user_idcar_operation_log.operator_id→sys_user.user_id
4.3.5 数据完整性约束
非空约束
- 所有主键字段
- 业务关键字段:订单号、客户姓名、手机号、车牌号等
- 金额字段:订单金额、支付金额等
- 状态字段:订单状态、支付状态等
检查约束
- 手机号格式:11 位数字
- 身份证号格式:18 位
- 车牌号格式:符合车牌号规则
- VIN 码格式:17 位字母数字组合
- 金额字段:大于等于 0
- 评分字段:1-5 分
- 状态字段:预定义状态值
默认值约束
- 创建时间:CURRENT_TIMESTAMP
- 更新时间:CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
- 状态字段:'ACTIVE'、'PENDING'等
- 金额字段:0.00
- 数量字段:0
- 评分字段:5.00
4.3.6 分区策略
按时间分区
car_order表按create_time字段按月分区car_payment_record表按payment_time字段按月分区car_evaluation_record表按create_time字段按月分区car_operation_log表按operation_time字段按月分区
按业务分区
car_vehicle表按brand字段分区car_order表按order_status字段分区car_payment_record表按payment_status字段分区
4.3.7 数据归档策略
归档条件
- 订单数据:完成超过 2 年的订单
- 支付记录:支付完成超过 3 年的记录
- 操作日志:超过 1 年的日志
- 评价记录:超过 2 年的评价
- 通知记录:超过 1 年的通知
归档方式
- 按时间范围批量归档
- 归档到历史表
- 保留必要的查询索引
- 定期清理归档数据
4.4 数据库性能优化
4.4.1 查询优化
1. 索引优化策略
- 为高频查询字段建立合适的索引
- 避免在索引字段上使用函数
- 合理使用复合索引,遵循最左前缀原则
- 定期分析索引使用情况,删除无用索引
2. SQL 优化
- 使用 EXPLAIN 分析查询执行计划
- 避免 SELECT *,只查询需要的字段
- 合理使用 LIMIT 分页
- 使用 JOIN 替代子查询
- 避免在 WHERE 子句中使用函数
3. 分页查询优化
-- 优化前
SELECT * FROM car_order ORDER BY create_time DESC LIMIT 10000, 20;
-- 优化后
SELECT * FROM car_order WHERE create_time < '2024-01-01'
ORDER BY create_time DESC LIMIT 20;
4.4.2 连接池配置
1. 连接池参数
# 初始连接数
spring.datasource.hikari.minimum-idle=5
# 最大连接数
spring.datasource.hikari.maximum-pool-size=20
# 连接超时时间
spring.datasource.hikari.connection-timeout=30000
# 空闲连接超时时间
spring.datasource.hikari.idle-timeout=600000
# 连接最大生命周期
spring.datasource.hikari.max-lifetime=1800000
2. 连接池监控
- 监控连接池使用情况
- 设置连接池告警阈值
- 定期清理无效连接
4.4.3 缓存策略
1. Redis 缓存配置
# Redis连接配置
spring.redis.host=localhost
spring.redis.port=6379
spring.redis.password=
spring.redis.database=0
# 连接池配置
spring.redis.lettuce.pool.max-active=8
spring.redis.lettuce.pool.max-idle=8
spring.redis.lettuce.pool.min-idle=0
2. 缓存策略
- 用户信息缓存:TTL 30 分钟
- 字典数据缓存:TTL 1 小时
- 菜单权限缓存:TTL 2 小时
- 订单状态缓存:TTL 5 分钟
- 统计数据缓存:TTL 1 小时
3. 缓存更新策略
- 写入时更新缓存
- 删除时清除缓存
- 定时刷新热点数据
4.4.4 读写分离
1. 主从配置
# 主库配置
spring.datasource.master.url=jdbc:mysql://master:3306/duke-boot
spring.datasource.master.username=root
spring.datasource.master.password=password
# 从库配置
spring.datasource.slave.url=jdbc:mysql://slave:3306/duke-boot
spring.datasource.slave.username=root
spring.datasource.slave.password=password
2. 读写分离规则
- 写操作:主库
- 读操作:从库
- 事务操作:主库
- 统计查询:从库
4.5 数据库备份策略
4.5.1 备份类型
1. 全量备份
- 频率:每日凌晨 2 点
- 保留时间:30 天
- 备份方式:mysqldump
- 压缩存储
2. 增量备份
- 频率:每小时
- 保留时间:7 天
- 备份方式:binlog
- 实时同步
3. 差异备份
- 频率:每周日
- 保留时间:4 周
- 备份方式:基于全量备份
- 压缩存储
4.5.2 备份脚本
1. 全量备份脚本
#!/bin/bash
# 全量备份脚本
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR="/backup/mysql"
DB_NAME="duke-boot"
USER="root"
PASSWORD="password"
# 创建备份目录
mkdir -p $BACKUP_DIR
# 执行备份
mysqldump -u$USER -p$PASSWORD --single-transaction --routines --triggers \
$DB_NAME > $BACKUP_DIR/full_backup_$DATE.sql
# 压缩备份文件
gzip $BACKUP_DIR/full_backup_$DATE.sql
# 删除30天前的备份
find $BACKUP_DIR -name "full_backup_*.sql.gz" -mtime +30 -delete
echo "Full backup completed: full_backup_$DATE.sql.gz"
2. 增量备份脚本
#!/bin/bash
# 增量备份脚本
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR="/backup/mysql/binlog"
BINLOG_DIR="/var/lib/mysql"
# 创建备份目录
mkdir -p $BACKUP_DIR
# 获取当前binlog文件
CURRENT_BINLOG=$(mysql -e "SHOW MASTER STATUS\G" | grep File | awk '{print $2}')
# 备份binlog文件
cp $BINLOG_DIR/$CURRENT_BINLOG $BACKUP_DIR/binlog_$DATE
# 压缩备份文件
gzip $BACKUP_DIR/binlog_$DATE
# 删除7天前的备份
find $BACKUP_DIR -name "binlog_*" -mtime +7 -delete
echo "Incremental backup completed: binlog_$DATE.gz"
4.5.3 恢复策略
1. 全量恢复
#!/bin/bash
# 全量恢复脚本
BACKUP_FILE=$1
DB_NAME="duke-boot"
USER="root"
PASSWORD="password"
if [ -z "$BACKUP_FILE" ]; then
echo "Usage: $0 <backup_file>"
exit 1
fi
# 解压备份文件
gunzip -c $BACKUP_FILE > /tmp/restore.sql
# 恢复数据库
mysql -u$USER -p$PASSWORD $DB_NAME < /tmp/restore.sql
# 清理临时文件
rm /tmp/restore.sql
echo "Database restored from: $BACKUP_FILE"
2. 增量恢复
#!/bin/bash
# 增量恢复脚本
BINLOG_FILE=$1
DB_NAME="duke-boot"
USER="root"
PASSWORD="password"
if [ -z "$BINLOG_FILE" ]; then
echo "Usage: $0 <binlog_file>"
exit 1
fi
# 解压binlog文件
gunzip -c $BINLOG_FILE > /tmp/restore.binlog
# 应用binlog
mysqlbinlog /tmp/restore.binlog | mysql -u$USER -p$PASSWORD
# 清理临时文件
rm /tmp/restore.binlog
echo "Incremental restore completed from: $BINLOG_FILE"
4.5.4 备份监控
1. 备份状态监控
-- 检查备份状态
SELECT
backup_type,
backup_time,
backup_size,
backup_status,
backup_duration
FROM backup_log
WHERE backup_time >= DATE_SUB(NOW(), INTERVAL 1 DAY)
ORDER BY backup_time DESC;
2. 备份告警
- 备份失败告警
- 备份文件大小异常告警
- 备份时间过长告警
- 磁盘空间不足告警
4.6 数据库安全
4.6.1 访问控制
1. 用户权限管理
-- 创建应用用户
CREATE USER 'app_user'@'%' IDENTIFIED BY 'strong_password';
-- 授予必要权限
GRANT SELECT, INSERT, UPDATE, DELETE ON duke-boot.* TO 'app_user'@'%';
-- 创建只读用户
CREATE USER 'readonly_user'@'%' IDENTIFIED BY 'readonly_password';
-- 授予只读权限
GRANT SELECT ON duke-boot.* TO 'readonly_user'@'%';
2. 网络访问控制
- 限制数据库访问 IP
- 使用 SSL 连接
- 配置防火墙规则
4.6.2 数据加密
1. 传输加密
# 启用SSL连接
spring.datasource.url=jdbc:mysql://localhost:3306/duke-boot?useSSL=true&requireSSL=true
2. 存储加密
- 敏感字段加密存储
- 使用 AES 加密算法
- 密钥安全管理
4.6.3 审计日志
1. 启用审计日志
-- 启用审计日志
SET GLOBAL audit_log = ON;
SET GLOBAL audit_log_file = '/var/log/mysql/audit.log';
2. 审计内容
- 用户登录记录
- 数据修改记录
- 权限变更记录
- 异常访问记录
4.7 数据库监控
4.7.1 性能监控
1. 关键指标
- 连接数
- 查询响应时间
- 慢查询数量
- 锁等待时间
- 缓存命中率
2. 监控脚本
-- 查看当前连接数
SHOW STATUS LIKE 'Threads_connected';
-- 查看慢查询
SHOW VARIABLES LIKE 'slow_query_log';
SHOW VARIABLES LIKE 'long_query_time';
-- 查看锁等待
SHOW ENGINE INNODB STATUS;
4.7.2 容量监控
1. 存储空间
- 数据库大小
- 表空间使用情况
- 索引大小
- 日志文件大小
2. 增长趋势
- 数据增长速率
- 备份文件大小
- 日志文件增长
4.7.3 告警配置
1. 告警阈值
- 连接数 > 80%
- 慢查询 > 10 个/分钟
- 锁等待 > 5 秒
- 磁盘使用率 > 85%
2. 告警方式
- 邮件通知
- 短信通知
- 钉钉/企业微信通知
- 系统日志记录
5. 系统配置
5.1 系统参数配置
系统参数配置包括系统基本配置、安全配置、性能配置等,为系统运行提供基础支持。
5.2 配置文件
系统配置文件包括 application.properties 和 application.yml,分别用于配置系统参数和环境变量。
5.3 配置管理
系统配置管理包括配置的增删改查、版本控制、动态刷新等功能,为系统配置的灵活管理提供支持。
单体架构配置管理特点:
- 集中配置: 所有配置集中在 application.yml 文件中管理
- 环境分离: 通过 Spring Profiles 实现开发、测试、生产环境配置分离
- 动态刷新: 支持配置热更新,无需重启应用
- 配置加密: 敏感配置支持加密存储
- 配置验证: 启动时验证配置项的有效性
- 配置监控: 监控配置变更和应用状态
6. 系统部署
6.1 部署环境
系统部署环境包括硬件环境、软件环境、网络环境等,为系统部署提供基础支持。
单体架构部署特点:
- 应用部署: 单个 Spring Boot 应用,包含所有业务模块
- 数据库: 统一使用 MySQL 数据库,所有业务数据集中存储
- 缓存: 使用 Redis 作为统一缓存,提升系统性能
- 负载均衡: 可通过 Nginx 实现多实例负载均衡
- 容器化: 使用 Docker 容器化部署,简化环境配置
- 监控: 统一监控应用性能、数据库性能、系统资源使用情况
6.2 部署流程
系统部署流程包括环境准备、应用部署、配置初始化、数据迁移等步骤,为系统部署提供详细指导。
单体架构部署流程:
- 环境准备: 准备服务器环境,安装 Java、MySQL、Redis 等基础软件
- 应用打包: 使用 Maven 打包 Spring Boot 应用为 JAR 文件
- 容器构建: 使用 Docker 构建应用镜像
- 数据库初始化: 创建数据库,执行初始化脚本
- 应用部署: 部署应用容器,配置环境变量
- 负载均衡: 配置 Nginx 负载均衡(如需要多实例)
- 监控配置: 配置应用监控、数据库监控、系统监控
- 功能测试: 验证系统功能正常
- 性能测试: 验证系统性能满足要求
6.3 部署工具
系统部署工具包括 Docker、Jenkins 等,为系统部署提供自动化支持。
7. 系统测试
7.1 测试环境
系统测试环境包括开发环境、测试环境、生产环境等,为系统测试提供多样化的测试场景。
7.2 测试流程
系统测试流程包括单元测试、集成测试、系统测试、性能测试等步骤,为系统测试提供全面覆盖。
7.3 测试工具
系统测试工具包括 JUnit、Mockito、Selenium、LoadRunner 等,为系统测试提供自动化支持。
8. 系统运维
8.1 监控告警
系统监控告警包括性能监控、容量监控、异常监控、日志监控等功能,为系统运维提供实时监控和告警支持。
8.2 日志管理
系统日志管理包括系统日志、操作日志、审计日志等,为系统运维提供详细的日志记录和查询功能。
8.3 备份恢复
系统备份恢复包括全量备份、增量备份、差异备份、备份监控等功能,为系统数据安全和快速恢复提供支持。
8.4 安全管理
系统安全管理包括用户权限管理、网络访问控制、数据加密、审计日志等功能,为系统安全提供全面保障。
9. 系统扩展
9.1 功能扩展
系统功能扩展包括新功能开发、现有功能优化、业务流程调整等,为系统功能升级提供支持。
单体架构功能扩展特点:
- 模块化开发: 在单体应用中按模块组织代码,便于功能扩展
- 插件化架构: 支持插件化扩展,新功能可作为插件集成
- API 版本管理: 通过 API 版本控制实现向后兼容
- 数据库扩展: 通过数据库设计支持新功能的数据存储
- 配置化扩展: 通过配置参数支持功能开关和参数调整
9.2 性能扩展
系统性能扩展包括数据库优化、缓存优化、读写分离、分页查询优化等,为系统性能提升提供支持。
单体架构性能扩展策略:
- 应用集群: 部署多个应用实例,通过负载均衡分发请求
- 数据库优化: 优化 SQL 查询、添加索引、分库分表
- 缓存策略: 使用 Redis 缓存热点数据,提升响应速度
- 异步处理: 使用消息队列处理耗时操作
- CDN 加速: 静态资源使用 CDN 加速
9.3 安全扩展
系统安全扩展包括访问控制、数据加密、审计日志、备份恢复等,为系统安全保障提供支持。
10. 系统维护
10.1 日常维护
系统日常维护包括系统监控、日志分析、性能优化、备份恢复等,为系统稳定运行提供支持。
单体架构维护特点:
- 统一监控: 监控单个应用的性能、资源使用、错误日志
- 日志集中: 所有模块的日志统一收集和分析
- 一键部署: 整个应用可以一键部署和回滚
- 问题定位: 问题定位相对简单,无需跨服务排查
- 版本管理: 统一的版本管理和发布流程
10.2 版本升级
系统版本升级包括新版本发布、旧版本升级、功能优化等,为系统功能升级提供支持。
单体架构版本升级策略:
- 全量升级: 整个应用统一升级,确保版本一致性
- 灰度发布: 通过负载均衡实现部分用户使用新版本
- 回滚机制: 快速回滚到上一个稳定版本
- 数据迁移: 数据库结构变更的统一迁移
- 兼容性测试: 确保新版本与现有数据的兼容性
10.3 故障处理
系统故障处理包括常见故障排查、应急响应、问题追踪等,为系统稳定运行提供支持。
11. 系统文档
11.1 用户手册
用户手册包括系统功能介绍、操作流程、常见问题解答等,为系统用户提供详细的使用指导。
11.2 开发文档
开发文档包括系统架构设计、模块设计、接口设计、数据库设计等,为系统开发人员提供详细的开发指导。
11.3 运维文档
运维文档包括系统部署、配置管理、监控告警、日志管理、备份恢复等,为系统运维人员提供详细的运维指导。
12. 系统评估
12.1 功能评估
系统功能评估包括系统功能覆盖率、用户体验、业务流程合理性等,为系统功能完善提供参考。
12.2 性能评估
系统性能评估包括系统响应时间、并发用户数、数据库性能等,为系统性能优化提供参考。
12.3 安全评估
系统安全评估包括系统安全性、数据安全性、访问控制等,为系统安全保障提供参考。
13. 系统迁移
13.1 迁移方案
系统迁移方案包括系统备份、数据迁移、应用部署等步骤,为系统迁移提供详细指导。
13.2 迁移工具
系统迁移工具包括 mysqldump、rsync、Ansible 等,为系统迁移提供自动化支持。
14. 系统备份
14.1 备份策略
系统备份策略包括全量备份、增量备份、差异备份、备份监控等,为系统数据安全和快速恢复提供支持。
14.2 备份工具
系统备份工具包括 mysqldump、rsync、tar 等,为系统备份提供自动化支持。
