Files
MTKJPAY/mt-pay/database
qiube 84f74861bb feat(database): 初始化客户订单表结构
- 创建 customer_order 表,包含订单基本信息、客户信息、收货地址、支付信息等字段
- 设置订单状态和支付状态的默认值及注释说明
- 添加索引以优化查询性能,包括订单号、商品ID、状态和创建时间
- 指定表的存储引擎为 InnoDB,字符集为 utf8mb4

feat(common): 新增SKU状态枚举类

- 定义 SkuStatus 枚举,包含 ACTIVE 和 INACTIVE 两种状态
- 提供 getCode 和 getDescription 方法获取状态码和描述
- 实现 fromCode 静态方法用于根据状态码获取对应的枚举实例

docs(startup): 编写后端服务启动说明文档

- 添加启动后端服务的详细步骤和注意事项
- 说明正确的启动类位置及如何验证启动是否成功
- 提供常见问题诊断方法和解决方案
- 包含使用IDE、Maven命令和打包后的启动方式

feat(util): 新增字符串工具类

- 实现 isEmpty、isNotEmpty、isBlank、isNotBlank 等判断方法
- 提供 trim 方法去除字符串两端空白
- 添加 defaultIfEmpty 方法在字符串为空时返回默认值

docs(architecture): 编写系统架构完整性说明文档

- 描述后端和前端的完整架构组成及检查清单
- 说明系统的统一规范、代码复用、可扩展性和可维护性特点
- 展示包结构总览和最佳实践建议
- 对系统完整性进行评分并给出总结评价

docs(troubleshooting): 编写后端启动问题排查指南

- 针对前端无法连接后端的问题提供详细的排查流程
- 介绍多种启动后端服务的方法及常见失败原因
- 提供快速诊断命令和日志检查建议
- 列出需要提供的错误信息以便进一步协助

feat(config): 新增Web配置类支持跨域访问

- 配置 CORS 跨域资源共享规则,允许所有来源访问 /api/** 路径
- 设置允许的请求方法、请求头和凭证信息
- 添加日志记录跨域配置的过程和结果
2025-12-22 18:13:33 +08:00
..

数据库建表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_idstatuscreate_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_idmerchant_transaction_idrecord_typecreate_time

执行方式

方式1直接执行SQL文件

mysql -u用户名 -p密码 数据库名 < schema.sql

方式2在MySQL客户端中执行

-- 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_id64字符根据PingPong文档
  • transaction_id64字符根据PingPong文档
  • token255字符根据PingPong文档
  • payment_url500字符URL可能较长
  • remark500字符备注信息
  • description500字符响应描述
  • request_data/response_dataTEXT类型JSON数据可能很长

索引优化建议

  1. 查询优化:根据实际查询场景添加复合索引
  2. 时间范围查询create_time 索引有助于时间范围查询
  3. 状态查询status 索引有助于按状态筛选订单
  4. 关联查询transaction_idmerchant_transaction_id 索引有助于关联查询

数据备份建议

  1. 定期备份数据库
  2. 重要操作前先备份
  3. 使用 mysqldump 命令备份:
mysqldump -u用户名 -p密码 数据库名 > backup_$(date +%Y%m%d).sql

版本更新

如果后续需要修改表结构,建议:

  1. 创建迁移SQL文件migration_v1.1.sql
  2. 使用 ALTER TABLE 语句修改
  3. 记录版本变更日志