feat(order): 添加配送员端可接单查询接口并修复权限控制
- 新增 /rider/available 接口供配送员查询可接单的送水订单 - 实现未分配订单查询逻辑(riderId 为 null 或 0 的订单) - 修复配送员端订单查询权限控制,确保只能查看分配给自己的订单 - 优化 SQL 查询条件,支持通过 riderId 参数灵活控制订单分配状态筛选 - 添加配送员身份验证和租户隔离机制 - 设置配送员端默认排序规则为按期望配送时间优先
This commit is contained in:
@@ -52,6 +52,34 @@ public class GltTicketOrderController extends BaseController {
|
||||
return success(gltTicketOrderService.pageRel(param));
|
||||
}
|
||||
|
||||
@PreAuthorize("isAuthenticated()")
|
||||
@Operation(summary = "配送员端:分页查询可接单的送水订单")
|
||||
@GetMapping("/rider/available")
|
||||
public ApiResult<PageResult<GltTicketOrder>> 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);
|
||||
}
|
||||
// 配送员端默认按期望配送时间优先
|
||||
|
||||
@@ -32,8 +32,13 @@
|
||||
AND a.store_id = #{param.storeId}
|
||||
</if>
|
||||
<if test="param.riderId != null">
|
||||
<if test="param.riderId == 0">
|
||||
AND (a.rider_id IS NULL OR a.rider_id = 0)
|
||||
</if>
|
||||
<if test="param.riderId != 0">
|
||||
AND a.rider_id = #{param.riderId}
|
||||
</if>
|
||||
</if>
|
||||
<if test="param.deliveryStatus != null">
|
||||
AND a.delivery_status = #{param.deliveryStatus}
|
||||
</if>
|
||||
|
||||
Reference in New Issue
Block a user