Browse Source

补充Mex模块交易规则文档遗漏内容

- 新增数据库表结构设计章节,包含5个核心数据表
- 补充核心算法实现要点,涵盖价格验证、撮合排序等算法
- 增加安全机制与风控策略,包含防刷单、防操控等机制
- 添加性能优化策略,包含计划任务优化和数据库索引优化
- 完善监控与日志机制,提供业务监控和异常告警
- 详细说明业务流程,包含卖出、买入、撮合三大核心流程
- 补充技术实现架构,提供完整的模块结构和接口设计
- 增加部署与运维指南,包含计划任务配置和监控指标

文档从74行扩展到229行,内容更加完整和实用
notfff 7 months ago
parent
commit
ba4060abc1
3 changed files with 289 additions and 134 deletions
  1. 0 134
      README.md
  2. 156 0
      app/Module/Mex/docs/2.md
  3. 133 0
      app/Module/Mex/docs/README.md

+ 0 - 134
README.md

@@ -6,137 +6,3 @@
 
 cp ../proto/game.proto proto/game.proto
 
----
-
-# 农贸市场匹配交易系统文档
-
-## 概述
-
-本文档基于 `/app/Module/Mex/docs/1.1.md` 的内容分析,详细描述了农贸市场交易系统的匹配交易机制和规则。
-
-## 核心交易规则
-
-### 1. 价格限制机制
-
-#### 最低价(保底价)
-- **卖出限制**:用户卖出价格必须 **等于或低于** 系统设置的最低价
-- **执行方式**:满足条件的卖单会立即成交(秒卖机制)
-- **系统回收**:卖出的商品由系统直接回收,无需撮合
-
-#### 最高价(参考价)
-- **买入参考**:用户买入价格必须 **高于** 系统设置的最高价才能成交
-- **价格发现**:最高价仅作为参考,实际成交价格由市场决定
-- **动态调整**:用户需要根据实际成交情况调整出价
-
-### 2. 撮合交易机制
-
-#### 基于系统仓库的撮合
-- **非订单撮合**:不是基于用户挂单的直接撮合
-- **系统中介**:所有交易都通过系统仓库进行
-- **防止转移**:避免用户通过多账号进行资产转移
-
-#### 价格优先原则
-- **价高者得**:买方出价越高,优先级越高
-- **数量匹配**:按照价格优先、时间优先的原则进行匹配
-- **部分成交**:支持订单的部分成交和排队机制
-
-### 3. 订单数量保护
-
-#### 保护阈值设置
-- **后台配置**:管理员可设置订单数量保护阈值(如300个)
-- **大单限制**:超过阈值的订单不参与匹配交易
-- **防止操控**:防止大户通过大额订单操控市场
-
-#### 隐藏机制
-- **不对外展示**:保护阈值不向用户公开
-- **防止做局**:用户无法通过已知阈值进行市场操控
-
-### 4. 计划任务执行
-
-#### 定时撮合
-- **执行频率**:每5-10分钟执行一次撮合交易
-- **批量处理**:一次性处理所有符合条件的订单
-- **系统稳定**:避免实时撮合对系统性能的影响
-
-### 5. 交易大厅显示
-
-#### 成交记录展示
-- **只显示成功**:交易大厅只显示已成交的订单
-- **不显示等待**:等待中的订单不在大厅显示
-- **用户昵称**:显示交易用户昵称和交易详情
-
-#### 价格透明度
-- **成交价格**:显示实际成交价格
-- **市场发现**:用户可通过成交记录了解市场真实价格
-- **策略调整**:帮助用户调整交易策略
-
-### 6. 市场调控机制
-
-#### 管理员干预工具
-- **隐形操作**:管理员可进行不显示在交易大厅的买卖操作
-- **市场调节**:通过增加或减少市场供应量调控价格
-- **优先级设置**:管理员操作具有更高优先级
-
-#### 操作方式
-- **卖出调控**:向市场投放商品,增加供应量
-- **买入调控**:从市场回收商品,减少供应量
-- **日志记录**:所有调控操作都有详细日志记录
-
-## 技术实现要点
-
-### 1. 数据结构设计
-- 订单表:记录用户买卖订单
-- 仓库表:记录系统商品库存
-- 成交表:记录所有成交记录
-- 配置表:存储价格限制和保护阈值
-
-### 2. 核心算法
-- 价格验证算法
-- 撮合匹配算法
-- 数量保护算法
-- 优先级排序算法
-
-### 3. 安全机制
-- 防刷单机制
-- 防操控机制
-- 数据一致性保证
-- 异常处理机制
-
-## 业务流程
-
-### 卖出流程
-1. 用户提交卖出订单
-2. 系统验证价格是否符合最低价要求
-3. 符合条件的订单立即成交
-4. 商品进入系统仓库
-5. 记录成交信息并显示在交易大厅
-
-### 买入流程
-1. 用户提交买入订单
-2. 系统验证价格和数量保护阈值
-3. 订单进入撮合队列
-4. 计划任务执行撮合匹配
-5. 成交后从系统仓库扣除商品
-6. 记录成交信息
-
-### 撮合流程
-1. 计划任务启动
-2. 获取所有待撮合的买入订单
-3. 按价格优先级排序
-4. 匹配系统仓库库存
-5. 执行成交并更新数据
-6. 生成成交记录
-
-## 注意事项
-
-1. **价格策略**:用户需要根据实际成交记录调整价格策略
-2. **数量控制**:大额订单可能因保护机制无法成交
-3. **时间延迟**:撮合交易存在5-10分钟的延迟
-4. **市场风险**:价格波动和供需变化的风险
-5. **系统维护**:定期检查和调整系统参数
-
----
-
-**文档生成时间**:2025年06月11日 20:23
-**基于文档**:`/app/Module/Mex/docs/1.1.md`
-**文档版本**:v1.0

+ 156 - 0
app/Module/Mex/docs/2.md

@@ -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
+**文档状态**:已补充完整

+ 133 - 0
app/Module/Mex/docs/README.md

@@ -0,0 +1,133 @@
+
+# 农贸市场匹配交易系统文档
+
+## 概述
+
+本文档基于 `/app/Module/Mex/docs/1.1.md` 的内容分析,详细描述了农贸市场交易系统的匹配交易机制和规则。
+
+## 核心交易规则
+
+### 1. 价格限制机制
+
+#### 最低价(保底价)
+- **卖出限制**:用户卖出价格必须 **等于或低于** 系统设置的最低价
+- **执行方式**:满足条件的卖单会立即成交(秒卖机制)
+- **系统回收**:卖出的商品由系统直接回收,无需撮合
+
+#### 最高价(参考价)
+- **买入参考**:用户买入价格必须 **高于** 系统设置的最高价才能成交
+- **价格发现**:最高价仅作为参考,实际成交价格由市场决定
+- **动态调整**:用户需要根据实际成交情况调整出价
+
+### 2. 撮合交易机制
+
+#### 基于系统仓库的撮合
+- **非订单撮合**:不是基于用户挂单的直接撮合
+- **系统中介**:所有交易都通过系统仓库进行
+- **防止转移**:避免用户通过多账号进行资产转移
+
+#### 价格优先原则
+- **价高者得**:买方出价越高,优先级越高
+- **数量匹配**:按照价格优先、时间优先的原则进行匹配
+- **部分成交**:支持订单的部分成交和排队机制
+
+### 3. 订单数量保护
+
+#### 保护阈值设置
+- **后台配置**:管理员可设置订单数量保护阈值(如300个)
+- **大单限制**:超过阈值的订单不参与匹配交易
+- **防止操控**:防止大户通过大额订单操控市场
+
+#### 隐藏机制
+- **不对外展示**:保护阈值不向用户公开
+- **防止做局**:用户无法通过已知阈值进行市场操控
+
+### 4. 计划任务执行
+
+#### 定时撮合
+- **执行频率**:每5-10分钟执行一次撮合交易
+- **批量处理**:一次性处理所有符合条件的订单
+- **系统稳定**:避免实时撮合对系统性能的影响
+
+### 5. 交易大厅显示
+
+#### 成交记录展示
+- **只显示成功**:交易大厅只显示已成交的订单
+- **不显示等待**:等待中的订单不在大厅显示
+- **用户昵称**:显示交易用户昵称和交易详情
+
+#### 价格透明度
+- **成交价格**:显示实际成交价格
+- **市场发现**:用户可通过成交记录了解市场真实价格
+- **策略调整**:帮助用户调整交易策略
+
+### 6. 市场调控机制
+
+#### 管理员干预工具
+- **隐形操作**:管理员可进行不显示在交易大厅的买卖操作
+- **市场调节**:通过增加或减少市场供应量调控价格
+- **优先级设置**:管理员操作具有更高优先级
+
+#### 操作方式
+- **卖出调控**:向市场投放商品,增加供应量
+- **买入调控**:从市场回收商品,减少供应量
+- **日志记录**:所有调控操作都有详细日志记录
+
+## 技术实现要点
+
+### 1. 数据结构设计
+- 订单表:记录用户买卖订单
+- 仓库表:记录系统商品库存
+- 成交表:记录所有成交记录
+- 配置表:存储价格限制和保护阈值
+
+### 2. 核心算法
+- 价格验证算法
+- 撮合匹配算法
+- 数量保护算法
+- 优先级排序算法
+
+### 3. 安全机制
+- 防刷单机制
+- 防操控机制
+- 数据一致性保证
+- 异常处理机制
+
+## 业务流程
+
+### 卖出流程
+1. 用户提交卖出订单
+2. 系统验证价格是否符合最低价要求
+3. 符合条件的订单立即成交
+4. 商品进入系统仓库
+5. 记录成交信息并显示在交易大厅
+
+### 买入流程
+1. 用户提交买入订单
+2. 系统验证价格和数量保护阈值
+3. 订单进入撮合队列
+4. 计划任务执行撮合匹配
+5. 成交后从系统仓库扣除商品
+6. 记录成交信息
+
+### 撮合流程
+1. 计划任务启动
+2. 获取所有待撮合的买入订单
+3. 按价格优先级排序
+4. 匹配系统仓库库存
+5. 执行成交并更新数据
+6. 生成成交记录
+
+## 注意事项
+
+1. **价格策略**:用户需要根据实际成交记录调整价格策略
+2. **数量控制**:大额订单可能因保护机制无法成交
+3. **时间延迟**:撮合交易存在5-10分钟的延迟
+4. **市场风险**:价格波动和供需变化的风险
+5. **系统维护**:定期检查和调整系统参数
+
+---
+
+**文档生成时间**:2025年06月11日 20:23
+**基于文档**:`/app/Module/Mex/docs/1.1.md`
+**文档版本**:v1.0