From b7624be989e599505cdf2ccf4f43f3ac952733f0 Mon Sep 17 00:00:00 2001
From: zhongrj <646384940@qq.com>
Date: Sun, 17 Sep 2023 16:37:54 +0800
Subject: [PATCH] 角色查询修改,只查询当前角色下级角色,用户查询排除超级管理员查询,角色数查询除超级管理员查询查全部外,其他角色只查询当有有的权限菜单

---
 src/main/java/org/springblade/modules/system/mapper/UserMapper.xml             |   18 ++------
 src/main/java/org/springblade/modules/system/service/impl/RoleServiceImpl.java |    1 
 src/main/java/org/springblade/modules/system/mapper/RoleMapper.xml             |   13 ++++--
 src/main/java/org/springblade/modules/system/vo/RoleParam.java                 |   10 +++++
 src/main/java/org/springblade/modules/system/service/impl/MenuServiceImpl.java |    3 +
 src/main/java/org/springblade/modules/system/controller/MenuController.java    |   25 +++++++-----
 src/main/java/org/springblade/modules/system/controller/TenantController.java  |    9 +++-
 src/main/java/org/springblade/modules/system/controller/UserController.java    |    7 +--
 8 files changed, 51 insertions(+), 35 deletions(-)

diff --git a/src/main/java/org/springblade/modules/system/controller/MenuController.java b/src/main/java/org/springblade/modules/system/controller/MenuController.java
index 1046fee..099b042 100644
--- a/src/main/java/org/springblade/modules/system/controller/MenuController.java
+++ b/src/main/java/org/springblade/modules/system/controller/MenuController.java
@@ -25,6 +25,7 @@
 import org.springblade.core.launch.constant.AppConstant;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.secure.BladeUser;
+import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tenant.annotation.NonDS;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.support.Kv;
@@ -173,8 +174,8 @@
 	@GetMapping("/routes")
 	@ApiOperationSupport(order = 8)
 	@ApiOperation(value = "前端菜单数据", notes = "前端菜单数据")
-	public R<List<MenuVO>> routes(BladeUser user, Long topMenuId) {
-		List<MenuVO> list = menuService.routes((user == null) ? null : user.getRoleId(), topMenuId);
+	public R<List<MenuVO>> routes(Long topMenuId) {
+		List<MenuVO> list = menuService.routes(AuthUtil.getUser().getRoleId(), topMenuId);
 		return R.data(list);
 	}
 
@@ -184,8 +185,8 @@
 	@GetMapping("/routes-ext")
 	@ApiOperationSupport(order = 9)
 	@ApiOperation(value = "前端菜单数据", notes = "前端菜单数据")
-	public R<List<MenuVO>> routesExt(BladeUser user, Long topMenuId) {
-		List<MenuVO> list = menuService.routesExt(user.getRoleId(), topMenuId);
+	public R<List<MenuVO>> routesExt(Long topMenuId) {
+		List<MenuVO> list = menuService.routesExt(AuthUtil.getUser().getRoleId(), topMenuId);
 		return R.data(list);
 	}
 
@@ -195,8 +196,8 @@
 	@GetMapping("/buttons")
 	@ApiOperationSupport(order = 10)
 	@ApiOperation(value = "前端按钮数据", notes = "前端按钮数据")
-	public R<List<MenuVO>> buttons(BladeUser user) {
-		List<MenuVO> list = menuService.buttons(user.getRoleId());
+	public R<List<MenuVO>> buttons() {
+		List<MenuVO> list = menuService.buttons(AuthUtil.getUser().getRoleId());
 		return R.data(list);
 	}
 
@@ -217,7 +218,8 @@
 	@GetMapping("/grant-tree")
 	@ApiOperationSupport(order = 12)
 	@ApiOperation(value = "权限分配树形结构", notes = "权限分配树形结构")
-	public R<GrantTreeVO> grantTree(BladeUser user) {
+	public R<GrantTreeVO> grantTree() {
+		BladeUser user = AuthUtil.getUser();
 		GrantTreeVO vo = new GrantTreeVO();
 		vo.setMenu(menuService.grantTree(user));
 		vo.setDataScope(menuService.grantDataScopeTree(user));
@@ -245,7 +247,8 @@
 	@GetMapping("/grant-top-tree")
 	@ApiOperationSupport(order = 14)
 	@ApiOperation(value = "顶部菜单树形结构", notes = "顶部菜单树形结构")
-	public R<GrantTreeVO> grantTopTree(BladeUser user) {
+	public R<GrantTreeVO> grantTopTree() {
+		BladeUser user = AuthUtil.getUser();
 		GrantTreeVO vo = new GrantTreeVO();
 		vo.setMenu(menuService.grantTopTree(user));
 		return R.data(vo);
@@ -269,7 +272,8 @@
 	@GetMapping("/top-menu")
 	@ApiOperationSupport(order = 16)
 	@ApiOperation(value = "顶部菜单数据", notes = "顶部菜单数据")
-	public R<List<TopMenu>> topMenu(BladeUser user) {
+	public R<List<TopMenu>> topMenu() {
+		BladeUser user = AuthUtil.getUser();
 		if (Func.isEmpty(user)) {
 			return null;
 		}
@@ -283,7 +287,8 @@
 	@GetMapping("auth-routes")
 	@ApiOperationSupport(order = 17)
 	@ApiOperation(value = "菜单的角色权限")
-	public R<List<Kv>> authRoutes(BladeUser user) {
+	public R<List<Kv>> authRoutes() {
+		BladeUser user = AuthUtil.getUser();
 		if (Func.isEmpty(user)) {
 			return null;
 		}
diff --git a/src/main/java/org/springblade/modules/system/controller/TenantController.java b/src/main/java/org/springblade/modules/system/controller/TenantController.java
index db652f9..1b0d10b 100644
--- a/src/main/java/org/springblade/modules/system/controller/TenantController.java
+++ b/src/main/java/org/springblade/modules/system/controller/TenantController.java
@@ -20,6 +20,7 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.qiniu.util.Auth;
 import io.swagger.annotations.*;
 import lombok.AllArgsConstructor;
 import org.springblade.core.boot.ctrl.BladeController;
@@ -29,6 +30,7 @@
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.secure.BladeUser;
 import org.springblade.core.secure.annotation.PreAuth;
+import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tenant.annotation.NonDS;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.constant.BladeConstant;
@@ -99,9 +101,12 @@
 	@ApiOperationSupport(order = 3)
 	@ApiOperation(value = "下拉数据源", notes = "传入tenant")
 	//@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
-	public R<List<Tenant>> select(Tenant tenant, BladeUser bladeUser) {
+	public R<List<Tenant>> select() {
+		BladeUser user = AuthUtil.getUser();
+		Tenant tenant = new Tenant();
+		tenant.setTenantId(AuthUtil.getTenantId());
 		QueryWrapper<Tenant> queryWrapper = Condition.getQueryWrapper(tenant);
-		List<Tenant> list = tenantService.list((!bladeUser.getTenantId().equals(BladeConstant.ADMIN_TENANT_ID)) ? queryWrapper.lambda().eq(Tenant::getTenantId, bladeUser.getTenantId()) : queryWrapper);
+		List<Tenant> list = tenantService.list((!user.getTenantId().equals(BladeConstant.ADMIN_TENANT_ID)) ? queryWrapper.lambda().eq(Tenant::getTenantId, user.getTenantId()) : queryWrapper);
 		return R.data(list);
 	}
 
diff --git a/src/main/java/org/springblade/modules/system/controller/UserController.java b/src/main/java/org/springblade/modules/system/controller/UserController.java
index 29d9ce7..86855ce 100644
--- a/src/main/java/org/springblade/modules/system/controller/UserController.java
+++ b/src/main/java/org/springblade/modules/system/controller/UserController.java
@@ -199,11 +199,8 @@
 	})
 	@ApiOperationSupport(order = 3)
 	@ApiOperation(value = "列表", notes = "传入account和realName")
-	//@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
-	public R<IPage<UserVO>> page(@ApiIgnore User user, Query query, Long deptId, BladeUser bladeUser) {
-		System.out.println("在线更新代码.... ");
-		IPage<UserVO> pages = userService.selectUserPage(Condition.getPage(query), user, deptId, (bladeUser.getTenantId().equals(BladeConstant.ADMIN_TENANT_ID) ? StringPool.EMPTY : bladeUser.getTenantId()));
-		System.out.println("=================在线更新代码==================");
+	public R<IPage<UserVO>> page(@ApiIgnore User user, Query query, Long deptId) {
+		IPage<UserVO> pages = userService.selectUserPage(Condition.getPage(query), user, deptId, (AuthUtil.getTenantId().equals(BladeConstant.ADMIN_TENANT_ID) ? StringPool.EMPTY : AuthUtil.getTenantId()));
 		return R.data(pages);
 	}
 
diff --git a/src/main/java/org/springblade/modules/system/mapper/RoleMapper.xml b/src/main/java/org/springblade/modules/system/mapper/RoleMapper.xml
index 931d402..723bf61 100644
--- a/src/main/java/org/springblade/modules/system/mapper/RoleMapper.xml
+++ b/src/main/java/org/springblade/modules/system/mapper/RoleMapper.xml
@@ -97,12 +97,17 @@
             SELECT * FROM
             (
                 SELECT t1.*,IF( find_in_set( parent_id, @pids ) > 0, @pids := concat( @pids, ',', id ), 0 ) AS ischild FROM
-                ( SELECT id, parent_id,role_name FROM blade_role t where is_deleted =0 ORDER BY parent_id, id ) t1,
+                ( SELECT id, parent_id,role_name,role_alias FROM blade_role t where is_deleted =0 ORDER BY parent_id, id ) t1,
                 ( SELECT @pids := #{roleParam.roleId} ) t2
             ) t3
-            WHERE
-            ischild != 0
-        ) on br.id = t3.id
+            WHERE id != 1123598816738675201 and id != #{roleParam.roleId}
+            <if test="roleParam.roleName!=null and roleParam.roleName!=''">
+                and role_name like concat('%',#{roleParam.roleName},'%')
+            </if>
+            <if test="roleParam.roleAlias!=null and roleParam.roleAlias!=''">
+                and role_alias like concat('%',#{roleParam.roleAlias},'%')
+            </if>
+        ) t4 on br.id = t4.id
         <if test="roleParam.isNowLevel==0">
             union all
             (
diff --git a/src/main/java/org/springblade/modules/system/mapper/UserMapper.xml b/src/main/java/org/springblade/modules/system/mapper/UserMapper.xml
index 4ee38f8..80dfff4 100644
--- a/src/main/java/org/springblade/modules/system/mapper/UserMapper.xml
+++ b/src/main/java/org/springblade/modules/system/mapper/UserMapper.xml
@@ -344,21 +344,13 @@
         </if>
     </select>
 
+    <!--用户列表信息-->
     <select id="selectUserPage" resultMap="userResultMap">
         select bu.* from blade_user bu
-        left join
-        blade_dept bd
-        on
-        bd.id = bu.dept_id
-        left join
-        sys_jurisdiction sj
-        on
-        sj.id = bu.jurisdiction
-        left join
-        blade_role br
-        on
-        br.id = bu.role_id
-        where bu.is_deleted = 0
+        left join blade_dept bd on bd.id = bu.dept_id
+        left join sys_jurisdiction sj on sj.id = bu.jurisdiction
+        left join blade_role br on br.id = bu.role_id
+        where bu.is_deleted = 0 and bu.id != 1123598821738675201
         <if test="user.tenantId!=null and user.tenantId != ''">
             and tenant_id = #{user.tenantId}
         </if>
diff --git a/src/main/java/org/springblade/modules/system/service/impl/MenuServiceImpl.java b/src/main/java/org/springblade/modules/system/service/impl/MenuServiceImpl.java
index ef42e94..ddbcbae 100644
--- a/src/main/java/org/springblade/modules/system/service/impl/MenuServiceImpl.java
+++ b/src/main/java/org/springblade/modules/system/service/impl/MenuServiceImpl.java
@@ -24,6 +24,7 @@
 import org.springblade.core.secure.BladeUser;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.constant.BladeConstant;
+import org.springblade.core.tool.constant.RoleConstant;
 import org.springblade.core.tool.node.ForestNodeMerger;
 import org.springblade.core.tool.support.Kv;
 import org.springblade.core.tool.utils.Func;
@@ -154,7 +155,7 @@
 
 	@Override
 	public List<MenuVO> grantTree(BladeUser user) {
-		return ForestNodeMerger.merge(user.getTenantId().equals(BladeConstant.ADMIN_TENANT_ID) ? baseMapper.grantTree() : baseMapper.grantTreeByRole(Func.toLongList(user.getRoleId())));
+		return ForestNodeMerger.merge(AuthUtil.getUser().getRoleName().equals(RoleConstant.ADMINISTRATOR) ? baseMapper.grantTree() : baseMapper.grantTreeByRole(Func.toLongList(user.getRoleId())));
 	}
 
 	@Override
diff --git a/src/main/java/org/springblade/modules/system/service/impl/RoleServiceImpl.java b/src/main/java/org/springblade/modules/system/service/impl/RoleServiceImpl.java
index c0ac7bd..765ce66 100644
--- a/src/main/java/org/springblade/modules/system/service/impl/RoleServiceImpl.java
+++ b/src/main/java/org/springblade/modules/system/service/impl/RoleServiceImpl.java
@@ -198,6 +198,7 @@
 			}
 			role.setTenantId(parent.getTenantId());
 		}
+		role.setParentId(Long.parseLong(AuthUtil.getUser().getRoleId()));
 		role.setIsDeleted(BladeConstant.DB_NOT_DELETED);
 		return saveOrUpdate(role);
 	}
diff --git a/src/main/java/org/springblade/modules/system/vo/RoleParam.java b/src/main/java/org/springblade/modules/system/vo/RoleParam.java
index 6ce56e5..a39ca1a 100644
--- a/src/main/java/org/springblade/modules/system/vo/RoleParam.java
+++ b/src/main/java/org/springblade/modules/system/vo/RoleParam.java
@@ -50,4 +50,14 @@
 	 * 角色id
 	 */
 	private String roleId;
+
+	/**
+	 * 角色名称
+	 */
+	private String roleName;
+
+	/**
+	 * 角色别名
+	 */
+	private String roleAlias;
 }

--
Gitblit v1.9.3