diff --git a/src/main/java/com/gxwebsoft/glt/controller/GltTicketOrderController.java b/src/main/java/com/gxwebsoft/glt/controller/GltTicketOrderController.java index 5ca099d..7fa519e 100644 --- a/src/main/java/com/gxwebsoft/glt/controller/GltTicketOrderController.java +++ b/src/main/java/com/gxwebsoft/glt/controller/GltTicketOrderController.java @@ -52,6 +52,34 @@ public class GltTicketOrderController extends BaseController { return success(gltTicketOrderService.pageRel(param)); } + @PreAuthorize("isAuthenticated()") + @Operation(summary = "配送员端:分页查询可接单的送水订单") + @GetMapping("/rider/available") + public ApiResult> riderAvailablePage(GltTicketOrderParam param) { + User loginUser = getLoginUser(); + if (loginUser == null) { + return fail("请先登录", null); + } + Integer tenantId = getTenantId(); + param.setTenantId(tenantId); + // 仅允许配送员访问 + requireActiveRider(loginUser.getUserId(), tenantId); + + // 查询未分配的待配送订单(riderId 为空或0) + // 设置为0表示查询未分配的订单,XML中会处理为 IS NULL OR = 0 + param.setRiderId(0); + if (param.getDeliveryStatus() == null) { + param.setDeliveryStatus(GltTicketOrderService.DELIVERY_STATUS_WAITING); + } + // 配送员端默认按期望配送时间优先 + if (StrUtil.isBlank(param.getSort())) { + param.setSort("sendTime asc, createTime desc"); + } + + // 使用现有的关联查询方法,通过参数控制 + return success(gltTicketOrderService.pageRel(param)); + } + @PreAuthorize("isAuthenticated()") @Operation(summary = "配送员端:分页查询我的送水订单") @GetMapping("/rider/page") @@ -65,8 +93,12 @@ public class GltTicketOrderController extends BaseController { // 仅允许配送员访问 requireActiveRider(loginUser.getUserId(), tenantId); + // 关键修复:配送员只能看到分配给自己的订单 param.setRiderId(loginUser.getUserId()); + + // 默认查询待配送和配送中的订单 if (param.getDeliveryStatus() == null) { + // 可以通过参数传递多个状态,这里简化为只查待配送 param.setDeliveryStatus(GltTicketOrderService.DELIVERY_STATUS_WAITING); } // 配送员端默认按期望配送时间优先 diff --git a/src/main/java/com/gxwebsoft/glt/mapper/xml/GltTicketOrderMapper.xml b/src/main/java/com/gxwebsoft/glt/mapper/xml/GltTicketOrderMapper.xml index 0c8a75b..f7efe52 100644 --- a/src/main/java/com/gxwebsoft/glt/mapper/xml/GltTicketOrderMapper.xml +++ b/src/main/java/com/gxwebsoft/glt/mapper/xml/GltTicketOrderMapper.xml @@ -32,7 +32,12 @@ AND a.store_id = #{param.storeId} - AND a.rider_id = #{param.riderId} + + AND (a.rider_id IS NULL OR a.rider_id = 0) + + + AND a.rider_id = #{param.riderId} + AND a.delivery_status = #{param.deliveryStatus}