|
@@ -13,6 +13,7 @@ import com.lantone.common.dto.SoftwareDTO;
|
|
import com.lantone.common.dto.SoftwareMenuRelationDTO;
|
|
import com.lantone.common.dto.SoftwareMenuRelationDTO;
|
|
import com.lantone.common.dto.UserMenuResourceTreeDTO;
|
|
import com.lantone.common.dto.UserMenuResourceTreeDTO;
|
|
import com.lantone.common.dto.UserRoleDTO;
|
|
import com.lantone.common.dto.UserRoleDTO;
|
|
|
|
+import com.lantone.common.enums.StatusEnum;
|
|
import com.lantone.common.exception.Asserts;
|
|
import com.lantone.common.exception.Asserts;
|
|
import com.lantone.common.util.DateUtil;
|
|
import com.lantone.common.util.DateUtil;
|
|
import com.lantone.common.util.EntityUtil;
|
|
import com.lantone.common.util.EntityUtil;
|
|
@@ -24,23 +25,31 @@ import com.lantone.common.vo.AddRoleVO;
|
|
import com.lantone.common.vo.GetRolePageVO;
|
|
import com.lantone.common.vo.GetRolePageVO;
|
|
import com.lantone.common.vo.UpdateRoleVO;
|
|
import com.lantone.common.vo.UpdateRoleVO;
|
|
import com.lantone.dblayermbg.entity.Hospital;
|
|
import com.lantone.dblayermbg.entity.Hospital;
|
|
|
|
+import com.lantone.dblayermbg.entity.Menu;
|
|
|
|
+import com.lantone.dblayermbg.entity.Resource;
|
|
import com.lantone.dblayermbg.entity.Role;
|
|
import com.lantone.dblayermbg.entity.Role;
|
|
import com.lantone.dblayermbg.entity.RoleSoftwareMenu;
|
|
import com.lantone.dblayermbg.entity.RoleSoftwareMenu;
|
|
import com.lantone.dblayermbg.entity.RoleSoftwareResource;
|
|
import com.lantone.dblayermbg.entity.RoleSoftwareResource;
|
|
|
|
+import com.lantone.dblayermbg.entity.SoftwareMenu;
|
|
|
|
+import com.lantone.dblayermbg.entity.SoftwareResource;
|
|
import com.lantone.dblayermbg.entity.UserRole;
|
|
import com.lantone.dblayermbg.entity.UserRole;
|
|
import com.lantone.dblayermbg.facade.DictionaryInfoFacade;
|
|
import com.lantone.dblayermbg.facade.DictionaryInfoFacade;
|
|
import com.lantone.dblayermbg.facade.HospitalFacade;
|
|
import com.lantone.dblayermbg.facade.HospitalFacade;
|
|
|
|
+import com.lantone.dblayermbg.facade.MenuFacade;
|
|
import com.lantone.dblayermbg.facade.ResourceFacade;
|
|
import com.lantone.dblayermbg.facade.ResourceFacade;
|
|
import com.lantone.dblayermbg.facade.RoleFacade;
|
|
import com.lantone.dblayermbg.facade.RoleFacade;
|
|
import com.lantone.dblayermbg.facade.RoleSoftwareMenuFacade;
|
|
import com.lantone.dblayermbg.facade.RoleSoftwareMenuFacade;
|
|
import com.lantone.dblayermbg.facade.RoleSoftwareResourceFacade;
|
|
import com.lantone.dblayermbg.facade.RoleSoftwareResourceFacade;
|
|
import com.lantone.dblayermbg.facade.SoftwareFacade;
|
|
import com.lantone.dblayermbg.facade.SoftwareFacade;
|
|
|
|
+import com.lantone.dblayermbg.facade.SoftwareMenuFacade;
|
|
|
|
+import com.lantone.dblayermbg.facade.SoftwareResourceFacade;
|
|
import com.lantone.dblayermbg.facade.UserRoleFacade;
|
|
import com.lantone.dblayermbg.facade.UserRoleFacade;
|
|
import com.lantone.dblayermbg.service.impl.RoleSoftwareMenuServiceImpl;
|
|
import com.lantone.dblayermbg.service.impl.RoleSoftwareMenuServiceImpl;
|
|
import com.lantone.dblayermbg.service.impl.RoleSoftwareResourceServiceImpl;
|
|
import com.lantone.dblayermbg.service.impl.RoleSoftwareResourceServiceImpl;
|
|
import com.lantone.common.enums.IsDeleteEnum;
|
|
import com.lantone.common.enums.IsDeleteEnum;
|
|
import com.lantone.security.enums.DictionaryEnum;
|
|
import com.lantone.security.enums.DictionaryEnum;
|
|
import com.lantone.security.enums.RelationEnum;
|
|
import com.lantone.security.enums.RelationEnum;
|
|
|
|
+import org.checkerframework.checker.units.qual.A;
|
|
import org.springframework.beans.BeanUtils;
|
|
import org.springframework.beans.BeanUtils;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.stereotype.Component;
|
|
import org.springframework.stereotype.Component;
|
|
@@ -78,6 +87,12 @@ public class RoleManagementFacade {
|
|
private DictionaryInfoFacade dictionaryInfoFacade;
|
|
private DictionaryInfoFacade dictionaryInfoFacade;
|
|
@Autowired
|
|
@Autowired
|
|
private ResourceFacade resourceFacade;
|
|
private ResourceFacade resourceFacade;
|
|
|
|
+ @Autowired
|
|
|
|
+ private MenuFacade menuFacade;
|
|
|
|
+ @Autowired
|
|
|
|
+ private SoftwareMenuFacade softwareMenuFacade;
|
|
|
|
+ @Autowired
|
|
|
|
+ private SoftwareResourceFacade softwareResourceFacade;
|
|
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -120,6 +135,9 @@ public class RoleManagementFacade {
|
|
* @Return java.lang.Boolean
|
|
* @Return java.lang.Boolean
|
|
*/
|
|
*/
|
|
public Boolean addRole(AddRoleVO addRoleVO) {
|
|
public Boolean addRole(AddRoleVO addRoleVO) {
|
|
|
|
+ //校验
|
|
|
|
+ checkRole(addRoleVO.getName(),addRoleVO.getSoftwares());
|
|
|
|
+
|
|
//1.角色表插入角色信息
|
|
//1.角色表插入角色信息
|
|
addRoleVO.setCreator(SysUserUtils.getCurrentPrincipleId());
|
|
addRoleVO.setCreator(SysUserUtils.getCurrentPrincipleId());
|
|
if(addRoleVO.getHospitalId()==null){
|
|
if(addRoleVO.getHospitalId()==null){
|
|
@@ -137,6 +155,54 @@ public class RoleManagementFacade {
|
|
return false;
|
|
return false;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * @Description角色新增修改校验
|
|
|
|
+ * @param name
|
|
|
|
+ * @param softwares
|
|
|
|
+ * @Return void
|
|
|
|
+ */
|
|
|
|
+ private void checkRole(String name, List<AddRoleSoftwareVO> softwares) {
|
|
|
|
+ if(roleFacade.list(new QueryWrapper<Role>()
|
|
|
|
+ .eq("hospital_id",SysUserUtils.getCurrentHospitalId())
|
|
|
|
+ .eq("name",name)
|
|
|
|
+ .eq("is_deleted",IsDeleteEnum.N.getKey())).size()>0){
|
|
|
|
+ Asserts.fail("该角色已存在请重新输入");
|
|
|
|
+ }
|
|
|
|
+ if(ListUtil.isNotEmpty(softwares)){
|
|
|
|
+ softwares.stream().forEach(addRoleSoftwareVO -> {
|
|
|
|
+ //获取菜单比对插入的功能菜单都能正常使用
|
|
|
|
+ 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())))){
|
|
|
|
+ Asserts.fail("该角色要绑定的功能菜单已更新请刷新重试~");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ //功能权限校验
|
|
|
|
+ //获取菜单比对插入的功能菜单都能正常使用
|
|
|
|
+ if(ListUtil.isNotEmpty(addRoleSoftwareVO.getSoftwareResourceIds())){
|
|
|
|
+ //去重 菜单对应的功能权限可能是一个
|
|
|
|
+ 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())))){
|
|
|
|
+ Asserts.fail("该角色要绑定的功能菜单已更新请刷新重试~");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* @param softwares
|
|
* @param softwares
|
|
* @param roleId
|
|
* @param roleId
|
|
@@ -252,20 +318,28 @@ public class RoleManagementFacade {
|
|
List<Long> loginRoles = userRoleFacade.getBaseMapper().getUserRoles(SysUserUtils.getCurrentPrincipleId())
|
|
List<Long> loginRoles = userRoleFacade.getBaseMapper().getUserRoles(SysUserUtils.getCurrentPrincipleId())
|
|
.stream().map(UserRoleDTO::getRoleId).collect(Collectors.toList());
|
|
.stream().map(UserRoleDTO::getRoleId).collect(Collectors.toList());
|
|
if(ListUtil.isNotEmpty(loginRoles)){
|
|
if(ListUtil.isNotEmpty(loginRoles)){
|
|
|
|
+ List<UserMenuResourceTreeDTO> userMenuResourceTreeDTOS = getUserMenuResourceTreeByRoles(loginRoles, roles.stream().map(Role::getId).collect(Collectors.toList()));
|
|
//获取用户服务
|
|
//获取用户服务
|
|
List<SoftwareDTO> loginSoftwares = softwareFacade.getBaseMapper().getUserSoftware(loginRoles);
|
|
List<SoftwareDTO> loginSoftwares = softwareFacade.getBaseMapper().getUserSoftware(loginRoles);
|
|
- List<SoftwareDTO> hasSoftwares = softwareFacade.getBaseMapper().getUserSoftware(roles.stream().map(Role::getId).collect(Collectors.toList()));
|
|
|
|
|
|
+ List<Long> hasSoftwareIds = softwareFacade.getBaseMapper().getUserSoftware(roles.stream().map(Role::getId).collect(Collectors.toList()))
|
|
|
|
+ .stream().map(SoftwareDTO::getId).collect(Collectors.toList());;
|
|
loginSoftwares.stream().forEach(softwareDTO -> {
|
|
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());
|
|
|
|
- }
|
|
|
|
- });
|
|
|
|
|
|
+ if (hasSoftwareIds.contains(softwareDTO.getId())) {
|
|
|
|
+ softwareDTO.setRelation(RelationEnum.Y.getName());
|
|
|
|
+ } else {
|
|
|
|
+ softwareDTO.setRelation(RelationEnum.N.getName());
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ //添加功能树服务已关联标志
|
|
|
|
+ userMenuResourceTreeDTOS.stream().forEach(userMenuResourceTreeDTO -> {
|
|
|
|
+ if (hasSoftwareIds.contains(userMenuResourceTreeDTO.getSoftwareId())) {
|
|
|
|
+ userMenuResourceTreeDTO.setRelation(RelationEnum.Y.getName());
|
|
|
|
+ } else {
|
|
|
|
+ userMenuResourceTreeDTO.setRelation(RelationEnum.N.getName());
|
|
|
|
+ }
|
|
});
|
|
});
|
|
getRoleDTO.setLoginSoftwares(loginSoftwares);
|
|
getRoleDTO.setLoginSoftwares(loginSoftwares);
|
|
- getRoleDTO.setLoginUserMenuResourceTree(getUserMenuResourceTreeByRoles(loginRoles, roles.stream().map(Role::getId).collect(Collectors.toList())));
|
|
|
|
|
|
+ getRoleDTO.setLoginUserMenuResourceTree(userMenuResourceTreeDTOS);
|
|
return getRoleDTO;
|
|
return getRoleDTO;
|
|
}else {
|
|
}else {
|
|
Asserts.fail("该登录用户无角色信息");
|
|
Asserts.fail("该登录用户无角色信息");
|
|
@@ -320,7 +394,7 @@ public class RoleManagementFacade {
|
|
* @param获取用户功能菜单树
|
|
* @param获取用户功能菜单树
|
|
* @Return java.util.Map<java.lang.Long, java.util.List < com.lantone.common.dto.UserMenuResourceTreeDTO>>
|
|
* @Return java.util.Map<java.lang.Long, java.util.List < com.lantone.common.dto.UserMenuResourceTreeDTO>>
|
|
*/
|
|
*/
|
|
- public Map<Long, List<UserMenuResourceTreeDTO>> getUserMenuResourceTree() {
|
|
|
|
|
|
+ public List<UserMenuResourceTreeDTO> getUserMenuResourceTree() {
|
|
//1.获取当前用户的角色列表
|
|
//1.获取当前用户的角色列表
|
|
List<Long> roles = userRoleFacade.getBaseMapper().getUserRoles(SysUserUtils.getCurrentPrincipleId())
|
|
List<Long> roles = userRoleFacade.getBaseMapper().getUserRoles(SysUserUtils.getCurrentPrincipleId())
|
|
.stream().map(UserRoleDTO::getRoleId).collect(Collectors.toList());
|
|
.stream().map(UserRoleDTO::getRoleId).collect(Collectors.toList());
|
|
@@ -337,7 +411,7 @@ public class RoleManagementFacade {
|
|
* @Description通过角色列表获取用户功能菜单树
|
|
* @Description通过角色列表获取用户功能菜单树
|
|
* @Return java.util.Map<java.lang.Long, java.util.List < com.lantone.common.dto.UserMenuResourceTreeDTO>>
|
|
* @Return java.util.Map<java.lang.Long, java.util.List < com.lantone.common.dto.UserMenuResourceTreeDTO>>
|
|
*/
|
|
*/
|
|
- private Map<Long, List<UserMenuResourceTreeDTO>> getUserMenuResourceTreeByRoles(List<Long> roles) {
|
|
|
|
|
|
+ private List<UserMenuResourceTreeDTO> getUserMenuResourceTreeByRoles(List<Long> roles) {
|
|
List<UserMenuResourceTreeDTO> userMenuResourceTree = roleSoftwareMenuFacade.getBaseMapper().getUserMenuResourceTree(roles);
|
|
List<UserMenuResourceTreeDTO> userMenuResourceTree = roleSoftwareMenuFacade.getBaseMapper().getUserMenuResourceTree(roles);
|
|
return getTree(userMenuResourceTree);
|
|
return getTree(userMenuResourceTree);
|
|
}
|
|
}
|
|
@@ -348,13 +422,13 @@ public class RoleManagementFacade {
|
|
* @Description通过角色列表获取用户功能菜单树
|
|
* @Description通过角色列表获取用户功能菜单树
|
|
* @Return java.util.Map<java.lang.Long, java.util.List < com.lantone.common.dto.UserMenuResourceTreeDTO>>
|
|
* @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) {
|
|
|
|
|
|
+ private List<UserMenuResourceTreeDTO> getUserMenuResourceTreeByRoles(List<Long> loginRoles, List<Long> selectRoles) {
|
|
List<UserMenuResourceTreeDTO> userMenuResourceTree = roleSoftwareMenuFacade.getBaseMapper().getMenuResourceRelation(loginRoles, selectRoles);
|
|
List<UserMenuResourceTreeDTO> userMenuResourceTree = roleSoftwareMenuFacade.getBaseMapper().getMenuResourceRelation(loginRoles, selectRoles);
|
|
return getTree(userMenuResourceTree);
|
|
return getTree(userMenuResourceTree);
|
|
}
|
|
}
|
|
|
|
|
|
- private Map<Long, List<UserMenuResourceTreeDTO>> getTree(List<UserMenuResourceTreeDTO> userMenuResourceTree) {
|
|
|
|
- Map<Long, List<UserMenuResourceTreeDTO>> resUserMenuResourceTree = new HashMap<>();
|
|
|
|
|
|
+ private List<UserMenuResourceTreeDTO> getTree(List<UserMenuResourceTreeDTO> userMenuResourceTree) {
|
|
|
|
+ List<UserMenuResourceTreeDTO> resUserMenuResourceTree = new ArrayList<>();
|
|
//2.获取每个系统下的菜单、功能权限
|
|
//2.获取每个系统下的菜单、功能权限
|
|
Map<Long, List<UserMenuResourceTreeDTO>> userMenuResourceMap = EntityUtil
|
|
Map<Long, List<UserMenuResourceTreeDTO>> userMenuResourceMap = EntityUtil
|
|
.makeEntityListMap(userMenuResourceTree, "softwareId");
|
|
.makeEntityListMap(userMenuResourceTree, "softwareId");
|
|
@@ -364,10 +438,14 @@ public class RoleManagementFacade {
|
|
Map<Long, List<UserMenuResourceTreeDTO>> menuResourceMap = EntityUtil
|
|
Map<Long, List<UserMenuResourceTreeDTO>> menuResourceMap = EntityUtil
|
|
.makeEntityListMap(userMenuResourceMap.get(softwareId), "parentId");
|
|
.makeEntityListMap(userMenuResourceMap.get(softwareId), "parentId");
|
|
List<UserMenuResourceTreeDTO> menuRes = menuResourceMap.get(0L);
|
|
List<UserMenuResourceTreeDTO> menuRes = menuResourceMap.get(0L);
|
|
|
|
+ UserMenuResourceTreeDTO tempSoftware = new UserMenuResourceTreeDTO();
|
|
|
|
+ tempSoftware.setSoftwareId(softwareId);
|
|
for (UserMenuResourceTreeDTO bean : menuRes) {
|
|
for (UserMenuResourceTreeDTO bean : menuRes) {
|
|
|
|
+ tempSoftware.setSoftwareName(bean.getSoftwareName());
|
|
getSonMenu(bean, menuResourceMap);
|
|
getSonMenu(bean, menuResourceMap);
|
|
}
|
|
}
|
|
- resUserMenuResourceTree.put(softwareId, menuRes);
|
|
|
|
|
|
+ tempSoftware.setChildren(menuRes);
|
|
|
|
+ resUserMenuResourceTree.add(tempSoftware);
|
|
});
|
|
});
|
|
}
|
|
}
|
|
return resUserMenuResourceTree;
|
|
return resUserMenuResourceTree;
|