Files
MTKJPAY/mt-pay/database/README.md
qiube 19b53f0ed1 feat(config): 初始化项目配置文件
- 添加 application.yml 主配置文件,配置 Spring、Druid、MyBatis-Plus 等基础设置
- 添加 application-dev.yml 开发环境配置,配置数据源及 PingPong 沙箱参数
- 添加数据库建表及配置说明文档(README.md、README_DATABASE.md、README_PRODUCT.md)
- 添加商品表结构定义及示例数据说明
- 添加支付相关枚举类 RecordType 和充值信息 DTO RechargeDTO
- 添加日志文件 mt-pay.2025-12-19.log 用于记录系统启动异常信息
2025-12-22 10:18:59 +08:00

123 lines
3.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 数据库建表SQL说明
## 文件说明
- `schema.sql` - 完整的数据库建表SQL脚本
## 表结构说明
### 1. payment_order支付订单表
**表说明**:存储支付订单的完整信息
**主要字段**
- `id` - 主键ID自增
- `merchant_transaction_id` - 商户订单号(唯一索引)
- `transaction_id` - PingPong交易流水号
- `amount` - 交易金额DECIMAL(12,2)
- `currency` - 交易币种3位ISO 4217代码
- `payment_type` - 交易类型SALE/AUTH
- `status` - 订单状态PENDING/SUCCESS/FAILED/REVIEW/CANCELLED
- `token` - PingPong返回的token
- `payment_url` - 支付收银台地址
- `create_time` - 创建时间(自动填充)
- `update_time` - 更新时间(自动更新)
**索引**
- 主键:`id`
- 唯一索引:`merchant_transaction_id`
- 普通索引:`transaction_id``status``create_time`
### 2. payment_record支付记录表
**表说明**:记录所有支付相关操作(回调、查询等)
**主要字段**
- `id` - 主键ID自增
- `transaction_id` - PingPong交易流水号
- `merchant_transaction_id` - 商户订单号
- `record_type` - 记录类型CHECKOUT/CALLBACK/QUERY/REFUND/CAPTURE/VOID
- `status` - 交易状态
- `code` - 响应码
- `description` - 响应描述
- `request_data` - 原始请求数据JSONTEXT类型
- `response_data` - 原始响应数据JSONTEXT类型
- `create_time` - 创建时间(自动填充)
**索引**
- 主键:`id`
- 普通索引:`transaction_id``merchant_transaction_id``record_type``create_time`
## 执行方式
### 方式1直接执行SQL文件
```bash
mysql -u用户名 -p密码 数据库名 < schema.sql
```
### 方式2在MySQL客户端中执行
```sql
-- 1. 连接到MySQL
mysql -u用户名 -p密码
-- 2. 选择数据库
USE mtpay;
-- 3. 执行SQL文件
SOURCE /path/to/schema.sql;
```
### 方式3使用IDE工具
1. 打开数据库管理工具如Navicat、DBeaver、DataGrip等
2. 连接到数据库
3. 打开 `schema.sql` 文件
4. 执行SQL脚本
## 注意事项
1. **字符集**:使用 `utf8mb4` 字符集支持emoji和特殊字符
2. **排序规则**:使用 `utf8mb4_unicode_ci` 排序规则
3. **存储引擎**:使用 `InnoDB` 存储引擎,支持事务和外键
4. **时间字段**:使用 `DATETIME` 类型,支持自动填充和更新
5. **金额字段**:使用 `DECIMAL(12,2)` 类型,精确到分
6. **唯一约束**`merchant_transaction_id` 必须全局唯一
## 字段长度说明
- `merchant_transaction_id`64字符根据PingPong文档
- `transaction_id`64字符根据PingPong文档
- `token`255字符根据PingPong文档
- `payment_url`500字符URL可能较长
- `remark`500字符备注信息
- `description`500字符响应描述
- `request_data`/`response_data`TEXT类型JSON数据可能很长
## 索引优化建议
1. **查询优化**:根据实际查询场景添加复合索引
2. **时间范围查询**`create_time` 索引有助于时间范围查询
3. **状态查询**`status` 索引有助于按状态筛选订单
4. **关联查询**`transaction_id``merchant_transaction_id` 索引有助于关联查询
## 数据备份建议
1. 定期备份数据库
2. 重要操作前先备份
3. 使用 `mysqldump` 命令备份:
```bash
mysqldump -u用户名 -p密码 数据库名 > backup_$(date +%Y%m%d).sql
```
## 版本更新
如果后续需要修改表结构,建议:
1. 创建迁移SQL文件`migration_v1.1.sql`
2. 使用 `ALTER TABLE` 语句修改
3. 记录版本变更日志