|
|
@@ -71,3 +71,159 @@
|
|
|
- **用户界面**:
|
|
|
- 个人可查看自己的未成交订单
|
|
|
- 通过历史成交价推测合理报价
|
|
|
+
|
|
|
+## 8. 数据库表结构设计
|
|
|
+- **订单表(mex_orders)**:
|
|
|
+ - 记录用户买卖订单信息
|
|
|
+ - 包含:用户ID、商品ID、订单类型(买/卖)、数量、价格、状态、创建时间等
|
|
|
+- **系统仓库表(mex_warehouse)**:
|
|
|
+ - 记录系统商品库存
|
|
|
+ - 包含:商品ID、库存数量、更新时间等
|
|
|
+- **成交记录表(mex_transactions)**:
|
|
|
+ - 记录所有成交信息
|
|
|
+ - 包含:买方ID、卖方ID、商品ID、成交数量、成交价格、成交时间等
|
|
|
+- **价格配置表(mex_price_configs)**:
|
|
|
+ - 存储商品的最低价和最高价配置
|
|
|
+ - 包含:商品ID、最低价、最高价、保护阈值、状态等
|
|
|
+- **市场调控记录表(mex_admin_operations)**:
|
|
|
+ - 记录管理员市场调控操作
|
|
|
+ - 包含:操作类型、商品ID、数量、操作员ID、操作时间等
|
|
|
+
|
|
|
+## 9. 核心算法实现要点
|
|
|
+- **价格验证算法**:
|
|
|
+ - 卖单价格验证:price ≤ min_price
|
|
|
+ - 买单价格验证:price ≥ max_price
|
|
|
+- **撮合排序算法**:
|
|
|
+ - 一级排序:按价格从高到低(DESC)
|
|
|
+ - 二级排序:按创建时间从早到晚(ASC)
|
|
|
+ - 三级排序:按订单数量从小到大(ASC)
|
|
|
+- **数量保护算法**:
|
|
|
+ - 撮合前过滤:quantity > protection_threshold 的订单不参与
|
|
|
+ - 保护阈值对用户隐藏,防止恶意操控
|
|
|
+- **整单匹配算法**:
|
|
|
+ - 库存充足:订单完全成交
|
|
|
+ - 库存不足:订单保持等待状态,不拆分
|
|
|
+
|
|
|
+## 10. 安全机制与风控
|
|
|
+- **防刷单机制**:
|
|
|
+ - 用户订单频率限制
|
|
|
+ - 异常交易行为监控
|
|
|
+- **防操控机制**:
|
|
|
+ - 大额订单保护阈值
|
|
|
+ - 价格异常波动预警
|
|
|
+- **数据一致性保证**:
|
|
|
+ - 数据库事务确保原子性
|
|
|
+ - 库存扣减与订单状态同步更新
|
|
|
+- **异常处理机制**:
|
|
|
+ - 撮合失败回滚机制
|
|
|
+ - 系统异常时的订单状态恢复
|
|
|
+
|
|
|
+## 11. 性能优化策略
|
|
|
+- **计划任务优化**:
|
|
|
+ - 批量处理减少数据库连接
|
|
|
+ - 分页处理大量订单避免内存溢出
|
|
|
+- **数据库索引优化**:
|
|
|
+ - 订单表:(status, price, created_at) 复合索引
|
|
|
+ - 成交表:(created_at) 时间索引用于展示
|
|
|
+- **缓存策略**:
|
|
|
+ - 价格配置缓存(Redis)
|
|
|
+ - 系统库存缓存(定期同步)
|
|
|
+
|
|
|
+## 12. 监控与日志
|
|
|
+- **业务监控指标**:
|
|
|
+ - 订单成交率统计
|
|
|
+ - 平均撮合时间监控
|
|
|
+ - 系统库存变化趋势
|
|
|
+- **操作日志记录**:
|
|
|
+ - 用户下单日志
|
|
|
+ - 撮合执行日志
|
|
|
+ - 管理员操作日志
|
|
|
+- **异常告警机制**:
|
|
|
+ - 撮合任务执行失败告警
|
|
|
+ - 价格异常波动告警
|
|
|
+ - 系统库存异常告警
|
|
|
+
|
|
|
+## 13. 业务流程详细说明
|
|
|
+
|
|
|
+### 13.1 卖出流程
|
|
|
+1. **订单提交**:用户提交卖出订单(商品ID、数量、价格)
|
|
|
+2. **价格验证**:系统验证 `卖出价格 ≤ 最低价`
|
|
|
+3. **立即成交**:满足条件的订单立即与系统成交
|
|
|
+4. **库存更新**:商品数量增加到系统仓库
|
|
|
+5. **记录生成**:创建成交记录,显示在交易大厅
|
|
|
+6. **资金结算**:用户账户增加对应资金
|
|
|
+
|
|
|
+### 13.2 买入流程
|
|
|
+1. **订单提交**:用户提交买入订单(商品ID、数量、价格)
|
|
|
+2. **价格验证**:系统验证 `买入价格 ≥ 最高价`
|
|
|
+3. **数量检查**:验证订单数量是否超过保护阈值
|
|
|
+4. **进入队列**:通过验证的订单进入撮合队列
|
|
|
+5. **等待撮合**:订单等待计划任务执行撮合
|
|
|
+6. **成交处理**:撮合成功后扣减系统库存,完成交易
|
|
|
+
|
|
|
+### 13.3 撮合执行流程
|
|
|
+1. **任务启动**:计划任务定时启动(5-10分钟间隔)
|
|
|
+2. **订单获取**:获取所有状态为"等待"的买入订单
|
|
|
+3. **数量过滤**:过滤掉超过保护阈值的大额订单
|
|
|
+4. **排序处理**:按价格→时间→数量进行三级排序
|
|
|
+5. **库存匹配**:逐个匹配系统仓库库存
|
|
|
+6. **整单成交**:库存充足则整单成交,不足则继续等待
|
|
|
+7. **状态更新**:更新订单状态和系统库存
|
|
|
+8. **记录生成**:生成成交记录供交易大厅展示
|
|
|
+
|
|
|
+## 14. 技术实现架构
|
|
|
+
|
|
|
+### 14.1 模块结构
|
|
|
+```
|
|
|
+app/Module/Mex/
|
|
|
+├── Models/ # 数据模型
|
|
|
+│ ├── MexOrder.php # 订单模型
|
|
|
+│ ├── MexWarehouse.php # 仓库模型
|
|
|
+│ ├── MexTransaction.php # 成交记录模型
|
|
|
+│ └── MexPriceConfig.php # 价格配置模型
|
|
|
+├── Services/ # 服务层
|
|
|
+│ ├── MexOrderService.php # 订单服务
|
|
|
+│ ├── MexMatchService.php # 撮合服务
|
|
|
+│ └── MexWarehouseService.php # 仓库服务
|
|
|
+├── Logic/ # 逻辑层
|
|
|
+│ ├── MexOrderLogic.php # 订单逻辑
|
|
|
+│ └── MexMatchLogic.php # 撮合逻辑
|
|
|
+├── Commands/ # 计划任务
|
|
|
+│ └── MexMatchCommand.php # 撮合任务
|
|
|
+├── Controllers/ # 控制器
|
|
|
+│ └── Admin/ # 后台管理
|
|
|
+└── Databases/ # 数据库文件
|
|
|
+ └── GenerateSql/ # SQL文件
|
|
|
+```
|
|
|
+
|
|
|
+### 14.2 关键接口设计
|
|
|
+- **下单接口**:POST /api/mex/order(创建买卖订单)
|
|
|
+- **订单查询**:GET /api/mex/orders(查询用户订单)
|
|
|
+- **交易大厅**:GET /api/mex/transactions(获取成交记录)
|
|
|
+- **价格查询**:GET /api/mex/prices(获取商品价格信息)
|
|
|
+
|
|
|
+## 15. 部署与运维
|
|
|
+
|
|
|
+### 15.1 计划任务配置
|
|
|
+```bash
|
|
|
+# 添加到 crontab
|
|
|
+*/5 * * * * php artisan mex:match >> /var/log/mex-match.log 2>&1
|
|
|
+```
|
|
|
+
|
|
|
+### 15.2 监控指标
|
|
|
+- 撮合任务执行时间
|
|
|
+- 订单积压数量
|
|
|
+- 成交成功率
|
|
|
+- 系统库存水位
|
|
|
+
|
|
|
+### 15.3 运维注意事项
|
|
|
+- 定期清理历史成交记录
|
|
|
+- 监控系统库存异常变化
|
|
|
+- 关注价格配置的合理性调整
|
|
|
+- 保护阈值的动态调整
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+**文档版本**:v2.0
|
|
|
+**最后更新**:2025年06月11日 20:34
|
|
|
+**文档状态**:已补充完整
|