Browse Source

完成商家分管账号集成验证

qmj 1 day ago
parent
commit
6be4e7f425

+ 10 - 1
ruoyi-admin/src/test/java/com/ruoyi/app/mendian/PosFoodControllerShelfFilterTest.java

@@ -1,10 +1,12 @@
 package com.ruoyi.app.mendian;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.ruoyi.app.user.MerchantTokenSessionService;
 import com.ruoyi.common.utils.MessageUtils;
 import com.ruoyi.system.domain.InfoUser;
 import com.ruoyi.system.domain.PosFood;
 import com.ruoyi.system.service.IInfoUserService;
+import com.ruoyi.system.service.IPosFenleiService;
 import com.ruoyi.system.service.IPosFoodService;
 import com.ruoyi.system.utils.JwtUtil;
 import org.junit.jupiter.api.AfterEach;
@@ -32,6 +34,12 @@ class PosFoodControllerShelfFilterTest {
     @Mock
     private IInfoUserService infoUserService;
 
+    @Mock
+    private IPosFenleiService posFenleiService;
+
+    @Mock
+    private MerchantTokenSessionService merchantTokenSessionService;
+
     @InjectMocks
     private PosFoodController controller;
 
@@ -56,7 +64,8 @@ class PosFoodControllerShelfFilterTest {
     void getidlistExcludesOffShelfFoodsWhenNoShelfFilterIsProvided() {
         InfoUser user = new InfoUser();
         user.setUserType("0");
-        when(infoUserService.getById("101")).thenReturn(user);
+        when(merchantTokenSessionService.requireUserId(anyString())).thenReturn(101L);
+        when(infoUserService.getById(101L)).thenReturn(user);
         when(posFoodService.list(any(QueryWrapper.class))).thenReturn(Collections.emptyList());
 
         controller.getidlist(JwtUtil.token("101", "customer"), 9, "", null, null);

+ 11 - 0
specs/022-merchant-store-subaccounts/quickstart.md

@@ -47,3 +47,14 @@ npm run build:prod
 - 请求日志、异常日志和测试输出不包含密码、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 条手工路径保持为上线前验收清单。

+ 15 - 0
specs/022-merchant-store-subaccounts/tasks.md

@@ -1,5 +1,20 @@
 # 商家门店分管账号任务清单
 
+## 执行状态
+
+- [x] T001 数据模型与账号—店铺关联(提交 `5b910ad`)
+- [x] T002 集中式商家门店访问服务(提交 `e63cb3a`)
+- [x] T003 商家端分管账号管理接口(提交 `7862f9b`)
+- [x] T004 平台分管账号视图与商家列表隔离(提交 `7862f9b`)
+- [x] T005 商家登录、退出、双重状态和响应脱敏(提交 `7862f9b`、`5ae3c22`)
+- [x] T006 店铺、商品、分类和规格权限收口(提交 `dc595b9`)
+- [x] T007 订单、发票、取消和退款权限收口(提交 `4403def`)
+- [x] T008 按真实门店路由商家通知(提交 `33005c6`)
+- [x] T009 商家端分管账号与角色界面(`foodie-store` 提交 `4d4297d`)
+- [x] T010 平台端主商家下属分管账号界面(`foodie-admin-vue` 提交 `4d0414f`)
+- [x] T011 自动化测试、构建和规格回填
+- [ ] T011 数据库迁移后的联调、真机推送和完整手工验收(需人工环境)
+
 > **执行要求:** 按任务顺序实施;每个后端任务遵循测试先行,先确认定向测试失败,再写最小实现并复测。提交标题和正文使用中文。
 
 **输入**:[spec.md](spec.md)、[plan.md](plan.md)、[research.md](research.md)、[data-model.md](data-model.md)、[API 契约](contracts/api.md)