fix(tenant): 修复修改租户套餐菜单,租户菜单更新错误的问题

This commit is contained in:
2025-07-27 12:43:39 +08:00
parent 54ba0999e4
commit f350ee1567
2 changed files with 8 additions and 12 deletions

View File

@@ -46,7 +46,8 @@ import java.util.List;
@Tag(name = "套餐管理 API")
@RestController
@RequiredArgsConstructor
@CrudRequestMapping(value = "/tenant/package", api = {Api.LIST, Api.PAGE, Api.GET, Api.CREATE, Api.UPDATE, Api.DELETE, Api.DICT})
@CrudRequestMapping(value = "/tenant/package", api = {Api.LIST, Api.PAGE, Api.GET, Api.CREATE, Api.UPDATE, Api.DELETE,
Api.DICT})
public class PackageController extends BaseController<PackageService, PackageResp, PackageDetailResp, PackageQuery, PackageReq> {
private final TenantExtensionProperties tenantExtensionProperties;

View File

@@ -49,7 +49,6 @@ import top.continew.starter.core.util.validation.CheckUtils;
import top.continew.starter.extension.tenant.util.TenantUtils;
import java.time.LocalDateTime;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -160,24 +159,20 @@ public class TenantServiceImpl extends BaseServiceImpl<TenantMapper, TenantDO, T
if (CollUtil.isEmpty(tenantIdList)) {
return;
}
// 删除旧菜单
// 所有租户角色:删除旧菜单
tenantIdList.forEach(tenantId -> TenantUtils.execute(tenantId, () -> {
// 删除旧菜单
roleMenuApi.deleteByNotInMenuIds(newMenuIds);
// 更新在线用户上下文
Set<Long> roleIdSet = roleMenuApi.listRoleIdByNotInMenuIds(newMenuIds);
roleIdSet.forEach(roleApi::updateUserContext);
// 删除旧菜单
roleMenuApi.deleteByNotInMenuIds(newMenuIds);
}));
// 租户管理员:新增菜单
tenantIdList.forEach(tenantId -> TenantUtils.execute(tenantId, () -> {
Long roleId = roleApi.getIdByCode(RoleCodeEnum.TENANT_ADMIN.getCode());
List<Long> oldMenuIdList = roleMenuApi.listMenuIdByRoleIds(List.of(roleId));
Collection<Long> addMenuIdList = CollUtil.disjunction(newMenuIds, oldMenuIdList);
if (CollUtil.isNotEmpty(addMenuIdList)) {
roleMenuApi.add(addMenuIdList.stream().toList(), roleId);
// 更新在线用户上下文
roleApi.updateUserContext(roleId);
}
roleMenuApi.add(newMenuIds, roleId);
// 更新在线用户上下文
roleApi.updateUserContext(roleId);
}));
// 删除缓存
RedisUtils.deleteByPattern(CacheConstants.ROLE_MENU_KEY_PREFIX + StringConstants.ASTERISK);