quickstart.md 3.2 KB

快速验证:商家门店分管账号

前置条件

  1. 使用 JDK 21:C:\Users\qmj\.jdks\graalvm-jdk-21.0.7
  2. 数据库迁移只从 updatesql/sql.md 人工执行;Codex 不直接执行迁移。
  3. 准备一个类型 1 主商家、三家归属门店和两个可接收推送的测试设备账号。

自动化验证

$env:JAVA_HOME='C:\Users\qmj\.jdks\graalvm-jdk-21.0.7'
$env:Path="$env:JAVA_HOME\bin;$env:Path"
mvn -pl ruoyi-admin -am -Dtest=MerchantStoreAccessServiceTest,MerchantSubaccountControllerTest,MerchantSubaccountAdminControllerTest,MerchantNotificationRouterTest,InfoUserControllerTest,PosStoreControllerTest,PosFoodControllerAccessTest,PosOrderShOprateControllerTest -Dsurefire.failIfNoSpecifiedTests=false test
mvn -pl ruoyi-admin -am -DskipTests package

商家端:

Set-Location E:\QtwCode\foodie\foodie-store
npm run build

平台端:

Set-Location E:\QtwCode\foodie\foodie-admin-vue
npm run build:prod

手工验收路径

  1. 主账号创建分管账号甲并授权店铺 A、B;甲登录后只看到 A、B。
  2. 甲通过手工构造请求访问同主账号店铺 C 的订单、商品和退款,后端全部拒绝。
  3. 甲调用新增或删除店铺、支付配置和财务接口,后端拒绝。
  4. 主账号取消甲对 A 的授权;甲不重新登录,下一次访问 A 立即失败。
  5. A 同时配置甲、乙且两者 App 会话有效;触发 A 通知,甲乙各有一条消息,主账号没有重复消息。
  6. 甲乙均无有效 App 会话;再次触发 A 通知,主账号获得兜底消息。
  7. 平台商家列表、导出和统计只出现主账号;从主商家行进入分管账号视图可看到甲乙。
  8. 平台停用甲后,甲的现有会话失效;主账号尝试启用甲也不能覆盖平台状态。
  9. 平台恢复甲但主账号仍停用甲,甲仍不能登录;主账号再次启用后才恢复。
  10. 平台停用主商家,甲乙全部不能登录、操作或接收通知。

安全检查

  • 请求日志、异常日志和测试输出不包含密码、RSA 密文、完整 Token 或 CID。
  • 所有越权失败在业务写入之前发生,不产生部分授权、订单状态或退款状态变更。
  • git diff --check 无空白错误;两个 Vue 仓库的原 CRLF 不被批量改写。

2026-08-28 自动化验证结果

  • JDK 21 定向测试:38 个测试通过,0 失败、0 错误、0 跳过。
  • 商品下架过滤兼容测试:1 个测试通过;旧测试夹具已按新的商家会话鉴权链补齐依赖。
  • 后端完整回归:293 个测试通过,0 失败、0 错误、0 跳过。
  • 后端打包:mvn -pl ruoyi-admin -am -DskipTests package 成功。
  • 商家端:npm run build 成功;仅有既有 Browserslist、Node 弃用及包体积提示。
  • 平台端:npm run build:prod 成功;存在既有 promotion/index.vue~pointcontrol/pointTier.vue~ 解析警告及包体积提示,未阻断构建。
  • 数据库迁移未执行,updatesql/sql.md 由开发者统一手动执行。
  • 尚未执行依赖真实数据库、Redis、App 会话、CID 和 iOS 云函数的手工验收;上方 10 条手工路径保持为上线前验收清单。