Browse Source

feat(role): 根据用户组织代码过滤角色列表

- 获取当前登录用户信息用于权限判断
- 非三级组织用户隐藏operation_mg、platform_mg和admin角色
- 动态调整分页数据总数以匹配过滤后的结果
- 保持租户隔离逻辑的同时优化角色显示控制
SheepHy 2 ngày trước cách đây
mục cha
commit
34db0ae052

+ 15 - 0
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/controller/SysRoleController.java

@@ -87,6 +87,7 @@ public class SysRoleController {
 									  @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
 									  @RequestParam(name="isMultiTranslate", required = false) Boolean isMultiTranslate,
 									  HttpServletRequest req) {
+        LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
         //update-begin---author:wangshuai---date:2025-03-26---for:【issues/7948】角色解决根据id查询回显不对---
         if(null != isMultiTranslate && isMultiTranslate){
             pageSize = 100;
@@ -98,6 +99,20 @@ public class SysRoleController {
 		Page<SysRole> page = new Page<SysRole>(pageNo, pageSize);
 		//换成不做租户隔离的方法,实际上还是存在缺陷(缺陷:如果开启租户隔离,虽然能看到其他租户下的角色,编辑会提示报错)
 		IPage<SysRole> pageList = sysRoleService.listAllSysRole(page, role);
+        if(loginUser.getOrgCode().length() != 3){
+            // 移除operation_mg和platform_mg角色
+            List<SysRole> records = pageList.getRecords();
+            Iterator<SysRole> iterator = records.iterator();
+            while (iterator.hasNext()) {
+                SysRole sysRole = iterator.next();
+                if ("operation_mg".equals(sysRole.getRoleCode()) || "platform_mg".equals(sysRole.getRoleCode()) || "admin".equals(sysRole.getRoleCode())) {
+                    iterator.remove();
+                }
+            }
+            // 更新pageList的记录数
+            pageList.setRecords(records);
+            pageList.setTotal(records.size());
+        }
 		result.setSuccess(true);
 		result.setResult(pageList);
 		return result;