# orders-seize-service **Repository Path**: crazy_raobing/orders-seize-service ## Basic Information - **Project Name**: orders-seize-service - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-03 - **Last Updated**: 2025-12-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # TMS Orders-Seize-Service 抢单服务模块 ## 📖 模块说明 本模块是TMS运输管理系统的**抢单服务**,提供司机主动抢单功能,与dispatch-service的机器派单形成互补。 ## 🏗️ 模块结构 ``` orders-seize-service/ ├── pom.xml ✅ 已创建 ├── README.md ✅ 已创建 ├── sql/ │ └── 01-init-seize-database.sql ✅ 已创建 ├── docs/ ⚠️ 需要创建 │ ├── 抢单服务接口文档.md │ └── 抢单服务部署手册.md └── src/main/ ├── java/com/tms/seize/ │ ├── OrdersSeizeServiceApplication.java ✅ 已创建 │ ├── config/ ✅ 已创建 │ │ ├── RedissonConfig.java │ │ ├── SeizeProperties.java │ │ ├── RabbitMQConfig.java ⚠️ 需要创建 │ │ └── SwaggerConfig.java ⚠️ 需要创建 │ ├── controller/ ⚠️ 需要创建 │ │ ├── OrderSeizeController.java (核心抢单控制器) │ │ └── HealthController.java (健康检查) │ ├── service/ ⚠️ 需要创建 │ │ ├── OrderSeizeService.java (接口) │ │ ├── impl/ │ │ │ └── OrderSeizeServiceImpl.java (核心抢单逻辑) │ │ ├── OrderService.java │ │ ├── VehicleService.java │ │ └── DriverService.java │ ├── mapper/ ⚠️ 需要创建 │ │ ├── OrderMapper.java │ │ ├── VehicleMapper.java │ │ ├── DriverMapper.java │ │ └── OrderSeizeLogMapper.java │ ├── entity/ ✅ 已创建 │ │ ├── Order.java │ │ ├── Vehicle.java │ │ ├── Driver.java │ │ └── OrderSeizeLog.java │ ├── dto/ ✅ 部分创建 │ │ ├── Result.java │ │ ├── OrderSeizeReqDTO.java │ │ └── AvailableOrderDTO.java │ ├── exception/ ⚠️ 需要创建 │ │ ├── SeizeException.java │ │ └── GlobalExceptionHandler.java │ └── util/ ✅ 已创建 │ └── Constants.java └── resources/ ├── application.yml ✅ 已创建 └── mapper/ ⚠️ 需要创建 ├── OrderMapper.xml ├── VehicleMapper.xml ├── DriverMapper.xml └── OrderSeizeLogMapper.xml ``` ## 📊 已完成的工作 ### ✅ 1. 项目基础配置 - [x] pom.xml - Maven配置文件 - [x] application.yml - 应用配置文件 - [x] 启动类 OrdersSeizeServiceApplication ### ✅ 2. 数据库设计 - [x] 01-init-seize-database.sql - 数据库初始化脚本 - 抢单记录表 `t_order_seize_log` - 司机抢单统计表 `t_driver_seize_stats` - 订单抢单配置表 `t_order_seize_config` - 扩展订单表抢单字段 ### ✅ 3. 实体类(Entity) - [x] Order.java - 订单实体 - [x] Vehicle.java - 车辆实体 - [x] Driver.java - 司机实体 - [x] OrderSeizeLog.java - 抢单记录实体 ### ✅ 4. 数据传输对象(DTO) - [x] Result.java - 统一响应结果 - [x] OrderSeizeReqDTO.java - 抢单请求DTO - [x] AvailableOrderDTO.java - 可抢订单DTO ### ✅ 5. 配置类(Config) - [x] RedissonConfig.java - Redisson配置(分布式锁) - [x] SeizeProperties.java - 抢单配置属性 ### ✅ 6. 工具类(Util) - [x] Constants.java - 常量定义 ## 🚧 待完成的核心文件 由于token限制,以下文件需要补充创建,可参考前面给出的完整抢单实现方案: ### ⚠️ 1. 控制器层(Controller) ```java // OrderSeizeController.java - 核心抢单控制器 @RestController @RequestMapping("/api/seize") public class OrderSeizeController { // 1. 查询可抢订单列表 GET /available-orders // 2. 司机抢单 POST /grab-order // 3. 查询司机抢单统计 GET /driver-stats // 4. 健康检查 GET /health } ``` ### ⚠️ 2. 服务层(Service) ```java // OrderSeizeService.java - 抢单服务接口 public interface OrderSeizeService { List getAvailableOrders(...); boolean grabOrder(...); Map getDriverSeizeStats(...); boolean addToSeizePool(...); boolean removeFromSeizePool(...); } // OrderSeizeServiceImpl.java - 核心抢单逻辑实现 @Service public class OrderSeizeServiceImpl implements OrderSeizeService { // 实现抢单的8个核心步骤(参考前面的设计文档) } ``` ### ⚠️ 3. 数据访问层(Mapper) ```java // OrderMapper.java @Mapper public interface OrderMapper { Order selectById(Long id); List selectByIds(List ids); int updateOrderSeizeInfo(...); } // VehicleMapper.java、DriverMapper.java、OrderSeizeLogMapper.java // 对应的XML文件在 resources/mapper/ 目录 ``` ### ⚠️ 4. 异常处理 ```java // SeizeException.java - 抢单异常 // GlobalExceptionHandler.java - 全局异常处理器 ``` ## 📝 完整实现参考 详细的抢单业务流程和代码实现,请参考我前面提供的完整方案文档,包括: 1. **抢单业务流程时序图** - 8个关键阶段 2. **核心代码实现** - Service层完整实现 3. **数据库设计** - 表结构和字段说明 4. **Redis数据结构** - 抢单池、统计等 5. **API接口定义** - 请求响应格式 6. **测试方案** - 功能测试、并发测试 ## 🚀 快速开始 ### 1. 数据库初始化 ```bash mysql -u root -p < sql/01-init-seize-database.sql ``` ### 2. 修改配置 编辑 `src/main/resources/application.yml`,修改数据库、Redis等配置。 ### 3. 编译运行 ```bash mvn clean package java -jar target/orders-seize-service-1.0-SNAPSHOT.jar ``` ### 4. 访问服务 - 服务地址:http://localhost:8081/orders-seize-service - Swagger文档:http://localhost:8081/orders-seize-service/swagger-ui/ - 健康检查:http://localhost:8081/orders-seize-service/api/seize/health ## 📚 核心功能说明 ### 1. 查询可抢订单列表 ```bash GET /api/seize/available-orders?driverId=D001&page=1&pageSize=20 ``` ### 2. 司机抢单 ```bash POST /api/seize/grab-order { "seizeId": 1001, "driverId": "D001", "serveProviderId": "V001" } ``` ### 3. 机器抢单(dispatch-service调用) ```bash POST /api/seize/machine-seize { "seizeId": 1001, "serveProviderId": "V001", "driverId": "D001", "seizeType": 2, "remark": "智能调度系统自动派单" } ``` ## 🔧 技术栈 - Spring Boot 2.6.13 - MyBatis 2.2.2 - MySQL 8.2.0 - Redis 6.0+ - Redisson 3.17.7(分布式锁) - RabbitMQ 3.8+(消息队列) - Druid 1.2.15(数据库连接池) - Swagger 3.0.0(接口文档) ## 📖 开发规范 ### 代码风格 - 参考 dispatch-service 的代码风格 - 类名、方法名采用驼峰命名 - 常量使用全大写+下划线 - 注释完整,包含作者、参数、返回值说明 ### 分层架构 ``` Controller → Service → Mapper → Database ↓ ↓ DTO Entity ``` ### 异常处理 - 业务异常统一使用 SeizeException - 全局异常处理器 GlobalExceptionHandler - 返回结果统一使用 Result ## 🎯 下一步计划 1. **补充核心业务代码** - [ ] 实现 OrderSeizeServiceImpl(核心抢单逻辑) - [ ] 实现 OrderSeizeController(API接口) - [ ] 实现 Mapper 接口和 XML 2. **完善配置和工具** - [ ] RabbitMQ 配置 - [ ] Swagger 配置 - [ ] 全局异常处理器 3. **编写测试用例** - [ ] 单元测试 - [ ] 集成测试 - [ ] 并发压力测试 4. **编写文档** - [ ] 接口文档 - [ ] 部署手册 - [ ] 故障排查手册 ## 📞 联系方式 如有问题,请参考: 1. dispatch-service 模块的实现 2. 前面提供的完整抢单实现方案文档 3. TMS智能调度引擎业务需求文档 --- **版本**: 1.0 **作者**: robin **日期**: 2025-12-03 **状态**: 🚧 开发中