From fb798e4982a392408b3e8324c69baba0824fe3fd Mon Sep 17 00:00:00 2001
From: guoshilong <123456>
Date: Fri, 03 Nov 2023 13:44:15 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 src/main/java/org/springblade/modules/system/mapper/UserMapper.xml             |    1 
 src/main/java/org/springblade/modules/system/service/IRoleService.java         |    8 ++
 src/main/java/org/springblade/modules/system/service/impl/RoleServiceImpl.java |   12 ++++
 src/main/java/org/springblade/modules/system/mapper/RoleMapper.xml             |   27 +++++++++
 src/main/java/org/springblade/modules/system/vo/RoleParam.java                 |   55 ++++++++++++++++++
 src/main/java/org/springblade/modules/system/mapper/RoleMapper.java            |    8 ++
 src/main/java/org/springblade/modules/system/controller/RoleController.java    |   13 ++++
 src/main/java/org/springblade/modules/system/service/impl/MenuServiceImpl.java |    4 
 src/main/java/org/springblade/modules/system/controller/TenantController.java  |    8 ++
 9 files changed, 132 insertions(+), 4 deletions(-)

diff --git a/src/main/java/org/springblade/modules/system/controller/RoleController.java b/src/main/java/org/springblade/modules/system/controller/RoleController.java
index 994bd9e..f341124 100644
--- a/src/main/java/org/springblade/modules/system/controller/RoleController.java
+++ b/src/main/java/org/springblade/modules/system/controller/RoleController.java
@@ -39,6 +39,7 @@
 import org.springblade.modules.system.entity.User;
 import org.springblade.modules.system.service.IRoleService;
 import org.springblade.modules.system.vo.GrantVO;
+import org.springblade.modules.system.vo.RoleParam;
 import org.springblade.modules.system.vo.RoleVO;
 import org.springblade.modules.system.wrapper.RoleWrapper;
 import org.springframework.web.bind.annotation.*;
@@ -180,4 +181,16 @@
 	}
 
 
+	/**
+	 * 自定义列表(只获取当前角色下级角色)
+	 * @param roleParam
+	 * @return
+	 */
+	@GetMapping("/getRoleList")
+	public R<List<RoleVO>> getRoleList(RoleParam roleParam) {
+		List<Role> list = roleService.getRoleList(roleParam);
+		return R.data(RoleWrapper.build().listNodeVO(list));
+	}
+
+
 }
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 589dc36..70664ad 100644
--- a/src/main/java/org/springblade/modules/system/controller/TenantController.java
+++ b/src/main/java/org/springblade/modules/system/controller/TenantController.java
@@ -29,6 +29,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;
@@ -105,9 +106,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/mapper/RoleMapper.java b/src/main/java/org/springblade/modules/system/mapper/RoleMapper.java
index eb07e1f..65d7c86 100644
--- a/src/main/java/org/springblade/modules/system/mapper/RoleMapper.java
+++ b/src/main/java/org/springblade/modules/system/mapper/RoleMapper.java
@@ -20,6 +20,7 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.apache.ibatis.annotations.Param;
 import org.springblade.modules.system.entity.Role;
+import org.springblade.modules.system.vo.RoleParam;
 import org.springblade.modules.system.vo.RoleVO;
 
 import java.util.List;
@@ -66,4 +67,11 @@
 	List<String> getRoleAliases(Long[] ids);
 
     List<Role> getRoleListByIds(@Param("ids") String roleIds);
+
+	/**
+	 * 自定义列表(只获取当前角色下级角色)
+	 * @param roleParam
+	 * @return
+	 */
+    List<Role> getRoleList(@Param("roleParam") RoleParam roleParam);
 }
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 9dc151f..57e1edd 100644
--- a/src/main/java/org/springblade/modules/system/mapper/RoleMapper.xml
+++ b/src/main/java/org/springblade/modules/system/mapper/RoleMapper.xml
@@ -26,6 +26,7 @@
 
     <select id="tree" resultMap="treeNodeResultMap">
         select id, parent_id, role_name as title, id as "value", id as "key" from blade_role where is_deleted = 0
+        and id!=1123598816738675201
         <if test="param1!=null">
             and tenant_id = #{param1}
         </if>
@@ -67,4 +68,30 @@
         </foreach>
     </select>
 
+    <!--角色查询-->
+    <select id="getRoleList" resultType="org.springblade.modules.system.entity.Role">
+        SELECT br.* FROM blade_role br
+        inner join (
+        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,role_alias FROM blade_role t where is_deleted =0 ORDER BY parent_id, id ) t1,
+        ( SELECT @pids := #{roleParam.roleId} ) t2
+        ) t3
+        WHERE id != 1123598816738675201
+        <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
+            (
+            SELECT * FROM blade_role where id = #{roleParam.roleId}
+            )
+        </if>
+    </select>
+
 </mapper>
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 fd25827..e65c4d3 100644
--- a/src/main/java/org/springblade/modules/system/mapper/UserMapper.xml
+++ b/src/main/java/org/springblade/modules/system/mapper/UserMapper.xml
@@ -29,6 +29,7 @@
 
     <select id="selectUserPage" resultMap="userResultMap">
         select * from blade_user where is_deleted = 0
+        and id != 1123598821738675201
         <if test="tenantId!=null and tenantId != ''">
             and tenant_id = #{tenantId}
         </if>
diff --git a/src/main/java/org/springblade/modules/system/service/IRoleService.java b/src/main/java/org/springblade/modules/system/service/IRoleService.java
index 22c19b4..f754b33 100644
--- a/src/main/java/org/springblade/modules/system/service/IRoleService.java
+++ b/src/main/java/org/springblade/modules/system/service/IRoleService.java
@@ -19,6 +19,7 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 import org.springblade.modules.system.entity.Role;
+import org.springblade.modules.system.vo.RoleParam;
 import org.springblade.modules.system.vo.RoleVO;
 
 import javax.validation.constraints.NotEmpty;
@@ -116,4 +117,11 @@
 	 * @return
 	 */
 	List<Role> getRoleListByIds(String roleIds);
+
+	/**
+	 * 自定义列表(只获取当前角色下级角色)
+	 * @param roleParam
+	 * @return
+	 */
+    List<Role> getRoleList(RoleParam roleParam);
 }
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 3ab9b53..d1f91f6 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
@@ -25,6 +25,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.node.TreeNode;
 import org.springblade.core.tool.support.Kv;
@@ -153,8 +154,7 @@
 
 	@Override
 	public List<TreeNode> grantTree(BladeUser user) {
-		List<TreeNode> menuTree = user.getTenantId().equals(BladeConstant.ADMIN_TENANT_ID) ? baseMapper.grantTree() : baseMapper.grantTreeByRole(Func.toLongList(user.getRoleId()));
-		return ForestNodeMerger.merge(tenantPackageTree(menuTree, user.getTenantId()));
+		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 c8c9657..f299b26 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
@@ -35,6 +35,7 @@
 import org.springblade.modules.system.service.IRoleMenuService;
 import org.springblade.modules.system.service.IRoleScopeService;
 import org.springblade.modules.system.service.IRoleService;
+import org.springblade.modules.system.vo.RoleParam;
 import org.springblade.modules.system.vo.RoleVO;
 import org.springblade.modules.system.wrapper.RoleWrapper;
 import org.springframework.stereotype.Service;
@@ -197,6 +198,7 @@
 			}
 			role.setTenantId(parent.getTenantId());
 		}
+		role.setParentId(Long.parseLong(AuthUtil.getUser().getRoleId()));
 		role.setIsDeleted(BladeConstant.DB_NOT_DELETED);
 		return saveOrUpdate(role);
 	}
@@ -232,4 +234,14 @@
 		return baseMapper.getRoleListByIds(roleIds);
 	}
 
+	/**
+	 * 自定义列表(只获取当前角色下级角色)
+	 * @param roleParam
+	 * @return
+	 */
+	@Override
+	public List<Role> getRoleList(RoleParam roleParam) {
+		roleParam.setRoleId(AuthUtil.getUser().getRoleId());
+		return baseMapper.getRoleList(roleParam);
+	}
 }
diff --git a/src/main/java/org/springblade/modules/system/vo/RoleParam.java b/src/main/java/org/springblade/modules/system/vo/RoleParam.java
new file mode 100644
index 0000000..6d7ae30
--- /dev/null
+++ b/src/main/java/org/springblade/modules/system/vo/RoleParam.java
@@ -0,0 +1,55 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.modules.system.vo;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.modules.system.entity.Role;
+
+/**
+ * 视图实体类
+ *
+ * @author Chill
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "RoleVO对象", description = "RoleVO对象")
+public class RoleParam extends Role {
+	private static final long serialVersionUID = 1L;
+
+
+	/**
+	 * 是否返回当前层级 0:是  1:否
+	 */
+	private Integer isNowLevel;
+
+	/**
+	 * 角色id
+	 */
+	private String roleId;
+
+	/**
+	 * 角色名称
+	 */
+	private String roleName;
+
+	/**
+	 * 角色别名
+	 */
+	private String roleAlias;
+}

--
Gitblit v1.9.3