Просмотр исходного кода

添加数据权限变更加载方法,初始化用户数据权限方法;修改功能权限修改功能

songxinlu 3 лет назад
Родитель
Сommit
59d4a9f78e

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

@@ -14,6 +14,8 @@ import java.util.List;
 @Data
 public class GetDataAuthDetailDTO implements Serializable {
     private static final long serialVersionUID = 1L;
+    @ApiModelProperty(value = "医院id_用户id_服务id")
+    private String id;
     @ApiModelProperty(value = "数据范围类型::1:全部组织,2:全部科室,3:全部科室除本科室外,4:本科室,5:本医疗组,6:本人,7:自定义")
     private Integer dataType;
     @ApiModelProperty(value = "选择数据权限的类型 1:为医院  2:科室 3:为医生")

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

@@ -1,4 +1,4 @@
-package com.lantone.security.enums;
+package com.lantone.common.enums;
 
 import com.lantone.common.constant.KeyedNamed;
 import lombok.Setter;

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

@@ -1,4 +1,4 @@
-package com.lantone.security.enums;
+package com.lantone.common.enums;
 
 import com.lantone.common.constant.KeyedNamed;
 import lombok.Setter;

+ 22 - 0
common/src/main/java/com/lantone/common/vo/DataAuthPack.java

@@ -0,0 +1,22 @@
+package com.lantone.common.vo;
+
+import lombok.Data;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @Description:数据权限包装对象
+ * @Author songxl
+ * @Date 2021/9/6
+ */
+@Data
+public class DataAuthPack {
+    private List<Long> hospitals = new ArrayList<>();
+    private List<Long> notHospitals = new ArrayList<>();
+    private List<Long> doctors = new ArrayList<>();
+    private List<Long> users = new ArrayList<>();
+    private List<Long> notUsers = new ArrayList<>();
+    private List<Long> depts = new ArrayList<>();
+    private List<Long> notDepts = new ArrayList<>();
+}

+ 139 - 0
dblayer-mbg/src/main/java/com/lantone/dblayermbg/facade/DataAuthFacade.java

@@ -1,8 +1,28 @@
 package com.lantone.dblayermbg.facade;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.lantone.common.dto.GetDataAuthDeptDTO;
+import com.lantone.common.dto.GetDataAuthDetailDTO;
+import com.lantone.common.dto.GetDataAuthDoctorDTO;
+import com.lantone.common.dto.GetDataAuthHospitalDTO;
+import com.lantone.common.enums.DataAuthDataTypeEnum;
+import com.lantone.common.enums.DataAuthDetailTypeEnum;
+import com.lantone.common.enums.IsDeleteEnum;
+import com.lantone.common.service.RedisService;
+import com.lantone.common.util.ListUtil;
+import com.lantone.common.vo.DataAuthPack;
+import com.lantone.dblayermbg.entity.DeptUser;
 import com.lantone.dblayermbg.service.impl.DataAuthServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Component;
 
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
 /**
  * <p>
  * 表名:sys_data_auth 业务类
@@ -10,5 +30,124 @@ import org.springframework.stereotype.Component;
  */
 @Component
 public class DataAuthFacade extends DataAuthServiceImpl {
+    @Autowired
+    private RedisService redisService;
+    @Autowired
+    private DeptUserFacade deptUserFacade;
+    @Autowired
+    private MedoupDoctorFacade medoupDoctorFacade;
+    @Autowired
+    private HospitalFacade hospitalFacade;
+    @Autowired
+    private DeptFacade deptFacade;
+
+    /**
+     * @param
+     * @Description加载用户数据权限
+     * @Return void
+     */
+    public void initUserDataAuth() {
+        //获取用户的数据权限
+        List<GetDataAuthDetailDTO> dataAuthDetails = this.getBaseMapper()
+                .getDataAuth(null, null);
+        if (ListUtil.isNotEmpty(dataAuthDetails)) {
+            //通过id分组
+            Map<String, List<GetDataAuthDetailDTO>> dataAuthMap = dataAuthDetails.stream()
+                    .collect(Collectors.groupingBy(GetDataAuthDetailDTO::getId));
+            //遍历每个医院_用户_服务id 的数据权限
+            dataAuthMap.keySet().stream().forEach(id -> {
+                DataAuthPack dataAuthPack = new DataAuthPack();
+                if (ListUtil.isNotEmpty(dataAuthMap.get(id))) {
+                    //通过数据权限类型分类
+                    //1:全部组织,2:全部科室,3:全部科室除本科室外,4:本科室,5:本医疗组,6:本人,7:自定义
+                    Map<Integer, List<GetDataAuthDetailDTO>> dataAuthDetailMap = dataAuthMap.get(id).stream()
+                            .collect(Collectors.groupingBy(GetDataAuthDetailDTO::getDataType));
+                    dataAuthDetailMap.keySet().stream().forEach(dataType -> {
+                        //获取医院id和用户id
+                        Long hospitalId = null;
+                        Long userId = null;
+                        try {
+                            hospitalId = Long.parseLong(id.split("_")[0]);
+                            userId = Long.parseLong(id.split("_")[1]);
+                        } catch (Exception e) {
+                            e.printStackTrace();
+                        }
+                        //全部组织
+                        if (DataAuthDataTypeEnum.ALL_HOSPITAL.getKey() == dataType) {
+                            //获取当前登录用户的医院id
+                            if (hospitalId != null) {
+                                dataAuthPack.getHospitals().add(hospitalId);
+                            }
+                        }
+                        //全部科室
+                        if (DataAuthDataTypeEnum.ALL_DEPT.getKey() == dataType) {
+                            if (hospitalId != null) {
+                                dataAuthPack.getHospitals().add(hospitalId);
+                            }
+                            //获取所有科室
+//                    depts.addAll(deptFacade.list(new QueryWrapper<Dept>()
+//                            .in("hospital_id",hospitalId)
+//                            .eq("is_deleted",IsDeleteEnum.N.getKey())).stream().map(Dept::getId).collect(Collectors.toList()));
+                        }
+                        //除了本科室外
+                        if (DataAuthDataTypeEnum.ALL_DEPT_NOT_SELF.getKey() == dataType) {
+                            if (userId != null) {
+                                dataAuthPack.getNotDepts().addAll(deptUserFacade.list(new QueryWrapper<DeptUser>()
+                                        .eq("user_id", userId)
+                                        .eq("is_deleted", IsDeleteEnum.N.getKey())).stream()
+                                        .map(DeptUser::getDeptId).collect(Collectors.toList()));
+                            }
+                        }
+                        //本科室
+                        if (DataAuthDataTypeEnum.ALL_SELF_DEPT.getKey() == dataType) {
+                            if (userId != null) {
+                                dataAuthPack.getDepts().addAll(deptUserFacade.list(new QueryWrapper<DeptUser>()
+                                        .eq("user_id", userId)
+                                        .eq("is_deleted", IsDeleteEnum.N.getKey())).stream()
+                                        .map(DeptUser::getDeptId).collect(Collectors.toList()));
+                            }
+                        }
+                        //本医疗组
+                        if (DataAuthDataTypeEnum.SELF_MEDOUP.getKey() == dataType) {
+                            if (userId != null) {
+                                dataAuthPack.getDoctors().addAll(medoupDoctorFacade.getBaseMapper().getDoctorIdByMedoup(userId));
+                            }
+                        }
+                        //本人
+                        if (DataAuthDataTypeEnum.SELF_MEDOUP.getKey() == dataType) {
+                            if (userId != null) {
+                                dataAuthPack.getUsers().add(userId);
+                            }
+                        }
+                        //自定义
+                        if (DataAuthDataTypeEnum.CUSTOMIZE.getKey() == dataType) {
+                            Map<Integer, List<GetDataAuthDetailDTO>> dataAuthDetailTypeMap = dataAuthDetailMap.get(dataType).stream()
+                                    .collect(Collectors.groupingBy(GetDataAuthDetailDTO::getDetailType));
+                            dataAuthDetailTypeMap.keySet().stream().forEach(detailType -> {
+                                List<Long> ids = dataAuthDetailTypeMap
+                                        .get(detailType).stream().map(GetDataAuthDetailDTO::getDetailId).collect(Collectors.toList());
+                                //医院
+                                if (DataAuthDetailTypeEnum.HOSPITAL.getKey() == detailType) {
+                                    dataAuthPack.getHospitals().addAll(hospitalFacade.getBaseMapper().getHospitals(ids).stream()
+                                            .map(GetDataAuthHospitalDTO::getId).collect(Collectors.toList()));
+                                }
+                                //科室
+                                if (DataAuthDetailTypeEnum.DEPT.getKey() == detailType) {
+                                    dataAuthPack.getDepts().addAll(deptFacade.getBaseMapper().getDepts(ids).stream()
+                                            .map(GetDataAuthDeptDTO::getId).collect(Collectors.toList()));
+                                }
+                                //医生
+                                if (DataAuthDetailTypeEnum.DOCTOR.getKey() == detailType) {
+                                    dataAuthPack.getDoctors().addAll(deptFacade.getBaseMapper().getDoctors(ids).stream()
+                                            .map(GetDataAuthDoctorDTO::getId).collect(Collectors.toList()));
+                                }
+                            });
+                        }
+                    });
+                }
+                redisService.set("dataAuth:" + id, dataAuthPack);
+            });
 
+        }
+    }
 }

+ 36 - 23
dblayer-mbg/src/main/resources/mapper/DataAuthMapper.xml

@@ -75,16 +75,16 @@
     </select>
     <select id="getDataAuthPage" resultType="com.lantone.common.dto.GetDataAuthPageDTO">
         SELECT DISTINCT
-            auth.id,
-            auth.name,
-            r.id roleId,
-            IF (
-            auth.`status` = 1,
-            "启用",
-            "禁用"
-            ) statusName,
-            r.`name` roleName,
-            auth.`status`
+        auth.id,
+        auth.name,
+        r.id roleId,
+        IF (
+        auth.`status` = 1,
+        "启用",
+        "禁用"
+        ) statusName,
+        r.`name` roleName,
+        auth.`status`
         FROM
         sys_role r,
         sys_data_auth auth,
@@ -116,32 +116,45 @@
     </select>
     <select id="getDataAuth" resultType="com.lantone.common.dto.GetDataAuthDetailDTO">
         SELECT DISTINCT
-            u.id userID,
-            dad.data_type dataType,
-            dad.detail_id detailId,
-            dad.detail_type detailType
+        CONCAT(
+        hu.hospital_id,
+        '_',
+        u.id,
+        '_',
+        sda.software_id
+        ) id,
+        dad.data_type dataType,
+        dad.detail_id detailId,
+        dad.detail_type detailType
         FROM
-            sys_user u,
-            sys_role r,
-            sys_user_role ur,
-            sys_hospital_user hu,
-            sys_software_data_auth sda,
-            sys_role_software_data_auth rsda
+        sys_user u,
+        sys_role r,
+        sys_user_role ur,
+        sys_hospital_user hu,
+        sys_software_data_auth sda,
+        sys_role_software_data_auth rsda
         LEFT JOIN sys_data_auth_detail dad ON rsda.software_data_auth_id = dad.software_data_auth_id
         WHERE
-            u.is_deleted = 'N'
+        u.is_deleted = 'N'
         AND r.is_deleted = 'N'
         AND ur.is_deleted = 'N'
         AND hu.is_deleted = 'N'
         AND rsda.is_deleted = 'N'
         AND dad.is_deleted = 'N'
         AND sda.is_deleted = 'N'
+        AND u.`status` = '1'
+        AND r.`status` = '1'
         AND u.id = hu.user_id
         AND sda.id = rsda.software_data_auth_id
         AND r.id = ur.role_id
         AND ur.user_id = u.id
         AND rsda.role_id = r.id
-        AND sda.software_id = #{softwareId}
-        AND u.id = #{userID}
+        <if test="softwareId !=null and softwareId != ''">
+            AND sda.software_id = #{softwareId}
+        </if>
+        <if test="userID !=null">
+            AND u.id = #{userID}
+        </if>
+
     </select>
 </mapper>

+ 47 - 0
security-center/src/main/java/com/lantone/security/aop/DataAuthInitAspect.java

@@ -0,0 +1,47 @@
+package com.lantone.security.aop;
+
+import com.lantone.security.component.MessageSender;
+import org.aspectj.lang.annotation.After;
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.annotation.Pointcut;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+/**
+ * @Description: 用户数据权限变更统一处理切面
+ * @author: rengb
+ * @time: 2021/8/26 10:43
+ */
+@Aspect
+@Component
+public class DataAuthInitAspect {
+
+    @Autowired
+    private MessageSender messageSender;
+
+    @Pointcut("execution(public * com.lantone.security.web.RoleManagementController.addRole(..))" +
+            "||execution(public * com.lantone.security.web.RoleManagementController.deleteRole(..))" +
+            "||execution(public * com.lantone.security.web.RoleManagementController.disableRole(..))" +
+            "||execution(public * com.lantone.security.web.RoleManagementController.updateRole(..))" +
+            "||execution(public * com.lantone.security.web.HospitalManagementController.addHospital(..))" +
+            "||execution(public * com.lantone.security.web.HospitalManagementController.updateHospital(..))" +
+            "||execution(public * com.lantone.security.web.HospitalManagementController.disableHospital(..))" +
+            "||execution(public * com.lantone.security.web.HospitalManagementController.deleteHospital(..))" +
+            "||execution(public * com.lantone.security.web.UserManagementController.addUser(..))" +
+            "||execution(public * com.lantone.security.web.UserManagementController.updateUser(..))" +
+            "||execution(public * com.lantone.security.web.UserManagementController.disableUser(..))" +
+            "||execution(public * com.lantone.security.web.UserManagementController.deleteUser(..))" +
+            "||execution(public * com.lantone.security.web.DataAuthManagementController.addAuth(..))" +
+            "||execution(public * com.lantone.security.web.DataAuthManagementController.updateAuth(..))" +
+            "||execution(public * com.lantone.security.web.DataAuthManagementController.deleteAuth(..))" +
+            "||execution(public * com.lantone.security.web.DataAuthManagementController.disableAuth(..))"
+    )
+    public void basicInfoChange() {
+    }
+
+    @After("basicInfoChange()")
+    public void aspectAfter() {
+        messageSender.sendRedisCacheRefreshMessage(DataAuthInitAspect.class.getSimpleName());
+    }
+
+}

+ 6 - 0
security-center/src/main/java/com/lantone/security/component/MessageReceiver.java

@@ -2,6 +2,7 @@ package com.lantone.security.component;
 
 import com.lantone.common.dto.AbnormalLogDTO;
 import com.lantone.common.dto.OperationLogDTO;
+import com.lantone.dblayermbg.facade.DataAuthFacade;
 import com.lantone.dblayermbg.mapper.AbnormalLogMapper;
 import com.lantone.dblayermbg.mapper.LoginLogMapper;
 import com.lantone.dblayermbg.mapper.OperationLogMapper;
@@ -10,6 +11,7 @@ import com.lantone.common.util.AddressUtils;
 import com.lantone.dblayermbg.facade.DictionaryInfoFacade;
 import com.lantone.dblayermbg.facade.HospitalSetFacade;
 import com.lantone.dblayermbg.facade.ResourceFacade;
+import com.lantone.security.aop.DataAuthInitAspect;
 import com.lantone.security.aop.DictionaryAspect;
 import com.lantone.security.aop.HospitalSetAspect;
 import com.lantone.security.aop.ResourceRoleRulesAspect;
@@ -41,6 +43,8 @@ public class MessageReceiver {
     private OperationLogMapper operationLogMapper;
     @Autowired
     private AbnormalLogMapper abnormalLogMapper;
+    @Autowired
+    private DataAuthFacade dataAuthFacade;
 
 
     @RabbitListener(queues = "emrais.redis.cache.refresh.queue", ackMode = "MANUAL")
@@ -51,6 +55,8 @@ public class MessageReceiver {
             hospitalSetFacade.initHospitalSetMap();
         } else if (type.equals(ResourceRoleRulesAspect.class.getSimpleName())) {
             resourceFacade.initResourceRolesMap();
+        } else if (type.equals(DataAuthInitAspect.class.getSimpleName())) {
+            dataAuthFacade.initUserDataAuth();
         }
         channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
     }

+ 6 - 0
security-center/src/main/java/com/lantone/security/component/ResourceRoleRulesHolder.java

@@ -1,5 +1,6 @@
 package com.lantone.security.component;
 
+import com.lantone.dblayermbg.facade.DataAuthFacade;
 import com.lantone.dblayermbg.facade.ResourceFacade;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
@@ -16,13 +17,18 @@ public class ResourceRoleRulesHolder {
 
     @Autowired
     private ResourceFacade resourceFacade;
+    @Autowired
+    private DataAuthFacade dataAuthFacade;
 
     /**
      * 预加载所有权限
      */
     @PostConstruct
     public void initResourceRolesMap() {
+        //预加载功能权限
         resourceFacade.initResourceRolesMap();
+        //预加载数据权限
+        dataAuthFacade.initUserDataAuth();
     }
 
 }

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

@@ -5,15 +5,13 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.lantone.common.dto.DataAuthDetailDTO;
 import com.lantone.common.dto.GetDataAuthByIdDTO;
-import com.lantone.common.dto.GetDataAuthDeptDTO;
-import com.lantone.common.dto.GetDataAuthDetailDTO;
-import com.lantone.common.dto.GetDataAuthDoctorDTO;
-import com.lantone.common.dto.GetDataAuthHospitalDTO;
 import com.lantone.common.dto.GetDataAuthPageDTO;
 import com.lantone.common.dto.GetDataAuthRoleDTO;
 import com.lantone.common.dto.GetDataAuthSoftwareDTO;
 import com.lantone.common.dto.GetDoctorPageDTO;
 import com.lantone.common.dto.SoftwareDataAuthDetail;
+import com.lantone.common.enums.DataAuthDataTypeEnum;
+import com.lantone.common.enums.DataAuthDetailTypeEnum;
 import com.lantone.common.exception.Asserts;
 import com.lantone.common.service.RedisService;
 import com.lantone.common.util.DateUtil;
@@ -27,7 +25,6 @@ import com.lantone.common.vo.GetDoctorPageVO;
 import com.lantone.common.vo.UpdateAuthVO;
 import com.lantone.dblayermbg.entity.DataAuth;
 import com.lantone.dblayermbg.entity.DataAuthDetail;
-import com.lantone.dblayermbg.entity.DeptUser;
 import com.lantone.dblayermbg.entity.Role;
 import com.lantone.dblayermbg.entity.RoleSoftwareDataAuth;
 import com.lantone.dblayermbg.entity.SoftwareDataAuth;
@@ -45,18 +42,13 @@ import com.lantone.dblayermbg.facade.SoftwareDataAuthFacade;
 import com.lantone.dblayermbg.facade.UserFacade;
 import com.lantone.dblayermbg.service.impl.DataAuthDetailServiceImpl;
 import com.lantone.dblayermbg.service.impl.RoleSoftwareDataAuthServiceImpl;
-import com.lantone.security.annotation.DataAuthFilter;
-import com.lantone.security.enums.DataAuthDataTypeEnum;
-import com.lantone.security.enums.DataAuthDetailTypeEnum;
 import com.lantone.common.enums.IsDeleteEnum;
 import com.lantone.security.enums.SoftwareEnum;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Component;
 
 import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.atomic.AtomicBoolean;
@@ -250,8 +242,12 @@ public class DataAuthManagementFacade {
                 Asserts.fail("该数据权限已存在,请重新输入");
             }
         } else {
-            if (dataAuths.stream().map(DataAuth::getId).collect(Collectors.toList()).contains(id)) {
-                Asserts.fail("该数据权限已存在,请重新输入");
+            if (ListUtil.isNotEmpty(dataAuths)) {
+                dataAuths.stream().forEach(dataAuth -> {
+                    if (!id.equals(dataAuth.getId())) {
+                        Asserts.fail("该数据权限已存在,请重新输入");
+                    }
+                });
             }
         }
         //绑定角色校验
@@ -405,102 +401,4 @@ public class DataAuthManagementFacade {
         getDataAuthPageVO.setCreator(SysUserUtils.getCurrentPrincipleId());
         return dataAuthFacade.getBaseMapper().getDataAuthPage(getDataAuthPageVO);
     }
-
-    /**
-     * @param
-     * @Description获取用户数据权限
-     * @Return void
-     */
-    @Async
-    public void initUserDataAuth(Long userId, Long hospitalId, String softwareId) {
-        //获取当前用户的数据权限
-        List<GetDataAuthDetailDTO> dataAuthDetails = dataAuthFacade.getBaseMapper()
-                .getDataAuth(userId, softwareId);
-        Map<String, List<Long>> localDataAuthMap = new HashMap<>();
-        List<Long> users = new ArrayList<>();
-        List<Long> notUsers = new ArrayList<>();
-
-        List<Long> doctors = new ArrayList<>();
-
-        List<Long> depts = new ArrayList<>();
-        List<Long> notDepts = new ArrayList<>();
-
-        List<Long> hospitals = new ArrayList<>();
-        List<Long> notHospitals = new ArrayList<>();
-
-        if (ListUtil.isNotEmpty(dataAuthDetails)) {
-            Map<Integer, List<GetDataAuthDetailDTO>> dataAuthDetailMap = dataAuthDetails.stream()
-                    .collect(Collectors.groupingBy(GetDataAuthDetailDTO::getDataType));
-            dataAuthDetailMap.keySet().stream().forEach(dataType -> {
-                //1:全部组织,2:全部科室,3:全部科室除本科室外,4:本科室,5:本医疗组,6:本人,7:自定义
-                //全部组织
-                if (DataAuthDataTypeEnum.ALL_HOSPITAL.getKey() == dataType) {
-                    //获取当前登录用户的医院id
-                    hospitals.add(hospitalId);
-                }
-                //全部科室
-                if (DataAuthDataTypeEnum.ALL_DEPT.getKey() == dataType) {
-                    hospitals.add(hospitalId);
-                    //获取所有科室
-//                    depts.addAll(deptFacade.list(new QueryWrapper<Dept>()
-//                            .in("hospital_id",hospitalId)
-//                            .eq("is_deleted",IsDeleteEnum.N.getKey())).stream().map(Dept::getId).collect(Collectors.toList()));
-                }
-                //除了本科室外
-                if (DataAuthDataTypeEnum.ALL_DEPT_NOT_SELF.getKey() == dataType) {
-                    notDepts.addAll(deptUserFacade.list(new QueryWrapper<DeptUser>()
-                            .eq("user_id", userId)
-                            .eq("is_deleted", IsDeleteEnum.N.getKey())).stream()
-                            .map(DeptUser::getDeptId).collect(Collectors.toList()));
-                }
-                //本科室
-                if (DataAuthDataTypeEnum.ALL_SELF_DEPT.getKey() == dataType) {
-                    depts.addAll(deptUserFacade.list(new QueryWrapper<DeptUser>()
-                            .eq("user_id", userId)
-                            .eq("is_deleted", IsDeleteEnum.N.getKey())).stream()
-                            .map(DeptUser::getDeptId).collect(Collectors.toList()));
-                }
-                //本医疗组
-                if (DataAuthDataTypeEnum.SELF_MEDOUP.getKey() == dataType) {
-                    doctors.addAll(medoupDoctorFacade.getBaseMapper().getDoctorIdByMedoup(userId));
-                }
-                //本人
-                if (DataAuthDataTypeEnum.SELF_MEDOUP.getKey() == dataType) {
-                    users.add(userId);
-                }
-                //自定义
-                if (DataAuthDataTypeEnum.CUSTOMIZE.getKey() == dataType) {
-                    Map<Integer, List<GetDataAuthDetailDTO>> dataAuthDetailTypeMap = dataAuthDetailMap.get(dataType).stream()
-                            .collect(Collectors.groupingBy(GetDataAuthDetailDTO::getDetailType));
-                    dataAuthDetailTypeMap.keySet().stream().forEach(detailType -> {
-                        List<Long> ids = dataAuthDetailTypeMap
-                                .get(detailType).stream().map(GetDataAuthDetailDTO::getDetailId).collect(Collectors.toList());
-                        //医院
-                        if (DataAuthDetailTypeEnum.HOSPITAL.getKey() == detailType) {
-                            hospitals.addAll(hospitalFacade.getBaseMapper().getHospitals(ids).stream()
-                                    .map(GetDataAuthHospitalDTO::getId).collect(Collectors.toList()));
-                        }
-                        //科室
-                        if (DataAuthDetailTypeEnum.DEPT.getKey() == detailType) {
-                            depts.addAll(deptFacade.getBaseMapper().getDepts(ids).stream()
-                                    .map(GetDataAuthDeptDTO::getId).collect(Collectors.toList()));
-                        }
-                        //医生
-                        if (DataAuthDetailTypeEnum.DOCTOR.getKey() == detailType) {
-                            doctors.addAll(deptFacade.getBaseMapper().getDoctors(ids).stream()
-                                    .map(GetDataAuthDoctorDTO::getId).collect(Collectors.toList()));
-                        }
-                    });
-                }
-            });
-            localDataAuthMap.put("users", users);
-            localDataAuthMap.put("notUsers", notUsers);
-            localDataAuthMap.put("doctors", doctors);
-            localDataAuthMap.put("depts", depts);
-            localDataAuthMap.put("notDepts", notDepts);
-            localDataAuthMap.put("hospitals", hospitals);
-            localDataAuthMap.put("notHospitals", notHospitals);
-            redisService.hSetAll("dataAuth:"+hospitalId + "_" + userId + "_" + softwareId, localDataAuthMap);
-        }
-    }
 }

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

@@ -124,7 +124,7 @@ public class FuncManagementFacade {
      * @Return java.lang.Boolean
      */
     public Boolean addMenu(AddMenuVO addMenuVO) {
-        check(null,addMenuVO.getCode());
+        check(null, addMenuVO.getCode());
         //1.插入sys_menu
         //1.1插入sys_menu
         Menu menu = new Menu();
@@ -153,7 +153,7 @@ public class FuncManagementFacade {
             }
         } else {
             menus.stream().forEach(menu -> {
-                if (id != menu.getId() && code.equals(menu.getCode())) {
+                if (!id.equals(menu.getId())) {
                     Asserts.fail("该权限标识已存在,请重新输入");
                 }
             });
@@ -268,7 +268,7 @@ public class FuncManagementFacade {
             selectStatus = StatusEnum.Enable.getKey();
         }
         //获取功能菜单及其子集
-        List<Long> ids=menuFacade.getBaseMapper().getChildMenus(id,selectStatus);
+        List<Long> ids = menuFacade.getBaseMapper().getChildMenus(id, selectStatus);
         boolean flag = menuFacade.update(new UpdateWrapper<Menu>()
                 .set("status", status)
                 .in("id", ids)
@@ -283,7 +283,7 @@ public class FuncManagementFacade {
      */
     public Boolean deleteMenu(Long id) {
         //获取功能菜单及其子集
-        List<Long> ids=menuFacade.getBaseMapper().getChildMenus(id,StatusEnum.Enable.getKey());
+        List<Long> ids = menuFacade.getBaseMapper().getChildMenus(id, StatusEnum.Enable.getKey());
         //1.删除原来menu关联插入的数据
         if (menuFacade.update(new UpdateWrapper<Menu>()
                 .set("is_deleted", IsDeleteEnum.Y.getKey())
@@ -301,7 +301,7 @@ public class FuncManagementFacade {
      * @Return java.lang.Boolean
      */
     public Boolean updateMenu(UpdateMenuVO updateMenuVO) {
-        check(updateMenuVO.getId(),updateMenuVO.getCode());
+        check(updateMenuVO.getId(), updateMenuVO.getCode());
         //1.删除原来menu关联插入的数据
         if (deleteMenuJoinDate(updateMenuVO.getId(), 1l)) {
             //2.修改sys_menu 菜单表

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

@@ -515,7 +515,6 @@ public class RoleManagementFacade {
         }
         Long softwareId = Long.parseLong(SysUserUtils.getCurrentSoftwareId());
         Map<String, Object> out = new HashMap<>();
-        dataAuthManagementFacade.initUserDataAuth(SysUserUtils.getCurrentPrincipleId(), SysUserUtils.getCurrentHospitalId(), SysUserUtils.getCurrentSoftwareId());
         AtomicReference<List> notShowSoftwareMenuIds = new AtomicReference<>();
         //1.1获取当前用户的角色列表
         List<Role> roles = roleFacade.list(new QueryWrapper<Role>().

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

@@ -21,6 +21,7 @@ import com.lantone.common.dto.SoftwareDTO;
 import com.lantone.common.dto.UserInfoDTO;
 import com.lantone.common.dto.UserRoleDTO;
 import com.lantone.common.dto.UserSoftwareHospitalDTO;
+import com.lantone.common.enums.DataAuthDataTypeEnum;
 import com.lantone.common.enums.IsDeleteEnum;
 import com.lantone.common.enums.StatusEnum;
 import com.lantone.common.exception.Asserts;
@@ -55,23 +56,16 @@ import com.lantone.dblayermbg.facade.RoleFacade;
 import com.lantone.dblayermbg.facade.UserFacade;
 import com.lantone.dblayermbg.facade.UserRoleFacade;
 import com.lantone.security.component.MessageSender;
-import com.lantone.security.enums.DataAuthDataTypeEnum;
-import com.lantone.security.enums.DataAuthDetailTypeEnum;
 import com.lantone.security.enums.DictionaryEnum;
 import com.lantone.security.enums.HospitalTypeEnum;
 import com.lantone.security.enums.RelationEnum;
 import com.lantone.security.enums.ReturnTypeEnum;
 import com.lantone.security.service.AuthService;
 import eu.bitwalker.useragentutils.UserAgent;
-import org.apache.commons.collections4.MapUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.crypto.factory.PasswordEncoderFactories;
-import org.springframework.security.crypto.password.PasswordEncoder;
 import org.springframework.stereotype.Component;
-import org.springframework.util.DigestUtils;
 
-import javax.servlet.http.HttpServletRequest;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.HashMap;