- 创建 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/** 路径 - 设置允许的请求方法、请求头和凭证信息 - 添加日志记录跨域配置的过程和结果
数据库建表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返回的tokenpayment_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- 原始请求数据(JSON,TEXT类型)response_data- 原始响应数据(JSON,TEXT类型)create_time- 创建时间(自动填充)
索引:
- 主键:
id - 普通索引:
transaction_id、merchant_transaction_id、record_type、create_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工具
- 打开数据库管理工具(如Navicat、DBeaver、DataGrip等)
- 连接到数据库
- 打开
schema.sql文件 - 执行SQL脚本
注意事项
- 字符集:使用
utf8mb4字符集,支持emoji和特殊字符 - 排序规则:使用
utf8mb4_unicode_ci排序规则 - 存储引擎:使用
InnoDB存储引擎,支持事务和外键 - 时间字段:使用
DATETIME类型,支持自动填充和更新 - 金额字段:使用
DECIMAL(12,2)类型,精确到分 - 唯一约束:
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数据可能很长)
索引优化建议
- 查询优化:根据实际查询场景添加复合索引
- 时间范围查询:
create_time索引有助于时间范围查询 - 状态查询:
status索引有助于按状态筛选订单 - 关联查询:
transaction_id和merchant_transaction_id索引有助于关联查询
数据备份建议
- 定期备份数据库
- 重要操作前先备份
- 使用
mysqldump命令备份:
mysqldump -u用户名 -p密码 数据库名 > backup_$(date +%Y%m%d).sql
版本更新
如果后续需要修改表结构,建议:
- 创建迁移SQL文件(如:
migration_v1.1.sql) - 使用
ALTER TABLE语句修改 - 记录版本变更日志