Explorar el Código

feat: 角色管理增加租户逻辑

yang kai hace 2 años
padre
commit
bf0a6dfd72

+ 8 - 2
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysMenuController.java

@@ -60,8 +60,14 @@ public class SysMenuController extends BaseController
     @GetMapping("/treeselect")
     public AjaxResult treeselect(SysMenu menu)
     {
-        List<SysMenu> menus = menuService.selectMenuList(menu, getUserId());
-        return success(menuService.buildMenuTreeSelect(menus));
+        if (getTenantId() != null) {
+            List<SysMenu> menus = menuService.selectMenuList(menu, getUserId(), getTenantId());
+            return success(menuService.buildMenuTreeSelect(menus));
+        } else {
+            List<SysMenu> menus = menuService.selectMenuList(menu, getUserId());
+            return success(menuService.buildMenuTreeSelect(menus));
+        }
+
     }
 
     /**

+ 2 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java

@@ -60,6 +60,7 @@ public class SysRoleController extends BaseController
     public TableDataInfo list(SysRole role)
     {
         startPage();
+        role.setTenantId(getTenantId());
         List<SysRole> list = roleService.selectRoleList(role);
         return getDataTable(list);
     }
@@ -102,6 +103,7 @@ public class SysRoleController extends BaseController
             return error("新增角色'" + role.getRoleName() + "'失败,角色权限已存在");
         }
         role.setCreateBy(getUsername());
+        role.setTenantId(getTenantId());
         return toAjax(roleService.insertRole(role));
 
     }

+ 11 - 0
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysRole.java

@@ -219,6 +219,16 @@ public class SysRole extends BaseEntity
         this.permissions = permissions;
     }
 
+    private Long tenantId;
+
+    public Long getTenantId() {
+        return tenantId;
+    }
+
+    public void setTenantId(Long tenantId) {
+        this.tenantId = tenantId;
+    }
+
     @Override
     public String toString() {
         return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
@@ -236,6 +246,7 @@ public class SysRole extends BaseEntity
             .append("updateBy", getUpdateBy())
             .append("updateTime", getUpdateTime())
             .append("remark", getRemark())
+                .append("tenantId", getTenantId())
             .toString();
     }
 }

+ 7 - 0
ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysMenuMapper.java

@@ -19,6 +19,13 @@ public interface SysMenuMapper
      */
     public List<SysMenu> selectMenuList(SysMenu menu);
 
+    /**
+     * 查询租户菜单列表
+     * @param tenantId
+     * @return
+     */
+    public List<SysMenu> selectTenantMenuList(Long tenantId);
+
     /**
      * 根据用户所有权限
      *

+ 1 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/ISysMenuService.java

@@ -29,6 +29,7 @@ public interface ISysMenuService
      * @return 菜单列表
      */
     public List<SysMenu> selectMenuList(SysMenu menu, Long userId);
+    public List<SysMenu> selectMenuList(SysMenu menu, Long userId, Long tenantId);
 
     /**
      * 根据用户ID查询权限

+ 8 - 2
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java

@@ -70,8 +70,7 @@ public class SysMenuServiceImpl implements ISysMenuService
         if (SysUser.isAdmin(userId))
         {
             menuList = menuMapper.selectMenuList(menu);
-        }
-        else
+        }  else
         {
             menu.getParams().put("userId", userId);
             menuList = menuMapper.selectMenuListByUserId(menu);
@@ -79,6 +78,13 @@ public class SysMenuServiceImpl implements ISysMenuService
         return menuList;
     }
 
+    @Override
+    public List<SysMenu> selectMenuList(SysMenu menu, Long userId, Long tenantId)
+    {
+        List<SysMenu> menuList = menuMapper.selectTenantMenuList(tenantId);
+        return menuList;
+    }
+
     /**
      * 根据用户ID查询权限
      * 

+ 8 - 0
ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml

@@ -47,6 +47,14 @@
 		</where>
 		order by parent_id, order_num
 	</select>
+
+	<select id="selectTenantMenuList" parameterType="Long" resultMap="SysMenuResult">
+		select m.menu_id, menu_name, parent_id, order_num, path, component, `query`, is_frame, is_cache, menu_type, visible, status, ifnull(perms,'') as perms, icon, create_time, tm.`tenant_id`
+		from sys_menu m
+		left join sys_tenant_menu tm on tm.menu_id = m.menu_id
+		where tm.tenant_id = #{tenantId}
+		order by parent_id, order_num
+	</select>
 	
 	<select id="selectMenuTreeAll" resultMap="SysMenuResult">
 		select distinct m.menu_id, m.parent_id, m.menu_name, m.path, m.component, m.`query`, m.visible, m.status, ifnull(m.perms,'') as perms, m.is_frame, m.is_cache, m.menu_type, m.icon, m.order_num, m.create_time

+ 6 - 0
ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml

@@ -19,6 +19,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 		<result property="updateBy"           column="update_by"             />
 		<result property="updateTime"         column="update_time"           />
 		<result property="remark"             column="remark"                />
+		<result property="tenantId"           column="tenant_id"             />
 	</resultMap>
 	
 	<sql id="selectRoleVo">
@@ -51,6 +52,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 		<if test="params.endTime != null and params.endTime != ''"><!-- 结束时间检索 -->
 			and date_format(r.create_time,'%y%m%d') &lt;= date_format(#{params.endTime},'%y%m%d')
 		</if>
+		<if test="tenantId != null and tenantId != 0">
+			AND r.tenant_id = #{tenantId}
+		</if>
 		<!-- 数据范围过滤 -->
 		${params.dataScope}
 		order by r.role_sort
@@ -104,6 +108,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  			<if test="deptCheckStrictly != null">dept_check_strictly,</if>
  			<if test="status != null and status != ''">status,</if>
  			<if test="remark != null and remark != ''">remark,</if>
+		    <if test="tenantId != null and tenantId != 0">tenant_id,</if>
  			<if test="createBy != null and createBy != ''">create_by,</if>
  			create_time
  		)values(
@@ -116,6 +121,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  			<if test="deptCheckStrictly != null">#{deptCheckStrictly},</if>
  			<if test="status != null and status != ''">#{status},</if>
  			<if test="remark != null and remark != ''">#{remark},</if>
+		    <if test="tenantId != null and tenantId != 0">#{tenantId},</if>
  			<if test="createBy != null and createBy != ''">#{createBy},</if>
  			sysdate()
  		)

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 945 - 0
sql/ry-vue_2023-06-19.sql


Algunos archivos no se mostraron porque demasiados archivos cambiaron en este cambio