Przeglądaj źródła

用户显示菜单功能、当前登录用户对应功能修改

songxinlu 3 lat temu
rodzic
commit
f3ff8e0909
29 zmienionych plików z 369 dodań i 178 usunięć
  1. 19 0
      common/src/main/java/com/lantone/common/dto/GetDictionaryInfoByTypeDTO.java
  2. 31 0
      common/src/main/java/com/lantone/common/dto/GetUserShowTreeDTO.java
  3. 2 0
      common/src/main/java/com/lantone/common/dto/UserMenuResourceTreeDTO.java
  4. 4 4
      common/src/main/java/com/lantone/common/util/SysUserUtils.java
  5. 3 3
      common/src/main/java/com/lantone/common/vo/AddMenuVO.java
  6. 1 1
      common/src/main/java/com/lantone/common/vo/AddRoleVO.java
  7. 3 2
      common/src/main/java/com/lantone/common/vo/AddUserVO.java
  8. 1 1
      common/src/main/java/com/lantone/common/vo/GetRolePageVO.java
  9. 2 2
      common/src/main/java/com/lantone/common/vo/UpdateMenuVO.java
  10. 1 1
      common/src/main/java/com/lantone/common/vo/UpdateUserVO.java
  11. 1 1
      dblayer-mbg/src/main/java/com/lantone/dblayermbg/entity/DataAuth.java
  12. 5 0
      dblayer-mbg/src/main/java/com/lantone/dblayermbg/mapper/DictionaryInfoMapper.java
  13. 1 1
      dblayer-mbg/src/main/java/com/lantone/dblayermbg/mapper/RoleMapper.java
  14. 3 0
      dblayer-mbg/src/main/java/com/lantone/dblayermbg/mapper/RoleSoftwareMenuMapper.java
  15. 12 1
      dblayer-mbg/src/main/resources/mapper/DictionaryInfoMapper.xml
  16. 1 1
      dblayer-mbg/src/main/resources/mapper/HospitalUserMapper.xml
  17. 4 6
      dblayer-mbg/src/main/resources/mapper/MenuMapper.xml
  18. 3 1
      dblayer-mbg/src/main/resources/mapper/RoleMapper.xml
  19. 36 2
      dblayer-mbg/src/main/resources/mapper/RoleSoftwareMenuMapper.xml
  20. 3 1
      gateway-service/src/main/resources/bootstrap.yml
  21. 8 13
      security-center/src/main/java/com/lantone/security/enums/CRUDEnum.java
  22. 7 15
      security-center/src/main/java/com/lantone/security/facade/DataAuthManagementFacade.java
  23. 37 40
      security-center/src/main/java/com/lantone/security/facade/FuncManagementFacade.java
  24. 20 9
      security-center/src/main/java/com/lantone/security/facade/HospitalManagementFacade.java
  25. 130 39
      security-center/src/main/java/com/lantone/security/facade/RoleManagementFacade.java
  26. 16 26
      security-center/src/main/java/com/lantone/security/facade/UserManagementFacade.java
  27. 3 3
      security-center/src/main/java/com/lantone/security/web/HospitalManagementController.java
  28. 8 1
      security-center/src/main/java/com/lantone/security/web/RoleManagementController.java
  29. 4 4
      security-center/src/main/java/com/lantone/security/web/UserManagementController.java

+ 19 - 0
common/src/main/java/com/lantone/common/dto/GetDictionaryInfoByTypeDTO.java

@@ -0,0 +1,19 @@
+package com.lantone.common.dto;
+
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @Description:通过分组获取字典信息返回对象
+ * @Author songxl
+ * @Date 2021/8/10
+ */
+@Data
+public class GetDictionaryInfoByTypeDTO {
+    @ApiModelProperty(value = "内容")
+    private String name;
+
+    @ApiModelProperty(value = "值")
+    private String val;
+}

+ 31 - 0
common/src/main/java/com/lantone/common/dto/GetUserShowTreeDTO.java

@@ -0,0 +1,31 @@
+package com.lantone.common.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * <p>
+ * 显示菜单功能DTO
+ * </p>
+ */
+@Data
+public class GetUserShowTreeDTO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "系统编号")
+    private Long softwareId;
+    @ApiModelProperty(value = "菜单编号")
+    private Long menuId;
+    @ApiModelProperty(value = "父级菜单编号")
+    private Long parentId;
+    @ApiModelProperty(value = "菜单名称")
+    private String menuName;
+    @ApiModelProperty(value = "类型:0:目录,1菜单,2按钮,3:超链接")
+    private String menuType ;
+    @ApiModelProperty(value = "子集")
+    private List<GetUserShowTreeDTO> sonMenu;
+}

+ 2 - 0
common/src/main/java/com/lantone/common/dto/UserMenuResourceTreeDTO.java

@@ -32,6 +32,8 @@ public class UserMenuResourceTreeDTO implements Serializable {
 
     @ApiModelProperty(value = "是否关联")
     private String relation ;
+    @ApiModelProperty(value = "类型:0:目录,1菜单,2按钮,3:超链接")
+    private String menuType ;
 
     @ApiModelProperty(value = "子集")
     private List<UserMenuResourceTreeDTO> sonMenuResource;

+ 4 - 4
common/src/main/java/com/lantone/common/util/SysUserUtils.java

@@ -63,9 +63,9 @@ public class SysUserUtils {
      *
      * @return
      */
-    public static String getCurrentPrincipleId() {
+    public static Long getCurrentPrincipleId() {
         UserDto userDto = getCurrentUser();
-        return userDto == null ? null : userDto.getId().toString();
+        return userDto == null ? null : userDto.getId();
     }
 
     /**
@@ -73,8 +73,8 @@ public class SysUserUtils {
      *
      * @return
      */
-    public static String getCurrentHospitalId() {
-        return HttpUtils.getHeader(AuthConstant.HOSPITAL_ID_HEADER);
+    public static Long getCurrentHospitalId() {
+        return Long.parseLong(HttpUtils.getHeader(AuthConstant.HOSPITAL_ID_HEADER));
     }
 
     /**

+ 3 - 3
common/src/main/java/com/lantone/common/vo/AddMenuVO.java

@@ -17,7 +17,7 @@ import java.util.List;
  * </p>
  */
 @Data
-@ApiModel(value="MenuVO对象", description="菜单功能VO")
+@ApiModel(value="AddMenuVO对象", description="添加菜单功能VO")
 public class AddMenuVO implements Serializable {
 
     private static final long serialVersionUID = 1L;
@@ -57,10 +57,10 @@ public class AddMenuVO implements Serializable {
     @ApiModelProperty(value = "描述")
     private String menuDescribe;
 
-    @ApiModelProperty(value = "记录创建时间")
+    @ApiModelProperty(value = "记录创建时间",hidden = true)
     private Date gmtCreate;
 
-    @ApiModelProperty(value = "创建人,0表示无创建人值")
+    @ApiModelProperty(value = "创建人,0表示无创建人值",hidden = true)
     private String creator;
 
     @ApiModelProperty(value = "备注")

+ 1 - 1
common/src/main/java/com/lantone/common/vo/AddRoleVO.java

@@ -30,7 +30,7 @@ public class AddRoleVO  implements Serializable {
     private Long hospitalId;
 
     @ApiModelProperty(value = "创建用户id",hidden = true)
-    private String creator;
+    private Long creator;
 
     @ApiModelProperty(value = "创建时间",hidden = true)
     private Date createTime;

+ 3 - 2
common/src/main/java/com/lantone/common/vo/AddUserVO.java

@@ -47,7 +47,7 @@ public class AddUserVO implements Serializable {
     @ApiModelProperty(value = "身份证号")
     private String idcard;
 
-    @ApiModelProperty(value = "职称编号")
+    @ApiModelProperty(value = "职称")
     private String titleId;
 
     @ApiModelProperty(value = "工号")
@@ -75,5 +75,6 @@ public class AddUserVO implements Serializable {
     @ApiModelProperty(value = "所属组织",required = true)
     @NotEmpty(message = "用户的角色列表不能为空")
     private List<Long> roles;
-
+    @ApiModelProperty(value = "备注")
+    private String remark;
 }

+ 1 - 1
common/src/main/java/com/lantone/common/vo/GetRolePageVO.java

@@ -31,6 +31,6 @@ public class GetRolePageVO extends Page implements Serializable {
     private Long hospitalId;
 
     @ApiModelProperty(value = "创建用户id",hidden = true)
-    private String creator;
+    private Long creator;
 
 }

+ 2 - 2
common/src/main/java/com/lantone/common/vo/UpdateMenuVO.java

@@ -60,10 +60,10 @@ public class UpdateMenuVO implements Serializable {
     @ApiModelProperty(value = "描述")
     private String menuDescribe;
 
-    @ApiModelProperty(value = "记录创建时间")
+    @ApiModelProperty(value = "记录创建时间",hidden = true)
     private Date gmtCreate;
 
-    @ApiModelProperty(value = "创建人,0表示无创建人值")
+    @ApiModelProperty(value = "创建人,0表示无创建人值",hidden = true)
     private String creator;
 
     @ApiModelProperty(value = "备注")

+ 1 - 1
common/src/main/java/com/lantone/common/vo/UpdateUserVO.java

@@ -47,7 +47,7 @@ public class UpdateUserVO implements Serializable {
     @ApiModelProperty(value = "身份证号")
     private String idcard;
 
-    @ApiModelProperty(value = "职称编号")
+    @ApiModelProperty(value = "职称")
     private String titleId;
 
     @ApiModelProperty(value = "工号")

+ 1 - 1
dblayer-mbg/src/main/java/com/lantone/dblayermbg/entity/DataAuth.java

@@ -68,7 +68,7 @@ public class DataAuth implements Serializable {
      * 创建人,0表示无创建人值
      */
     @TableField("creator")
-    private String creator;
+    private Long creator;
 
     /**
      * 修改人,如果为0则表示纪录未修改

+ 5 - 0
dblayer-mbg/src/main/java/com/lantone/dblayermbg/mapper/DictionaryInfoMapper.java

@@ -1,7 +1,11 @@
 package com.lantone.dblayermbg.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.lantone.common.dto.GetDictionaryInfoByTypeDTO;
 import com.lantone.dblayermbg.entity.DictionaryInfo;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * <p>
@@ -10,4 +14,5 @@ import com.lantone.dblayermbg.entity.DictionaryInfo;
  */
 public interface DictionaryInfoMapper extends BaseMapper<DictionaryInfo> {
 
+    List<GetDictionaryInfoByTypeDTO> getDictionaryInfoByType(@Param("groupId") int groupId);
 }

+ 1 - 1
dblayer-mbg/src/main/java/com/lantone/dblayermbg/mapper/RoleMapper.java

@@ -24,5 +24,5 @@ public interface RoleMapper extends BaseMapper<Role> {
      */
     IPage<GetRolePageDTO> getRolePage(@Param("getRolePageVO") GetRolePageVO getRolePageVO);
 
-    List<GetCreateRoleDTO> getCreateRoles(@Param("userId") long userId);
+    List<GetCreateRoleDTO> getCreateRoles(@Param("hospitalId") long hospitalId);
 }

+ 3 - 0
dblayer-mbg/src/main/java/com/lantone/dblayermbg/mapper/RoleSoftwareMenuMapper.java

@@ -2,6 +2,7 @@ package com.lantone.dblayermbg.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.lantone.common.dto.GetMenusTreeDTO;
+import com.lantone.common.dto.GetUserShowTreeDTO;
 import com.lantone.common.dto.UserMenuResourceTreeDTO;
 import com.lantone.common.vo.GetMenusTreeVo;
 import com.lantone.dblayermbg.entity.RoleSoftwareMenu;
@@ -25,4 +26,6 @@ public interface RoleSoftwareMenuMapper extends BaseMapper<RoleSoftwareMenu> {
     List<UserMenuResourceTreeDTO> getUserMenuResourceTree(@Param("roles") List<Long> roles);
 
     List<UserMenuResourceTreeDTO> getMenuResourceRelation(@Param("loginRoles")List<Long> loginRoles,@Param("selectRoles") List<Long> selectRoles);
+
+    List<GetUserShowTreeDTO> getUserShowMemuTree(@Param("roleIds") List<Long> roleIds,@Param("menuIds") List list);
 }

+ 12 - 1
dblayer-mbg/src/main/resources/mapper/DictionaryInfoMapper.xml

@@ -1,5 +1,16 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.lantone.dblayermbg.mapper.DictionaryInfoMapper">
-
+    <select id="getDictionaryInfoByType" resultType="com.lantone.common.dto.GetDictionaryInfoByTypeDTO">
+        SELECT
+          d.`name`,
+          d.val
+        FROM
+            `sys_dictionary_info` d
+        WHERE
+            `group_type` = #{groupId}
+        AND `is_deleted` = 'N'
+        ORDER BY
+            `order_no`
+    </select>
 </mapper>

+ 1 - 1
dblayer-mbg/src/main/resources/mapper/HospitalUserMapper.xml

@@ -20,7 +20,7 @@
         AND h.is_deleted = 'N'
         AND u.id = hu.user_id
         AND h.id = hu.hospital_id
-        AND u.`name` IS NOt NULL
+        AND u.remark != 'Administrators'
         AND h.id = #{getUserPageVO.hospitalId}
         <if test="getUserPageVO.localUserID !=null ">
             AND u.id != #{getUserPageVO.localUserID}

+ 4 - 6
dblayer-mbg/src/main/resources/mapper/MenuMapper.xml

@@ -3,6 +3,7 @@
 <mapper namespace="com.lantone.dblayermbg.mapper.MenuMapper">
     <select id="getMenuById" resultType="com.lantone.common.dto.GetMenuByIdDTO">
         SELECT DISTINCT
+        m.id,
         sm.software_id softwareId,
         IF (
         sm.software_id = 1,
@@ -21,15 +22,12 @@
         FROM
         sys_software_menu sm,
         `sys_menu` m
-        LEFT JOIN sys_menu pm ON pm.id = m.parent_id
-        LEFT JOIN sys_menu_resource mr ON mr.menu_id = m.id
-        LEFT JOIN sys_resource r ON mr.resource_id = r.id
+        LEFT JOIN sys_menu pm ON pm.id = m.parent_id AND pm.is_deleted = 'N'
+        LEFT JOIN sys_menu_resource mr ON mr.menu_id = m.id AND mr.is_deleted = 'N'
+        LEFT JOIN sys_resource r ON mr.resource_id = r.id AND r.is_deleted = 'N'
         WHERE
         sm.menu_id = m.id
-        AND pm.is_deleted = 'N'
         AND m.is_deleted = 'N'
-        AND mr.is_deleted = 'N'
-        AND r.is_deleted = 'N'
         <if test="softwareId != null ">
             AND sm.software_id = #{softwareId}
         </if>

+ 3 - 1
dblayer-mbg/src/main/resources/mapper/RoleMapper.xml

@@ -10,6 +10,7 @@
             r.is_deleted = 'N'
         AND r.creator = #{getRolePageVO.creator}
         AND r.hospital_id = #{getRolePageVO.hospitalId}
+        AND r.remark != 'ManagementRole'
         <if test="getRolePageVO.name!=null and getRolePageVO.name!=''">
             AND r.`name` LIKE concat('%',#{getRolePageVO.name},'%')
         </if>
@@ -26,6 +27,7 @@
         WHERE
             r.is_deleted = 'N'
         AND r.`status` = '1'
-        AND r.creator = #{userId}
+        AND r.hospital_id = #{hospitalId}
+        AND r.`remark` != 'ManagementRole'
     </select>
 </mapper>

+ 36 - 2
dblayer-mbg/src/main/resources/mapper/RoleSoftwareMenuMapper.xml

@@ -39,7 +39,7 @@
     </select>
 
     <select id="getUserMenuResourceTree" resultType="com.lantone.common.dto.UserMenuResourceTreeDTO">
-        SELECT
+        SELECT DISTINCT
             t1.menuId,
             t1.parentId,
             t1.softwareId,
@@ -101,7 +101,7 @@
         AND t1.menuId = t2.menuId
     </select>
     <select id="getMenuResourceRelation" resultType="com.lantone.common.dto.UserMenuResourceTreeDTO">
-        SELECT
+        SELECT DISTINCT
             t1.*,
         IF (
             t2.menuId IS NULL,
@@ -235,4 +235,38 @@
         ) t2 ON t1.menuId = t2.menuId
         AND t1.softwareId = t2.softwareId
     </select>
+
+    <select id="getUserShowMemuTree" resultType="com.lantone.common.dto.GetUserShowTreeDTO">
+        SELECT DISTINCT
+            m.id menuId,
+            m.parent_id parentId,
+            sm.software_id softwareId,
+            sm.id softwareMenuId,
+            m.type menuType,
+            m.`name` menuName
+        FROM
+            sys_role r
+        JOIN sys_role_software_menu rsm ON r.id = rsm.role_id
+        JOIN sys_software_menu sm ON rsm.software_menu_id = sm.id
+        JOIN sys_menu m ON sm.menu_id = m.id
+        WHERE
+            r.is_deleted = 'N'
+        AND rsm.is_deleted = 'N'
+        AND sm.is_deleted = 'N'
+        AND m.is_deleted = 'N'
+        AND r.`status` = '1'
+        AND m.`status` = '1'
+    <if test="roleIds !=null and roleIds.size!=0">
+        AND r.id IN
+        <foreach collection="roleIds" item="id" open="(" close=")" separator=",">
+            #{id}
+        </foreach>
+    </if>
+    <if test="menuIds !=null and menuIds.size!=0">
+        AND sm.id NOT IN
+        <foreach collection="menuIds" item="id" open="(" close=")" separator=",">
+            #{id}
+        </foreach>
+    </if>
+    </select>
 </mapper>

+ 3 - 1
gateway-service/src/main/resources/bootstrap.yml

@@ -102,6 +102,7 @@ secure:
       - "/security-center/roleManage/getRolePage"
       - "/security-center/roleManage/updateRole"
       - "/security-center/roleManage/getCreateRoles"
+      - "/security-center/roleManage/getUserShowMemuTree"
       - "/security-center/roleManage/getUserMenuResourceTree"
       - "/security-center/userManage/getHospitalTree"
       - "/security-center/userManage/addUser"
@@ -115,4 +116,5 @@ secure:
       - "/security-center/hospitalManage/disableHospital"
       - "/security-center/hospitalManage/getHospitalById"
       - "/security-center/hospitalManage/getManagerBoxInfo"
-      - "/security-center/hospitalManage/getHospitalListInfo"
+      - "/security-center/hospitalManage/getHospitalListInfo"
+      - "/security-center/dictionaryManage/getCodeCategory"

+ 8 - 13
security-center/src/main/java/com/lantone/security/enums/CRUDEnum.java

@@ -4,18 +4,13 @@ import com.lantone.common.constant.KeyedNamed;
 import lombok.Setter;
 
 /**
- * @ClassName: CRUDEnum
- * @Description: 增删改查禁用注解
+ * @Description: 字典分组注解
  * @Author songxl
  * @Date 2021/7/21
- * @Version 1.0
  */
-public enum CRUDEnum implements KeyedNamed {
-    ADD(1, "添加"),
-    UPDATE(2, "修改"),
-    DELETE(3, "删除"),
-    SELECT(4, "查询"),
-    DISBALE(5, "禁用");
+public enum DictionaryEnum implements KeyedNamed {
+    TITLE(40, "职称"),
+    NOT_SHOW_MENU(41,"不显示菜单");
 
     @Setter
     private int key;
@@ -23,13 +18,13 @@ public enum CRUDEnum implements KeyedNamed {
     @Setter
     private String name;
 
-    CRUDEnum(int key, String name) {
+    DictionaryEnum(int key, String name) {
         this.key = key;
         this.name = name;
     }
 
-    public static CRUDEnum getEnum(int key) {
-        for (CRUDEnum item : CRUDEnum.values()) {
+    public static DictionaryEnum getEnum(int key) {
+        for (DictionaryEnum item : DictionaryEnum.values()) {
             if (item.key == key) {
                 return item;
             }
@@ -38,7 +33,7 @@ public enum CRUDEnum implements KeyedNamed {
     }
 
     public static String getName(int key) {
-        CRUDEnum item = getEnum(key);
+        DictionaryEnum item = getEnum(key);
         return item != null ? item.name : null;
     }
 

+ 7 - 15
security-center/src/main/java/com/lantone/security/facade/DataAuthManagementFacade.java

@@ -15,6 +15,7 @@ import com.lantone.common.dto.SysServiceDTO;
 import com.lantone.common.exception.Asserts;
 import com.lantone.common.util.DateUtil;
 import com.lantone.common.util.ListUtil;
+import com.lantone.common.util.SysUserUtils;
 import com.lantone.common.vo.AddAuthRoleVO;
 import com.lantone.common.vo.AddAuthSoftwareVO;
 import com.lantone.common.vo.AddAuthVO;
@@ -182,20 +183,12 @@ public class DataAuthManagementFacade {
     public boolean addDataAuth(AddAuthVO addAuthVO) {
         //1.插入新建数据权限
         DataAuth dataAuth = new DataAuth();
-        //        dataAuth.setCreator(Long.parseLong(SysUserUtils.getCurrentPrincipleID()));
         BeanUtils.copyProperties(addAuthVO.getAddDataAuthVO(), dataAuth);
         dataAuth.setGmtCreate(DateUtil.now());
-        dataAuth.setCreator("1");//###当前登录人
-        boolean dataAuthInsert = dataAuthFacade.save(dataAuth);
-        if (dataAuthInsert) {
-            //2.插入成功获取新生成的数据权限名称编号data_auth_id
-            Long dataAuthId = dataAuthFacade.list(new QueryWrapper<DataAuth>()
-                    .eq("name", dataAuth.getName())
-                    .eq("is_deleted", IsDeleteEnum.N.getKey())).get(0).getId();
-
-            //3.插入新建数据权限与系统的关系
-            saveServiceDataAuth(addAuthVO.getAddDataAuthVO().getSoftwareVOS(), addAuthVO.getRoles(), dataAuthId);
-
+        dataAuth.setCreator(SysUserUtils.getCurrentPrincipleId());
+        if (dataAuthFacade.save(dataAuth)) {
+            //2.插入新建数据权限与系统的关系
+            saveServiceDataAuth(addAuthVO.getAddDataAuthVO().getSoftwareVOS(), addAuthVO.getRoles(), dataAuth.getId());
         } else {
             Asserts.fail("数据权限插入失败");
         }
@@ -333,8 +326,7 @@ public class DataAuthManagementFacade {
         //1.获取医院信息
         HospitalDTO hospitalDTO = new HospitalDTO();
         Hospital hospital = hospitalFacade.list(new QueryWrapper<Hospital>()
-                .eq("id", 1l)//###
-                .eq("type", "0")//###
+                .eq("id", SysUserUtils.getCurrentHospitalId())
                 .eq("is_deleted", IsDeleteEnum.N.getKey())).get(0);
         BeanUtils.copyProperties(hospital, hospitalDTO);
         //获取当前登录用户的组织信息
@@ -433,7 +425,7 @@ public class DataAuthManagementFacade {
      * @Return com.baomidou.mybatisplus.core.metadata.IPage<com.lantone.common.dto.DataAuthDTO>
      */
     public IPage<GetDataAuthPageDTO> getDataAuthPage(GetDataAuthPageVO getDataAuthPageVO) {
-        getDataAuthPageVO.setCreator(1l);//###当前登录人
+        getDataAuthPageVO.setCreator(SysUserUtils.getCurrentPrincipleId());
         return dataAuthFacade.getBaseMapper().getDataAuthPage(getDataAuthPageVO);
     }
 }

+ 37 - 40
security-center/src/main/java/com/lantone/security/facade/FuncManagementFacade.java

@@ -109,16 +109,10 @@ public class FuncManagementFacade {
         BeanUtils.copyProperties(addMenuVO, menu);
         menu.setGmtCreate(DateUtil.now());
         if (menuFacade.save(menu)) {
-            //1.2插入成功获取 menuID
-            Long menuID = menuFacade.list(new QueryWrapper<Menu>()
-                    .eq("parent_id", addMenuVO.getParentId())
-                    .eq("name", addMenuVO.getName())
-                    .eq("type", addMenuVO.getType())
-                    .eq("is_deleted", IsDeleteEnum.N.getKey())).get(0).getId();
             //2.插入功能菜单对应系统对应系统 sys_software_menu和sys_role_software_menu
-            if (savaRoleSoftwareMenu(menuID, addMenuVO.getSoftwares(), 1l)) {
+            if (savaRoleSoftwareMenu(menu.getId(), addMenuVO.getSoftwares(), 1l)) {
                 //插入sys_resource、sys_menu_resource、sys_software_resource
-                return saveMenuResource(addMenuVO.getPermissions(), addMenuVO.getSoftwares(), menuID);
+                return saveMenuResource(addMenuVO.getPermissions(), addMenuVO.getSoftwares(), menu.getId());
             }
         } else {
             Asserts.fail("菜单详情插入失败");
@@ -137,34 +131,45 @@ public class FuncManagementFacade {
         //2.3 判断该功能菜单是否有对应权限
         if (ListUtil.isNotEmpty(permissions)) {
             permissions.stream().forEach(permission -> {
-                //2.4 有权限 则插入sys_resource
-                Resource resource = new Resource();
-                resource.setUrl(permission);
-                resource.setGmtCreate(DateUtil.now());
-                if (resourceFacade.save(resource)) {
-                    //2.5 插入成功获取对应的 resourceID
-                    Long resourceID = resourceFacade.list(new QueryWrapper<Resource>()
-                            .select("id")
-                            .eq("url", resource.getUrl())
-                            .eq("is_deleted", IsDeleteEnum.N.getKey())).get(0).getId();
-                    //2.6 插入菜单和功能权限对应关系
+                //权限插入前判断改权限是否存在(比如新增按钮和修改按钮用的一个权限,新增时权限已经添加修改时就不用添加了)
+                List<Resource> hasPermissions = resourceFacade.list(new QueryWrapper<Resource>()
+                        .select("id")
+                        .eq("url", permission)
+                        .eq("is_deleted", IsDeleteEnum.N.getKey()));
+                if(hasPermissions.size()>0){
+                    //2.3 获取对应的 resourceID
+                    // 插入菜单和功能权限对应关系
                     MenuResource menuResource = new MenuResource();
                     menuResource.setMenuId(menuID);
-                    menuResource.setResourceId(resourceID);
-                    if (menuResourceFacade.save(menuResource)) {
-                        //2.7 插入系统与功能权限的对应关系
-                        softwares.stream().forEach(softwareId -> {
-                            SoftwareResource softwareResource = new SoftwareResource();
-                            softwareResource.setSoftwareId(softwareId);
-                            softwareResource.setResourceId(resourceID);
-                            softwareResourceFacade.save(softwareResource);
-                        });
+                    menuResource.setResourceId(hasPermissions.get(0).getId());
+                    menuResourceFacade.save(menuResource);
+                }else {
+                    //2.4 有权限 则插入sys_resource
+                    Resource resource = new Resource();
+                    resource.setUrl(permission);
+                    resource.setGmtCreate(DateUtil.now());
+                    if (resourceFacade.save(resource)) {
+
+                        //2.6 插入菜单和功能权限对应关系
+                        MenuResource menuResource = new MenuResource();
+                        menuResource.setMenuId(menuID);
+                        menuResource.setResourceId(resource.getId());
+                        if (menuResourceFacade.save(menuResource)) {
+                            //2.7 插入系统与功能权限的对应关系
+                            softwares.stream().forEach(softwareId -> {
+                                SoftwareResource softwareResource = new SoftwareResource();
+                                softwareResource.setSoftwareId(softwareId);
+                                softwareResource.setResourceId(resource.getId());
+                                softwareResourceFacade.save(softwareResource);
+                            });
+                        } else {
+                            Asserts.fail("菜单与资源权限插入失败");
+                        }
                     } else {
-                        Asserts.fail("菜单与资源权限插入失败");
+                        Asserts.fail("资源权限插入失败");
                     }
-                } else {
-                    Asserts.fail("资源权限插入失败");
                 }
+
             });
             return true;
         }
@@ -248,15 +253,7 @@ public class FuncManagementFacade {
             //2.修改sys_menu 菜单表
             Menu menu = new Menu();
             BeanUtils.copyProperties(updateMenuVO, menu);
-            if (menuFacade.update(new UpdateWrapper<Menu>()
-                    .set("name", menu.getName())
-                    .set("type", menu.getType())
-                    .set("url", menu.getUrl())
-                    .set("order_no", menu.getOrderNo())
-                    .set("menu_describe", menu.getMenuDescribe())
-                    .set("remark", menu.getRemark())
-                    .set("status", menu.getStatus())
-                    .eq("id", menu.getId()))) {
+            if (menuFacade.updateById(menu)) {
                 //3.重新插入上面删除的数据
                 //3.1插入功能菜单对应系统对应系统 sys_software_menu和sys_role_software_menu
                 if (savaRoleSoftwareMenu(updateMenuVO.getId(), updateMenuVO.getSoftwares(), 1l)) {

+ 20 - 9
security-center/src/main/java/com/lantone/security/facade/HospitalManagementFacade.java

@@ -11,31 +11,33 @@ import com.lantone.common.exception.Asserts;
 import com.lantone.common.util.DateUtil;
 import com.lantone.common.util.EntityUtil;
 import com.lantone.common.util.ListUtil;
+import com.lantone.common.util.SysUserUtils;
 import com.lantone.common.vo.AddHospitalTreeVO;
 import com.lantone.common.vo.AddHospitalVO;
 import com.lantone.common.vo.AddRoleVO;
 import com.lantone.common.vo.AddUserVO;
 import com.lantone.common.vo.GetHospitalListInfoVO;
 import com.lantone.common.vo.UpdateHospitalVO;
+import com.lantone.dblayermbg.entity.DictionaryInfo;
 import com.lantone.dblayermbg.entity.Hospital;
-import com.lantone.dblayermbg.entity.HospitalUser;
 import com.lantone.dblayermbg.entity.Region;
 import com.lantone.dblayermbg.entity.Role;
 import com.lantone.dblayermbg.entity.User;
 import com.lantone.dblayermbg.facade.DeptFacade;
+import com.lantone.dblayermbg.facade.DictionaryInfoFacade;
 import com.lantone.dblayermbg.facade.HospitalFacade;
 import com.lantone.dblayermbg.facade.HospitalUserFacade;
 import com.lantone.dblayermbg.facade.RegionFacade;
 import com.lantone.dblayermbg.facade.RoleFacade;
 import com.lantone.dblayermbg.facade.UserFacade;
 import com.lantone.dblayermbg.facade.UserRoleFacade;
+import com.lantone.security.enums.DictionaryEnum;
 import com.lantone.security.enums.HospitalTypeEnum;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 import java.util.ArrayList;
-import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -63,7 +65,8 @@ public class HospitalManagementFacade {
     private RoleFacade roleFacade;
     @Autowired
     private RegionFacade regionFacade;
-
+    @Autowired
+    private DictionaryInfoFacade dictionaryInfoFacade;
     /**
      * @param addHospitalVO
      * @Description添加组织
@@ -93,18 +96,23 @@ public class HospitalManagementFacade {
 
         //1.添加角色
         AddRoleVO addRoleVO = new AddRoleVO();
-        addRoleVO.setRemark(addHospitalVO.getName() + "管理员");
+        addRoleVO.setName(addHospitalVO.getName() + "组织管理角色");
+        addRoleVO.setRemark("ManagementRole");
         addRoleVO.setStatus("1");
+        addRoleVO.setHospitalId(hospitalId);
         addRoleVO.setSoftwares(addHospitalVO.getSoftwares());
         if (roleManagementFacade.addRole(addRoleVO)) {
             //2.获取角色id完善新增用户信息
             Long roleId = roleFacade.list(new QueryWrapper<Role>()
-                    .eq("remark", addHospitalVO.getName() + "管理员")).get(0).getId();
+                    .eq("name", addHospitalVO.getName() + "组织管理角色")
+                    .eq("hospital_id", hospitalId)).get(0).getId();
             //拼装添加用户信息
             AddUserVO addUserVO = new AddUserVO();
             //用户与角色的关系
             addUserVO.setRoles(new ArrayList<>());
             addUserVO.getRoles().add(roleId);
+            addUserVO.setName(addHospitalVO.getName() + "管理员");
+            addUserVO.setRemark("Administrators");
             BeanUtils.copyProperties(addHospitalVO.getAddHospitalUserVO(), addUserVO);
             //用户与组织的关系
             AddHospitalTreeVO addHospitalTreeVO = new AddHospitalTreeVO();
@@ -217,12 +225,12 @@ public class HospitalManagementFacade {
      * @Description组织管理列表页管理员下拉框筛选类型、病区查询
      * @Return java.util.Map<java.lang.String, java.lang.Object>
      */
-    public Map<String, Object> getManagerBoxInfo(Long local) {
+    public Map<String, Object> getManagerBoxInfo() {
         Map<String, Object> outMap = new HashMap<>();
         Map<Integer, String> hospitalTypeMap = new HashMap<>();
         //1.获取当前用户的组织类型
         int hospitalType = -1;
-        Hospital hospital = hospitalFacade.getById(local);//###当前登录用户的医院id
+        Hospital hospital = hospitalFacade.getById(SysUserUtils.getCurrentHospitalId());
         if (hospital != null) {
             hospitalType = Integer.parseInt(hospital.getType());
         }
@@ -257,6 +265,8 @@ public class HospitalManagementFacade {
             hospitalTypeMap.put(HospitalTypeEnum.UNION_HOSPITAL.getKey(), HospitalTypeEnum.UNION_HOSPITAL.getName());
             outMap.put("类型", hospitalTypeMap);
         }
+        //添加职称信息
+        outMap.put(DictionaryEnum.TITLE.getName(),dictionaryInfoFacade.getBaseMapper().getDictionaryInfoByType(DictionaryEnum.TITLE.getKey()));
         return outMap;
     }
 
@@ -268,7 +278,8 @@ public class HospitalManagementFacade {
     public List<GetHospitalListInfoDTO> getHospitalListInfo(GetHospitalListInfoVO getHospitalListInfoVO) {
         //1.获取当前用户的组织类型
         int hospitalType = -1;
-        Hospital hospital = hospitalFacade.getById(getHospitalListInfoVO.getHospitalId());//###当前登录用户的医院id
+        getHospitalListInfoVO.setHospitalId(SysUserUtils.getCurrentHospitalId());
+        Hospital hospital = hospitalFacade.getById(SysUserUtils.getCurrentHospitalId());
         if (hospital != null) {
             hospitalType = Integer.parseInt(hospital.getType());
         }
@@ -285,7 +296,7 @@ public class HospitalManagementFacade {
         return hospitalListInfos;
             //虚拟医院
         } else if (hospitalType >= 0) {
-            List<GetHospitalListInfoDTO> hospitalListInfoDTOS = hospitalFacade.getBaseMapper().getHospitalById(getHospitalListInfoVO);//###当前登录用户的医院id
+            List<GetHospitalListInfoDTO> hospitalListInfoDTOS = hospitalFacade.getBaseMapper().getHospitalById(getHospitalListInfoVO);
             Map<Long, List<GetHospitalListInfoDTO>> hospitalMaps = EntityUtil.makeEntityListMap(hospitalListInfoDTOS, "parentId");
             List<GetHospitalListInfoDTO> hospitalListInfos = hospitalMaps.get(hospital.getParentId());
             for(GetHospitalListInfoDTO bean:hospitalListInfos){

+ 130 - 39
security-center/src/main/java/com/lantone/security/facade/RoleManagementFacade.java

@@ -1,43 +1,56 @@
 package com.lantone.security.facade;
 
+import com.alibaba.fastjson.JSONArray;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.lantone.common.dto.GetCreateRoleDTO;
+import com.lantone.common.dto.GetDictionaryInfoByTypeDTO;
 import com.lantone.common.dto.GetRoleDTO;
 import com.lantone.common.dto.GetRolePageDTO;
+import com.lantone.common.dto.GetUserShowTreeDTO;
 import com.lantone.common.dto.SoftwareDTO;
 import com.lantone.common.dto.SoftwareMenuRelationDTO;
 import com.lantone.common.dto.UserMenuResourceTreeDTO;
+import com.lantone.common.dto.UserRoleDTO;
 import com.lantone.common.exception.Asserts;
 import com.lantone.common.util.DateUtil;
 import com.lantone.common.util.EntityUtil;
 import com.lantone.common.util.ListUtil;
 import com.lantone.common.util.StringUtil;
+import com.lantone.common.util.SysUserUtils;
 import com.lantone.common.vo.AddRoleSoftwareVO;
 import com.lantone.common.vo.AddRoleVO;
 import com.lantone.common.vo.GetRolePageVO;
 import com.lantone.common.vo.UpdateRoleVO;
+import com.lantone.dblayermbg.entity.Hospital;
 import com.lantone.dblayermbg.entity.Role;
 import com.lantone.dblayermbg.entity.RoleSoftwareMenu;
 import com.lantone.dblayermbg.entity.RoleSoftwareResource;
+import com.lantone.dblayermbg.entity.UserRole;
+import com.lantone.dblayermbg.facade.DictionaryInfoFacade;
+import com.lantone.dblayermbg.facade.HospitalFacade;
 import com.lantone.dblayermbg.facade.RoleFacade;
 import com.lantone.dblayermbg.facade.RoleSoftwareMenuFacade;
 import com.lantone.dblayermbg.facade.RoleSoftwareResourceFacade;
 import com.lantone.dblayermbg.facade.SoftwareFacade;
-import com.lantone.dblayermbg.facade.SoftwareMenuFacade;
+import com.lantone.dblayermbg.facade.UserRoleFacade;
 import com.lantone.dblayermbg.service.impl.RoleSoftwareMenuServiceImpl;
 import com.lantone.dblayermbg.service.impl.RoleSoftwareResourceServiceImpl;
 import com.lantone.common.enums.IsDeleteEnum;
+import com.lantone.security.enums.DictionaryEnum;
 import com.lantone.security.enums.RelationEnum;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 import java.util.concurrent.atomic.AtomicReference;
 import java.util.stream.Collectors;
 
@@ -45,21 +58,24 @@ import java.util.stream.Collectors;
  * @ClassName: FuncManagementFacade
  * @Description: 功能管理API
  * @Author songxl
- * @Date 2021/7/28
- * @Version 1.0
  */
 @Component
 public class RoleManagementFacade {
     @Autowired
     private RoleFacade roleFacade;
     @Autowired
+    private UserRoleFacade userRoleFacade;
+    @Autowired
     private RoleSoftwareMenuFacade roleSoftwareMenuFacade;
     @Autowired
     private RoleSoftwareResourceFacade roleSoftwareResourceFacade;
     @Autowired
-    private SoftwareMenuFacade softwareMenuFacade;
-    @Autowired
     private SoftwareFacade softwareFacade;
+    @Autowired
+    private HospitalFacade hospitalFacade;
+    @Autowired
+    private DictionaryInfoFacade dictionaryInfoFacade;
+
 
 
     /**
@@ -98,8 +114,10 @@ public class RoleManagementFacade {
      */
     public Boolean addRole(AddRoleVO addRoleVO) {
         //1.角色表插入角色信息
-        addRoleVO.setCreator("0");//###当前登录人
-        addRoleVO.setHospitalId(2l);//###当前登录人的组织
+        addRoleVO.setCreator(SysUserUtils.getCurrentPrincipleId());
+        if(addRoleVO.getHospitalId()==null){
+            addRoleVO.setHospitalId(SysUserUtils.getCurrentHospitalId());
+        }
         Role role = new Role();
         BeanUtils.copyProperties(addRoleVO, role);
         role.setGmtCreate(DateUtil.now());
@@ -136,7 +154,9 @@ public class RoleManagementFacade {
             if (ListUtil.isNotEmpty(addRoleSoftwareVO.getSoftwareResourceIds())) {
                 //2.添加该角色对应的系统功能权限关系sys_role_software_resource
                 List<RoleSoftwareResource> roleSoftwareResources = new ArrayList<>();
-                addRoleSoftwareVO.getSoftwareResourceIds().stream().forEach(softwareResourceId -> {
+                //资源去重
+                Set<Long> softwareResourceIds = new HashSet(addRoleSoftwareVO.getSoftwareResourceIds());
+                softwareResourceIds.stream().forEach(softwareResourceId -> {
                     RoleSoftwareResource roleSoftwareResource = new RoleSoftwareResource();
                     roleSoftwareResource.setRoleId(roleId);
                     roleSoftwareResource.setSoftwareResourceId(softwareResourceId);
@@ -198,8 +218,8 @@ public class RoleManagementFacade {
      */
     public IPage<GetRolePageDTO> getRolePage(GetRolePageVO getRolePageVO) {
         //1.获取当前登录人id和组织id
-        getRolePageVO.setCreator("0");//###当前登录人
-        getRolePageVO.setHospitalId(2l);//###当前登录人的组织
+        getRolePageVO.setCreator(SysUserUtils.getCurrentPrincipleId());
+        getRolePageVO.setHospitalId(SysUserUtils.getCurrentHospitalId());
         return roleFacade.getBaseMapper().getRolePage(getRolePageVO);
     }
 
@@ -216,25 +236,30 @@ public class RoleManagementFacade {
                 .eq("is_deleted", IsDeleteEnum.N.getKey()));
         if (ListUtil.isNotEmpty(roles)) {
             BeanUtils.copyProperties(roles.get(0), getRoleDTO);
-            //2.获取当前登录用户的功能菜单树
-            //获取当前用户的角色列表
-            List<Long> loginRoles = new ArrayList<>();//###获取当前用户id再获取该用户的角色
-            loginRoles.add(1l);
-            //获取用户服务
-            List<SoftwareDTO> loginSoftwares = softwareFacade.getBaseMapper().getUserSoftware(loginRoles);
-            List<SoftwareDTO> hasSoftwares = softwareFacade.getBaseMapper().getUserSoftware(roles.stream().map(Role::getId).collect(Collectors.toList()));
-            loginSoftwares.stream().forEach(softwareDTO -> {
-                hasSoftwares.stream().forEach(hasSoftwareDto->{
-                    if(softwareDTO.getId().equals(hasSoftwareDto.getId())){
-                        softwareDTO.setRelation(RelationEnum.Y.getName());
-                    }else {
-                        softwareDTO.setRelation(RelationEnum.N.getName());
-                    }
+            //2.获取当前登录用户(管理员)的功能菜单树
+            //获取管理员的角色列表
+            List<Long> loginRoles = userRoleFacade.getBaseMapper().getUserRoles(SysUserUtils.getCurrentPrincipleId())
+                    .stream().map(UserRoleDTO::getRoleId).collect(Collectors.toList());
+            if(ListUtil.isNotEmpty(loginRoles)){
+                //获取用户服务
+                List<SoftwareDTO> loginSoftwares = softwareFacade.getBaseMapper().getUserSoftware(loginRoles);
+                List<SoftwareDTO> hasSoftwares = softwareFacade.getBaseMapper().getUserSoftware(roles.stream().map(Role::getId).collect(Collectors.toList()));
+                loginSoftwares.stream().forEach(softwareDTO -> {
+                    hasSoftwares.stream().forEach(hasSoftwareDto -> {
+                        if (softwareDTO.getId().equals(hasSoftwareDto.getId())) {
+                            softwareDTO.setRelation(RelationEnum.Y.getName());
+                        } else {
+                            softwareDTO.setRelation(RelationEnum.N.getName());
+                        }
+                    });
                 });
-            });
-            getRoleDTO.setLoginSoftwares(loginSoftwares);
-            getRoleDTO.setLoginUserMenuResourceTree(getUserMenuResourceTreeByRoles(loginRoles,roles.stream().map(Role::getId).collect(Collectors.toList())));
-            return getRoleDTO;
+                getRoleDTO.setLoginSoftwares(loginSoftwares);
+                getRoleDTO.setLoginUserMenuResourceTree(getUserMenuResourceTreeByRoles(loginRoles, roles.stream().map(Role::getId).collect(Collectors.toList())));
+                return getRoleDTO;
+            }else {
+                Asserts.fail("该登录用户无角色信息");
+            }
+
         } else {
             Asserts.fail("角色的基本信息不存在");
         }
@@ -248,12 +273,12 @@ public class RoleManagementFacade {
      * @param menuMap 菜单集
      * @return 菜单结构
      */
-    public List<SoftwareMenuRelationDTO> getSonMenu(SoftwareMenuRelationDTO menu, Map<Long, List<SoftwareMenuRelationDTO>> menuMap) {
-        List<SoftwareMenuRelationDTO> sonMenu = new ArrayList<>();
-        List<SoftwareMenuRelationDTO> menuList = menuMap.get(menu.getMenuId());
+    public List<GetUserShowTreeDTO> getSonMenu(GetUserShowTreeDTO menu, Map<Long, List<GetUserShowTreeDTO>> menuMap) {
+        List<GetUserShowTreeDTO> sonMenu = new ArrayList<>();
+        List<GetUserShowTreeDTO> menuList = menuMap.get(menu.getMenuId());
         if (ListUtil.isNotEmpty(menuList)) {
             menu.setSonMenu(menuList);
-            for (SoftwareMenuRelationDTO bean : menuList) {
+            for (GetUserShowTreeDTO bean : menuList) {
                 getSonMenu(bean, menuMap);
             }
         }
@@ -286,9 +311,14 @@ public class RoleManagementFacade {
      */
     public Map<Long, List<UserMenuResourceTreeDTO>> getUserMenuResourceTree() {
         //1.获取当前用户的角色列表
-        List<Long> roles = new ArrayList<>();//###获取当前用户id再获取该用户的角色
-        roles.add(1l);
-        return getUserMenuResourceTreeByRoles(roles);
+        List<Long> roles = userRoleFacade.getBaseMapper().getUserRoles(SysUserUtils.getCurrentPrincipleId())
+                .stream().map(UserRoleDTO::getRoleId).collect(Collectors.toList());
+        if(ListUtil.isNotEmpty(roles)){
+            return getUserMenuResourceTreeByRoles(roles);
+        }else {
+            Asserts.fail("当前登录用户无角色信息");
+        }
+        return null;
     }
 
     /**
@@ -302,13 +332,13 @@ public class RoleManagementFacade {
     }
 
     /**
-     * @param loginRoles 当前登录用户的角色列表
+     * @param loginRoles  当前登录用户的角色列表
      * @param selectRoles 要查询用户的角色列表
      * @Description通过角色列表获取用户功能菜单树
      * @Return java.util.Map<java.lang.Long, java.util.List < com.lantone.common.dto.UserMenuResourceTreeDTO>>
      */
-    private Map<Long, List<UserMenuResourceTreeDTO>> getUserMenuResourceTreeByRoles(List<Long> loginRoles,List<Long> selectRoles) {
-        List<UserMenuResourceTreeDTO> userMenuResourceTree = roleSoftwareMenuFacade.getBaseMapper().getMenuResourceRelation(loginRoles,selectRoles);
+    private Map<Long, List<UserMenuResourceTreeDTO>> getUserMenuResourceTreeByRoles(List<Long> loginRoles, List<Long> selectRoles) {
+        List<UserMenuResourceTreeDTO> userMenuResourceTree = roleSoftwareMenuFacade.getBaseMapper().getMenuResourceRelation(loginRoles, selectRoles);
         return getTree(userMenuResourceTree);
     }
 
@@ -332,7 +362,68 @@ public class RoleManagementFacade {
         return resUserMenuResourceTree;
     }
 
+    /**
+     * @param
+     * @Description获取当前登录用户管理的角色列表
+     * @Return java.util.List<com.lantone.common.dto.GetCreateRoleDTO>
+     */
     public List<GetCreateRoleDTO> getCreateRoles() {
-        return roleFacade.getBaseMapper().getCreateRoles(1l);
+
+        return roleFacade.getBaseMapper().getCreateRoles(SysUserUtils.getCurrentHospitalId());
+    }
+
+    /**
+     * @param
+     * @Description获取当前登录用户的显示的菜单列表
+     * @Return java.util.Map<java.lang.Long, java.util.List < com.lantone.common.dto.GetUserShowTreeDTO>>
+     */
+    public Map<Long, List<GetUserShowTreeDTO>> getUserShowMemuTree() {
+        AtomicReference<List> notShowSoftwareMenuIds = new AtomicReference<>();
+        //1.1获取当前用户的角色列表
+        List<Role> roles = roleFacade.list(new QueryWrapper<Role>().
+                in("id", userRoleFacade.list(new QueryWrapper<UserRole>()
+                        .eq("user_id", SysUserUtils.getCurrentPrincipleId())).stream().map(UserRole::getRoleId).collect(Collectors.toList())));
+        //1.2判断该用户是否是管理用户
+        if(ListUtil.isNotEmpty(roles.stream().filter(role -> "ManagementRole".equals(role.getRemark())).collect(Collectors.toList()))){
+            Hospital hospital = hospitalFacade.getById(SysUserUtils.getCurrentHospitalId());
+            if (hospital != null) {
+                //2.获取字典禁用菜单配置
+                List<GetDictionaryInfoByTypeDTO> notShowMenus = dictionaryInfoFacade.getBaseMapper()
+                        .getDictionaryInfoByType(DictionaryEnum.NOT_SHOW_MENU.getKey());
+                notShowMenus.stream().forEach(getDictionaryInfoByTypeDTO -> {
+                    if(hospital.getType().equals(getDictionaryInfoByTypeDTO.getName())){
+                        notShowSoftwareMenuIds.set(Arrays.asList(getDictionaryInfoByTypeDTO.getVal().split(",")));
+                    }
+                });
+            }
+        }
+        List<GetUserShowTreeDTO> getUserShowTreeDTOS = roleSoftwareMenuFacade.getBaseMapper()
+                .getUserShowMemuTree(roles.stream().map(Role::getId).collect(Collectors.toList()),notShowSoftwareMenuIds.get());
+        //菜单转成树状结构
+        if(ListUtil.isNotEmpty(getUserShowTreeDTOS)){
+            return getShowTree(getUserShowTreeDTOS);
+        }
+        return null;
+    }
+
+
+    private Map<Long, List<GetUserShowTreeDTO>> getShowTree(List<GetUserShowTreeDTO> userMenuResourceTree) {
+        Map<Long, List<GetUserShowTreeDTO>> resUserMenuResourceTree = new HashMap<>();
+        //2.获取每个系统下的菜单、功能权限
+        Map<Long, List<GetUserShowTreeDTO>> userMenuResourceMap = EntityUtil
+                .makeEntityListMap(userMenuResourceTree, "softwareId");
+        //3.获取每个系统下的功能菜单树
+        if (!userMenuResourceMap.keySet().isEmpty()) {
+            userMenuResourceMap.keySet().stream().forEach(softwareId -> {
+                Map<Long, List<GetUserShowTreeDTO>> menuResourceMap = EntityUtil
+                        .makeEntityListMap(userMenuResourceMap.get(softwareId), "parentId");
+                List<GetUserShowTreeDTO> menuRes = menuResourceMap.get(0L);
+                for (GetUserShowTreeDTO bean : menuRes) {
+                    getSonMenu(bean, menuResourceMap);
+                }
+                resUserMenuResourceTree.put(softwareId, menuRes);
+            });
+        }
+        return resUserMenuResourceTree;
     }
 }

+ 16 - 26
security-center/src/main/java/com/lantone/security/facade/UserManagementFacade.java

@@ -1,5 +1,6 @@
 package com.lantone.security.facade;
 
+import cn.hutool.crypto.digest.BCrypt;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -7,7 +8,6 @@ import com.lantone.common.api.CommonResult;
 import com.lantone.common.constant.AuthConstant;
 import com.lantone.common.domain.UserDto;
 import com.lantone.common.dto.GetDeptTreeDTO;
-import com.lantone.common.dto.GetHospitalDeptDTO;
 import com.lantone.common.dto.GetHospitalTreeDTO;
 import com.lantone.common.dto.GetUserDTO;
 import com.lantone.common.dto.GetUserPageDTO;
@@ -17,7 +17,7 @@ import com.lantone.common.exception.Asserts;
 import com.lantone.common.util.DateUtil;
 import com.lantone.common.util.EntityUtil;
 import com.lantone.common.util.ListUtil;
-import com.lantone.common.util.StringUtil;
+import com.lantone.common.util.SysUserUtils;
 import com.lantone.common.vo.AddHospitalTreeVO;
 import com.lantone.common.vo.AddUserVO;
 import com.lantone.common.vo.GetUserPageVO;
@@ -43,7 +43,6 @@ import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
-import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -131,6 +130,7 @@ public class UserManagementFacade {
         User user = new User();
         BeanUtils.copyProperties(addUserVO, user);
         user.setGmtCreate(DateUtil.now());
+        user.setPassword(BCrypt.hashpw(user.getPassword()));
         try {
             if (userFacade.save(user)) {
                 //2.插入用户所属组织
@@ -220,11 +220,11 @@ public class UserManagementFacade {
      * @Description获取当前用户的组织机构树
      * @Return java.util.List<com.lantone.common.dto.GetHospitalTreeDTO>
      */
-    public List<GetHospitalTreeDTO> getLoginUserHospitalTree(Long h) {
-        Hospital hospital = hospitalFacade.getById(h);//###当前登录用户的医院id
+    public List<GetHospitalTreeDTO> getLoginUserHospitalTree() {
+        Hospital hospital = hospitalFacade.getById(SysUserUtils.getCurrentHospitalId());
         //获取当前医院的树状结构
         List<GetHospitalTreeDTO> hospitalTrees = hospitalFacade.getBaseMapper()
-                .getHospitalTreeInfo(h);//###当前登录用户id
+                .getHospitalTreeInfo(SysUserUtils.getCurrentHospitalId());
         //根据parentid分组
         Map<Long, List<GetHospitalTreeDTO>> hospitalMap = EntityUtil.makeEntityListMap(hospitalTrees, "parentId");
         //深度遍历拼装结果
@@ -248,18 +248,10 @@ public class UserManagementFacade {
     public boolean updateUser(UpdateUserVO updateUserVO) {
         //1.删除该用户关联的科室、医院
         if (delUserHospitalORDept(updateUserVO.getId())) {
-            if (userFacade.update(new UpdateWrapper<User>()
-                    .set("username", updateUserVO.getUsername())
-                    .set("password", updateUserVO.getPassword())
-                    .set("name", updateUserVO.getName())
-                    .set("status", updateUserVO.getStatus())
-                    .set(StringUtil.isNotEmpty(updateUserVO.getMobilePhone()), "mobile_phone", updateUserVO.getMobilePhone())
-                    .set(StringUtil.isNotEmpty(updateUserVO.getIdcard()), "idcard", updateUserVO.getIdcard())
-                    .set(StringUtil.isNotEmpty(updateUserVO.getTitleId()), "title_id", updateUserVO.getTitleId())
-                    .set(updateUserVO.getJobNo() != null, "job_no", updateUserVO.getJobNo())
-                    .set(updateUserVO.getOrderNo() != null, "order_no", updateUserVO.getOrderNo())
-                    .eq("id", updateUserVO.getId())
-                    .eq("is_deleted", IsDeleteEnum.N.getKey()))) {
+            User user = new User();
+            BeanUtils.copyProperties(updateUserVO, user);
+            user.setPassword(BCrypt.hashpw(user.getPassword()));
+            if (userFacade.updateById(user)) {
                 //2.插入用户新关联的医院、科室
                 return saveUserHospital(updateUserVO.getAddHospitalTreeVO(), updateUserVO.getId(), updateUserVO.getRoles());
             } else {
@@ -330,15 +322,12 @@ public class UserManagementFacade {
      * @Description获取用户详情
      * @Return com.lantone.common.dto.GetUserDTO
      */
-    public GetUserDTO getUserById(Long userId, Long local) {
+    public GetUserDTO getUserById(Long userId) {
         GetUserDTO getUserDTO = new GetUserDTO();
         //1.获取用户的基本信息
         BeanUtils.copyProperties(userFacade.getById(userId), getUserDTO);
         //2.获取当前用户的组织类型
-        Hospital hospital = hospitalFacade.getById(local);//###当前登录用户的医院id
-
-        //###通过职称id获取用户的职称
-
+        Hospital hospital = hospitalFacade.getById(SysUserUtils.getCurrentHospitalId());
         //3.获取查询用户的科室id列表、医院id列表
         List<Long> hospitals = hospitalUserFacade.list(new QueryWrapper<HospitalUser>()
                 .eq("user_id", userId)
@@ -349,7 +338,7 @@ public class UserManagementFacade {
         //3.2获取当前登录用户的组织机构树
         //获取当前医院的树状结构
         List<GetHospitalTreeDTO> hospitalTrees = hospitalFacade.getBaseMapper()
-                .getHospitalTreeInfo(local);//###当前登录用户的医院id
+                .getHospitalTreeInfo(SysUserUtils.getCurrentHospitalId());
         //根据parentid分组
         Map<Long, List<GetHospitalTreeDTO>> hospitalMap = EntityUtil.makeEntityListMap(hospitalTrees, "parentId");
         //深度遍历拼装结果
@@ -435,8 +424,9 @@ public class UserManagementFacade {
      */
     public IPage<GetUserPageDTO> getUserPage(GetUserPageVO getUserPageVO) {
 
-        getUserPageVO.setHospitalId(1l);//###获取当前登录用户的医院id
-        getUserPageVO.setLocalUserID(2l);//###查出的用户列表不能包含当前登录的管理用户
+        getUserPageVO.setHospitalId(SysUserUtils.getCurrentHospitalId());
+        //查出的用户列表不能包含当前登录的管理用户
+        getUserPageVO.setLocalUserID(SysUserUtils.getCurrentPrincipleId());
         return hospitalUserFacade.getBaseMapper().getUserPage(getUserPageVO);
     }
 }

+ 3 - 3
security-center/src/main/java/com/lantone/security/web/HospitalManagementController.java

@@ -68,10 +68,10 @@ public class HospitalManagementController {
         return CommonResult.success(hospitalManagementFacade.getHospitalById(HospitalId,local));
     }
 
-    @ApiOperation(value = "组织管理列表页管理员下拉框筛选类型、病区查询 [by:songxl]")
+    @ApiOperation(value = "组织管理列表页管理员下拉框筛选类型、病区、职称查询 [by:songxl]")
     @PostMapping("/getManagerBoxInfo")
-    public CommonResult<Map<String,Object>> getManagerBoxInfo(Long local) {
-        return CommonResult.success(hospitalManagementFacade.getManagerBoxInfo(local));
+    public CommonResult<Map<String,Object>> getManagerBoxInfo() {
+        return CommonResult.success(hospitalManagementFacade.getManagerBoxInfo());
     }
     @ApiOperation(value = "组织管理列表页查询 [by:songxl]")
     @PostMapping("/getHospitalListInfo")

+ 8 - 1
security-center/src/main/java/com/lantone/security/web/RoleManagementController.java

@@ -5,6 +5,7 @@ import com.lantone.common.api.CommonResult;
 import com.lantone.common.dto.GetCreateRoleDTO;
 import com.lantone.common.dto.GetRoleDTO;
 import com.lantone.common.dto.GetRolePageDTO;
+import com.lantone.common.dto.GetUserShowTreeDTO;
 import com.lantone.common.dto.UserMenuResourceTreeDTO;
 import com.lantone.common.vo.AddRoleVO;
 import com.lantone.common.vo.GetRolePageVO;
@@ -86,9 +87,15 @@ public class RoleManagementController {
         return CommonResult.success(roleManagementFacade.getUserMenuResourceTree());
     }
 
-    @ApiOperation(value = "获取当前登录用户创建的角色列表 [by:songxl]")
+    @ApiOperation(value = "获取当前登录用户管理的角色列表 [by:songxl]")
     @PostMapping("/getCreateRoles")
     public CommonResult<List<GetCreateRoleDTO>> getCreateRoles() {
         return CommonResult.success(roleManagementFacade.getCreateRoles());
     }
+
+    @ApiOperation(value = "获取当前登录用户的显示的菜单列表 [by:songxl]")
+    @PostMapping("/getUserShowMemuTree")
+    public CommonResult<Map<Long, List<GetUserShowTreeDTO>>> getUserShowMemuTree() {
+        return CommonResult.success(roleManagementFacade.getUserShowMemuTree());
+    }
 }

+ 4 - 4
security-center/src/main/java/com/lantone/security/web/UserManagementController.java

@@ -89,14 +89,14 @@ public class UserManagementController {
 
     @ApiOperation(value = "查看用户 [by:songxl]")
     @PostMapping("/getUserById")
-    public CommonResult<GetUserDTO> getUserById(@RequestParam @Valid @NotNull(message = "用户编号为空") Long userId, Long local) {
-        return CommonResult.success(userManagementFacade.getUserById(userId, local));
+    public CommonResult<GetUserDTO> getUserById(@RequestParam @Valid @NotNull(message = "用户编号为空") Long userId) {
+        return CommonResult.success(userManagementFacade.getUserById(userId));
     }
 
     @ApiOperation(value = "获取登录用户的组织机构树 [by:songxl]")
     @PostMapping("/getHospitalTree")
-    public CommonResult<List<GetHospitalTreeDTO>> getLoginUserHospitalTree(@RequestParam Long h) {
-        return CommonResult.success(userManagementFacade.getLoginUserHospitalTree(h));
+    public CommonResult<List<GetHospitalTreeDTO>> getLoginUserHospitalTree() {
+        return CommonResult.success(userManagementFacade.getLoginUserHospitalTree());
     }
 
     @ApiOperation(value = "获取当前用户所在组织的用户列表 [by:songxl]")