Parcourir la source

Merge remote-tracking branch 'origin/dev/ez-security210625' into dev/ez-security210625

rengb il y a 3 ans
Parent
commit
1ed34d946f
29 fichiers modifiés avec 179 ajouts et 82 suppressions
  1. 0 2
      common/src/main/java/com/lantone/common/dto/DataAuthDetailDTO.java
  2. 1 3
      common/src/main/java/com/lantone/common/dto/DeptDTO.java
  3. 1 1
      common/src/main/java/com/lantone/common/dto/GetHospitalByIdDTO.java
  4. 1 1
      common/src/main/java/com/lantone/common/dto/HospitalDTO.java
  5. 0 2
      common/src/main/java/com/lantone/common/dto/SysServiceDTO.java
  6. 3 3
      common/src/main/java/com/lantone/common/vo/AddRoleSoftwareVO.java
  7. 1 1
      common/src/main/java/com/lantone/common/vo/GetDataAuthPageVO.java
  8. 2 0
      common/src/main/java/com/lantone/common/vo/GetHospitalListInfoVO.java
  9. 2 1
      common/src/main/java/com/lantone/common/vo/GetMenusTreeVo.java
  10. 1 1
      dblayer-mbg/src/main/java/com/lantone/dblayermbg/mapper/HospitalUserMapper.java
  11. 3 3
      dblayer-mbg/src/main/java/com/lantone/dblayermbg/mapper/RoleSoftwareMenuMapper.java
  12. 1 1
      dblayer-mbg/src/main/java/com/lantone/dblayermbg/mapper/UserRoleMapper.java
  13. 3 1
      dblayer-mbg/src/main/resources/mapper/DataAuthMapper.xml
  14. 5 7
      dblayer-mbg/src/main/resources/mapper/DeptMapper.xml
  15. 2 2
      dblayer-mbg/src/main/resources/mapper/HospitalMapper.xml
  16. 5 2
      dblayer-mbg/src/main/resources/mapper/HospitalUserMapper.xml
  17. 2 1
      dblayer-mbg/src/main/resources/mapper/RoleMapper.xml
  18. 19 6
      dblayer-mbg/src/main/resources/mapper/RoleSoftwareMenuMapper.xml
  19. 0 1
      dblayer-mbg/src/main/resources/mapper/UserRoleMapper.xml
  20. 1 0
      security-center/src/main/java/com/lantone/security/enums/DictionaryEnum.java
  21. 8 2
      security-center/src/main/java/com/lantone/security/facade/DataAuthManagementFacade.java
  22. 21 2
      security-center/src/main/java/com/lantone/security/facade/FuncManagementFacade.java
  23. 43 11
      security-center/src/main/java/com/lantone/security/facade/HospitalManagementFacade.java
  24. 40 18
      security-center/src/main/java/com/lantone/security/facade/RoleManagementFacade.java
  25. 1 0
      security-center/src/main/java/com/lantone/security/facade/UserManagementFacade.java
  26. 2 2
      security-center/src/main/java/com/lantone/security/web/FuncManagementController.java
  27. 4 3
      security-center/src/main/java/com/lantone/security/web/HospitalManagementController.java
  28. 6 4
      security-center/src/main/java/com/lantone/security/web/RoleManagementController.java
  29. 1 1
      security-center/src/main/java/com/lantone/security/web/UserManagementController.java

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

@@ -7,11 +7,9 @@ import java.io.Serializable;
 import java.util.Date;
 
 /**
- * @ClassName: DataAuthDetailDTO
  * @Description:
  * @Author songxl
  * @Date 2021/7/22
- * @Version 1.0
  */
 @Data
 public class DataAuthDetailDTO implements Serializable {

+ 1 - 3
common/src/main/java/com/lantone/common/dto/DeptDTO.java

@@ -7,11 +7,9 @@ import java.io.Serializable;
 import java.util.Date;
 
 /**
- * @ClassName: DeptDTO
  * @Description: 科室返回对象
  * @Author songxl
  * @Date 2021/7/22
- * @Version 1.0
  */
 @Data
 public class DeptDTO implements Serializable {
@@ -49,5 +47,5 @@ public class DeptDTO implements Serializable {
     @ApiModelProperty(value = "是否删除,N:未删除,Y:删除")
     private String isDeleted;
     @ApiModelProperty(value = "关联标志位 true 关联")
-    private boolean relationStatus;
+    private String relation = "未关联";
 }

+ 1 - 1
common/src/main/java/com/lantone/common/dto/GetHospitalByIdDTO.java

@@ -33,7 +33,7 @@ public class GetHospitalByIdDTO implements Serializable {
     @ApiModelProperty(value = "父级组织机构名称")
     private String parentName;
 
-    @ApiModelProperty(value = "组织机构类型(0:AI病案质控平台 1:集团医院 2:医共 3:医联 4:医院)")
+    @ApiModelProperty(value = "组织机构类型(0:AI病案质控平台 1:集团医院 2:医共 3:医联 4:医院 5:科室)")
     @NotBlank(message = "组织机构类型不能为空")
     private String type;
 

+ 1 - 1
common/src/main/java/com/lantone/common/dto/HospitalDTO.java

@@ -60,5 +60,5 @@ public class HospitalDTO implements Serializable {
     @ApiModelProperty(value = "该虚拟医院的医院列表")
     private List<HospitalDTO> hospitalDTOS;
     @ApiModelProperty(value = "关联标志位 true 关联")
-    private boolean relationStatus;
+    private String relation = "未关联";
 }

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

@@ -8,11 +8,9 @@ import java.util.Date;
 import java.util.List;
 
 /**
- * @ClassName: SysServiceVO
  * @Description: 系统服务对象
  * @Author songxl
  * @Date 2021/7/21
- * @Version 1.0
  */
 @Data
 public class SysServiceDTO implements Serializable {

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

@@ -15,18 +15,18 @@ import java.util.List;
 public class AddRoleSoftwareVO implements Serializable {
     private static final long serialVersionUID = 1L;
 
-    @ApiModelProperty(value = "编号",required = true)
+    @ApiModelProperty(value = "系统服务编号",required = true)
     @NotNull(message = "系统服务编号为空")
     private Long id;
 
     @ApiModelProperty(value = "服务名称")
     private String name;
 
-    @ApiModelProperty(value = "系统菜单列表")
+    @ApiModelProperty(value = "系统菜单列表",required = true)
     @NotEmpty(message = "系统菜单列表")
     private List<Long> softwareMenuIds;
 
-    @ApiModelProperty(value = "系统功能权限列表")
+    @ApiModelProperty(value = "系统功能权限列表",required = true)
     @NotEmpty(message = "系统功能权限列表")
     private List<Long> softwareResourceIds;
 }

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

@@ -26,7 +26,7 @@ public class GetDataAuthPageVO extends Page implements Serializable {
     private String status;
     @ApiModelProperty("角色id列表")
     private List<Long> roles;
-    @ApiModelProperty(value = "创建用户编号")
+    @ApiModelProperty(value = "创建用户编号" ,hidden = true)
     private Long creator;
 
 

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

@@ -13,6 +13,8 @@ public class GetHospitalListInfoVO {
 
     @ApiModelProperty(value = "登录用户医院id" ,hidden = true)
     private Long hospitalId;
+    @ApiModelProperty(value = "登录用户id" ,hidden = true)
+    private Long creator;
 
     @ApiModelProperty(value = "医院名称")
     private String hospitalName;

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

@@ -23,6 +23,7 @@ public class GetMenusTreeVo implements Serializable {
     @ApiModelProperty(value = "服务id", required = true)
     @NotNull(message = "服务id为空")
     private Long softwareId;
-
+    @ApiModelProperty(value = "创建者id", hidden = true)
+    private Long creator;
 
 }

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

@@ -18,6 +18,6 @@ public interface HospitalUserMapper extends BaseMapper<HospitalUser> {
 
     IPage<GetUserPageDTO> getUserPage(@Param("getUserPageVO") GetUserPageVO getUserPageVO);
 
-    Long getHospitalUserById(@Param("hospitalId") Long hospitalId);
+    List<Long> getHospitalUserById(@Param("hospitalId") Long hospitalId ,@Param("name") String name);
 
 }

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

@@ -23,9 +23,9 @@ public interface RoleSoftwareMenuMapper extends BaseMapper<RoleSoftwareMenu> {
      */
     List<GetMenusTreeDTO> getMenus(@Param("roleSoftwareMenuVos") GetMenusTreeVo getMenusTreeVo);
 
-    List<UserMenuResourceTreeDTO> getUserMenuResourceTree(@Param("roles") List<Long> roles);
+    List<UserMenuResourceTreeDTO> getUserMenuResourceTree(@Param("roles") List<Long> roles,@Param("menuIds") List menuIds);
 
-    List<UserMenuResourceTreeDTO> getMenuResourceRelation(@Param("loginRoles")List<Long> loginRoles,@Param("selectRoles") List<Long> selectRoles);
+    List<UserMenuResourceTreeDTO> getMenuResourceRelation(@Param("loginRoles")List<Long> loginRoles,@Param("selectRoles") List<Long> selectRoles,@Param("menuIds") List menuIds);
 
-    List<GetUserShowTreeDTO> getUserShowMemuTree(@Param("roleIds") List<Long> roleIds,@Param("menuIds") List list);
+    List<GetUserShowTreeDTO> getUserShowMemuTree(@Param("roleIds") List<Long> roleIds,@Param("menuIds") List menuIds);
 }

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

@@ -16,5 +16,5 @@ public interface UserRoleMapper extends BaseMapper<UserRole> {
 
     List<UserRoleDTO> getUserRoles(@Param("userId") Long userId);
 
-    Long getUserRoleById(@Param("userId") Long userId,@Param("hospitalId")Long hospitalId);
+    Long getUserRoleById(@Param("userId") Long userId);
 }

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

@@ -88,7 +88,9 @@
         AND auth.is_deleted = 'N'
         AND rauth.is_deleted = 'N'
         AND sauth.is_deleted = 'N'
-        AND auth.creator = #{dataAuthVO.creator}
+        <if test="dataAuthVO.creator !=null ">
+            AND auth.creator = #{dataAuthVO.creator}
+        </if>
         <if test="dataAuthVO.status != null ">
             AND auth.`status` = #{dataAuthVO.status}
         </if>

+ 5 - 7
dblayer-mbg/src/main/resources/mapper/DeptMapper.xml

@@ -22,15 +22,13 @@
             r.`name` regionName,
             d.gmt_create gmtCreate
         FROM
-            sys_dept d,
-            sys_region_dept rd,
-            sys_region r
-        WHERE
-            d.is_deleted = 'N'
+        sys_dept d
+        LEFT JOIN sys_region_dept rd ON d.id = rd.dept_id
         AND rd.is_deleted = 'N'
+        LEFT JOIN sys_region r ON rd.region_id = r.id
         AND r.is_deleted = 'N'
-        AND d.id = rd.dept_id
-        AND rd.region_id = r.id
+        WHERE
+        d.is_deleted = 'N'
         AND d.hospital_id = #{getHospitalListInfoVO.hospitalId}
         <if test="getHospitalListInfoVO.hospitalName !=null and getHospitalListInfoVO.hospitalName!=''">
             AND d.`name` LIKE concat('%',#{getHospitalListInfoVO.hospitalName},'%')

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

@@ -26,8 +26,7 @@
             sys_hospital h
         WHERE
             h.is_deleted = 'N'
-        AND h.id = #{getHospitalListInfoVO.hospitalId}
-        OR h.parent_id = #{getHospitalListInfoVO.hospitalId}
+            AND h.creator = #{getHospitalListInfoVO.creator}
         <if test="getHospitalListInfoVO.hospitalName !=null and getHospitalListInfoVO.hospitalName!=''">
             AND h.`name` LIKE concat ('%',#{getHospitalListInfoVO.hospitalName},'%')
         </if>
@@ -37,6 +36,7 @@
         <if test="getHospitalListInfoVO.status !=null and getHospitalListInfoVO.status!=''">
             AND h.`status` = #{getHospitalListInfoVO.status}
         </if>
+        OR h.id = #{getHospitalListInfoVO.hospitalId}
 
 
     </select>

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

@@ -21,9 +21,9 @@
         AND u.id = hu.user_id
         AND h.id = hu.hospital_id
         AND u.remark != 'Administrators'
-        AND h.id = #{getUserPageVO.hospitalId}
+--         AND h.id = #{getUserPageVO.hospitalId}
         <if test="getUserPageVO.localUserID !=null ">
-            AND u.id != #{getUserPageVO.localUserID}
+            AND u.creator = #{getUserPageVO.localUserID}
         </if>
         <if test="getUserPageVO.status !=null and getUserPageVO.status !=''">
             AND u.`status` = #{getUserPageVO.status}
@@ -47,5 +47,8 @@
         AND u.remark = 'Administrators'
         AND u.id = hu.user_id
         AND hu.hospital_id = #{hospitalId}
+        <if test="name !=null and name !=''">
+            AND u.`name` = #{name}
+        </if>
     </select>
 </mapper>

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

@@ -9,8 +9,9 @@
         WHERE
             r.is_deleted = 'N'
 
-        AND r.hospital_id = #{getRolePageVO.hospitalId}
         AND r.remark != 'ManagementRole'
+        AND AND r.creator = #{getRolePageVO.creator}
+--         AND r.hospital_id = #{getRolePageVO.hospitalId}
         <if test="getRolePageVO.name!=null and getRolePageVO.name!=''">
             AND r.`name` LIKE concat('%',#{getRolePageVO.name},'%')
         </if>

+ 19 - 6
dblayer-mbg/src/main/resources/mapper/RoleSoftwareMenuMapper.xml

@@ -23,6 +23,7 @@
         AND r.is_deleted = 'N'
         WHERE m.id = sm.menu_id
         AND sm.id = rsm.software_menu_id
+        AND m.creator = #{roleSoftwareMenuVos.creator}
         <if test="roleSoftwareMenuVos.softwareId != null and roleSoftwareMenuVos.softwareId !=''">
             AND sm.software_id = #{roleSoftwareMenuVos.softwareId}
         </if>
@@ -79,6 +80,12 @@
                         #{id}
                     </foreach>
                 </if>
+                <if test="menuIds !=null and menuIds.size!=0">
+                    AND m.id NOT IN
+                    <foreach collection="menuIds" item="id" open="(" close=")" separator=",">
+                        #{id}
+                    </foreach>
+                </if>
             ) t1
         LEFT JOIN (
             SELECT
@@ -148,12 +155,18 @@
                     AND s.is_deleted = 'N'
                     AND r.`status` = '1'
                     AND m.`status` = '1'
-                        <if test="loginRoles !=null and loginRoles.size!=0">
-                            AND r.id IN
-                            <foreach collection="loginRoles" item="id" open="(" close=")" separator=",">
-                                #{id}
-                            </foreach>
-                        </if>
+                    <if test="loginRoles !=null and loginRoles.size!=0">
+                        AND r.id IN
+                        <foreach collection="loginRoles" item="id" open="(" close=")" separator=",">
+                            #{id}
+                        </foreach>
+                    </if>
+                    <if test="menuIds !=null and menuIds.size!=0">
+                        AND m.id NOT IN
+                        <foreach collection="menuIds" item="id" open="(" close=")" separator=",">
+                            #{id}
+                        </foreach>
+                    </if>
                     ) t1
                 LEFT JOIN (
                     SELECT

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

@@ -27,6 +27,5 @@
         AND r.id = ur.role_id
         AND r.remark = 'ManagementRole'
         AND ur.user_id = #{userId}
-        AND r.hospital_id = #{hospitalId}
     </select>
 </mapper>

+ 1 - 0
security-center/src/main/java/com/lantone/security/enums/DictionaryEnum.java

@@ -13,6 +13,7 @@ public enum DictionaryEnum implements KeyedNamed {
     HOSPITAL_TYPE(43, "组织类型"),
     PASSWORD(44, "重置密码"),
     REGION(45, "病区"),
+    MANAGE_HIDE_MENU(46, "管理隐藏功能菜单"),
     NOT_SHOW_MENU(41,"不显示菜单");
 
     @Setter

+ 8 - 2
security-center/src/main/java/com/lantone/security/facade/DataAuthManagementFacade.java

@@ -25,6 +25,7 @@ import com.lantone.dblayermbg.entity.DataAuth;
 import com.lantone.dblayermbg.entity.DataAuthDetail;
 import com.lantone.dblayermbg.entity.Dept;
 import com.lantone.dblayermbg.entity.Hospital;
+import com.lantone.dblayermbg.entity.HospitalUser;
 import com.lantone.dblayermbg.entity.Menu;
 import com.lantone.dblayermbg.entity.RoleSoftwareDataAuth;
 import com.lantone.dblayermbg.entity.SoftwareDataAuth;
@@ -33,6 +34,7 @@ import com.lantone.dblayermbg.facade.DataAuthFacade;
 import com.lantone.dblayermbg.facade.DeptFacade;
 import com.lantone.dblayermbg.facade.DoctorFacade;
 import com.lantone.dblayermbg.facade.HospitalFacade;
+import com.lantone.dblayermbg.facade.HospitalUserFacade;
 import com.lantone.dblayermbg.facade.RoleSoftwareDataAuthFacade;
 import com.lantone.dblayermbg.facade.SoftwareDataAuthFacade;
 import com.lantone.dblayermbg.service.impl.DataAuthDetailServiceImpl;
@@ -41,6 +43,7 @@ import com.lantone.security.enums.DataAuthDataTypeEnum;
 import com.lantone.security.enums.DataAuthDetailTypeEnum;
 import com.lantone.security.enums.HospitalTypeEnum;
 import com.lantone.common.enums.IsDeleteEnum;
+import com.lantone.security.enums.RelationEnum;
 import com.lantone.security.enums.ServiceEnum;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -76,6 +79,8 @@ public class DataAuthManagementFacade {
     private DeptFacade deptFacade;
     @Autowired
     private DoctorFacade doctorFacade;
+    @Autowired
+    private HospitalUserFacade hospitalUserFacade;
 
 
     /**
@@ -377,8 +382,8 @@ public class DataAuthManagementFacade {
                         deptDTOS.add(deptDTO);
                         //该医院和该医院的科室 自定义关联关系为true
                         if (dataAuthDetailDTO.getDetailId() == deptDTO.getId()) {
-                            hospitalDTO.setRelationStatus(true);
-                            deptDTO.setRelationStatus(true);
+                            hospitalDTO.setRelation(RelationEnum.Y.getName());
+                            deptDTO.setRelation(RelationEnum.Y.getName());
                         }
                     }
                 }
@@ -436,6 +441,7 @@ public class DataAuthManagementFacade {
      * @Return com.baomidou.mybatisplus.core.metadata.IPage<com.lantone.common.dto.DataAuthDTO>
      */
     public IPage<GetDataAuthPageDTO> getDataAuthPage(GetDataAuthPageVO getDataAuthPageVO) {
+        //数据权限的创建者不一定是当前登录用户,创建者应为当前登录用户所在医院所有用户
         getDataAuthPageVO.setCreator(SysUserUtils.getCurrentPrincipleId());
         return dataAuthFacade.getBaseMapper().getDataAuthPage(getDataAuthPageVO);
     }

+ 21 - 2
security-center/src/main/java/com/lantone/security/facade/FuncManagementFacade.java

@@ -8,6 +8,8 @@ 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.AddMenuVO;
 import com.lantone.common.vo.GetMenusTreeVo;
 import com.lantone.common.vo.UpdateMenuVO;
@@ -17,6 +19,7 @@ import com.lantone.dblayermbg.entity.Resource;
 import com.lantone.dblayermbg.entity.SoftwareMenu;
 import com.lantone.dblayermbg.entity.SoftwareResource;
 import com.lantone.dblayermbg.entity.User;
+import com.lantone.dblayermbg.entity.UserRole;
 import com.lantone.dblayermbg.facade.MenuFacade;
 import com.lantone.dblayermbg.facade.MenuResourceFacade;
 import com.lantone.dblayermbg.facade.ResourceFacade;
@@ -24,6 +27,7 @@ import com.lantone.dblayermbg.facade.RoleSoftwareMenuFacade;
 import com.lantone.dblayermbg.facade.SoftwareMenuFacade;
 import com.lantone.dblayermbg.facade.SoftwareResourceFacade;
 import com.lantone.common.enums.IsDeleteEnum;
+import com.lantone.dblayermbg.facade.UserRoleFacade;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
@@ -54,15 +58,29 @@ public class FuncManagementFacade {
     private SoftwareMenuFacade softwareMenuFacade;
     @Autowired
     private SoftwareResourceFacade softwareResourceFacade;
+    @Autowired
+    private UserRoleFacade userRoleFacade;
 
     /**
-     * @param getMenusTreeVo
      * @Description获取功能菜单树
      * @Return java.util.List<com.lantone.common.dto.GetMenusTreeDTO>
      */
-    public List<GetMenusTreeDTO> getMenusTree(GetMenusTreeVo getMenusTreeVo) {
+    public List<GetMenusTreeDTO> getMenusTree() {
         List<GetMenusTreeDTO> menuList = null;
         //2.1获取菜单列表
+        GetMenusTreeVo getMenusTreeVo = new GetMenusTreeVo();
+        getMenusTreeVo.setCreator(SysUserUtils.getCurrentPrincipleId());
+        List<Long> roleIds = userRoleFacade.list(new QueryWrapper<UserRole>()
+                .eq("user_id",SysUserUtils.getCurrentPrincipleId())
+                .eq("is_deleted",IsDeleteEnum.N.getKey())).stream().map(UserRole::getRoleId).collect(Collectors.toList());
+        if(ListUtil.isEmpty(roleIds)){
+            Asserts.fail("当前登录用户没有角色,请联系管理员~");
+        }
+        if(StringUtil.isNotEmpty(SysUserUtils.getCurrentSoftwareId())){
+            Asserts.fail("请求头服务id为空");
+        }
+        getMenusTreeVo.setSoftwareId(Long.parseLong(SysUserUtils.getCurrentSoftwareId()));
+        getMenusTreeVo.setRoles(roleIds);
         menuList = roleSoftwareMenuFacade.getBaseMapper().getMenus(getMenusTreeVo);
         //3.整理菜单
         if (ListUtil.isNotEmpty(menuList)) {
@@ -108,6 +126,7 @@ public class FuncManagementFacade {
         //1.1插入sys_menu
         Menu menu = new Menu();
         BeanUtils.copyProperties(addMenuVO, menu);
+        menu.setCreator(SysUserUtils.getCurrentPrincipleId()+"");
         menu.setGmtCreate(DateUtil.now());
         if (menuFacade.save(menu)) {
             //2.插入功能菜单对应系统对应系统 sys_software_menu和sys_role_software_menu

+ 43 - 11
security-center/src/main/java/com/lantone/security/facade/HospitalManagementFacade.java

@@ -91,6 +91,8 @@ public class HospitalManagementFacade {
             Dept dept = new Dept();
             BeanUtils.copyProperties(addHospitalVO, dept);
             dept.setHospitalId(addHospitalVO.getParentId());
+            dept.setCreator(SysUserUtils.getCurrentPrincipleId()+"");
+            dept.setGmtCreate(DateUtil.now());
             if(deptFacade.save(dept)){
                 //如果选择病区的话保存不能过去和科室的关系
                if(addHospitalVO.getRegionId()!=null){
@@ -111,6 +113,7 @@ public class HospitalManagementFacade {
             //1.添加组织信息
             Hospital hospital = new Hospital();
             BeanUtils.copyProperties(addHospitalVO, hospital);
+            hospital.setCreator(SysUserUtils.getCurrentPrincipleId()+"");
             hospital.setGmtCreate(DateUtil.now());
             if (hospitalFacade.save(hospital)) {
                 //2.保存该组织的用户
@@ -229,12 +232,18 @@ public class HospitalManagementFacade {
     private boolean deleteHUserAndRole(Long hospitalId) {
 
         //1.获取用户id
-        Long userId = hospitalUserFacade.getBaseMapper().getHospitalUserById(hospitalId);
+        List<Long> userIds = hospitalUserFacade.getBaseMapper().getHospitalUserById(hospitalId,hospitalFacade.getById(hospitalId).getName()+"管理员");
+        if(ListUtil.isEmpty(userIds)){
+            Asserts.fail("该组织的管理用户不存在,请联系管理员~");
+        }
+        if(userIds.size()>1){
+            Asserts.fail("该组织的管理用户存在多个,请联系管理员~");
+        }
         //2.获取角色id
-        Long roleId = userRoleFacade.getBaseMapper().getUserRoleById(userId, hospitalId);
+        Long roleId = userRoleFacade.getBaseMapper().getUserRoleById(userIds.get(0));
         if (roleManagementFacade.deleteRole(roleId)) {
             //3.删除用户
-            return userManagementFacade.deleteUser(userId);
+            return userManagementFacade.deleteUser(userIds.get(0));
         } else {
             Asserts.fail("管理角色删除失败");
         }
@@ -318,20 +327,42 @@ public class HospitalManagementFacade {
      * @Description通过组织id获取该组织及用户详情
      * @Return com.lantone.common.dto.GetHospitalByIdDTO
      */
-    public GetHospitalByIdDTO getHospitalById(Long hospitalId) {
+    public GetHospitalByIdDTO getHospitalById(Long hospitalId,int type) {
         GetHospitalByIdDTO getHospitalByIdDTO = new GetHospitalByIdDTO();
-        //1.获取医院详情
-        Hospital hospital = hospitalFacade.getById(hospitalId);
-        BeanUtils.copyProperties(hospital, getHospitalByIdDTO);
-        getHospitalByIdDTO.setParentName(hospitalFacade.getById(hospital.getParentId()).getName());
+        Long hID = null;
+        //1.获取医院或科室详情
+        if(HospitalTypeEnum.DEPT.getKey()==type){
+            Dept dept = deptFacade.getById(hospitalId);
+            if(dept==null){
+                Asserts.fail("该组织不存在,请联系管理员~");
+            }
+            BeanUtils.copyProperties(dept, getHospitalByIdDTO);
+            getHospitalByIdDTO.setParentId(dept.getHospitalId());
+            hID = dept.getHospitalId();
+        }else {
+            Hospital hospital = hospitalFacade.getById(hospitalId);
+            if(hospital==null){
+                Asserts.fail("该组织不存在,请联系管理员~");
+            }
+            BeanUtils.copyProperties(hospital, getHospitalByIdDTO);
+            hID = hospitalId;
+        }
+        getHospitalByIdDTO.setParentName(hospitalFacade.getById(getHospitalByIdDTO.getParentId()).getName());
         //2.获取该医院的管理用户详情
-        User user = userFacade.getById(hospitalUserFacade.getBaseMapper().getHospitalUserById(hospitalId));
+        List<Long> userIds = hospitalUserFacade.getBaseMapper().getHospitalUserById(hID,getHospitalByIdDTO.getName()+"管理员");
+        if(ListUtil.isEmpty(userIds)){
+            Asserts.fail("该组织的管理用户不存在,请联系管理员~");
+        }
+        if(userIds.size()>1){
+            Asserts.fail("该组织的管理用户存在多个,请联系管理员~");
+        }
+        User user = userFacade.getById(userIds.get(0));
         GetHospitalUserDTO getHospitalUserDTO = new GetHospitalUserDTO();
         BeanUtils.copyProperties(user, getHospitalUserDTO);
         getHospitalByIdDTO.setGetHospitalUserDTO(getHospitalUserDTO);
-        //3.获取管理角色相关信息
+        //3.获取管理角色相关信息(新增组织查询时type为0)
         getHospitalByIdDTO.setGetRoleDTO(roleManagementFacade.getRoleById(userRoleFacade.getBaseMapper()
-                .getUserRoleById(user.getId(), hospitalId)));
+                .getUserRoleById(user.getId()),"0"));
         return getHospitalByIdDTO;
     }
 
@@ -379,6 +410,7 @@ public class HospitalManagementFacade {
         //1.获取当前用户的组织类型
         int hospitalType = -1;
         getHospitalListInfoVO.setHospitalId(SysUserUtils.getCurrentHospitalId());
+        getHospitalListInfoVO.setCreator(SysUserUtils.getCurrentPrincipleId());
         Hospital hospital = hospitalFacade.getById(SysUserUtils.getCurrentHospitalId());
         if (hospital != null) {
             hospitalType = Integer.parseInt(hospital.getType());

+ 40 - 18
security-center/src/main/java/com/lantone/security/facade/RoleManagementFacade.java

@@ -1,6 +1,7 @@
 package com.lantone.security.facade;
 
 import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -145,6 +146,7 @@ public class RoleManagementFacade {
         }
         Role role = new Role();
         BeanUtils.copyProperties(addRoleVO, role);
+        role.setCreator(SysUserUtils.getCurrentPrincipleId()+"");
         role.setGmtCreate(DateUtil.now());
         if (roleFacade.save(role)) {
             //2.插入角色与系统菜单的对应关系以及角色与功能权限的对应关系sys_role_software_menu,sys_role_software_resource
@@ -171,15 +173,18 @@ public class RoleManagementFacade {
         if(ListUtil.isNotEmpty(softwares)){
             softwares.stream().forEach(addRoleSoftwareVO -> {
                 //获取菜单比对插入的功能菜单都能正常使用
+                List<SoftwareMenu> softwareMenus = softwareMenuFacade.list(new QueryWrapper<SoftwareMenu>()
+                        .select("menu_id")
+                        .eq("is_deleted",IsDeleteEnum.N.getKey())
+                        .in("id",addRoleSoftwareVO.getSoftwareMenuIds()));
+                if(ListUtil.isEmpty(softwareMenus)){
+                    Asserts.fail("该功能菜单不存在,刷新后重新添加~");
+                }
                if(ListUtil.isNotEmpty(addRoleSoftwareVO.getSoftwareMenuIds())){
                    if(addRoleSoftwareVO.getSoftwareMenuIds().size()!= menuFacade.count(new QueryWrapper<Menu>()
                            .eq("status", StatusEnum.Enable.getKey())
                            .eq("is_deleted",IsDeleteEnum.N.getKey())
-                           .in("id",softwareMenuFacade.list(new QueryWrapper<SoftwareMenu>()
-                                   .select("menu_id")
-                                   .eq("is_deleted",IsDeleteEnum.N.getKey())
-                                   .in("id",addRoleSoftwareVO.getSoftwareMenuIds()))
-                                   .stream().map(SoftwareMenu::getMenuId).collect(Collectors.toList())))){
+                           .in("id",softwareMenus.stream().map(SoftwareMenu::getMenuId).collect(Collectors.toList())))){
                        Asserts.fail("该角色要绑定的功能菜单已更新请刷新重试~");
                    }
                }
@@ -187,15 +192,18 @@ public class RoleManagementFacade {
                 //获取菜单比对插入的功能菜单都能正常使用
                 if(ListUtil.isNotEmpty(addRoleSoftwareVO.getSoftwareResourceIds())){
                     //去重 菜单对应的功能权限可能是一个
+                    List<SoftwareResource> softwareResources = softwareResourceFacade.list(new QueryWrapper<SoftwareResource>()
+                            .select("resource_id")
+                            .eq("is_deleted",IsDeleteEnum.N.getKey())
+                            .in("id",addRoleSoftwareVO.getSoftwareResourceIds()));
+                    if(ListUtil.isEmpty(softwareResources)){
+                        Asserts.fail("该功能菜单不存在,刷新后重新添加~");
+                    }
                     Set resourceSet = new HashSet(addRoleSoftwareVO.getSoftwareResourceIds());
                     if(resourceSet.size()!= resourceFacade.count(new QueryWrapper<Resource>()
                             .eq("status", StatusEnum.Enable.getKey())
                             .eq("is_deleted",IsDeleteEnum.N.getKey())
-                            .in("id",softwareResourceFacade.list(new QueryWrapper<SoftwareResource>()
-                                    .select("resource_id")
-                                    .eq("is_deleted",IsDeleteEnum.N.getKey())
-                                    .in("id",addRoleSoftwareVO.getSoftwareResourceIds()))
-                                    .stream().map(SoftwareResource::getResourceId).collect(Collectors.toList())))){
+                            .in("id",softwareResources.stream().map(SoftwareResource::getResourceId).collect(Collectors.toList())))){
                         Asserts.fail("该角色要绑定的功能菜单已更新请刷新重试~");
                     }
                 }
@@ -305,7 +313,7 @@ public class RoleManagementFacade {
      * @Description通过角色id获取角色详情
      * @Return com.lantone.common.dto.GetRoleDTO
      */
-    public GetRoleDTO getRoleById(Long roleId) {
+    public GetRoleDTO getRoleById(Long roleId,String type) {
         GetRoleDTO getRoleDTO = new GetRoleDTO();
         //1.获取角色基本信息
         List<Role> roles = roleFacade.list(new QueryWrapper<Role>()
@@ -318,7 +326,7 @@ public class RoleManagementFacade {
             List<Long> loginRoles = userRoleFacade.getBaseMapper().getUserRoles(SysUserUtils.getCurrentPrincipleId())
                     .stream().map(UserRoleDTO::getRoleId).collect(Collectors.toList());
             if(ListUtil.isNotEmpty(loginRoles)){
-                List<UserMenuResourceTreeDTO> userMenuResourceTreeDTOS =  getUserMenuResourceTreeByRoles(loginRoles, roles.stream().map(Role::getId).collect(Collectors.toList()));
+                List<UserMenuResourceTreeDTO> userMenuResourceTreeDTOS =  getUserMenuResourceTreeByRoles(loginRoles, roles.stream().map(Role::getId).collect(Collectors.toList()),type);
                 //获取用户服务
                 List<SoftwareDTO> loginSoftwares = softwareFacade.getBaseMapper().getUserSoftware(loginRoles);
                 List<Long> hasSoftwareIds = softwareFacade.getBaseMapper().getUserSoftware(roles.stream().map(Role::getId).collect(Collectors.toList()))
@@ -394,12 +402,12 @@ public class RoleManagementFacade {
      * @param获取用户功能菜单树
      * @Return java.util.Map<java.lang.Long, java.util.List < com.lantone.common.dto.UserMenuResourceTreeDTO>>
      */
-    public List<UserMenuResourceTreeDTO> getUserMenuResourceTree() {
+    public List<UserMenuResourceTreeDTO> getUserMenuResourceTree(String type) {
         //1.获取当前用户的角色列表
         List<Long> roles = userRoleFacade.getBaseMapper().getUserRoles(SysUserUtils.getCurrentPrincipleId())
                 .stream().map(UserRoleDTO::getRoleId).collect(Collectors.toList());
         if(ListUtil.isNotEmpty(roles)){
-            return getUserMenuResourceTreeByRoles(roles);
+            return getUserMenuResourceTreeByRoles(roles,type);
         }else {
             Asserts.fail("当前登录用户无角色信息");
         }
@@ -411,8 +419,15 @@ public class RoleManagementFacade {
      * @Description通过角色列表获取用户功能菜单树
      * @Return java.util.Map<java.lang.Long, java.util.List < com.lantone.common.dto.UserMenuResourceTreeDTO>>
      */
-    private List<UserMenuResourceTreeDTO> getUserMenuResourceTreeByRoles(List<Long> roles) {
-        List<UserMenuResourceTreeDTO> userMenuResourceTree = roleSoftwareMenuFacade.getBaseMapper().getUserMenuResourceTree(roles);
+    private List<UserMenuResourceTreeDTO> getUserMenuResourceTreeByRoles(List<Long> roles,String type) {
+        List hideMenus = null;
+        //获取type下要隐藏的菜单
+        List<GetDictionaryInfoByTypeDTO> configHideMenus = dictionaryInfoFacade.getBaseMapper()
+                .getDictionaryInfoByType(DictionaryEnum.MANAGE_HIDE_MENU.getKey());
+        if(ListUtil.isNotEmpty(configHideMenus)){
+            hideMenus = JSONArray.parseArray(JSONObject.parseObject(configHideMenus.get(0).getVal()).getString(type));
+        }
+        List<UserMenuResourceTreeDTO> userMenuResourceTree = roleSoftwareMenuFacade.getBaseMapper().getUserMenuResourceTree(roles,hideMenus);
         return getTree(userMenuResourceTree);
     }
 
@@ -422,8 +437,15 @@ public class RoleManagementFacade {
      * @Description通过角色列表获取用户功能菜单树
      * @Return java.util.Map<java.lang.Long, java.util.List < com.lantone.common.dto.UserMenuResourceTreeDTO>>
      */
-    private List<UserMenuResourceTreeDTO> getUserMenuResourceTreeByRoles(List<Long> loginRoles, List<Long> selectRoles) {
-        List<UserMenuResourceTreeDTO> userMenuResourceTree = roleSoftwareMenuFacade.getBaseMapper().getMenuResourceRelation(loginRoles, selectRoles);
+    private List<UserMenuResourceTreeDTO> getUserMenuResourceTreeByRoles(List<Long> loginRoles, List<Long> selectRoles,String type) {
+        List hideMenus = null;
+        //获取type下要隐藏的菜单
+        List<GetDictionaryInfoByTypeDTO> configHideMenus = dictionaryInfoFacade.getBaseMapper()
+                .getDictionaryInfoByType(DictionaryEnum.MANAGE_HIDE_MENU.getKey());
+        if(ListUtil.isNotEmpty(configHideMenus)){
+            hideMenus = JSONArray.parseArray(JSONObject.parseObject(configHideMenus.get(0).getVal()).getString(type));
+        }
+        List<UserMenuResourceTreeDTO> userMenuResourceTree = roleSoftwareMenuFacade.getBaseMapper().getMenuResourceRelation(loginRoles, selectRoles,hideMenus);
         return getTree(userMenuResourceTree);
     }
 

+ 1 - 0
security-center/src/main/java/com/lantone/security/facade/UserManagementFacade.java

@@ -136,6 +136,7 @@ public class UserManagementFacade {
         //1.新增用户基本信息
         User user = new User();
         BeanUtils.copyProperties(addUserVO, user);
+        user.setCreator(SysUserUtils.getCurrentPrincipleId()+"");
         user.setGmtCreate(DateUtil.now());
         user.setPassword(BCrypt.hashpw(user.getPassword()));
         //1.1校验用户

+ 2 - 2
security-center/src/main/java/com/lantone/security/web/FuncManagementController.java

@@ -36,8 +36,8 @@ public class FuncManagementController {
 
     @ApiOperation(value = "获取功能菜单列表 [by:songxl]")
     @PostMapping("/getMenusTree")
-    public CommonResult<List<GetMenusTreeDTO>> getMenusTree(@RequestBody @Valid GetMenusTreeVo getMenusTreeVo) {
-        return CommonResult.success(funcManagementFacade.getMenusTree(getMenusTreeVo));
+    public CommonResult<List<GetMenusTreeDTO>> getMenusTree() {
+        return CommonResult.success(funcManagementFacade.getMenusTree());
     }
 
     @ApiOperation(value = "添加功能菜单 [by:songxl]")

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

@@ -61,10 +61,11 @@ public class HospitalManagementController {
         return CommonResult.success(hospitalManagementFacade.disableHospital(HospitalId,status));
     }
 
-    @ApiOperation(value = "查看功能 [by:songxl]")
+    @ApiOperation(value = "查看功能 [by:songxl]",
+            notes = "type:组织机构类型(0:AI病案质控平台 1:集团医院 2:医共 3:医联 4:医院 5:科室),必填<br>")
     @PostMapping("/getHospitalById")
-    public CommonResult<GetHospitalByIdDTO> getHospitalById(@RequestParam @Valid @NotNull(message = "组织编号为空") Long HospitalId) {
-        return CommonResult.success(hospitalManagementFacade.getHospitalById(HospitalId));
+    public CommonResult<GetHospitalByIdDTO> getHospitalById(@RequestParam @Valid @NotNull(message = "组织编号为空") Long HospitalId,@RequestParam @Valid @NotNull(message = "组织类型为空") int type) {
+        return CommonResult.success(hospitalManagementFacade.getHospitalById(HospitalId,type));
     }
 
     @ApiOperation(value = "组织管理列表页管理员下拉框筛选类型、病区、职称查询 [by:songxl]")

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

@@ -78,13 +78,15 @@ public class RoleManagementController {
     @ApiOperation(value = "查看功能 [by:songxl]")
     @PostMapping("/getRoleById")
     public CommonResult<GetRoleDTO> getRoleById(@RequestParam @Valid @NotNull(message = "角色编号为空") Long roleId) {
-        return CommonResult.success(roleManagementFacade.getRoleById(roleId));
+        //创建角色时type为1(新创建的角色非管理角色,不会有管理菜单)
+        return CommonResult.success(roleManagementFacade.getRoleById(roleId,"1"));
     }
 
-    @ApiOperation(value = "获取当前登录用户管理的的功能权限树 [by:songxl]")
+    @ApiOperation(value = "获取当前登录用户管理的的功能权限树 [by:songxl]",
+            notes = "type:新增组织时查询type为0,添加角色时查询type为1,必填<br>")
     @PostMapping("/getUserMenuResourceTree")
-    public CommonResult<List<UserMenuResourceTreeDTO>> getUserMenuResourceTree() {
-        return CommonResult.success(roleManagementFacade.getUserMenuResourceTree());
+    public CommonResult<List<UserMenuResourceTreeDTO>> getUserMenuResourceTree(@RequestParam @Valid @NotNull(message = "类型不能为空")String type) {
+        return CommonResult.success(roleManagementFacade.getUserMenuResourceTree(type));
     }
 
     @ApiOperation(value = "获取当前登录用户管理的角色列表 [by:songxl]")

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

@@ -96,7 +96,7 @@ public class UserManagementController {
 
     @ApiOperation(value = "获取当前用户所在组织的用户列表 [by:songxl]")
     @PostMapping("/getUserPage")
-    public CommonResult<IPage<GetUserPageDTO>> getUserPage(GetUserPageVO getUserPageVO) {
+    public CommonResult<IPage<GetUserPageDTO>> getUserPage(@RequestBody @Valid GetUserPageVO getUserPageVO) {
         return CommonResult.success(userManagementFacade.getUserPage(getUserPageVO));
     }
     @ApiOperation(value = "登录成功获取用户的系统医院信息 [by:songxl]")