feat(user-center): 新增收货地址管理功能

- 添加收货地址实体类、控制器、服务类和数据访问接口
- 实现收货地址创建、获取列表、获取详情、更新和删除功能- 集成JWT认证,确保操作的安全性
- 新增相关API文档
This commit is contained in:
ylweng
2025-09-11 23:23:51 +08:00
parent 6c22882cb8
commit 33c138c839
77 changed files with 14049 additions and 139 deletions

View 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='用户反馈表';
```

View 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;
```

View 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='收获记录表';
```

View 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;
```

View 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='农产品质量认证表';
```

View 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='数据聚合表';
```

View 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='商品浏览记录表';
```

View 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;
```

View 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='用户反馈表';
```