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 用于记录系统启动异常信息
This commit is contained in:
2025-12-22 10:18:59 +08:00
parent 2d00e72637
commit 19b53f0ed1
8 changed files with 728 additions and 0 deletions

122
mt-pay/database/README.md Normal file
View File

@@ -0,0 +1,122 @@
# 数据库建表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. 记录版本变更日志