# 智能派单功能实现说明 ## 功能概述 实现了自动扫描 `WAITING` 状态的订单,通过 `ISmartDispatchService.recommendRiders` 方法进行智能派单,并将订单和推荐的师傅关联保存到中间表中。 ## 核心功能 ### 1. 自动扫描和派单 - **定时任务**: `AutoDispatchQuartz` 每5分钟自动扫描等待状态的订单 - **派单服务**: `OrderDispatchServiceImpl` 实现智能派单逻辑 - **状态管理**: 订单状态从 `WAITING(0)` 更新为 `ALLOCATED(6)` ### 2. 中间表设计 - **表名**: `kx_order_rider_recommend` - **主要字段**: - `order_no`: 订单编号 - `rider_id`: 推荐的师傅ID - `rider_name`: 师傅姓名 - `match_score`: 匹配度分数 - `recommend_order`: 推荐排序(1表示最优推荐) - `status`: 推荐状态(0-待处理, 1-已分配, 2-师傅拒绝, 3-超时) ### 3. 管理功能 - **Controller**: `KxOrderRiderRecommendController` 提供CRUD操作 - **手动派单**: 支持手动触发指定订单的派单功能 - **查询功能**: 根据订单号查询推荐的师傅列表 ## 主要类文件 ### 实体类和数据访问 1. `KxOrderRiderRecommend.java` - 中间表实体类 2. `KxOrderRiderRecommendVo.java` - 视图对象 3. `KxOrderRiderRecommendBo.java` - 业务对象 4. `KxOrderRiderRecommendMapper.java` - 数据访问接口 5. `KxOrderRiderRecommendMapper.xml` - MyBatis映射文件 ### 业务服务 1. `IOrderDispatchService.java` - 派单服务接口 2. `OrderDispatchServiceImpl.java` - 派单服务实现 3. `IKxOrderRiderRecommendService.java` - 推荐记录服务接口 4. `KxOrderRiderRecommendServiceImpl.java` - 推荐记录服务实现 ### 控制器和定时任务 1. `KxOrderRiderRecommendController.java` - 管理控制器 2. `AutoDispatchQuartz.java` - 自动派单定时任务 ### 数据库脚本 1. `kx_order_rider_recommend.sql` - 中间表创建脚本 ## 工作流程 1. **定时扫描**: 每5分钟扫描状态为 `WAITING` 的订单 2. **参数构建**: 根据订单信息构建 `SmartDispatchParamBo` 参数 3. **智能推荐**: 调用 `ISmartDispatchService.recommendRiders` 获取推荐师傅 4. **保存关联**: 将推荐结果批量插入到中间表 5. **状态更新**: 更新订单状态为 `ALLOCATED` ## 配置说明 ### 定时任务配置 - **执行频率**: 每5分钟执行一次 (`0 */5 * * * ?`) - **可以根据业务需要调整执行频率** ### 推荐策略 - **匹配度计算**: 基于服务类型、距离、评分、经验等因素 - **紧急程度**: 根据配送费判断订单紧急程度 - **服务关键词**: 目前使用默认关键词,可扩展为根据商品类型动态设置 ## 扩展点 1. **服务关键词优化**: 可以根据订单商品类型动态设置服务关键词 2. **推荐策略调整**: 可以根据业务需求调整匹配度计算权重 3. **通知机制**: 可以加入师傅推送通知功能 4. **监控报警**: 可以加入派单失败的监控和报警机制 ## 使用说明 ### 自动派单 系统会自动运行,无需人工干预。 ### 手动派单 可以通过以下API手动触发订单派单: ``` POST /rider/orderRiderRecommend/dispatch/{orderNo} ``` ### 查询推荐记录 可以通过以下API查询订单的推荐师傅: ``` GET /rider/orderRiderRecommend/listByOrderNo/{orderNo} ``` ## 注意事项 1. **数据库表**: 需要先执行 `kx_order_rider_recommend.sql` 创建中间表 2. **依赖关系**: 依赖现有的 `ISmartDispatchService` 智能派单服务 3. **事务处理**: 派单过程使用事务确保数据一致性 4. **错误处理**: 包含完善的异常处理和日志记录 5. **幂等性**: 对于已有推荐记录的订单会跳过处理,避免重复派单