diff --git a/epmet-auth/deploy/docker-compose-dev.yml b/epmet-auth/deploy/docker-compose-dev.yml index e7908c2727..fdd7ad8257 100644 --- a/epmet-auth/deploy/docker-compose-dev.yml +++ b/epmet-auth/deploy/docker-compose-dev.yml @@ -2,7 +2,7 @@ version: "3.7" services: epmet-auth-server: container_name: epmet-auth-server-dev - image: 192.168.1.130:10080/epmet-cloud-dev/epmet-auth:0.3.16 + image: 192.168.1.130:10080/epmet-cloud-dev/epmet-auth:0.3.17 ports: - "8081:8081" network_mode: host # 使用现有网络 diff --git a/epmet-auth/pom.xml b/epmet-auth/pom.xml index cdfd640802..8c14c27e99 100644 --- a/epmet-auth/pom.xml +++ b/epmet-auth/pom.xml @@ -2,7 +2,7 @@ 4.0.0 - 0.3.16 + 0.3.17 com.epmet epmet-cloud 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 ce23ed85fb..313c3b3bde 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; @@ -175,7 +176,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())); @@ -189,13 +190,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; } @@ -352,7 +354,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/deploy/docker-compose-dev.yml b/epmet-module/gov-access/gov-access-server/deploy/docker-compose-dev.yml index 98fcc5b789..3420ba8696 100644 --- a/epmet-module/gov-access/gov-access-server/deploy/docker-compose-dev.yml +++ b/epmet-module/gov-access/gov-access-server/deploy/docker-compose-dev.yml @@ -2,7 +2,7 @@ version: "3.7" services: gov-access-server: container_name: gov-access-server-dev - image: 192.168.1.130:10080/epmet-cloud-dev/gov-access-server:0.3.23 + image: 192.168.1.130:10080/epmet-cloud-dev/gov-access-server:0.3.25 ports: - "8099:8099" network_mode: host # 使用现有网络 diff --git a/epmet-module/gov-access/gov-access-server/pom.xml b/epmet-module/gov-access/gov-access-server/pom.xml index dc31ec04ae..fbb7348343 100644 --- a/epmet-module/gov-access/gov-access-server/pom.xml +++ b/epmet-module/gov-access/gov-access-server/pom.xml @@ -2,7 +2,7 @@ - 0.3.23 + 0.3.25 gov-access com.epmet 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 96b996ddd2..6fa5770d0e 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(); } @@ -235,12 +236,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())) { @@ -441,7 +442,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); @@ -450,9 +451,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-module/gov-org/gov-org-server/src/main/java/com/epmet/redis/CustomerAgencyRedis.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/redis/CustomerAgencyRedis.java index 0c2ed5e9aa..80cc342c73 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/redis/CustomerAgencyRedis.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/redis/CustomerAgencyRedis.java @@ -42,6 +42,11 @@ public class CustomerAgencyRedis { } + public void delete(String agencyId) { + String key = RedisKeys.getAgencyByIdKey(agencyId); + redisUtils.delete(key); + } + public void set(String agencyId, CustomerAgencyDTO value){ String key = RedisKeys.getAgencyByIdKey(agencyId); Map map = BeanUtil.beanToMap(value, false, true); diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/AgencyServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/AgencyServiceImpl.java index 37439b5275..498aa11b62 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/AgencyServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/AgencyServiceImpl.java @@ -151,6 +151,9 @@ public class AgencyServiceImpl implements AgencyService { log.error(CustomerAgencyConstant.UPDATE_EXCEPTION); throw new RenException(CustomerAgencyConstant.UPDATE_EXCEPTION); } + + //5.redis缓存 + customerAgencyRedis.delete(formDTO.getAgencyId()); return result; } diff --git a/epmet-user/epmet-user-server/deploy/docker-compose-dev.yml b/epmet-user/epmet-user-server/deploy/docker-compose-dev.yml index 6d258a8771..c72b2beb8b 100644 --- a/epmet-user/epmet-user-server/deploy/docker-compose-dev.yml +++ b/epmet-user/epmet-user-server/deploy/docker-compose-dev.yml @@ -2,7 +2,7 @@ version: "3.7" services: epmet-user-server: container_name: epmet-user-server-dev - image: 192.168.1.130:10080/epmet-cloud-dev/epmet-user-server:0.3.55 + image: 192.168.1.130:10080/epmet-cloud-dev/epmet-user-server:0.3.56 ports: - "8087:8087" network_mode: host # 不会创建新的网络 diff --git a/epmet-user/epmet-user-server/pom.xml b/epmet-user/epmet-user-server/pom.xml index 482d837c19..9783d710cc 100644 --- a/epmet-user/epmet-user-server/pom.xml +++ b/epmet-user/epmet-user-server/pom.xml @@ -2,7 +2,7 @@ 4.0.0 - 0.3.55 + 0.3.56 com.epmet epmet-user 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;