浏览代码

【CHG】修改登录后获取用户极限接口

xczzmn 4 年之前
父节点
当前提交
9c012e660c

+ 5 - 2
railway-admin/src/main/java/com/railway/web/controller/system/SysLoginController.java

@@ -71,12 +71,15 @@ public class SysLoginController {
     // 权限集合
     Set<String> permissions = permissionService.getMenuPermission(user);
     // 菜单集合
-    Set<String> menus = menuService.selectMenuNameByUserId(user.getUserId());
+    Set<String> pages = menuService.selectMenuPagesByUserId(user.getUserId());
+    // 按钮集合
+    Set<String> bnts = menuService.selectMenuBtnsByUserId(user.getUserId());
     AjaxResult ajax = AjaxResult.success();
     ajax.put("user", user);
     ajax.put("roles", roles);
-    ajax.put("pages", menus);
     ajax.put("permissions", permissions);
+    ajax.put("pages", pages);
+    ajax.put("btns", bnts);
     return ajax;
   }
 

+ 17 - 0
railway-system/src/main/java/com/railway/system/mapper/SysMenuMapper.java

@@ -59,6 +59,23 @@ public interface SysMenuMapper {
    */
   List<SysMenu> selectMenuTreeByUserId(Long userId);
 
+  /**
+   * 根据用户ID查询菜单按钮
+   *
+   * @param menuType 菜单类型
+   * @return 菜单列表
+   */
+  List<SysMenu> selectMenuAllByType(@Param("menuType") String menuType);
+
+  /**
+   * 根据用户ID查询按钮
+   *
+   * @param userId 用户ID
+   * @param menuType 菜单类型
+   * @return 菜单列表
+   */
+  List<SysMenu> selectMenuByTypeUserId(@Param("menuType") String menuType, Long userId);
+
   /**
    * 根据角色ID查询菜单树信息
    *

+ 16 - 0
railway-system/src/main/java/com/railway/system/service/ISysMenuService.java

@@ -38,6 +38,22 @@ public interface ISysMenuService {
    */
   Set<String> selectMenuPermsByUserId(Long userId);
 
+  /**
+   * 根据用户ID查询页面信息
+   *
+   * @param userId 用户ID
+   * @return 菜单列表
+   */
+  Set<String> selectMenuPagesByUserId(Long userId);
+
+  /**
+   * 根据用户ID查询按钮信息
+   *
+   * @param userId 用户ID
+   * @return 菜单列表
+   */
+  Set<String> selectMenuBtnsByUserId(Long userId);
+
   /**
    * 根据用户ID查询菜单信息
    *

+ 36 - 0
railway-system/src/main/java/com/railway/system/service/impl/SysMenuServiceImpl.java

@@ -91,6 +91,28 @@ public class SysMenuServiceImpl implements ISysMenuService {
     return permsSet;
   }
 
+  /**
+   * 根据用户ID查询页面信息
+   *
+   * @param userId 用户ID
+   * @return 菜单列表
+   */
+  @Override
+  public Set<String> selectMenuPagesByUserId(Long userId) {
+    return selectMenuByTypeUserId(UserConstants.TYPE_MENU, userId);
+  }
+
+  /**
+   * 根据用户ID查询按钮信息
+   *
+   * @param userId 用户ID
+   * @return 菜单列表
+   */
+  @Override
+  public Set<String> selectMenuBtnsByUserId(Long userId) {
+    return selectMenuByTypeUserId(UserConstants.TYPE_BUTTON, userId);
+  }
+
   /**
    * 根据用户ID查询菜单信息
    *
@@ -411,6 +433,20 @@ public class SysMenuServiceImpl implements ISysMenuService {
     return menu.getParentId().intValue() != 0 && UserConstants.TYPE_DIR.equals(menu.getMenuType());
   }
 
+  private Set<String> selectMenuByTypeUserId(String menuType, Long userId){
+    List<SysMenu> menus;
+    if (SecurityUtils.isAdmin(userId)) {
+      menus = menuMapper.selectMenuAllByType(menuType);
+    } else {
+      menus = menuMapper.selectMenuByTypeUserId(menuType, userId);
+    }
+    Set<String> menuSet = new HashSet<>();
+    for (SysMenu menu : menus) {
+      menuSet.add(menu.getPerms());
+    }
+    return menuSet;
+  }
+
   /**
    * 根据父节点的ID获取所有子节点
    *

+ 21 - 0
railway-system/src/main/resources/mapper/system/SysMenuMapper.xml

@@ -57,6 +57,14 @@
     order by m.parent_id, m.order_num
   </select>
 
+  <select id="selectMenuAllByType" resultType="com.railway.common.core.domain.entity.SysMenu">
+    select distinct m.menu_id, m.parent_id, m.menu_name,
+    m.status, ifnull(m.perms,'') as perms, m.menu_type, m.order_num
+    from sys_menu m where m.menu_type = #{menuType}, and m.status = 0
+    order by m.parent_id, m.order_num
+  </select>
+
+
   <select id="selectMenuListByUserId" parameterType="SysMenu" 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,
@@ -91,6 +99,19 @@
     order by m.parent_id, m.order_num
   </select>
 
+  <select id="selectMenuByTypeUserId"
+    resultType="com.railway.common.core.domain.entity.SysMenu">
+    select distinct m.menu_id, m.parent_id, m.menu_name,
+    m.status, ifnull(m.perms,'') as perms, m.menu_type, m.order_num
+    from sys_menu m
+    left join sys_role_menu rm on m.menu_id = rm.menu_id
+    left join sys_user_role ur on rm.role_id = ur.role_id
+    left join sys_role ro on ur.role_id = ro.role_id
+    left join sys_user u on ur.user_id = u.user_id
+    where u.user_id = #{userId} and m.menu_type = #{menuType} and m.status = 0 AND ro.status = 0
+    order by m.parent_id, m.order_num
+  </select>
+
   <select id="selectMenuListByRoleId" resultType="Long">
     select m.menu_id
     from sys_menu m