添加Swagger/OpenAPI依赖并更新用户账户管理相关的API文档注释,优化用户和管理员账户控制器的接口描述,移除不必要的字段和参数,调整数据库映射以简化用户账户管理逻辑。
This commit is contained in:
100
docs/README.md
Normal file
100
docs/README.md
Normal file
@@ -0,0 +1,100 @@
|
||||
# 游戏平台后端服务
|
||||
|
||||
基于 Spring Boot WebFlux + MyBatis + MySQL 的游戏平台后端服务。
|
||||
|
||||
## 🚀 快速开始
|
||||
|
||||
### 环境要求
|
||||
- JDK 17+
|
||||
- Maven 3.6+
|
||||
- MySQL 8.0+
|
||||
|
||||
### 启动步骤
|
||||
1. 配置数据库连接(`application.yml`)
|
||||
2. 运行 `mvn spring-boot:run`
|
||||
3. 访问 http://localhost:8080
|
||||
|
||||
## 📚 API 文档
|
||||
|
||||
### Swagger UI
|
||||
启动应用后,访问以下地址查看交互式 API 文档:
|
||||
- **Swagger UI**: http://localhost:8080/swagger-ui.html
|
||||
- **OpenAPI JSON**: http://localhost:8080/api-docs
|
||||
- **OpenAPI YAML**: http://localhost:8080/api-docs.yaml
|
||||
|
||||
### 接口分组
|
||||
- **管理员账户管理**: `/api/admin/accounts` 相关接口
|
||||
- **用户账户管理**: `/api/users` 相关接口
|
||||
|
||||
### 使用说明
|
||||
详细的使用说明请参考:[Swagger使用说明.md](docs/Swagger使用说明.md)
|
||||
|
||||
## 🔧 主要功能
|
||||
|
||||
### 用户管理
|
||||
- 用户账户的增删改查
|
||||
- 支持管理员和代理两种用户类型
|
||||
- 账户状态管理(启用/禁用)
|
||||
- 密码重置功能
|
||||
|
||||
### 认证授权
|
||||
- JWT Token 认证
|
||||
- 基于角色的权限控制
|
||||
- 安全的密码加密存储
|
||||
|
||||
## 📁 项目结构
|
||||
|
||||
```
|
||||
src/main/java/com/gameplatform/server/
|
||||
├── config/ # 配置类
|
||||
├── controller/ # 控制器
|
||||
│ ├── admin/ # 管理员接口
|
||||
│ └── ... # 其他接口
|
||||
├── service/ # 业务逻辑
|
||||
├── mapper/ # 数据访问层
|
||||
├── model/ # 数据模型
|
||||
│ ├── dto/ # 数据传输对象
|
||||
│ └── entity/ # 实体类
|
||||
└── security/ # 安全相关
|
||||
```
|
||||
|
||||
## 🔐 认证说明
|
||||
|
||||
### JWT Token
|
||||
- 访问令牌有效期:30分钟
|
||||
- 刷新令牌有效期:7天
|
||||
- 支持强制登出功能
|
||||
|
||||
### 权限控制
|
||||
- 管理员接口需要管理员权限
|
||||
- 用户接口支持公开访问(仅限AGENT类型)
|
||||
|
||||
## 📖 文档
|
||||
|
||||
- [API文档](docs/API文档.md) - 详细的API接口说明
|
||||
- [Swagger使用说明](docs/Swagger使用说明.md) - Swagger文档使用指南
|
||||
|
||||
## 🛠️ 开发
|
||||
|
||||
### 编译
|
||||
```bash
|
||||
mvn compile
|
||||
```
|
||||
|
||||
### 测试
|
||||
```bash
|
||||
mvn test
|
||||
```
|
||||
|
||||
### 打包
|
||||
```bash
|
||||
mvn package
|
||||
```
|
||||
|
||||
## 📝 更新日志
|
||||
|
||||
### v1.0.0
|
||||
- 初始版本发布
|
||||
- 基础的用户管理功能
|
||||
- JWT认证系统
|
||||
- Swagger API文档集成
|
||||
171
docs/Swagger使用说明.md
Normal file
171
docs/Swagger使用说明.md
Normal file
@@ -0,0 +1,171 @@
|
||||
# Swagger API 文档使用说明
|
||||
|
||||
## 📖 概述
|
||||
|
||||
本项目已集成 Swagger/OpenAPI 3.0,提供交互式的 API 文档界面,方便开发者和测试人员查看和测试 API 接口。
|
||||
|
||||
## 🚀 访问地址
|
||||
|
||||
启动应用后,可以通过以下地址访问 Swagger 文档:
|
||||
|
||||
- **Swagger UI 界面**: http://localhost:8080/swagger-ui.html
|
||||
- **OpenAPI JSON**: http://localhost:8080/api-docs
|
||||
- **OpenAPI YAML**: http://localhost:8080/api-docs.yaml
|
||||
|
||||
## 📋 功能特性
|
||||
|
||||
### 1. 交互式文档
|
||||
- 在线查看所有 API 接口
|
||||
- 直接在浏览器中测试接口
|
||||
- 支持请求参数验证
|
||||
- 实时查看响应结果
|
||||
|
||||
### 2. 接口分组
|
||||
- **管理员账户管理**: `/api/admin/accounts` 相关接口
|
||||
- **用户账户管理**: `/api/users` 相关接口
|
||||
|
||||
### 3. 详细文档
|
||||
- 接口描述和用途说明
|
||||
- 请求参数详细说明
|
||||
- 响应数据结构
|
||||
- 错误码说明
|
||||
|
||||
## 🔧 配置说明
|
||||
|
||||
### 配置文件
|
||||
```yaml
|
||||
# application.yml
|
||||
springdoc:
|
||||
api-docs:
|
||||
path: /api-docs
|
||||
swagger-ui:
|
||||
path: /swagger-ui.html
|
||||
tags-sorter: alpha
|
||||
operations-sorter: alpha
|
||||
doc-expansion: none
|
||||
disable-swagger-default-url: true
|
||||
display-request-duration: true
|
||||
packages-to-scan: com.gameplatform.server.controller
|
||||
```
|
||||
|
||||
### 配置参数说明
|
||||
- `tags-sorter: alpha`: 按字母顺序排序标签
|
||||
- `operations-sorter: alpha`: 按字母顺序排序操作
|
||||
- `doc-expansion: none`: 默认折叠所有接口
|
||||
- `display-request-duration: true`: 显示请求耗时
|
||||
|
||||
## 📝 使用示例
|
||||
|
||||
### 1. 查看接口列表
|
||||
1. 打开 http://localhost:8080/swagger-ui.html
|
||||
2. 选择对应的接口分组(如"管理员账户管理")
|
||||
3. 展开需要查看的接口
|
||||
|
||||
### 2. 测试接口
|
||||
1. 点击接口右侧的"Try it out"按钮
|
||||
2. 填写请求参数
|
||||
3. 点击"Execute"执行请求
|
||||
4. 查看响应结果
|
||||
|
||||
### 3. 复制接口信息
|
||||
每个接口都提供了以下信息:
|
||||
- **cURL 命令**: 可直接复制到终端执行
|
||||
- **请求 URL**: 完整的请求地址
|
||||
- **请求头**: 包含认证信息等
|
||||
- **请求体**: JSON 格式的请求数据
|
||||
- **响应示例**: 成功和失败的响应示例
|
||||
|
||||
## 🔐 认证说明
|
||||
|
||||
### Bearer Token 认证
|
||||
对于需要认证的接口,在 Swagger UI 中:
|
||||
1. 点击右上角的"Authorize"按钮
|
||||
2. 在 "Value" 字段中输入 JWT Token
|
||||
3. 格式:`Bearer your-jwt-token`
|
||||
4. 点击"Authorize"确认
|
||||
|
||||
### 获取 Token
|
||||
1. 使用登录接口获取 JWT Token
|
||||
2. 复制响应中的 `accessToken` 字段
|
||||
3. 在 Swagger UI 中配置认证
|
||||
|
||||
## 📊 接口文档结构
|
||||
|
||||
### 管理员账户管理接口
|
||||
```
|
||||
POST /api/admin/accounts # 创建账户
|
||||
GET /api/admin/accounts # 获取账户列表
|
||||
GET /api/admin/accounts/{id} # 获取账户详情
|
||||
PATCH /api/admin/accounts/{id} # 更新账户
|
||||
POST /api/admin/accounts/{id}/enable # 启用账户
|
||||
POST /api/admin/accounts/{id}/disable # 禁用账户
|
||||
POST /api/admin/accounts/{id}/reset-password # 重置密码
|
||||
```
|
||||
|
||||
### 用户账户管理接口
|
||||
```
|
||||
POST /api/users # 创建用户
|
||||
GET /api/users # 获取用户列表
|
||||
GET /api/users/{id} # 获取用户详情
|
||||
PUT /api/users/{id} # 更新用户
|
||||
POST /api/users/{id}/enable # 启用用户
|
||||
POST /api/users/{id}/disable # 禁用用户
|
||||
```
|
||||
|
||||
## 🎯 最佳实践
|
||||
|
||||
### 1. 开发阶段
|
||||
- 使用 Swagger UI 快速测试接口
|
||||
- 验证请求参数和响应格式
|
||||
- 调试认证和权限问题
|
||||
|
||||
### 2. 测试阶段
|
||||
- 导出 OpenAPI 规范文件
|
||||
- 使用 Postman 等工具导入接口
|
||||
- 编写自动化测试用例
|
||||
|
||||
### 3. 文档维护
|
||||
- 及时更新接口描述
|
||||
- 添加详细的参数说明
|
||||
- 提供完整的示例数据
|
||||
|
||||
## 🔧 自定义配置
|
||||
|
||||
### 添加新的接口分组
|
||||
```java
|
||||
@Tag(name = "新功能模块", description = "新功能模块的接口说明")
|
||||
@RestController
|
||||
@RequestMapping("/api/new-feature")
|
||||
public class NewFeatureController {
|
||||
// 接口实现
|
||||
}
|
||||
```
|
||||
|
||||
### 自定义接口描述
|
||||
```java
|
||||
@Operation(summary = "接口标题", description = "详细的接口描述")
|
||||
@Parameter(description = "参数说明")
|
||||
public ResponseEntity<?> methodName(@RequestParam String param) {
|
||||
// 实现逻辑
|
||||
}
|
||||
```
|
||||
|
||||
## 📚 相关资源
|
||||
|
||||
- [OpenAPI 3.0 规范](https://swagger.io/specification/)
|
||||
- [SpringDoc 官方文档](https://springdoc.org/)
|
||||
- [Swagger UI 配置选项](https://swagger.io/docs/open-source-tools/swagger-ui/usage/configuration/)
|
||||
|
||||
## 🆘 常见问题
|
||||
|
||||
### Q: 无法访问 Swagger UI
|
||||
A: 检查应用是否正常启动,确认端口 8080 未被占用
|
||||
|
||||
### Q: 接口显示不完整
|
||||
A: 确认控制器类在 `com.gameplatform.server.controller` 包下
|
||||
|
||||
### Q: 认证失败
|
||||
A: 检查 JWT Token 是否有效,格式是否正确
|
||||
|
||||
### Q: 参数验证失败
|
||||
A: 查看接口文档中的参数要求,确保数据格式正确
|
||||
176
docs/game.sql
176
docs/game.sql
@@ -11,7 +11,7 @@
|
||||
Target Server Version : 80043 (8.0.43)
|
||||
File Encoding : 65001
|
||||
|
||||
Date: 24/08/2025 17:24:44
|
||||
Date: 24/08/2025 19:08:50
|
||||
*/
|
||||
|
||||
SET NAMES utf8mb4;
|
||||
@@ -22,21 +22,21 @@ SET FOREIGN_KEY_CHECKS = 0;
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `agent_points_tx`;
|
||||
CREATE TABLE `agent_points_tx` (
|
||||
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`account_id` bigint UNSIGNED NOT NULL,
|
||||
`type` enum('ADD','DEDUCT') CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
|
||||
`before_points` bigint UNSIGNED NOT NULL,
|
||||
`delta_points` bigint NOT NULL,
|
||||
`after_points` bigint UNSIGNED NOT NULL,
|
||||
`reason` enum('create_links','manual','refund_no_rollback','other') CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'other',
|
||||
`ref_id` bigint UNSIGNED NULL DEFAULT NULL,
|
||||
`operator_id` bigint UNSIGNED NULL DEFAULT NULL,
|
||||
`created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
INDEX `idx_apx_account_time`(`account_id` ASC, `created_at` ASC) USING BTREE,
|
||||
INDEX `fk_apx_operator`(`operator_id` ASC) USING BTREE,
|
||||
CONSTRAINT `fk_apx_account` FOREIGN KEY (`account_id`) REFERENCES `user_account` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT,
|
||||
CONSTRAINT `fk_apx_operator` FOREIGN KEY (`operator_id`) REFERENCES `user_account` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT
|
||||
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`account_id` bigint UNSIGNED NOT NULL,
|
||||
`type` enum('ADD','DEDUCT') CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
|
||||
`before_points` bigint UNSIGNED NOT NULL,
|
||||
`delta_points` bigint NOT NULL,
|
||||
`after_points` bigint UNSIGNED NOT NULL,
|
||||
`reason` enum('create_links','manual','refund_no_rollback','other') CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'other',
|
||||
`ref_id` bigint UNSIGNED NULL DEFAULT NULL,
|
||||
`operator_id` bigint UNSIGNED NULL DEFAULT NULL,
|
||||
`created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
INDEX `idx_apx_account_time`(`account_id` ASC, `created_at` ASC) USING BTREE,
|
||||
INDEX `fk_apx_operator`(`operator_id` ASC) USING BTREE,
|
||||
CONSTRAINT `fk_apx_account` FOREIGN KEY (`account_id`) REFERENCES `user_account` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT,
|
||||
CONSTRAINT `fk_apx_operator` FOREIGN KEY (`operator_id`) REFERENCES `user_account` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
|
||||
|
||||
-- ----------------------------
|
||||
@@ -44,14 +44,14 @@ CREATE TABLE `agent_points_tx` (
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `announcement`;
|
||||
CREATE TABLE `announcement` (
|
||||
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`title` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
|
||||
`content` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
|
||||
`enabled` tinyint(1) NOT NULL DEFAULT 1,
|
||||
`jump_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
|
||||
`created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
||||
`updated_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
|
||||
PRIMARY KEY (`id`) USING BTREE
|
||||
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`title` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
|
||||
`content` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
|
||||
`enabled` tinyint(1) NOT NULL DEFAULT 1,
|
||||
`jump_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
|
||||
`created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
||||
`updated_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
|
||||
PRIMARY KEY (`id`) USING BTREE
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
|
||||
|
||||
-- ----------------------------
|
||||
@@ -59,22 +59,22 @@ CREATE TABLE `announcement` (
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `link_batch`;
|
||||
CREATE TABLE `link_batch` (
|
||||
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`agent_id` bigint UNSIGNED NOT NULL,
|
||||
`quantity` int UNSIGNED NOT NULL,
|
||||
`times` int UNSIGNED NOT NULL,
|
||||
`batch_size` int UNSIGNED NOT NULL,
|
||||
`deduct_points` bigint UNSIGNED NOT NULL,
|
||||
`operator_id` bigint UNSIGNED NULL DEFAULT NULL,
|
||||
`created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
INDEX `idx_lb_agent_time`(`agent_id` ASC, `created_at` ASC) USING BTREE,
|
||||
INDEX `fk_lb_operator`(`operator_id` ASC) USING BTREE,
|
||||
CONSTRAINT `fk_lb_agent` FOREIGN KEY (`agent_id`) REFERENCES `user_account` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT,
|
||||
CONSTRAINT `fk_lb_operator` FOREIGN KEY (`operator_id`) REFERENCES `user_account` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT,
|
||||
CONSTRAINT `chk_lb_batch_pos` CHECK (`batch_size` > 0),
|
||||
CONSTRAINT `chk_lb_quantity_pos` CHECK (`quantity` > 0),
|
||||
CONSTRAINT `chk_lb_times_pos` CHECK (`times` > 0)
|
||||
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`agent_id` bigint UNSIGNED NOT NULL,
|
||||
`quantity` int UNSIGNED NOT NULL,
|
||||
`times` int UNSIGNED NOT NULL,
|
||||
`batch_size` int UNSIGNED NOT NULL,
|
||||
`deduct_points` bigint UNSIGNED NOT NULL,
|
||||
`operator_id` bigint UNSIGNED NULL DEFAULT NULL,
|
||||
`created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
INDEX `idx_lb_agent_time`(`agent_id` ASC, `created_at` ASC) USING BTREE,
|
||||
INDEX `fk_lb_operator`(`operator_id` ASC) USING BTREE,
|
||||
CONSTRAINT `fk_lb_agent` FOREIGN KEY (`agent_id`) REFERENCES `user_account` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT,
|
||||
CONSTRAINT `fk_lb_operator` FOREIGN KEY (`operator_id`) REFERENCES `user_account` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT,
|
||||
CONSTRAINT `chk_lb_batch_pos` CHECK (`batch_size` > 0),
|
||||
CONSTRAINT `chk_lb_quantity_pos` CHECK (`quantity` > 0),
|
||||
CONSTRAINT `chk_lb_times_pos` CHECK (`times` > 0)
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
|
||||
|
||||
-- ----------------------------
|
||||
@@ -82,29 +82,29 @@ CREATE TABLE `link_batch` (
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `link_task`;
|
||||
CREATE TABLE `link_task` (
|
||||
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`batch_id` bigint UNSIGNED NOT NULL,
|
||||
`agent_id` bigint UNSIGNED NOT NULL,
|
||||
`code_no` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
|
||||
`token_hash` char(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
|
||||
`expire_at` datetime(3) NOT NULL,
|
||||
`status` enum('NEW','USING','LOGGED_IN','REFUNDED','EXPIRED') CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'NEW',
|
||||
`region` enum('Q','V') CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
|
||||
`machine_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
|
||||
`login_at` datetime(3) NULL DEFAULT NULL,
|
||||
`refund_at` datetime(3) NULL DEFAULT NULL,
|
||||
`revoked_at` datetime(3) NULL DEFAULT NULL,
|
||||
`created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
||||
`updated_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
UNIQUE INDEX `uk_code_no`(`code_no` ASC) USING BTREE,
|
||||
UNIQUE INDEX `uk_token_hash`(`token_hash` ASC) USING BTREE,
|
||||
INDEX `idx_agent_status`(`agent_id` ASC, `status` ASC) USING BTREE,
|
||||
INDEX `idx_expire_at`(`expire_at` ASC) USING BTREE,
|
||||
INDEX `idx_created_at`(`created_at` ASC) USING BTREE,
|
||||
INDEX `fk_lt_batch`(`batch_id` ASC) USING BTREE,
|
||||
CONSTRAINT `fk_lt_agent` FOREIGN KEY (`agent_id`) REFERENCES `user_account` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT,
|
||||
CONSTRAINT `fk_lt_batch` FOREIGN KEY (`batch_id`) REFERENCES `link_batch` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT
|
||||
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`batch_id` bigint UNSIGNED NOT NULL,
|
||||
`agent_id` bigint UNSIGNED NOT NULL,
|
||||
`code_no` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
|
||||
`token_hash` char(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
|
||||
`expire_at` datetime(3) NOT NULL,
|
||||
`status` enum('NEW','USING','LOGGED_IN','REFUNDED','EXPIRED') CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'NEW',
|
||||
`region` enum('Q','V') CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
|
||||
`machine_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
|
||||
`login_at` datetime(3) NULL DEFAULT NULL,
|
||||
`refund_at` datetime(3) NULL DEFAULT NULL,
|
||||
`revoked_at` datetime(3) NULL DEFAULT NULL,
|
||||
`created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
||||
`updated_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
UNIQUE INDEX `uk_code_no`(`code_no` ASC) USING BTREE,
|
||||
UNIQUE INDEX `uk_token_hash`(`token_hash` ASC) USING BTREE,
|
||||
INDEX `idx_agent_status`(`agent_id` ASC, `status` ASC) USING BTREE,
|
||||
INDEX `idx_expire_at`(`expire_at` ASC) USING BTREE,
|
||||
INDEX `idx_created_at`(`created_at` ASC) USING BTREE,
|
||||
INDEX `fk_lt_batch`(`batch_id` ASC) USING BTREE,
|
||||
CONSTRAINT `fk_lt_agent` FOREIGN KEY (`agent_id`) REFERENCES `user_account` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT,
|
||||
CONSTRAINT `fk_lt_batch` FOREIGN KEY (`batch_id`) REFERENCES `link_batch` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
|
||||
|
||||
-- ----------------------------
|
||||
@@ -112,18 +112,18 @@ CREATE TABLE `link_task` (
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `operation_log`;
|
||||
CREATE TABLE `operation_log` (
|
||||
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`actor_type` enum('admin','agent','system','user') CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
|
||||
`actor_id` bigint UNSIGNED NULL DEFAULT NULL,
|
||||
`code_no` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
|
||||
`op` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
|
||||
`detail` json NULL,
|
||||
`client_ip` varchar(45) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
|
||||
`user_agent` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
|
||||
`created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
INDEX `idx_log_code_time`(`code_no` ASC, `created_at` ASC) USING BTREE,
|
||||
INDEX `idx_log_time`(`created_at` ASC) USING BTREE
|
||||
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`actor_type` enum('admin','agent','system','user') CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
|
||||
`actor_id` bigint UNSIGNED NULL DEFAULT NULL,
|
||||
`code_no` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
|
||||
`op` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
|
||||
`detail` json NULL,
|
||||
`client_ip` varchar(45) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
|
||||
`user_agent` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
|
||||
`created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
INDEX `idx_log_code_time`(`code_no` ASC, `created_at` ASC) USING BTREE,
|
||||
INDEX `idx_log_time`(`created_at` ASC) USING BTREE
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
|
||||
|
||||
-- ----------------------------
|
||||
@@ -131,19 +131,17 @@ CREATE TABLE `operation_log` (
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `user_account`;
|
||||
CREATE TABLE `user_account` (
|
||||
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`user_type` enum('ADMIN','AGENT') CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
|
||||
`username` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
|
||||
`display_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
|
||||
`password_hash` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
|
||||
`role` enum('SUPER','ADMIN') CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
|
||||
`status` enum('ENABLED','DISABLED') CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'ENABLED',
|
||||
`points_balance` bigint UNSIGNED NOT NULL DEFAULT 0,
|
||||
`created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
||||
`updated_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
UNIQUE INDEX `username`(`username` ASC) USING BTREE,
|
||||
CONSTRAINT `chk_points_nonneg` CHECK (`points_balance` >= 0)
|
||||
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
|
||||
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`user_type` enum('ADMIN','AGENT') CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
|
||||
`username` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
|
||||
`password_hash` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
|
||||
`status` enum('ENABLED','DISABLED') CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'ENABLED',
|
||||
`points_balance` bigint UNSIGNED NOT NULL DEFAULT 0,
|
||||
`created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
||||
`updated_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
UNIQUE INDEX `username`(`username` ASC) USING BTREE,
|
||||
CONSTRAINT `chk_points_nonneg` CHECK (`points_balance` >= 0)
|
||||
) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
|
||||
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
||||
|
||||
Reference in New Issue
Block a user