feat(user-center): 新增收货地址管理功能
- 添加收货地址实体类、控制器、服务类和数据访问接口 - 实现收货地址创建、获取列表、获取详情、更新和删除功能- 集成JWT认证,确保操作的安全性 - 新增相关API文档
This commit is contained in:
121
docs/design/database/ai_service_db_design.md
Normal file
121
docs/design/database/ai_service_db_design.md
Normal file
@@ -0,0 +1,121 @@
|
||||
# AI服务数据库设计文档
|
||||
|
||||
## 1. 数据库环境说明
|
||||
|
||||
- 数据库名称: xlxumu_ai
|
||||
- 字符集: utf8mb4
|
||||
- 排序规则: utf8mb4_unicode_ci
|
||||
|
||||
## 2. 数据表设计
|
||||
|
||||
### 2.1 智能问答记录表 (ai_qa_records)
|
||||
|
||||
存储用户与AI的问答记录。
|
||||
|
||||
```sql
|
||||
CREATE TABLE `ai_qa_records` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
`user_id` BIGINT UNSIGNED NOT NULL COMMENT '用户ID',
|
||||
`question` TEXT NOT NULL COMMENT '用户问题',
|
||||
`answer` TEXT NOT NULL COMMENT 'AI回答',
|
||||
`model_version` VARCHAR(50) NOT NULL COMMENT '使用的模型版本',
|
||||
`processing_time` INT NOT NULL COMMENT '处理耗时(毫秒)',
|
||||
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_user_id` (`user_id`),
|
||||
KEY `idx_created_at` (`created_at`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='智能问答记录表';
|
||||
```
|
||||
|
||||
### 2.2 图像识别记录表 (image_recognition_records)
|
||||
|
||||
存储图像识别请求和结果。
|
||||
|
||||
```sql
|
||||
CREATE TABLE `image_recognition_records` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
`user_id` BIGINT UNSIGNED NOT NULL COMMENT '用户ID',
|
||||
`image_url` VARCHAR(500) NOT NULL COMMENT '图像URL',
|
||||
`recognition_type` VARCHAR(50) NOT NULL COMMENT '识别类型(病虫害识别/作物识别等)',
|
||||
`result` JSON NOT NULL COMMENT '识别结果(JSON格式)',
|
||||
`confidence` DECIMAL(5,4) NOT NULL COMMENT '置信度',
|
||||
`processing_time` INT NOT NULL COMMENT '处理耗时(毫秒)',
|
||||
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_user_id` (`user_id`),
|
||||
KEY `idx_recognition_type` (`recognition_type`),
|
||||
KEY `idx_created_at` (`created_at`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='图像识别记录表';
|
||||
```
|
||||
|
||||
### 2.3 数据分析任务表 (analysis_tasks)
|
||||
|
||||
存储数据分析任务信息。
|
||||
|
||||
```sql
|
||||
CREATE TABLE `analysis_tasks` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
`user_id` BIGINT UNSIGNED NOT NULL COMMENT '用户ID',
|
||||
`task_name` VARCHAR(200) NOT NULL COMMENT '任务名称',
|
||||
`task_type` VARCHAR(50) NOT NULL COMMENT '任务类型(产量预测/价格分析等)',
|
||||
`input_data` JSON NOT NULL COMMENT '输入数据(JSON格式)',
|
||||
`result` JSON COMMENT '分析结果(JSON格式)',
|
||||
`status` VARCHAR(20) NOT NULL DEFAULT 'PENDING' COMMENT '任务状态(PENDING/PROCESSING/COMPLETED/FAILED)',
|
||||
`processing_time` INT COMMENT '处理耗时(毫秒)',
|
||||
`error_message` TEXT COMMENT '错误信息',
|
||||
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_user_id` (`user_id`),
|
||||
KEY `idx_task_type` (`task_type`),
|
||||
KEY `idx_status` (`status`),
|
||||
KEY `idx_created_at` (`created_at`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='数据分析任务表';
|
||||
```
|
||||
|
||||
### 2.4 模型版本表 (model_versions)
|
||||
|
||||
存储AI模型版本信息。
|
||||
|
||||
```sql
|
||||
CREATE TABLE `model_versions` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
`model_name` VARCHAR(100) NOT NULL COMMENT '模型名称',
|
||||
`version` VARCHAR(50) NOT NULL COMMENT '版本号',
|
||||
`description` TEXT COMMENT '版本描述',
|
||||
`file_path` VARCHAR(500) NOT NULL COMMENT '模型文件路径',
|
||||
`accuracy` DECIMAL(5,4) COMMENT '模型准确率',
|
||||
`is_active` TINYINT(1) NOT NULL DEFAULT '0' COMMENT '是否为当前活跃版本',
|
||||
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_model_version` (`model_name`, `version`),
|
||||
KEY `idx_model_name` (`model_name`),
|
||||
KEY `idx_is_active` (`is_active`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='模型版本表';
|
||||
```
|
||||
|
||||
### 2.5 用户反馈表 (user_feedbacks)
|
||||
|
||||
存储用户对AI服务的反馈。
|
||||
|
||||
```sql
|
||||
CREATE TABLE `user_feedbacks` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
`user_id` BIGINT UNSIGNED NOT NULL COMMENT '用户ID',
|
||||
`service_type` VARCHAR(50) NOT NULL COMMENT '服务类型(QA/IMAGE_RECOGNITION/ANALYSIS)',
|
||||
`record_id` BIGINT UNSIGNED NOT NULL COMMENT '相关记录ID(问答记录ID/识别记录ID等)',
|
||||
`rating` TINYINT NOT NULL COMMENT '评分(1-5星)',
|
||||
`feedback` TEXT COMMENT '反馈内容',
|
||||
`is_helpful` TINYINT(1) NOT NULL COMMENT '是否有帮助',
|
||||
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_user_id` (`user_id`),
|
||||
KEY `idx_service_type` (`service_type`),
|
||||
KEY `idx_record_id` (`record_id`),
|
||||
KEY `idx_created_at` (`created_at`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户反馈表';
|
||||
```
|
||||
263
docs/design/database/data_platform_service_db_design.md
Normal file
263
docs/design/database/data_platform_service_db_design.md
Normal file
@@ -0,0 +1,263 @@
|
||||
# 数据平台服务数据库设计文档
|
||||
|
||||
## 1. 概述
|
||||
|
||||
本文档详细描述了数据平台服务(data-platform-service)的数据库设计,包括数据统计、报表生成、数据分析等核心业务数据表结构。
|
||||
|
||||
## 2. 数据库环境
|
||||
|
||||
- 数据库类型:MySQL 8.0
|
||||
- 字符集:utf8mb4
|
||||
- 排序规则:utf8mb4_unicode_ci
|
||||
- 数据库名:xlxumu_data
|
||||
|
||||
## 3. 表结构设计
|
||||
|
||||
### 3.1 数据统计表 (data_statistics)
|
||||
|
||||
| 字段名 | 类型 | 约束 | 描述 |
|
||||
|--------|------|------|------|
|
||||
| id | BIGINT | PRIMARY KEY, AUTO_INCREMENT | 统计记录ID |
|
||||
| stat_type | VARCHAR(50) | NOT NULL | 统计类型(USER_COUNT, PRODUCT_COUNT, ORDER_COUNT, REVENUE等) |
|
||||
| stat_value | DECIMAL(15,2) | NOT NULL | 统计值 |
|
||||
| stat_date | DATE | NOT NULL | 统计日期 |
|
||||
| dimension1 | VARCHAR(100) | | 维度1(如地区、品类等) |
|
||||
| dimension2 | VARCHAR(100) | | 维度2 |
|
||||
| created_at | DATETIME | NOT NULL, DEFAULT CURRENT_TIMESTAMP | 创建时间 |
|
||||
| updated_at | DATETIME | NOT NULL, DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
|
||||
|
||||
索引:
|
||||
- INDEX idx_stat_type (stat_type)
|
||||
- INDEX idx_stat_date (stat_date)
|
||||
- INDEX idx_dimension1 (dimension1)
|
||||
- INDEX idx_dimension2 (dimension2)
|
||||
|
||||
### 3.2 报表模板表 (report_templates)
|
||||
|
||||
| 字段名 | 类型 | 约束 | 描述 |
|
||||
|--------|------|------|------|
|
||||
| id | BIGINT | PRIMARY KEY, AUTO_INCREMENT | 模板ID |
|
||||
| name | VARCHAR(100) | NOT NULL | 报表名称 |
|
||||
| description | TEXT | | 报表描述 |
|
||||
| template_type | VARCHAR(50) | NOT NULL | 模板类型(DAILY, WEEKLY, MONTHLY, QUARTERLY, YEARLY) |
|
||||
| data_source | VARCHAR(100) | NOT NULL | 数据源(user_service, trade_service, finance_service等) |
|
||||
| query_sql | TEXT | NOT NULL | 查询SQL |
|
||||
| columns_config | JSON | | 列配置信息 |
|
||||
| status | VARCHAR(20) | NOT NULL, DEFAULT 'ACTIVE' | 模板状态(ACTIVE:启用, INACTIVE:停用) |
|
||||
| created_at | DATETIME | NOT NULL, DEFAULT CURRENT_TIMESTAMP | 创建时间 |
|
||||
| updated_at | DATETIME | NOT NULL, DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
|
||||
|
||||
索引:
|
||||
- INDEX idx_template_type (template_type)
|
||||
- INDEX idx_data_source (data_source)
|
||||
- INDEX idx_status (status)
|
||||
|
||||
### 3.3 报表生成记录表 (report_generations)
|
||||
|
||||
| 字段名 | 类型 | 约束 | 描述 |
|
||||
|--------|------|------|------|
|
||||
| id | BIGINT | PRIMARY KEY, AUTO_INCREMENT | 生成记录ID |
|
||||
| template_id | BIGINT | NOT NULL | 报表模板ID |
|
||||
| report_name | VARCHAR(200) | NOT NULL | 报表文件名 |
|
||||
| report_path | VARCHAR(500) | NOT NULL | 报表文件路径 |
|
||||
| report_format | VARCHAR(20) | NOT NULL | 报表格式(PDF, EXCEL, CSV) |
|
||||
| start_date | DATE | | 统计开始日期 |
|
||||
| end_date | DATE | | 统计结束日期 |
|
||||
| status | VARCHAR(20) | NOT NULL, DEFAULT 'GENERATING' | 生成状态(GENERATING:生成中, SUCCESS:成功, FAILED:失败) |
|
||||
| generated_at | DATETIME | | 生成完成时间 |
|
||||
| created_at | DATETIME | NOT NULL, DEFAULT CURRENT_TIMESTAMP | 创建时间 |
|
||||
| updated_at | DATETIME | NOT NULL, DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
|
||||
|
||||
索引:
|
||||
- INDEX idx_template_id (template_id)
|
||||
- INDEX idx_report_format (report_format)
|
||||
- INDEX idx_status (status)
|
||||
- INDEX idx_created_at (created_at)
|
||||
|
||||
### 3.4 数据分析任务表 (analysis_tasks)
|
||||
|
||||
| 字段名 | 类型 | 约束 | 描述 |
|
||||
|--------|------|------|------|
|
||||
| id | BIGINT | PRIMARY KEY, AUTO_INCREMENT | 任务ID |
|
||||
| name | VARCHAR(100) | NOT NULL | 任务名称 |
|
||||
| description | TEXT | | 任务描述 |
|
||||
| analysis_type | VARCHAR(50) | NOT NULL | 分析类型(TREND, CORRELATION, CLUSTER等) |
|
||||
| data_source | VARCHAR(100) | NOT NULL | 数据源 |
|
||||
| parameters | JSON | | 分析参数 |
|
||||
| result_data | JSON | | 分析结果数据 |
|
||||
| status | VARCHAR(20) | NOT NULL, DEFAULT 'PENDING' | 任务状态(PENDING:待处理, RUNNING:运行中, SUCCESS:成功, FAILED:失败) |
|
||||
| started_at | DATETIME | | 开始执行时间 |
|
||||
| completed_at | DATETIME | | 完成时间 |
|
||||
| created_at | DATETIME | NOT NULL, DEFAULT CURRENT_TIMESTAMP | 创建时间 |
|
||||
| updated_at | DATETIME | NOT NULL, DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
|
||||
|
||||
索引:
|
||||
- INDEX idx_analysis_type (analysis_type)
|
||||
- INDEX idx_data_source (data_source)
|
||||
- INDEX idx_status (status)
|
||||
- INDEX idx_created_at (created_at)
|
||||
|
||||
### 3.5 数据看板配置表 (dashboard_configs)
|
||||
|
||||
| 字段名 | 类型 | 约束 | 描述 |
|
||||
|--------|------|------|------|
|
||||
| id | BIGINT | PRIMARY KEY, AUTO_INCREMENT | 配置ID |
|
||||
| name | VARCHAR(100) | NOT NULL | 看板名称 |
|
||||
| description | TEXT | | 看板描述 |
|
||||
| layout_config | JSON | NOT NULL | 布局配置 |
|
||||
| widgets_config | JSON | NOT NULL | 组件配置 |
|
||||
| access_permissions | JSON | | 访问权限配置 |
|
||||
| status | VARCHAR(20) | NOT NULL, DEFAULT 'ACTIVE' | 配置状态(ACTIVE:启用, INACTIVE:停用) |
|
||||
| created_by | BIGINT | NOT NULL | 创建人用户ID |
|
||||
| updated_by | BIGINT | | 更新人用户ID |
|
||||
| created_at | DATETIME | NOT NULL, DEFAULT CURRENT_TIMESTAMP | 创建时间 |
|
||||
| updated_at | DATETIME | NOT NULL, DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
|
||||
|
||||
索引:
|
||||
- INDEX idx_created_by (created_by)
|
||||
- INDEX idx_status (status)
|
||||
- INDEX idx_created_at (created_at)
|
||||
|
||||
## 4. 表关系说明
|
||||
|
||||
1. 报表模板与报表生成记录是一对多关系
|
||||
2. 数据分析任务独立存在,结果存储在任务记录中
|
||||
3. 数据看板配置与用户通过创建人ID关联
|
||||
|
||||
## 5. 数据初始化
|
||||
|
||||
### 5.1 统计类型枚举值
|
||||
- USER_COUNT: 用户数量统计
|
||||
- PRODUCT_COUNT: 商品数量统计
|
||||
- ORDER_COUNT: 订单数量统计
|
||||
- REVENUE: 收入统计
|
||||
- LOAN_COUNT: 贷款申请数量统计
|
||||
- INSURANCE_COUNT: 保险投保数量统计
|
||||
|
||||
### 5.2 报表模板类型枚举值
|
||||
- DAILY: 日报
|
||||
- WEEKLY: 周报
|
||||
- MONTHLY: 月报
|
||||
- QUARTERLY: 季报
|
||||
- YEARLY: 年报
|
||||
|
||||
### 5.3 报表生成状态枚举值
|
||||
- GENERATING: 生成中
|
||||
- SUCCESS: 成功
|
||||
- FAILED: 失败
|
||||
|
||||
### 5.4 分析任务状态枚举值
|
||||
- PENDING: 待处理
|
||||
- RUNNING: 运行中
|
||||
- SUCCESS: 成功
|
||||
- FAILED: 失败
|
||||
|
||||
### 5.5 看板配置状态枚举值
|
||||
- ACTIVE: 启用
|
||||
- INACTIVE: 停用
|
||||
|
||||
## 6. SQL脚本
|
||||
|
||||
```sql
|
||||
-- 创建数据库
|
||||
CREATE DATABASE IF NOT EXISTS xlxumu_data
|
||||
CHARACTER SET utf8mb4
|
||||
COLLATE utf8mb4_unicode_ci;
|
||||
|
||||
USE xlxumu_data;
|
||||
|
||||
-- 数据统计表
|
||||
CREATE TABLE data_statistics (
|
||||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||||
stat_type VARCHAR(50) NOT NULL,
|
||||
stat_value DECIMAL(15,2) NOT NULL,
|
||||
stat_date DATE NOT NULL,
|
||||
dimension1 VARCHAR(100),
|
||||
dimension2 VARCHAR(100),
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
|
||||
INDEX idx_stat_type (stat_type),
|
||||
INDEX idx_stat_date (stat_date),
|
||||
INDEX idx_dimension1 (dimension1),
|
||||
INDEX idx_dimension2 (dimension2)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- 报表模板表
|
||||
CREATE TABLE report_templates (
|
||||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||||
name VARCHAR(100) NOT NULL,
|
||||
description TEXT,
|
||||
template_type VARCHAR(50) NOT NULL,
|
||||
data_source VARCHAR(100) NOT NULL,
|
||||
query_sql TEXT NOT NULL,
|
||||
columns_config JSON,
|
||||
status VARCHAR(20) NOT NULL DEFAULT 'ACTIVE',
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
|
||||
INDEX idx_template_type (template_type),
|
||||
INDEX idx_data_source (data_source),
|
||||
INDEX idx_status (status)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- 报表生成记录表
|
||||
CREATE TABLE report_generations (
|
||||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||||
template_id BIGINT NOT NULL,
|
||||
report_name VARCHAR(200) NOT NULL,
|
||||
report_path VARCHAR(500) NOT NULL,
|
||||
report_format VARCHAR(20) NOT NULL,
|
||||
start_date DATE,
|
||||
end_date DATE,
|
||||
status VARCHAR(20) NOT NULL DEFAULT 'GENERATING',
|
||||
generated_at DATETIME,
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
|
||||
INDEX idx_template_id (template_id),
|
||||
INDEX idx_report_format (report_format),
|
||||
INDEX idx_status (status),
|
||||
INDEX idx_created_at (created_at)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- 数据分析任务表
|
||||
CREATE TABLE analysis_tasks (
|
||||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||||
name VARCHAR(100) NOT NULL,
|
||||
description TEXT,
|
||||
analysis_type VARCHAR(50) NOT NULL,
|
||||
data_source VARCHAR(100) NOT NULL,
|
||||
parameters JSON,
|
||||
result_data JSON,
|
||||
status VARCHAR(20) NOT NULL DEFAULT 'PENDING',
|
||||
started_at DATETIME,
|
||||
completed_at DATETIME,
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
|
||||
INDEX idx_analysis_type (analysis_type),
|
||||
INDEX idx_data_source (data_source),
|
||||
INDEX idx_status (status),
|
||||
INDEX idx_created_at (created_at)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- 数据看板配置表
|
||||
CREATE TABLE dashboard_configs (
|
||||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||||
name VARCHAR(100) NOT NULL,
|
||||
description TEXT,
|
||||
layout_config JSON NOT NULL,
|
||||
widgets_config JSON NOT NULL,
|
||||
access_permissions JSON,
|
||||
status VARCHAR(20) NOT NULL DEFAULT 'ACTIVE',
|
||||
created_by BIGINT NOT NULL,
|
||||
updated_by BIGINT,
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
|
||||
INDEX idx_created_by (created_by),
|
||||
INDEX idx_status (status),
|
||||
INDEX idx_created_at (created_at)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
```
|
||||
157
docs/design/database/farming_service_db_design.md
Normal file
157
docs/design/database/farming_service_db_design.md
Normal file
@@ -0,0 +1,157 @@
|
||||
# 农业服务数据库设计文档
|
||||
|
||||
## 1. 数据库环境说明
|
||||
|
||||
- 数据库名称: xlxumu_farming
|
||||
- 字符集: utf8mb4
|
||||
- 排序规则: utf8mb4_unicode_ci
|
||||
|
||||
## 2. 数据表设计
|
||||
|
||||
### 2.1 农田信息表 (farmlands)
|
||||
|
||||
存储农田基本信息。
|
||||
|
||||
```sql
|
||||
CREATE TABLE `farmlands` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
`user_id` BIGINT UNSIGNED NOT NULL COMMENT '用户ID',
|
||||
`name` VARCHAR(100) NOT NULL COMMENT '农田名称',
|
||||
`location` VARCHAR(200) NOT NULL COMMENT '地理位置',
|
||||
`area` DECIMAL(10,2) NOT NULL COMMENT '面积(亩)',
|
||||
`crop_type` VARCHAR(50) NOT NULL COMMENT '作物类型',
|
||||
`planting_date` DATE COMMENT '种植日期',
|
||||
`status` VARCHAR(20) NOT NULL DEFAULT 'ACTIVE' COMMENT '状态(ACTIVE/INACTIVE)',
|
||||
`description` TEXT COMMENT '描述',
|
||||
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_user_id` (`user_id`),
|
||||
KEY `idx_crop_type` (`crop_type`),
|
||||
KEY `idx_status` (`status`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='农田信息表';
|
||||
```
|
||||
|
||||
### 2.2 农事活动记录表 (farming_activities)
|
||||
|
||||
存储农事活动记录。
|
||||
|
||||
```sql
|
||||
CREATE TABLE `farming_activities` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
`farmland_id` BIGINT UNSIGNED NOT NULL COMMENT '农田ID',
|
||||
`activity_type` VARCHAR(50) NOT NULL COMMENT '活动类型(播种/施肥/除草/收割等)',
|
||||
`activity_date` DATE NOT NULL COMMENT '活动日期',
|
||||
`description` TEXT COMMENT '活动描述',
|
||||
`cost` DECIMAL(10,2) COMMENT '费用',
|
||||
`operator` VARCHAR(50) COMMENT '操作人员',
|
||||
`images` JSON COMMENT '活动图片URL列表',
|
||||
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_farmland_id` (`farmland_id`),
|
||||
KEY `idx_activity_type` (`activity_type`),
|
||||
KEY `idx_activity_date` (`activity_date`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='农事活动记录表';
|
||||
```
|
||||
|
||||
### 2.3 作物生长记录表 (crop_growth_records)
|
||||
|
||||
存储作物生长情况记录。
|
||||
|
||||
```sql
|
||||
CREATE TABLE `crop_growth_records` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
`farmland_id` BIGINT UNSIGNED NOT NULL COMMENT '农田ID',
|
||||
`record_date` DATE NOT NULL COMMENT '记录日期',
|
||||
`growth_stage` VARCHAR(50) NOT NULL COMMENT '生长阶段',
|
||||
`height` DECIMAL(5,2) COMMENT '株高(cm)',
|
||||
`leaf_count` INT COMMENT '叶片数',
|
||||
`health_status` VARCHAR(50) COMMENT '健康状况',
|
||||
`notes` TEXT COMMENT '备注',
|
||||
`images` JSON COMMENT '图片URL列表',
|
||||
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_farmland_id` (`farmland_id`),
|
||||
KEY `idx_record_date` (`record_date`),
|
||||
KEY `idx_growth_stage` (`growth_stage`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='作物生长记录表';
|
||||
```
|
||||
|
||||
### 2.4 病虫害记录表 (pest_disease_records)
|
||||
|
||||
存储病虫害发生及防治记录。
|
||||
|
||||
```sql
|
||||
CREATE TABLE `pest_disease_records` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
`farmland_id` BIGINT UNSIGNED NOT NULL COMMENT '农田ID',
|
||||
`record_date` DATE NOT NULL COMMENT '记录日期',
|
||||
`type` VARCHAR(20) NOT NULL COMMENT '类型(病害/虫害)',
|
||||
`name` VARCHAR(100) NOT NULL COMMENT '病虫害名称',
|
||||
`severity` VARCHAR(20) NOT NULL COMMENT '严重程度(轻/中/重)',
|
||||
`affected_area` DECIMAL(5,2) COMMENT '受害面积(亩)',
|
||||
`control_method` TEXT COMMENT '防治方法',
|
||||
`control_date` DATE COMMENT '防治日期',
|
||||
`control_result` TEXT COMMENT '防治效果',
|
||||
`notes` TEXT COMMENT '备注',
|
||||
`images` JSON COMMENT '图片URL列表',
|
||||
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_farmland_id` (`farmland_id`),
|
||||
KEY `idx_record_date` (`record_date`),
|
||||
KEY `idx_type` (`type`),
|
||||
KEY `idx_name` (`name`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='病虫害记录表';
|
||||
```
|
||||
|
||||
### 2.5 农田环境数据表 (environmental_data)
|
||||
|
||||
存储农田环境监测数据。
|
||||
|
||||
```sql
|
||||
CREATE TABLE `environmental_data` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
`farmland_id` BIGINT UNSIGNED NOT NULL COMMENT '农田ID',
|
||||
`record_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录时间',
|
||||
`temperature` DECIMAL(5,2) COMMENT '温度(℃)',
|
||||
`humidity` DECIMAL(5,2) COMMENT '湿度(%)',
|
||||
`soil_moisture` DECIMAL(5,2) COMMENT '土壤湿度(%)',
|
||||
`ph_value` DECIMAL(4,2) COMMENT '土壤pH值',
|
||||
`nitrogen` DECIMAL(8,2) COMMENT '氮含量(mg/kg)',
|
||||
`phosphorus` DECIMAL(8,2) COMMENT '磷含量(mg/kg)',
|
||||
`potassium` DECIMAL(8,2) COMMENT '钾含量(mg/kg)',
|
||||
`notes` TEXT COMMENT '备注',
|
||||
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_farmland_id` (`farmland_id`),
|
||||
KEY `idx_record_time` (`record_time`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='农田环境数据表';
|
||||
```
|
||||
|
||||
### 2.6 收获记录表 (harvest_records)
|
||||
|
||||
存储农作物收获记录。
|
||||
|
||||
```sql
|
||||
CREATE TABLE `harvest_records` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
`farmland_id` BIGINT UNSIGNED NOT NULL COMMENT '农田ID',
|
||||
`harvest_date` DATE NOT NULL COMMENT '收获日期',
|
||||
`yield` DECIMAL(10,2) NOT NULL COMMENT '产量(公斤)',
|
||||
`quality` VARCHAR(50) COMMENT '质量等级',
|
||||
`storage_location` VARCHAR(200) COMMENT '存储位置',
|
||||
`selling_price` DECIMAL(10,2) COMMENT '销售价格(元/公斤)',
|
||||
`sold_quantity` DECIMAL(10,2) COMMENT '已售数量(公斤)',
|
||||
`notes` TEXT COMMENT '备注',
|
||||
`images` JSON COMMENT '图片URL列表',
|
||||
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_farmland_id` (`farmland_id`),
|
||||
KEY `idx_harvest_date` (`harvest_date`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='收获记录表';
|
||||
```
|
||||
321
docs/design/database/finance_service_db_design.md
Normal file
321
docs/design/database/finance_service_db_design.md
Normal file
@@ -0,0 +1,321 @@
|
||||
# 金融服务数据库设计文档
|
||||
|
||||
## 1. 概述
|
||||
|
||||
本文档详细描述了金融服务(finance-service)的数据库设计,包括贷款管理、保险管理、金融产品等核心业务数据表结构。
|
||||
|
||||
## 2. 数据库环境
|
||||
|
||||
- 数据库类型:MySQL 8.0
|
||||
- 字符集:utf8mb4
|
||||
- 排序规则:utf8mb4_unicode_ci
|
||||
- 数据库名:xlxumu_finance
|
||||
|
||||
## 3. 表结构设计
|
||||
|
||||
### 3.1 贷款产品表 (loan_products)
|
||||
|
||||
| 字段名 | 类型 | 约束 | 描述 |
|
||||
|--------|------|------|------|
|
||||
| id | BIGINT | PRIMARY KEY, AUTO_INCREMENT | 贷款产品ID |
|
||||
| name | VARCHAR(100) | NOT NULL | 产品名称 |
|
||||
| description | TEXT | | 产品描述 |
|
||||
| interest_rate | DECIMAL(5,4) | NOT NULL | 年利率 |
|
||||
| term_months | INT | NOT NULL | 贷款期限(月) |
|
||||
| min_amount | DECIMAL(12,2) | NOT NULL | 最小贷款金额 |
|
||||
| max_amount | DECIMAL(12,2) | NOT NULL | 最大贷款金额 |
|
||||
| status | VARCHAR(20) | NOT NULL, DEFAULT 'ACTIVE' | 产品状态(ACTIVE:启用, INACTIVE:停用) |
|
||||
| created_at | DATETIME | NOT NULL, DEFAULT CURRENT_TIMESTAMP | 创建时间 |
|
||||
| updated_at | DATETIME | NOT NULL, DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
|
||||
|
||||
索引:
|
||||
- INDEX idx_status (status)
|
||||
- INDEX idx_created_at (created_at)
|
||||
|
||||
### 3.2 贷款申请表 (loan_applications)
|
||||
|
||||
| 字段名 | 类型 | 约束 | 描述 |
|
||||
|--------|------|------|------|
|
||||
| id | BIGINT | PRIMARY KEY, AUTO_INCREMENT | 贷款申请ID |
|
||||
| user_id | BIGINT | NOT NULL | 申请人用户ID |
|
||||
| product_id | BIGINT | NOT NULL | 贷款产品ID |
|
||||
| amount | DECIMAL(12,2) | NOT NULL | 申请金额 |
|
||||
| term_months | INT | NOT NULL | 申请期限(月) |
|
||||
| status | VARCHAR(20) | NOT NULL, DEFAULT 'SUBMITTED' | 申请状态(SUBMITTED:已提交, APPROVED:已批准, REJECTED:已拒绝, DISBURSED:已放款, SETTLED:已结清, OVERDUE:已逾期) |
|
||||
| purpose | VARCHAR(200) | | 贷款用途 |
|
||||
| contact_info | JSON | | 联系信息 |
|
||||
| credit_score | INT | | 信用评分 |
|
||||
| approval_time | DATETIME | | 审批时间 |
|
||||
| disbursement_time | DATETIME | | 放款时间 |
|
||||
| settlement_time | DATETIME | | 结清时间 |
|
||||
| created_at | DATETIME | NOT NULL, DEFAULT CURRENT_TIMESTAMP | 创建时间 |
|
||||
| updated_at | DATETIME | NOT NULL, DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
|
||||
|
||||
索引:
|
||||
- INDEX idx_user_id (user_id)
|
||||
- INDEX idx_product_id (product_id)
|
||||
- INDEX idx_status (status)
|
||||
- INDEX idx_created_at (created_at)
|
||||
|
||||
### 3.3 贷款还款计划表 (loan_repayment_schedules)
|
||||
|
||||
| 字段名 | 类型 | 约束 | 描述 |
|
||||
|--------|------|------|------|
|
||||
| id | BIGINT | PRIMARY KEY, AUTO_INCREMENT | 还款计划ID |
|
||||
| loan_id | BIGINT | NOT NULL | 贷款申请ID |
|
||||
| installment_number | INT | NOT NULL | 期数 |
|
||||
| due_date | DATE | NOT NULL | 应还日期 |
|
||||
| principal_amount | DECIMAL(12,2) | NOT NULL | 应还本金 |
|
||||
| interest_amount | DECIMAL(12,2) | NOT NULL | 应还利息 |
|
||||
| total_amount | DECIMAL(12,2) | NOT NULL | 应还总额 |
|
||||
| status | VARCHAR(20) | NOT NULL, DEFAULT 'PENDING' | 还款状态(PENDING:待还款, PAID:已还款, OVERDUE:已逾期) |
|
||||
| paid_date | DATE | | 实际还款日期 |
|
||||
| paid_amount | DECIMAL(12,2) | | 实际还款金额 |
|
||||
| created_at | DATETIME | NOT NULL, DEFAULT CURRENT_TIMESTAMP | 创建时间 |
|
||||
| updated_at | DATETIME | NOT NULL, DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
|
||||
|
||||
索引:
|
||||
- INDEX idx_loan_id (loan_id)
|
||||
- INDEX idx_due_date (due_date)
|
||||
- INDEX idx_status (status)
|
||||
- UNIQUE INDEX uk_loan_installment (loan_id, installment_number)
|
||||
|
||||
### 3.4 保险产品表 (insurance_products)
|
||||
|
||||
| 字段名 | 类型 | 约束 | 描述 |
|
||||
|--------|------|------|------|
|
||||
| id | BIGINT | PRIMARY KEY, AUTO_INCREMENT | 保险产品ID |
|
||||
| name | VARCHAR(100) | NOT NULL | 产品名称 |
|
||||
| description | TEXT | | 产品描述 |
|
||||
| premium_rate | DECIMAL(5,4) | NOT NULL | 保险费率 |
|
||||
| coverage_amount | DECIMAL(12,2) | NOT NULL | 保险金额 |
|
||||
| term_months | INT | NOT NULL | 保险期限(月) |
|
||||
| type | VARCHAR(50) | NOT NULL | 保险类型(CATTLE:牲畜保险, PROPERTY:财产保险, LIABILITY:责任保险) |
|
||||
| status | VARCHAR(20) | NOT NULL, DEFAULT 'ACTIVE' | 产品状态(ACTIVE:启用, INACTIVE:停用) |
|
||||
| created_at | DATETIME | NOT NULL, DEFAULT CURRENT_TIMESTAMP | 创建时间 |
|
||||
| updated_at | DATETIME | NOT NULL, DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
|
||||
|
||||
索引:
|
||||
- INDEX idx_type (type)
|
||||
- INDEX idx_status (status)
|
||||
- INDEX idx_created_at (created_at)
|
||||
|
||||
### 3.5 保险投保表 (insurance_policies)
|
||||
|
||||
| 字段名 | 类型 | 约束 | 描述 |
|
||||
|--------|------|------|------|
|
||||
| id | BIGINT | PRIMARY KEY, AUTO_INCREMENT | 保单ID |
|
||||
| user_id | BIGINT | NOT NULL | 投保人用户ID |
|
||||
| product_id | BIGINT | NOT NULL | 保险产品ID |
|
||||
| policy_no | VARCHAR(50) | UNIQUE, NOT NULL | 保单号 |
|
||||
| insured_amount | DECIMAL(12,2) | NOT NULL | 投保金额 |
|
||||
| premium_amount | DECIMAL(12,2) | NOT NULL | 保费金额 |
|
||||
| status | VARCHAR(20) | NOT NULL, DEFAULT 'ACTIVE' | 保单状态(ACTIVE:有效, EXPIRED:已过期, CLAIMED:已理赔, CANCELLED:已取消) |
|
||||
| start_date | DATE | NOT NULL | 保险起始日期 |
|
||||
| end_date | DATE | NOT NULL | 保险结束日期 |
|
||||
| beneficiary_info | JSON | | 受益人信息 |
|
||||
| created_at | DATETIME | NOT NULL, DEFAULT CURRENT_TIMESTAMP | 创建时间 |
|
||||
| updated_at | DATETIME | NOT NULL, DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
|
||||
|
||||
索引:
|
||||
- UNIQUE INDEX uk_policy_no (policy_no)
|
||||
- INDEX idx_user_id (user_id)
|
||||
- INDEX idx_product_id (product_id)
|
||||
- INDEX idx_status (status)
|
||||
- INDEX idx_created_at (created_at)
|
||||
|
||||
### 3.6 理赔申请表 (claims)
|
||||
|
||||
| 字段名 | 类型 | 约束 | 描述 |
|
||||
|--------|------|------|------|
|
||||
| id | BIGINT | PRIMARY KEY, AUTO_INCREMENT | 理赔申请ID |
|
||||
| policy_id | BIGINT | NOT NULL | 关联保单ID |
|
||||
| claim_no | VARCHAR(50) | UNIQUE, NOT NULL | 理赔编号 |
|
||||
| claim_amount | DECIMAL(12,2) | NOT NULL | 理赔金额 |
|
||||
| status | VARCHAR(20) | NOT NULL, DEFAULT 'SUBMITTED' | 理赔状态(SUBMITTED:已提交, APPROVED:已批准, REJECTED:已拒绝, SETTLED:已赔付) |
|
||||
| incident_date | DATE | NOT NULL | 事故日期 |
|
||||
| incident_description | TEXT | NOT NULL | 事故描述 |
|
||||
| supporting_documents | JSON | | 支持文件 |
|
||||
| approval_time | DATETIME | | 审批时间 |
|
||||
| settlement_time | DATETIME | | 赔付时间 |
|
||||
| created_at | DATETIME | NOT NULL, DEFAULT CURRENT_TIMESTAMP | 创建时间 |
|
||||
| updated_at | DATETIME | NOT NULL, DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
|
||||
|
||||
索引:
|
||||
- UNIQUE INDEX uk_claim_no (claim_no)
|
||||
- INDEX idx_policy_id (policy_id)
|
||||
- INDEX idx_status (status)
|
||||
- INDEX idx_created_at (created_at)
|
||||
|
||||
## 4. 表关系说明
|
||||
|
||||
1. 贷款产品与贷款申请是一对多关系
|
||||
2. 贷款申请与还款计划是一对多关系
|
||||
3. 保险产品与保险投保是一对多关系
|
||||
4. 保险投保与理赔申请是一对多关系
|
||||
5. 用户与贷款申请、保险投保等通过用户ID关联
|
||||
|
||||
## 5. 数据初始化
|
||||
|
||||
### 5.1 贷款产品状态枚举值
|
||||
- ACTIVE: 启用
|
||||
- INACTIVE: 停用
|
||||
|
||||
### 5.2 贷款申请状态流转
|
||||
- SUBMITTED -> APPROVED -> DISBURSED -> SETTLED
|
||||
- SUBMITTED -> REJECTED
|
||||
- DISBURSED -> OVERDUE (特殊情况下)
|
||||
|
||||
### 5.3 还款状态枚举值
|
||||
- PENDING: 待还款
|
||||
- PAID: 已还款
|
||||
- OVERDUE: 已逾期
|
||||
|
||||
### 5.4 保险产品状态枚举值
|
||||
- ACTIVE: 启用
|
||||
- INACTIVE: 停用
|
||||
|
||||
### 5.5 保单状态枚举值
|
||||
- ACTIVE: 有效
|
||||
- EXPIRED: 已过期
|
||||
- CLAIMED: 已理赔
|
||||
- CANCELLED: 已取消
|
||||
|
||||
### 5.6 理赔状态枚举值
|
||||
- SUBMITTED: 已提交
|
||||
- APPROVED: 已批准
|
||||
- REJECTED: 已拒绝
|
||||
- SETTLED: 已赔付
|
||||
|
||||
## 6. SQL脚本
|
||||
|
||||
```sql
|
||||
-- 创建数据库
|
||||
CREATE DATABASE IF NOT EXISTS xlxumu_finance
|
||||
CHARACTER SET utf8mb4
|
||||
COLLATE utf8mb4_unicode_ci;
|
||||
|
||||
USE xlxumu_finance;
|
||||
|
||||
-- 贷款产品表
|
||||
CREATE TABLE loan_products (
|
||||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||||
name VARCHAR(100) NOT NULL,
|
||||
description TEXT,
|
||||
interest_rate DECIMAL(5,4) NOT NULL,
|
||||
term_months INT NOT NULL,
|
||||
min_amount DECIMAL(12,2) NOT NULL,
|
||||
max_amount DECIMAL(12,2) NOT NULL,
|
||||
status VARCHAR(20) NOT NULL DEFAULT 'ACTIVE',
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
|
||||
INDEX idx_status (status),
|
||||
INDEX idx_created_at (created_at)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- 贷款申请表
|
||||
CREATE TABLE loan_applications (
|
||||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||||
user_id BIGINT NOT NULL,
|
||||
product_id BIGINT NOT NULL,
|
||||
amount DECIMAL(12,2) NOT NULL,
|
||||
term_months INT NOT NULL,
|
||||
status VARCHAR(20) NOT NULL DEFAULT 'SUBMITTED',
|
||||
purpose VARCHAR(200),
|
||||
contact_info JSON,
|
||||
credit_score INT,
|
||||
approval_time DATETIME,
|
||||
disbursement_time DATETIME,
|
||||
settlement_time DATETIME,
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
|
||||
INDEX idx_user_id (user_id),
|
||||
INDEX idx_product_id (product_id),
|
||||
INDEX idx_status (status),
|
||||
INDEX idx_created_at (created_at)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- 贷款还款计划表
|
||||
CREATE TABLE loan_repayment_schedules (
|
||||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||||
loan_id BIGINT NOT NULL,
|
||||
installment_number INT NOT NULL,
|
||||
due_date DATE NOT NULL,
|
||||
principal_amount DECIMAL(12,2) NOT NULL,
|
||||
interest_amount DECIMAL(12,2) NOT NULL,
|
||||
total_amount DECIMAL(12,2) NOT NULL,
|
||||
status VARCHAR(20) NOT NULL DEFAULT 'PENDING',
|
||||
paid_date DATE,
|
||||
paid_amount DECIMAL(12,2),
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
|
||||
INDEX idx_loan_id (loan_id),
|
||||
INDEX idx_due_date (due_date),
|
||||
INDEX idx_status (status),
|
||||
UNIQUE INDEX uk_loan_installment (loan_id, installment_number)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- 保险产品表
|
||||
CREATE TABLE insurance_products (
|
||||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||||
name VARCHAR(100) NOT NULL,
|
||||
description TEXT,
|
||||
premium_rate DECIMAL(5,4) NOT NULL,
|
||||
coverage_amount DECIMAL(12,2) NOT NULL,
|
||||
term_months INT NOT NULL,
|
||||
type VARCHAR(50) NOT NULL,
|
||||
status VARCHAR(20) NOT NULL DEFAULT 'ACTIVE',
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
|
||||
INDEX idx_type (type),
|
||||
INDEX idx_status (status),
|
||||
INDEX idx_created_at (created_at)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- 保险投保表
|
||||
CREATE TABLE insurance_policies (
|
||||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||||
user_id BIGINT NOT NULL,
|
||||
product_id BIGINT NOT NULL,
|
||||
policy_no VARCHAR(50) UNIQUE NOT NULL,
|
||||
insured_amount DECIMAL(12,2) NOT NULL,
|
||||
premium_amount DECIMAL(12,2) NOT NULL,
|
||||
status VARCHAR(20) NOT NULL DEFAULT 'ACTIVE',
|
||||
start_date DATE NOT NULL,
|
||||
end_date DATE NOT NULL,
|
||||
beneficiary_info JSON,
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
|
||||
UNIQUE INDEX uk_policy_no (policy_no),
|
||||
INDEX idx_user_id (user_id),
|
||||
INDEX idx_product_id (product_id),
|
||||
INDEX idx_status (status),
|
||||
INDEX idx_created_at (created_at)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- 理赔申请表
|
||||
CREATE TABLE claims (
|
||||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||||
policy_id BIGINT NOT NULL,
|
||||
claim_no VARCHAR(50) UNIQUE NOT NULL,
|
||||
claim_amount DECIMAL(12,2) NOT NULL,
|
||||
status VARCHAR(20) NOT NULL DEFAULT 'SUBMITTED',
|
||||
incident_date DATE NOT NULL,
|
||||
incident_description TEXT NOT NULL,
|
||||
supporting_documents JSON,
|
||||
approval_time DATETIME,
|
||||
settlement_time DATETIME,
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
|
||||
UNIQUE INDEX uk_claim_no (claim_no),
|
||||
INDEX idx_policy_id (policy_id),
|
||||
INDEX idx_status (status),
|
||||
INDEX idx_created_at (created_at)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
```
|
||||
193
docs/design/database/government_service_db_design.md
Normal file
193
docs/design/database/government_service_db_design.md
Normal file
@@ -0,0 +1,193 @@
|
||||
# 政府服务数据库设计文档
|
||||
|
||||
## 1. 数据库环境说明
|
||||
|
||||
- 数据库名称: xlxumu_government
|
||||
- 字符集: utf8mb4
|
||||
- 排序规则: utf8mb4_unicode_ci
|
||||
|
||||
## 2. 政策法规表(government_policies)
|
||||
|
||||
存储政府发布的政策法规信息。
|
||||
|
||||
```sql
|
||||
CREATE TABLE government_policies (
|
||||
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
title VARCHAR(255) NOT NULL COMMENT '政策标题',
|
||||
content TEXT NOT NULL COMMENT '政策内容',
|
||||
category VARCHAR(100) NOT NULL COMMENT '政策分类(农业扶持/小微企业/科技创新等)',
|
||||
publish_date DATE NOT NULL COMMENT '发布日期',
|
||||
effective_date DATE COMMENT '生效日期',
|
||||
expiry_date DATE COMMENT '失效日期',
|
||||
issuing_authority VARCHAR(255) NOT NULL COMMENT '发布机构',
|
||||
policy_number VARCHAR(100) UNIQUE COMMENT '政策文号',
|
||||
status ENUM('DRAFT', 'PUBLISHED', 'EXPIRED') NOT NULL DEFAULT 'DRAFT' COMMENT '状态',
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
PRIMARY KEY (id),
|
||||
INDEX idx_category (category),
|
||||
INDEX idx_publish_date (publish_date),
|
||||
INDEX idx_status (status)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='政策法规表';
|
||||
```
|
||||
|
||||
## 3. 补贴申请表(subsidy_applications)
|
||||
|
||||
存储农户或企业提交的政府补贴申请信息。
|
||||
|
||||
```sql
|
||||
CREATE TABLE subsidy_applications (
|
||||
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
applicant_id BIGINT UNSIGNED NOT NULL COMMENT '申请人ID(关联user_center_service的用户ID)',
|
||||
applicant_type ENUM('FARMER', 'COMPANY') NOT NULL COMMENT '申请人类型',
|
||||
policy_id BIGINT UNSIGNED NOT NULL COMMENT '关联政策ID',
|
||||
application_number VARCHAR(50) UNIQUE NOT NULL COMMENT '申请编号',
|
||||
project_name VARCHAR(255) NOT NULL COMMENT '项目名称',
|
||||
project_description TEXT NOT NULL COMMENT '项目描述',
|
||||
applied_amount DECIMAL(15,2) NOT NULL COMMENT '申请金额',
|
||||
actual_amount DECIMAL(15,2) COMMENT '实际发放金额',
|
||||
application_date DATE NOT NULL COMMENT '申请日期',
|
||||
status ENUM('SUBMITTED', 'REVIEWING', 'APPROVED', 'REJECTED', 'DISBURSED') NOT NULL DEFAULT 'SUBMITTED' COMMENT '申请状态',
|
||||
reviewer_id BIGINT UNSIGNED COMMENT '审核人ID',
|
||||
review_notes TEXT COMMENT '审核备注',
|
||||
review_date TIMESTAMP NULL COMMENT '审核日期',
|
||||
disbursement_date DATE COMMENT '发放日期',
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
PRIMARY KEY (id),
|
||||
INDEX idx_applicant_id (applicant_id),
|
||||
INDEX idx_policy_id (policy_id),
|
||||
INDEX idx_status (status),
|
||||
INDEX idx_application_date (application_date)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='补贴申请表';
|
||||
```
|
||||
|
||||
## 4. 补贴发放记录表(subsidy_disbursements)
|
||||
|
||||
记录补贴发放的具体信息。
|
||||
|
||||
```sql
|
||||
CREATE TABLE subsidy_disbursements (
|
||||
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
application_id BIGINT UNSIGNED NOT NULL COMMENT '关联申请ID',
|
||||
disbursement_amount DECIMAL(15,2) NOT NULL COMMENT '发放金额',
|
||||
disbursement_date DATE NOT NULL COMMENT '发放日期',
|
||||
payment_method ENUM('BANK_TRANSFER', 'CASH', 'OTHER') NOT NULL COMMENT '发放方式',
|
||||
payment_reference VARCHAR(255) COMMENT '支付凭证号',
|
||||
recipient_account VARCHAR(255) COMMENT '收款账户',
|
||||
status ENUM('PENDING', 'SUCCESS', 'FAILED') NOT NULL DEFAULT 'PENDING' COMMENT '发放状态',
|
||||
failure_reason TEXT COMMENT '失败原因',
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
PRIMARY KEY (id),
|
||||
INDEX idx_application_id (application_id),
|
||||
INDEX idx_disbursement_date (disbursement_date),
|
||||
INDEX idx_status (status)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='补贴发放记录表';
|
||||
```
|
||||
|
||||
## 5. 农业补贴标准表(agricultural_subsidy_standards)
|
||||
|
||||
存储各类农业补贴的发放标准。
|
||||
|
||||
```sql
|
||||
CREATE TABLE agricultural_subsidy_standards (
|
||||
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
policy_id BIGINT UNSIGNED NOT NULL COMMENT '关联政策ID',
|
||||
crop_type VARCHAR(100) NOT NULL COMMENT '作物类型',
|
||||
subsidy_type ENUM('PER_AREA', 'PER_UNIT', 'FIXED_AMOUNT') NOT NULL COMMENT '补贴方式',
|
||||
subsidy_amount DECIMAL(10,2) NOT NULL COMMENT '补贴金额(元/亩或元/单位)',
|
||||
unit VARCHAR(50) COMMENT '单位(亩/头/只等)',
|
||||
effective_date DATE NOT NULL COMMENT '生效日期',
|
||||
expiry_date DATE COMMENT '失效日期',
|
||||
description TEXT COMMENT '标准描述',
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
PRIMARY KEY (id),
|
||||
INDEX idx_policy_id (policy_id),
|
||||
INDEX idx_crop_type (crop_type),
|
||||
INDEX idx_effective_date (effective_date)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='农业补贴标准表';
|
||||
```
|
||||
|
||||
## 6. 合规检查记录表(compliance_inspection_records)
|
||||
|
||||
记录对农户或企业进行的合规检查信息。
|
||||
|
||||
```sql
|
||||
CREATE TABLE compliance_inspection_records (
|
||||
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
inspected_entity_id BIGINT UNSIGNED NOT NULL COMMENT '被检查实体ID(关联user_center_service的用户ID)',
|
||||
entity_type ENUM('FARMER', 'COMPANY') NOT NULL COMMENT '实体类型',
|
||||
inspector_id BIGINT UNSIGNED NOT NULL COMMENT '检查员ID',
|
||||
inspection_date DATE NOT NULL COMMENT '检查日期',
|
||||
inspection_type VARCHAR(100) NOT NULL COMMENT '检查类型(环保检查/质量检查/安全检查等)',
|
||||
inspection_result ENUM('PASS', 'FAIL', 'PENDING') NOT NULL DEFAULT 'PENDING' COMMENT '检查结果',
|
||||
findings TEXT COMMENT '检查发现',
|
||||
corrective_actions TEXT COMMENT '整改措施',
|
||||
follow_up_date DATE COMMENT '跟进日期',
|
||||
status ENUM('COMPLETED', 'FOLLOW_UP_REQUIRED', 'CLOSED') NOT NULL DEFAULT 'COMPLETED' COMMENT '状态',
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
PRIMARY KEY (id),
|
||||
INDEX idx_entity_id (inspected_entity_id),
|
||||
INDEX idx_inspector_id (inspector_id),
|
||||
INDEX idx_inspection_date (inspection_date),
|
||||
INDEX idx_result (inspection_result)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='合规检查记录表';
|
||||
```
|
||||
|
||||
## 7. 土地流转信息表(land_transfer_info)
|
||||
|
||||
记录农村土地流转的相关信息。
|
||||
|
||||
```sql
|
||||
CREATE TABLE land_transfer_info (
|
||||
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
land_owner_id BIGINT UNSIGNED NOT NULL COMMENT '土地所有者ID(关联user_center_service的用户ID)',
|
||||
transferee_id BIGINT UNSIGNED NOT NULL COMMENT '受让方ID(关联user_center_service的用户ID)',
|
||||
land_location VARCHAR(255) NOT NULL COMMENT '土地位置',
|
||||
land_area DECIMAL(10,2) NOT NULL COMMENT '土地面积(亩)',
|
||||
transfer_type ENUM('LEASE', 'SALE', 'CONTRACT') NOT NULL COMMENT '流转类型',
|
||||
transfer_term INT NOT NULL COMMENT '流转期限(年)',
|
||||
annual_rent DECIMAL(10,2) COMMENT '年租金(元/亩)',
|
||||
total_amount DECIMAL(15,2) COMMENT '总金额',
|
||||
start_date DATE NOT NULL COMMENT '开始日期',
|
||||
end_date DATE NOT NULL COMMENT '结束日期',
|
||||
contract_number VARCHAR(100) UNIQUE COMMENT '合同编号',
|
||||
status ENUM('ACTIVE', 'EXPIRED', 'TERMINATED') NOT NULL DEFAULT 'ACTIVE' COMMENT '状态',
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
PRIMARY KEY (id),
|
||||
INDEX idx_land_owner_id (land_owner_id),
|
||||
INDEX idx_transferee_id (transferee_id),
|
||||
INDEX idx_status (status),
|
||||
INDEX idx_start_date (start_date)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='土地流转信息表';
|
||||
```
|
||||
|
||||
## 8. 农产品质量认证表(agricultural_product_certifications)
|
||||
|
||||
记录农产品的质量认证信息。
|
||||
|
||||
```sql
|
||||
CREATE TABLE agricultural_product_certifications (
|
||||
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
producer_id BIGINT UNSIGNED NOT NULL COMMENT '生产者ID(关联user_center_service的用户ID)',
|
||||
product_name VARCHAR(255) NOT NULL COMMENT '产品名称',
|
||||
certification_type VARCHAR(100) NOT NULL COMMENT '认证类型(绿色食品/有机产品/地理标志等)',
|
||||
certification_number VARCHAR(100) UNIQUE COMMENT '认证编号',
|
||||
issuing_authority VARCHAR(255) NOT NULL COMMENT '发证机构',
|
||||
issue_date DATE NOT NULL COMMENT '发证日期',
|
||||
expiry_date DATE NOT NULL COMMENT '有效期至',
|
||||
certification_status ENUM('VALID', 'EXPIRED', 'REVOKED') NOT NULL DEFAULT 'VALID' COMMENT '认证状态',
|
||||
inspection_report TEXT COMMENT '检验报告',
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
PRIMARY KEY (id),
|
||||
INDEX idx_producer_id (producer_id),
|
||||
INDEX idx_certification_type (certification_type),
|
||||
INDEX idx_expiry_date (expiry_date),
|
||||
INDEX idx_status (certification_status)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='农产品质量认证表';
|
||||
```
|
||||
159
docs/design/database/iot_service_db_design.md
Normal file
159
docs/design/database/iot_service_db_design.md
Normal file
@@ -0,0 +1,159 @@
|
||||
# 物联网服务数据库设计文档
|
||||
|
||||
## 1. 数据库环境说明
|
||||
|
||||
- 数据库名称: xlxumu_iot
|
||||
- 字符集: utf8mb4
|
||||
- 排序规则: utf8mb4_unicode_ci
|
||||
|
||||
## 2. 数据表设计
|
||||
|
||||
### 2.1 设备信息表 (devices)
|
||||
|
||||
存储物联网设备基本信息。
|
||||
|
||||
```sql
|
||||
CREATE TABLE `devices` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
`user_id` BIGINT UNSIGNED NOT NULL COMMENT '用户ID',
|
||||
`device_id` VARCHAR(100) NOT NULL COMMENT '设备唯一标识',
|
||||
`name` VARCHAR(100) NOT NULL COMMENT '设备名称',
|
||||
`type` VARCHAR(50) NOT NULL COMMENT '设备类型(传感器/控制器等)',
|
||||
`model` VARCHAR(100) COMMENT '设备型号',
|
||||
`manufacturer` VARCHAR(100) COMMENT '制造商',
|
||||
`location` VARCHAR(200) COMMENT '设备位置',
|
||||
`status` VARCHAR(20) NOT NULL DEFAULT 'ACTIVE' COMMENT '设备状态(ACTIVE/INACTIVE/FAULT)',
|
||||
`last_heartbeat` TIMESTAMP NULL COMMENT '最后心跳时间',
|
||||
`firmware_version` VARCHAR(50) COMMENT '固件版本',
|
||||
`description` TEXT COMMENT '描述',
|
||||
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_device_id` (`device_id`),
|
||||
KEY `idx_user_id` (`user_id`),
|
||||
KEY `idx_type` (`type`),
|
||||
KEY `idx_status` (`status`),
|
||||
KEY `idx_last_heartbeat` (`last_heartbeat`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='设备信息表';
|
||||
```
|
||||
|
||||
### 2.2 传感器数据表 (sensor_data)
|
||||
|
||||
存储传感器采集的数据。
|
||||
|
||||
```sql
|
||||
CREATE TABLE `sensor_data` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
`device_id` VARCHAR(100) NOT NULL COMMENT '设备ID',
|
||||
`sensor_type` VARCHAR(50) NOT NULL COMMENT '传感器类型(温度/湿度/光照等)',
|
||||
`value` DECIMAL(10,4) NOT NULL COMMENT '传感器数值',
|
||||
`unit` VARCHAR(20) NOT NULL COMMENT '单位',
|
||||
`timestamp` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '数据时间戳',
|
||||
`location` POINT COMMENT '地理位置',
|
||||
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_device_id` (`device_id`),
|
||||
KEY `idx_sensor_type` (`sensor_type`),
|
||||
KEY `idx_timestamp` (`timestamp`),
|
||||
SPATIAL KEY `idx_location` (`location`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='传感器数据表';
|
||||
```
|
||||
|
||||
### 2.3 设备告警表 (device_alerts)
|
||||
|
||||
存储设备告警信息。
|
||||
|
||||
```sql
|
||||
CREATE TABLE `device_alerts` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
`device_id` VARCHAR(100) NOT NULL COMMENT '设备ID',
|
||||
`alert_type` VARCHAR(50) NOT NULL COMMENT '告警类型(故障/阈值超限等)',
|
||||
`alert_level` VARCHAR(20) NOT NULL COMMENT '告警级别(INFO/WARNING/ERROR/CRITICAL)',
|
||||
`message` TEXT NOT NULL COMMENT '告警信息',
|
||||
`value` DECIMAL(10,4) COMMENT '触发告警的数值',
|
||||
`threshold` DECIMAL(10,4) COMMENT '告警阈值',
|
||||
`resolved` TINYINT(1) NOT NULL DEFAULT '0' COMMENT '是否已解决',
|
||||
`resolved_at` TIMESTAMP NULL COMMENT '解决时间',
|
||||
`resolved_by` BIGINT UNSIGNED COMMENT '解决人ID',
|
||||
`timestamp` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '告警时间',
|
||||
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_device_id` (`device_id`),
|
||||
KEY `idx_alert_type` (`alert_type`),
|
||||
KEY `idx_alert_level` (`alert_level`),
|
||||
KEY `idx_resolved` (`resolved`),
|
||||
KEY `idx_timestamp` (`timestamp`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='设备告警表';
|
||||
```
|
||||
|
||||
### 2.4 设备控制命令表 (device_commands)
|
||||
|
||||
存储发送给设备的控制命令。
|
||||
|
||||
```sql
|
||||
CREATE TABLE `device_commands` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
`device_id` VARCHAR(100) NOT NULL COMMENT '设备ID',
|
||||
`command` VARCHAR(100) NOT NULL COMMENT '命令名称',
|
||||
`parameters` JSON COMMENT '命令参数',
|
||||
`status` VARCHAR(20) NOT NULL DEFAULT 'PENDING' COMMENT '命令状态(PENDING/SENT/EXECUTED/FAILED)',
|
||||
`result` TEXT COMMENT '执行结果',
|
||||
`sent_at` TIMESTAMP NULL COMMENT '发送时间',
|
||||
`executed_at` TIMESTAMP NULL COMMENT '执行时间',
|
||||
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_device_id` (`device_id`),
|
||||
KEY `idx_command` (`command`),
|
||||
KEY `idx_status` (`status`),
|
||||
KEY `idx_created_at` (`created_at`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='设备控制命令表';
|
||||
```
|
||||
|
||||
### 2.5 设备配置表 (device_configs)
|
||||
|
||||
存储设备配置信息。
|
||||
|
||||
```sql
|
||||
CREATE TABLE `device_configs` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
`device_id` VARCHAR(100) NOT NULL COMMENT '设备ID',
|
||||
`config_key` VARCHAR(100) NOT NULL COMMENT '配置键',
|
||||
`config_value` TEXT NOT NULL COMMENT '配置值',
|
||||
`description` TEXT COMMENT '配置描述',
|
||||
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_device_config` (`device_id`, `config_key`),
|
||||
KEY `idx_device_id` (`device_id`),
|
||||
KEY `idx_config_key` (`config_key`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='设备配置表';
|
||||
```
|
||||
|
||||
### 2.6 数据聚合表 (data_aggregations)
|
||||
|
||||
存储传感器数据的聚合统计信息。
|
||||
|
||||
```sql
|
||||
CREATE TABLE `data_aggregations` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
`device_id` VARCHAR(100) NOT NULL COMMENT '设备ID',
|
||||
`sensor_type` VARCHAR(50) NOT NULL COMMENT '传感器类型',
|
||||
`aggregation_type` VARCHAR(20) NOT NULL COMMENT '聚合类型(HOURLY/DAILY/WEEKLY/MONTHLY)',
|
||||
`timestamp` TIMESTAMP NOT NULL COMMENT '时间戳',
|
||||
`min_value` DECIMAL(10,4) COMMENT '最小值',
|
||||
`max_value` DECIMAL(10,4) COMMENT '最大值',
|
||||
`avg_value` DECIMAL(10,4) COMMENT '平均值',
|
||||
`sum_value` DECIMAL(10,4) COMMENT '总和',
|
||||
`count` INT NOT NULL DEFAULT '0' COMMENT '数据点数量',
|
||||
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_aggregation` (`device_id`, `sensor_type`, `aggregation_type`, `timestamp`),
|
||||
KEY `idx_device_id` (`device_id`),
|
||||
KEY `idx_sensor_type` (`sensor_type`),
|
||||
KEY `idx_aggregation_type` (`aggregation_type`),
|
||||
KEY `idx_timestamp` (`timestamp`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='数据聚合表';
|
||||
```
|
||||
274
docs/design/database/mall_service_db_design.md
Normal file
274
docs/design/database/mall_service_db_design.md
Normal file
@@ -0,0 +1,274 @@
|
||||
# 商城服务数据库设计文档
|
||||
|
||||
## 1. 数据库环境说明
|
||||
|
||||
- 数据库名称: xlxumu_mall
|
||||
- 字符集: utf8mb4
|
||||
- 排序规则: utf8mb4_unicode_ci
|
||||
|
||||
## 2. 商品分类表(product_categories)
|
||||
|
||||
存储商城商品的分类信息。
|
||||
|
||||
```sql
|
||||
CREATE TABLE product_categories (
|
||||
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
name VARCHAR(100) NOT NULL COMMENT '分类名称',
|
||||
parent_id BIGINT UNSIGNED DEFAULT NULL COMMENT '父分类ID',
|
||||
level TINYINT NOT NULL DEFAULT 1 COMMENT '分类层级',
|
||||
sort_order INT NOT NULL DEFAULT 0 COMMENT '排序',
|
||||
icon VARCHAR(255) COMMENT '分类图标',
|
||||
description TEXT COMMENT '分类描述',
|
||||
status ENUM('ACTIVE', 'INACTIVE') NOT NULL DEFAULT 'ACTIVE' COMMENT '状态',
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
PRIMARY KEY (id),
|
||||
INDEX idx_parent_id (parent_id),
|
||||
INDEX idx_level (level),
|
||||
INDEX idx_status (status)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='商品分类表';
|
||||
```
|
||||
|
||||
## 3. 商品信息表(products)
|
||||
|
||||
存储商城商品的基本信息。
|
||||
|
||||
```sql
|
||||
CREATE TABLE products (
|
||||
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
category_id BIGINT UNSIGNED NOT NULL COMMENT '分类ID',
|
||||
seller_id BIGINT UNSIGNED NOT NULL COMMENT '卖家ID(关联user_center_service的用户ID)',
|
||||
name VARCHAR(255) NOT NULL COMMENT '商品名称',
|
||||
subtitle VARCHAR(255) COMMENT '商品副标题',
|
||||
description TEXT COMMENT '商品描述',
|
||||
cover_image VARCHAR(255) NOT NULL COMMENT '封面图片URL',
|
||||
images JSON COMMENT '商品图片URL列表',
|
||||
price DECIMAL(10,2) NOT NULL COMMENT '商品价格',
|
||||
original_price DECIMAL(10,2) COMMENT '原价',
|
||||
cost_price DECIMAL(10,2) COMMENT '成本价',
|
||||
stock_quantity INT NOT NULL DEFAULT 0 COMMENT '库存数量',
|
||||
sales_count INT NOT NULL DEFAULT 0 COMMENT '销售数量',
|
||||
status ENUM('DRAFT', 'PENDING', 'ACTIVE', 'INACTIVE', 'DELETED') NOT NULL DEFAULT 'DRAFT' COMMENT '商品状态',
|
||||
is_featured BOOLEAN NOT NULL DEFAULT FALSE COMMENT '是否推荐',
|
||||
is_new BOOLEAN NOT NULL DEFAULT TRUE COMMENT '是否新品',
|
||||
tags JSON COMMENT '商品标签',
|
||||
attributes JSON COMMENT '商品属性',
|
||||
specifications JSON COMMENT '商品规格',
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
PRIMARY KEY (id),
|
||||
INDEX idx_category_id (category_id),
|
||||
INDEX idx_seller_id (seller_id),
|
||||
INDEX idx_status (status),
|
||||
INDEX idx_is_featured (is_featured),
|
||||
INDEX idx_is_new (is_new),
|
||||
FULLTEXT idx_name (name)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='商品信息表';
|
||||
```
|
||||
|
||||
## 4. 购物车表(shopping_carts)
|
||||
|
||||
存储用户的购物车信息。
|
||||
|
||||
```sql
|
||||
CREATE TABLE shopping_carts (
|
||||
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
user_id BIGINT UNSIGNED NOT NULL COMMENT '用户ID(关联user_center_service的用户ID)',
|
||||
product_id BIGINT UNSIGNED NOT NULL COMMENT '商品ID',
|
||||
quantity INT NOT NULL DEFAULT 1 COMMENT '商品数量',
|
||||
selected BOOLEAN NOT NULL DEFAULT TRUE COMMENT '是否选中',
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
PRIMARY KEY (id),
|
||||
UNIQUE KEY uk_user_product (user_id, product_id),
|
||||
INDEX idx_user_id (user_id)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='购物车表';
|
||||
```
|
||||
|
||||
## 5. 订单表(orders)
|
||||
|
||||
存储用户的订单信息。
|
||||
|
||||
```sql
|
||||
CREATE TABLE orders (
|
||||
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
order_number VARCHAR(50) UNIQUE NOT NULL COMMENT '订单编号',
|
||||
user_id BIGINT UNSIGNED NOT NULL COMMENT '用户ID(关联user_center_service的用户ID)',
|
||||
seller_id BIGINT UNSIGNED NOT NULL COMMENT '卖家ID(关联user_center_service的用户ID)',
|
||||
total_amount DECIMAL(10,2) NOT NULL COMMENT '订单总金额',
|
||||
discount_amount DECIMAL(10,2) NOT NULL DEFAULT 0.00 COMMENT '优惠金额',
|
||||
shipping_amount DECIMAL(10,2) NOT NULL DEFAULT 0.00 COMMENT '运费',
|
||||
actual_amount DECIMAL(10,2) NOT NULL COMMENT '实际支付金额',
|
||||
status ENUM('PENDING_PAYMENT', 'PAID', 'SHIPPED', 'DELIVERED', 'COMPLETED', 'CANCELLED', 'REFUNDED') NOT NULL DEFAULT 'PENDING_PAYMENT' COMMENT '订单状态',
|
||||
payment_method VARCHAR(50) COMMENT '支付方式',
|
||||
payment_time TIMESTAMP NULL COMMENT '支付时间',
|
||||
shipping_address JSON NOT NULL COMMENT '收货地址',
|
||||
shipping_company VARCHAR(100) COMMENT '物流公司',
|
||||
shipping_number VARCHAR(100) COMMENT '物流单号',
|
||||
remark TEXT COMMENT '订单备注',
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
PRIMARY KEY (id),
|
||||
UNIQUE KEY uk_order_number (order_number),
|
||||
INDEX idx_user_id (user_id),
|
||||
INDEX idx_seller_id (seller_id),
|
||||
INDEX idx_status (status),
|
||||
INDEX idx_payment_time (payment_time)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='订单表';
|
||||
```
|
||||
|
||||
## 6. 订单项表(order_items)
|
||||
|
||||
存储订单中的具体商品信息。
|
||||
|
||||
```sql
|
||||
CREATE TABLE order_items (
|
||||
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
order_id BIGINT UNSIGNED NOT NULL COMMENT '订单ID',
|
||||
product_id BIGINT UNSIGNED NOT NULL COMMENT '商品ID',
|
||||
product_name VARCHAR(255) NOT NULL COMMENT '商品名称',
|
||||
product_image VARCHAR(255) COMMENT '商品图片URL',
|
||||
quantity INT NOT NULL COMMENT '商品数量',
|
||||
price DECIMAL(10,2) NOT NULL COMMENT '商品单价',
|
||||
total_amount DECIMAL(10,2) NOT NULL COMMENT '商品总价',
|
||||
attributes JSON COMMENT '商品属性',
|
||||
specifications JSON COMMENT '商品规格',
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
PRIMARY KEY (id),
|
||||
INDEX idx_order_id (order_id),
|
||||
INDEX idx_product_id (product_id)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='订单项表';
|
||||
```
|
||||
|
||||
## 7. 收货地址表(shipping_addresses)
|
||||
|
||||
存储用户的收货地址信息。
|
||||
|
||||
```sql
|
||||
CREATE TABLE shipping_addresses (
|
||||
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
user_id BIGINT UNSIGNED NOT NULL COMMENT '用户ID(关联user_center_service的用户ID)',
|
||||
name VARCHAR(50) NOT NULL COMMENT '收货人姓名',
|
||||
phone VARCHAR(20) NOT NULL COMMENT '联系电话',
|
||||
province VARCHAR(50) NOT NULL COMMENT '省份',
|
||||
city VARCHAR(50) NOT NULL COMMENT '城市',
|
||||
district VARCHAR(50) NOT NULL COMMENT '区县',
|
||||
detail_address VARCHAR(255) NOT NULL COMMENT '详细地址',
|
||||
is_default BOOLEAN NOT NULL DEFAULT FALSE COMMENT '是否默认地址',
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
PRIMARY KEY (id),
|
||||
INDEX idx_user_id (user_id)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='收货地址表';
|
||||
```
|
||||
|
||||
## 8. 优惠券表(coupons)
|
||||
|
||||
存储商城的优惠券信息。
|
||||
|
||||
```sql
|
||||
CREATE TABLE coupons (
|
||||
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
name VARCHAR(100) NOT NULL COMMENT '优惠券名称',
|
||||
type ENUM('DISCOUNT', 'FIXED_AMOUNT') NOT NULL COMMENT '优惠券类型',
|
||||
value DECIMAL(10,2) NOT NULL COMMENT '优惠值(折扣率或固定金额)',
|
||||
min_amount DECIMAL(10,2) COMMENT '使用最低金额',
|
||||
max_discount_amount DECIMAL(10,2) COMMENT '最大折扣金额',
|
||||
total_quantity INT NOT NULL COMMENT '总发行量',
|
||||
issued_quantity INT NOT NULL DEFAULT 0 COMMENT '已发行数量',
|
||||
used_quantity INT NOT NULL DEFAULT 0 COMMENT '已使用数量',
|
||||
start_time TIMESTAMP NOT NULL COMMENT '生效开始时间',
|
||||
end_time TIMESTAMP NOT NULL COMMENT '生效结束时间',
|
||||
适用范围 JSON COMMENT '适用范围(商品ID列表或分类ID列表)',
|
||||
status ENUM('ACTIVE', 'INACTIVE', 'EXPIRED') NOT NULL DEFAULT 'ACTIVE' COMMENT '状态',
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
PRIMARY KEY (id),
|
||||
INDEX idx_status (status),
|
||||
INDEX idx_start_time (start_time),
|
||||
INDEX idx_end_time (end_time)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='优惠券表';
|
||||
```
|
||||
|
||||
## 9. 用户优惠券表(user_coupons)
|
||||
|
||||
存储用户领取的优惠券信息。
|
||||
|
||||
```sql
|
||||
CREATE TABLE user_coupons (
|
||||
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
user_id BIGINT UNSIGNED NOT NULL COMMENT '用户ID(关联user_center_service的用户ID)',
|
||||
coupon_id BIGINT UNSIGNED NOT NULL COMMENT '优惠券ID',
|
||||
status ENUM('AVAILABLE', 'USED', 'EXPIRED') NOT NULL DEFAULT 'AVAILABLE' COMMENT '状态',
|
||||
received_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '领取时间',
|
||||
used_at TIMESTAMP NULL COMMENT '使用时间',
|
||||
order_id BIGINT UNSIGNED NULL COMMENT '使用的订单ID',
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
PRIMARY KEY (id),
|
||||
INDEX idx_user_id (user_id),
|
||||
INDEX idx_coupon_id (coupon_id),
|
||||
INDEX idx_status (status)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户优惠券表';
|
||||
```
|
||||
|
||||
## 10. 商品评价表(product_reviews)
|
||||
|
||||
存储用户对商品的评价信息。
|
||||
|
||||
```sql
|
||||
CREATE TABLE product_reviews (
|
||||
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
product_id BIGINT UNSIGNED NOT NULL COMMENT '商品ID',
|
||||
user_id BIGINT UNSIGNED NOT NULL COMMENT '用户ID(关联user_center_service的用户ID)',
|
||||
order_id BIGINT UNSIGNED NOT NULL COMMENT '订单ID',
|
||||
rating TINYINT NOT NULL COMMENT '评分(1-5星)',
|
||||
content TEXT COMMENT '评价内容',
|
||||
images JSON COMMENT '评价图片URL列表',
|
||||
is_anonymous BOOLEAN NOT NULL DEFAULT FALSE COMMENT '是否匿名',
|
||||
status ENUM('PENDING', 'APPROVED', 'REJECTED') NOT NULL DEFAULT 'PENDING' COMMENT '审核状态',
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
PRIMARY KEY (id),
|
||||
INDEX idx_product_id (product_id),
|
||||
INDEX idx_user_id (user_id),
|
||||
INDEX idx_order_id (order_id),
|
||||
INDEX idx_rating (rating),
|
||||
INDEX idx_status (status)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='商品评价表';
|
||||
```
|
||||
|
||||
## 11. 商品收藏表(product_favorites)
|
||||
|
||||
存储用户收藏的商品信息。
|
||||
|
||||
```sql
|
||||
CREATE TABLE product_favorites (
|
||||
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
user_id BIGINT UNSIGNED NOT NULL COMMENT '用户ID(关联user_center_service的用户ID)',
|
||||
product_id BIGINT UNSIGNED NOT NULL COMMENT '商品ID',
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
PRIMARY KEY (id),
|
||||
UNIQUE KEY uk_user_product (user_id, product_id),
|
||||
INDEX idx_user_id (user_id),
|
||||
INDEX idx_product_id (product_id)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='商品收藏表';
|
||||
```
|
||||
|
||||
## 12. 商品浏览记录表(product_views)
|
||||
|
||||
存储用户浏览商品的记录。
|
||||
|
||||
```sql
|
||||
CREATE TABLE product_views (
|
||||
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
user_id BIGINT UNSIGNED NOT NULL COMMENT '用户ID(关联user_center_service的用户ID)',
|
||||
product_id BIGINT UNSIGNED NOT NULL COMMENT '商品ID',
|
||||
view_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '浏览时间',
|
||||
PRIMARY KEY (id),
|
||||
INDEX idx_user_id (user_id),
|
||||
INDEX idx_product_id (product_id),
|
||||
INDEX idx_view_time (view_time)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='商品浏览记录表';
|
||||
```
|
||||
239
docs/design/database/trade_service_db_design.md
Normal file
239
docs/design/database/trade_service_db_design.md
Normal file
@@ -0,0 +1,239 @@
|
||||
# 交易服务数据库设计文档
|
||||
|
||||
## 1. 概述
|
||||
|
||||
本文档详细描述了交易服务(trade-service)的数据库设计,包括商品信息、订单管理、支付记录等核心业务数据表结构。
|
||||
|
||||
## 2. 数据库环境
|
||||
|
||||
- 数据库类型:MySQL 8.0
|
||||
- 字符集:utf8mb4
|
||||
- 排序规则:utf8mb4_unicode_ci
|
||||
- 数据库名:xlxumu_trade
|
||||
|
||||
## 3. 表结构设计
|
||||
|
||||
### 3.1 商品信息表 (products)
|
||||
|
||||
| 字段名 | 类型 | 约束 | 描述 |
|
||||
|--------|------|------|------|
|
||||
| id | BIGINT | PRIMARY KEY, AUTO_INCREMENT | 商品ID |
|
||||
| seller_id | BIGINT | NOT NULL | 卖家用户ID |
|
||||
| title | VARCHAR(200) | NOT NULL | 商品标题 |
|
||||
| description | TEXT | | 商品描述 |
|
||||
| category | VARCHAR(50) | NOT NULL | 商品分类 |
|
||||
| price | DECIMAL(10,2) | NOT NULL | 商品价格 |
|
||||
| quantity | INT | NOT NULL, DEFAULT 0 | 商品数量 |
|
||||
| status | VARCHAR(20) | NOT NULL, DEFAULT 'PENDING' | 商品状态(PENDING:待审核, APPROVED:已上架, REJECTED:已拒绝, SOLD_OUT:已售罄) |
|
||||
| images | JSON | | 商品图片URL列表 |
|
||||
| created_at | DATETIME | NOT NULL, DEFAULT CURRENT_TIMESTAMP | 创建时间 |
|
||||
| updated_at | DATETIME | NOT NULL, DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
|
||||
|
||||
索引:
|
||||
- INDEX idx_seller_id (seller_id)
|
||||
- INDEX idx_category (category)
|
||||
- INDEX idx_status (status)
|
||||
- INDEX idx_created_at (created_at)
|
||||
|
||||
### 3.2 订单表 (orders)
|
||||
|
||||
| 字段名 | 类型 | 约束 | 描述 |
|
||||
|--------|------|------|------|
|
||||
| id | BIGINT | PRIMARY KEY, AUTO_INCREMENT | 订单ID |
|
||||
| order_no | VARCHAR(32) | UNIQUE, NOT NULL | 订单编号 |
|
||||
| buyer_id | BIGINT | NOT NULL | 买家用户ID |
|
||||
| seller_id | BIGINT | NOT NULL | 卖家用户ID |
|
||||
| product_id | BIGINT | NOT NULL | 商品ID |
|
||||
| quantity | INT | NOT NULL | 购买数量 |
|
||||
| unit_price | DECIMAL(10,2) | NOT NULL | 单价 |
|
||||
| total_amount | DECIMAL(10,2) | NOT NULL | 总金额 |
|
||||
| status | VARCHAR(20) | NOT NULL, DEFAULT 'CREATED' | 订单状态(CREATED:已创建, PAID:已支付, SHIPPED:已发货, DELIVERED:已送达, COMPLETED:已完成, CANCELLED:已取消) |
|
||||
| shipping_address | TEXT | NOT NULL | 收货地址 |
|
||||
| contact_phone | VARCHAR(20) | NOT NULL | 联系电话 |
|
||||
| remark | TEXT | | 买家备注 |
|
||||
| created_at | DATETIME | NOT NULL, DEFAULT CURRENT_TIMESTAMP | 创建时间 |
|
||||
| updated_at | DATETIME | NOT NULL, DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
|
||||
|
||||
索引:
|
||||
- UNIQUE INDEX uk_order_no (order_no)
|
||||
- INDEX idx_buyer_id (buyer_id)
|
||||
- INDEX idx_seller_id (seller_id)
|
||||
- INDEX idx_product_id (product_id)
|
||||
- INDEX idx_status (status)
|
||||
- INDEX idx_created_at (created_at)
|
||||
|
||||
### 3.3 支付记录表 (payments)
|
||||
|
||||
| 字段名 | 类型 | 约束 | 描述 |
|
||||
|--------|------|------|------|
|
||||
| id | BIGINT | PRIMARY KEY, AUTO_INCREMENT | 支付ID |
|
||||
| order_id | BIGINT | NOT NULL | 关联订单ID |
|
||||
| payment_no | VARCHAR(64) | UNIQUE, NOT NULL | 支付流水号 |
|
||||
| amount | DECIMAL(10,2) | NOT NULL | 支付金额 |
|
||||
| payment_method | VARCHAR(20) | NOT NULL | 支付方式(WECHAT:微信支付, ALIPAY:支付宝, BANK:银行转账) |
|
||||
| status | VARCHAR(20) | NOT NULL, DEFAULT 'PENDING' | 支付状态(PENDING:待支付, SUCCESS:支付成功, FAILED:支付失败, REFUNDED:已退款) |
|
||||
| transaction_id | VARCHAR(100) | | 第三方支付平台交易ID |
|
||||
| paid_at | DATETIME | | 实际支付时间 |
|
||||
| created_at | DATETIME | NOT NULL, DEFAULT CURRENT_TIMESTAMP | 创建时间 |
|
||||
| updated_at | DATETIME | NOT NULL, DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
|
||||
|
||||
索引:
|
||||
- UNIQUE INDEX uk_payment_no (payment_no)
|
||||
- INDEX idx_order_id (order_id)
|
||||
- INDEX idx_transaction_id (transaction_id)
|
||||
- INDEX idx_status (status)
|
||||
- INDEX idx_created_at (created_at)
|
||||
|
||||
### 3.4 物流信息表 (logistics)
|
||||
|
||||
| 字段名 | 类型 | 约束 | 描述 |
|
||||
|--------|------|------|------|
|
||||
| id | BIGINT | PRIMARY KEY, AUTO_INCREMENT | 物流ID |
|
||||
| order_id | BIGINT | UNIQUE, NOT NULL | 关联订单ID |
|
||||
| logistics_no | VARCHAR(50) | UNIQUE, NOT NULL | 物流单号 |
|
||||
| company | VARCHAR(50) | NOT NULL | 物流公司 |
|
||||
| status | VARCHAR(20) | NOT NULL, DEFAULT 'PREPARING' | 物流状态(PREPARING:备货中, SHIPPED:已发货, IN_TRANSIT:运输中, DELIVERED:已送达) |
|
||||
| sender_info | TEXT | NOT NULL | 发货人信息 |
|
||||
| receiver_info | TEXT | NOT NULL | 收货人信息 |
|
||||
| shipped_at | DATETIME | | 发货时间 |
|
||||
| delivered_at | DATETIME | | 送达时间 |
|
||||
| tracking_info | JSON | | 物流跟踪信息 |
|
||||
| created_at | DATETIME | NOT NULL, DEFAULT CURRENT_TIMESTAMP | 创建时间 |
|
||||
| updated_at | DATETIME | NOT NULL, DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
|
||||
|
||||
索引:
|
||||
- UNIQUE INDEX uk_order_id (order_id)
|
||||
- UNIQUE INDEX uk_logistics_no (logistics_no)
|
||||
- INDEX idx_company (company)
|
||||
- INDEX idx_status (status)
|
||||
- INDEX idx_created_at (created_at)
|
||||
|
||||
## 4. 表关系说明
|
||||
|
||||
1. 一个商品可以对应多个订单项(一对多)
|
||||
2. 一个订单对应一个支付记录(一对一)
|
||||
3. 一个订单对应一个物流信息(一对一)
|
||||
4. 用户与商品、订单等通过用户ID关联
|
||||
|
||||
## 5. 数据初始化
|
||||
|
||||
### 5.1 商品状态枚举值
|
||||
- PENDING: 待审核
|
||||
- APPROVED: 已上架
|
||||
- REJECTED: 已拒绝
|
||||
- SOLD_OUT: 已售罄
|
||||
|
||||
### 5.2 订单状态流转
|
||||
- CREATED -> PAID -> SHIPPED -> DELIVERED -> COMPLETED
|
||||
- CREATED -> CANCELLED
|
||||
- PAID -> CANCELLED (特殊情况下)
|
||||
|
||||
### 5.3 支付状态枚举值
|
||||
- PENDING: 待支付
|
||||
- SUCCESS: 支付成功
|
||||
- FAILED: 支付失败
|
||||
- REFUNDED: 已退款
|
||||
|
||||
### 5.4 物流状态枚举值
|
||||
- PREPARING: 备货中
|
||||
- SHIPPED: 已发货
|
||||
- IN_TRANSIT: 运输中
|
||||
- DELIVERED: 已送达
|
||||
|
||||
## 6. SQL脚本
|
||||
|
||||
```sql
|
||||
-- 创建数据库
|
||||
CREATE DATABASE IF NOT EXISTS xlxumu_trade
|
||||
CHARACTER SET utf8mb4
|
||||
COLLATE utf8mb4_unicode_ci;
|
||||
|
||||
USE xlxumu_trade;
|
||||
|
||||
-- 商品信息表
|
||||
CREATE TABLE products (
|
||||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||||
seller_id BIGINT NOT NULL,
|
||||
title VARCHAR(200) NOT NULL,
|
||||
description TEXT,
|
||||
category VARCHAR(50) NOT NULL,
|
||||
price DECIMAL(10,2) NOT NULL,
|
||||
quantity INT NOT NULL DEFAULT 0,
|
||||
status VARCHAR(20) NOT NULL DEFAULT 'PENDING',
|
||||
images JSON,
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
|
||||
INDEX idx_seller_id (seller_id),
|
||||
INDEX idx_category (category),
|
||||
INDEX idx_status (status),
|
||||
INDEX idx_created_at (created_at)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- 订单表
|
||||
CREATE TABLE orders (
|
||||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||||
order_no VARCHAR(32) UNIQUE NOT NULL,
|
||||
buyer_id BIGINT NOT NULL,
|
||||
seller_id BIGINT NOT NULL,
|
||||
product_id BIGINT NOT NULL,
|
||||
quantity INT NOT NULL,
|
||||
unit_price DECIMAL(10,2) NOT NULL,
|
||||
total_amount DECIMAL(10,2) NOT NULL,
|
||||
status VARCHAR(20) NOT NULL DEFAULT 'CREATED',
|
||||
shipping_address TEXT NOT NULL,
|
||||
contact_phone VARCHAR(20) NOT NULL,
|
||||
remark TEXT,
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
|
||||
UNIQUE INDEX uk_order_no (order_no),
|
||||
INDEX idx_buyer_id (buyer_id),
|
||||
INDEX idx_seller_id (seller_id),
|
||||
INDEX idx_product_id (product_id),
|
||||
INDEX idx_status (status),
|
||||
INDEX idx_created_at (created_at)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- 支付记录表
|
||||
CREATE TABLE payments (
|
||||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||||
order_id BIGINT NOT NULL,
|
||||
payment_no VARCHAR(64) UNIQUE NOT NULL,
|
||||
amount DECIMAL(10,2) NOT NULL,
|
||||
payment_method VARCHAR(20) NOT NULL,
|
||||
status VARCHAR(20) NOT NULL DEFAULT 'PENDING',
|
||||
transaction_id VARCHAR(100),
|
||||
paid_at DATETIME,
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
|
||||
UNIQUE INDEX uk_payment_no (payment_no),
|
||||
INDEX idx_order_id (order_id),
|
||||
INDEX idx_transaction_id (transaction_id),
|
||||
INDEX idx_status (status),
|
||||
INDEX idx_created_at (created_at)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- 物流信息表
|
||||
CREATE TABLE logistics (
|
||||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||||
order_id BIGINT UNIQUE NOT NULL,
|
||||
logistics_no VARCHAR(50) UNIQUE NOT NULL,
|
||||
company VARCHAR(50) NOT NULL,
|
||||
status VARCHAR(20) NOT NULL DEFAULT 'PREPARING',
|
||||
sender_info TEXT NOT NULL,
|
||||
receiver_info TEXT NOT NULL,
|
||||
shipped_at DATETIME,
|
||||
delivered_at DATETIME,
|
||||
tracking_info JSON,
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
|
||||
UNIQUE INDEX uk_order_id (order_id),
|
||||
UNIQUE INDEX uk_logistics_no (logistics_no),
|
||||
INDEX idx_company (company),
|
||||
INDEX idx_status (status),
|
||||
INDEX idx_created_at (created_at)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
```
|
||||
367
docs/design/database/user_center_service_db_design.md
Normal file
367
docs/design/database/user_center_service_db_design.md
Normal file
@@ -0,0 +1,367 @@
|
||||
# 用户中心服务数据库设计文档
|
||||
|
||||
## 1. 数据库环境说明
|
||||
|
||||
- 数据库名称: xlxumu_user
|
||||
- 字符集: utf8mb4
|
||||
- 排序规则: utf8mb4_unicode_ci
|
||||
|
||||
## 2. 表结构设计
|
||||
|
||||
### 2.1 用户基本信息表(users)
|
||||
|
||||
存储用户的基本信息。
|
||||
|
||||
```sql
|
||||
CREATE TABLE `users` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '用户ID',
|
||||
`username` VARCHAR(50) NOT NULL COMMENT '用户名',
|
||||
`email` VARCHAR(100) NOT NULL COMMENT '邮箱',
|
||||
`phone` VARCHAR(20) DEFAULT NULL COMMENT '手机号',
|
||||
`password_hash` VARCHAR(255) NOT NULL COMMENT '密码哈希值',
|
||||
`nickname` VARCHAR(100) DEFAULT NULL COMMENT '昵称',
|
||||
`avatar_url` VARCHAR(255) DEFAULT NULL COMMENT '头像URL',
|
||||
`gender` TINYINT DEFAULT NULL COMMENT '性别(0-未知,1-男,2-女)',
|
||||
`birthday` DATE DEFAULT NULL COMMENT '生日',
|
||||
`real_name` VARCHAR(100) DEFAULT NULL COMMENT '真实姓名',
|
||||
`id_card_number` VARCHAR(50) DEFAULT NULL COMMENT '身份证号',
|
||||
`status` TINYINT NOT NULL DEFAULT '1' COMMENT '状态(1-正常,2-禁用)',
|
||||
`last_login_at` TIMESTAMP NULL DEFAULT NULL COMMENT '最后登录时间',
|
||||
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_username` (`username`),
|
||||
UNIQUE KEY `uk_email` (`email`),
|
||||
KEY `idx_phone` (`phone`),
|
||||
KEY `idx_status` (`status`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户基本信息表';
|
||||
```
|
||||
|
||||
### 2.2 用户角色表(roles)
|
||||
|
||||
存储系统中的角色信息。
|
||||
|
||||
```sql
|
||||
CREATE TABLE `roles` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '角色ID',
|
||||
`name` VARCHAR(50) NOT NULL COMMENT '角色名称',
|
||||
`description` VARCHAR(255) DEFAULT NULL COMMENT '角色描述',
|
||||
`status` TINYINT NOT NULL DEFAULT '1' COMMENT '状态(1-正常,2-禁用)',
|
||||
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_name` (`name`),
|
||||
KEY `idx_status` (`status`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户角色表';
|
||||
```
|
||||
|
||||
### 2.3 用户角色关联表(user_roles)
|
||||
|
||||
存储用户与角色的关联关系。
|
||||
|
||||
```sql
|
||||
CREATE TABLE `user_roles` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
`user_id` BIGINT UNSIGNED NOT NULL COMMENT '用户ID',
|
||||
`role_id` BIGINT UNSIGNED NOT NULL COMMENT '角色ID',
|
||||
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_user_role` (`user_id`, `role_id`),
|
||||
KEY `idx_user_id` (`user_id`),
|
||||
KEY `idx_role_id` (`role_id`),
|
||||
CONSTRAINT `fk_user_roles_user_id` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE,
|
||||
CONSTRAINT `fk_user_roles_role_id` FOREIGN KEY (`role_id`) REFERENCES `roles` (`id`) ON DELETE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户角色关联表';
|
||||
```
|
||||
|
||||
### 2.4 权限表(permissions)
|
||||
|
||||
存储系统中的权限信息。
|
||||
|
||||
```sql
|
||||
CREATE TABLE `permissions` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '权限ID',
|
||||
`name` VARCHAR(100) NOT NULL COMMENT '权限名称',
|
||||
`code` VARCHAR(100) NOT NULL COMMENT '权限编码',
|
||||
`description` VARCHAR(255) DEFAULT NULL COMMENT '权限描述',
|
||||
`status` TINYINT NOT NULL DEFAULT '1' COMMENT '状态(1-正常,2-禁用)',
|
||||
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_code` (`code`),
|
||||
KEY `idx_status` (`status`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='权限表';
|
||||
```
|
||||
|
||||
### 2.5 角色权限关联表(role_permissions)
|
||||
|
||||
存储角色与权限的关联关系。
|
||||
|
||||
```sql
|
||||
CREATE TABLE `role_permissions` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
`role_id` BIGINT UNSIGNED NOT NULL COMMENT '角色ID',
|
||||
`permission_id` BIGINT UNSIGNED NOT NULL COMMENT '权限ID',
|
||||
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_role_permission` (`role_id`, `permission_id`),
|
||||
KEY `idx_role_id` (`role_id`),
|
||||
KEY `idx_permission_id` (`permission_id`),
|
||||
CONSTRAINT `fk_role_permissions_role_id` FOREIGN KEY (`role_id`) REFERENCES `roles` (`id`) ON DELETE CASCADE,
|
||||
CONSTRAINT `fk_role_permissions_permission_id` FOREIGN KEY (`permission_id`) REFERENCES `permissions` (`id`) ON DELETE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='角色权限关联表';
|
||||
```
|
||||
|
||||
### 2.6 用户地址表(user_addresses)
|
||||
|
||||
存储用户的收货地址信息。
|
||||
|
||||
```sql
|
||||
CREATE TABLE `user_addresses` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '地址ID',
|
||||
`user_id` BIGINT UNSIGNED NOT NULL COMMENT '用户ID',
|
||||
`name` VARCHAR(50) NOT NULL COMMENT '收货人姓名',
|
||||
`phone` VARCHAR(20) NOT NULL COMMENT '收货人电话',
|
||||
`province` VARCHAR(50) NOT NULL COMMENT '省份',
|
||||
`city` VARCHAR(50) NOT NULL COMMENT '城市',
|
||||
`district` VARCHAR(50) NOT NULL COMMENT '区/县',
|
||||
`detail_address` VARCHAR(255) NOT NULL COMMENT '详细地址',
|
||||
`is_default` TINYINT NOT NULL DEFAULT '0' COMMENT '是否默认地址(0-否,1-是)',
|
||||
`status` TINYINT NOT NULL DEFAULT '1' COMMENT '状态(1-正常,2-删除)',
|
||||
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_user_id` (`user_id`),
|
||||
KEY `idx_status` (`status`),
|
||||
CONSTRAINT `fk_user_addresses_user_id` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户地址表';
|
||||
```
|
||||
|
||||
### 2.7 用户积分记录表(user_points_records)
|
||||
|
||||
存储用户的积分变动记录。
|
||||
|
||||
```sql
|
||||
CREATE TABLE `user_points_records` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '记录ID',
|
||||
`user_id` BIGINT UNSIGNED NOT NULL COMMENT '用户ID',
|
||||
`change_type` TINYINT NOT NULL COMMENT '变动类型(1-增加,2-减少)',
|
||||
`points` INT NOT NULL COMMENT '积分数量',
|
||||
`balance` INT NOT NULL COMMENT '变动后余额',
|
||||
`description` VARCHAR(255) DEFAULT NULL COMMENT '描述',
|
||||
`related_id` BIGINT UNSIGNED DEFAULT NULL COMMENT '关联ID(如订单ID)',
|
||||
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_user_id` (`user_id`),
|
||||
KEY `idx_created_at` (`created_at`),
|
||||
CONSTRAINT `fk_user_points_records_user_id` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户积分记录表';
|
||||
```
|
||||
|
||||
### 2.8 用户等级表(user_levels)
|
||||
|
||||
存储用户等级信息。
|
||||
|
||||
```sql
|
||||
CREATE TABLE `user_levels` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '等级ID',
|
||||
`level` INT NOT NULL COMMENT '等级',
|
||||
`name` VARCHAR(50) NOT NULL COMMENT '等级名称',
|
||||
`min_points` INT NOT NULL COMMENT '所需最低积分',
|
||||
`discount_rate` DECIMAL(3,2) NOT NULL DEFAULT '1.00' COMMENT '折扣率(如0.95表示95折)',
|
||||
`description` VARCHAR(255) DEFAULT NULL COMMENT '等级描述',
|
||||
`status` TINYINT NOT NULL DEFAULT '1' COMMENT '状态(1-正常,2-禁用)',
|
||||
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_level` (`level`),
|
||||
KEY `idx_status` (`status`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户等级表';
|
||||
```
|
||||
|
||||
### 2.9 用户等级记录表(user_level_records)
|
||||
|
||||
存储用户等级变更记录。
|
||||
|
||||
```sql
|
||||
CREATE TABLE `user_level_records` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '记录ID',
|
||||
`user_id` BIGINT UNSIGNED NOT NULL COMMENT '用户ID',
|
||||
`from_level` INT DEFAULT NULL COMMENT '原等级',
|
||||
`to_level` INT NOT NULL COMMENT '新等级',
|
||||
`change_reason` VARCHAR(255) DEFAULT NULL COMMENT '变更原因',
|
||||
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_user_id` (`user_id`),
|
||||
KEY `idx_created_at` (`created_at`),
|
||||
CONSTRAINT `fk_user_level_records_user_id` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户等级记录表';
|
||||
```
|
||||
|
||||
### 2.10 登录日志表(login_logs)
|
||||
|
||||
存储用户登录日志。
|
||||
|
||||
```sql
|
||||
CREATE TABLE `login_logs` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '日志ID',
|
||||
`user_id` BIGINT UNSIGNED NOT NULL COMMENT '用户ID',
|
||||
`ip_address` VARCHAR(45) NOT NULL COMMENT 'IP地址',
|
||||
`user_agent` TEXT DEFAULT NULL COMMENT '用户代理',
|
||||
`login_status` TINYINT NOT NULL DEFAULT '1' COMMENT '登录状态(1-成功,2-失败)',
|
||||
`failure_reason` VARCHAR(255) DEFAULT NULL COMMENT '失败原因',
|
||||
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_user_id` (`user_id`),
|
||||
KEY `idx_ip_address` (`ip_address`),
|
||||
KEY `idx_created_at` (`created_at`),
|
||||
CONSTRAINT `fk_login_logs_user_id` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='登录日志表';
|
||||
```
|
||||
|
||||
### 2.11 操作日志表(operation_logs)
|
||||
|
||||
存储用户操作日志。
|
||||
|
||||
```sql
|
||||
CREATE TABLE `operation_logs` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '日志ID',
|
||||
`user_id` BIGINT UNSIGNED NOT NULL COMMENT '用户ID',
|
||||
`module` VARCHAR(50) NOT NULL COMMENT '操作模块',
|
||||
`operation` VARCHAR(50) NOT NULL COMMENT '操作类型',
|
||||
`resource_id` BIGINT UNSIGNED DEFAULT NULL COMMENT '资源ID',
|
||||
`request_method` VARCHAR(10) NOT NULL COMMENT '请求方法',
|
||||
`request_url` VARCHAR(255) NOT NULL COMMENT '请求URL',
|
||||
`request_params` TEXT DEFAULT NULL COMMENT '请求参数',
|
||||
`ip_address` VARCHAR(45) NOT NULL COMMENT 'IP地址',
|
||||
`user_agent` TEXT DEFAULT NULL COMMENT '用户代理',
|
||||
`execution_time` INT NOT NULL COMMENT '执行时间(毫秒)',
|
||||
`status` TINYINT NOT NULL DEFAULT '1' COMMENT '操作状态(1-成功,2-失败)',
|
||||
`error_message` TEXT DEFAULT NULL COMMENT '错误信息',
|
||||
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_user_id` (`user_id`),
|
||||
KEY `idx_module` (`module`),
|
||||
KEY `idx_created_at` (`created_at`),
|
||||
CONSTRAINT `fk_operation_logs_user_id` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='操作日志表';
|
||||
```
|
||||
|
||||
### 2.12 用户认证信息表(user_auths)
|
||||
|
||||
存储用户的第三方认证信息。
|
||||
|
||||
```sql
|
||||
CREATE TABLE `user_auths` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '认证ID',
|
||||
`user_id` BIGINT UNSIGNED NOT NULL COMMENT '用户ID',
|
||||
`auth_type` VARCHAR(20) NOT NULL COMMENT '认证类型(wechat,alipay,qq等)',
|
||||
`auth_id` VARCHAR(100) NOT NULL COMMENT '第三方用户ID',
|
||||
`auth_name` VARCHAR(100) DEFAULT NULL COMMENT '第三方用户名',
|
||||
`auth_avatar` VARCHAR(255) DEFAULT NULL COMMENT '第三方用户头像',
|
||||
`access_token` TEXT DEFAULT NULL COMMENT '访问令牌',
|
||||
`refresh_token` TEXT DEFAULT NULL COMMENT '刷新令牌',
|
||||
`expires_at` TIMESTAMP NULL DEFAULT NULL COMMENT '过期时间',
|
||||
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_auth_type_auth_id` (`auth_type`, `auth_id`),
|
||||
KEY `idx_user_id` (`user_id`),
|
||||
CONSTRAINT `fk_user_auths_user_id` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户认证信息表';
|
||||
```
|
||||
|
||||
### 2.13 用户设备表(user_devices)
|
||||
|
||||
存储用户绑定的设备信息。
|
||||
|
||||
```sql
|
||||
CREATE TABLE `user_devices` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '设备ID',
|
||||
`user_id` BIGINT UNSIGNED NOT NULL COMMENT '用户ID',
|
||||
`device_id` VARCHAR(100) NOT NULL COMMENT '设备ID',
|
||||
`device_type` VARCHAR(50) NOT NULL COMMENT '设备类型',
|
||||
`device_name` VARCHAR(100) DEFAULT NULL COMMENT '设备名称',
|
||||
`push_token` VARCHAR(255) DEFAULT NULL COMMENT '推送令牌',
|
||||
`last_login_at` TIMESTAMP NULL DEFAULT NULL COMMENT '最后登录时间',
|
||||
`status` TINYINT NOT NULL DEFAULT '1' COMMENT '状态(1-正常,2-禁用)',
|
||||
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_user_device` (`user_id`, `device_id`),
|
||||
KEY `idx_user_id` (`user_id`),
|
||||
KEY `idx_device_id` (`device_id`),
|
||||
CONSTRAINT `fk_user_devices_user_id` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户设备表';
|
||||
```
|
||||
|
||||
### 2.14 用户消息表(user_messages)
|
||||
|
||||
存储用户的消息。
|
||||
|
||||
```sql
|
||||
CREATE TABLE `user_messages` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '消息ID',
|
||||
`user_id` BIGINT UNSIGNED NOT NULL COMMENT '用户ID',
|
||||
`title` VARCHAR(255) NOT NULL COMMENT '消息标题',
|
||||
`content` TEXT NOT NULL COMMENT '消息内容',
|
||||
`message_type` TINYINT NOT NULL DEFAULT '1' COMMENT '消息类型(1-系统消息,2-通知,3-营销)',
|
||||
`is_read` TINYINT NOT NULL DEFAULT '0' COMMENT '是否已读(0-未读,1-已读)',
|
||||
`read_at` TIMESTAMP NULL DEFAULT NULL COMMENT '阅读时间',
|
||||
`status` TINYINT NOT NULL DEFAULT '1' COMMENT '状态(1-正常,2-删除)',
|
||||
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_user_id` (`user_id`),
|
||||
KEY `idx_is_read` (`is_read`),
|
||||
KEY `idx_status` (`status`),
|
||||
CONSTRAINT `fk_user_messages_user_id` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户消息表';
|
||||
```
|
||||
|
||||
### 2.15 用户消息模板表(message_templates)
|
||||
|
||||
存储消息模板。
|
||||
|
||||
```sql
|
||||
CREATE TABLE `message_templates` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '模板ID',
|
||||
`code` VARCHAR(50) NOT NULL COMMENT '模板编码',
|
||||
`name` VARCHAR(100) NOT NULL COMMENT '模板名称',
|
||||
`title` VARCHAR(255) NOT NULL COMMENT '消息标题',
|
||||
`content` TEXT NOT NULL COMMENT '消息内容',
|
||||
`message_type` TINYINT NOT NULL DEFAULT '1' COMMENT '消息类型(1-系统消息,2-通知,3-营销)',
|
||||
`status` TINYINT NOT NULL DEFAULT '1' COMMENT '状态(1-正常,2-禁用)',
|
||||
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_code` (`code`),
|
||||
KEY `idx_status` (`status`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户消息模板表';
|
||||
```
|
||||
|
||||
### 2.16 用户反馈表(user_feedbacks)
|
||||
|
||||
存储用户的反馈信息。
|
||||
|
||||
```sql
|
||||
CREATE TABLE `user_feedbacks` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '反馈ID',
|
||||
`user_id` BIGINT UNSIGNED NOT NULL COMMENT '用户ID',
|
||||
`title` VARCHAR(255) NOT NULL COMMENT '反馈标题',
|
||||
`content` TEXT NOT NULL COMMENT '反馈内容',
|
||||
`contact_info` VARCHAR(255) DEFAULT NULL COMMENT '联系方式',
|
||||
`category` VARCHAR(50) DEFAULT NULL COMMENT '反馈分类',
|
||||
`status` TINYINT NOT NULL DEFAULT '1' COMMENT '状态(1-待处理,2-处理中,3-已解决,4-已关闭)',
|
||||
`reply_content` TEXT DEFAULT NULL COMMENT '回复内容',
|
||||
`reply_user_id` BIGINT UNSIGNED DEFAULT NULL COMMENT '回复用户ID',
|
||||
`replied_at` TIMESTAMP NULL DEFAULT NULL COMMENT '回复时间',
|
||||
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_user_id` (`user_id`),
|
||||
KEY `idx_status` (`status`),
|
||||
CONSTRAINT `fk_user_feedbacks_user_id` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE,
|
||||
CONSTRAINT `fk_user_feedbacks_reply_user_id` FOREIGN KEY (`reply_user_id`) REFERENCES `users` (`id`) ON DELETE SET NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户反馈表';
|
||||
```
|
||||
Reference in New Issue
Block a user