hl-api-changelog/changelogs-v2/2026-08/04_5459_用车需求提交修改接口补定制师归属校验-修改接口-管理后台.md
API Changelog Bot bc65aeb305
所有检测均成功
changelog-filename-gate / validate (push) Successful in 2s
docs(changelog): #5456/#5459 关联章节统一为 yst 完整格式(链接+联系人)
2026-08-04 15:44:09 +08:00

4.9 KiB

schema, ticket, title, consumer, change_type, author, backend_status, gateway_status, frontend_status, frontend_owner, frontend_ref, target_release, verified_at, updated_at, base
schema ticket title consumer change_type author backend_status gateway_status frontend_status frontend_owner frontend_ref target_release verified_at updated_at base
hl-changelog/v2 5459 用车需求提交/修改接口补定制师归属校验(越权修复) admin 修改接口 wx(GIT) deployed verified not_required 2026-08-04 dev-v3

订单: 用车需求提交/修改接口补定制师归属校验(#5459 越权修复)

服务: hl-order-service-v3 PR: #5471 Issue: #5459 日期: 2026-08-04 影响范围: 管理后台用车需求提交/修改(定制师弹窗)


⚠️ 关键变化(行为修复,契约新增错误码)

PUT /v3/admin/order/:id/vehicle-requirement(提交/修改/调整用车需求)此前无角色/归属校验,车务角色可越权修改任意订单需求。现补操作人守卫,与同模块加急接口(/vehicle-requirement/:requirementId/urgent)校验口径一致:

  • 超管SUPER_ADMIN:放行。
  • 其余角色:必须是该订单归属定制师(订单 consultant_id == 当前登录 adminId,否则返回 582094,请求不落库。

变更接口

# 接口 方法 路径 变更类型 说明
1 提交/修改/调整用车需求 PUT /v3/admin/order/:id/vehicle-requirement 行为变更 增加操作人归属校验,非本单定制师/非超管返回 582094

二、接口详情

1. 提交/修改/调整用车需求 PUT /v3/admin/order/:id/vehicle-requirement

使用场景:定制师在订单详情提交/修改/调整用车需求(无 active=INIT_SUBMIT / PENDING=PENDING_EDIT / DONE=DONE_ADJUST 三分支自动判断)。

请求头Authorization: Bearer <token>(角色来自登录态,无新增字段)

入参(无变化):

字段 位置 类型 必填 说明
fleet[] Body Array 车型需求列表
fleet[].vehicleType Body String 车型大类 key如 suv/mpv
fleet[].seats Body Integer 座位数
fleet[].count Body Integer 辆数
specialTags[] Body Array - 特殊标签
remark Body String - 备注

出参Result<VehicleRequirementRespVO>branchTaken/version/... 结构无变化)

错误码(新增)

错误码 场景
582094 新增:操作人非该订单定制师且非超管(如车务角色调用)
582083 需求状态不允许此操作
582022 车型座位数选项非法

典型成功示例(定制师本人):

PUT /v3/admin/order/2084280429287817218/vehicle-requirement
Authorization: Bearer <wx token>
Content-Type: application/json

{
  "fleet": [
    {
      "vehicleType": "suv",
      "seats": 5,
      "count": 1
    }
  ],
  "specialTags": [],
  "remark": "定制师本人提交"
}

响应(成功):code=200,data 含 branchTaken=INIT_SUBMITversion=1

越权拒绝示例(车务角色调用他人订单):

PUT /v3/admin/order/2084466629751558146/vehicle-requirement
Authorization: Bearer <admin(VEHICLE_MANAGER) token>
Content-Type: application/json

{
  "fleet": [
    {
      "vehicleType": "suv",
      "seats": 5,
      "count": 1
    }
  ],
  "specialTags": [],
  "remark": "越权尝试"
}

响应(拒绝):code=582094「仅该订单定制师或超管可提交/修改用车需求」,data=null。

三、契约约束

场景 后端行为
车务VEHICLE_MANAGER调用任意订单 582094 拒绝,不落库(修复前返回 200 并成功修改需求)
定制师本人(订单归属 consultantId 匹配) 正常提交/修改
超管SUPER_ADMIN 放行,不校验归属
校验口径 POST /v3/admin/order/vehicle-requirement/:requirementId/urgent582084完全一致

前端注意事项

  • 管理后台车务端不展示/不调用此接口,前端无需改动;若存在车务侧直达该接口的旧逻辑,请清理。
  • 定制师弹窗调用该接口的既有逻辑不受影响。

验证证据

  • 定向单测 3 例车务角色拒绝582094 不落库)/ 定制师本人正常 / 超管放行。
  • 模块全量 mvn -pl hl-order-service-v3 -am test7414 tests 0 failures 0 errorsBUILD SUCCESS
  • TEST 网关实测adminVEHICLE_MANAGER对 wx 订单调用返回 582094 且需求未被修改;wxCUSTOMIZER本人调用返回 200 成功INIT_SUBMIT v1。超管路径由单测覆盖TEST 环境无超管账号)。

关联 / 联系人

链接

联系人

  • 后端负责人: @wx