浏览代码

一级菜单控制

chengyao 4 年之前
父节点
当前提交
4dcbb08913

+ 4 - 1
doc/029.20201224v2.0.0/qc_initv2.0.0.sql

@@ -4,10 +4,13 @@ use `qc`;
  */
 INSERT INTO `sys_menu` (`is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `name`, `parent_id`, `code`, `show_status`, `maintain_status`, `order_no`, `remark`) VALUES ( 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '关键条目缺陷占比', '18', 'YH-KSZR-GJTMQXZB_XQ', '1', '1', '4', '用户-科室主任-关键条目缺陷占比_详情');
 INSERT INTO `sys_menu` (`is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `name`, `parent_id`, `code`, `show_status`, `maintain_status`, `order_no`, `remark`) VALUES ( 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '出院人数统计', '18', 'YH-KSZR-CYRSTJ_XQ', '1', '1', '6', '用户-科室主任-出院人数统计_详情');
+INSERT INTO `sys_menu` (`is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `name`, `parent_id`, `code`, `show_status`, `maintain_status`, `order_no`, `remark`) VALUES ( 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '入院人数统计', '18', 'YH-KSZR-RYRSTJ_XQ', '1', '1', '6', '用户-科室主任-入院人数统计_详情');
 INSERT INTO `sys_menu` (`is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `name`, `parent_id`, `code`, `show_status`, `maintain_status`, `order_no`, `remark`) VALUES ( 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '质控核查统计', '18', 'YH-KSZR-ZKHCTJ_XQ', '1', '1', '7', '用户-科室主任-质控核查统计_详情');
 INSERT INTO `sys_menu` (`is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `name`, `parent_id`, `code`, `show_status`, `maintain_status`, `order_no`, `remark`) VALUES ( 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '时效性相关统计', '18', 'YH-KSZR-SXXXGTJ_XQ', '1', '1', '8', '用户-科室主任-时效性相关统计_详情');
 INSERT INTO `sys_menu` (`is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `name`, `parent_id`, `code`, `show_status`, `maintain_status`, `order_no`, `remark`) VALUES ( 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '31日再入院病人数', '18', 'YH-KSZR-31TZRYRS_XQ', '1', '1', '9', '用户-科室主任-31日再入院病人数_详情');
-INSERT INTO `sys_menu` (`is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `name`, `parent_id`, `code`, `show_status`, `maintain_status`, `order_no`, `remark`) VALUES ( 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '终末病历稽查数', '18', 'YH-KSZR-ZMBLJCS_XQ', '1', '1', '10', '用户-科室主任-终末病历稽查数_详情');
+INSERT INTO `qc`.`sys_menu` (`id`, `is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `name`, `parent_id`, `code`, `show_status`, `maintain_status`, `order_no`, `remark`) VALUES ('61', 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '终末病历稽查表', '17', 'YH-ZKK-ZMBLJCB', '1', '1', '0', '用户-质控科-终末病历稽查表');
+INSERT INTO `sys_menu` (`is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `name`, `parent_id`, `code`, `show_status`, `maintain_status`, `order_no`, `remark`) VALUES ( 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '终末病历稽查表', '18', 'YH-KSZR-ZMBLJCS_XQ', '1', '1', '10', '用户-科室主任-终末病历稽查表_详情');
+INSERT INTO `sys_menu` (`is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `name`, `parent_id`, `code`, `show_status`, `maintain_status`, `order_no`, `remark`) VALUES ( 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '运行病历稽查表', '18', 'YH-KSZR-YXBLJCS_XQ', '1', '1', '10', '用户-科室主任-运行病历稽查表_详情');
 
 INSERT INTO `sys_role_menu` (`is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `role_id`, `menu_id`, `remark`) VALUES ( 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '2', '41', NULL);
 INSERT INTO `sys_role_menu` (`is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `role_id`, `menu_id`, `remark`) VALUES ( 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '-1', '41', NULL);

+ 18 - 8
src/main/java/com/diagbot/facade/SysUserFacade.java

@@ -49,11 +49,7 @@ import org.springframework.security.crypto.password.PasswordEncoder;
 import org.springframework.security.oauth2.common.OAuth2AccessToken;
 import org.springframework.stereotype.Component;
 
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -92,6 +88,8 @@ public class SysUserFacade extends SysUserServiceImpl {
 
     @Autowired
     private SysUserHospitalFacade sysUserHospitalFacade;
+    @Autowired
+    private SysUserRoleFacade sysUserRoleFacade;
 
     /**
      * 获取jwt
@@ -275,12 +273,24 @@ public class SysUserFacade extends SysUserServiceImpl {
      */
     public LoginDTO getUserOrgMenu() {
         LoginDTO data = new LoginDTO();
-
+        Set<String> roleSet = new HashSet<>();
         Long userId = Long.parseLong(SysUserUtils.getCurrentPrincipleID());
         SysUser user = this.getOne(new QueryWrapper<SysUser>()
                 .eq("is_deleted", IsDeleteEnum.N.getKey())
                 .eq("status", StatusEnum.Enable.getKey())
                 .eq("id", userId), false);
+        QueryWrapper<SysUserRole> sysUserRoleQueryWrapper = new QueryWrapper<>();
+        sysUserRoleQueryWrapper.eq("user_id",userId);
+        sysUserRoleQueryWrapper .eq("is_deleted", IsDeleteEnum.N.getKey());
+        List<SysUserRole> sysUserRoleList = sysUserRoleFacade.list(sysUserRoleQueryWrapper);
+        if(ListUtil.isNotEmpty(sysUserRoleList)){
+            sysUserRoleList.forEach(sysUserRole ->{
+                if(sysUserRole.getRoleId()!=-1){
+                    roleSet.add(sysUserRole.getRoleId()+"");
+                }
+
+            } );
+        }
         if (user == null) {
             throw new CommonException(CommonErrorCode.SERVER_IS_ERROR,
                     "用户不存在【" + userId + "】");
@@ -302,8 +312,8 @@ public class SysUserFacade extends SysUserServiceImpl {
         }
 
         //添加菜单信息
-        List<SysMenuWrapper> menuList = sysMenuFacade.getByRole(user.getId());
-        List<SysUserPermissionDTO> sysUserPermissionDTOList = sysMenuFacade.getByRolePermission(user.getId());
+        List<SysMenuWrapper> menuList = sysMenuFacade.getByRole(user.getId(),roleSet);
+        List<SysUserPermissionDTO> sysUserPermissionDTOList = sysMenuFacade.getByRolePermission(user.getId(),roleSet);
         Map<Long, List<SysMenuWrapper>> menuMap = EntityUtil.makeEntityListMap(menuList, "parentId");
         Map<Long, List<SysUserPermissionDTO>> menuPermissionMap = EntityUtil.makeEntityListMap(sysUserPermissionDTOList, "menuId");
         List<SysMenuWrapper> menuRes = menuMap.get(-1L);

+ 3 - 2
src/main/java/com/diagbot/mapper/SysMenuMapper.java

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.diagbot.entity.wrapper.SysMenuWrapper;
 
 import java.util.List;
+import java.util.Set;
 
 /**
  * <p>
@@ -21,7 +22,7 @@ public interface SysMenuMapper extends BaseMapper<SysMenu> {
      * @Author: ztg
      * @Date: 2018/9/14 13:57
      */
-    public List<SysMenuWrapper> getByRole(Long userId);
+    public List<SysMenuWrapper> getByRole(Long userId, Set<String> roleSet);
 
 
     /**
@@ -31,5 +32,5 @@ public interface SysMenuMapper extends BaseMapper<SysMenu> {
      */
     public List<SysMenuWrapper> getSubMenuById(Long id);
 
-    public List<SysUserPermissionDTO> getByRolePermission(Long userId);
+    public List<SysUserPermissionDTO> getByRolePermission(Long userId,Set<String> roleSet);
 }

+ 3 - 2
src/main/java/com/diagbot/service/SysMenuService.java

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.diagbot.entity.wrapper.SysMenuWrapper;
 
 import java.util.List;
+import java.util.Set;
 
 /**
  * <p>
@@ -22,7 +23,7 @@ public interface SysMenuService extends IService<SysMenu> {
      * @Author: ztg
      * @Date: 2018/9/17 15:43
      */
-    public List<SysMenuWrapper> getByRole(Long userId);
+    public List<SysMenuWrapper> getByRole(Long userId,Set<String> roleSet);
 
 
     /**
@@ -32,5 +33,5 @@ public interface SysMenuService extends IService<SysMenu> {
      */
     public List<SysMenuWrapper> getSubMenuById(Long id);
 
-    public List<SysUserPermissionDTO> getByRolePermission(Long userId);
+    public List<SysUserPermissionDTO> getByRolePermission(Long userId, Set<String> roleSet);
 }

+ 5 - 4
src/main/java/com/diagbot/service/impl/SysMenuServiceImpl.java

@@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
+import java.util.Set;
 
 /**
  * <p>
@@ -28,8 +29,8 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
      * @return 菜单信息
      */
     @Override
-    public List<SysMenuWrapper> getByRole(Long userId) {
-        return baseMapper.getByRole(userId);
+    public List<SysMenuWrapper> getByRole(Long userId, Set<String> roleSet) {
+        return baseMapper.getByRole(userId,roleSet);
     }
 
 
@@ -45,7 +46,7 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
     }
 
     @Override
-    public List<SysUserPermissionDTO> getByRolePermission(Long userId){
-        return baseMapper.getByRolePermission(userId);
+    public List<SysUserPermissionDTO> getByRolePermission(Long userId,Set<String> roleSet){
+        return baseMapper.getByRolePermission(userId,roleSet);
     }
 }

+ 12 - 1
src/main/resources/mapper/SysMenuMapper.xml

@@ -20,6 +20,12 @@
     <select id="getByRole" resultMap="BaseResultMap">
         select distinct a.* from sys_menu a, sys_role_menu b, sys_user_role c
         where a.id = b.menu_id and b.role_id and b.role_id = c.role_id and c.user_id = #{userId}
+            <if test="roleSet != null and roleSet.size() > 0">
+                and b.role_id in
+                <foreach collection="roleSet" open="(" separator="," close=")" item="item">
+                    '${item}'
+                </foreach>
+            </if>
         and a.is_deleted = 'N' and b.is_deleted = 'N' and c.is_deleted = 'N'
         ORDER BY a.parent_id , a.order_no
     </select>
@@ -41,10 +47,15 @@
             sys_permission d
         WHERE
             a.permission_id = b.permission_id
-        AND b.role_id
         AND b.role_id = c.role_id
         AND d.id = b.permission_id
         AND c.user_id = #{userId}
+        <if test="roleSet != null and roleSet.size() > 0">
+            and b.role_id in
+            <foreach collection="roleSet" open="(" separator="," close=")" item="item">
+                '${item}'
+            </foreach>
+        </if>
         AND a.is_deleted = 'N'
         AND b.is_deleted = 'N'
         AND c.is_deleted = 'N'