|
|
@@ -3,7 +3,18 @@
|
|
|
|
|
|
## 概述
|
|
|
|
|
|
-本文档基于 `/app/Module/Mex/docs/1.1.md` 的内容分析,详细描述了农贸市场交易系统的匹配交易机制和规则。
|
|
|
+Mex模块是一个完整的农贸市场匹配交易系统,实现了基于系统仓库的商品交易撮合机制。系统采用价格优先、时间优先的撮合原则,通过计划任务定时执行交易匹配,确保交易的公平性和系统的稳定性。
|
|
|
+
|
|
|
+本文档基于 `/app/Module/Mex/docs/2.md` 的完整交易规则,提供了系统的技术实现指导和业务规则说明。
|
|
|
+
|
|
|
+## 系统特点
|
|
|
+
|
|
|
+- **非用户间交易**:所有交易通过系统仓库进行,避免用户间直接转移
|
|
|
+- **价格区间控制**:卖出价格≤最低价,买入价格≥最高价
|
|
|
+- **整单成交原则**:订单不拆分,要么全部成交要么等待
|
|
|
+- **数量保护机制**:大额订单保护阈值防止市场操控
|
|
|
+- **计划任务撮合**:定时批量处理,避免实时撮合的性能问题
|
|
|
+- **管理员调控**:支持市场供需调节和价格稳定机制
|
|
|
|
|
|
## 核心交易规则
|
|
|
|
|
|
@@ -13,11 +24,17 @@
|
|
|
- **卖出限制**:用户卖出价格必须 **等于或低于** 系统设置的最低价
|
|
|
- **执行方式**:满足条件的卖单会立即成交(秒卖机制)
|
|
|
- **系统回收**:卖出的商品由系统直接回收,无需撮合
|
|
|
+- **公示透明**:最低价对用户公开,便于制定卖出策略
|
|
|
|
|
|
#### 最高价(参考价)
|
|
|
-- **买入参考**:用户买入价格必须 **高于** 系统设置的最高价才能成交
|
|
|
+- **买入参考**:用户买入价格必须 **高于或等于** 系统设置的最高价才能成交
|
|
|
- **价格发现**:最高价仅作为参考,实际成交价格由市场决定
|
|
|
- **动态调整**:用户需要根据实际成交情况调整出价
|
|
|
+- **竞价机制**:实际成交价可能高于公示的最高价
|
|
|
+
|
|
|
+#### 价格精度
|
|
|
+- **小数支持**:挂单价格支持5位小数精度
|
|
|
+- **精确计算**:确保价格计算的准确性和公平性
|
|
|
|
|
|
### 2. 撮合交易机制
|
|
|
|
|
|
@@ -26,10 +43,13 @@
|
|
|
- **系统中介**:所有交易都通过系统仓库进行
|
|
|
- **防止转移**:避免用户通过多账号进行资产转移
|
|
|
|
|
|
-#### 价格优先原则
|
|
|
-- **价高者得**:买方出价越高,优先级越高
|
|
|
-- **数量匹配**:按照价格优先、时间优先的原则进行匹配
|
|
|
-- **部分成交**:支持订单的部分成交和排队机制
|
|
|
+#### 撮合队列规则
|
|
|
+- **三级排序优先级**:
|
|
|
+ 1. 价格优先(买价高者优先)
|
|
|
+ 2. 时间优先(价格相同时,挂单时间早者优先)
|
|
|
+ 3. 数量优先(价格和时间相同时,订单数量小者优先)
|
|
|
+- **整单成交**:所有订单不拆单(要么全成交,要么不成交)
|
|
|
+- **队列处理**:批量处理所有符合条件的订单
|
|
|
|
|
|
### 3. 订单数量保护
|
|
|
|
|
|
@@ -73,50 +93,120 @@
|
|
|
- **买入调控**:从市场回收商品,减少供应量
|
|
|
- **日志记录**:所有调控操作都有详细日志记录
|
|
|
|
|
|
-## 技术实现要点
|
|
|
-
|
|
|
-### 1. 数据结构设计
|
|
|
-- 订单表:记录用户买卖订单
|
|
|
-- 仓库表:记录系统商品库存
|
|
|
-- 成交表:记录所有成交记录
|
|
|
-- 配置表:存储价格限制和保护阈值
|
|
|
-
|
|
|
-### 2. 核心算法
|
|
|
-- 价格验证算法
|
|
|
-- 撮合匹配算法
|
|
|
-- 数量保护算法
|
|
|
-- 优先级排序算法
|
|
|
-
|
|
|
-### 3. 安全机制
|
|
|
-- 防刷单机制
|
|
|
-- 防操控机制
|
|
|
-- 数据一致性保证
|
|
|
-- 异常处理机制
|
|
|
+## 技术实现架构
|
|
|
+
|
|
|
+### 1. 数据库表结构设计
|
|
|
+- **订单表(mex_orders)**:记录用户买卖订单信息
|
|
|
+- **系统仓库表(mex_warehouse)**:记录系统商品库存
|
|
|
+- **成交记录表(mex_transactions)**:记录所有成交信息
|
|
|
+- **价格配置表(mex_price_configs)**:存储商品的最低价和最高价配置
|
|
|
+- **市场调控记录表(mex_admin_operations)**:记录管理员市场调控操作
|
|
|
+
|
|
|
+### 2. 核心算法实现
|
|
|
+- **价格验证算法**:卖单价格≤最低价,买单价格≥最高价
|
|
|
+- **撮合排序算法**:价格→时间→数量三级排序
|
|
|
+- **数量保护算法**:超量订单过滤机制
|
|
|
+- **整单匹配算法**:库存充足完全成交,不足则等待
|
|
|
+
|
|
|
+### 3. 安全机制与风控
|
|
|
+- **防刷单机制**:用户订单频率限制,异常交易行为监控
|
|
|
+- **防操控机制**:大额订单保护阈值,价格异常波动预警
|
|
|
+- **数据一致性保证**:数据库事务确保原子性
|
|
|
+- **异常处理机制**:撮合失败回滚,系统异常订单状态恢复
|
|
|
+
|
|
|
+### 4. 性能优化策略
|
|
|
+- **计划任务优化**:批量处理减少数据库连接,分页处理避免内存溢出
|
|
|
+- **数据库索引优化**:订单表复合索引,成交表时间索引
|
|
|
+- **缓存策略**:价格配置缓存,系统库存缓存
|
|
|
+
|
|
|
+### 5. 监控与日志
|
|
|
+- **业务监控指标**:订单成交率统计,平均撮合时间监控,系统库存变化趋势
|
|
|
+- **操作日志记录**:用户下单日志,撮合执行日志,管理员操作日志
|
|
|
+- **异常告警机制**:撮合任务执行失败告警,价格异常波动告警
|
|
|
|
|
|
## 业务流程
|
|
|
|
|
|
-### 卖出流程
|
|
|
-1. 用户提交卖出订单
|
|
|
-2. 系统验证价格是否符合最低价要求
|
|
|
-3. 符合条件的订单立即成交
|
|
|
-4. 商品进入系统仓库
|
|
|
-5. 记录成交信息并显示在交易大厅
|
|
|
-
|
|
|
-### 买入流程
|
|
|
-1. 用户提交买入订单
|
|
|
-2. 系统验证价格和数量保护阈值
|
|
|
-3. 订单进入撮合队列
|
|
|
-4. 计划任务执行撮合匹配
|
|
|
-5. 成交后从系统仓库扣除商品
|
|
|
-6. 记录成交信息
|
|
|
-
|
|
|
-### 撮合流程
|
|
|
-1. 计划任务启动
|
|
|
-2. 获取所有待撮合的买入订单
|
|
|
-3. 按价格优先级排序
|
|
|
-4. 匹配系统仓库库存
|
|
|
-5. 执行成交并更新数据
|
|
|
-6. 生成成交记录
|
|
|
+### 卖出流程(6个步骤)
|
|
|
+1. **订单提交**:用户提交卖出订单(商品ID、数量、价格)
|
|
|
+2. **价格验证**:系统验证 `卖出价格 ≤ 最低价`
|
|
|
+3. **立即成交**:满足条件的订单立即与系统成交
|
|
|
+4. **库存更新**:商品数量增加到系统仓库
|
|
|
+5. **记录生成**:创建成交记录,显示在交易大厅
|
|
|
+6. **资金结算**:用户账户增加对应资金
|
|
|
+
|
|
|
+### 买入流程(6个步骤)
|
|
|
+1. **订单提交**:用户提交买入订单(商品ID、数量、价格)
|
|
|
+2. **价格验证**:系统验证 `买入价格 ≥ 最高价`
|
|
|
+3. **数量检查**:验证订单数量是否超过保护阈值
|
|
|
+4. **进入队列**:通过验证的订单进入撮合队列
|
|
|
+5. **等待撮合**:订单等待计划任务执行撮合
|
|
|
+6. **成交处理**:撮合成功后扣减系统库存,完成交易
|
|
|
+
|
|
|
+### 撮合执行流程(8个步骤)
|
|
|
+1. **任务启动**:计划任务定时启动(5-10分钟间隔)
|
|
|
+2. **订单获取**:获取所有状态为"等待"的买入订单
|
|
|
+3. **数量过滤**:过滤掉超过保护阈值的大额订单
|
|
|
+4. **排序处理**:按价格→时间→数量进行三级排序
|
|
|
+5. **库存匹配**:逐个匹配系统仓库库存
|
|
|
+6. **整单成交**:库存充足则整单成交,不足则继续等待
|
|
|
+7. **状态更新**:更新订单状态和系统库存
|
|
|
+8. **记录生成**:生成成交记录供交易大厅展示
|
|
|
+
|
|
|
+## 模块结构设计
|
|
|
+
|
|
|
+```
|
|
|
+app/Module/Mex/
|
|
|
+├── Models/ # 数据模型
|
|
|
+│ ├── MexOrder.php # 订单模型
|
|
|
+│ ├── MexWarehouse.php # 仓库模型
|
|
|
+│ ├── MexTransaction.php # 成交记录模型
|
|
|
+│ ├── MexPriceConfig.php # 价格配置模型
|
|
|
+│ └── MexAdminOperation.php # 管理员操作记录模型
|
|
|
+├── Services/ # 服务层
|
|
|
+│ ├── MexOrderService.php # 订单服务
|
|
|
+│ ├── MexMatchService.php # 撮合服务
|
|
|
+│ └── MexWarehouseService.php # 仓库服务
|
|
|
+├── Logic/ # 逻辑层
|
|
|
+│ ├── MexOrderLogic.php # 订单逻辑
|
|
|
+│ └── MexMatchLogic.php # 撮合逻辑
|
|
|
+├── Commands/ # 计划任务
|
|
|
+│ └── MexMatchCommand.php # 撮合任务
|
|
|
+├── Controllers/ # 控制器
|
|
|
+│ ├── Admin/ # 后台管理
|
|
|
+│ └── Api/ # API接口
|
|
|
+├── Handlers/ # 处理器
|
|
|
+│ ├── MexOrderHandler.php # 订单处理器
|
|
|
+│ └── MexQueryHandler.php # 查询处理器
|
|
|
+├── Databases/ # 数据库文件
|
|
|
+│ └── GenerateSql/ # SQL文件
|
|
|
+├── Enums/ # 枚举类
|
|
|
+│ ├── OrderType.php # 订单类型枚举
|
|
|
+│ └── OrderStatus.php # 订单状态枚举
|
|
|
+└── docs/ # 文档目录
|
|
|
+ ├── README.md # 系统概述文档
|
|
|
+ └── 2.md # 详细交易规则文档
|
|
|
+```
|
|
|
+
|
|
|
+## 关键接口设计
|
|
|
+
|
|
|
+- **下单接口**:POST /api/mex/order(创建买卖订单)
|
|
|
+- **订单查询**:GET /api/mex/orders(查询用户订单)
|
|
|
+- **交易大厅**:GET /api/mex/transactions(获取成交记录)
|
|
|
+- **价格查询**:GET /api/mex/prices(获取商品价格信息)
|
|
|
+
|
|
|
+## 部署与运维
|
|
|
+
|
|
|
+### 计划任务配置
|
|
|
+```bash
|
|
|
+# 添加到 crontab
|
|
|
+*/5 * * * * php artisan mex:match >> /var/log/mex-match.log 2>&1
|
|
|
+```
|
|
|
+
|
|
|
+### 监控指标
|
|
|
+- 撮合任务执行时间
|
|
|
+- 订单积压数量
|
|
|
+- 成交成功率
|
|
|
+- 系统库存水位
|
|
|
|
|
|
## 注意事项
|
|
|
|
|
|
@@ -125,9 +215,28 @@
|
|
|
3. **时间延迟**:撮合交易存在5-10分钟的延迟
|
|
|
4. **市场风险**:价格波动和供需变化的风险
|
|
|
5. **系统维护**:定期检查和调整系统参数
|
|
|
+6. **整单原则**:所有订单不拆分,确保交易完整性
|
|
|
+7. **保护机制**:大额订单保护阈值对用户隐藏
|
|
|
+8. **管理员调控**:支持市场供需调节和价格稳定
|
|
|
+
|
|
|
+## 开发指南
|
|
|
+
|
|
|
+### 实现优先级
|
|
|
+1. **第一阶段**:基础数据模型和数据库表结构
|
|
|
+2. **第二阶段**:核心撮合算法和订单处理逻辑
|
|
|
+3. **第三阶段**:API接口和前端交互功能
|
|
|
+4. **第四阶段**:后台管理和市场调控功能
|
|
|
+5. **第五阶段**:监控告警和性能优化
|
|
|
+
|
|
|
+### 测试策略
|
|
|
+- 单元测试:核心算法和业务逻辑
|
|
|
+- 集成测试:API接口和数据库操作
|
|
|
+- 压力测试:撮合性能和并发处理
|
|
|
+- 业务测试:完整交易流程验证
|
|
|
|
|
|
---
|
|
|
|
|
|
-**文档生成时间**:2025年06月11日 20:23
|
|
|
-**基于文档**:`/app/Module/Mex/docs/1.1.md`
|
|
|
-**文档版本**:v1.0
|
|
|
+**文档生成时间**:2025年06月11日 20:40
|
|
|
+**基于文档**:`/app/Module/Mex/docs/2.md`
|
|
|
+**文档版本**:v2.0
|
|
|
+**文档状态**:已完善更新
|