diff --git a/epmet-auth/src/main/java/com/epmet/service/impl/GovLoginServiceImpl.java b/epmet-auth/src/main/java/com/epmet/service/impl/GovLoginServiceImpl.java index 42c52ff600..8626ef3f13 100644 --- a/epmet-auth/src/main/java/com/epmet/service/impl/GovLoginServiceImpl.java +++ b/epmet-auth/src/main/java/com/epmet/service/impl/GovLoginServiceImpl.java @@ -8,6 +8,7 @@ import com.epmet.commons.tools.exception.ExceptionUtils; import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.security.dto.GovTokenDto; import com.epmet.commons.tools.security.dto.TokenDto; +import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.CpUserDetailRedis; import com.epmet.commons.tools.utils.DateUtils; import com.epmet.commons.tools.utils.Result; @@ -178,7 +179,7 @@ public class GovLoginServiceImpl implements GovLoginService { govTokenDto.setGridIdList(getGridIdList(staffLatestAgency.getStaffId())); CustomerAgencyDTO agency = getAgencyByStaffId(staffLatestAgency.getStaffId()); if (agency != null) { - govTokenDto.setRoleIdList(queryGovStaffRoleIds(staffLatestAgency.getStaffId(), agency.getId())); + govTokenDto.setRoleList(queryGovStaffRoles(staffLatestAgency.getStaffId(), agency.getId())); } govTokenDto.setOrgIdPath(getOrgIdPath(staffLatestAgency.getStaffId())); @@ -192,13 +193,14 @@ public class GovLoginServiceImpl implements GovLoginService { * @param orgId * @return */ - public Set queryGovStaffRoleIds(String staffId, String orgId) { + public List queryGovStaffRoles(String staffId, String orgId) { StaffRoleFormDTO formDTO = new StaffRoleFormDTO(); formDTO.setStaffId(staffId); formDTO.setOrgId(orgId); Result> gridResult = epmetUserFeignClient.getRolesOfStaff(formDTO); if (!CollectionUtils.isEmpty(gridResult.getData())) { - return gridResult.getData().stream().map(role -> role.getId()).collect(Collectors.toSet()); + //return gridResult.getData().stream().map(role -> role.getId()).collect(Collectors.toSet()); + return ConvertUtils.sourceToTarget(gridResult.getData(), GovTokenDto.Role.class); } return null; } @@ -355,7 +357,7 @@ public class GovLoginServiceImpl implements GovLoginService { govTokenDto.setGridIdList(getGridIdList(staffId)); CustomerAgencyDTO agency = getAgencyByStaffId(staffId); if (agency != null) { - govTokenDto.setRoleIdList(queryGovStaffRoleIds(staffId, agency.getId())); + govTokenDto.setRoleList(queryGovStaffRoles(staffId, agency.getId())); } govTokenDto.setOrgIdPath(getOrgIdPath(staffId)); diff --git a/epmet-auth/src/test/java/com/epmet/TokenGenTest.java b/epmet-auth/src/test/java/com/epmet/TokenGenTest.java index e337632663..578e7a6652 100644 --- a/epmet-auth/src/test/java/com/epmet/TokenGenTest.java +++ b/epmet-auth/src/test/java/com/epmet/TokenGenTest.java @@ -78,7 +78,7 @@ public class TokenGenTest { govTokenDto.setGridIdList(govLoginService.getGridIdList(staffId)); CustomerAgencyDTO agency = govLoginService.getAgencyByStaffId(staffId); if (agency != null) { - govTokenDto.setRoleIdList(govLoginService.queryGovStaffRoleIds(staffId, agency.getId())); + govTokenDto.setRoleList(govLoginService.queryGovStaffRoles(staffId, agency.getId())); } govTokenDto.setOrgIdPath(govLoginService.getOrgIdPath(staffId)); diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/security/dto/GovTokenDto.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/security/dto/GovTokenDto.java index 1025d173a4..8bd8d5719f 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/security/dto/GovTokenDto.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/security/dto/GovTokenDto.java @@ -4,6 +4,8 @@ import com.alibaba.fastjson.JSON; import lombok.Data; import java.io.Serializable; +import java.util.Comparator; +import java.util.List; import java.util.Set; /** @@ -77,7 +79,18 @@ public class GovTokenDto extends BaseTokenDto implements Serializable { /** * 角色ID列表 */ - private Set roleIdList; + private List roleList; + + @Data + public static class Role { + + private String id; + private String roleKey; + private String roleName; + + public Role() { + } + } @Override public String toString() { diff --git a/epmet-module/gov-access/gov-access-client/src/main/java/com/epmet/dto/result/LoginUserDetailsResultDTO.java b/epmet-module/gov-access/gov-access-client/src/main/java/com/epmet/dto/result/LoginUserDetailsResultDTO.java index aba19d20a8..2a14ada3fd 100644 --- a/epmet-module/gov-access/gov-access-client/src/main/java/com/epmet/dto/result/LoginUserDetailsResultDTO.java +++ b/epmet-module/gov-access/gov-access-client/src/main/java/com/epmet/dto/result/LoginUserDetailsResultDTO.java @@ -1,7 +1,9 @@ package com.epmet.dto.result; +import com.epmet.commons.tools.security.dto.GovTokenDto; import lombok.Data; +import java.util.List; import java.util.Set; @Data @@ -25,7 +27,8 @@ public class LoginUserDetailsResultDTO { /** * 角色列表 */ - private Set roleIdList; + //private Set roleIdList; + private List roleList; /** * 部门id列表 diff --git a/epmet-module/gov-access/gov-access-client/src/main/java/com/epmet/dto/feign/GovAccessFeignClient.java b/epmet-module/gov-access/gov-access-client/src/main/java/com/epmet/feign/GovAccessFeignClient.java similarity index 88% rename from epmet-module/gov-access/gov-access-client/src/main/java/com/epmet/dto/feign/GovAccessFeignClient.java rename to epmet-module/gov-access/gov-access-client/src/main/java/com/epmet/feign/GovAccessFeignClient.java index b30419dd56..c419c8a257 100644 --- a/epmet-module/gov-access/gov-access-client/src/main/java/com/epmet/dto/feign/GovAccessFeignClient.java +++ b/epmet-module/gov-access/gov-access-client/src/main/java/com/epmet/feign/GovAccessFeignClient.java @@ -1,9 +1,9 @@ -package com.epmet.dto.feign; +package com.epmet.feign; import com.epmet.commons.tools.constant.ServiceConstant; import com.epmet.commons.tools.utils.Result; -import com.epmet.dto.feign.fallback.GovAccessFeignClientFallBack; import com.epmet.dto.form.InitDefaultOperationsFormDTO; +import com.epmet.feign.fallback.GovAccessFeignClientFallBack; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; diff --git a/epmet-module/gov-access/gov-access-client/src/main/java/com/epmet/dto/feign/fallback/GovAccessFeignClientFallBack.java b/epmet-module/gov-access/gov-access-client/src/main/java/com/epmet/feign/fallback/GovAccessFeignClientFallBack.java similarity index 87% rename from epmet-module/gov-access/gov-access-client/src/main/java/com/epmet/dto/feign/fallback/GovAccessFeignClientFallBack.java rename to epmet-module/gov-access/gov-access-client/src/main/java/com/epmet/feign/fallback/GovAccessFeignClientFallBack.java index d75b4c8946..ba938ec2a8 100644 --- a/epmet-module/gov-access/gov-access-client/src/main/java/com/epmet/dto/feign/fallback/GovAccessFeignClientFallBack.java +++ b/epmet-module/gov-access/gov-access-client/src/main/java/com/epmet/feign/fallback/GovAccessFeignClientFallBack.java @@ -1,10 +1,10 @@ -package com.epmet.dto.feign.fallback; +package com.epmet.feign.fallback; import com.epmet.commons.tools.constant.ServiceConstant; import com.epmet.commons.tools.utils.ModuleUtils; import com.epmet.commons.tools.utils.Result; -import com.epmet.dto.feign.GovAccessFeignClient; import com.epmet.dto.form.InitDefaultOperationsFormDTO; +import com.epmet.feign.GovAccessFeignClient; import org.springframework.stereotype.Component; /** diff --git a/epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/service/impl/AccessServiceImpl.java b/epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/service/impl/AccessServiceImpl.java index 3b3707d27e..cc723cca1f 100644 --- a/epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/service/impl/AccessServiceImpl.java +++ b/epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/service/impl/AccessServiceImpl.java @@ -5,6 +5,7 @@ import com.epmet.bean.OpeScopeFilterResultBean; import com.epmet.commons.tools.constant.AppClientConstant; import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.RenException; +import com.epmet.commons.tools.security.dto.GovTokenDto; import com.epmet.commons.tools.security.user.LoginUserUtil; import com.epmet.commons.tools.utils.CpUserDetailRedis; import com.epmet.commons.tools.utils.Result; @@ -89,15 +90,15 @@ public class AccessServiceImpl implements AccessService { if (userDetails == null) { return false; } - Set roleIdList = userDetails.getRoleIdList(); - if (CollectionUtils.isEmpty(roleIdList)) { + List roleList = userDetails.getRoleList(); + if (CollectionUtils.isEmpty(roleList)) { return false; } final Set operationKeys = new HashSet<>(); - roleIdList.stream().forEach(roleId -> { - List opeAndScopes = listAllRoleOperationScopesByRoleId(roleId); + roleList.stream().forEach(role -> { + List opeAndScopes = listAllRoleOperationScopesByRoleId(role.getId()); operationKeys.addAll(opeAndScopes.stream().map(opeAndScope -> opeAndScope.getOperationKey()).collect(Collectors.toSet())); }); @@ -118,12 +119,12 @@ public class AccessServiceImpl implements AccessService { StringBuilder sb = new StringBuilder(); - if (CollectionUtils.isEmpty(userDetails.getRoleIdList())) { + if (CollectionUtils.isEmpty(userDetails.getRoleList())) { //logger.warn("用户{}没有配置任何角色,无法执行{}操作", form.getUserId(), form.getOperationKey()); throw new RenException(String.format("用户%s没有配置任何角色,无法执行%s操作", form.getUserId(), form.getOperationKey())); } - OpeScopeFilterResultBean effectiveOpeScopes = getEffectiveOpeScopes(userDetails.getRoleIdList(), form.getOperationKey()); + OpeScopeFilterResultBean effectiveOpeScopes = getEffectiveOpeScopes(userDetails.getRoleList(), form.getOperationKey()); if (effectiveOpeScopes.isAllScopes()) { return sb.toString(); } @@ -249,12 +250,12 @@ public class AccessServiceImpl implements AccessService { /** * 计算有效操作范围 */ - public OpeScopeFilterResultBean getEffectiveOpeScopes(Set roleIds, String reqiurePermission) { + public OpeScopeFilterResultBean getEffectiveOpeScopes(List roles, String reqiurePermission) { // 根据角色列表查询操作范围列表 Set opeAndScopesOfThisOperation = new HashSet<>(); - roleIds.forEach(roleId -> { - List opes = listAllRoleOperationScopesByRoleId(roleId); + roles.forEach(role -> { + List opes = listAllRoleOperationScopesByRoleId(role.getId()); if (!CollectionUtils.isEmpty(opes)) { opes.forEach(ope -> { if (reqiurePermission.equals(ope.getOperationKey())) { @@ -455,7 +456,7 @@ public class AccessServiceImpl implements AccessService { // 获取机关单位中的角色 // 目前一个人只在一个单位下,所以不动态查询,如果后面需要一个人在多个单位,再改这里 //List roleDTOS = queryGovStaffRoles(staffId, belongAgency.getId()); - Set roleIdList = userDetails.getRoleIdList(); + List roleList = userDetails.getRoleList(); // 当前组织和所属组织的orgId路径,以及他们的上下级关系 String belongOrgIdPath = getOrgIdPath(belongAgency); @@ -464,9 +465,9 @@ public class AccessServiceImpl implements AccessService { Set filtedOps = new HashSet<>(); - if (!CollectionUtils.isEmpty(roleIdList)) { - roleIdList.forEach(roleId -> { - List opeAndScopeDTO = listAllRoleOperationScopesByRoleId(roleId); + if (!CollectionUtils.isEmpty(roleList)) { + roleList.forEach(role -> { + List opeAndScopeDTO = listAllRoleOperationScopesByRoleId(role.getId()); filtedOps.addAll(filterOpesByScope(currOrgRelation, opeAndScopeDTO)); }); } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/GovStaffRoleServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/GovStaffRoleServiceImpl.java index 20a8a344a7..fb922499b5 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/GovStaffRoleServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/GovStaffRoleServiceImpl.java @@ -28,10 +28,10 @@ import com.epmet.commons.tools.utils.Result; import com.epmet.dao.GovStaffRoleDao; import com.epmet.dao.GovStaffRoleTemplateDao; import com.epmet.dto.GovStaffRoleDTO; -import com.epmet.dto.feign.GovAccessFeignClient; import com.epmet.dto.form.InitDefaultOperationsFormDTO; import com.epmet.dto.result.GovStaffRoleTemplateDTO; import com.epmet.entity.GovStaffRoleEntity; +import com.epmet.feign.GovAccessFeignClient; import com.epmet.redis.GovStaffRoleRedis; import com.epmet.service.GovStaffRoleService; import org.apache.commons.lang3.StringUtils;