From 82bf4a3af6543a4611231d942ad806d9d77ca6cc Mon Sep 17 00:00:00 2001 From: wxz Date: Thu, 4 Jun 2020 09:42:43 +0800 Subject: [PATCH 1/3] =?UTF-8?q?1.=E7=BC=96=E8=BE=91=E6=9C=BA=E5=85=B3?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=EF=BC=8C=E5=A2=9E=E5=8A=A0redis=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E7=BC=93=E5=AD=98=E6=93=8D=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/epmet/redis/CustomerAgencyRedis.java | 5 +++++ .../main/java/com/epmet/service/impl/AgencyServiceImpl.java | 3 +++ 2 files changed, 8 insertions(+) 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; } From 29484abb067c20297cb7312eee8e4f2c4816ac28 Mon Sep 17 00:00:00 2001 From: wxz Date: Thu, 4 Jun 2020 10:46:59 +0800 Subject: [PATCH 2/3] =?UTF-8?q?1.govTokenDto=E4=B8=AD=E8=A7=92=E8=89=B2id?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E6=94=B9=E4=B8=BA=E8=A7=92=E8=89=B2=E7=AE=80?= =?UTF-8?q?=E8=A6=81=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/GovLoginServiceImpl.java | 10 ++++--- .../src/test/java/com/epmet/TokenGenTest.java | 2 +- .../tools/security/dto/GovTokenDto.java | 15 ++++++++++- .../dto/result/LoginUserDetailsResultDTO.java | 5 +++- .../{dto => }/feign/GovAccessFeignClient.java | 4 +-- .../GovAccessFeignClientFallBack.java | 4 +-- .../epmet/service/impl/AccessServiceImpl.java | 27 ++++++++++--------- .../service/impl/GovStaffRoleServiceImpl.java | 2 +- 8 files changed, 44 insertions(+), 25 deletions(-) rename epmet-module/gov-access/gov-access-client/src/main/java/com/epmet/{dto => }/feign/GovAccessFeignClient.java (88%) rename epmet-module/gov-access/gov-access-client/src/main/java/com/epmet/{dto => }/feign/fallback/GovAccessFeignClientFallBack.java (87%) 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; From 15c7820dc5aa98e3f5b3a99ad2da5cbe22174923 Mon Sep 17 00:00:00 2001 From: wxz Date: Thu, 4 Jun 2020 13:28:59 +0800 Subject: [PATCH 3/3] =?UTF-8?q?1.=E7=89=88=E6=9C=AC=E5=8D=87=E7=BA=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- epmet-auth/deploy/docker-compose-dev.yml | 2 +- epmet-auth/pom.xml | 2 +- .../gov-access/gov-access-server/deploy/docker-compose-dev.yml | 2 +- epmet-module/gov-access/gov-access-server/pom.xml | 2 +- epmet-user/epmet-user-server/deploy/docker-compose-dev.yml | 2 +- epmet-user/epmet-user-server/pom.xml | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) 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-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 7e11946c13..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.24 + 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 04569c156b..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.24 + 0.3.25 gov-access com.epmet 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