You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取管理员发布给所有授权用户的全部任务数据

解决方法

先理清楚核心逻辑:

  • 先用传入的access token找到当前登录的用户(不管是管理员还是普通用户)
  • 只拉取管理员发布的任务,并且是该用户有权限查看的(通过vehicletypes关联用户权限)

修改后的SQL

WITH current_user AS (
    -- 拿到当前授权用户的ID
    SELECT userid
    FROM adminsession
    INNER JOIN admin ON adminsession.userid = admin.id 
    WHERE accesstoken = :accesstoken
    UNION ALL
    SELECT userid
    FROM sessions 
    INNER JOIN users ON sessions.userid = users.id 
    WHERE accesstoken = :accesstokenusr
)
SELECT 
    packages.id, 
    packages.amount, 
    packages.hours,
    packages.vehicle_type,
    admin.id AS admin_publisher_id, -- 可选:显示发布任务的管理员ID
    admin.name AS admin_publisher_name -- 可选:显示管理员名称
FROM packages
-- 关联发布任务的管理员(假设packages表用admin_id关联admin,字段不对自己改)
INNER JOIN admin ON packages.admin_id = admin.id
-- 关联用户能看的车辆类型
INNER JOIN vehicletypes ON packages.vehicle_type = vehicletypes.id
-- 确保是当前用户有权限看的任务
INNER JOIN current_user ON vehicletypes.userid = current_user.userid

注意事项

  • 用CTE把获取用户ID的逻辑抽出来,比嵌套子查询更清晰,还兼容管理员和普通用户两种身份
  • 把原来旧的逗号连表改成了标准INNER JOIN,以后维护起来更方便
  • 必须关联admin表才能确保拉的是管理员发布的任务,如果你的packages表和admin的关联字段不是admin_id,记得换成实际的字段名
  • 保留了你原来的vehicletypes和用户的关联逻辑,保证只返回该用户能看到的任务

内容的提问来源于stack exchange,提问作者Santosh Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 07:50:29