platform-food-audit-api.md 3.1 KB

平台商品审核接口

日期:2026-10-13。

修复原因

平台商品管理的审核开关曾调用 PUT /chanting/food/changerecommend。该方法为商家入口,要求商家 token 请求头、@Auth 和门店归属校验;平台使用 Authorization: Bearer ... 登录,因此出现缺少 token 的错误。不能把平台令牌伪装为商家令牌,也不能删除商家接口的身份/归属校验。

平台专用方法

PUT /chanting/food/audit

  • 登录与授权:现有平台 Authorization 机制,沿用 chanting:food:edit 权限;非匿名接口,不读取商家 token。
  • 请求 DTO 仅包含 id(正整数)与 toExamine(字符串 "0" 或 "1")。"1" 为审核通过,"0" 为撤销审核;不改变商品本身的 stackingUp 上下架字段含义。
  • 服务端只构造 id/toExamine 的更新对象,使用现有 UPDATE,不能插入不存在的商品,不处理或删除规格关联,不能借审核改门店、价格、名称、推荐或图片。
  • 参数不合法返回本地化 food.audit.invalid;未更新到记录返回原 AjaxResult 失败格式。平台请求失败或取消确认时,审核开关恢复原值。
  • 操作沿用平台更新日志;商家 /changerecommend 完全不变。列表、详情和通用商品编辑接口不在本次调整范围内。

    {"id":9137,"toExamine":"1"}
    

成功响应为现有 AjaxResult code=200,业务失败 code=500;HTTP 200 本身不代表审核已成功。无数据库字段、结构或菜单权限新增,无需执行 SQL。

验收

  1. 平台使用具备商品编辑权限的账号,切换审核通过/撤销,应请求 /chanting/food/audit,不再报缺少商家 token。
  2. 只有列表权限或未登录时不能执行审核;开关使用原商品编辑权限控制。
  3. 刷新列表核对审核结果;同时确认价格、门店归属、推荐、商品上架字段和规格均未变化。
  4. 非法 ID/状态、不存在商品、取消确认和请求失败不能产生错误成功提示;失败时开关恢复。
  5. 原商家接口仍要求商家登录与归属校验。

自动测试使用模拟数据库访问,不连接实际数据库;部署后仍需验证真实平台登录、角色权限与数据库更新。

本次本地验证

  • 已先复现原页面调用商家接口以及缺少平台审核方法的失败用例,再验证修复;商品审核新增 6 个 Java 用例和 2 个前端行为用例。
  • JDK 21 商品 Controller 与商家认证定向测试通过;mvn -pl ruoyi-admin -am test -q 全回归通过(admin/system 报告合计 1155 项、0 失败、0 错误、0 跳过)。mvn -pl ruoyi-admin -am -DskipTests package -q 模块打包通过,打包命令本身不运行测试。
  • 平台全部 Node 行为测试 27/27 通过;food.js ESLint 通过;staging 构建成功,保留既有两个 .vue~ 备份文件和包体积警告,未修改无关文件。
  • 未执行:真实平台登录、无权限账号拦截、实际 MySQL 更新和部署后页面冒烟。上述 MockMvc 使用独立 Controller,权限注解为契约校验,不代表已跑完整 Spring Security/真实令牌集成。