# 店铺今日订单数接口文档 ## 接口信息 ### 接口名称 获取店铺今日订单数 ### 接口路径 `GET /storeManage/getTodayOrderCount` ### 接口描述 查询指定店铺今日的有效订单数量(排除待支付、已取消、已过期状态的订单) --- ## 请求参数 ### Query 参数 | 参数名 | 类型 | 必填 | 说明 | |--------|------|------|------| | storeId | Integer | 是 | 店铺ID | ### 请求示例 ```http GET /storeManage/getTodayOrderCount?storeId=102 ``` --- ## 响应参数 ### 响应数据结构 ```json { "code": 200, "success": true, "data": 15, "msg": "查询成功" } ``` ### 响应字段说明 | 字段名 | 类型 | 说明 | |--------|------|------| | code | Integer | 响应状态码,200表示成功 | | success | Boolean | 是否成功 | | data | Integer | 今日有效订单数量 | | msg | String | 响应消息 | --- ## 业务逻辑说明 ### 1. 订单统计规则 - **时间范围**:当天 00:00:00 至 23:59:59 - **排除状态**: - 待支付 (0) - 已取消 (4) - 已过期 (3) - **包含状态**: - 已支付/待使用 (1) - 已核销 (2) - 已退款 (5) - 退款失败 (6) - 已完成 (7) ### 2. 查询条件 ```java // 查询今日的订单 wrapper.eq(LifeUserOrder::getStoreId, storeId) .notIn(LifeUserOrder::getStatus, OrderStatusEnum.CANCEL.getStatus(), // 4-已取消 OrderStatusEnum.WAIT_PAY.getStatus(), // 0-待支付 OrderStatusEnum.EXPIRE.getStatus()) // 3-已过期 .between(LifeUserOrder::getBuyTime, today + " 00:00:00", today + " 23:59:59"); ``` ### 3. 数据来源 - **数据表**:`life_user_order` - **关联实体**:`LifeUserOrder` - **Mapper**:`LifeUserOrderMapper` --- ## 技术实现 ### Controller 层 **文件路径**:`alien-store-platform/src/main/java/shop/alien/storeplatform/controller/StoreManageController.java` ```java @ApiOperation("获取店铺今日订单数") @ApiOperationSupport(order = 6) @ApiImplicitParams({ @ApiImplicitParam(name = "storeId", value = "店铺ID", dataType = "Integer", paramType = "query", required = true) }) @GetMapping("/getTodayOrderCount") public R getTodayOrderCount(@RequestParam("storeId") Integer storeId) { log.info("StoreManageController.getTodayOrderCount?storeId={}", storeId); try { Integer count = storeManageService.getTodayOrderCount(storeId); return R.data(count, "查询成功"); } catch (Exception e) { log.error("StoreManageController.getTodayOrderCount ERROR: {}", e.getMessage(), e); return R.fail(e.getMessage()); } } ``` ### Service 层 **文件路径**:`alien-store-platform/src/main/java/shop/alien/storeplatform/service/StoreManageService.java` ```java /** * 获取店铺今日订单数 * * @param storeId 店铺ID * @return 今日订单数 */ Integer getTodayOrderCount(Integer storeId); ``` ### Service 实现层 **文件路径**:`alien-store-platform/src/main/java/shop/alien/storeplatform/service/impl/StoreManageServiceImpl.java` ```java @Override public Integer getTodayOrderCount(Integer storeId) { log.info("StoreManageServiceImpl.getTodayOrderCount - 查询店铺今日订单数: storeId={}", storeId); // 1. 构建查询条件 LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); LocalDate today = LocalDate.now(); // 2. 查询今日的订单,排除待支付、已取消、已过期状态 wrapper.eq(LifeUserOrder::getStoreId, storeId) .notIn(LifeUserOrder::getStatus, OrderStatusEnum.CANCEL.getStatus(), OrderStatusEnum.WAIT_PAY.getStatus(), OrderStatusEnum.EXPIRE.getStatus()) .between(LifeUserOrder::getBuyTime, today + " 00:00:00", today + " 23:59:59"); // 3. 统计订单数量 Integer count = lifeUserOrderMapper.selectCount(wrapper); log.info("StoreManageServiceImpl.getTodayOrderCount - 查询完成: storeId={}, 今日订单数={}", storeId, count); return count; } ``` --- ## 依赖注入 ### Service 实现类新增依赖 ```java private final LifeUserOrderMapper lifeUserOrderMapper; ``` ### 新增导入 ```java import shop.alien.entity.store.LifeUserOrder; import shop.alien.util.common.constant.OrderStatusEnum; ``` --- ## 原接口对比 ### 原接口信息 - **服务**:alien-store(app端商户) - **路径**:`/alienStore/storeIncomeDetailsRecord/todayOrderCount` - **Controller**:`StoreIncomeDetailsRecordController` - **Service**:`StoreIncomeDetailsRecordService` ### 新接口信息 - **服务**:alien-store-platform(web端商户) - **路径**:`/storeManage/getTodayOrderCount` - **Controller**:`StoreManageController` - **Service**:`StoreManageService` ### 命名对比 | 原接口 | 新接口 | 说明 | |--------|--------|------| | todayOrderCount | getTodayOrderCount | 符合web端命名规范 | | /storeIncomeDetailsRecord/ | /storeManage/ | 统一归类到店铺管理模块 | --- ## 错误处理 ### 异常情况 1. **参数错误**:storeId 为空或无效 2. **数据库异常**:查询失败 ### 错误响应示例 ```json { "code": 500, "success": false, "data": null, "msg": "查询失败:数据库连接异常" } ``` --- ## 测试建议 ### 测试场景 1. **正常场景**:查询有订单的店铺 2. **空数据场景**:查询今日无订单的店铺(应返回0) 3. **边界场景**:查询不存在的店铺ID(应返回0) 4. **状态过滤**:验证待支付、已取消、已过期订单是否被排除 ### 测试数据 ```sql -- 查询店铺今日订单(用于验证) SELECT COUNT(*) AS order_count FROM life_user_order WHERE store_id = 102 AND status NOT IN (0, 3, 4) -- 排除待支付、已过期、已取消 AND buy_time BETWEEN '2025-11-12 00:00:00' AND '2025-11-12 23:59:59' AND delete_flag = 0; ``` --- ## 相关接口 - **今日收益接口**:`GET /storeManage/getTodayIncome` - **店铺详情接口**:`GET /storeManage/getStoreDetail` - **店铺入住申请**:`POST /storeManage/applyStore` --- ## 注意事项 1. **订单状态枚举**:使用 `OrderStatusEnum` 确保状态码一致性 2. **时间范围**:使用 `LocalDate.now()` 获取当天日期,确保时区正确 3. **性能优化**:订单数量统计使用 `selectCount` 而非查询全部数据 4. **逻辑删除**:MyBatis-Plus 自动处理 `delete_flag` 字段 5. **日志记录**:记录查询参数和结果,便于问题追踪 --- ## 更新日志 ### 2025-11-12 - ✅ 完成接口迁移:从 alien-store 迁移到 alien-store-platform - ✅ Controller 层:添加 `getTodayOrderCount` 接口 - ✅ Service 层:添加 `getTodayOrderCount` 方法定义 - ✅ Service 实现层:实现今日订单数查询逻辑 - ✅ 依赖注入:添加 `LifeUserOrderMapper` 和 `OrderStatusEnum` 导入 - ✅ Linter 检查:无错误 - ✅ 业务逻辑:完全复用原接口逻辑 - ✅ 命名规范:符合web端命名规范 --- ## 开发者信息 - **迁移时间**:2025-11-12 - **原服务**:alien-store(app端商户) - **目标服务**:alien-store-platform(web端商户) - **技术栈**:Spring Boot + MyBatis-Plus + Java 8