Browse Source

Merge remote-tracking branch 'origin/dev_govorg' into dev_govorg

# Conflicts:
#	epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/feign/EpmetUserFeignClient.java
#	epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/feign/fallback/EpmetUserFeignClientFallBack.java
#	epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/DepartmentService.java
#	epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/DepartmentServiceImpl.java
#	epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerGridDao.xml
#	epmet-user/epmet-user-server/src/main/java/com/epmet/controller/CustomerStaffController.java
#	epmet-user/epmet-user-server/src/main/java/com/epmet/dao/CustomerStaffDao.java
#	epmet-user/epmet-user-server/src/main/java/com/epmet/service/CustomerStaffService.java
#	epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/CustomerStaffServiceImpl.java
#	epmet-user/epmet-user-server/src/main/resources/mapper/CustomerStaffDao.xml
dev_shibei_match
wangchao 6 years ago
parent
commit
225058e2a0
  1. 291
      epmet-commons/epmet-commons-mybatis/src/main/java/com/epmet/commons/mybatis/aspect/DataFilterAspect.java
  2. 17
      epmet-commons/epmet-commons-mybatis/src/main/java/com/epmet/commons/mybatis/constant/OpeScopeConstant.java
  3. 92
      epmet-commons/epmet-commons-mybatis/src/main/java/com/epmet/commons/mybatis/dto/form/OperationScopeDTO.java
  4. 18
      epmet-commons/epmet-commons-mybatis/src/main/java/com/epmet/commons/mybatis/dto/form/OperationScopeFormDTO.java
  5. 30
      epmet-commons/epmet-commons-mybatis/src/main/java/com/epmet/commons/mybatis/dto/form/StaffPermCacheResultDTO.java
  6. 17
      epmet-commons/epmet-commons-mybatis/src/main/java/com/epmet/commons/mybatis/feign/GovAccessFeignClient.java
  7. 10
      epmet-commons/epmet-commons-mybatis/src/main/java/com/epmet/commons/mybatis/feign/fallback/GovAccessFeignClientFallback.java
  8. 22
      epmet-commons/epmet-commons-mybatis/src/main/java/com/epmet/commons/mybatis/interceptor/DataFilterInterceptor.java
  9. 2
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/aspect/AccessOpeAspect.java
  10. 6
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java
  11. 10
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisKeys.java
  12. 23
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/security/dto/GovTokenDto.java
  13. 81
      epmet-module/gov-access/gov-access-client/src/main/java/com/epmet/dto/OperationScopeDTO.java
  14. 86
      epmet-module/gov-access/gov-access-client/src/main/java/com/epmet/dto/RoleScopeDTO.java
  15. 18
      epmet-module/gov-access/gov-access-client/src/main/java/com/epmet/dto/form/OperationScopeFormDTO.java
  16. 10
      epmet-module/gov-access/gov-access-client/src/main/java/com/epmet/dto/form/StaffPermCacheFormDTO.java
  17. 28
      epmet-module/gov-access/gov-access-client/src/main/java/com/epmet/dto/result/RoleOpeScopeResultDTO.java
  18. 31
      epmet-module/gov-access/gov-access-client/src/main/java/com/epmet/dto/result/StaffPermCacheResultDTO.java
  19. 43
      epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/controller/AccessController.java
  20. 47
      epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/dao/OperationScopeDao.java
  21. 32
      epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/dao/RoleScopeDao.java
  22. 51
      epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/entity/OperationScopeEntity.java
  23. 56
      epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/entity/RoleScopeEntity.java
  24. 43
      epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/redis/RoleOpeScopeRedis.java
  25. 17
      epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/service/AccessService.java
  26. 95
      epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/service/OperationScopeService.java
  27. 95
      epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/service/RoleScopeService.java
  28. 43
      epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/service/impl/AccessServiceImpl.java
  29. 101
      epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/service/impl/OperationScopeServiceImpl.java
  30. 4
      epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/service/impl/RoleOperationServiceImpl.java
  31. 100
      epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/service/impl/RoleScopeServiceImpl.java
  32. 4
      epmet-module/gov-access/gov-access-server/src/main/resources/db.migration/epmet_gov_access.sql
  33. 29
      epmet-module/gov-access/gov-access-server/src/main/resources/mapper/OperationScopeDao.xml
  34. 20
      epmet-module/gov-access/gov-access-server/src/main/resources/mapper/RoleScopeDao.xml
  35. 2
      epmet-module/gov-mine/gov-mine-server/src/main/java/com/epmet/controller/AccessController.java
  36. 2
      epmet-module/gov-mine/gov-mine-server/src/main/java/com/epmet/feign/GovAccessFeignClient.java
  37. 8
      epmet-module/gov-mine/gov-mine-server/src/main/java/com/epmet/feign/GovOrgFeignClient.java
  38. 6
      epmet-module/gov-mine/gov-mine-server/src/main/java/com/epmet/feign/fallback/GovOrgFeignClientFallBack.java
  39. 47
      epmet-module/gov-mine/gov-mine-server/src/main/java/com/epmet/service/impl/AccessServiceImpl.java
  40. 2
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/CustomerAgencyDTO.java
  41. 27
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/CustomerIdDTO.java
  42. 19
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/AddAgencyFormDTO.java
  43. 22
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/AddDepartmentFormDTO.java
  44. 31
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/AddDepartmentStaffFormDTO.java
  45. 5
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/EditGridFormDTO.java
  46. 4
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/StaffSubmitFromDTO.java
  47. 46
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/AgencyController.java
  48. 28
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/DepartmentController.java
  49. 11
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerGridDao.java
  50. 14
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerStaffDepartmentDao.java
  51. 2
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/CustomerAgencyEntity.java
  52. 2
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/CustomerAgencyExcel.java
  53. 36
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/feign/EpmetUserFeignClient.java
  54. 21
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/feign/fallback/EpmetUserFeignClientFallBack.java
  55. 8
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/AgencyService.java
  56. 9
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/DepartmentService.java
  57. 28
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/AgencyServiceImpl.java
  58. 16
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerGridServiceImpl.java
  59. 29
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/DepartmentServiceImpl.java
  60. 56
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/StaffServiceImpl.java
  61. 4
      epmet-module/gov-org/gov-org-server/src/main/resources/db/migration/epmet_gov_org.sql
  62. 4
      epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerAgencyDao.xml
  63. 35
      epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerDepartmentDao.xml
  64. 12
      epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerGridDao.xml
  65. 24
      epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerStaffDepartmentDao.xml
  66. 2
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/GovStaffRoleDTO.java
  67. 27
      epmet-user/epmet-user-server/src/main/java/com/epmet/controller/CustomerStaffController.java
  68. 4
      epmet-user/epmet-user-server/src/main/java/com/epmet/controller/StaffRoleController.java
  69. 14
      epmet-user/epmet-user-server/src/main/java/com/epmet/dao/CustomerStaffDao.java
  70. 13
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/CustomerStaffService.java
  71. 3
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/StaffRoleService.java
  72. 78
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/CustomerStaffServiceImpl.java
  73. 4
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/StaffRoleServiceImpl.java
  74. 6
      epmet-user/epmet-user-server/src/main/resources/db/migration/epmet_user.sql
  75. 61
      epmet-user/epmet-user-server/src/main/resources/mapper/CustomerStaffDao.xml

291
epmet-commons/epmet-commons-mybatis/src/main/java/com/epmet/commons/mybatis/aspect/DataFilterAspect.java

@ -1,19 +1,23 @@
/** /**
* Copyright (c) 2018 人人开源 All rights reserved. * Copyright (c) 2018 人人开源 All rights reserved.
* * <p>
* https://www.renren.io * https://www.renren.io
* * <p>
* 版权所有侵权必究 * 版权所有侵权必究
*/ */
package com.epmet.commons.mybatis.aspect; package com.epmet.commons.mybatis.aspect;
import com.epmet.commons.mybatis.annotation.DataFilter;
import com.epmet.commons.mybatis.constant.OpeScopeConstant;
import com.epmet.commons.mybatis.dto.form.OperationScopeDTO;
import com.epmet.commons.mybatis.dto.form.OperationScopeFormDTO;
import com.epmet.commons.mybatis.dto.form.StaffPermCacheResultDTO;
import com.epmet.commons.mybatis.dto.form.StaffPermissionFormDTO; import com.epmet.commons.mybatis.dto.form.StaffPermissionFormDTO;
import com.epmet.commons.mybatis.entity.DataScope; import com.epmet.commons.mybatis.entity.DataScope;
import com.epmet.commons.mybatis.feign.GovAccessFeignClient; import com.epmet.commons.mybatis.feign.GovAccessFeignClient;
import com.epmet.commons.tools.aspect.AccessOpeAspect; import com.epmet.commons.tools.aspect.AccessOpeAspect;
import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.ErrorCode;
import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.security.user.LoginUserUtil; import com.epmet.commons.tools.security.user.LoginUserUtil;
import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.utils.Result;
@ -21,15 +25,14 @@ import org.apache.commons.lang3.StringUtils;
import org.aspectj.lang.JoinPoint; import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before; import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.reflect.MethodSignature;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.util.Arrays; import java.util.*;
import java.util.List;
import java.util.Set;
/** /**
* 数据过滤切面处理类 * 数据过滤切面处理类
@ -49,31 +52,59 @@ public class DataFilterAspect {
@Autowired @Autowired
private GovAccessFeignClient govAccessFeignClient; private GovAccessFeignClient govAccessFeignClient;
public static final String orgIdPathSpliter = ":";
@Before("@annotation(com.epmet.commons.mybatis.annotation.DataFilter)") @Before("@annotation(com.epmet.commons.mybatis.annotation.DataFilter)")
public void dataFilter(JoinPoint point) { public void dataFilter(JoinPoint point) {
// 反射的方式 // 通过反射,取到注解属性
//MethodSignature signature = (MethodSignature) point.getSignature(); DataFilter dataFilterAnno = ((MethodSignature) point.getSignature()).getMethod().getAnnotation(DataFilter.class);
//Class[] parameterTypes = signature.getParameterTypes(); String tableAlias = dataFilterAnno.tableAlias();
//for (Class parameterType : parameterTypes) {
// if (parameterType == DataScope.class) { // 从ThreadLocal中取所需权限
// String requirePermission = AccessOpeAspect.requirePermissionTl.get();
// }
//}
String reqiurePermission = AccessOpeAspect.requirePermissionTl.get();
// 没有配置所需权限,不做操作,打印提示日志 // 没有配置所需权限,不做操作,打印提示日志
if (StringUtils.isBlank(reqiurePermission)) { if (StringUtils.isBlank(requirePermission)) {
log.warn("Api编码需要指定所需权限,请在Api上使用@RequirePermission注解完成所需权限配置"); log.warn("Api编码需要指定所需权限,请在Api上使用@RequirePermission注解完成所需权限配置");
return; return;
} }
String app = loginUserUtil.getLoginUserApp();
String client = loginUserUtil.getLoginUserClient();
String userId = loginUserUtil.getLoginUserId();
StaffPermissionFormDTO staffPermissionFormDTO = new StaffPermissionFormDTO();
staffPermissionFormDTO.setApp(app);
staffPermissionFormDTO.setClient(client);
staffPermissionFormDTO.setStaffId(userId);
Result<StaffPermCacheResultDTO> result = govAccessFeignClient.getStaffCurrPermissions(staffPermissionFormDTO);
if (result.getCode() != 0) {
// 查询不到权限,记录日志,抛出8000异常
log.error("调用Access查询权限失败:{}", result.getMsg());
throw new RenException(EpmetErrorCode.SERVER_ERROR.getCode());
}
StaffPermCacheResultDTO permCacheResultDTO = result.getData();
if (permCacheResultDTO == null || CollectionUtils.isEmpty(permCacheResultDTO.getPermissions())) {
log.error("操作权限不足,查询不到权限");
throw new RenException(EpmetErrorCode.REQUIRE_PERMISSION.getCode());
}
// 校验操作权限 // 校验操作权限
validateOpePermission(reqiurePermission); validateOpePermission(permCacheResultDTO.getPermissions(), requirePermission);
// 生成过滤sql
Object[] methodArgs = point.getArgs(); Object[] methodArgs = point.getArgs();
for (Object methodArg : methodArgs) { for (Object methodArg : methodArgs) {
if (methodArg instanceof DataScope) { if (methodArg instanceof DataScope) {
((DataScope) methodArg).setSqlFilter(getSqlFilterSegment()); ((DataScope) methodArg).setSqlFilter(getSqlFilterSegment(
userId,
permCacheResultDTO.getRoleIdList(),
requirePermission,
permCacheResultDTO.getOrgIdPath(),
permCacheResultDTO.getGridId(),
tableAlias));
return; return;
} }
} }
@ -84,38 +115,216 @@ public class DataFilterAspect {
/** /**
* 校验操作权限 * 校验操作权限
*/ */
private void validateOpePermission(String requirePermission) { private void validateOpePermission(Set<String> permissions, String reqiurePermission) {
StaffPermissionFormDTO staffPermissionFormDTO = new StaffPermissionFormDTO(); if (!permissions.contains(reqiurePermission)) {
staffPermissionFormDTO.setApp(loginUserUtil.getLoginUserApp()); // 权限不足
staffPermissionFormDTO.setClient(loginUserUtil.getLoginUserClient()); log.error("操作权限不足");
staffPermissionFormDTO.setStaffId(loginUserUtil.getLoginUserId()); throw new RenException(EpmetErrorCode.REQUIRE_PERMISSION.getCode());
Result<Set<String>> permissions = govAccessFeignClient.getStaffCurrPermissions(staffPermissionFormDTO);
if (permissions.getCode() != 0) {
// 查询不到权限,记录日志,抛出8000异常
log.error("调用Access查询权限失败:{}", permissions.getMsg());
throw new RenException(EpmetErrorCode.SERVER_ERROR.getCode());
} }
if (!CollectionUtils.isEmpty(permissions.getData()) && StringUtils.isNotBlank(requirePermission)
&& permissions.getData().contains(requirePermission)) {
// 权限允许,正常结束
return;
}
// 权限不足抛出异常
throw new RenException(EpmetErrorCode.REQUIRE_PERMISSION.getCode());
} }
/** /**
* 生成过滤sql片段 * 生成过滤sql片段
*
* @return * @return
*/ */
private String getSqlFilterSegment() { private String getSqlFilterSegment(String userId,Set<String> roleIds, String reqiurePermission, String orgIdPath, String gridId, String tableAlias) {
// 根据角色列表查询操作范围列表 // 根据角色列表查询操作范围列表
Set<OperationScopeDTO> scopeDTOS = new HashSet<>();
roleIds.forEach(roleId -> {
OperationScopeFormDTO osformDto = new OperationScopeFormDTO();
osformDto.setRoleId(roleId);
osformDto.setOperationKey(reqiurePermission);
Result<Set<OperationScopeDTO>> result = govAccessFeignClient.getOperationScopesByRoleId(osformDto);
if (result.success()) {
scopeDTOS.addAll(result.getData());
}
});
// 过滤范围
HashSet<String> scopes = filteScopes(scopeDTOS);
if (CollectionUtils.isEmpty(scopes)) {
// 没有范围限制
return "";
}
StringBuilder sb = new StringBuilder();
// 1.生成sql:组织范围过滤
genOrgScopeSql(sb, orgIdPath, scopes, tableAlias);
// 2.生成sql:我发起的
genIStartedSql(sb, userId, tableAlias);
// 3.生成sql:本网格的
genInGrid(sb, gridId, tableAlias);
//sb.append(")");
System.out.println("生成的过滤sql:" + sb.toString());
return sb.toString();
}
/**
* 网格sql
* @param sb
* @param gridId
* @param tableAlias
*/
private void genInGrid(StringBuilder sb, String gridId, String tableAlias) {
if (StringUtils.isBlank(tableAlias)) {
sb.append(" OR GRID_ID ='").append(gridId).append("'");
} else {
sb.append(" OR ").append(tableAlias).append(".GRID_ID ='").append(gridId).append("'");
}
}
/**
* sql我发起的
* @param userId
*/
private void genIStartedSql(StringBuilder sb, String userId, String tableAlias) {
if (StringUtils.isBlank(tableAlias)) {
sb.append(" OR CREATED_BY ='").append(userId).append("'");
} else {
sb.append(" OR ").append(tableAlias).append(".CREATED_BY ='").append(userId).append("'");
}
}
/**
* 计算组织范围过滤sql整体入口
* @param sb
* @param orgIdPath
* @param scopes
*/
public void genOrgScopeSql(StringBuilder sb, String orgIdPath, HashSet<String> scopes, String tableAlias) {
// 取出父组织ID path 和当前组织ID
String pOrgPath = orgIdPath.substring(0, orgIdPath.lastIndexOf(orgIdPathSpliter));
String currOrgPath = orgIdPath.substring(orgIdPath.lastIndexOf(orgIdPathSpliter) + 1);
genOrgScopeSql(sb, scopes, currOrgPath, pOrgPath, tableAlias);
sb.replace(sb.lastIndexOf("OR"), sb.lastIndexOf("OR") + 3, "");
}
/**
* 计算组织范围过滤sql
* @param scopes
* @param currOrg
* @param pOrgPath
* @return
*/
private void genOrgScopeSql(StringBuilder sb,HashSet<String> scopes, String currOrg, String pOrgPath, String tableAlias) {
for (String scope : scopes) {
switch (scope) {
case OpeScopeConstant.ORG_CURR:
if (StringUtils.isBlank(tableAlias)) {
sb.append(" ORG_ID = '").append(currOrg).append("' OR ");
} else {
sb.append(" ").append(tableAlias).append(".ORG_ID = '").append(currOrg).append("' OR ");
}
break;
case OpeScopeConstant.ORG_CURR_AND_SUB:
if (StringUtils.isBlank(tableAlias)) {
sb.append(" ORG_ID_PATH like '").append(pOrgPath).append("%' ").append(" OR ");
} else {
sb.append(" ").append(tableAlias).append(".ORG_ID_PATH like '").append(pOrgPath).append("%' ").append(" OR ");
}
break;
case OpeScopeConstant.ORG_CURR_SUB:
if (StringUtils.isBlank(tableAlias)) {
sb.append(" ORG_ID_PATH like '").append(pOrgPath).append(orgIdPathSpliter).append(currOrg).append("%' ").append(" OR ");
} else {
sb.append(" ").append(tableAlias).append(".ORG_ID_PATH like '").append(pOrgPath).append(orgIdPathSpliter).append(currOrg).append("%' ").append(" OR ");
}
break;
case OpeScopeConstant.ORG_EQUAL:
// todo 同级
//sb.append(" OR ");
break;
case OpeScopeConstant.ORG_EQUAL_AND_SUB:
// todo 同级及其子级
//sb.append(" OR ");
break;
case OpeScopeConstant.ORG_EQUAL_SUB:
// todo 同级的子级
//sb.append(" OR ");
break;
}
}
}
/**
* 过滤有效范围
*
* @param scopeDTOS
* @return
*/
private HashSet<String> filteScopes(Set<OperationScopeDTO> scopeDTOS) {
HashMap<String, OperationScopeDTO> filtedScopes = new HashMap<>();
for (OperationScopeDTO scope : scopeDTOS) {
String scopeIndex = scope.getScopeIndex();
String[] currArr = scopeIndex.split("_");
if ("0".equals(currArr[1])) {
// 为0,说明没有包含关系,直接放入
filtedScopes.put(scopeIndex, scope);
continue;
}
OperationScopeDTO tempScope = filtedScopes.get(currArr[0]);
if (tempScope != null) {
// 已经有ac开头的了
String tempScopeIndex = tempScope.getScopeIndex();
if (Integer.valueOf(currArr[1]) < Integer.valueOf(tempScopeIndex.split("_")[1])) {
filtedScopes.put(currArr[0], scope);
}
} else {
filtedScopes.put(currArr[0], scope);
}
}
HashSet<String> scopeStrs = new HashSet<>();
Set<Map.Entry<String, OperationScopeDTO>> entries = filtedScopes.entrySet();
for (Map.Entry<String, OperationScopeDTO> entry : entries) {
scopeStrs.add(entry.getValue().getScopeKey());
}
return scopeStrs;
}
/**
* 模拟范围数据
*
* @return
*/
private Set<OperationScopeDTO> genScopeDtos() {
OperationScopeDTO scopeDTO1 = new OperationScopeDTO();
scopeDTO1.setScopeKey("org_curr");
scopeDTO1.setScopeName("本机关");
scopeDTO1.setScopeIndex("ac_0");
OperationScopeDTO scopeDTO2 = new OperationScopeDTO();
scopeDTO2.setScopeKey("org_curr_and_sub");
scopeDTO2.setScopeName("本机关及下级");
scopeDTO2.setScopeIndex("ac_501");
OperationScopeDTO scopeDTO3 = new OperationScopeDTO();
scopeDTO3.setScopeKey("org_curr_sub");
scopeDTO3.setScopeName("本机关的下级");
scopeDTO3.setScopeIndex("ac_502");
OperationScopeDTO scopeDTO4 = new OperationScopeDTO();
scopeDTO4.setScopeKey("org_equal_and_sub");
scopeDTO4.setScopeName("同级机关及下级");
scopeDTO4.setScopeIndex("ae_601");
// 拼接sql语句 OperationScopeDTO scopeDTO5 = new OperationScopeDTO();
scopeDTO5.setScopeKey("org_equal_sub");
scopeDTO5.setScopeName("同级机关的下级");
scopeDTO5.setScopeIndex("ae_602");
// TODO Set<OperationScopeDTO> scopeDTOS = new HashSet<>();
return "dept_id in (1,2,3)"; scopeDTOS.add(scopeDTO1);
scopeDTOS.add(scopeDTO2);
scopeDTOS.add(scopeDTO3);
scopeDTOS.add(scopeDTO4);
scopeDTOS.add(scopeDTO5);
return scopeDTOS;
} }
///** ///**

17
epmet-commons/epmet-commons-mybatis/src/main/java/com/epmet/commons/mybatis/constant/OpeScopeConstant.java

@ -0,0 +1,17 @@
package com.epmet.commons.mybatis.constant;
public class OpeScopeConstant {
//"同级组织的下级"
public static final String ORG_EQUAL_SUB = "org_equal_sub";
//"同级组织及下级"
public static final String ORG_EQUAL_AND_SUB = "org_equal_and_sub";
//"同级组织"
public static final String ORG_EQUAL = "org_equal";
//"本组织的下级"
public static final String ORG_CURR_SUB = "org_curr_sub";
//"本组织及下级"
public static final String ORG_CURR_AND_SUB = "org_curr_and_sub";
//"本组织"
public static final String ORG_CURR = "org_curr";
}

92
epmet-commons/epmet-commons-mybatis/src/main/java/com/epmet/commons/mybatis/dto/form/OperationScopeDTO.java

@ -0,0 +1,92 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.commons.mybatis.dto.form;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* 权限范围表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2020-04-24
*/
@Data
public class OperationScopeDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* id
*/
private String id;
/**
* 角色id
*/
private String roleId;
/**
* 范围key
*/
private String scopeKey;
/**
* 范围名称
*/
private String scopeName;
/**
* 范围序号
*/
private String scopeIndex;
/**
* 是否删除0未删除1已删除
*/
private Integer delFlag;
/**
* 乐观锁
*/
private Integer revision;
/**
* 创建者id
*/
private String createdBy;
/**
* 创建时间
*/
private Date createdTime;
/**
* 更新者id
*/
private String updatedBy;
/**
* 更新时间
*/
private Date updatedTime;
}

18
epmet-commons/epmet-commons-mybatis/src/main/java/com/epmet/commons/mybatis/dto/form/OperationScopeFormDTO.java

@ -0,0 +1,18 @@
package com.epmet.commons.mybatis.dto.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
@Data
public class OperationScopeFormDTO {
public interface ListOperationScopeGroup {}
@NotBlank(message = "角色ID不能为空", groups = {ListOperationScopeGroup.class})
private String roleId;
@NotBlank(message = "操作的key不能为空", groups = {ListOperationScopeGroup.class})
private String operationKey;
}

30
epmet-commons/epmet-commons-mybatis/src/main/java/com/epmet/commons/mybatis/dto/form/StaffPermCacheResultDTO.java

@ -0,0 +1,30 @@
package com.epmet.commons.mybatis.dto.form;
import lombok.Data;
import java.util.Set;
@Data
public class StaffPermCacheResultDTO {
/**
* 权限列表
*/
private Set<String> permissions;
/**
* 角色列表
*/
private Set<String> roleIdList;
/**
* 机构Id
*/
private String orgIdPath;
/**
* 网格ID
*/
private String gridId;
}

17
epmet-commons/epmet-commons-mybatis/src/main/java/com/epmet/commons/mybatis/feign/GovAccessFeignClient.java

@ -1,12 +1,17 @@
package com.epmet.commons.mybatis.feign; package com.epmet.commons.mybatis.feign;
import com.epmet.commons.mybatis.dto.form.OperationScopeDTO;
import com.epmet.commons.mybatis.dto.form.OperationScopeFormDTO;
import com.epmet.commons.mybatis.dto.form.StaffPermCacheResultDTO;
import com.epmet.commons.mybatis.dto.form.StaffPermissionFormDTO; import com.epmet.commons.mybatis.dto.form.StaffPermissionFormDTO;
import com.epmet.commons.mybatis.feign.fallback.GovAccessFeignClientFallback; import com.epmet.commons.mybatis.feign.fallback.GovAccessFeignClientFallback;
import com.epmet.commons.tools.constant.ServiceConstant; import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.utils.Result;
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.List;
import java.util.Set; import java.util.Set;
/** /**
@ -17,10 +22,18 @@ import java.util.Set;
public interface GovAccessFeignClient { public interface GovAccessFeignClient {
/** /**
* 查询用户当前权限列表(DataFilterAspect中用到) * 查询用户当前权限列表
* @return * @return
*/ */
@PostMapping("/gov/access/access/getcurrpermissions") @PostMapping("/gov/access/access/getcurrpermissions")
Result<Set<String>> getStaffCurrPermissions(StaffPermissionFormDTO dto); Result<StaffPermCacheResultDTO> getStaffCurrPermissions(StaffPermissionFormDTO dto);
/**
* 查询角色的操作key对应操作范围列表
* @param operationScopeFormDTO
* @return
*/
@PostMapping("/gov/access/access/operationscopes")
Result<Set<OperationScopeDTO>> getOperationScopesByRoleId(OperationScopeFormDTO operationScopeFormDTO);
} }

10
epmet-commons/epmet-commons-mybatis/src/main/java/com/epmet/commons/mybatis/feign/fallback/GovAccessFeignClientFallback.java

@ -1,5 +1,8 @@
package com.epmet.commons.mybatis.feign.fallback; package com.epmet.commons.mybatis.feign.fallback;
import com.epmet.commons.mybatis.dto.form.OperationScopeDTO;
import com.epmet.commons.mybatis.dto.form.OperationScopeFormDTO;
import com.epmet.commons.mybatis.dto.form.StaffPermCacheResultDTO;
import com.epmet.commons.mybatis.dto.form.StaffPermissionFormDTO; import com.epmet.commons.mybatis.dto.form.StaffPermissionFormDTO;
import com.epmet.commons.mybatis.feign.GovAccessFeignClient; import com.epmet.commons.mybatis.feign.GovAccessFeignClient;
import com.epmet.commons.tools.constant.ServiceConstant; import com.epmet.commons.tools.constant.ServiceConstant;
@ -19,7 +22,12 @@ import java.util.Set;
public class GovAccessFeignClientFallback implements GovAccessFeignClient { public class GovAccessFeignClientFallback implements GovAccessFeignClient {
@Override @Override
public Result<Set<String>> getStaffCurrPermissions(StaffPermissionFormDTO dto) { public Result<StaffPermCacheResultDTO> getStaffCurrPermissions(StaffPermissionFormDTO dto) {
return ModuleUtils.feignConError(ServiceConstant.GOV_ACCESS_SERVER, "getStaffCurrPermissions", dto); return ModuleUtils.feignConError(ServiceConstant.GOV_ACCESS_SERVER, "getStaffCurrPermissions", dto);
} }
@Override
public Result<Set<OperationScopeDTO>> getOperationScopesByRoleId(OperationScopeFormDTO operationScopeFormDTO) {
return ModuleUtils.feignConError(ServiceConstant.GOV_ACCESS_SERVER, "getOperationScopesByRoleId", operationScopeFormDTO);
}
} }

22
epmet-commons/epmet-commons-mybatis/src/main/java/com/epmet/commons/mybatis/interceptor/DataFilterInterceptor.java

@ -10,9 +10,9 @@ package com.epmet.commons.mybatis.interceptor;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.PluginUtils; import com.baomidou.mybatisplus.core.toolkit.PluginUtils;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.extension.handlers.AbstractSqlParserHandler; import com.baomidou.mybatisplus.extension.handlers.AbstractSqlParserHandler;
import com.epmet.commons.mybatis.entity.DataScope; import com.epmet.commons.mybatis.entity.DataScope;
import org.apache.commons.lang3.StringUtils;
import org.apache.ibatis.executor.statement.StatementHandler; import org.apache.ibatis.executor.statement.StatementHandler;
import org.apache.ibatis.mapping.BoundSql; import org.apache.ibatis.mapping.BoundSql;
import org.apache.ibatis.mapping.MappedStatement; import org.apache.ibatis.mapping.MappedStatement;
@ -43,10 +43,10 @@ public class DataFilterInterceptor extends AbstractSqlParserHandler implements I
this.sqlParser(metaObject); this.sqlParser(metaObject);
// 先判断是不是SELECT操作 // 先判断是不是SELECT操作
MappedStatement mappedStatement = (MappedStatement) metaObject.getValue("delegate.mappedStatement"); //MappedStatement mappedStatement = (MappedStatement) metaObject.getValue("delegate.mappedStatement");
if (!SqlCommandType.SELECT.equals(mappedStatement.getSqlCommandType())) { //if (!SqlCommandType.SELECT.equals(mappedStatement.getSqlCommandType())) {
return invocation.proceed(); // return invocation.proceed();
} //}
// 针对定义了rowBounds,做为mapper接口方法的参数 // 针对定义了rowBounds,做为mapper接口方法的参数
BoundSql boundSql = (BoundSql) metaObject.getValue("delegate.boundSql"); BoundSql boundSql = (BoundSql) metaObject.getValue("delegate.boundSql");
@ -79,12 +79,18 @@ public class DataFilterInterceptor extends AbstractSqlParserHandler implements I
// 拼接新SQL // 拼接新SQL
String orderBy = "ORDER BY"; String orderBy = "ORDER BY";
String groupBy = "GROUP BY"; String groupBy = "GROUP BY";
String sqlFilter = scope.getSqlFilter();
if (originalSql.indexOf("WHERE") == 0) {
// 不包含where,需要手动拼接上
sqlFilter = " WHERE ".concat(sqlFilter);
}
if (originalSql.indexOf(groupBy) > -1) { if (originalSql.indexOf(groupBy) > -1) {
originalSql = originalSql.replace(groupBy, scope.getSqlFilter() + groupBy); originalSql = originalSql.replace(groupBy, sqlFilter + groupBy);
} else if (originalSql.indexOf(orderBy) > -1) { } else if (originalSql.indexOf(orderBy) > -1) {
originalSql = originalSql.replace(orderBy, scope.getSqlFilter() + orderBy); originalSql = originalSql.replace(orderBy, sqlFilter + orderBy);
} else { } else {
originalSql = originalSql + scope.getSqlFilter(); originalSql = originalSql.concat(" AND (").concat(scope.getSqlFilter()).concat(")");
} }
// 重写SQL // 重写SQL

2
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/aspect/AccessOpeAspect.java

@ -37,8 +37,6 @@ public class AccessOpeAspect {
RequirePermission requirePermissionAnno = methodSignature.getMethod().getAnnotation(RequirePermission.class); RequirePermission requirePermissionAnno = methodSignature.getMethod().getAnnotation(RequirePermission.class);
String key = requirePermissionAnno.key(); String key = requirePermissionAnno.key();
String desc = requirePermissionAnno.desc(); String desc = requirePermissionAnno.desc();
System.out.println(key);
System.out.println(desc);
// 放入ThreadLocal,供DataFilterAspect中使用 // 放入ThreadLocal,供DataFilterAspect中使用
requirePermissionTl.set(key); requirePermissionTl.set(key);

6
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java

@ -32,8 +32,12 @@ public enum EpmetErrorCode {
NOT_DEL_AGENCY_PER(8205, "该机关存在工作人员,不允许删除"), NOT_DEL_AGENCY_PER(8205, "该机关存在工作人员,不允许删除"),
NOT_DEL_DEPARTMENT(8206, "该部门存在工作人员,不允许删除"), NOT_DEL_DEPARTMENT(8206, "该部门存在工作人员,不允许删除"),
REQUIRE_PERMISSION(8301, "没有足够的操作权限"); REQUIRE_PERMISSION(8301, "没有足够的操作权限"),
NOT_ADD_GRID(8401,"您当前的网格名称已存在,请重新修改"),
MOBILE_USED(8402,"该手机号已注册"),
STAFF_ADD_FAILED(8403,"人员添加失败"),
STAFF_EDIT_FAILED(8404,"人员编辑失败");
private int code; private int code;
private String msg; private String msg;

10
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisKeys.java

@ -207,4 +207,14 @@ public class RedisKeys {
public static String getLoginSmsCodeKey(String app, String client, String phone) { public static String getLoginSmsCodeKey(String app, String client, String phone) {
return String.format(rootPrefix+"smsCode:login:%s:%s:%s",app,client,phone); return String.format(rootPrefix+"smsCode:login:%s:%s:%s",app,client,phone);
} }
/**
* 角色的操作权限对应的可操作范围
* @param roleId 角色ID
* @param opeKey 操作Key
* @return
*/
public static String getRoleOpeScopesKey(String roleId, String opeKey) {
return rootPrefix.concat("gov:access:role:opescopes:").concat(roleId).concat(opeKey);
}
} }

23
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/security/dto/GovTokenDto.java

@ -34,6 +34,16 @@ public class GovTokenDto extends BaseTokenDto implements Serializable {
*/ */
private String customerId; private String customerId;
/**
* 过期时间戳
*/
private Long expireTime;
/**
* 最后一次更新时间
*/
private long updateTime;
/** /**
* 当前登录的组织id(顶级) * 当前登录的组织id(顶级)
*/ */
@ -55,18 +65,13 @@ public class GovTokenDto extends BaseTokenDto implements Serializable {
private List<String> deptIdList; private List<String> deptIdList;
/** /**
* 过期时间戳 * 功能权限列表实际上是gov_staff => staff_role => role_operation查询到的operationKey
*/
private Long expireTime;
/**
* 最后一次更新时间
*/ */
private long updateTime; private Set<String> permissions;
/** /**
* 功能权限列表实际上是gov_staff => staff_role => role_operation查询到的operationKey * 角色ID列表
*/ */
private Set<String> permissions; private Set<String> roleIdList;
} }

81
epmet-module/gov-access/gov-access-client/src/main/java/com/epmet/dto/OperationScopeDTO.java

@ -0,0 +1,81 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.dto;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
/**
* 权限范围表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2020-04-24
*/
@Data
public class OperationScopeDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* id
*/
private String id;
/**
* 范围key
*/
private String scopeKey;
/**
* 范围名称
*/
private String scopeName;
/**
* 是否删除0未删除1已删除
*/
private Integer delFlag;
/**
* 乐观锁
*/
private Integer revision;
/**
* 创建者id
*/
private String createdBy;
/**
* 创建时间
*/
private Date createdTime;
/**
* 更新者id
*/
private String updatedBy;
/**
* 更新时间
*/
private Date updatedTime;
}

86
epmet-module/gov-access/gov-access-client/src/main/java/com/epmet/dto/RoleScopeDTO.java

@ -0,0 +1,86 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.dto;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
/**
* 角色能操作哪些范围
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2020-04-24
*/
@Data
public class RoleScopeDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
*
*/
private String id;
/**
* 角色ID
*/
private String roleId;
/**
* 操作key
*/
private String operationKey;
/**
* 范围Key
*/
private String scopeKey;
/**
* 是否删除0未删除1已删除
*/
private Integer delFlag;
/**
* 乐观锁
*/
private Integer revision;
/**
* 创建者id
*/
private String createdBy;
/**
* 创建时间
*/
private Date createdTime;
/**
* 更新者id
*/
private String updatedBy;
/**
* 更新时间
*/
private Date updatedTime;
}

18
epmet-module/gov-access/gov-access-client/src/main/java/com/epmet/dto/form/OperationScopeFormDTO.java

@ -0,0 +1,18 @@
package com.epmet.dto.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
@Data
public class OperationScopeFormDTO {
public interface ListOperationScopeGroup {}
@NotBlank(message = "角色ID不能为空", groups = {ListOperationScopeGroup.class})
private String roleId;
@NotBlank(message = "操作的key不能为空", groups = {ListOperationScopeGroup.class})
private String operationKey;
}

10
epmet-module/gov-access/gov-access-client/src/main/java/com/epmet/dto/form/StaffPermCacheFormDTO.java

@ -36,9 +36,19 @@ public class StaffPermCacheFormDTO {
@NotBlank(message = "登录头信息client不能为空", groups = {UpdatePermissionCache.class, GetStaffCurrPermissions.class}) @NotBlank(message = "登录头信息client不能为空", groups = {UpdatePermissionCache.class, GetStaffCurrPermissions.class})
private String client; private String client;
/**
* 组织ID路径
*/
private String orgIdPath;
/** /**
* 权限列表 * 权限列表
*/ */
private Set<String> permissions; private Set<String> permissions;
/**
* 角色列表
*/
private Set<String> roleIdList;
} }

28
epmet-module/gov-access/gov-access-client/src/main/java/com/epmet/dto/result/RoleOpeScopeResultDTO.java

@ -0,0 +1,28 @@
package com.epmet.dto.result;
import lombok.Data;
@Data
public class RoleOpeScopeResultDTO {
/**
* 角色ID
*/
private String roleId;
/**
* 范围key
*/
private String scopeKey;
/**
* 范围名称
*/
private String scopeName;
/**
* 范围序号
*/
private String scopeIndex;
}

31
epmet-module/gov-access/gov-access-client/src/main/java/com/epmet/dto/result/StaffPermCacheResultDTO.java

@ -0,0 +1,31 @@
package com.epmet.dto.result;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.util.Set;
@Data
public class StaffPermCacheResultDTO {
/**
* 权限列表
*/
private Set<String> permissions;
/**
* 角色列表
*/
private Set<String> roleIdList;
/**
* 组织ID
*/
private String orgIdPath;
/**
* 网格ID
*/
private String gridId;
}

43
epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/controller/AccessController.java

@ -1,15 +1,21 @@
package com.epmet.controller; package com.epmet.controller;
import com.epmet.commons.tools.security.dto.GovTokenDto;
import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.dto.OperationScopeDTO;
import com.epmet.dto.form.OperationScopeFormDTO;
import com.epmet.dto.form.StaffPermCacheFormDTO; import com.epmet.dto.form.StaffPermCacheFormDTO;
import com.epmet.dto.result.RoleOpeScopeResultDTO;
import com.epmet.dto.result.StaffPermCacheResultDTO;
import com.epmet.entity.OperationScopeEntity;
import com.epmet.service.AccessService; import com.epmet.service.AccessService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List;
import java.util.Set; import java.util.Set;
/** /**
@ -37,7 +43,9 @@ public class AccessController {
String app = staffPermCacheFormDTO.getApp(); String app = staffPermCacheFormDTO.getApp();
String client = staffPermCacheFormDTO.getClient(); String client = staffPermCacheFormDTO.getClient();
Set<String> permissions = staffPermCacheFormDTO.getPermissions(); Set<String> permissions = staffPermCacheFormDTO.getPermissions();
accessService.updatePermissionCache(staffId, app, client, permissions); Set<String> roleIdList = staffPermCacheFormDTO.getRoleIdList();
String orgId = staffPermCacheFormDTO.getOrgIdPath();
accessService.updatePermissionCache(staffId, app, client, permissions, roleIdList, orgId);
return new Result(); return new Result();
} }
@ -46,9 +54,28 @@ public class AccessController {
* @return * @return
*/ */
@PostMapping("getcurrpermissions") @PostMapping("getcurrpermissions")
public Result<Set<String>> getStaffCurrPermissions(@RequestBody StaffPermCacheFormDTO dto) { public Result<StaffPermCacheResultDTO> getStaffCurrPermissions(@RequestBody StaffPermCacheFormDTO dto) {
ValidatorUtils.validateEntity(dto, StaffPermCacheFormDTO.GetStaffCurrPermissions.class); ValidatorUtils.validateEntity(dto, StaffPermCacheFormDTO.GetStaffCurrPermissions.class);
Set<String> permissions = accessService.listStaffCurrPermissions(dto.getApp(), dto.getClient(), dto.getStaffId()); GovTokenDto govTokenDto = accessService.listStaffCurrPermissions(dto.getApp(), dto.getClient(), dto.getStaffId());
return new Result<Set<String>>().ok(permissions); StaffPermCacheResultDTO resultDTO = null;
if (govTokenDto != null) {
resultDTO = new StaffPermCacheResultDTO();
resultDTO.setPermissions(govTokenDto.getPermissions());
resultDTO.setRoleIdList(govTokenDto.getRoleIdList());
resultDTO.setOrgIdPath(govTokenDto.getOrgIdPath());
resultDTO.setGridId(govTokenDto.getGridId());
}
return new Result<StaffPermCacheResultDTO>().ok(resultDTO);
}
/**
* 查询角色的操作key对应操作范围列表(缓存)
* @return
*/
@PostMapping("operationscopes")
public Result<Set<RoleOpeScopeResultDTO>> getOperationScopesByRoleId(@RequestBody OperationScopeFormDTO operationScopeFormDTO) {
ValidatorUtils.validateEntity(operationScopeFormDTO, OperationScopeFormDTO.ListOperationScopeGroup.class);
Set<RoleOpeScopeResultDTO> scopes = accessService.listOperationScopesByRoleId(operationScopeFormDTO.getRoleId(), operationScopeFormDTO.getOperationKey());
return new Result<Set<RoleOpeScopeResultDTO>>().ok(scopes);
} }
} }

47
epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/dao/OperationScopeDao.java

@ -0,0 +1,47 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.result.RoleOpeScopeResultDTO;
import com.epmet.entity.OperationScopeEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.context.annotation.Scope;
import java.util.List;
import java.util.Set;
/**
* 权限范围表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2020-04-24
*/
@Mapper
public interface OperationScopeDao extends BaseDao<OperationScopeEntity> {
/**
* 查询角色的操作key对应操作范围列表
* @param roleId 角色id
* @param operationKey 操作key
* @return
*/
Set<RoleOpeScopeResultDTO> listOperationScopesByRoleId(@Param("roleId") String roleId,
@Param("operationKey") String operationKey);
}

32
epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/redis/RoleOperationRedis.java → epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/dao/RoleScopeDao.java

@ -15,33 +15,19 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
package com.epmet.redis; package com.epmet.dao;
import com.epmet.commons.tools.redis.RedisUtils; import com.epmet.commons.mybatis.dao.BaseDao;
import org.springframework.beans.factory.annotation.Autowired; import com.epmet.entity.RoleScopeEntity;
import org.springframework.stereotype.Component; import org.apache.ibatis.annotations.Mapper;
/** /**
* 角色能进行那些操作 * 角色能操作哪些范围
* *
* @author generator generator@elink-cn.com * @author generator generator@elink-cn.com
* @since v1.0.0 2020-04-22 * @since v1.0.0 2020-04-24
*/ */
@Component @Mapper
public class RoleOperationRedis { public interface RoleScopeDao extends BaseDao<RoleScopeEntity> {
@Autowired
private RedisUtils redisUtils;
public void delete(Object[] ids) {
}
public void set(){
}
public String get(String id){
return null;
}
} }

51
epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/entity/OperationScopeEntity.java

@ -0,0 +1,51 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
/**
* 权限范围表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2020-04-24
*/
@Data
@EqualsAndHashCode(callSuper=false)
@TableName("operation_scope")
public class OperationScopeEntity extends BaseEpmetEntity {
private static final long serialVersionUID = 1L;
/**
* 范围key
*/
private String scopeKey;
/**
* 范围名称
*/
private String scopeName;
}

56
epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/entity/RoleScopeEntity.java

@ -0,0 +1,56 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
/**
* 角色能操作哪些范围
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2020-04-24
*/
@Data
@EqualsAndHashCode(callSuper=false)
@TableName("role_scope")
public class RoleScopeEntity extends BaseEpmetEntity {
private static final long serialVersionUID = 1L;
/**
* 角色ID
*/
private String roleId;
/**
* 操作key
*/
private String operationKey;
/**
* 范围Key
*/
private String scopeKey;
}

43
epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/redis/RoleOpeScopeRedis.java

@ -0,0 +1,43 @@
package com.epmet.redis;
import cn.hutool.core.bean.BeanUtil;
import com.epmet.commons.tools.redis.RedisKeys;
import com.epmet.commons.tools.redis.RedisUtils;
import com.epmet.dto.result.RoleOpeScopeResultDTO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.Set;
/**
* 角色的操作权限对应的操作范围Redis
*/
@Component
public class RoleOpeScopeRedis {
@Autowired
private RedisUtils redisUtils;
/**
* 缓存角色操作范围
* @param roleId
* @param opeKey
* @param scopes
*/
public void setRoleOpeScopes(String roleId, String opeKey, Set<RoleOpeScopeResultDTO> scopes) {
String roleOpeScopesKey = RedisKeys.getRoleOpeScopesKey(roleId, opeKey);
redisUtils.set(roleOpeScopesKey, scopes);
}
/**
* 查询角色操作范围
* @param roleId
* @param opeKey
* @return
*/
public Set<RoleOpeScopeResultDTO> getRoleOpeScopes(String roleId, String opeKey) {
String roleOpeScopesKey = RedisKeys.getRoleOpeScopesKey(roleId, opeKey);
return (Set<RoleOpeScopeResultDTO>)redisUtils.get(roleOpeScopesKey);
}
}

17
epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/service/AccessService.java

@ -1,5 +1,10 @@
package com.epmet.service; package com.epmet.service;
import com.epmet.commons.tools.security.dto.GovTokenDto;
import com.epmet.dto.result.RoleOpeScopeResultDTO;
import com.epmet.entity.OperationScopeEntity;
import java.util.List;
import java.util.Set; import java.util.Set;
public interface AccessService { public interface AccessService {
@ -8,11 +13,19 @@ public interface AccessService {
* @param staffId * @param staffId
* @param permissions * @param permissions
*/ */
void updatePermissionCache(String staffId, String app, String client, Set<String> permissions); void updatePermissionCache(String staffId, String app, String client, Set<String> permissions, Set<String> roleIdList, String orgIdPath);
/** /**
* 查询用户当前权限列表 * 查询用户当前权限列表
* @return * @return
*/ */
Set<String> listStaffCurrPermissions(String app, String client, String staffId); GovTokenDto listStaffCurrPermissions(String app, String client, String staffId);
/**
* 查询角色的操作key对应操作范围列表
* @param roleId
* @param operationKey
* @return
*/
Set<RoleOpeScopeResultDTO> listOperationScopesByRoleId(String roleId, String operationKey);
} }

95
epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/service/OperationScopeService.java

@ -0,0 +1,95 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.service;
import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.commons.tools.page.PageData;
import com.epmet.dto.OperationScopeDTO;
import com.epmet.entity.OperationScopeEntity;
import java.util.List;
import java.util.Map;
/**
* 权限范围表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2020-04-24
*/
public interface OperationScopeService extends BaseService<OperationScopeEntity> {
/**
* 默认分页
*
* @param params
* @return PageData<OperationScopeDTO>
* @author generator
* @date 2020-04-24
*/
PageData<OperationScopeDTO> page(Map<String, Object> params);
/**
* 默认查询
*
* @param params
* @return java.util.List<OperationScopeDTO>
* @author generator
* @date 2020-04-24
*/
List<OperationScopeDTO> list(Map<String, Object> params);
/**
* 单条查询
*
* @param id
* @return OperationScopeDTO
* @author generator
* @date 2020-04-24
*/
OperationScopeDTO get(String id);
/**
* 默认保存
*
* @param dto
* @return void
* @author generator
* @date 2020-04-24
*/
void save(OperationScopeDTO dto);
/**
* 默认更新
*
* @param dto
* @return void
* @author generator
* @date 2020-04-24
*/
void update(OperationScopeDTO dto);
/**
* 批量删除
*
* @param ids
* @return void
* @author generator
* @date 2020-04-24
*/
void delete(String[] ids);
}

95
epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/service/RoleScopeService.java

@ -0,0 +1,95 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.service;
import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.commons.tools.page.PageData;
import com.epmet.dto.RoleScopeDTO;
import com.epmet.entity.RoleScopeEntity;
import java.util.List;
import java.util.Map;
/**
* 角色能操作哪些范围
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2020-04-24
*/
public interface RoleScopeService extends BaseService<RoleScopeEntity> {
/**
* 默认分页
*
* @param params
* @return PageData<RoleScopeDTO>
* @author generator
* @date 2020-04-24
*/
PageData<RoleScopeDTO> page(Map<String, Object> params);
/**
* 默认查询
*
* @param params
* @return java.util.List<RoleScopeDTO>
* @author generator
* @date 2020-04-24
*/
List<RoleScopeDTO> list(Map<String, Object> params);
/**
* 单条查询
*
* @param id
* @return RoleScopeDTO
* @author generator
* @date 2020-04-24
*/
RoleScopeDTO get(String id);
/**
* 默认保存
*
* @param dto
* @return void
* @author generator
* @date 2020-04-24
*/
void save(RoleScopeDTO dto);
/**
* 默认更新
*
* @param dto
* @return void
* @author generator
* @date 2020-04-24
*/
void update(RoleScopeDTO dto);
/**
* 批量删除
*
* @param ids
* @return void
* @author generator
* @date 2020-04-24
*/
void delete(String[] ids);
}

43
epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/service/impl/AccessServiceImpl.java

@ -1,7 +1,11 @@
package com.epmet.service.impl; package com.epmet.service.impl;
import com.epmet.commons.tools.exception.ExceptionUtils;
import com.epmet.commons.tools.security.dto.GovTokenDto; import com.epmet.commons.tools.security.dto.GovTokenDto;
import com.epmet.commons.tools.utils.CpUserDetailRedis; import com.epmet.commons.tools.utils.CpUserDetailRedis;
import com.epmet.dao.OperationScopeDao;
import com.epmet.dto.result.RoleOpeScopeResultDTO;
import com.epmet.redis.RoleOpeScopeRedis;
import com.epmet.service.AccessService; import com.epmet.service.AccessService;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -9,7 +13,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.util.HashSet;
import java.util.Set; import java.util.Set;
@Service @Service
@ -20,19 +23,28 @@ public class AccessServiceImpl implements AccessService {
@Autowired @Autowired
private CpUserDetailRedis cpUserDetailRedis; private CpUserDetailRedis cpUserDetailRedis;
@Autowired
private OperationScopeDao operationScopeDao;
@Autowired
private RoleOpeScopeRedis roleOpeScopeRedis;
/** /**
* 更新权限缓存 * 更新权限缓存
* @param staffId * @param staffId
* @param permissions * @param permissions
*/ */
@Override @Override
public void updatePermissionCache(String staffId, String app, String client, Set<String> permissions) { public void updatePermissionCache(String staffId, String app, String client, Set<String> permissions, Set<String> roleIdList, String orgIdPath) {
GovTokenDto govTokenDto = cpUserDetailRedis.get(app, client, staffId, GovTokenDto.class); GovTokenDto govTokenDto = cpUserDetailRedis.get(app, client, staffId, GovTokenDto.class);
if (govTokenDto == null) { if (govTokenDto == null) {
logger.warn("更新[{}]用户缓存:Redis中不存在该用户TokenDto缓存信息", staffId); logger.warn("更新[{}]用户缓存:Redis中不存在该用户TokenDto缓存信息", staffId);
return ; return ;
} }
// 将权限,角色列表,和当前组织ID存入TokenDto
govTokenDto.setPermissions(permissions); govTokenDto.setPermissions(permissions);
govTokenDto.setRoleIdList(roleIdList);
govTokenDto.setOrgIdPath(orgIdPath);
// 将新的TokenDto更新到redis中 // 将新的TokenDto更新到redis中
long expire = cpUserDetailRedis.getExpire(app, client, staffId); long expire = cpUserDetailRedis.getExpire(app, client, staffId);
@ -41,11 +53,28 @@ public class AccessServiceImpl implements AccessService {
} }
@Override @Override
public Set<String> listStaffCurrPermissions(String app, String client, String staffId) { public GovTokenDto listStaffCurrPermissions(String app, String client, String staffId) {
GovTokenDto govTokenDto = cpUserDetailRedis.get(app, client, staffId, GovTokenDto.class); return cpUserDetailRedis.get(app, client, staffId, GovTokenDto.class);
if (govTokenDto == null || CollectionUtils.isEmpty(govTokenDto.getPermissions())) { }
return new HashSet<>();
/**
* 查询角色的操作key对应操作范围列表
* @param roleId
* @param operationKey
* @return
*/
public Set<RoleOpeScopeResultDTO> listOperationScopesByRoleId(String roleId, String operationKey) {
Set<RoleOpeScopeResultDTO> roleOpeScopes = roleOpeScopeRedis.getRoleOpeScopes(roleId, operationKey);
if (roleOpeScopes != null) {
return roleOpeScopes;
}
Set<RoleOpeScopeResultDTO> scopes = operationScopeDao.listOperationScopesByRoleId(roleId, operationKey);
try {
roleOpeScopeRedis.setRoleOpeScopes(roleId, operationKey, scopes);
} catch (Exception e) {
String errorStackTrace = ExceptionUtils.getErrorStackTrace(e);
logger.error("GovAccess:查询角色的操作范围:缓存范围出错:{}", errorStackTrace);
} }
return new HashSet<>(govTokenDto.getPermissions()); return scopes;
} }
} }

101
epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/service/impl/OperationScopeServiceImpl.java

@ -0,0 +1,101 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.dao.OperationScopeDao;
import com.epmet.dto.OperationScopeDTO;
import com.epmet.entity.OperationScopeEntity;
import com.epmet.service.OperationScopeService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
/**
* 权限范围表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2020-04-24
*/
@Service
public class OperationScopeServiceImpl extends BaseServiceImpl<OperationScopeDao, OperationScopeEntity> implements OperationScopeService {
@Override
public PageData<OperationScopeDTO> page(Map<String, Object> params) {
IPage<OperationScopeEntity> page = baseDao.selectPage(
getPage(params, FieldConstant.CREATED_TIME, false),
getWrapper(params)
);
return getPageData(page, OperationScopeDTO.class);
}
@Override
public List<OperationScopeDTO> list(Map<String, Object> params) {
List<OperationScopeEntity> entityList = baseDao.selectList(getWrapper(params));
return ConvertUtils.sourceToTarget(entityList, OperationScopeDTO.class);
}
private QueryWrapper<OperationScopeEntity> getWrapper(Map<String, Object> params){
String id = (String)params.get(FieldConstant.ID_HUMP);
QueryWrapper<OperationScopeEntity> wrapper = new QueryWrapper<>();
wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id);
return wrapper;
}
@Override
public OperationScopeDTO get(String id) {
OperationScopeEntity entity = baseDao.selectById(id);
return ConvertUtils.sourceToTarget(entity, OperationScopeDTO.class);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void save(OperationScopeDTO dto) {
OperationScopeEntity entity = ConvertUtils.sourceToTarget(dto, OperationScopeEntity.class);
insert(entity);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void update(OperationScopeDTO dto) {
OperationScopeEntity entity = ConvertUtils.sourceToTarget(dto, OperationScopeEntity.class);
updateById(entity);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void delete(String[] ids) {
// 逻辑删除(@TableLogic 注解)
baseDao.deleteBatchIds(Arrays.asList(ids));
}
}

4
epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/service/impl/RoleOperationServiceImpl.java

@ -27,7 +27,6 @@ import com.epmet.dao.RoleOperationDao;
import com.epmet.dto.RoleOperationDTO; import com.epmet.dto.RoleOperationDTO;
import com.epmet.dto.result.RoleOperationResultDTO; import com.epmet.dto.result.RoleOperationResultDTO;
import com.epmet.entity.RoleOperationEntity; import com.epmet.entity.RoleOperationEntity;
import com.epmet.redis.RoleOperationRedis;
import com.epmet.service.RoleOperationService; import com.epmet.service.RoleOperationService;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -47,9 +46,6 @@ import java.util.Map;
@Service @Service
public class RoleOperationServiceImpl extends BaseServiceImpl<RoleOperationDao, RoleOperationEntity> implements RoleOperationService { public class RoleOperationServiceImpl extends BaseServiceImpl<RoleOperationDao, RoleOperationEntity> implements RoleOperationService {
@Autowired
private RoleOperationRedis roleOperationRedis;
@Override @Override
public PageData<RoleOperationDTO> page(Map<String, Object> params) { public PageData<RoleOperationDTO> page(Map<String, Object> params) {
IPage<RoleOperationEntity> page = baseDao.selectPage( IPage<RoleOperationEntity> page = baseDao.selectPage(

100
epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/service/impl/RoleScopeServiceImpl.java

@ -0,0 +1,100 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.dao.RoleScopeDao;
import com.epmet.dto.RoleScopeDTO;
import com.epmet.entity.RoleScopeEntity;
import com.epmet.service.RoleScopeService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
/**
* 角色能操作哪些范围
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2020-04-24
*/
@Service
public class RoleScopeServiceImpl extends BaseServiceImpl<RoleScopeDao, RoleScopeEntity> implements RoleScopeService {
@Override
public PageData<RoleScopeDTO> page(Map<String, Object> params) {
IPage<RoleScopeEntity> page = baseDao.selectPage(
getPage(params, FieldConstant.CREATED_TIME, false),
getWrapper(params)
);
return getPageData(page, RoleScopeDTO.class);
}
@Override
public List<RoleScopeDTO> list(Map<String, Object> params) {
List<RoleScopeEntity> entityList = baseDao.selectList(getWrapper(params));
return ConvertUtils.sourceToTarget(entityList, RoleScopeDTO.class);
}
private QueryWrapper<RoleScopeEntity> getWrapper(Map<String, Object> params){
String id = (String)params.get(FieldConstant.ID_HUMP);
QueryWrapper<RoleScopeEntity> wrapper = new QueryWrapper<>();
wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id);
return wrapper;
}
@Override
public RoleScopeDTO get(String id) {
RoleScopeEntity entity = baseDao.selectById(id);
return ConvertUtils.sourceToTarget(entity, RoleScopeDTO.class);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void save(RoleScopeDTO dto) {
RoleScopeEntity entity = ConvertUtils.sourceToTarget(dto, RoleScopeEntity.class);
insert(entity);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void update(RoleScopeDTO dto) {
RoleScopeEntity entity = ConvertUtils.sourceToTarget(dto, RoleScopeEntity.class);
updateById(entity);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void delete(String[] ids) {
// 逻辑删除(@TableLogic 注解)
baseDao.deleteBatchIds(Arrays.asList(ids));
}
}

4
epmet-module/gov-access/gov-access-server/src/main/resources/db.migration/epmet_gov_access.sql

@ -10,6 +10,7 @@ CREATE TABLE `operation_scope` (
`ID` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'id', `ID` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'id',
`SCOPE_KEY` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '范围key', `SCOPE_KEY` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '范围key',
`SCOPE_NAME` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '范围名称', `SCOPE_NAME` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '范围名称',
`SCOPE_INDEX` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '范围序号',
`DEL_FLAG` tinyint(1) NULL DEFAULT NULL COMMENT '是否删除,0:未删除,1:已删除', `DEL_FLAG` tinyint(1) NULL DEFAULT NULL COMMENT '是否删除,0:未删除,1:已删除',
`REVISION` int(10) NULL DEFAULT NULL COMMENT '乐观锁', `REVISION` int(10) NULL DEFAULT NULL COMMENT '乐观锁',
`CREATED_BY` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建者id', `CREATED_BY` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建者id',
@ -61,7 +62,8 @@ CREATE TABLE `role_operation` (
CREATE TABLE `role_scope` ( CREATE TABLE `role_scope` (
`ID` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, `ID` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`ROLE_ID` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '角色ID', `ROLE_ID` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '角色ID',
`SCOPE_KEY` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '范围Key', `OPERATION_KEY` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '操作Key',
`SCOPE_KEY` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '范围Key',
`DEL_FLAG` tinyint(1) NULL DEFAULT NULL COMMENT '是否删除,0:未删除,1:已删除', `DEL_FLAG` tinyint(1) NULL DEFAULT NULL COMMENT '是否删除,0:未删除,1:已删除',
`REVISION` int(10) NULL DEFAULT NULL COMMENT '乐观锁', `REVISION` int(10) NULL DEFAULT NULL COMMENT '乐观锁',
`CREATED_BY` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建者id', `CREATED_BY` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建者id',

29
epmet-module/gov-access/gov-access-server/src/main/resources/mapper/OperationScopeDao.xml

@ -0,0 +1,29 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.epmet.dao.OperationScopeDao">
<resultMap type="com.epmet.entity.OperationScopeEntity" id="operationScopeMap">
<result property="id" column="ID"/>
<result property="scopeKey" column="SCOPE_KEY"/>
<result property="scopeName" column="SCOPE_NAME"/>
<result property="delFlag" column="DEL_FLAG"/>
<result property="revision" column="REVISION"/>
<result property="createdBy" column="CREATED_BY"/>
<result property="createdTime" column="CREATED_TIME"/>
<result property="updatedBy" column="UPDATED_BY"/>
<result property="updatedTime" column="UPDATED_TIME"/>
</resultMap>
<!--查询角色的操作key对应操作范围列表-->
<select id="listOperationScopesByRoleId" resultType="com.epmet.dto.result.RoleOpeScopeResultDTO">
select os.SCOPE_KEY, os.SCOPE_NAME, rs.ROLE_ID, os.SCOPE_INDEX
from role_scope rs
inner join operation_scope os
on (rs.SCOPE_KEY = os.SCOPE_KEY)
where rs.ROLE_ID = #{roleId}
and rs.OPERATION_KEY = #{operationKey}
</select>
</mapper>

20
epmet-module/gov-access/gov-access-server/src/main/resources/mapper/RoleScopeDao.xml

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.epmet.dao.RoleScopeDao">
<resultMap type="com.epmet.entity.RoleScopeEntity" id="roleScopeMap">
<result property="id" column="ID"/>
<result property="roleId" column="ROLE_ID"/>
<result property="operationKey" column="OPERATION_KEY"/>
<result property="scopeKey" column="SCOPE_KEY"/>
<result property="delFlag" column="DEL_FLAG"/>
<result property="revision" column="REVISION"/>
<result property="createdBy" column="CREATED_BY"/>
<result property="createdTime" column="CREATED_TIME"/>
<result property="updatedBy" column="UPDATED_BY"/>
<result property="updatedTime" column="UPDATED_TIME"/>
</resultMap>
</mapper>

2
epmet-module/gov-mine/gov-mine-server/src/main/java/com/epmet/controller/AccessController.java

@ -30,7 +30,7 @@ public class AccessController {
private AccessService accessService; private AccessService accessService;
/** /**
* 查询用户可操作功能列表(包含缓存) * 查询用户可操作功能列表(同时更新缓存)
* @param tokenDto * @param tokenDto
* @param staffOperationDTO * @param staffOperationDTO
* @return * @return

2
epmet-module/gov-mine/gov-mine-server/src/main/java/com/epmet/feign/GovAccessFeignClient.java

@ -16,7 +16,7 @@ import java.util.List;
* @Description * @Description
* @Author sun * @Author sun
*/ */
@FeignClient(name = ServiceConstant.GOV_ACCESS_SERVER, fallback = GovAccessFeignClientFallback.class) @FeignClient(name = ServiceConstant.GOV_ACCESS_SERVER, fallback = GovAccessFeignClientFallback.class, url = "localhost:8099")
public interface GovAccessFeignClient { public interface GovAccessFeignClient {
/** /**

8
epmet-module/gov-mine/gov-mine-server/src/main/java/com/epmet/feign/GovOrgFeignClient.java

@ -2,6 +2,7 @@ package com.epmet.feign;
import com.epmet.commons.tools.constant.ServiceConstant; import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.CustomerAgencyDTO;
import com.epmet.dto.form.LatestGridFormDTO; import com.epmet.dto.form.LatestGridFormDTO;
import com.epmet.dto.result.CustomerGridByUserIdResultDTO; import com.epmet.dto.result.CustomerGridByUserIdResultDTO;
import com.epmet.dto.result.LatestCustomerResultDTO; import com.epmet.dto.result.LatestCustomerResultDTO;
@ -49,4 +50,11 @@ public interface GovOrgFeignClient {
@PostMapping(value = "/gov/org/customerstaffgrid/getstaffgrid") @PostMapping(value = "/gov/org/customerstaffgrid/getstaffgrid")
Result<CustomerGridByUserIdResultDTO> getStaffGrid(@RequestBody LatestGridFormDTO latestGridFormDTO); Result<CustomerGridByUserIdResultDTO> getStaffGrid(@RequestBody LatestGridFormDTO latestGridFormDTO);
/**
* 根据Id查询agency
* @param agencyId
* @return
*/
@PostMapping("/gov/org/agency/{agencyId}")
Result<CustomerAgencyDTO> getAgencyById(@PathVariable("agencyId") String agencyId);
} }

6
epmet-module/gov-mine/gov-mine-server/src/main/java/com/epmet/feign/fallback/GovOrgFeignClientFallBack.java

@ -3,6 +3,7 @@ package com.epmet.feign.fallback;
import com.epmet.commons.tools.constant.ServiceConstant; import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.utils.ModuleUtils; import com.epmet.commons.tools.utils.ModuleUtils;
import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.CustomerAgencyDTO;
import com.epmet.dto.form.LatestGridFormDTO; import com.epmet.dto.form.LatestGridFormDTO;
import com.epmet.dto.result.CustomerGridByUserIdResultDTO; import com.epmet.dto.result.CustomerGridByUserIdResultDTO;
import com.epmet.dto.result.LatestCustomerResultDTO; import com.epmet.dto.result.LatestCustomerResultDTO;
@ -28,6 +29,11 @@ public class GovOrgFeignClientFallBack implements GovOrgFeignClient {
return ModuleUtils.feignConError(ServiceConstant.GOV_ORG_SERVER, "getStaffGrid",latestGridFormDTO); return ModuleUtils.feignConError(ServiceConstant.GOV_ORG_SERVER, "getStaffGrid",latestGridFormDTO);
} }
@Override
public Result<CustomerAgencyDTO> getAgencyById(String agencyId) {
return ModuleUtils.feignConError(ServiceConstant.GOV_ORG_SERVER, "getAgencyById", agencyId);
}
@Override @Override
public Result<LatestCustomerResultDTO> getLatestCustomer(String userId) { public Result<LatestCustomerResultDTO> getLatestCustomer(String userId) {
return ModuleUtils.feignConError(ServiceConstant.GOV_ORG_SERVER, "getLatestCustomer", userId); return ModuleUtils.feignConError(ServiceConstant.GOV_ORG_SERVER, "getLatestCustomer", userId);

47
epmet-module/gov-mine/gov-mine-server/src/main/java/com/epmet/service/impl/AccessServiceImpl.java

@ -1,14 +1,20 @@
package com.epmet.service.impl; package com.epmet.service.impl;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.utils.CpUserDetailRedis; import com.epmet.commons.tools.utils.CpUserDetailRedis;
import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.CustomerAgencyDTO;
import com.epmet.dto.GovStaffRoleDTO; import com.epmet.dto.GovStaffRoleDTO;
import com.epmet.dto.form.StaffPermCacheFormDTO; import com.epmet.dto.form.StaffPermCacheFormDTO;
import com.epmet.dto.form.StaffRoleFormDTO; import com.epmet.dto.form.StaffRoleFormDTO;
import com.epmet.dto.result.RoleOperationResultDTO; import com.epmet.dto.result.RoleOperationResultDTO;
import com.epmet.feign.EpmetUserFeignClient; import com.epmet.feign.EpmetUserFeignClient;
import com.epmet.feign.GovAccessFeignClient; import com.epmet.feign.GovAccessFeignClient;
import com.epmet.feign.GovOrgFeignClient;
import com.epmet.service.AccessService; import com.epmet.service.AccessService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
@ -21,12 +27,17 @@ import java.util.Set;
@Service @Service
public class AccessServiceImpl implements AccessService { public class AccessServiceImpl implements AccessService {
private static Logger logger = LoggerFactory.getLogger(AccessServiceImpl.class);
@Autowired @Autowired
private EpmetUserFeignClient userFeignClient; private EpmetUserFeignClient userFeignClient;
@Autowired @Autowired
private GovAccessFeignClient govAccessFeignClient; private GovAccessFeignClient govAccessFeignClient;
@Autowired
private GovOrgFeignClient govOrgFeignClient;
@Autowired @Autowired
private CpUserDetailRedis cpUserDetailRedis; private CpUserDetailRedis cpUserDetailRedis;
@ -49,24 +60,46 @@ public class AccessServiceImpl implements AccessService {
roleDTOS.addAll(gridResult.getData()); roleDTOS.addAll(gridResult.getData());
} }
// 拼装 // 拼装操作key列表
Set<String> opeKeys = new HashSet<>(); Set<String> opeKeys = new HashSet<>();
// 角色ID列表
Set<String> roleIds = new HashSet<>();
roleDTOS.forEach(roleDto -> { roleDTOS.forEach(roleDto -> {
String roleId = roleDto.getId(); String roleId = roleDto.getId();
List<RoleOperationResultDTO> roleOperations = govAccessFeignClient.listOperationsByRoleId(roleId).getData(); Result<List<RoleOperationResultDTO>> result = govAccessFeignClient.listOperationsByRoleId(roleId);
roleOperations.forEach(roleOpe -> { if (result.getCode() != 0) {
if (roleOpe != null) { // 获取operation异常
opeKeys.add(roleOpe.getOperationKey()); logger.error("调用GovAccess,根据RoleId查询Operation列表失败:{}", result.getMsg());
} throw new RenException(EpmetErrorCode.SERVER_ERROR.getCode());
}); }
List<RoleOperationResultDTO> roleOperations = result.getData();
// 角色id
roleIds.add(roleDto.getId());
if (!CollectionUtils.isEmpty(roleOperations)) {
roleOperations.forEach(roleOpe -> {
if (roleOpe != null) {
opeKeys.add(roleOpe.getOperationKey());
}
});
}
}); });
// 查询该直属机关的orgIdPath
Result<CustomerAgencyDTO> agencyById = govOrgFeignClient.getAgencyById(agencyId);
if (agencyById.getCode() != 0 || agencyById.getData() == null) {
logger.error("根据当前机构id[{}]查询pids失败:{}", agencyId, agencyById.getMsg());
throw new RenException(EpmetErrorCode.SERVER_ERROR.getCode());
}
// 将最新权限缓存到redis,为了尽量统一操作入口,调用gov-access接口实现 // 将最新权限缓存到redis,为了尽量统一操作入口,调用gov-access接口实现
StaffPermCacheFormDTO staffPermCacheFormDTO = new StaffPermCacheFormDTO(); StaffPermCacheFormDTO staffPermCacheFormDTO = new StaffPermCacheFormDTO();
staffPermCacheFormDTO.setApp(app); staffPermCacheFormDTO.setApp(app);
staffPermCacheFormDTO.setClient(client); staffPermCacheFormDTO.setClient(client);
staffPermCacheFormDTO.setStaffId(staffId); staffPermCacheFormDTO.setStaffId(staffId);
staffPermCacheFormDTO.setPermissions(opeKeys); staffPermCacheFormDTO.setPermissions(opeKeys);
staffPermCacheFormDTO.setRoleIdList(roleIds);
// 拼接orgIdPath
staffPermCacheFormDTO.setOrgIdPath(String.format("%s:%s", agencyById.getData().getPids(), agencyId));
govAccessFeignClient.updatePermissionCache(staffPermCacheFormDTO); govAccessFeignClient.updatePermissionCache(staffPermCacheFormDTO);
return opeKeys; return opeKeys;
} }

2
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/CustomerAgencyDTO.java

@ -75,7 +75,7 @@ public class CustomerAgencyDTO implements Serializable {
/** /**
* 地区编码 * 地区编码
*/ */
private Integer areaCode; private String areaCode;
/** /**
* 删除标识 * 删除标识

27
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/CustomerIdDTO.java

@ -0,0 +1,27 @@
package com.epmet.dto;
import lombok.Data;
import java.io.Serializable;
/**
* 根据userId查询customerId 的DTO
* @Auther zxc
* @Create 2020-04-24 15:57
*/
@Data
public class CustomerIdDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* userId 用户id
*/
private String userId;
/**
* customerId 客户id
*/
private String customerId;
}

19
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/AddAgencyFormDTO.java

@ -20,6 +20,7 @@ package com.epmet.dto.form;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable; import java.io.Serializable;
@ -37,7 +38,7 @@ public class AddAgencyFormDTO implements Serializable {
* 上级机关组织Id(当前机关组织添加下级组织) * 上级机关组织Id(当前机关组织添加下级组织)
*/ */
@NotBlank(message = "上级机关组织ID不能为空") @NotBlank(message = "上级机关组织ID不能为空")
private String pid; private String parentAgencyId;
/** /**
* 机构组织名称 * 机构组织名称
@ -52,27 +53,31 @@ public class AddAgencyFormDTO implements Serializable {
* 市级: city * 市级: city
* 省级:province 机关级别社区级community街道:street,区县级: district,市级: city省级:province * 省级:province 机关级别社区级community街道:street,区县级: district,市级: city省级:province
*/ */
@NotBlank(message = "机关级别不能为空")
private String level; private String level;
/** /**
* 地区编码 * 地区编码
*/ */
private Integer areaCode; @NotBlank(message = "地区编码不能为空")
private String areaCode;
/**
* 国家
*/
private String district;
/** /**
* 省份 * 省份
*/ */
@NotBlank(message = "省级名称不能为空")
private String province; private String province;
/** /**
* 城市 * 城市
*/ */
@NotBlank(message = "市级名称不能为空")
private String city; private String city;
/**
* 区县
*/
@NotBlank(message = "区县名称不能为空")
private String district;
} }

22
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/AddDepartmentFormDTO.java

@ -16,20 +16,10 @@ package com.epmet.dto.form;
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
import lombok.Data; import lombok.Data;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import java.io.Serializable; import java.io.Serializable;
import java.util.List;
/**
* 添加部门人员DTO
* @Auther zxc
* @Create 2020-04-24 14:51
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/** /**
* 添加部门-接口入参 * 添加部门-接口入参
@ -41,16 +31,6 @@ public class AddDepartmentFormDTO implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/**
*部门id
*/
private String departmentId;
/**
* 选中人员id
*/
private List<String> selectedList;
/** /**
* 所属组织机构IDcustomer_agency.id * 所属组织机构IDcustomer_agency.id
*/ */
@ -60,11 +40,13 @@ public class AddDepartmentFormDTO implements Serializable {
/** /**
* 部门名称 * 部门名称
*/ */
@NotBlank(message = "部门名称不能为空")
private String departmentName; private String departmentName;
/** /**
* 部门职责 * 部门职责
*/ */
@NotBlank(message = "部门职责不能为空")
private String departmentDuty; private String departmentDuty;

31
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/AddDepartmentStaffFormDTO.java

@ -0,0 +1,31 @@
package com.epmet.dto.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
import java.util.List;
/**
* 添加部门人员DTO
* @Auther zxc
* @Create 2020-04-24 14:51
*/
@Data
public class AddDepartmentStaffFormDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
*部门id
*/
@NotBlank(message = "部门id不能为空")
private String departmentId;
/**
* 选中人员id
*/
@NotBlank(message = "选中人员不能为空")
private List selectedList;
}

5
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/EditGridFormDTO.java

@ -18,6 +18,11 @@ public class EditGridFormDTO implements Serializable {
*/ */
private String gridId; private String gridId;
/**
* pid 当前机关id
*/
private String agencyId;
/** /**
* 网格名称 * 网格名称
*/ */

4
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/StaffSubmitFromDTO.java

@ -16,6 +16,10 @@ import java.util.List;
@Data @Data
public class StaffSubmitFromDTO implements Serializable { public class StaffSubmitFromDTO implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/**
* 客户ID
*/
private String customerId;
/** /**
* 机关ID * 机关ID
*/ */

46
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/AgencyController.java

@ -17,18 +17,21 @@
package com.epmet.controller; package com.epmet.controller;
import com.epmet.commons.tools.annotation.LoginUser;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.dto.CustomerAgencyDTO;
import com.epmet.dto.form.*; import com.epmet.dto.form.*;
import com.epmet.dto.result.AddAgencyResultDTO; import com.epmet.dto.result.AddAgencyResultDTO;
import com.epmet.dto.result.AgencyListResultDTO; import com.epmet.dto.result.AgencyListResultDTO;
import com.epmet.dto.result.AgencysResultDTO; import com.epmet.dto.result.AgencysResultDTO;
import com.epmet.dto.result.SubAgencyResultDTO; import com.epmet.dto.result.SubAgencyResultDTO;
import com.epmet.entity.CustomerAgencyEntity;
import com.epmet.service.AgencyService; import com.epmet.service.AgencyService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List; import java.util.List;
@ -52,7 +55,8 @@ public class AgencyController {
* @Description 添加组织 * @Description 添加组织
*/ */
@PostMapping("addagency") @PostMapping("addagency")
public Result<AddAgencyResultDTO> addAgency(@RequestBody AddAgencyFormDTO formDTO) { public Result<AddAgencyResultDTO> addAgency(@LoginUser TokenDto tokenDTO, @RequestBody AddAgencyFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO);
return agencyService.addAgency(formDTO); return agencyService.addAgency(formDTO);
} }
@ -63,7 +67,8 @@ public class AgencyController {
* @Description 组织名称编辑 * @Description 组织名称编辑
*/ */
@PostMapping("editagency") @PostMapping("editagency")
public Result editAgency(@RequestBody EditAgencyFormDTO formDTO) { public Result editAgency(@LoginUser TokenDto tokenDTO, @RequestBody EditAgencyFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO);
return agencyService.editAgency(formDTO); return agencyService.editAgency(formDTO);
} }
@ -74,7 +79,8 @@ public class AgencyController {
* @Description 删除组织机关 * @Description 删除组织机关
*/ */
@PostMapping("removeagency") @PostMapping("removeagency")
public Result removeAgency(@RequestBody RemoveAgencyFormDTO formDTO) { public Result removeAgency(@LoginUser TokenDto tokenDTO, @RequestBody RemoveAgencyFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO);
return agencyService.removeAgency(formDTO); return agencyService.removeAgency(formDTO);
} }
@ -85,7 +91,8 @@ public class AgencyController {
* @Description 组织首页-获取组织机构信息 * @Description 组织首页-获取组织机构信息
*/ */
@PostMapping("agencydetail") @PostMapping("agencydetail")
public Result<AgencysResultDTO> agencyDetail(@RequestBody AgencydetailFormDTO formDTO) { public Result<AgencysResultDTO> agencyDetail(@LoginUser TokenDto tokenDTO, @RequestBody AgencydetailFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO);
return agencyService.agencyDetail(formDTO); return agencyService.agencyDetail(formDTO);
} }
@ -96,7 +103,8 @@ public class AgencyController {
* @Description 组织首页-下级机关列表 * @Description 组织首页-下级机关列表
*/ */
@PostMapping("subagencylist") @PostMapping("subagencylist")
public Result<SubAgencyResultDTO> subAgencyList(@RequestBody SubAgencyFormDTO formDTO) { public Result<SubAgencyResultDTO> subAgencyList(@LoginUser TokenDto tokenDTO, @RequestBody SubAgencyFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO);
return agencyService.subAgencyList(formDTO); return agencyService.subAgencyList(formDTO);
} }
@ -107,7 +115,25 @@ public class AgencyController {
* @Description 获取组织列表 * @Description 获取组织列表
*/ */
@PostMapping("agencylist") @PostMapping("agencylist")
public Result<List<AgencyListResultDTO>> agencyList(@RequestBody AgencyListFormDTO formDTO) { public Result<List<AgencyListResultDTO>> agencyList(@LoginUser TokenDto tokenDTO, @RequestBody AgencyListFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO);
return agencyService.agencyList(formDTO); return agencyService.agencyList(formDTO);
} }
/**
* 根据Id查询agency
* @param agencyId
* @return
*/
@PostMapping("{agencyId}")
public Result<CustomerAgencyDTO> getAgencyById(@PathVariable("agencyId") String agencyId) {
CustomerAgencyEntity agency = agencyService.getAgencyById(agencyId);
CustomerAgencyDTO customerAgencyDTO = new CustomerAgencyDTO();
if (agency != null) {
BeanUtils.copyProperties(agency, customerAgencyDTO);
return new Result<CustomerAgencyDTO>().ok(customerAgencyDTO);
}
return new Result<CustomerAgencyDTO>();
}
} }

28
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/DepartmentController.java

@ -30,9 +30,15 @@ public class DepartmentController {
@Autowired @Autowired
private CustomerStaffAgencyService customerStaffAgencyService; private CustomerStaffAgencyService customerStaffAgencyService;
/**
* 添加部门人员
* @param tokenDto
* @param addDepartmentStaffFormDTO
* @return
*/
@PostMapping(value = "adddepartmentstaff") @PostMapping(value = "adddepartmentstaff")
public Result addDepartmentStaff(@LoginUser TokenDto tokenDto, @RequestBody AddDepartmentFormDTO addDepartmentFormDTO){ public Result addDepartmentStaff(@LoginUser TokenDto tokenDto, @RequestBody AddDepartmentStaffFormDTO addDepartmentStaffFormDTO){
return null; return departmentService.addDepartmentStaff(tokenDto,addDepartmentStaffFormDTO);
} }
/** /**
@ -42,7 +48,8 @@ public class DepartmentController {
* @Description 添加部门 * @Description 添加部门
*/ */
@PostMapping("adddepartment") @PostMapping("adddepartment")
public Result<AddDepartmentResultDTO> addDepartment(@RequestBody AddDepartmentFormDTO formDTO) { public Result<AddDepartmentResultDTO> addDepartment(@LoginUser TokenDto tokenDTO, @RequestBody AddDepartmentFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO);
return departmentService.addDepartment(formDTO); return departmentService.addDepartment(formDTO);
} }
@ -53,7 +60,8 @@ public class DepartmentController {
* @Description 部门信息修改 * @Description 部门信息修改
*/ */
@PostMapping("editdepartment") @PostMapping("editdepartment")
public Result editDepartment(@RequestBody EditDepartmentFormDTO formDTO) { public Result editDepartment(@LoginUser TokenDto tokenDTO, @RequestBody EditDepartmentFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO);
return departmentService.editDepartment(formDTO); return departmentService.editDepartment(formDTO);
} }
@ -64,7 +72,8 @@ public class DepartmentController {
* @Description 删除部门 * @Description 删除部门
*/ */
@PostMapping("removedepartment") @PostMapping("removedepartment")
public Result removeDepartment(@RequestBody RemoveDepartmentFormDTO formDTO) { public Result removeDepartment(@LoginUser TokenDto tokenDTO, @RequestBody RemoveDepartmentFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO);
return departmentService.removeDepartment(formDTO); return departmentService.removeDepartment(formDTO);
} }
@ -75,7 +84,8 @@ public class DepartmentController {
* @Description 获取部门详情 * @Description 获取部门详情
*/ */
@PostMapping("departmentdetail") @PostMapping("departmentdetail")
public Result<DepartmentDetailResultDTO> departmentDetail(@RequestBody DepartmentdetailFormDTO formDTO) { public Result<DepartmentDetailResultDTO> departmentDetail(@LoginUser TokenDto tokenDTO, @RequestBody DepartmentdetailFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO);
return departmentService.departmentDetail(formDTO); return departmentService.departmentDetail(formDTO);
} }
@ -86,7 +96,8 @@ public class DepartmentController {
* @Description 组织首页-获取机关下部门列表 * @Description 组织首页-获取机关下部门列表
*/ */
@PostMapping("departmentinagencylist") @PostMapping("departmentinagencylist")
public Result<DepartmentInAgencyResultDTO> departmentInAgencyList(@RequestBody DepartmentInAgencyFormDTO formDTO) { public Result<DepartmentInAgencyResultDTO> departmentInAgencyList(@LoginUser TokenDto tokenDTO, @RequestBody DepartmentInAgencyFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO);
return departmentService.departmentInAgencyList(formDTO); return departmentService.departmentInAgencyList(formDTO);
} }
@ -97,7 +108,8 @@ public class DepartmentController {
* @Description 获取机构下部门列表 * @Description 获取机构下部门列表
*/ */
@PostMapping("departmentlist") @PostMapping("departmentlist")
public Result<List<DepartmentListResultDTO>> departmentList(@RequestBody DepartmentListFormDTO formDTO) { public Result<List<DepartmentListResultDTO>> departmentList(@LoginUser TokenDto tokenDTO, @RequestBody DepartmentListFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO);
return departmentService.departmentList(formDTO); return departmentService.departmentList(formDTO);
} }

11
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerGridDao.java

@ -21,6 +21,7 @@ import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.CustomerGridDTO; import com.epmet.dto.CustomerGridDTO;
import com.epmet.dto.CustomerStaffGridDTO; import com.epmet.dto.CustomerStaffGridDTO;
import com.epmet.dto.UserIdDTO;
import com.epmet.dto.form.CustomerGridFormDTO; import com.epmet.dto.form.CustomerGridFormDTO;
import com.epmet.dto.form.DeleteGridFormDTO; import com.epmet.dto.form.DeleteGridFormDTO;
import com.epmet.dto.form.ListCustomerGridFormDTO; import com.epmet.dto.form.ListCustomerGridFormDTO;
@ -110,7 +111,7 @@ public interface CustomerGridDao extends BaseDao<CustomerGridEntity> {
* @param gridName * @param gridName
* @return * @return
*/ */
String selectGridIdByGridName(@Param("gridName")String gridName); String selectGridIdByGridName(@Param("gridName")String gridName,@Param("agencyId")String pid);
/** /**
* 编辑网格信息 * 编辑网格信息
@ -124,6 +125,14 @@ public interface CustomerGridDao extends BaseDao<CustomerGridEntity> {
*/ */
void deleteGrid(DeleteGridFormDTO deleteGridFormDTO); void deleteGrid(DeleteGridFormDTO deleteGridFormDTO);
/**
*
* @Description 根据gridId查询userId
* @Author zxc
* @CreatedTime 2020/4/26 10:08
*/
List<UserIdDTO> selectUserIdByGrid(@Param("gridId")String gridId);
/** /**

14
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerStaffDepartmentDao.java

@ -33,5 +33,19 @@ import java.util.List;
@Mapper @Mapper
public interface CustomerStaffDepartmentDao extends BaseDao<CustomerStaffDepartmentEntity> { public interface CustomerStaffDepartmentDao extends BaseDao<CustomerStaffDepartmentEntity> {
/**
*
* @param departmentId
* @return
* * @Author sun
* @Description 查询部门下工作人员的用户Id集合
*/
List<String> selectUserIdByDepartmentId(@Param("departmentId") String departmentId); List<String> selectUserIdByDepartmentId(@Param("departmentId") String departmentId);
/**
* 修改部门人数
* @param
* @auther zxc
*/
void updateDepartmentStaffCount(@Param("addCount")Integer addCount,@Param("departmentId")String departmentId);
} }

2
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/CustomerAgencyEntity.java

@ -75,7 +75,7 @@ public class CustomerAgencyEntity extends BaseEpmetEntity {
/** /**
* 地区编码 * 地区编码
*/ */
private Integer areaCode; private String areaCode;
/** /**
* 总人数 * 总人数

2
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/CustomerAgencyExcel.java

@ -53,7 +53,7 @@ public class CustomerAgencyExcel {
private String level; private String level;
@Excel(name = "地区编码") @Excel(name = "地区编码")
private Integer areaCode; private String areaCode;
@Excel(name = "删除标识") @Excel(name = "删除标识")
private String delFlag; private String delFlag;

36
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/feign/EpmetUserFeignClient.java

@ -3,6 +3,18 @@ package com.epmet.feign;
import com.epmet.commons.tools.constant.ServiceConstant; import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.*; import com.epmet.dto.*;
import com.epmet.dto.CustomerStaffDTO;
import com.epmet.dto.CustomerStaffGridDTO;
import com.epmet.dto.StaffGridListDTO;
import com.epmet.dto.form.AddDepartmentStaffFormDTO;
import com.epmet.dto.form.DepartmentInStaffFormDTO;
import com.epmet.dto.form.StaffInfoFromDTO;
import com.epmet.dto.form.StaffSubmitFromDTO;
import com.epmet.dto.form.StaffsInAgencyFromDTO;
import com.epmet.dto.result.DepartInStaffListResultDTO;
import com.epmet.dto.result.StaffDetailResultDTO;
import com.epmet.dto.result.StaffInfoResultDTO;
import com.epmet.dto.result.StaffInitResultDTO;
import com.epmet.dto.form.*; import com.epmet.dto.form.*;
import com.epmet.dto.result.*; import com.epmet.dto.result.*;
import com.epmet.dto.CustomerStaffDTO; import com.epmet.dto.CustomerStaffDTO;
@ -33,6 +45,11 @@ public interface EpmetUserFeignClient {
@PostMapping(value = "/epmetuser/customerstaff/getstaffinfobyuserid") @PostMapping(value = "/epmetuser/customerstaff/getstaffinfobyuserid")
Result<CustomerStaffDTO> getCustomerStaffInfoByUserId(@RequestBody CustomerStaffDTO formDTO); Result<CustomerStaffDTO> getCustomerStaffInfoByUserId(@RequestBody CustomerStaffDTO formDTO);
/**
* 获取网格下人员具体信息(头像名字...)
* @param customerStaffGridDTOS
* @return
*/
@PostMapping("/epmetuser/customerstaff/selectstaffgridlistbyuserid") @PostMapping("/epmetuser/customerstaff/selectstaffgridlistbyuserid")
Result<List<StaffGridListDTO>> getStaffGridList(@RequestBody List<CustomerStaffGridDTO> customerStaffGridDTOS); Result<List<StaffGridListDTO>> getStaffGridList(@RequestBody List<CustomerStaffGridDTO> customerStaffGridDTOS);
@ -44,8 +61,13 @@ public interface EpmetUserFeignClient {
@PostMapping("/epmetuser/customerstaff/staffsinagency") @PostMapping("/epmetuser/customerstaff/staffsinagency")
Result<List<StaffInfoResultDTO>> getStaffInfoForHome(StaffsInAgencyFromDTO fromDTO); Result<List<StaffInfoResultDTO>> getStaffInfoForHome(StaffsInAgencyFromDTO fromDTO);
/**
* 获取网格下未禁用的人员数量
* @param userIdDTO
* @return
*/
@PostMapping(value = "/epmetuser/customerstaff/selectgridstaffcountbyuserid") @PostMapping(value = "/epmetuser/customerstaff/selectgridstaffcountbyuserid")
Result<GridStaffCountDTO> selectGridStaffCountByUserId(@RequestBody UserIdDTO userIdDTO); Result<GridStaffCountDTO> selectGridStaffCountByUserId(@RequestBody List<UserIdDTO> userIdDTO);
/** /**
* 工作人员列表 * 工作人员列表
@ -79,7 +101,7 @@ public interface EpmetUserFeignClient {
* @return Result * @return Result
*/ */
@PostMapping("/epmetuser/customerstaff/addstaff") @PostMapping("/epmetuser/customerstaff/addstaff")
Result addStaff(@RequestBody StaffSubmitFromDTO fromDTO); Result<CustomerStaffDTO> addStaff(@RequestBody StaffSubmitFromDTO fromDTO);
/** /**
* 人员编辑 * 人员编辑
@ -115,7 +137,15 @@ public interface EpmetUserFeignClient {
* @Description 根据客户Id及userId集合查询用户基本信息 * @Description 根据客户Id及userId集合查询用户基本信息
*/ */
@PostMapping("/epmetuser/customerstaff/getdepartmentstafflist") @PostMapping("/epmetuser/customerstaff/getdepartmentstafflist")
Result<List<DepartInStaffListResultDTO>> getDepartmentStaffList(DepartmentInStaffFormDTO departmentInStaffFormDTO); Result<List<DepartInStaffListResultDTO>> getDepartmentStaffList(@RequestBody DepartmentInStaffFormDTO departmentInStaffFormDTO);
/**
* 根据userId查询customerId
* @param addDepartmentStaffFormDTO
* @auther zxc
*/
@PostMapping("/epmetuser/customerstaff/selectcustomeridbyuserid")
Result<List<CustomerIdDTO>> selectCustomerIdByUserId(AddDepartmentStaffFormDTO addDepartmentStaffFormDTO);
/** /**
* @Description 通过userId列表查询未被禁用的用户信息 * @Description 通过userId列表查询未被禁用的用户信息

21
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/feign/fallback/EpmetUserFeignClientFallBack.java

@ -4,6 +4,18 @@ import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.utils.ModuleUtils; import com.epmet.commons.tools.utils.ModuleUtils;
import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.*; import com.epmet.dto.*;
import com.epmet.dto.CustomerStaffDTO;
import com.epmet.dto.CustomerStaffGridDTO;
import com.epmet.dto.StaffGridListDTO;
import com.epmet.dto.form.AddDepartmentStaffFormDTO;
import com.epmet.dto.form.DepartmentInStaffFormDTO;
import com.epmet.dto.form.StaffInfoFromDTO;
import com.epmet.dto.form.StaffSubmitFromDTO;
import com.epmet.dto.form.StaffsInAgencyFromDTO;
import com.epmet.dto.result.DepartInStaffListResultDTO;
import com.epmet.dto.result.StaffDetailResultDTO;
import com.epmet.dto.result.StaffInfoResultDTO;
import com.epmet.dto.result.StaffInitResultDTO;
import com.epmet.dto.form.*; import com.epmet.dto.form.*;
import com.epmet.dto.result.*; import com.epmet.dto.result.*;
import com.epmet.dto.CustomerStaffDTO; import com.epmet.dto.CustomerStaffDTO;
@ -35,7 +47,7 @@ public class EpmetUserFeignClientFallBack implements EpmetUserFeignClient {
} }
@Override @Override
public Result<GridStaffCountDTO> selectGridStaffCountByUserId(UserIdDTO userIdDTO) { public Result<GridStaffCountDTO> selectGridStaffCountByUserId(List<UserIdDTO> userIdDTO) {
return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "selectGridStaffCountByUserId", userIdDTO); return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "selectGridStaffCountByUserId", userIdDTO);
} }
@ -61,7 +73,7 @@ public class EpmetUserFeignClientFallBack implements EpmetUserFeignClient {
} }
@Override @Override
public Result addStaff(StaffSubmitFromDTO fromDTO) { public Result<CustomerStaffDTO> addStaff(StaffSubmitFromDTO fromDTO) {
return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "addStaff", fromDTO); return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "addStaff", fromDTO);
} }
@ -79,6 +91,11 @@ public class EpmetUserFeignClientFallBack implements EpmetUserFeignClient {
public Result disabledStaff(StaffInfoFromDTO fromDTO) { public Result disabledStaff(StaffInfoFromDTO fromDTO) {
return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "disabledStaff", fromDTO); return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "disabledStaff", fromDTO);
} }
@Override
public Result<List<CustomerIdDTO>> selectCustomerIdByUserId(AddDepartmentStaffFormDTO addDepartmentStaffFormDTO) {
return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "selectCustomerIdByUserId", addDepartmentStaffFormDTO);
}
@Override @Override
public Result<List<CommonStaffInfoResultDTO>> enableStaffMsgList(CommonUserIdListFormDTO userIdList) { public Result<List<CommonStaffInfoResultDTO>> enableStaffMsgList(CommonUserIdListFormDTO userIdList) {

8
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/AgencyService.java

@ -23,6 +23,7 @@ import com.epmet.dto.result.AddAgencyResultDTO;
import com.epmet.dto.result.AgencyListResultDTO; import com.epmet.dto.result.AgencyListResultDTO;
import com.epmet.dto.result.AgencysResultDTO; import com.epmet.dto.result.AgencysResultDTO;
import com.epmet.dto.result.SubAgencyResultDTO; import com.epmet.dto.result.SubAgencyResultDTO;
import com.epmet.entity.CustomerAgencyEntity;
import java.util.List; import java.util.List;
@ -80,4 +81,11 @@ public interface AgencyService {
* @Description 获取组织列表 * @Description 获取组织列表
*/ */
Result<List<AgencyListResultDTO>> agencyList(AgencyListFormDTO formDTO); Result<List<AgencyListResultDTO>> agencyList(AgencyListFormDTO formDTO);
/**
* 根据Id查询
* @param agencyId
* @return
*/
CustomerAgencyEntity getAgencyById(String agencyId);
} }

9
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/DepartmentService.java

@ -17,7 +17,9 @@
package com.epmet.service; package com.epmet.service;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.CustomerIdDTO;
import com.epmet.dto.form.*; import com.epmet.dto.form.*;
import com.epmet.dto.result.*; import com.epmet.dto.result.*;
@ -78,6 +80,13 @@ public interface DepartmentService {
*/ */
Result<List<DepartmentListResultDTO>> departmentList(DepartmentListFormDTO formDTO); Result<List<DepartmentListResultDTO>> departmentList(DepartmentListFormDTO formDTO);
/**
* 添加部门人员
* @param addDepartmentStaffFormDTO
* @return
*/
Result addDepartmentStaff(TokenDto tokenDto,AddDepartmentStaffFormDTO addDepartmentStaffFormDTO);
/** /**
* @Description 部门人员移除 * @Description 部门人员移除
* @Param CommonDepartmentStaffInfoFormDTO * @Param CommonDepartmentStaffInfoFormDTO

28
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/AgencyServiceImpl.java

@ -28,6 +28,7 @@ import com.epmet.dto.form.*;
import com.epmet.dto.result.*; import com.epmet.dto.result.*;
import com.epmet.entity.CustomerAgencyEntity; import com.epmet.entity.CustomerAgencyEntity;
import com.epmet.service.AgencyService; import com.epmet.service.AgencyService;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -65,14 +66,19 @@ public class AgencyServiceImpl implements AgencyService {
entity.setOrganizationName(formDTO.getAgencyName()); entity.setOrganizationName(formDTO.getAgencyName());
entity.setTotalUser(NumConstant.ZERO); entity.setTotalUser(NumConstant.ZERO);
//1:查询上级机关信息 //1:查询上级机关信息
CustomerAgencyEntity parentEntity = customerAgencyDao.selectById(formDTO.getPid()); CustomerAgencyEntity parentEntity = customerAgencyDao.selectById(formDTO.getParentAgencyId());
if (null == parentEntity) {
log.error(CustomerAgencyConstant.SAVE_EXCEPTION);
throw new RenException(CustomerAgencyConstant.SAVE_EXCEPTION);
}
entity.setPid(parentEntity.getId());
entity.setCustomerId(parentEntity.getCustomerId()); entity.setCustomerId(parentEntity.getCustomerId());
if (null == parentEntity.getPid()) { if (StringUtils.isBlank(parentEntity.getPid())) {
entity.setPids(parentEntity.getId()); entity.setPids(parentEntity.getId());
entity.setAllParentName(parentEntity.getOrganizationName()); entity.setAllParentName(parentEntity.getOrganizationName());
} else { } else {
entity.setPids(":" + parentEntity.getId()); entity.setPids(parentEntity.getPids()+":" + parentEntity.getId());
entity.setAllParentName("-" + parentEntity.getOrganizationName()); entity.setAllParentName(parentEntity.getAllParentName()+"-" + parentEntity.getOrganizationName());
} }
//2:保存组织信息 //2:保存组织信息
if (customerAgencyDao.insert(entity) < NumConstant.ONE) { if (customerAgencyDao.insert(entity) < NumConstant.ONE) {
@ -121,7 +127,14 @@ public class AgencyServiceImpl implements AgencyService {
result.setMsg(EpmetErrorCode.NOT_DEL_AGENCY.getMsg()); result.setMsg(EpmetErrorCode.NOT_DEL_AGENCY.getMsg());
return result; return result;
} }
//2:删除当前机关组织(逻辑删) //2:不存在下级机关,本级存在工作人员的不能删除
CustomerAgencyEntity entity = customerAgencyDao.selectById(formDTO.getAgencyId());
if (null != entity && entity.getTotalUser() > NumConstant.ZERO) {
result.setCode(EpmetErrorCode.NOT_DEL_AGENCY_PER.getCode());
result.setMsg(EpmetErrorCode.NOT_DEL_AGENCY_PER.getMsg());
return result;
}
//3:删除当前机关组织(逻辑删)
if (customerAgencyDao.deleteById(formDTO.getAgencyId()) < NumConstant.ONE) { if (customerAgencyDao.deleteById(formDTO.getAgencyId()) < NumConstant.ONE) {
log.error(CustomerAgencyConstant.DEL_EXCEPTION); log.error(CustomerAgencyConstant.DEL_EXCEPTION);
throw new RenException(CustomerAgencyConstant.DEL_EXCEPTION); throw new RenException(CustomerAgencyConstant.DEL_EXCEPTION);
@ -184,4 +197,9 @@ public class AgencyServiceImpl implements AgencyService {
List<AgencyListResultDTO> agencyList = customerAgencyDao.selectAgencyList(formDTO.getAgencyId()); List<AgencyListResultDTO> agencyList = customerAgencyDao.selectAgencyList(formDTO.getAgencyId());
return new Result<List<AgencyListResultDTO>>().ok(agencyList); return new Result<List<AgencyListResultDTO>>().ok(agencyList);
} }
@Override
public CustomerAgencyEntity getAgencyById(String agencyId) {
return customerAgencyDao.selectById(agencyId);
}
} }

16
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerGridServiceImpl.java

@ -192,6 +192,7 @@ public class CustomerGridServiceImpl extends BaseServiceImpl<CustomerGridDao, Cu
public Result<GridDetailResultDTO> griddetail(CustomerGridFormDTO customerGridFormDTO) { public Result<GridDetailResultDTO> griddetail(CustomerGridFormDTO customerGridFormDTO) {
GridDetailResultDTO griddetail = baseDao.griddetail(customerGridFormDTO); GridDetailResultDTO griddetail = baseDao.griddetail(customerGridFormDTO);
List<CustomerStaffGridDTO> customerStaffGridDTOS = baseDao.selectUserIdByGridId(customerGridFormDTO); List<CustomerStaffGridDTO> customerStaffGridDTOS = baseDao.selectUserIdByGridId(customerGridFormDTO);
//获取人员具体信息(头像、名字...)
Result<List<StaffGridListDTO>> staffGridList = epmetUserFeignClient.getStaffGridList(customerStaffGridDTOS); Result<List<StaffGridListDTO>> staffGridList = epmetUserFeignClient.getStaffGridList(customerStaffGridDTOS);
griddetail.setStaffGridList(staffGridList.getData()); griddetail.setStaffGridList(staffGridList.getData());
return new Result<GridDetailResultDTO>().ok(griddetail); return new Result<GridDetailResultDTO>().ok(griddetail);
@ -200,6 +201,10 @@ public class CustomerGridServiceImpl extends BaseServiceImpl<CustomerGridDao, Cu
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result<AddGridResultDTO> addGrid(TokenDto tokenDto, AddGridFormDTO addGridFormDTO) { public Result<AddGridResultDTO> addGrid(TokenDto tokenDto, AddGridFormDTO addGridFormDTO) {
String checkGridName = baseDao.selectGridIdByGridName(addGridFormDTO.getGridName(),addGridFormDTO.getAgencyId());
if (checkGridName!=null){
return new Result().error(EpmetErrorCode.NOT_ADD_GRID.getCode());
}
CustomerGridEntity customerGridEntity = new CustomerGridEntity(); CustomerGridEntity customerGridEntity = new CustomerGridEntity();
customerGridEntity.setCustomerId(baseDao.selectCustomerIdByUserId(tokenDto.getUserId())); customerGridEntity.setCustomerId(baseDao.selectCustomerIdByUserId(tokenDto.getUserId()));
customerGridEntity.setGridName(addGridFormDTO.getGridName()); customerGridEntity.setGridName(addGridFormDTO.getGridName());
@ -211,7 +216,7 @@ public class CustomerGridServiceImpl extends BaseServiceImpl<CustomerGridDao, Cu
customerGridEntity.setPid(addGridFormDTO.getAgencyId()); customerGridEntity.setPid(addGridFormDTO.getAgencyId());
customerGridEntity.setPids(baseDao.selectPidsByPid(addGridFormDTO.getAgencyId())); customerGridEntity.setPids(baseDao.selectPidsByPid(addGridFormDTO.getAgencyId()));
baseDao.insert(customerGridEntity); baseDao.insert(customerGridEntity);
String gridId = baseDao.selectGridIdByGridName(addGridFormDTO.getGridName()); String gridId = baseDao.selectGridIdByGridName(addGridFormDTO.getGridName(),addGridFormDTO.getAgencyId());
AddGridResultDTO addGridResultDTO = new AddGridResultDTO(); AddGridResultDTO addGridResultDTO = new AddGridResultDTO();
addGridResultDTO.setGridId(gridId); addGridResultDTO.setGridId(gridId);
return new Result<AddGridResultDTO>().ok(addGridResultDTO); return new Result<AddGridResultDTO>().ok(addGridResultDTO);
@ -225,6 +230,10 @@ public class CustomerGridServiceImpl extends BaseServiceImpl<CustomerGridDao, Cu
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result editGrid(TokenDto tokenDto, EditGridFormDTO editGridFormDTO) { public Result editGrid(TokenDto tokenDto, EditGridFormDTO editGridFormDTO) {
String checkGridName = baseDao.selectGridIdByGridName(editGridFormDTO.getGridName(),editGridFormDTO.getAgencyId());
if (checkGridName!=null){
return new Result().error(EpmetErrorCode.NOT_ADD_GRID.getCode());
}
CustomerGridDTO customerGridDTO = new CustomerGridDTO(); CustomerGridDTO customerGridDTO = new CustomerGridDTO();
customerGridDTO.setManageDistrict(editGridFormDTO.getManageDistrict()); customerGridDTO.setManageDistrict(editGridFormDTO.getManageDistrict());
customerGridDTO.setGridName(editGridFormDTO.getGridName()); customerGridDTO.setGridName(editGridFormDTO.getGridName());
@ -237,10 +246,9 @@ public class CustomerGridServiceImpl extends BaseServiceImpl<CustomerGridDao, Cu
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result deleteGrid(TokenDto tokenDto,DeleteGridFormDTO deleteGridFormDTO) { public Result deleteGrid(TokenDto tokenDto,DeleteGridFormDTO deleteGridFormDTO) {
UserIdDTO userIdDTO = new UserIdDTO(); List<UserIdDTO> userIdDTOS = baseDao.selectUserIdByGrid(deleteGridFormDTO.getGridId());
userIdDTO.setUserId(tokenDto.getUserId());
deleteGridFormDTO.setUserId(tokenDto.getUserId()); deleteGridFormDTO.setUserId(tokenDto.getUserId());
Result<GridStaffCountDTO> gridStaffCountDTOResult = epmetUserFeignClient.selectGridStaffCountByUserId(userIdDTO); Result<GridStaffCountDTO> gridStaffCountDTOResult = epmetUserFeignClient.selectGridStaffCountByUserId(userIdDTOS);
if (gridStaffCountDTOResult.getData().getEnableCount()==0){ if (gridStaffCountDTOResult.getData().getEnableCount()==0){
baseDao.deleteGrid(deleteGridFormDTO); baseDao.deleteGrid(deleteGridFormDTO);
}else { }else {

29
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/DepartmentServiceImpl.java

@ -20,12 +20,14 @@ package com.epmet.service.impl;
import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.utils.Result;
import com.epmet.constant.CustomerDepartmentConstant; import com.epmet.constant.CustomerDepartmentConstant;
import com.epmet.dao.CustomerAgencyDao; import com.epmet.dao.CustomerAgencyDao;
import com.epmet.dao.CustomerDepartmentDao; import com.epmet.dao.CustomerDepartmentDao;
import com.epmet.dao.CustomerStaffDepartmentDao; import com.epmet.dao.CustomerStaffDepartmentDao;
import com.epmet.dto.CustomerIdDTO;
import com.epmet.dto.CustomerDepartmentDTO; import com.epmet.dto.CustomerDepartmentDTO;
import com.epmet.dto.CustomerStaffDepartmentDTO; import com.epmet.dto.CustomerStaffDepartmentDTO;
import com.epmet.dto.StaffRoleDTO; import com.epmet.dto.StaffRoleDTO;
@ -33,6 +35,7 @@ import com.epmet.dto.form.*;
import com.epmet.dto.result.*; import com.epmet.dto.result.*;
import com.epmet.entity.CustomerAgencyEntity; import com.epmet.entity.CustomerAgencyEntity;
import com.epmet.entity.CustomerDepartmentEntity; import com.epmet.entity.CustomerDepartmentEntity;
import com.epmet.entity.CustomerStaffDepartmentEntity;
import com.epmet.feign.EpmetUserFeignClient; import com.epmet.feign.EpmetUserFeignClient;
import com.epmet.service.CustomerDepartmentService; import com.epmet.service.CustomerDepartmentService;
import com.epmet.service.CustomerStaffDepartmentService; import com.epmet.service.CustomerStaffDepartmentService;
@ -207,6 +210,32 @@ public class DepartmentServiceImpl implements DepartmentService {
return new Result<List<DepartmentListResultDTO>>().ok(departmentList); return new Result<List<DepartmentListResultDTO>>().ok(departmentList);
} }
/**
* 添加部门人员
* @param tokenDto
* @param addDepartmentStaffFormDTO
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Result addDepartmentStaff(TokenDto tokenDto,AddDepartmentStaffFormDTO addDepartmentStaffFormDTO) {
CustomerStaffDepartmentEntity customerStaffDepartmentEntity = new CustomerStaffDepartmentEntity();
Result<List<CustomerIdDTO>> listResult = epmetUserFeignClient.selectCustomerIdByUserId(addDepartmentStaffFormDTO);
List<CustomerIdDTO> data = listResult.getData();
customerStaffDepartmentEntity.setDepartmentId(addDepartmentStaffFormDTO.getDepartmentId());
customerStaffDepartmentEntity.setCreatedBy(tokenDto.getUserId());
customerStaffDepartmentEntity.setUpdatedBy(tokenDto.getUserId());
customerStaffDepartmentEntity.setDelFlag("0");
customerStaffDepartmentEntity.setRevision(0);
for (CustomerIdDTO customerIdDTO : data) {
customerStaffDepartmentEntity.setUserId(customerIdDTO.getUserId());
customerStaffDepartmentEntity.setCustomerId(customerIdDTO.getCustomerId());
customerStaffDepartmentDao.insert(customerStaffDepartmentEntity);
}
customerStaffDepartmentDao.updateDepartmentStaffCount(data.size(),addDepartmentStaffFormDTO.getDepartmentId());
return new Result();
}
/** /**
* @Description 部门人员移除 * @Description 部门人员移除

56
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/StaffServiceImpl.java

@ -1,8 +1,10 @@
package com.epmet.service.impl; package com.epmet.service.impl;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.CustomerStaffAgencyDTO; import com.epmet.dto.CustomerStaffAgencyDTO;
import com.epmet.dto.CustomerStaffDTO;
import com.epmet.dto.form.StaffInfoFromDTO; import com.epmet.dto.form.StaffInfoFromDTO;
import com.epmet.dto.form.StaffSubmitFromDTO; import com.epmet.dto.form.StaffSubmitFromDTO;
import com.epmet.dto.form.StaffsInAgencyFromDTO; import com.epmet.dto.form.StaffsInAgencyFromDTO;
@ -11,6 +13,7 @@ import com.epmet.dto.result.StaffInfoResultDTO;
import com.epmet.dto.result.StaffInitResultDTO; import com.epmet.dto.result.StaffInitResultDTO;
import com.epmet.dto.result.StaffsInAgencyResultDTO; import com.epmet.dto.result.StaffsInAgencyResultDTO;
import com.epmet.entity.CustomerAgencyEntity; import com.epmet.entity.CustomerAgencyEntity;
import com.epmet.entity.CustomerStaffAgencyEntity;
import com.epmet.feign.EpmetUserFeignClient; import com.epmet.feign.EpmetUserFeignClient;
import com.epmet.feign.OperCrmFeignClient; import com.epmet.feign.OperCrmFeignClient;
import com.epmet.service.CustomerAgencyService; import com.epmet.service.CustomerAgencyService;
@ -18,7 +21,9 @@ import com.epmet.service.CustomerStaffAgencyService;
import com.epmet.service.StaffService; import com.epmet.service.StaffService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -43,11 +48,17 @@ public class StaffServiceImpl implements StaffService {
StaffsInAgencyResultDTO resultDTO = new StaffsInAgencyResultDTO(); StaffsInAgencyResultDTO resultDTO = new StaffsInAgencyResultDTO();
//获取机关所在客户ID和人员总数 //获取机关所在客户ID和人员总数
CustomerAgencyEntity customerAgencyEntity = customerAgencyService.selectById(fromDTO.getAgencyId()); CustomerAgencyEntity customerAgencyEntity = customerAgencyService.selectById(fromDTO.getAgencyId());
if (null == customerAgencyEntity) {
resultDTO.setStaffList(new ArrayList<>());
resultDTO.setStaffCount(0);
return new Result<StaffsInAgencyResultDTO>().ok(resultDTO);
}
resultDTO.setStaffCount(customerAgencyEntity.getTotalUser()); resultDTO.setStaffCount(customerAgencyEntity.getTotalUser());
fromDTO.setCustomerId(customerAgencyEntity.getCustomerId()); fromDTO.setCustomerId(customerAgencyEntity.getCustomerId());
List<CustomerStaffAgencyDTO> customerStaffAgencyList = customerStaffAgencyService.getCustomerStaffAgencyList(fromDTO).getData(); List<CustomerStaffAgencyDTO> customerStaffAgencyList = customerStaffAgencyService.getCustomerStaffAgencyList(fromDTO).getData();
if (null == customerStaffAgencyList || customerStaffAgencyList.size() == 0) { if (null == customerStaffAgencyList || customerStaffAgencyList.size() == 0) {
return new Result<StaffsInAgencyResultDTO>().ok(null); resultDTO.setStaffList(new ArrayList<>());
return new Result<StaffsInAgencyResultDTO>().ok(resultDTO);
} }
//提取所有userID //提取所有userID
List<String> staffIds = customerStaffAgencyList.stream().map(CustomerStaffAgencyDTO::getUserId).collect(Collectors.toList()); List<String> staffIds = customerStaffAgencyList.stream().map(CustomerStaffAgencyDTO::getUserId).collect(Collectors.toList());
@ -62,6 +73,9 @@ public class StaffServiceImpl implements StaffService {
public Result<List<StaffInfoResultDTO>> getStaffList(StaffsInAgencyFromDTO fromDTO) { public Result<List<StaffInfoResultDTO>> getStaffList(StaffsInAgencyFromDTO fromDTO) {
//获取机关所在客户ID //获取机关所在客户ID
CustomerAgencyEntity customerAgencyEntity = customerAgencyService.selectById(fromDTO.getAgencyId()); CustomerAgencyEntity customerAgencyEntity = customerAgencyService.selectById(fromDTO.getAgencyId());
if (null == customerAgencyEntity) {
return new Result<List<StaffInfoResultDTO>>().ok(new ArrayList<>());
}
fromDTO.setCustomerId(customerAgencyEntity.getCustomerId()); fromDTO.setCustomerId(customerAgencyEntity.getCustomerId());
List<CustomerStaffAgencyDTO> customerStaffAgencyList = customerStaffAgencyService.getCustomerStaffAgencyList(fromDTO).getData(); List<CustomerStaffAgencyDTO> customerStaffAgencyList = customerStaffAgencyService.getCustomerStaffAgencyList(fromDTO).getData();
if (null == customerStaffAgencyList || customerStaffAgencyList.size() == 0) { if (null == customerStaffAgencyList || customerStaffAgencyList.size() == 0) {
@ -71,8 +85,7 @@ public class StaffServiceImpl implements StaffService {
List<String> staffIds = customerStaffAgencyList.stream().map(CustomerStaffAgencyDTO::getUserId).collect(Collectors.toList()); List<String> staffIds = customerStaffAgencyList.stream().map(CustomerStaffAgencyDTO::getUserId).collect(Collectors.toList());
fromDTO.setStaffList(staffIds); fromDTO.setStaffList(staffIds);
//获取用户列表 //获取用户列表
Result<List<StaffInfoResultDTO>> staffInfoListResult = epmetUserFeignClient.getStaffInfoForHome(fromDTO); return epmetUserFeignClient.getStaffList(fromDTO);
return null;
} }
@Override @Override
@ -90,24 +103,47 @@ public class StaffServiceImpl implements StaffService {
} }
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Result addStaff(TokenDto tokenDto, StaffSubmitFromDTO fromDTO) { public Result addStaff(TokenDto tokenDto, StaffSubmitFromDTO fromDTO) {
CustomerAgencyEntity customerAgencyEntity = customerAgencyService.selectById(fromDTO.getAgencyId());
fromDTO.setApp(tokenDto.getApp()); fromDTO.setApp(tokenDto.getApp());
fromDTO.setClient(tokenDto.getClient()); fromDTO.setClient(tokenDto.getClient());
Result result = epmetUserFeignClient.addStaff(fromDTO); fromDTO.setCustomerId(customerAgencyEntity.getCustomerId());
//机关总人数加一 Result<CustomerStaffDTO> result = epmetUserFeignClient.addStaff(fromDTO);
if (result.success()) {
CustomerAgencyEntity customerAgencyEntity = customerAgencyService.selectById(fromDTO.getAgencyId()); if (!result.success()) {
customerAgencyEntity.setTotalUser(customerAgencyEntity.getTotalUser() + 1); if (result.getCode() != EpmetErrorCode.SERVER_ERROR.getCode()) {
customerAgencyService.updateById(customerAgencyEntity); return new Result().error(result.getCode(), result.getMsg());
}
return new Result().error(EpmetErrorCode.STAFF_ADD_FAILED.getCode(), EpmetErrorCode.STAFF_ADD_FAILED.getMsg());
} }
//人员机关关系表
CustomerStaffAgencyEntity customerStaffAgencyEntity = new CustomerStaffAgencyEntity();
customerStaffAgencyEntity.setCustomerId(customerAgencyEntity.getCustomerId());
customerStaffAgencyEntity.setUserId(result.getData().getUserId());
customerStaffAgencyEntity.setAgencyId(customerAgencyEntity.getId());
customerStaffAgencyService.insert(customerStaffAgencyEntity);
//机关总人数加一
customerAgencyEntity.setTotalUser(customerAgencyEntity.getTotalUser() + 1);
customerAgencyService.updateById(customerAgencyEntity);
return new Result(); return new Result();
} }
@Override @Override
public Result editStaff(TokenDto tokenDto, StaffSubmitFromDTO fromDTO) { public Result editStaff(TokenDto tokenDto, StaffSubmitFromDTO fromDTO) {
CustomerAgencyEntity customerAgencyEntity = customerAgencyService.selectById(fromDTO.getAgencyId());
fromDTO.setCustomerId(customerAgencyEntity.getCustomerId());
fromDTO.setApp(tokenDto.getApp()); fromDTO.setApp(tokenDto.getApp());
fromDTO.setClient(tokenDto.getClient()); fromDTO.setClient(tokenDto.getClient());
return epmetUserFeignClient.editStaff(fromDTO); Result result = epmetUserFeignClient.editStaff(fromDTO);
if (!result.success()) {
if (result.getCode() != EpmetErrorCode.SERVER_ERROR.getCode()) {
return new Result().error(result.getCode(), result.getMsg());
}
return new Result().error(EpmetErrorCode.STAFF_EDIT_FAILED.getCode(), EpmetErrorCode.STAFF_EDIT_FAILED.getMsg());
}
return result;
} }
@Override @Override

4
epmet-module/gov-org/gov-org-server/src/main/resources/db/migration/epmet_gov_org.sql

@ -110,4 +110,6 @@ ALTER TABLE customer_agency ADD (
PROVINCE VARCHAR (32) DEFAULT NULL COMMENT '省份', PROVINCE VARCHAR (32) DEFAULT NULL COMMENT '省份',
CITY VARCHAR (32) DEFAULT NULL COMMENT '城市', CITY VARCHAR (32) DEFAULT NULL COMMENT '城市',
DISTRICT VARCHAR (32) DEFAULT NULL COMMENT '区县' DISTRICT VARCHAR (32) DEFAULT NULL COMMENT '区县'
); );
ALTER TABLE customer_agency MODIFY AREA_CODE VARCHAR(10) NOT NULL;

4
epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerAgencyDao.xml

@ -24,8 +24,8 @@
<!-- 查询客户对应的根级组织 --> <!-- 查询客户对应的根级组织 -->
<select id="selectStaffOrgList" parameterType="map" resultType="com.epmet.dto.result.StaffOrgsResultDTO"> <select id="selectStaffOrgList" parameterType="map" resultType="com.epmet.dto.result.StaffOrgsResultDTO">
SELECT SELECT
ca.pid AS agencyId, ca.id AS rootAgencyId,
ca.ORGANIZATION_NAME AS agencyName, ca.ORGANIZATION_NAME AS rootAgencyName,
ca.CUSTOMER_ID AS customerId ca.CUSTOMER_ID AS customerId
FROM FROM
customer_agency ca customer_agency ca

35
epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerDepartmentDao.xml

@ -3,20 +3,27 @@
<mapper namespace="com.epmet.dao.CustomerDepartmentDao"> <mapper namespace="com.epmet.dao.CustomerDepartmentDao">
<resultMap type="com.epmet.entity.CustomerDepartmentEntity" id="customerDepartmentMap"> <select id="selectDepartmentListByAgencyId" resultType="com.epmet.dto.result.DepartmentListResultDTO">
<result property="id" column="ID"/> SELECT
<result property="customerId" column="CUSTOMER_ID"/> id AS 'departmentId',
<result property="agencyId" column="AGENCY_ID"/> department_name AS 'departmentName',
<result property="departmentName" column="DEPARTMENT_NAME"/> total_user AS 'totalUser'
<result property="departmentDuty" column="DEPARTMENT_DUTY"/> FROM customer_department
<result property="totalUser" column="TOTAL_USER"/> WHERE del_flag = '0'
<result property="delFlag" column="DEL_FLAG"/> AND agency_id = #{agencyId}
<result property="revision" column="REVISION"/> ORDER BY created_time DESC
<result property="createdBy" column="CREATED_BY"/> LIMIT 10
<result property="createdTime" column="CREATED_TIME"/> </select>
<result property="updatedBy" column="UPDATED_BY"/>
<result property="updatedTime" column="UPDATED_TIME"/>
</resultMap>
<select id="selectDepartmentList" resultType="com.epmet.dto.result.DepartmentListResultDTO">
SELECT
id AS 'departmentId',
department_name AS 'departmentName',
total_user AS 'totalUser'
FROM customer_department
WHERE del_flag = '0'
AND agency_id = #{agencyId}
ORDER BY created_time DESC
</select>
</mapper> </mapper>

12
epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerGridDao.xml

@ -168,6 +168,7 @@
customer_grid customer_grid
WHERE WHERE
grid_name = #{gridName} grid_name = #{gridName}
AND pid = #{agencyId}
AND del_flag = 0 AND del_flag = 0
</select> </select>
@ -194,6 +195,17 @@
id = #{gridId} id = #{gridId}
</update> </update>
<!-- 根据gridId查询网格下的人员userId -->
<select id="selectUserIdByGrid" resultType="com.epmet.dto.UserIdDTO">
SELECT
user_id
FROM
customer_staff_grid
WHERE
grid_id = #{gridId}
AND del_flag = 0
</select>
<!-- 得到当前机构的网格总数 --> <!-- 得到当前机构的网格总数 -->
<select id="selectGridCountByAgencyId" parameterType="string" resultType="int"> <select id="selectGridCountByAgencyId" parameterType="string" resultType="int">
SELECT SELECT

24
epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerStaffDepartmentDao.xml

@ -3,18 +3,6 @@
<mapper namespace="com.epmet.dao.CustomerStaffDepartmentDao"> <mapper namespace="com.epmet.dao.CustomerStaffDepartmentDao">
<resultMap type="com.epmet.entity.CustomerStaffDepartmentEntity" id="customerStaffDepartmentMap">
<result property="id" column="ID"/>
<result property="customerId" column="CUSTOMER_ID"/>
<result property="userId" column="USER_ID"/>
<result property="departmentId" column="DEPARTMENT_ID"/>
<result property="delFlag" column="DEL_FLAG"/>
<result property="revision" column="REVISION"/>
<result property="createdBy" column="CREATED_BY"/>
<result property="createdTime" column="CREATED_TIME"/>
<result property="updatedBy" column="UPDATED_BY"/>
<result property="updatedTime" column="UPDATED_TIME"/>
</resultMap>
<select id="selectUserIdByDepartmentId" resultType="java.lang.String"> <select id="selectUserIdByDepartmentId" resultType="java.lang.String">
SELECT SELECT
user_id user_id
@ -22,9 +10,19 @@
customer_staff_department customer_staff_department
WHERE WHERE
del_flag = '0' del_flag = '0'
AND department_id = #{} AND department_id = #{departmentId}
</select> </select>
<!-- 修改部门人数 -->
<update id="updateDepartmentStaffCount">
UPDATE
customer_department
SET
total_user = total_user + #{addCount}
WHERE
id = #{departmentId}
</update>
</mapper> </mapper>

2
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/GovStaffRoleDTO.java

@ -23,7 +23,7 @@ import lombok.Data;
/** /**
* 政府端角色表 * 政府端角色字典
* *
* @author generator generator@elink-cn.com * @author generator generator@elink-cn.com
* @since v1.0.0 2020-04-22 * @since v1.0.0 2020-04-22

27
epmet-user/epmet-user-server/src/main/java/com/epmet/controller/CustomerStaffController.java

@ -27,6 +27,10 @@ import com.epmet.commons.tools.validator.group.DefaultGroup;
import com.epmet.commons.tools.validator.group.UpdateGroup; import com.epmet.commons.tools.validator.group.UpdateGroup;
import com.epmet.dto.*; import com.epmet.dto.*;
import com.epmet.dto.form.*; import com.epmet.dto.form.*;
import com.epmet.dto.CustomerStaffDTO;
import com.epmet.dto.CustomerStaffGridDTO;
import com.epmet.dto.StaffGridListDTO;
import com.epmet.dto.form.*;
import com.epmet.dto.result.DepartInStaffListResultDTO; import com.epmet.dto.result.DepartInStaffListResultDTO;
import com.epmet.dto.result.StaffDetailResultDTO; import com.epmet.dto.result.StaffDetailResultDTO;
import com.epmet.dto.result.StaffInfoResultDTO; import com.epmet.dto.result.StaffInfoResultDTO;
@ -150,11 +154,6 @@ public class CustomerStaffController {
return customerStaffService.getCustomerStaffInfoByUserId(formDTO); return customerStaffService.getCustomerStaffInfoByUserId(formDTO);
} }
@PostMapping(value = "selectgridstaffcountbyuserid")
public Result<GridStaffCountDTO> selectGridStaffCountByUserId(@RequestBody UserIdDTO userIdDTO){
return customerStaffService.selectGridStaffCountByUserId(userIdDTO);
}
/** /**
* 组织首页-工作人员列表 * 组织首页-工作人员列表
* @param fromDTO * @param fromDTO
@ -175,6 +174,22 @@ public class CustomerStaffController {
return customerStaffService.getStaffList(fromDTO); return customerStaffService.getStaffList(fromDTO);
} }
/**
* 查询网格下未被禁用人员
* @param userIdDTO
* @auther zxc
*/
@PostMapping(value = "selectgridstaffcountbyuserid")
public Result<GridStaffCountDTO> selectGridStaffCountByUserId(@RequestBody List<UserIdDTO> userIdDTO){
return customerStaffService.selectGridStaffCountByUserId(userIdDTO);
}
@PostMapping(value = "selectcustomeridbyuserid")
public Result<List<CustomerIdDTO>> selectCustomerIdByUserId(@RequestBody AddDepartmentStaffFormDTO addDepartmentStaffFormDTO){
return customerStaffService.selectCustomerIdByUserId(addDepartmentStaffFormDTO);
}
/** /**
* 人员添加页面初始化 * 人员添加页面初始化
* *
@ -204,7 +219,7 @@ public class CustomerStaffController {
* @return Result * @return Result
*/ */
@PostMapping("addstaff") @PostMapping("addstaff")
public Result addStaff(@RequestBody StaffSubmitFromDTO fromDTO){ public Result<CustomerStaffDTO> addStaff(@RequestBody StaffSubmitFromDTO fromDTO){
return customerStaffService.addStaff(fromDTO); return customerStaffService.addStaff(fromDTO);
} }

4
epmet-user/epmet-user-server/src/main/java/com/epmet/controller/StaffRoleController.java

@ -1,5 +1,7 @@
package com.epmet.controller; package com.epmet.controller;
import com.epmet.commons.mybatis.entity.DataScope;
import com.epmet.commons.tools.annotation.RequirePermission;
import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.dto.GovStaffRoleDTO; import com.epmet.dto.GovStaffRoleDTO;
@ -68,7 +70,7 @@ public class StaffRoleController {
ValidatorUtils.validateEntity(staffRoleFormDTO, StaffRoleFormDTO.GetStaffsInRole.class); ValidatorUtils.validateEntity(staffRoleFormDTO, StaffRoleFormDTO.GetStaffsInRole.class);
String roleKey = staffRoleFormDTO.getRoleKey(); String roleKey = staffRoleFormDTO.getRoleKey();
String orgId = staffRoleFormDTO.getOrgId(); String orgId = staffRoleFormDTO.getOrgId();
List<GovStaffRoleResultDTO> staffRoleDTOS = staffRoleService.listStaffsInRole(roleKey, orgId); List<GovStaffRoleResultDTO> staffRoleDTOS = staffRoleService.listStaffsInRole(roleKey, orgId , DataScope.getDefault());
return new Result<List<GovStaffRoleResultDTO>>().ok(staffRoleDTOS); return new Result<List<GovStaffRoleResultDTO>>().ok(staffRoleDTOS);
} }

14
epmet-user/epmet-user-server/src/main/java/com/epmet/dao/CustomerStaffDao.java

@ -20,10 +20,7 @@ package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao; import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.*; import com.epmet.dto.*;
import com.epmet.dto.form.CustomerStaffFormDTO; import com.epmet.dto.form.*;
import com.epmet.dto.form.StaffInfoFromDTO;
import com.epmet.dto.form.DepartmentInStaffFormDTO;
import com.epmet.dto.form.StaffsInAgencyFromDTO;
import com.epmet.dto.result.DepartInStaffListResultDTO; import com.epmet.dto.result.DepartInStaffListResultDTO;
import com.epmet.dto.result.StaffInfoResultDTO; import com.epmet.dto.result.StaffInfoResultDTO;
import com.epmet.dto.result.CommonStaffInfoResultDTO; import com.epmet.dto.result.CommonStaffInfoResultDTO;
@ -67,7 +64,7 @@ public interface CustomerStaffDao extends BaseDao<CustomerStaffEntity> {
* @param userIdDTO * @param userIdDTO
* @return * @return
*/ */
GridStaffCountDTO selectGridStaffCountByUserId(UserIdDTO userIdDTO); GridStaffCountDTO selectGridStaffCountByUserId(List<UserIdDTO> userIdDTO);
/** /**
* 根据userId查询查询网格下的用户信息 * 根据userId查询查询网格下的用户信息
* *
@ -118,6 +115,13 @@ public interface CustomerStaffDao extends BaseDao<CustomerStaffEntity> {
*/ */
List<DepartInStaffListResultDTO> selectDepartmentStaffList(DepartmentInStaffFormDTO fromDTO); List<DepartInStaffListResultDTO> selectDepartmentStaffList(DepartmentInStaffFormDTO fromDTO);
/**
*
* @param departmentStaffFormDTO
* @auther zxc
*/
List<CustomerIdDTO> selectCustomerIdByUserId(AddDepartmentStaffFormDTO departmentStaffFormDTO);
/** /**
* @Description 根据UserId列表查询用信息过滤掉被禁用的包含未激活的 * @Description 根据UserId列表查询用信息过滤掉被禁用的包含未激活的
* @Param List<String> * @Param List<String>

13
epmet-user/epmet-user-server/src/main/java/com/epmet/service/CustomerStaffService.java

@ -21,7 +21,7 @@ import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.*; import com.epmet.dto.*;
import com.epmet.dto.form.CustomerGridFormDTO; import com.epmet.dto.form.*;
import com.epmet.dto.CustomerStaffDTO; import com.epmet.dto.CustomerStaffDTO;
import com.epmet.dto.CustomerStaffGridDTO; import com.epmet.dto.CustomerStaffGridDTO;
import com.epmet.dto.StaffGridListDTO; import com.epmet.dto.StaffGridListDTO;
@ -181,7 +181,7 @@ public interface CustomerStaffService extends BaseService<CustomerStaffEntity> {
* @param fromDTO 参数 * @param fromDTO 参数
* @return Result * @return Result
*/ */
Result addStaff(StaffSubmitFromDTO fromDTO); Result<CustomerStaffDTO> addStaff(StaffSubmitFromDTO fromDTO);
/** /**
* 人员编辑 * 人员编辑
@ -212,7 +212,7 @@ public interface CustomerStaffService extends BaseService<CustomerStaffEntity> {
* @param userIdDTO * @param userIdDTO
* @return * @return
*/ */
Result<GridStaffCountDTO> selectGridStaffCountByUserId(UserIdDTO userIdDTO); Result<GridStaffCountDTO> selectGridStaffCountByUserId(List<UserIdDTO> userIdDTO);
/** /**
* @param fromDTO * @param fromDTO
@ -222,6 +222,13 @@ public interface CustomerStaffService extends BaseService<CustomerStaffEntity> {
*/ */
Result<List<DepartInStaffListResultDTO>> getDepartmentStaffList(DepartmentInStaffFormDTO fromDTO); Result<List<DepartInStaffListResultDTO>> getDepartmentStaffList(DepartmentInStaffFormDTO fromDTO);
/**
* 根据userId查询customerId
* @param: addDepartmentStaffFormDTO
* @auther: zxc
*/
Result<List<CustomerIdDTO>> selectCustomerIdByUserId(AddDepartmentStaffFormDTO addDepartmentStaffFormDTO);
/** /**
* @Description 通过userId列表查询未被禁用的用户信息 * @Description 通过userId列表查询未被禁用的用户信息
* @Param CommonUserIdListFormDTO :: getUserIdList * @Param CommonUserIdListFormDTO :: getUserIdList

3
epmet-user/epmet-user-server/src/main/java/com/epmet/service/StaffRoleService.java

@ -17,6 +17,7 @@
package com.epmet.service; package com.epmet.service;
import com.epmet.commons.mybatis.entity.DataScope;
import com.epmet.commons.mybatis.service.BaseService; import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.utils.Result;
@ -103,7 +104,7 @@ public interface StaffRoleService extends BaseService<StaffRoleEntity> {
* @param orgId * @param orgId
* @return * @return
*/ */
List<GovStaffRoleResultDTO> listStaffsInRole(String roleKey, String orgId); List<GovStaffRoleResultDTO> listStaffsInRole(String roleKey, String orgId, DataScope dataScope);
/** /**
* 清空工作人员权限 * 清空工作人员权限

78
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/CustomerStaffServiceImpl.java

@ -19,6 +19,7 @@ package com.epmet.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.epmet.commons.mybatis.entity.DataScope;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.constant.FieldConstant; import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.EpmetErrorCode;
@ -32,6 +33,17 @@ import com.epmet.dao.CustomerStaffDao;
import com.epmet.dto.*; import com.epmet.dto.*;
import com.epmet.dto.form.*; import com.epmet.dto.form.*;
import com.epmet.dto.result.*; import com.epmet.dto.result.*;
import com.epmet.dto.form.*;
import com.epmet.dto.CustomerStaffDTO;
import com.epmet.dto.CustomerStaffGridDTO;
import com.epmet.dto.GovStaffRoleDTO;
import com.epmet.dto.StaffGridListDTO;
import com.epmet.dto.StaffRoleDTO;
import com.epmet.dto.result.StaffDetailResultDTO;
import com.epmet.dto.result.DepartInStaffListResultDTO;
import com.epmet.dto.result.StaffInfoResultDTO;
import com.epmet.dto.result.StaffInitResultDTO;
import com.epmet.dto.result.StaffRoleResultDTO;
import com.epmet.dto.CustomerStaffDTO; import com.epmet.dto.CustomerStaffDTO;
import com.epmet.dto.CustomerStaffGridDTO; import com.epmet.dto.CustomerStaffGridDTO;
import com.epmet.dto.StaffGridListDTO; import com.epmet.dto.StaffGridListDTO;
@ -54,6 +66,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -77,6 +90,7 @@ public class CustomerStaffServiceImpl extends BaseServiceImpl<CustomerStaffDao,
private UserService userService; private UserService userService;
@Autowired @Autowired
private StaffRoleService staffRoleService; private StaffRoleService staffRoleService;
@Override @Override
public PageData<CustomerStaffDTO> page(Map<String, Object> params) { public PageData<CustomerStaffDTO> page(Map<String, Object> params) {
IPage<CustomerStaffEntity> page = baseDao.selectPage( IPage<CustomerStaffEntity> page = baseDao.selectPage(
@ -171,12 +185,18 @@ public class CustomerStaffServiceImpl extends BaseServiceImpl<CustomerStaffDao,
@Override @Override
public Result<List<StaffInfoResultDTO>> getStaffInfoForHome(StaffsInAgencyFromDTO fromDTO) { public Result<List<StaffInfoResultDTO>> getStaffInfoForHome(StaffsInAgencyFromDTO fromDTO) {
List<StaffInfoResultDTO> list = baseDao.selectCustomerStaffList(fromDTO); List<StaffInfoResultDTO> list = baseDao.selectCustomerStaffList(fromDTO);
if (null == list) {
list = new ArrayList<>();
}
return new Result<List<StaffInfoResultDTO>>().ok(list); return new Result<List<StaffInfoResultDTO>>().ok(list);
} }
@Override @Override
public Result<List<StaffInfoResultDTO>> getStaffList(StaffsInAgencyFromDTO fromDTO) { public Result<List<StaffInfoResultDTO>> getStaffList(StaffsInAgencyFromDTO fromDTO) {
List<StaffInfoResultDTO> list = baseDao.selectStaffList(fromDTO); List<StaffInfoResultDTO> list = baseDao.selectStaffList(fromDTO);
if (null == list) {
list = new ArrayList<>();
}
return new Result<List<StaffInfoResultDTO>>().ok(list); return new Result<List<StaffInfoResultDTO>>().ok(list);
} }
@ -187,7 +207,7 @@ public class CustomerStaffServiceImpl extends BaseServiceImpl<CustomerStaffDao,
govStaffRoleDTO.setCustomerId(fromDTO.getCustomerId()); govStaffRoleDTO.setCustomerId(fromDTO.getCustomerId());
List<GovStaffRoleDTO> roleList = govStaffRoleService.getGovStaffRoleList(govStaffRoleDTO); List<GovStaffRoleDTO> roleList = govStaffRoleService.getGovStaffRoleList(govStaffRoleDTO);
if (null == roleList || roleList.size() == 0) { if (null == roleList || roleList.size() == 0) {
return new Result<StaffInitResultDTO>().ok(null); return new Result<StaffInitResultDTO>().error(EpmetErrorCode.SERVER_ERROR.getCode(), EpmetErrorCode.SERVER_ERROR.getMsg());
} }
List<StaffRoleResultDTO> staffRoleList = roleList.stream().map(p -> { List<StaffRoleResultDTO> staffRoleList = roleList.stream().map(p -> {
StaffRoleResultDTO staffRoleResultDTO = new StaffRoleResultDTO(); StaffRoleResultDTO staffRoleResultDTO = new StaffRoleResultDTO();
@ -238,7 +258,14 @@ public class CustomerStaffServiceImpl extends BaseServiceImpl<CustomerStaffDao,
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result addStaff(StaffSubmitFromDTO fromDTO) { public Result<CustomerStaffDTO> addStaff(StaffSubmitFromDTO fromDTO) {
CustomerStaffFormDTO customerStaffFormDTO = new CustomerStaffFormDTO();
customerStaffFormDTO.setCustomerId(fromDTO.getCustomerId());
customerStaffFormDTO.setMobile(fromDTO.getMobile());
CustomerStaffDTO customerStaffDTO = baseDao.selectListCustomerStaffInfo(customerStaffFormDTO);
if (null != customerStaffDTO) {
return new Result<CustomerStaffDTO>().error(EpmetErrorCode.MOBILE_USED.getCode(), EpmetErrorCode.MOBILE_USED.getMsg());
}
//USER表插入数据 //USER表插入数据
UserEntity userEntity = new UserEntity(); UserEntity userEntity = new UserEntity();
userEntity.setFromApp(fromDTO.getApp()); userEntity.setFromApp(fromDTO.getApp());
@ -246,6 +273,7 @@ public class CustomerStaffServiceImpl extends BaseServiceImpl<CustomerStaffDao,
userService.insert(userEntity); userService.insert(userEntity);
//Customer_Staff表插入数据 //Customer_Staff表插入数据
CustomerStaffEntity staffEntity = new CustomerStaffEntity(); CustomerStaffEntity staffEntity = new CustomerStaffEntity();
staffEntity.setCustomerId(fromDTO.getCustomerId());
staffEntity.setUserId(userEntity.getId()); staffEntity.setUserId(userEntity.getId());
staffEntity.setRealName(fromDTO.getName()); staffEntity.setRealName(fromDTO.getName());
staffEntity.setMobile(fromDTO.getMobile()); staffEntity.setMobile(fromDTO.getMobile());
@ -264,12 +292,20 @@ public class CustomerStaffServiceImpl extends BaseServiceImpl<CustomerStaffDao,
staffRoleService.insert(staffRoleEntity); staffRoleService.insert(staffRoleEntity);
}); });
return new Result(); return new Result<CustomerStaffDTO>().ok(ConvertUtils.sourceToTarget(staffEntity, CustomerStaffDTO.class));
} }
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result editStaff(StaffSubmitFromDTO fromDTO) { public Result editStaff(StaffSubmitFromDTO fromDTO) {
CustomerStaffFormDTO customerStaffFormDTO = new CustomerStaffFormDTO();
customerStaffFormDTO.setCustomerId(fromDTO.getCustomerId());
customerStaffFormDTO.setMobile(fromDTO.getMobile());
CustomerStaffDTO customerStaffDTO = baseDao.selectListCustomerStaffInfo(customerStaffFormDTO);
if (!fromDTO.getStaffId().equals(customerStaffDTO.getUserId())) {
return new Result<CustomerStaffDTO>().error(EpmetErrorCode.MOBILE_USED.getCode(), EpmetErrorCode.MOBILE_USED.getMsg());
}
CustomerStaffEntity customerStaffEntity = baseDao.selectByUserId(fromDTO.getStaffId()); CustomerStaffEntity customerStaffEntity = baseDao.selectByUserId(fromDTO.getStaffId());
//Customer_Staff表插入数据 //Customer_Staff表插入数据
CustomerStaffEntity staffEntity = new CustomerStaffEntity(); CustomerStaffEntity staffEntity = new CustomerStaffEntity();
@ -327,18 +363,19 @@ public class CustomerStaffServiceImpl extends BaseServiceImpl<CustomerStaffDao,
return new Result(); return new Result();
} }
/** /**
* 根据userId查询网格下未被禁用的人员数量 * 根据userId查询网格下未被禁用的人员数量
* @param userIdDTO *
* @return * @param userIdDTO
*/ * @return
@Override */
public Result<GridStaffCountDTO> selectGridStaffCountByUserId(UserIdDTO userIdDTO) { @Override
Result<GridStaffCountDTO> gridStaffCountDTOResult = new Result<GridStaffCountDTO>(); public Result<GridStaffCountDTO> selectGridStaffCountByUserId(List<UserIdDTO> userIdDTO) {
GridStaffCountDTO gridStaffCountDTO = baseDao.selectGridStaffCountByUserId(userIdDTO); Result<GridStaffCountDTO> gridStaffCountDTOResult = new Result<GridStaffCountDTO>();
gridStaffCountDTOResult.setData(gridStaffCountDTO); GridStaffCountDTO gridStaffCountDTO = baseDao.selectGridStaffCountByUserId(userIdDTO);
return gridStaffCountDTOResult; gridStaffCountDTOResult.setData(gridStaffCountDTO);
} return gridStaffCountDTOResult;
}
@Override @Override
public Result<List<DepartInStaffListResultDTO>> getDepartmentStaffList(DepartmentInStaffFormDTO formDTO) { public Result<List<DepartInStaffListResultDTO>> getDepartmentStaffList(DepartmentInStaffFormDTO formDTO) {
@ -348,7 +385,7 @@ public class CustomerStaffServiceImpl extends BaseServiceImpl<CustomerStaffDao,
StaffRoleFormDTO staffRoleFormDTO = new StaffRoleFormDTO(); StaffRoleFormDTO staffRoleFormDTO = new StaffRoleFormDTO();
staffRoleFormDTO.setOrgId(formDTO.getDepartmentId()); staffRoleFormDTO.setOrgId(formDTO.getDepartmentId());
staffRoleFormDTO.setRoleKey(UserRoleConstant.DEPT_LEADER); staffRoleFormDTO.setRoleKey(UserRoleConstant.DEPT_LEADER);
List<GovStaffRoleResultDTO> staffRoleDTOS = staffRoleService.listStaffsInRole(UserRoleConstant.DEPT_LEADER, formDTO.getDepartmentId()); List<GovStaffRoleResultDTO> staffRoleDTOS = staffRoleService.listStaffsInRole(UserRoleConstant.DEPT_LEADER, formDTO.getDepartmentId(), DataScope.getDefault());
staffRoleDTOS.forEach(roleDto -> { staffRoleDTOS.forEach(roleDto -> {
staffList.stream().filter(staffDto -> staffList.stream().filter(staffDto ->
roleDto.getStaffId().equals(staffDto.getStaffId())).findAny().ifPresent(result -> roleDto.getStaffId().equals(staffDto.getStaffId())).findAny().ifPresent(result ->
@ -357,6 +394,15 @@ public class CustomerStaffServiceImpl extends BaseServiceImpl<CustomerStaffDao,
return new Result<List<DepartInStaffListResultDTO>>().ok(staffList); return new Result<List<DepartInStaffListResultDTO>>().ok(staffList);
} }
/**
* @param: addDepartmentStaffFormDTO
* @auther: zxc
*/
@Override
public Result<List<CustomerIdDTO>> selectCustomerIdByUserId(AddDepartmentStaffFormDTO addDepartmentStaffFormDTO) {
return new Result<List<CustomerIdDTO>>().ok(baseDao.selectCustomerIdByUserId(addDepartmentStaffFormDTO));
}
/** /**
* @Description 通过userId列表查询未被禁用的用户信息 * @Description 通过userId列表查询未被禁用的用户信息
* @Param CommonUserIdListFormDTO :: getUserIdList * @Param CommonUserIdListFormDTO :: getUserIdList

4
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/StaffRoleServiceImpl.java

@ -19,6 +19,8 @@ package com.epmet.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.epmet.commons.mybatis.annotation.DataFilter;
import com.epmet.commons.mybatis.entity.DataScope;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.ConvertUtils;
@ -113,7 +115,7 @@ public class StaffRoleServiceImpl extends BaseServiceImpl<StaffRoleDao, StaffRol
*/ */
@Override @Override
//@DataFilter //@DataFilter
public List<GovStaffRoleResultDTO> listStaffsInRole(String roleKey, String orgId) { public List<GovStaffRoleResultDTO> listStaffsInRole(String roleKey, String orgId, DataScope dataScope) {
return baseDao.listStaffIdsByRoleKeyAndOrgId(roleKey, orgId); return baseDao.listStaffIdsByRoleKeyAndOrgId(roleKey, orgId);
} }

6
epmet-user/epmet-user-server/src/main/resources/db/migration/epmet_user.sql

@ -139,4 +139,8 @@ INSERT INTO `gov_staff_role_template` VALUES ('4', 'manager', '管理员', NULL,
INSERT INTO `gov_staff_role_template` VALUES ('5', 'staff', '工作人员', NULL, 0, NULL, NULL, NULL, NULL, NULL); INSERT INTO `gov_staff_role_template` VALUES ('5', 'staff', '工作人员', NULL, 0, NULL, NULL, NULL, NULL, NULL);
INSERT INTO `gov_staff_role_template` VALUES ('6', 'grid_manager', '网格长', NULL, 0, NULL, NULL, NULL, NULL, NULL); INSERT INTO `gov_staff_role_template` VALUES ('6', 'grid_manager', '网格长', NULL, 0, NULL, NULL, NULL, NULL, NULL);
INSERT INTO `gov_staff_role_template` VALUES ('7', 'grid_party_director', '网格党建指导员', NULL, 0, NULL, NULL, NULL, NULL, NULL); INSERT INTO `gov_staff_role_template` VALUES ('7', 'grid_party_director', '网格党建指导员', NULL, 0, NULL, NULL, NULL, NULL, NULL);
INSERT INTO `gov_staff_role_template` VALUES ('8', 'grid_member', '网格员', NULL, 0, NULL, NULL, NULL, NULL, NULL); INSERT INTO `gov_staff_role_template` VALUES ('8', 'grid_member', '网格员', NULL, 0, NULL, NULL, NULL, NULL, NULL);
-- --2020-04-26
ALTER TABLE customer_staff MODIFY COLUMN `EMAIL` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '邮箱' ;
ALTER TABLE customer_staff MODIFY COLUMN `ADDRESS` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '地址';

61
epmet-user/epmet-user-server/src/main/resources/mapper/CustomerStaffDao.xml

@ -44,41 +44,54 @@
</select> </select>
<!-- 根据userId查询网格下未被禁用的人员数量 --> <!-- 根据userId查询网格下未被禁用的人员数量 -->
<select id="selectGridStaffCountByUserId" parameterType="com.epmet.dto.UserIdDTO" resultType="com.epmet.dto.GridStaffCountDTO"> <select id="selectGridStaffCountByUserId" resultType="com.epmet.dto.GridStaffCountDTO">
SELECT SELECT
count(*) AS enableCount count(*) AS enableCount
FROM FROM
customer_staff customer_staff
WHERE WHERE
user_id = #{userId} user_id in
<foreach collection="list" item="staff" open="(" separator="," close=")">
#{staff.userId}
</foreach>
AND del_flag = 0 AND del_flag = 0
AND enable_flag = 'enable' AND enable_flag = 'enable'
</select> </select>
<select id="selectCustomerStaffList" resultType="com.epmet.dto.result.StaffInfoResultDTO" parameterType="com.epmet.dto.form.StaffsInAgencyFromDTO"> <select id="selectCustomerStaffList" resultType="com.epmet.dto.result.StaffInfoResultDTO" parameterType="com.epmet.dto.form.StaffsInAgencyFromDTO">
SELECT SELECT
cs.USER_ID AS "staffId", cs.USER_ID AS "staffId",
cs.REAL_NAME AS "staffName", cs.REAL_NAME AS "staffName",
cs.GENDER AS "gender", cs.GENDER AS "gender",
IFNULL(cs.HEAD_PHOTO, "") AS "staffHeadPhoto", IFNULL( cs.HEAD_PHOTO, "" ) AS "staffHeadPhoto",
cs.ENABLE_FLAG AS "enableFlag", cs.ENABLE_FLAG AS "enableFlag",
gsr.ROLE_NAME AS "roleName" role.ROLE_NAME AS "roleName"
FROM FROM
customer_staff cs customer_staff cs
LEFT JOIN staff_role sr ON cs.USER_ID = sr.STAFF_ID LEFT JOIN (
AND sr.DEL_FLAG = '0' SELECT
AND sr.ORG_ID = #{agencyId} sr.STAFF_ID,
sr.ROLE_ID,
gsr.ROLE_NAME
FROM
staff_role sr
LEFT JOIN gov_staff_role gsr ON sr.ROLE_ID = gsr.ID LEFT JOIN gov_staff_role gsr ON sr.ROLE_ID = gsr.ID
AND gsr.DEL_FLAG = '0' AND gsr.DEL_FLAG = '0'
AND gsr.CUSTOMER_ID = #{customerId} AND gsr.CUSTOMER_ID = #{customerId}
WHERE
sr.DEL_FLAG = '0'
AND sr.ORG_ID = #{agencyId}
AND gsr.ROLE_KEY = 'agency_leader' AND gsr.ROLE_KEY = 'agency_leader'
) role ON cs.USER_ID = role.STAFF_ID
WHERE WHERE
cs.DEL_FLAG = '0' cs.DEL_FLAG = '0'
AND cs.CUSTOMER_ID = #{customerId} AND cs.CUSTOMER_ID = #{customerId}
AND cs.USER_ID in AND cs.USER_ID IN
<foreach item="userId" collection="staffList" separator="," open="(" close=")" index=""> <foreach item="userId" collection="staffList" separator="," open="(" close=")" index="">
#{userId} #{userId}
</foreach> </foreach>
ORDER BY gsr.ROLE_NAME DESC, cs.CREATED_TIME DESC ORDER BY
role.ROLE_NAME DESC,
cs.CREATED_TIME DESC
LIMIT 12 LIMIT 12
</select> </select>
@ -108,7 +121,7 @@
<foreach item="userId" collection="staffList" separator="," open="(" close=")" index=""> <foreach item="userId" collection="staffList" separator="," open="(" close=")" index="">
#{userId} #{userId}
</foreach> </foreach>
ORDER BY convert(cs.REAL_NAME using gbk) asc ASC ORDER BY convert(cs.REAL_NAME using gbk) ASC
</select> </select>
<select id="selectStaffInfo" resultType="com.epmet.dto.CustomerStaffDTO" parameterType="com.epmet.dto.form.StaffInfoFromDTO"> <select id="selectStaffInfo" resultType="com.epmet.dto.CustomerStaffDTO" parameterType="com.epmet.dto.form.StaffInfoFromDTO">
SELECT SELECT
@ -146,6 +159,22 @@
ORDER BY CONVERT (real_name USING gbk) ASC<!--按中文对应的拼音升序排列--> ORDER BY CONVERT (real_name USING gbk) ASC<!--按中文对应的拼音升序排列-->
</select> </select>
<!-- 根据userId查询customerId -->
<select id="selectCustomerIdByUserId" parameterType="com.epmet.dto.form.AddDepartmentStaffFormDTO" resultType="com.epmet.dto.CustomerIdDTO">
SELECT
user_id AS userId,
customer_id AS customerId
FROM
customer_staff
WHERE
user_id in
<foreach item="item" collection="selectedList" separator="," open="(" close=")" index="">
#{item}
</foreach>
AND del_flag = 0
AND enable_flag = 'enable'
</select>
<!-- 根据UserId列表查询用户Id、头像、昵称,过滤掉被禁用的,包含未激活的--> <!-- 根据UserId列表查询用户Id、头像、昵称,过滤掉被禁用的,包含未激活的-->
<select id="selectEnableStaffMsg" resultType="com.epmet.dto.result.CommonStaffInfoResultDTO"> <select id="selectEnableStaffMsg" resultType="com.epmet.dto.result.CommonStaffInfoResultDTO">
SELECT SELECT

Loading…
Cancel
Save