1. 新增 permissionApi 查询当前用户权限级别的方法

This commit is contained in:
chenbowen
2025-12-18 20:26:27 +08:00
parent 633772f8b1
commit a86b98b0f5
6 changed files with 140 additions and 0 deletions

View File

@@ -1,7 +1,9 @@
package com.zt.plat.module.system.service.permission;
import com.zt.plat.framework.common.exception.ServiceException;
import com.zt.plat.framework.common.enums.CommonStatusEnum;
import com.zt.plat.framework.test.core.ut.BaseDbUnitTest;
import com.zt.plat.framework.common.util.json.JsonUtils;
import com.zt.plat.module.system.controller.admin.permission.vo.role.RoleSaveReqVO;
import com.zt.plat.module.system.dal.dataobject.permission.RoleDO;
import com.zt.plat.module.system.dal.dataobject.permission.RoleMenuDO;
@@ -11,6 +13,7 @@ import com.zt.plat.module.system.dal.mysql.permission.RoleMapper;
import com.zt.plat.module.system.dal.mysql.permission.RoleMenuMapper;
import com.zt.plat.module.system.dal.mysql.permission.UserRoleMapper;
import com.zt.plat.module.system.dal.mysql.rolemenuexclusion.RoleMenuExclusionMapper;
import com.zt.plat.module.system.enums.permission.DataScopeEnum;
import com.zt.plat.module.system.enums.permission.RoleTypeEnum;
import com.zt.plat.module.system.service.dept.DeptService;
import com.zt.plat.module.system.service.user.AdminUserService;
@@ -408,4 +411,54 @@ public class PermissionServiceTest extends BaseDbUnitTest {
assertEquals(1, exclusionDOS.size());
assertEquals(101L, exclusionDOS.get(0).getMenuId());
}
@Test
public void testGetUserDataPermissionLevel_noRolesReturnSelf() {
Long userId = 1000L;
DataScopeEnum result = permissionService.getUserDataPermissionLevel(userId);
assertEquals(DataScopeEnum.SELF, result);
}
@Test
public void testGetUserDataPermissionLevel_pickHighestPriority() {
Long userId = 2000L;
RoleDO roleCustom = randomPojo(RoleDO.class, o -> o
.setStatus(CommonStatusEnum.ENABLE.getStatus())
.setDataScope(DataScopeEnum.DEPT_CUSTOM.getScope())
.setId(110L)
.setTenantId(0L));
roleMapper.insert(roleCustom);
RoleDO roleCompany = randomPojo(RoleDO.class, o -> o
.setStatus(CommonStatusEnum.ENABLE.getStatus())
.setDataScope(DataScopeEnum.COMPANY_AND_DEPT.getScope())
.setId(120L)
.setTenantId(0L));
roleMapper.insert(roleCompany);
userRoleMapper.insert(randomPojo(UserRoleDO.class, o -> o.setUserId(userId).setRoleId(roleCustom.getId())));
userRoleMapper.insert(randomPojo(UserRoleDO.class, o -> o.setUserId(userId).setRoleId(roleCompany.getId())));
DataScopeEnum result = permissionService.getUserDataPermissionLevel(userId);
assertEquals(DataScopeEnum.COMPANY_AND_DEPT, result);
}
@Test
public void testGetUserDataPermissionLevel_serializeAsNumber() {
Long userId = 3000L;
RoleDO roleAll = randomPojo(RoleDO.class, o -> o
.setStatus(CommonStatusEnum.ENABLE.getStatus())
.setDataScope(DataScopeEnum.ALL.getScope())
.setId(210L)
.setTenantId(0L));
roleMapper.insert(roleAll);
userRoleMapper.insert(randomPojo(UserRoleDO.class, o -> o.setUserId(userId).setRoleId(roleAll.getId())));
DataScopeEnum result = permissionService.getUserDataPermissionLevel(userId);
assertEquals(DataScopeEnum.ALL, result);
assertEquals("1", JsonUtils.toJsonString(result));
}
}