Bladeren bron

查询用户权限
查询用户菜单

marxjaw 3 maanden geleden
bovenliggende
commit
eae44bd3dc

+ 1 - 1
yt-common/src/main/java/com/ytpm/general/RepMessage.java

@@ -35,6 +35,6 @@ public class RepMessage {
     public static final String SERVICE_UNAVAILABLE = "服务暂时不可用,请稍后重试";
     public static final String OBJECT_NOT_EXIST = "查询对象不存在";
     public static final String CURRENT_USER_RISKING = "当前用户处于风控中";
-    public static final String NOT_PERMIT = "当前用户无权限操作";
+    public static final String NOT_PERMIT = "当前用户无访问权限";
     public static final String WX_APP_ID_NOT_EMPTY = "请先绑定微信开放应用ID";
 }

+ 2 - 0
yt-common/src/main/java/com/ytpm/middle/view/MiddleUserInfo.java

@@ -35,6 +35,8 @@ public class MiddleUserInfo {
     private Date lastLoginTime;
     @ApiModelProperty("账户状态")
     private Integer accountStatus;
+    @ApiModelProperty(value = "是否超级管理员", hidden = true)
+    private Integer superAdmin;
     @ApiModelProperty("角色列表")
     private List<MiddleRoleVO> roleList;
 

+ 1 - 0
yt-common/src/main/java/com/ytpm/oauth/model/YtPlatformUser.java

@@ -26,6 +26,7 @@ public class YtPlatformUser implements UserDetails {
     private Date lastLoginTime;
     private Integer accountStatus;
     private Integer userType;
+    private Integer superAdmin;
     private Date registryTime;
 
     @Override

+ 12 - 0
yt-middle/middle-platform/src/main/java/com/ytpm/middle/controller/PermissionController.java

@@ -51,4 +51,16 @@ public class PermissionController {
         return permissionService.delOne(permissionId,userInfo.getUserId());
     }
 
+    @ApiOperation("根据角色查询菜单列表")
+    @GetMapping("/getMenuByRole")
+    public ResultTable<MiddlePermissionVO> getMenuByRole(@ApiIgnore @AuthenticationPrincipal MiddleUserInfo userInfo){
+        return permissionService.getMenuByRole(userInfo);
+    }
+
+    @ApiOperation("根据菜单获取按钮列表")
+    @GetMapping("/getPermissionByMenu")
+    public ResultTable<MiddlePermissionVO> getPermissionByMenu(@RequestParam(name = "permissionId")Integer permissionId,@ApiIgnore @AuthenticationPrincipal MiddleUserInfo userInfo){
+        return permissionService.getPermissionByMenu(permissionId,userInfo);
+    }
+
 }

+ 16 - 0
yt-middle/middle-platform/src/main/java/com/ytpm/middle/dao/PermissionMapper.java

@@ -4,6 +4,7 @@ import com.ytpm.middle.model.YtMiddlePermission;
 import com.ytpm.middle.param.MiddlePermissionParam;
 import com.ytpm.middle.view.DropDownVO;
 import com.ytpm.middle.view.MiddlePermissionVO;
+import com.ytpm.middle.view.MiddleRoleVO;
 import org.apache.ibatis.annotations.Param;
 import org.mapstruct.Mapper;
 
@@ -53,4 +54,19 @@ public interface PermissionMapper {
      * 查询权限下拉列表
      */
     List<DropDownVO> permissionDropList();
+
+    /**
+     * 根据类型查询权限列表
+     */
+    List<MiddlePermissionVO> selectByType(@Param("type") String type);
+
+    /**
+     * 根据角色ID查询菜单
+     */
+    List<MiddlePermissionVO> getFirstMenuByRoleIds(@Param("roleIdList") List<Integer> roleIdList);
+
+    /**
+     * 查询指定菜单的权限列表
+     */
+    List<MiddlePermissionVO> getByParentId(@Param("permissionId") Integer permissionId, @Param("roleIds") String roleIds);
 }

+ 11 - 0
yt-middle/middle-platform/src/main/java/com/ytpm/middle/service/PermissionService.java

@@ -5,6 +5,7 @@ import com.ytpm.general.ResultTable;
 import com.ytpm.middle.param.MiddlePermissionParam;
 import com.ytpm.middle.view.DropDownVO;
 import com.ytpm.middle.view.MiddlePermissionVO;
+import com.ytpm.middle.view.MiddleUserInfo;
 
 public interface PermissionService {
     /**
@@ -30,4 +31,14 @@ public interface PermissionService {
      * 查询权限下拉列表
      */
     ResultTable<DropDownVO> permissionDropList();
+
+    /**
+     * 根据用户角色查询权限列表
+     */
+    ResultTable<MiddlePermissionVO> getMenuByRole(MiddleUserInfo userInfo);
+
+    /**
+     * 根据菜单获取权限列表
+     */
+    ResultTable<MiddlePermissionVO> getPermissionByMenu(Integer permissionId, MiddleUserInfo userInfo);
 }

+ 47 - 0
yt-middle/middle-platform/src/main/java/com/ytpm/middle/service/impl/PermissionServiceImpl.java

@@ -5,6 +5,7 @@ import com.github.pagehelper.PageInfo;
 import com.ytpm.general.RepMessage;
 import com.ytpm.general.Result;
 import com.ytpm.general.ResultTable;
+import com.ytpm.handle.CustomerException;
 import com.ytpm.middle.dao.PermissionMapper;
 import com.ytpm.middle.enums.PermissionTypeEnum;
 import com.ytpm.middle.model.YtMiddlePermission;
@@ -12,11 +13,14 @@ import com.ytpm.middle.param.MiddlePermissionParam;
 import com.ytpm.middle.service.PermissionService;
 import com.ytpm.middle.view.DropDownVO;
 import com.ytpm.middle.view.MiddlePermissionVO;
+import com.ytpm.middle.view.MiddleRoleVO;
+import com.ytpm.middle.view.MiddleUserInfo;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
+import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 import java.util.Objects;
@@ -114,6 +118,49 @@ public class PermissionServiceImpl implements PermissionService {
         return ResultTable.resultTableOk(new PageInfo<>(permissionMapper.permissionDropList()));
     }
 
+    /**
+     * 根据用户信息查询菜单
+     */
+    @Override
+    public ResultTable<MiddlePermissionVO> getMenuByRole(MiddleUserInfo userInfo) {
+        List<MiddlePermissionVO> menuList;
+        if(1==userInfo.getSuperAdmin()){
+            menuList = permissionMapper.selectByType(PermissionTypeEnum.MENU.getCode());
+        }else{ //普通用户
+            List<MiddleRoleVO> roleList = userInfo.getRoleList();
+            if(CollUtil.isEmpty(roleList)){
+                return ResultTable.resultTableOk(new PageInfo<>(Collections.emptyList()));
+            }
+            List<Integer> roleIdList = roleList.stream()
+                    .map(MiddleRoleVO::getRoleId).distinct().collect(Collectors.toList());
+            menuList = permissionMapper.getFirstMenuByRoleIds(roleIdList);
+        }
+        List<MiddlePermissionVO> firstMenu = menuList.stream().filter(
+                s -> Objects.isNull(s.getParentId())).collect(Collectors.toList());
+        //递归处理菜单设置子列表
+        for (MiddlePermissionVO menu : firstMenu) {
+            recursionChildPermission(menu,menuList);
+        }
+        return ResultTable.resultTableOk(new PageInfo<>(firstMenu));
+    }
+
+    /**
+     * 根据菜单获取权限列表
+     */
+    @Override
+    public ResultTable<MiddlePermissionVO> getPermissionByMenu(Integer permissionId, MiddleUserInfo userInfo) {
+        String roleIds = "";
+        if(1 !=userInfo.getSuperAdmin()){
+            List<MiddleRoleVO> roleList = userInfo.getRoleList();
+            if(CollUtil.isEmpty(roleList)){
+                return ResultTable.resultTableOk(new PageInfo<>(Collections.emptyList()));
+            }
+            roleIds = roleList.stream()
+                    .map(s->String.valueOf(s.getRoleId())).collect(Collectors.joining(","));
+        }
+        return ResultTable.resultTableOk(new PageInfo<>(permissionMapper.getByParentId(permissionId,roleIds)));
+    }
+
     /**
      * 递归处理菜单设置子列表
      */

+ 1 - 1
yt-middle/middle-platform/src/main/resources/mapper/MiddleUserMapper.xml

@@ -84,7 +84,7 @@
 
     <select id="getByLoginName" resultType="com.ytpm.middle.view.MiddleUserInfo">
         select
-            user_id, nick_name, head_image, login_name, encrypt_pwd, salt, phone, last_login_time,  account_status,  user_type, registry_time
+            user_id, nick_name, head_image, login_name, encrypt_pwd, salt, phone, last_login_time,  account_status,  user_type, registry_time,super_admin
         from yt_platform_user
         where user_type = 99 and account_status = 1 and login_name = #{userName}
     </select>

+ 58 - 0
yt-middle/middle-platform/src/main/resources/mapper/PermissionMapper.xml

@@ -152,4 +152,62 @@
             permission_id optionVal, permission_name optionName
         from yt_middle_permission
     </select>
+    <select id="selectByType" resultType="com.ytpm.middle.view.MiddlePermissionVO">
+        select
+            permission_id, permission_name, permission_code, type, parent_id, target, icon, href, route, sort, create_time, create_user_id, update_time, update_user_id, available
+        from yt_middle_permission
+        where type = #{type}
+    </select>
+    <select id="getFirstMenuByRoleIds" resultType="com.ytpm.middle.view.MiddlePermissionVO">
+        select
+            mp.permission_id,
+            mp.permission_name,
+            mp.permission_code,
+            mp.type,
+            mp.parent_id,
+            mp.target,
+            mp.icon,
+            mp.href,
+            mp.route,
+            mp.sort,
+            mp.create_time,
+            mp.create_user_id,
+            mp.update_time,
+            mp.update_user_id,
+            mp.available
+        from yt_middle_role_permission mrp
+        left join yt_middle_permission mp on mrp.permission_id = mp.permission_id and mp.available = 1
+        where mrp.role_id in
+        <foreach collection="roleIdList" item="item" separator="," open="(" close=")">
+            #{item}
+        </foreach>
+    </select>
+    <select id="getByParentId" resultType="com.ytpm.middle.view.MiddlePermissionVO">
+        select
+            mp.permission_id,
+            mp.permission_name,
+            mp.permission_code,
+            mp.type,
+            mp.parent_id,
+            mp.target,
+            mp.icon,
+            mp.href,
+            mp.route,
+            mp.sort,
+            mp.create_time,
+            mp.create_user_id,
+            mp.update_time,
+            mp.update_user_id,
+            mp.available
+        from yt_middle_role_permission mrp
+         left join yt_middle_permission mp on mrp.permission_id = mp.permission_id and mp.parent_id = #{permissionId} and mp.available = 1
+        <where>
+            <if test="roleIds != null and roleIds != ''">
+                and role_id in
+                <foreach collection="roleIds.split(',')" item="item" separator="," open="(" close=")">
+                    #{item}
+                </foreach>
+            </if>
+        </where>
+    </select>
 </mapper>