From 40fe2c18b8f11487d38069757545e4720b2cd9bf Mon Sep 17 00:00:00 2001 From: wxz Date: Wed, 30 Jun 2021 17:45:02 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=EF=BC=9A=E7=BB=99=E6=89=80?= =?UTF-8?q?=E6=9C=89=E5=AE=A2=E6=88=B7=E7=9A=84=E6=9F=90=E8=A7=92=E8=89=B2?= =?UTF-8?q?=E5=88=86=E9=85=8D=E6=9D=83=E9=99=90=EF=BC=8Ccustomerid?= =?UTF-8?q?=E5=A1=AB=E5=85=85=E4=B8=BA=E6=93=8D=E4=BD=9C=E4=BA=BA=E7=9A=84?= =?UTF-8?q?customerid=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../handler/FieldMetaObjectHandler.java | 14 ++++++++--- .../service/impl/AccessConfigServiceImpl.java | 23 +++++++++++-------- .../main/resources/mapper/GovStaffRoleDao.xml | 2 +- 3 files changed, 25 insertions(+), 14 deletions(-) diff --git a/epmet-commons/epmet-commons-mybatis/src/main/java/com/epmet/commons/mybatis/handler/FieldMetaObjectHandler.java b/epmet-commons/epmet-commons-mybatis/src/main/java/com/epmet/commons/mybatis/handler/FieldMetaObjectHandler.java index f0afe84833..616d1b10c5 100644 --- a/epmet-commons/epmet-commons-mybatis/src/main/java/com/epmet/commons/mybatis/handler/FieldMetaObjectHandler.java +++ b/epmet-commons/epmet-commons-mybatis/src/main/java/com/epmet/commons/mybatis/handler/FieldMetaObjectHandler.java @@ -97,10 +97,18 @@ public class FieldMetaObjectHandler implements MetaObjectHandler { } public Object getCustomerIdByFieldValue(MetaObject metaObject) { - if (metaObject.hasSetter(FieldConstant.CUSTOMER_ID_HUMP)) { - return loginUserUtil.getLoginUserCustomerId(); + if (!metaObject.hasSetter(FieldConstant.CUSTOMER_ID_HUMP)) { + // 如果该entity对象,没有customerId属性,那么返回null; + return null; } - return null; + + Object customerId; + customerId = getFieldValByName(FieldConstant.CUSTOMER_ID_HUMP, metaObject); + if (customerId != null) { + // 看entity是否手动设置了,设置了就用设置的 + return customerId; + } + return loginUserUtil.getLoginUserCustomerId(); } public Object getCreatedTimeByFieldValue(MetaObject metaObject) { diff --git a/epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/service/impl/AccessConfigServiceImpl.java b/epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/service/impl/AccessConfigServiceImpl.java index ab5ef83012..f08125f674 100644 --- a/epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/service/impl/AccessConfigServiceImpl.java +++ b/epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/service/impl/AccessConfigServiceImpl.java @@ -213,6 +213,7 @@ public class AccessConfigServiceImpl implements AccessConfigService { */ @Override public void addOpeAndScopes4Role(String roleKey, String operationKey, List scopeKeys) { + // 所有客户下该角色的列表 Result> rolesResult = epmetUserOpenFeignClient.listRolesByRoleKey(roleKey); if (!rolesResult.success()) { String msg = "调用user服务,根据key查询角色列表失败"; @@ -220,39 +221,41 @@ public class AccessConfigServiceImpl implements AccessConfigService { RenException.MessageMode.CODE_INTERNAL_EXTERNAL.CODE_INTERNAL_EXTERNAL); } - List roles = rolesResult.getData(); - List roleIds2Add = roles.stream().map(GovStaffRoleResultDTO::getRoleId).collect(Collectors.toList()); - addOpeAndScopes4Role(roleIds2Add, operationKey, scopeKeys); + List rolesOfAllCustomer = rolesResult.getData(); + addOpeAndScopes4Role(rolesOfAllCustomer, operationKey, scopeKeys); } /** * @Description 将默认的角色操作和范围同步给具体的角色 + * @param rolesOfAllCustomer 所有客户的该角色的列表 * @return * @author wxz * @date 2020.11.17 17:38 */ @Transactional(rollbackFor = Exception.class) - public void addOpeAndScopes4Role(List roleIds, String operationKey, List scopeKeys) { - for (String roleId : roleIds) { + public void addOpeAndScopes4Role(List rolesOfAllCustomer, String operationKey, List scopeKeys) { + for (GovStaffRoleResultDTO role : rolesOfAllCustomer) { // 只给没有添加该权限的用户赋予该权限,已经添加了和添加了又取消的不操作 - RoleOperationEntity roleOpe = roleOperationDao.getRoleOpe(roleId, operationKey); + RoleOperationEntity roleOpe = roleOperationDao.getRoleOpe(role.getRoleId(), operationKey); boolean needRefreshCache = false; if (roleOpe == null) { // 没有该操作,则添加 RoleOperationEntity roleOperation = new RoleOperationEntity(); roleOperation.setOperationKey(operationKey); - roleOperation.setRoleId(roleId); + roleOperation.setRoleId(role.getRoleId()); + roleOperation.setCustomerId(role.getCustomerId()); roleOperationDao.insert(roleOperation); needRefreshCache = true; } for (String scopeKey : scopeKeys) { // 没有的话则添加 - RoleScopeEntity roleScopeInDb = roleScopeDao.getByRoleIdAndOpeKey(roleId, operationKey, scopeKey); + RoleScopeEntity roleScopeInDb = roleScopeDao.getByRoleIdAndOpeKey(role.getRoleId(), operationKey, scopeKey); if (roleScopeInDb == null) { RoleScopeEntity roleScopeEntity = new RoleScopeEntity(); roleScopeEntity.setOperationKey(operationKey); - roleScopeEntity.setRoleId(roleId); + roleScopeEntity.setRoleId(role.getRoleId()); roleScopeEntity.setScopeKey(scopeKey); + roleScopeEntity.setCustomerId(role.getCustomerId()); roleScopeDao.insert(roleScopeEntity); needRefreshCache = true; } @@ -260,7 +263,7 @@ public class AccessConfigServiceImpl implements AccessConfigService { // 清空角色的权限缓存 if (needRefreshCache) { - roleOpeScopeRedis.delRoleAllOpeScopes(roleId); + roleOpeScopeRedis.delRoleAllOpeScopes(role.getRoleId()); } } } diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/GovStaffRoleDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/GovStaffRoleDao.xml index be9203602e..17f537f182 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/GovStaffRoleDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/GovStaffRoleDao.xml @@ -104,7 +104,7 @@ ) - +