后台菜单重构:菜单类型分组排序(软件在前/后台在后)、新增同类型末尾排序;任务中心分组移除,视频任务记录归入记录与版本、店铺数据记录归入店铺管理;界面名词优化(菜单权限配置/去重数据汇总/无效ASIN数据/视频任务记录/店铺数据记录/生成记录)
Build Backend JAR / build (push) Has been cancelled

This commit is contained in:
2026-08-31 01:48:05 +08:00
parent 0408c9752e
commit 26f4bb3f25
8 changed files with 134 additions and 66 deletions
@@ -584,6 +584,55 @@ class PermissionMenuServiceTest {
assertThat(inserted.getValue().getColumnId()).isEqualTo(76L);
}
@Test
void fullCatalogOrdersAppMenusBeforeAdminMenus() {
PermissionMenuMapper menuMapper = mock(PermissionMenuMapper.class);
UserColumnPermissionMapper permissionMapper = mock(UserColumnPermissionMapper.class);
AdminUserMapper userMapper = mock(AdminUserMapper.class);
PermissionMenuService service = new PermissionMenuService(menuMapper, permissionMapper, userMapper);
// 全量目录:app/admin 交错出现,且各自 sort_order 交叉。期望先按类型分组
// app 在 admin 之前),组内再按 sort_order 升序。
when(menuMapper.selectList(any())).thenReturn(List.of(
menu(11L, null, "admin", 20),
menu(21L, null, "app", 120),
menu(12L, null, "admin", 10),
menu(22L, null, "app", 110)));
List<PermissionMenuItemVo> result = service.list(null);
assertThat(result).extracting(PermissionMenuItemVo::getId)
.containsExactly(22L, 21L, 12L, 11L);
}
@Test
void createWithoutSortOrderAppendsWithinSameMenuType() {
PermissionMenuMapper menuMapper = mock(PermissionMenuMapper.class);
UserColumnPermissionMapper permissionMapper = mock(UserColumnPermissionMapper.class);
AdminUserMapper userMapper = mock(AdminUserMapper.class);
PermissionMenuService service = new PermissionMenuService(menuMapper, permissionMapper, userMapper);
// create 内部依次用 selectOne 做唯一性校验(column_key、route_path),
// 最后 resolveSortOrder 取同类型尾项(admin 最后一个 sort_order = 134)。
PermissionMenuEntity adminTail = menu(9L, null, "admin", 134);
adminTail.setName("admin tail");
when(menuMapper.selectOne(any())).thenReturn(null, null, adminTail);
// create 成功后 getMenuById(insert 未回填的 id) 会走 selectById
when(menuMapper.selectById(any())).thenReturn(adminTail);
PermissionMenuCreateRequest request = createRequest(null, "admin");
request.setName("新菜单");
request.setColumnKey("new_admin_menu");
request.setRoutePath("new-admin-menu");
service.create(request);
ArgumentCaptor<PermissionMenuEntity> inserted = ArgumentCaptor.forClass(PermissionMenuEntity.class);
verify(menuMapper).insert(inserted.capture());
assertThat(inserted.getValue().getSortOrder()).isEqualTo(135);
assertThat(inserted.getValue().getMenuType()).isEqualTo("admin");
}
private PermissionMenuCreateRequest createRequest(Long parentId, String menuType) {
PermissionMenuCreateRequest request = new PermissionMenuCreateRequest();
request.setName("child");