14 KiB
14 KiB
Old 项目数据库表结构参考
本文档记录 old 文件夹中历史项目的数据库表结构定义。
一、login-service (后端服务)
1. users - 用户表
| 字段 | 类型 | 约束 | 说明 |
|---|---|---|---|
| id | BIGINT | PRIMARY KEY, AUTO_INCREMENT | 主键ID |
| phone_number | VARCHAR(20) | UNIQUE, NOT NULL | 手机号 |
| created_at | TIMESTAMP | DEFAULT CURRENT_TIMESTAMP | 创建时间 |
| updated_at | TIMESTAMP | DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
索引:
idx_phone_numberONphone_number
2. verification_codes - 验证码表
| 字段 | 类型 | 约束 | 说明 |
|---|---|---|---|
| id | BIGINT | PRIMARY KEY, AUTO_INCREMENT | 主键ID |
| phone_number | VARCHAR(20) | NOT NULL | 手机号 |
| code | VARCHAR(6) | NOT NULL | 验证码 |
| expiration_time | TIMESTAMP | NOT NULL | 过期时间 |
| created_at | TIMESTAMP | DEFAULT CURRENT_TIMESTAMP | 创建时间 |
索引:
idx_vc_phone_numberONphone_numberidx_vc_expirationONexpiration_time
3. user_profile - 用户资料表
| 字段 | 类型 | 约束 | 说明 |
|---|---|---|---|
| id | BIGINT | PRIMARY KEY, AUTO_INCREMENT | 主键ID |
| phone_number | VARCHAR(20) | UNIQUE, NOT NULL | 手机号 |
| nickname | VARCHAR(50) | 昵称 | |
| avatar_url | VARCHAR(500) | 头像URL | |
| signature | VARCHAR(200) | 个性签名 | |
| created_at | TIMESTAMP | DEFAULT CURRENT_TIMESTAMP | 创建时间 |
| updated_at | TIMESTAMP | DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
4. user_tokens - 用户令牌表
| 字段 | 类型 | 约束 | 说明 |
|---|---|---|---|
| id | BIGINT | PRIMARY KEY, AUTO_INCREMENT | 主键ID |
| user_id | BIGINT | NOT NULL | 用户ID |
| token | VARCHAR(255) | NOT NULL | 访问令牌 |
| refresh_token | VARCHAR(255) | 刷新令牌 | |
| expires_at | TIMESTAMP | 过期时间 | |
| created_at | TIMESTAMP | DEFAULT CURRENT_TIMESTAMP | 创建时间 |
5. user_feedback - 用户反馈表
| 字段 | 类型 | 约束 | 说明 |
|---|---|---|---|
| id | BIGINT | PRIMARY KEY, AUTO_INCREMENT | 主键ID |
| user_id | BIGINT | NOT NULL | 用户ID |
| content | TEXT | NOT NULL | 反馈内容 |
| contact | VARCHAR(100) | 联系方式 | |
| status | VARCHAR(20) | DEFAULT 'PENDING' | 处理状态 |
| created_at | TIMESTAMP | DEFAULT CURRENT_TIMESTAMP | 创建时间 |
| updated_at | TIMESTAMP | DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
6. user_coin - 用户金币表
| 字段 | 类型 | 约束 | 说明 |
|---|---|---|---|
| id | BIGINT | PRIMARY KEY, AUTO_INCREMENT | 主键ID |
| user_id | BIGINT | UNIQUE, NOT NULL | 用户ID |
| coin_count | BIGINT | DEFAULT 0 | 金币数量 |
| total_charged | BIGINT | DEFAULT 0 | 累计充值金币 |
| total_consumed | BIGINT | DEFAULT 0 | 累计消费金币 |
| created_at | TIMESTAMP | DEFAULT CURRENT_TIMESTAMP | 创建时间 |
| updated_at | TIMESTAMP | DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
7. notification - 通知表
| 字段 | 类型 | 约束 | 说明 |
|---|---|---|---|
| id | BIGINT | PRIMARY KEY, AUTO_INCREMENT | 主键ID |
| user_id | BIGINT | NOT NULL | 用户ID |
| title | VARCHAR(100) | NOT NULL | 通知标题 |
| content | TEXT | 通知内容 | |
| type | VARCHAR(20) | 通知类型 | |
| is_read | BOOLEAN | DEFAULT FALSE | 是否已读 |
| created_at | TIMESTAMP | DEFAULT CURRENT_TIMESTAMP | 创建时间 |
8. payment_record - 支付记录表
| 字段 | 类型 | 约束 | 说明 |
|---|---|---|---|
| id | BIGINT | PRIMARY KEY, AUTO_INCREMENT | 主键ID |
| user_id | BIGINT | NOT NULL | 用户ID |
| order_id | VARCHAR(64) | NOT NULL | 订单ID |
| amount | DECIMAL(10,2) | NOT NULL | 支付金额 |
| coin_amount | BIGINT | NOT NULL | 购买金币数量 |
| payment_method | VARCHAR(20) | 支付方式 | |
| status | VARCHAR(20) | NOT NULL | 支付状态 |
| transaction_id | VARCHAR(100) | 第三方交易号 | |
| paid_at | TIMESTAMP | 支付时间 | |
| created_at | TIMESTAMP | DEFAULT CURRENT_TIMESTAMP | 创建时间 |
9. payment_order - 支付订单表
| 字段 | 类型 | 约束 | 说明 |
|---|---|---|---|
| id | BIGINT | PRIMARY KEY, AUTO_INCREMENT | 主键ID |
| order_no | VARCHAR(64) | UNIQUE, NOT NULL | 订单号 |
| user_id | BIGINT | NOT NULL | 用户ID |
| product_id | VARCHAR(50) | NOT NULL | 商品ID |
| product_name | VARCHAR(100) | NOT NULL | 商品名称 |
| amount | DECIMAL(10,2) | NOT NULL | 订单金额 |
| status | VARCHAR(20) | NOT NULL | 订单状态 |
| pay_url | TEXT | 支付链接 | |
| expire_time | TIMESTAMP | 过期时间 | |
| created_at | TIMESTAMP | DEFAULT CURRENT_TIMESTAMP | 创建时间 |
| updated_at | TIMESTAMP | DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
10. sensitive_word_violations - 敏感词违规记录表
| 字段 | 类型 | 约束 | 说明 |
|---|---|---|---|
| id | BIGINT | PRIMARY KEY, AUTO_INCREMENT | 主键ID |
| user_id | BIGINT | NOT NULL, FK | 用户ID |
| content_type | VARCHAR(20) | NOT NULL | 内容类型:NICKNAME, SIGNATURE |
| violation_type | VARCHAR(30) | NOT NULL | 违规类型:POLITICAL, ILLEGAL, VULGAR, ADVERTISING, PERSONAL_ATTACK |
| detection_service | VARCHAR(20) | DEFAULT 'LOCAL' | 检测服务类型:LOCAL, ALIYUN |
| risk_level | VARCHAR(50) | 阿里云风险等级 | |
| confidence | DOUBLE | 阿里云置信度(0-1) | |
| original_content | TEXT | NOT NULL | 原始内容 |
| matched_words | TEXT | NOT NULL | 匹配到的敏感词(JSON) |
| aliyun_response | TEXT | 阿里云完整响应 | |
| client_ip | VARCHAR(45) | 客户端IP | |
| user_agent | TEXT | 用户代理 | |
| violation_time | DATETIME | NOT NULL | 违规时间 |
| created_at | DATETIME | DEFAULT CURRENT_TIMESTAMP | 创建时间 |
索引:
idx_user_idONuser_ididx_content_typeONcontent_typeidx_violation_typeONviolation_typeidx_violation_timeONviolation_timeidx_user_violation_timeON(user_id, violation_time)idx_client_ipONclient_ipidx_detection_serviceONdetection_serviceidx_risk_levelONrisk_levelidx_confidenceONconfidence
外键:
user_idREFERENCESuser_profile(id)ON DELETE CASCADE
11. user_divination_records - 用户解卦记录表
| 字段 | 类型 | 约束 | 说明 |
|---|---|---|---|
| id | BIGINT | PRIMARY KEY, AUTO_INCREMENT | 主键ID |
| user_id | BIGINT | NOT NULL | 用户ID |
| trace_id | VARCHAR(64) | NOT NULL | 请求追踪ID |
| question | TEXT | NOT NULL | 用户问题 |
| question_type | VARCHAR(50) | NOT NULL | 问题类型 |
| divination_data | LONGTEXT | NOT NULL | 卦象详情JSON |
| deepseek_request | LONGTEXT | NOT NULL | 发送给DeepSeek的请求JSON |
| deepseek_response | LONGTEXT | DeepSeek响应JSON | |
| interpretation_result | LONGTEXT | 解卦结果文本 | |
| api_success | BOOLEAN | NOT NULL, DEFAULT FALSE | API调用是否成功 |
| error_message | TEXT | 错误信息 | |
| api_duration_ms | BIGINT | API调用耗时(毫秒) | |
| phone_number | VARCHAR(20) | 用户手机号(冗余) | |
| created_at | DATETIME | NOT NULL, DEFAULT CURRENT_TIMESTAMP | 创建时间 |
索引:
idx_user_idONuser_ididx_trace_idONtrace_ididx_phone_numberONphone_numberidx_created_atONcreated_atidx_api_successONapi_successidx_question_typeONquestion_typeidx_user_createdON(user_id, created_at)
12. user_divination_history - 用户卦象历史同步表
| 字段 | 类型 | 约束 | 说明 |
|---|---|---|---|
| id | BIGINT | PRIMARY KEY, AUTO_INCREMENT | 主键ID |
| user_id | BIGINT | NOT NULL, FK | 用户ID |
| phone_number | VARCHAR(20) | NOT NULL | 用户手机号 |
| local_record_id | BIGINT | 本地记录ID | |
| json_data | LONGTEXT | NOT NULL | 卦象详情JSON |
| ai_result | LONGTEXT | NOT NULL | AI解卦结果 |
| question_type | VARCHAR(50) | NOT NULL | 问题类型 |
| question | TEXT | NOT NULL | 用户问题 |
| timestamp | BIGINT | NOT NULL | 创建时间戳(毫秒) |
| is_active | BOOLEAN | NOT NULL, DEFAULT TRUE | 是否有效 |
| sync_time | DATETIME | NOT NULL, DEFAULT CURRENT_TIMESTAMP | 同步时间 |
| updated_at | DATETIME | NOT NULL, DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
索引:
idx_user_phoneON(user_id, phone_number)idx_phone_activeON(phone_number, is_active)idx_user_active_timeON(user_id, is_active, timestamp)idx_local_recordONlocal_record_ididx_sync_timeONsync_timeidx_question_typeONquestion_type
外键:
user_idREFERENCESuser_profile(id)
13. network_access_logs - 网络访问日志表
| 字段 | 类型 | 约束 | 说明 |
|---|---|---|---|
| id | BIGINT | PRIMARY KEY, AUTO_INCREMENT | 主键ID |
| user_id | BIGINT | NULL | 用户ID |
| phone_number | VARCHAR(20) | NULL | 用户手机号 |
| client_ip | VARCHAR(45) | NOT NULL | 客户端IP |
| client_port | INT | NULL | 客户端端口 |
| server_ip | VARCHAR(45) | NOT NULL | 服务器IP |
| server_port | INT | NOT NULL | 服务器端口 |
| http_method | VARCHAR(10) | NOT NULL | 请求方法 |
| request_path | VARCHAR(500) | NOT NULL | 请求路径 |
| request_url | VARCHAR(1000) | NOT NULL | 完整请求URL |
| user_agent | VARCHAR(1000) | NULL | User-Agent |
| device_info | TEXT | NULL | 设备信息JSON |
| response_status | INT | NULL | HTTP响应状态码 |
| processing_time_ms | BIGINT | NULL | 处理耗时(毫秒) |
| request_size | BIGINT | NULL | 请求体大小(字节) |
| response_size | BIGINT | NULL | 响应体大小(字节) |
| x_forwarded_for | VARCHAR(500) | NULL | X-Forwarded-For |
| x_real_ip | VARCHAR(45) | NULL | X-Real-IP |
| referer | VARCHAR(1000) | NULL | Referer |
| operation_type | VARCHAR(50) | NULL | 操作类型 |
| operation_result | VARCHAR(20) | NULL | 操作结果 |
| error_message | TEXT | NULL | 错误信息 |
| session_id | VARCHAR(100) | NULL | 会话ID |
| access_time | DATETIME | NOT NULL | 访问时间 |
| created_at | DATETIME | NOT NULL, DEFAULT CURRENT_TIMESTAMP | 创建时间 |
索引:
idx_user_idONuser_ididx_phone_numberONphone_numberidx_client_ipONclient_ipidx_access_timeONaccess_timeidx_operation_typeONoperation_typeidx_operation_resultONoperation_resultidx_client_ip_access_timeON(client_ip, access_time)idx_user_id_access_timeON(user_id, access_time)
14. app_version - 应用版本管理表
| 字段 | 类型 | 约束 | 说明 |
|---|---|---|---|
| id | BIGINT | PRIMARY KEY, AUTO_INCREMENT | 主键ID |
| version_name | VARCHAR(20) | UNIQUE, NOT NULL | 版本名称(如v1.06) |
| version_code | INT | UNIQUE, NOT NULL | 版本号(如106) |
| min_supported_version | VARCHAR(20) | NOT NULL | 最低支持版本 |
| min_supported_code | INT | NOT NULL | 最低支持版本号 |
| is_force_update | BOOLEAN | NOT NULL, DEFAULT FALSE | 是否强制更新 |
| update_message | TEXT | 更新提示信息 | |
| download_url | VARCHAR(500) | 下载链接 | |
| is_active | BOOLEAN | NOT NULL, DEFAULT TRUE | 是否启用 |
| created_at | DATETIME | NOT NULL, DEFAULT CURRENT_TIMESTAMP | 创建时间 |
| updated_at | DATETIME | NOT NULL, DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
索引:
uk_version_nameUNIQUE ONversion_nameuk_version_codeUNIQUE ONversion_codeidx_is_activeONis_activeidx_created_atONcreated_at
二、app (Android 客户端本地 Room 数据库)
1. divination_record - 解卦记录表
| 字段 | 类型 | 约束 | 说明 |
|---|---|---|---|
| id | BIGINT | PRIMARY KEY, AUTO_INCREMENT | 主键ID |
| question_type | VARCHAR(50) | NOT NULL | 问题类型 |
| question | TEXT | NOT NULL | 用户问题 |
| hexagram_data | TEXT | NOT NULL | 卦象数据JSON |
| ai_result | TEXT | NOT NULL | AI解卦结果 |
| timestamp | BIGINT | NOT NULL | 创建时间戳 |
| is_synced | BOOLEAN | DEFAULT FALSE | 是否已同步到云端 |
| is_deleted | BOOLEAN | DEFAULT FALSE | 是否已删除 |
三、数据库初始化文件位置
| 文件 | 说明 |
|---|---|
login-service/src/main/resources/db/init.sql |
初始化表结构 |
login-service/src/main/resources/db/migration.sql |
迁移脚本 |
login-service/src/main/resources/db/migration/V1_4__Create_sensitive_word_violations_table.sql |
敏感词表创建 |
login-service/src/main/resources/db/migration/V1_5__Enhance_sensitive_word_violations_table.sql |
敏感词表增强 |
四、Entity 类位置
| Entity 类 | 表名 | 位置 |
|---|---|---|
| UsersEntity | users | login-service/src/main/kotlin/com/eryao/login/entity/UsersEntity.kt |
| VerificationCode | verification_codes | login-service/src/main/kotlin/com/eryao/login/entity/VerificationCode.kt |
| User | user_profile | login-service/src/main/kotlin/com/eryao/login/entity/User.kt |
| UserToken | user_tokens | login-service/src/main/kotlin/com/eryao/login/entity/UserToken.kt |
| UserFeedback | user_feedback | login-service/src/main/kotlin/com/eryao/login/entity/UserFeedback.kt |
| UserCoin | user_coin | login-service/src/main/kotlin/com/eryao/login/entity/UserCoin.kt |
| Notification | notification | login-service/src/main/kotlin/com/eryao/login/entity/Notification.kt |
| PaymentRecord | payment_record | login-service/src/main/kotlin/com/eryao/login/entity/PaymentRecord.kt |
| PaymentOrder | payment_order | login-service/src/main/kotlin/com/eryao/login/entity/PaymentOrder.kt |
| SensitiveWordViolation | sensitive_word_violations | login-service/src/main/kotlin/com/eryao/login/entity/SensitiveWordViolation.kt |
| DivinationRecord | user_divination_records | login-service/src/main/kotlin/com/eryao/login/entity/DivinationRecord.kt |
| DivinationHistory | user_divination_history | login-service/src/main/kotlin/com/eryao/login/entity/DivinationRecord.kt |
| NetworkAccessLog | network_access_logs | login-service/src/main/kotlin/com/eryao/login/entity/NetworkAccessLog.kt |
| AppVersion | app_version | login-service/src/main/kotlin/com/eryao/login/entity/AppVersion.kt |
| DivinationRecord (Room) | divination_record | app/src/main/java/com/example/eryaoapp/database/DivinationRecord.kt |