Browse Source

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

# Conflicts:
#	epmet-module/gov-mine/gov-mine-server/src/main/java/com/epmet/feign/GovAccessFeignClient.java
master
yinzuomei 5 years ago
parent
commit
1e52eaa365
  1. 96
      epmet-admin/epmet-admin-server/src/test/java/io/renren/service/DynamicDataSourceTest.java
  2. 10
      epmet-auth/src/main/java/com/epmet/feign/GovOrgFeignClient.java
  3. 6
      epmet-auth/src/main/java/com/epmet/feign/fallback/GovOrgFeignClientFallback.java
  4. 25
      epmet-auth/src/main/java/com/epmet/service/impl/GovLoginServiceImpl.java
  5. 3
      epmet-auth/src/test/java/com/epmet/TokenGenTest.java
  6. 156
      epmet-commons/epmet-commons-mybatis/src/main/java/com/epmet/commons/mybatis/aspect/DataFilterAspect.java
  7. 15
      epmet-commons/epmet-commons-mybatis/src/main/java/com/epmet/commons/mybatis/constant/AccessSettingConstant.java
  8. 49
      epmet-commons/epmet-commons-mybatis/src/main/java/com/epmet/commons/mybatis/dto/form/DepartmentListResultDTO.java
  9. 13
      epmet-commons/epmet-commons-mybatis/src/main/java/com/epmet/commons/mybatis/dto/form/RoleAccessSettingResultDTO.java
  10. 5
      epmet-commons/epmet-commons-mybatis/src/main/java/com/epmet/commons/mybatis/dto/form/StaffPermCacheResultDTO.java
  11. 15
      epmet-commons/epmet-commons-mybatis/src/main/java/com/epmet/commons/mybatis/feign/GovAccessFeignClient.java
  12. 30
      epmet-commons/epmet-commons-mybatis/src/main/java/com/epmet/commons/mybatis/feign/GovOrgFeignClient.java
  13. 12
      epmet-commons/epmet-commons-mybatis/src/main/java/com/epmet/commons/mybatis/feign/fallback/GovAccessFeignClientFallback.java
  14. 27
      epmet-commons/epmet-commons-mybatis/src/main/java/com/epmet/commons/mybatis/feign/fallback/GovOrgFeignClientFallback.java
  15. 3
      epmet-commons/epmet-commons-mybatis/src/main/java/com/epmet/commons/mybatis/interceptor/DataFilterInterceptor.java
  16. 11
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisKeys.java
  17. 2
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/security/dto/GovTokenDto.java
  18. 5
      epmet-module/gov-access/gov-access-client/src/main/java/com/epmet/dto/form/StaffPermCacheFormDTO.java
  19. 14
      epmet-module/gov-access/gov-access-client/src/main/java/com/epmet/dto/result/RoleAccessSettingResultDTO.java
  20. 5
      epmet-module/gov-access/gov-access-client/src/main/java/com/epmet/dto/result/StaffPermCacheResultDTO.java
  21. 21
      epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/controller/AccessController.java
  22. 37
      epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/dao/RoleAccessSettingDao.java
  23. 65
      epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/entity/RoleAccessSettingEntity.java
  24. 37
      epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/redis/RoleAccessSettingRedis.java
  25. 11
      epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/service/AccessService.java
  26. 38
      epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/service/impl/AccessServiceImpl.java
  27. 20
      epmet-module/gov-access/gov-access-server/src/main/resources/db.migration/epmet_gov_access.sql
  28. 30
      epmet-module/gov-access/gov-access-server/src/main/resources/mapper/RoleAccessSettingDao.xml
  29. 38
      epmet-module/gov-access/gov-access-server/src/test/java/com/epmet/test/govaccess/AccessSettingTest.java
  30. 1
      epmet-module/gov-mine/gov-mine-server/src/main/java/com/epmet/controller/StaffAgencyController.java
  31. 3
      epmet-module/gov-mine/gov-mine-server/src/main/java/com/epmet/feign/EpmetUserFeignClient.java
  32. 1
      epmet-module/gov-mine/gov-mine-server/src/main/java/com/epmet/feign/GovOrgFeignClient.java
  33. 29
      epmet-module/gov-mine/gov-mine-server/src/main/java/com/epmet/service/impl/AccessServiceImpl.java
  34. 29
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/CommonAgencyIdFormDTO.java
  35. 30
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/CommonDepartmentFormDTO.java
  36. 35
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/CommonDepartmentStaffInfoFormDTO.java
  37. 29
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/CommonGridIdFormDTO.java
  38. 35
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/CommonGridStaffInfoFormDTO.java
  39. 38
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/CommonGridStaffListFromDTO.java
  40. 1
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/CustomerGridFormDTO.java
  41. 5
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/EditAgencyFormDTO.java
  42. 10
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/AgencysResultDTO.java
  43. 5
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/DepartmentDetailResultDTO.java
  44. 32
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/GridBaseInfoResultDTO.java
  45. 31
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/GridListInfoResultDTO.java
  46. 1
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/AgencyController.java
  47. 5
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/CustomerStaffAgencyController.java
  48. 53
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/DepartmentController.java
  49. 85
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/GridController.java
  50. 9
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerAgencyDao.java
  51. 7
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerDepartmentDao.java
  52. 19
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerGridDao.java
  53. 23
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerStaffAgencyDao.java
  54. 24
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerStaffGridDao.java
  55. 24
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/feign/EpmetUserFeignClient.java
  56. 15
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/feign/fallback/EpmetUserFeignClientFallBack.java
  57. 44
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/CustomerGridService.java
  58. 21
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/CustomerStaffAgencyService.java
  59. 2
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/CustomerStaffGridService.java
  60. 16
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/DepartmentService.java
  61. 52
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/AgencyServiceImpl.java
  62. 186
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerGridServiceImpl.java
  63. 66
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerStaffAgencyServiceImpl.java
  64. 14
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerStaffGridServiceImpl.java
  65. 53
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/DepartmentServiceImpl.java
  66. 35
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/util/ModuleConstant.java
  67. 47
      epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerAgencyDao.xml
  68. 7
      epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerDepartmentDao.xml
  69. 30
      epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerGridDao.xml
  70. 58
      epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerStaffAgencyDao.xml
  71. 45
      epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerStaffGridDao.xml
  72. 29
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/CommonUserFormDTO.java
  73. 30
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/CommonUserIdListFormDTO.java
  74. 36
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/CommonStaffInfoResultDTO.java
  75. 32
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/StaffRolesResultDTO.java
  76. 18
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/UserInfoOnEnterGridResultDTO.java
  77. 39
      epmet-user/epmet-user-server/src/main/java/com/epmet/controller/CustomerStaffController.java
  78. 15
      epmet-user/epmet-user-server/src/main/java/com/epmet/controller/StaffRoleController.java
  79. 11
      epmet-user/epmet-user-server/src/main/java/com/epmet/dao/CustomerStaffDao.java
  80. 16
      epmet-user/epmet-user-server/src/main/java/com/epmet/dao/StaffRoleDao.java
  81. 1
      epmet-user/epmet-user-server/src/main/java/com/epmet/feign/GovOrgFeignClient.java
  82. 17
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/CustomerStaffService.java
  83. 12
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/StaffRoleService.java
  84. 17
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/CustomerStaffServiceImpl.java
  85. 19
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/StaffRoleServiceImpl.java
  86. 20
      epmet-user/epmet-user-server/src/main/resources/mapper/CustomerStaffDao.xml
  87. 31
      epmet-user/epmet-user-server/src/main/resources/mapper/StaffRoleDao.xml

96
epmet-admin/epmet-admin-server/src/test/java/io/renren/service/DynamicDataSourceTest.java

@ -1,48 +1,48 @@
/**
* 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 org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
/**
* 多数据源测试
*
* @author Mark sunlightcs@gmail.com
* @since 1.0.0
*/
@RunWith(SpringRunner.class)
@SpringBootTest
public class DynamicDataSourceTest {
@Autowired
private DynamicDataSourceTestService dynamicDataSourceTestService;
@Test
public void test(){
Long id = 1067246875800000001L;
dynamicDataSourceTestService.selectById(id);
dynamicDataSourceTestService.updateUser(id);
dynamicDataSourceTestService.updateUserBySlave1(id);
dynamicDataSourceTestService.updateUserBySlave2(id);
}
}
///**
// * 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 org.junit.Test;
//import org.junit.runner.RunWith;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.boot.test.context.SpringBootTest;
//import org.springframework.test.context.junit4.SpringRunner;
//
///**
// * 多数据源测试
// *
// * @author Mark sunlightcs@gmail.com
// * @since 1.0.0
// */
//@RunWith(SpringRunner.class)
//@SpringBootTest
//public class DynamicDataSourceTest {
// @Autowired
// private com.epmet.service.DynamicDataSourceTestService dynamicDataSourceTestService;
//
// @Test
// public void test(){
// Long id = 1067246875800000001L;
// dynamicDataSourceTestService.selectById(id);
// dynamicDataSourceTestService.updateUser(id);
// dynamicDataSourceTestService.updateUserBySlave1(id);
// dynamicDataSourceTestService.updateUserBySlave2(id);
// }
//
//
//}

10
epmet-auth/src/main/java/com/epmet/feign/GovOrgFeignClient.java

@ -3,10 +3,12 @@ package com.epmet.feign;
import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.form.StaffOrgFormDTO;
import com.epmet.dto.result.DepartmentListResultDTO;
import com.epmet.dto.result.StaffOrgsResultDTO;
import com.epmet.feign.fallback.GovOrgFeignClientFallback;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import java.util.List;
@ -27,4 +29,12 @@ public interface GovOrgFeignClient {
**/
@PostMapping(value = "/gov/org/customeragency/getStaffOrgList",consumes = MediaType.APPLICATION_JSON_VALUE)
Result<List<StaffOrgsResultDTO>> getStaffOrgList(StaffOrgFormDTO staffOrgFormDTO);
/**
* 查询人员部门列表
* @param staffId
* @return
*/
@PostMapping("/gov/org/department/staff/{staffId}/departmentlist")
Result<List<DepartmentListResultDTO>> getDepartmentListByStaffId(@PathVariable("staffId") String staffId);
}

6
epmet-auth/src/main/java/com/epmet/feign/fallback/GovOrgFeignClientFallback.java

@ -4,6 +4,7 @@ import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.utils.ModuleUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.form.StaffOrgFormDTO;
import com.epmet.dto.result.DepartmentListResultDTO;
import com.epmet.dto.result.StaffOrgsResultDTO;
import com.epmet.feign.GovOrgFeignClient;
import org.springframework.stereotype.Component;
@ -22,5 +23,10 @@ public class GovOrgFeignClientFallback implements GovOrgFeignClient {
public Result<List<StaffOrgsResultDTO>> getStaffOrgList(StaffOrgFormDTO staffOrgFormDTO) {
return ModuleUtils.feignConError(ServiceConstant.GOV_ORG_SERVER, "getStaffOrgList", staffOrgFormDTO);
}
@Override
public Result<List<DepartmentListResultDTO>> getDepartmentListByStaffId(String staffId) {
return ModuleUtils.feignConError(ServiceConstant.GOV_ORG_SERVER, "getDepartmentListByStaffId", staffId);
}
}

25
epmet-auth/src/main/java/com/epmet/service/impl/GovLoginServiceImpl.java

@ -3,6 +3,7 @@ package com.epmet.service.impl;
import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
import com.epmet.common.token.constant.LoginConstant;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.ExceptionUtils;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.security.dto.GovTokenDto;
import com.epmet.commons.tools.security.dto.TokenDto;
@ -12,6 +13,7 @@ import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.PhoneValidatorUtils;
import com.epmet.dto.CustomerStaffDTO;
import com.epmet.dto.form.*;
import com.epmet.dto.result.DepartmentListResultDTO;
import com.epmet.dto.result.StaffLatestAgencyResultDTO;
import com.epmet.dto.result.StaffOrgsResultDTO;
import com.epmet.dto.result.UserTokenResultDTO;
@ -27,11 +29,10 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
/**
* @Description 政府端登录服务
@ -166,6 +167,22 @@ public class GovLoginServiceImpl implements GovLoginService {
govTokenDto.setExpireTime(jwtTokenUtils.getExpiration(token).getTime());
govTokenDto.setAgencyId(staffLatestAgency.getAgencyId());
govTokenDto.setCustomerId(staffLatestAgency.getCustomerId());
try {
Result<List<DepartmentListResultDTO>> deptListResult = govOrgFeignClient.getDepartmentListByStaffId(staffLatestAgency.getStaffId());
if (deptListResult.success()) {
if (!CollectionUtils.isEmpty(deptListResult.getData())) {
Set<String> deptIdLists = deptListResult.getData().stream().map(dept -> dept.getDepartmentId()).collect(Collectors.toSet());
govTokenDto.setDeptIdList(deptIdLists);
}
} else {
logger.error("登录:查询部门列表,远程调用返回错误:{}", deptListResult.getMsg());
}
} catch (Exception e) {
String errorStackTrace = ExceptionUtils.getErrorStackTrace(e);
logger.error("登录:查询部门列表异常:{}", errorStackTrace);
}
cpUserDetailRedis.set(govTokenDto, expire);
logger.info("截止时间:" + DateUtils.format(jwtTokenUtils.getExpiration(token), "yyyy-MM-dd HH:mm:ss"));
}

3
epmet-auth/src/test/java/com/epmet/TokenGenTest.java

@ -11,7 +11,9 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
@RunWith(SpringRunner.class)
@ -43,6 +45,7 @@ public class TokenGenTest {
govTokenDto.setUpdateTime(System.currentTimeMillis());
govTokenDto.setExpireTime(jwtTokenUtils.getExpiration(tokenStr).getTime());
govTokenDto.setAgencyId("1");
govTokenDto.setDeptIdList(new HashSet<>(Arrays.asList("1","2","3")));
govTokenDto.setCustomerId("f76def116c9c2dc0269cc17867af122c");
cpUserDetailRedis.set(govTokenDto, expire);
}

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

@ -9,13 +9,12 @@
package com.epmet.commons.mybatis.aspect;
import com.epmet.commons.mybatis.annotation.DataFilter;
import com.epmet.commons.mybatis.constant.AccessSettingConstant;
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.*;
import com.epmet.commons.mybatis.entity.DataScope;
import com.epmet.commons.mybatis.feign.GovAccessFeignClient;
import com.epmet.commons.mybatis.feign.GovOrgFeignClient;
import com.epmet.commons.tools.aspect.AccessOpeAspect;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.RenException;
@ -46,12 +45,20 @@ public class DataFilterAspect {
private static final Logger log = LoggerFactory.getLogger(DataFilterAspect.class);
/**
* 线程变量记录是否已经添加了至少一个过滤条件
*/
private static final ThreadLocal<Boolean> hasConditions = new ThreadLocal();
@Autowired
private LoginUserUtil loginUserUtil;
@Autowired
private GovAccessFeignClient govAccessFeignClient;
@Autowired
private GovOrgFeignClient govOrgFeignClient;
public static final String orgIdPathSpliter = ":";
@Before("@annotation(com.epmet.commons.mybatis.annotation.DataFilter)")
@ -94,22 +101,20 @@ public class DataFilterAspect {
// 校验操作权限
validateOpePermission(permCacheResultDTO.getPermissions(), requirePermission);
hasConditions.set(false);
// 生成过滤sql
String sqlFilterSegment = getSqlFilterSegment(userId, permCacheResultDTO.getRoleIdList(), requirePermission,
permCacheResultDTO.getOrgIdPath(), permCacheResultDTO.getGridId(), tableAlias, permCacheResultDTO.getDeptIdList());
// 填充到Service方法列表中的DataScope对象中
Object[] methodArgs = point.getArgs();
for (Object methodArg : methodArgs) {
if (methodArg instanceof DataScope) {
((DataScope) methodArg).setSqlFilter(getSqlFilterSegment(
userId,
permCacheResultDTO.getRoleIdList(),
requirePermission,
permCacheResultDTO.getOrgIdPath(),
permCacheResultDTO.getGridId(),
tableAlias));
((DataScope) methodArg).setSqlFilter(sqlFilterSegment);
return;
}
}
//throw new RenException(ErrorCode.DATA_SCOPE_PARAMS_ERROR);
}
/**
@ -128,89 +133,149 @@ public class DataFilterAspect {
*
* @return
*/
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());
}
});
private String getSqlFilterSegment(String userId, Set<String> roleIds, String reqiurePermission, String orgIdPath,
String gridId, String tableAlias, Set<String> deptIds) {
// 过滤范围
HashSet<String> scopes = filteScopes(scopeDTOS);
if (CollectionUtils.isEmpty(scopes)) {
// 没有范围限制
return "";
}
StringBuilder sb = new StringBuilder();
Map<String, String> accessSettings = listRoleAccessSettings(roleIds);
// 1.生成sql:组织范围过滤
genOrgScopeSql(sb, orgIdPath, scopes, tableAlias);
genOrgScopeSql(sb, orgIdPath, roleIds, reqiurePermission, tableAlias);
// 2.生成sql:我发起的
genIStartedSql(sb, userId, tableAlias);
String iCreated = accessSettings.get(AccessSettingConstant.I_CREATED_KEY);
if (StringUtils.isNotBlank(iCreated) && AccessSettingConstant.I_CREATED_YES.equals(iCreated)) {
genICreatedSql(sb, userId, tableAlias);
}
// 3.生成sql:本网格的
genInGrid(sb, gridId, tableAlias);
String inGrid = accessSettings.get(AccessSettingConstant.IN_GRID_KEY);
if (StringUtils.isNotBlank(inGrid) && AccessSettingConstant.IN_GRID_YES.equals(inGrid)) {
genInGrid(sb, gridId, tableAlias);
}
// 4.生成sql:根据部门列表
String inDept = accessSettings.get(AccessSettingConstant.IN_DEPARTMENT_KEY);
if (StringUtils.isNotBlank(inDept) && AccessSettingConstant.IN_DEPARTMENT_YES.equals(inDept)) {
genDepartmentFilterSql(sb, deptIds);
}
//sb.append(")");
System.out.println("生成的过滤sql:" + sb.toString());
return sb.toString();
}
/**
* 列出角色对应的权限设置项
* @param roleIds
* @return
*/
private Map<String, String> listRoleAccessSettings(Set<String> roleIds) {
Map<String, String> settings = new HashMap<>();
roleIds.forEach(roleId -> {
settings.putAll(listRoleAccessSettings(roleId));
});
return settings;
}
private Map<String, String> listRoleAccessSettings(String roleId) {
Result<Map<String, String>> result = govAccessFeignClient.listAccessSettings(roleId);
if (result.success()) {
return result.getData();
} else {
log.error("角色[{}]查询权限配置AccessSettings失败:{}", roleId, result.getMsg());
}
return new HashMap<>();
}
/**
* 生成部门过滤sql
*
* @param sb
*/
private void genDepartmentFilterSql(StringBuilder sb, Set<String> deptIdList) {
//Result<List<DepartmentListResultDTO>> deptListResult = govOrgFeignClient.getDepartmentListByStaffId(staffId);
if (CollectionUtils.isEmpty(deptIdList)) {
return;
}
deptIdList.forEach(deptId -> {
sb.append(hasConditions.get() ? " OR " : "").append(" DEPARTMENT_ID = '").append(deptId).append("' ");
});
hasConditions.set(true);
}
/**
* 网格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("'");
sb.append(hasConditions.get() ? " OR " : "").append(" GRID_ID ='").append(gridId).append("' ");
} else {
sb.append(" OR ").append(tableAlias).append(".GRID_ID ='").append(gridId).append("'");
sb.append(hasConditions.get() ? " OR " : "").append(tableAlias).append(".GRID_ID ='").append(gridId).append("' ");
}
hasConditions.set(true);
}
/**
* sql我发起的
*
* @param userId
*/
private void genIStartedSql(StringBuilder sb, String userId, String tableAlias) {
private void genICreatedSql(StringBuilder sb, String userId, String tableAlias) {
if (StringUtils.isBlank(tableAlias)) {
sb.append(" OR CREATED_BY ='").append(userId).append("'");
sb.append(hasConditions.get() ? " OR " : " ").append(" CREATED_BY ='").append(userId).append("'");
} else {
sb.append(" OR ").append(tableAlias).append(".CREATED_BY ='").append(userId).append("'");
sb.append(hasConditions.get() ? " OR " : " ").append(tableAlias).append(".CREATED_BY ='").append(userId).append("'");
}
hasConditions.set(true);
}
/**
* 计算组织范围过滤sql整体入口
*
* @param sb
* @param orgIdPath
* @param scopes
*/
public void genOrgScopeSql(StringBuilder sb, String orgIdPath, HashSet<String> scopes, String tableAlias) {
public void genOrgScopeSql(StringBuilder sb, String orgIdPath, Set<String> roleIds, String reqiurePermission, 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;
}
// 取出父组织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, "");
hasConditions.set(true);
}
/**
* 计算组织范围过滤sql
*
* @param scopes
* @param currOrg
* @param pOrgPath
* @return
*/
private void genOrgScopeSql(StringBuilder sb,HashSet<String> scopes, String currOrg, String pOrgPath, String tableAlias) {
private void genOrgScopeSql(StringBuilder sb, HashSet<String> scopes, String currOrg, String pOrgPath, String tableAlias) {
for (String scope : scopes) {
switch (scope) {
case OpeScopeConstant.ORG_CURR:
@ -261,6 +326,9 @@ public class DataFilterAspect {
for (OperationScopeDTO scope : scopeDTOS) {
String scopeIndex = scope.getScopeIndex();
if (StringUtils.isBlank(scopeIndex)) {
continue;
}
String[] currArr = scopeIndex.split("_");
if ("0".equals(currArr[1])) {
// 为0,说明没有包含关系,直接放入

15
epmet-commons/epmet-commons-mybatis/src/main/java/com/epmet/commons/mybatis/constant/AccessSettingConstant.java

@ -0,0 +1,15 @@
package com.epmet.commons.mybatis.constant;
public class AccessSettingConstant {
public static final String I_CREATED_KEY = "I_CREATED";
public static final String I_CREATED_YES = "YES";
public static final String I_PART_KEY = "I_PART";
public static final String I_PART_YES = "YES";
public static final String IN_GRID_KEY = "IN_GRID";
public static final String IN_GRID_YES = "YES";
public static final String IN_DEPARTMENT_KEY = "IN_DEPARTMENT";
public static final String IN_DEPARTMENT_YES = "YES";
}

49
epmet-commons/epmet-commons-mybatis/src/main/java/com/epmet/commons/mybatis/dto/form/DepartmentListResultDTO.java

@ -0,0 +1,49 @@
/**
* 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;
/**
* 组织首页-获取机关下部门列表-部门详情数据
*
* @author sun
*/
@Data
public class DepartmentListResultDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 部门Id
*/
private String departmentId;
/**
* 部门名称
*/
private String departmentName;
/**
* 部门下总人数
*/
private Integer totalUser;
}

13
epmet-commons/epmet-commons-mybatis/src/main/java/com/epmet/commons/mybatis/dto/form/RoleAccessSettingResultDTO.java

@ -0,0 +1,13 @@
package com.epmet.commons.mybatis.dto.form;
import lombok.Data;
@Data
public class RoleAccessSettingResultDTO {
private String settingKey;
private String id;
private String settingName;
private String roleId;
}

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

@ -17,6 +17,11 @@ public class StaffPermCacheResultDTO {
*/
private Set<String> roleIdList;
/**
* 部门id列表
*/
private Set<String> deptIdList;
/**
* 机构Id
*/

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

@ -1,23 +1,23 @@
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.*;
import com.epmet.commons.mybatis.feign.fallback.GovAccessFeignClientFallback;
import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.utils.Result;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* @Description
* @Author sun
*/
//, url = "localhost:8099"
@FeignClient(name = ServiceConstant.GOV_ACCESS_SERVER, fallback = GovAccessFeignClientFallback.class)
public interface GovAccessFeignClient {
@ -36,4 +36,11 @@ public interface GovAccessFeignClient {
@PostMapping("/gov/access/access/operationscopes")
Result<Set<OperationScopeDTO>> getOperationScopesByRoleId(OperationScopeFormDTO operationScopeFormDTO);
/**
* 查询角色的权限相关配置
* @param roleId
* @return
*/
@PostMapping("/gov/access/access/role/{roleId}/accesssettings")
Result<Map<String, String>> listAccessSettings(@PathVariable("roleId") String roleId);
}

30
epmet-commons/epmet-commons-mybatis/src/main/java/com/epmet/commons/mybatis/feign/GovOrgFeignClient.java

@ -0,0 +1,30 @@
package com.epmet.commons.mybatis.feign;
import com.epmet.commons.mybatis.dto.form.*;
import com.epmet.commons.mybatis.feign.fallback.GovAccessFeignClientFallback;
import com.epmet.commons.mybatis.feign.fallback.GovOrgFeignClientFallback;
import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.utils.Result;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import java.util.List;
import java.util.Set;
/**
* @Description
* @Author sun
*/
//, url = "localhost:8092"
@FeignClient(name = ServiceConstant.GOV_ORG_SERVER, fallback = GovOrgFeignClientFallback.class)
public interface GovOrgFeignClient {
/**
* 查询人员部门列表
* @param staffId
* @return
*/
@PostMapping("/gov/org/department/staff/{staffId}/departmentlist")
Result<List<DepartmentListResultDTO>> getDepartmentListByStaffId(@PathVariable("staffId") String staffId);
}

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

@ -1,15 +1,14 @@
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.*;
import com.epmet.commons.mybatis.feign.GovAccessFeignClient;
import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.utils.ModuleUtils;
import com.epmet.commons.tools.utils.Result;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
@ -30,4 +29,9 @@ public class GovAccessFeignClientFallback implements GovAccessFeignClient {
public Result<Set<OperationScopeDTO>> getOperationScopesByRoleId(OperationScopeFormDTO operationScopeFormDTO) {
return ModuleUtils.feignConError(ServiceConstant.GOV_ACCESS_SERVER, "getOperationScopesByRoleId", operationScopeFormDTO);
}
@Override
public Result<Map<String, String>> listAccessSettings(String roleId) {
return ModuleUtils.feignConError(ServiceConstant.GOV_ACCESS_SERVER, "listAccessSettings", roleId);
}
}

27
epmet-commons/epmet-commons-mybatis/src/main/java/com/epmet/commons/mybatis/feign/fallback/GovOrgFeignClientFallback.java

@ -0,0 +1,27 @@
package com.epmet.commons.mybatis.feign.fallback;
import com.epmet.commons.mybatis.dto.form.*;
import com.epmet.commons.mybatis.feign.GovAccessFeignClient;
import com.epmet.commons.mybatis.feign.GovOrgFeignClient;
import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.utils.ModuleUtils;
import com.epmet.commons.tools.utils.Result;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Set;
/**
* 调用政府端权限
* @Author wxz
* @Description
* @Date 2020/4/24 11:17
**/
@Component
public class GovOrgFeignClientFallback implements GovOrgFeignClient {
@Override
public Result<List<DepartmentListResultDTO>> getDepartmentListByStaffId(String staffId) {
return ModuleUtils.feignConError(ServiceConstant.GOV_ACCESS_SERVER, "getDepartmentListByStaffId", staffId);
}
}

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

@ -80,6 +80,9 @@ public class DataFilterInterceptor extends AbstractSqlParserHandler implements I
String orderBy = "ORDER BY";
String groupBy = "GROUP BY";
String sqlFilter = scope.getSqlFilter();
if (StringUtils.isBlank(sqlFilter)) {
return invocation.proceed();
}
if (originalSql.indexOf("WHERE") == 0) {
// 不包含where,需要手动拼接上
sqlFilter = " WHERE ".concat(sqlFilter);

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

@ -215,6 +215,15 @@ public class RedisKeys {
* @return
*/
public static String getRoleOpeScopesKey(String roleId, String opeKey) {
return rootPrefix.concat("gov:access:role:opescopes:").concat(roleId).concat(opeKey);
return rootPrefix.concat("gov:access:role:opescopes:").concat(roleId).concat(":").concat(opeKey);
}
/**
* 角色ID对应的权限配置
* @param roleId
* @return
*/
public static String getRoleAccessSettingKey(String roleId) {
return rootPrefix.concat("gov:access:role:accesssettings:").concat(roleId);
}
}

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

@ -62,7 +62,7 @@ public class GovTokenDto extends BaseTokenDto implements Serializable {
/**
* 部门id列表
*/
private List<String> deptIdList;
private Set<String> deptIdList;
/**
* 功能权限列表实际上是gov_staff => staff_role => role_operation查询到的operationKey

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

@ -51,4 +51,9 @@ public class StaffPermCacheFormDTO {
*/
private Set<String> roleIdList;
/**
* 当前所在网格id
*/
private String gridId;
}

14
epmet-module/gov-access/gov-access-client/src/main/java/com/epmet/dto/result/RoleAccessSettingResultDTO.java

@ -0,0 +1,14 @@
package com.epmet.dto.result;
import lombok.Data;
@Data
public class RoleAccessSettingResultDTO {
private String settingKey;
private String id;
private String settingName;
private String settingValue;
private String roleId;
}

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

@ -18,6 +18,11 @@ public class StaffPermCacheResultDTO {
*/
private Set<String> roleIdList;
/**
* 部门id列表
*/
private Set<String> deptIdList;
/**
* 组织ID
*/

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

@ -6,6 +6,7 @@ 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.result.RoleAccessSettingResultDTO;
import com.epmet.dto.result.RoleOpeScopeResultDTO;
import com.epmet.dto.result.StaffPermCacheResultDTO;
import com.epmet.entity.OperationScopeEntity;
@ -16,6 +17,7 @@ import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
@ -32,7 +34,7 @@ public class AccessController {
private AccessService accessService;
/**
* 更新工作人员权限缓存
* 更新工作人员权限缓存(前端查询权限时候gov-mine会调用此处)
* @param staffPermCacheFormDTO
* @return
*/
@ -45,12 +47,13 @@ public class AccessController {
Set<String> permissions = staffPermCacheFormDTO.getPermissions();
Set<String> roleIdList = staffPermCacheFormDTO.getRoleIdList();
String orgId = staffPermCacheFormDTO.getOrgIdPath();
accessService.updatePermissionCache(staffId, app, client, permissions, roleIdList, orgId);
String gridId = staffPermCacheFormDTO.getGridId();
accessService.updatePermissionCache(staffId, app, client, permissions, roleIdList, orgId, gridId);
return new Result();
}
/**
* 查询用户当前权限列表(DataFilterAspect中用到)
* 从缓存中查询用户当前权限列表(DataFilterAspect中用到)
* @return
*/
@PostMapping("getcurrpermissions")
@ -64,6 +67,7 @@ public class AccessController {
resultDTO.setRoleIdList(govTokenDto.getRoleIdList());
resultDTO.setOrgIdPath(govTokenDto.getOrgIdPath());
resultDTO.setGridId(govTokenDto.getGridId());
resultDTO.setDeptIdList(govTokenDto.getDeptIdList());
}
return new Result<StaffPermCacheResultDTO>().ok(resultDTO);
}
@ -78,4 +82,15 @@ public class AccessController {
Set<RoleOpeScopeResultDTO> scopes = accessService.listOperationScopesByRoleId(operationScopeFormDTO.getRoleId(), operationScopeFormDTO.getOperationKey());
return new Result<Set<RoleOpeScopeResultDTO>>().ok(scopes);
}
/**
* 查询角色的权限相关配置
* @param roleId
* @return
*/
@PostMapping("/role/{roleId}/accesssettings")
public Result<Map<String, String>> listAccessSettings(@PathVariable("roleId") String roleId) {
Map<String, String> settings = accessService.listAccessSettings(roleId);
return new Result<Map<String, String>>().ok(settings);
}
}

37
epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/dao/RoleAccessSettingDao.java

@ -0,0 +1,37 @@
/**
* 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.RoleAccessSettingResultDTO;
import com.epmet.entity.RoleAccessSettingEntity;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* 权限配置
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2020-04-26
*/
@Mapper
public interface RoleAccessSettingDao extends BaseDao<RoleAccessSettingEntity> {
List<RoleAccessSettingResultDTO> listRoleAccessSettingsByRoleId(String roleId);
}

65
epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/entity/RoleAccessSettingEntity.java

@ -0,0 +1,65 @@
/**
* 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-26
*/
@Data
@EqualsAndHashCode(callSuper=false)
@TableName("role_access_setting")
public class RoleAccessSettingEntity extends BaseEpmetEntity {
private static final long serialVersionUID = 1L;
/**
* 配置KEY
*/
private String settingKey;
/**
* 配置name
*/
private String settingName;
/**
* 配置值
*/
private String settingValue;
/**
* 角色ID
*/
private String roleId;
/**
* 操作简介
*/
private String brief;
}

37
epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/redis/RoleAccessSettingRedis.java

@ -0,0 +1,37 @@
package com.epmet.redis;
import com.epmet.commons.tools.redis.RedisKeys;
import com.epmet.commons.tools.redis.RedisUtils;
import com.epmet.dto.result.RoleAccessSettingResultDTO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.function.BiConsumer;
@Component
public class RoleAccessSettingRedis {
@Autowired
private RedisUtils redisUtils;
public void set(Map<String, Object> settings, String roleId) {
String roleAccessSettingKey = RedisKeys.getRoleAccessSettingKey(roleId);
redisUtils.hMSet(roleAccessSettingKey, settings);
}
public Map<String, String> get(String roleId) {
String roleAccessSettingKey = RedisKeys.getRoleAccessSettingKey(roleId);
Map<String, Object> s = redisUtils.hGetAll(roleAccessSettingKey);
Map<String, String> settings = new HashMap<>();
s.forEach((s1, o) -> {
if (o != null) {
settings.put(s1, String.valueOf(o));
}
});
return settings;
}
}

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

@ -1,10 +1,12 @@
package com.epmet.service;
import com.epmet.commons.tools.security.dto.GovTokenDto;
import com.epmet.dto.result.RoleAccessSettingResultDTO;
import com.epmet.dto.result.RoleOpeScopeResultDTO;
import com.epmet.entity.OperationScopeEntity;
import java.util.List;
import java.util.Map;
import java.util.Set;
public interface AccessService {
@ -13,7 +15,7 @@ public interface AccessService {
* @param staffId
* @param permissions
*/
void updatePermissionCache(String staffId, String app, String client, Set<String> permissions, Set<String> roleIdList, String orgIdPath);
void updatePermissionCache(String staffId, String app, String client, Set<String> permissions, Set<String> roleIdList, String orgIdPath, String gridId);
/**
* 查询用户当前权限列表
@ -28,4 +30,11 @@ public interface AccessService {
* @return
*/
Set<RoleOpeScopeResultDTO> listOperationScopesByRoleId(String roleId, String operationKey);
/**
* 查询角色的权限相关配置
* @param roleId
* @return
*/
Map<String, String> listAccessSettings(String roleId);
}

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

@ -4,7 +4,10 @@ import com.epmet.commons.tools.exception.ExceptionUtils;
import com.epmet.commons.tools.security.dto.GovTokenDto;
import com.epmet.commons.tools.utils.CpUserDetailRedis;
import com.epmet.dao.OperationScopeDao;
import com.epmet.dao.RoleAccessSettingDao;
import com.epmet.dto.result.RoleAccessSettingResultDTO;
import com.epmet.dto.result.RoleOpeScopeResultDTO;
import com.epmet.redis.RoleAccessSettingRedis;
import com.epmet.redis.RoleOpeScopeRedis;
import com.epmet.service.AccessService;
import org.slf4j.Logger;
@ -13,7 +16,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.Set;
import java.util.*;
@Service
public class AccessServiceImpl implements AccessService {
@ -26,16 +29,24 @@ public class AccessServiceImpl implements AccessService {
@Autowired
private OperationScopeDao operationScopeDao;
@Autowired
private RoleAccessSettingDao roleAccessSettingDao;
@Autowired
private RoleOpeScopeRedis roleOpeScopeRedis;
@Autowired
private RoleAccessSettingRedis roleAccessSettingRedis;
/**
* 更新权限缓存
* @param staffId
* @param permissions
*/
@Override
public void updatePermissionCache(String staffId, String app, String client, Set<String> permissions, Set<String> roleIdList, String orgIdPath) {
public void updatePermissionCache(String staffId, String app, String client, Set<String> permissions, Set<String> roleIdList,
String orgIdPath, String gridId) {
GovTokenDto govTokenDto = cpUserDetailRedis.get(app, client, staffId, GovTokenDto.class);
if (govTokenDto == null) {
logger.warn("更新[{}]用户缓存:Redis中不存在该用户TokenDto缓存信息", staffId);
@ -45,6 +56,7 @@ public class AccessServiceImpl implements AccessService {
govTokenDto.setPermissions(permissions);
govTokenDto.setRoleIdList(roleIdList);
govTokenDto.setOrgIdPath(orgIdPath);
govTokenDto.setGridId(gridId);
// 将新的TokenDto更新到redis中
long expire = cpUserDetailRedis.getExpire(app, client, staffId);
@ -77,4 +89,26 @@ public class AccessServiceImpl implements AccessService {
}
return scopes;
}
/**
* 查询角色的权限相关配置
* @param roleId
* @return
*/
@Override
public Map<String, String> listAccessSettings(String roleId) {
Map<String, String> settings = roleAccessSettingRedis.get(roleId);
//if (CollectionUtils.isEmpty(settings)) {
// // 数据库查出来,放入redis一份。此处为权限过滤器用到,存在缓存穿透,所以不采用这种方式。
// // 改用为:变动setting的时候手动更新缓存的方式
// List<RoleAccessSettingResultDTO> settingsDB = roleAccessSettingDao.listRoleAccessSettingsByRoleId(roleId);
// if (!CollectionUtils.isEmpty(settingsDB)) {
// roleAccessSettingRedis.set(settingsDB, roleId);
// }
//}
if (settings == null) {
settings = new HashMap<>();
}
return settings;
}
}

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

@ -5,6 +5,8 @@
-- SET NAMES utf8mb4;
-- #SET FOREIGN_KEY_CHECKS = 0;
CREATE DATABASE `epmet_gov_access` DEFAULT CHARACTER SET utf8mb4;
-- DROP TABLE IF EXISTS `permission_scope`;
CREATE TABLE `operation_scope` (
`ID` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'id',
@ -73,4 +75,22 @@ CREATE TABLE `role_scope` (
PRIMARY KEY (`ID`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '角色能操作哪些范围' ROW_FORMAT = Dynamic;
-- 2020.04.26 wxz --
CREATE TABLE `role_access_setting` (
`ID` varchar(64) NOT NULL COMMENT '主键',
`SETTING_KEY` varchar(30) NOT NULL COMMENT '配置KEY',
`SETTING_NAME` varchar(30) NOT NULL COMMENT '配置name',
`SETTING_VALUE` varchar(30) NOT NULL COMMENT '配置值',
`ROLE_ID` varchar(64) DEFAULT NULL COMMENT '角色ID',
`BRIEF` varchar(255) DEFAULT NULL COMMENT '操作简介',
`DEL_FLAG` tinyint(1) DEFAULT NULL,
`REVISION` int(10) DEFAULT NULL,
`CREATED_BY` varchar(64) DEFAULT NULL,
`CREATED_TIME` datetime DEFAULT NULL,
`UPDATED_BY` varchar(64) DEFAULT NULL,
`UPDATED_TIME` datetime DEFAULT NULL,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='权限配置'
-- SET FOREIGN_KEY_CHECKS = 1;

30
epmet-module/gov-access/gov-access-server/src/main/resources/mapper/RoleAccessSettingDao.xml

@ -0,0 +1,30 @@
<?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.RoleAccessSettingDao">
<resultMap type="com.epmet.entity.RoleAccessSettingEntity" id="roleAccessSettingMap">
<result property="id" column="ID"/>
<result property="settingKey" column="SETTING_KEY"/>
<result property="settingName" column="SETTING_NAME"/>
<result property="settingValue" column="SETTING_VALUE"/>
<result property="roleId" column="ROLE_ID"/>
<result property="brief" column="BRIEF"/>
<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="listRoleAccessSettingsByRoleId" resultType="com.epmet.dto.result.RoleAccessSettingResultDTO">
select settings.*
from role_access_setting settings
where ROLE_ID = #{roleId}
AND DEL_FLAG = '0'
</select>
</mapper>

38
epmet-module/gov-access/gov-access-server/src/test/java/com/epmet/test/govaccess/AccessSettingTest.java

@ -0,0 +1,38 @@
package com.epmet.test.govaccess;
import com.epmet.dao.RoleAccessSettingDao;
import com.epmet.dto.result.RoleAccessSettingResultDTO;
import com.epmet.redis.RoleAccessSettingRedis;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@RunWith(SpringRunner.class)
@SpringBootTest
public class AccessSettingTest {
@Autowired
private RoleAccessSettingDao roleAccessSettingDao;
@Autowired
private RoleAccessSettingRedis roleAccessSettingRedis;
@Test
public void addAccessSettings2Redis() {
List<RoleAccessSettingResultDTO> settings = roleAccessSettingDao.listRoleAccessSettingsByRoleId("1");
HashMap<String, Object> objectObjectHashMap = new HashMap<>();
settings.forEach(s -> {
objectObjectHashMap.put(s.getSettingKey(), s.getSettingValue());
});
roleAccessSettingRedis.set(objectObjectHashMap, "1");
Map<String, String> map = roleAccessSettingRedis.get("1");
System.out.println(map);
}
}

1
epmet-module/gov-mine/gov-mine-server/src/main/java/com/epmet/controller/StaffAgencyController.java

@ -96,4 +96,5 @@ public class StaffAgencyController {
return staffAgencyService.getLatestGrid(latestGridFormDTO);
}
}

3
epmet-module/gov-mine/gov-mine-server/src/main/java/com/epmet/feign/EpmetUserFeignClient.java

@ -18,11 +18,14 @@ import org.springframework.web.bind.annotation.RequestBody;
import java.util.List;
import java.util.List;
/**
* @Description
* @Author sun
*/
//, url = "localhost:8087"
@FeignClient(name = ServiceConstant.EPMET_USER_SERVER, fallback = EpmetUserFeignClientFallback.class)
public interface EpmetUserFeignClient {
/**

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

@ -19,6 +19,7 @@ import java.util.List;
* @Description
* @Author sun
*/
//, url = "localhost:8092"
@FeignClient(name = ServiceConstant.GOV_ORG_SERVER, fallback = GovOrgFeignClientFallBack.class)
public interface GovOrgFeignClient {

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

@ -38,27 +38,25 @@ public class AccessServiceImpl implements AccessService {
@Autowired
private GovOrgFeignClient govOrgFeignClient;
@Autowired
private CpUserDetailRedis cpUserDetailRedis;
@Override
public Set<String> listOpeKeysByStaffId(String app, String client, String staffId, String agencyId, String gridId) {
public List<GovStaffRoleDTO> queryGovStaffRoles(String staffId, String orgId) {
List<GovStaffRoleDTO> roleDTOS = new ArrayList<>();
// 查询机关单位权限
StaffRoleFormDTO formDTO = new StaffRoleFormDTO();
formDTO.setStaffId(staffId);
formDTO.setOrgId(agencyId);
Result<List<GovStaffRoleDTO>> agencyResult = userFeignClient.getRolesOfStaff(formDTO);
if (!CollectionUtils.isEmpty(agencyResult.getData())) {
roleDTOS.addAll(agencyResult.getData());
}
// 查询网格权限
formDTO.setStaffId(staffId);
formDTO.setOrgId(gridId);
formDTO.setOrgId(orgId);
Result<List<GovStaffRoleDTO>> gridResult = userFeignClient.getRolesOfStaff(formDTO);
if (!CollectionUtils.isEmpty(gridResult.getData())) {
roleDTOS.addAll(gridResult.getData());
}
return roleDTOS;
}
@Override
public Set<String> listOpeKeysByStaffId(String app, String client, String staffId, String agencyId, String gridId) {
List<GovStaffRoleDTO> roleDTOS = new ArrayList<>();
// 查询机关单位中的角色
roleDTOS.addAll(queryGovStaffRoles(staffId, agencyId));
// 查询网格中的角色
roleDTOS.addAll(queryGovStaffRoles(staffId, gridId));
// 拼装操作key列表
Set<String> opeKeys = new HashSet<>();
@ -86,7 +84,7 @@ public class AccessServiceImpl implements AccessService {
// 查询该直属机关的orgIdPath
Result<CustomerAgencyDTO> agencyById = govOrgFeignClient.getAgencyById(agencyId);
if (agencyById.getCode() != 0 || agencyById.getData() == null) {
if (!agencyById.success() || agencyById.getData() == null) {
logger.error("根据当前机构id[{}]查询pids失败:{}", agencyId, agencyById.getMsg());
throw new RenException(EpmetErrorCode.SERVER_ERROR.getCode());
}
@ -98,6 +96,7 @@ public class AccessServiceImpl implements AccessService {
staffPermCacheFormDTO.setStaffId(staffId);
staffPermCacheFormDTO.setPermissions(opeKeys);
staffPermCacheFormDTO.setRoleIdList(roleIds);
staffPermCacheFormDTO.setGridId(gridId);
// 拼接orgIdPath
staffPermCacheFormDTO.setOrgIdPath(String.format("%s:%s", agencyById.getData().getPids(), agencyId));
govAccessFeignClient.updatePermissionCache(staffPermCacheFormDTO);

29
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/CommonAgencyIdFormDTO.java

@ -0,0 +1,29 @@
package com.epmet.dto.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* @Description
* @ClassName CommonAgencyIdFormDTO
* @Author wangc
* @date 2020.04.23 14:37
*/
@Data
public class CommonAgencyIdFormDTO implements Serializable {
private static final long serialVersionUID = -4634394162176710898L;
/**
* 机构Id
* */
@NotBlank(message = "机构Id不可为空")
private String agencyId;
/**
* 用户Id(政府工作人员)
* */
@NotBlank(message = "用户Id不能为空")
private String userId;
}

30
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/CommonDepartmentFormDTO.java

@ -0,0 +1,30 @@
package com.epmet.dto.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* @Description
* @ClassName CommonDepartmentFormDTO
* @Author wangc
* @date 2020.04.26 16:21
*/
@Data
public class CommonDepartmentFormDTO implements Serializable {
private static final long serialVersionUID = -7557299771900280575L;
/**
* 部门Id
* */
@NotBlank(message = "部门Id不能为空")
private String departmentId;
/**
* 用户Id
* */
@NotBlank(message = "用户Id不能为空")
private String userId;
}

35
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/CommonDepartmentStaffInfoFormDTO.java

@ -0,0 +1,35 @@
package com.epmet.dto.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* @Description
* @ClassName CommonDepartmentStaffInfoFormDTO
* @Author wangc
* @date 2020.04.26 16:52
*/
@Data
public class CommonDepartmentStaffInfoFormDTO implements Serializable {
private static final long serialVersionUID = 2895745833519899428L;
/**
* 部门Id
* */
@NotBlank(message = "部门Id")
private String departmentId;
/**
* 工作人员Id
* */
@NotBlank(message = "工作人员Id不能为空")
private String staffId;
/**
* 用户Id
* */
@NotBlank(message = "用户Id不能为空")
private String userId;
}

29
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/CommonGridIdFormDTO.java

@ -0,0 +1,29 @@
package com.epmet.dto.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* @Description
* @ClassName CommonGridIdFormDTO
* @Author wangc
* @date 2020.04.24 14:17
*/
@Data
public class CommonGridIdFormDTO implements Serializable {
private static final long serialVersionUID = 2496019865436084805L;
/**
* 网格Id
* */
@NotBlank(message = "网格Id不能为空")
private String gridId;
/**
* 用户Id
* */
@NotBlank(message = "用户Id不能为空")
private String userId;
}

35
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/CommonGridStaffInfoFormDTO.java

@ -0,0 +1,35 @@
package com.epmet.dto.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* @Description 通用的网格工作人员入参DTO 包含网格Id和用户Id
* @ClassName CommonGridStaffInfoFormDTO
* @Author wangc
* @date 2020.04.26 09:38
*/
@Data
public class CommonGridStaffInfoFormDTO implements Serializable{
private static final long serialVersionUID = 6345334778886091374L;
/**
* 网格Id
* */
@NotBlank(message = "网格Id不能为空")
private String gridId;
/**
* 员工Id
* */
@NotBlank(message = "工作人员Id不能为空")
private String staffId;
/**
* 当前操作人
* */
@NotBlank(message = "用户Id不能为空")
private String userId;
}

38
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/CommonGridStaffListFromDTO.java

@ -0,0 +1,38 @@
package com.epmet.dto.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
import java.util.List;
/**
* @Description 通用的网格工作人员列表入参DTO 包含网格Id和用户Id集合
* @ClassName CommonGridStaffListFromDTO
* @Author wangc
* @date 2020.04.26 09:38
*/
@Data
public class CommonGridStaffListFromDTO implements Serializable{
private static final long serialVersionUID = -5753128515827497700L;
/**
* 网格Id
* */
@NotBlank(message = "网格Id不能为空")
private String gridId;
/**
* 员工Id列表
* */
@NotBlank(message = "工作人员Id不能为空")
private List<String> selectedList;
/**
* 当前操作人
* */
@NotBlank(message = "用户Id不能为空")
private String userId;
}

1
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/CustomerGridFormDTO.java

@ -38,5 +38,4 @@ public class CustomerGridFormDTO implements Serializable {
@NotBlank(message = "网格ID不能为空")
private String gridId;
}

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

@ -45,4 +45,9 @@ public class EditAgencyFormDTO implements Serializable {
@NotBlank(message = "机关组织名称不能为空")
private String agencyName;
/**
* token中用户Id
*/
private String userId;
}

10
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/AgencysResultDTO.java

@ -57,11 +57,6 @@ public class AgencysResultDTO implements Serializable {
*/
private Integer areaCode;
/**
* 国家
*/
private String country;
/**
* 省份
*/
@ -72,6 +67,11 @@ public class AgencysResultDTO implements Serializable {
*/
private String city;
/**
* 区县
*/
private String district;
/**
* 本机关的所有上级机关
*/

5
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/DepartmentDetailResultDTO.java

@ -33,6 +33,11 @@ public class DepartmentDetailResultDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 组织机构Id
*/
private String agencyId;
/**
* 部门Id
*/

32
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/GridBaseInfoResultDTO.java

@ -0,0 +1,32 @@
package com.epmet.dto.result;
import lombok.Data;
import java.io.Serializable;
/**
* @Description 网格基础信息DTO
* @ClassName GridBaseInfoResultDTO
* @Author wangc
* @date 2020.04.23 14:11
*/
@Data
public class GridBaseInfoResultDTO implements Serializable {
private static final long serialVersionUID = -5034984869469273329L;
/**
* 网格Id
* */
private String gridId;
/**
* 网格名称
* */
private String gridName;
/**
* 网格人数
* */
private Integer totalUser;
}

31
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/GridListInfoResultDTO.java

@ -0,0 +1,31 @@
package com.epmet.dto.result;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.RequiredArgsConstructor;
import java.io.Serializable;
import java.util.List;
/**
* @Description 网格列表信息
* @ClassName GridListInfoResultDTO
* @Author wangc
* @date 2020.04.23 14:21
*/
@Data
@AllArgsConstructor
public class GridListInfoResultDTO implements Serializable {
private static final long serialVersionUID = -5513674274570559283L;
/**
* 网格总数
* */
private Integer gridCount;
/**
* 网格信息列表
* */
private List<GridBaseInfoResultDTO> gridList;
}

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

@ -68,6 +68,7 @@ public class AgencyController {
*/
@PostMapping("editagency")
public Result editAgency(@LoginUser TokenDto tokenDTO, @RequestBody EditAgencyFormDTO formDTO) {
formDTO.setUserId(tokenDTO.getUserId());
ValidatorUtils.validateEntity(formDTO);
return agencyService.editAgency(formDTO);
}

5
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/CustomerStaffAgencyController.java

@ -17,7 +17,9 @@
package com.epmet.controller;
import com.epmet.commons.tools.annotation.LoginUser;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.ExcelUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.AssertUtils;
@ -27,6 +29,9 @@ import com.epmet.commons.tools.validator.group.UpdateGroup;
import com.epmet.commons.tools.validator.group.DefaultGroup;
import com.epmet.dto.CustomerStaffAgencyDTO;
import com.epmet.dto.form.StaffsInAgencyFromDTO;
import com.epmet.dto.form.CommonGridIdFormDTO;
import com.epmet.dto.form.CustomerGridFormDTO;
import com.epmet.dto.result.CommonStaffInfoResultDTO;
import com.epmet.dto.result.LatestCustomerResultDTO;
import com.epmet.dto.result.StaffInfoResultDTO;
import com.epmet.excel.CustomerStaffAgencyExcel;

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

@ -5,16 +5,12 @@ import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.dto.form.*;
import com.epmet.dto.result.AddDepartmentResultDTO;
import com.epmet.dto.result.DepartmentDetailResultDTO;
import com.epmet.dto.result.DepartmentInAgencyResultDTO;
import com.epmet.dto.result.DepartmentListResultDTO;
import com.epmet.dto.result.*;
import com.epmet.service.CustomerStaffAgencyService;
import com.epmet.service.CustomerStaffAgencyService;
import com.epmet.service.DepartmentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@ -29,6 +25,8 @@ public class DepartmentController {
@Autowired
private DepartmentService departmentService;
@Autowired
private CustomerStaffAgencyService customerStaffAgencyService;
/**
* 添加部门人员
@ -112,4 +110,43 @@ public class DepartmentController {
ValidatorUtils.validateEntity(formDTO);
return departmentService.departmentList(formDTO);
}
/**
* @Description 查询加入部门的可选人员列表
* @Param TokenDto
* @Param CommonDepartmentFormDTO
* @return Result<List<CommonStaffInfoResultDTO>>
* @Author wangc
* @Date 2020.04.26 16:47
**/
@PostMapping("selectablestaffs")
public Result<List<CommonStaffInfoResultDTO>> selectableStaffs(@LoginUser TokenDto tokenDto,@RequestBody CommonDepartmentFormDTO departmentFormDTO){
departmentFormDTO.setUserId(tokenDto.getUserId());
ValidatorUtils.validateEntity(departmentFormDTO);
return customerStaffAgencyService.getSelectableDeptStaffs(departmentFormDTO);
}
/**
* @Description 移除部门人员
* @Param TokenDto
* @Param CommonDepartmentStaffInfoFormDTO
* @return Result
* @Author wangc
* @Date 2020.04.26 17:09
**/
public Result removeStaff(@LoginUser TokenDto tokenDto,@RequestBody CommonDepartmentStaffInfoFormDTO departmentStaffInfoFormDTO){
departmentStaffInfoFormDTO.setUserId(tokenDto.getUserId());
ValidatorUtils.validateEntity(departmentStaffInfoFormDTO);
return departmentService.removeStaff(departmentStaffInfoFormDTO);
}
/**
* 根据StaffId查询所属部门列表
* @return
*/
@PostMapping("staff/{staffId}/departmentlist")
public Result<List<DepartmentListResultDTO>> getDepartmentListByStaffId(@PathVariable("staffId") String staffId) {
List<DepartmentListResultDTO> deptList = departmentService.listDepartmentListByStaffId(staffId);
return new Result<List<DepartmentListResultDTO>>().ok(deptList);
}
}

85
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/GridController.java

@ -3,19 +3,23 @@ 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.dto.form.AddGridFormDTO;
import com.epmet.dto.form.CustomerGridFormDTO;
import com.epmet.dto.form.DeleteGridFormDTO;
import com.epmet.dto.form.EditGridFormDTO;
import com.epmet.dto.form.*;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.dto.result.AddGridResultDTO;
import com.epmet.dto.result.CommonStaffInfoResultDTO;
import com.epmet.dto.result.GridBaseInfoResultDTO;
import com.epmet.dto.result.GridDetailResultDTO;
import com.epmet.dto.result.GridListInfoResultDTO;
import com.epmet.service.CustomerGridService;
import com.epmet.service.CustomerStaffAgencyService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
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;
/**
* @Auther zxc
* @Create 2020-04-23 9:50
@ -26,6 +30,8 @@ public class GridController {
@Autowired
private CustomerGridService customerGridService;
@Autowired
private CustomerStaffAgencyService customerStaffAgencyService;
/**
* 获取网格详情
@ -64,4 +70,75 @@ public class GridController {
return customerGridService.deleteGrid(tokenDto,deleteGridFormDTO);
}
/**
* @Description 查找指定机构下的网格列表
* @Param CommonAgencyIdFormDTO -> agencyId
* @return Result<GridListInfoResultDTO>
* @Author wangc
* @Date 2020.04.23 14:45
**/
@PostMapping("gridlist")
public Result<GridListInfoResultDTO> gridList(@LoginUser TokenDto tokenDto,@RequestBody CommonAgencyIdFormDTO agencyFormDTO){
agencyFormDTO.setAgencyId(tokenDto.getUserId());
ValidatorUtils.validateEntity(agencyFormDTO);
return customerGridService.getGridListByAgency(agencyFormDTO);
}
/**
* @Description 查找指定机构下的全部网格列表
* @Param CommonAgencyIdFormDTO -> agencyId
* @return Result<GridListInfoResultDTO>
* @Author wangc
* @Date 2020.04.23 14:45
**/
@PostMapping("allgrids")
public Result<List<GridBaseInfoResultDTO>> allGrids(@LoginUser TokenDto tokenDto, @RequestBody CommonAgencyIdFormDTO agencyFormDTO){
agencyFormDTO.setAgencyId(tokenDto.getUserId());
ValidatorUtils.validateEntity(agencyFormDTO);
return customerGridService.getAllGridsByAgency(agencyFormDTO);
}
/**
* @Description 在给网格添加工作人员时查询当前机关下没有加入到此网格下的工作人员禁用的也不能选不显示
* @Param CommonGridIdFormDTO
* @return Result<List<CommonStaffInfoResultDTO>>
* @Author wangc
* @Date 2020.04.24 14:14
**/
@PostMapping("selectablestaffs")
public Result<List<CommonStaffInfoResultDTO>> selectableStaffs(@LoginUser TokenDto tokenDto, @RequestBody CommonGridIdFormDTO gridIdFormDTO){
gridIdFormDTO.setUserId(tokenDto.getUserId());
ValidatorUtils.validateEntity(gridIdFormDTO);
return customerStaffAgencyService.getSelectableStaffs(gridIdFormDTO);
}
/**
* @Description 添加网格工作人员 批量
* @Param tokenDto
* @Param CommonGridStaffListFromDTO
* @return Result
* @Author wangc
* @Date 2020.04.26 15:36
**/
@PostMapping("addgridstaffs")
public Result addGridStaffs(@LoginUser TokenDto tokenDto, @RequestBody CommonGridStaffListFromDTO commonGridStaffListFromDTO){
commonGridStaffListFromDTO.setUserId(tokenDto.getUserId());
ValidatorUtils.validateEntity(tokenDto);
return customerGridService.addGridStaffs(commonGridStaffListFromDTO);
}
/**
* @Description 移除网格工作人员
* @Param tokenDto
* @Param CommonGridStaffInfoFormDTO
* @return Result
* @Author wangc
* @Date 2020.04.26 15:36
**/
@PostMapping("removegridstaff")
public Result removeGridStaff(@LoginUser TokenDto tokenDto, @RequestBody CommonGridStaffInfoFormDTO commonGridStaffInfoFormDTO){
commonGridStaffInfoFormDTO.setUserId(tokenDto.getUserId());
ValidatorUtils.validateEntity(tokenDto);
return customerGridService.removeGridStaff(commonGridStaffInfoFormDTO);
}
}

9
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerAgencyDao.java

@ -18,6 +18,7 @@
package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.CustomerAgencyDTO;
import com.epmet.dto.result.AgencyListResultDTO;
import com.epmet.dto.result.ParentListResultDTO;
import com.epmet.dto.result.StaffOrgsResultDTO;
@ -68,4 +69,12 @@ public interface CustomerAgencyDao extends BaseDao<CustomerAgencyEntity> {
* @Description 获取组织列表
**/
List<AgencyListResultDTO> selectAgencyList(@Param("pId") String pId);
/**
* @param customerAgencyDTO
* @return
* @Author sun
* @Description 查询当前组织的所有下级组织列表
**/
List<CustomerAgencyDTO> selectFindList(CustomerAgencyDTO customerAgencyDTO);
}

7
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerDepartmentDao.java

@ -49,4 +49,11 @@ public interface CustomerDepartmentDao extends BaseDao<CustomerDepartmentEntity>
* @Description 根据当前机关Id查询该机关下的直属部门列表
**/
List<DepartmentListResultDTO> selectDepartmentList(@Param("agencyId") String agencyId);
/**
* 根据StaffId查询所属部门列表
* @param staffId
* @return
*/
List<DepartmentListResultDTO> listDepartmentListByStaffId(@Param("staffId") String staffId);
}

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

@ -29,6 +29,7 @@ import com.epmet.dto.result.AddGridResultDTO;
import com.epmet.dto.result.CustomerGridByUserIdResultDTO;
import com.epmet.dto.result.CustomerGridForStrangerResultDTO;
import com.epmet.dto.result.GridDetailResultDTO;
import com.epmet.dto.result.GridBaseInfoResultDTO;
import com.epmet.entity.CustomerGridEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@ -133,4 +134,22 @@ public interface CustomerGridDao extends BaseDao<CustomerGridEntity> {
List<UserIdDTO> selectUserIdByGrid(@Param("gridId")String gridId);
/**
* @Description 得到当前机构的网格总数
* @Param agencyId(String) 对应CUSTOMER_GRID中的PID字段
* @return int
* @Author wangc
* @Date 2020.04.23 15:05
**/
int selectGridCountByAgencyId(@Param("agencyId") String agencyId);
/**
* @Description 得到当前机构的网格详情列表
* @Param agencyId(String) 对应CUSTOMER_GRID中的PID字段
* @return List<GridBaseInfoResultDTO> -> GridBaseInfoResultDTO :: getGridId :: getGridName :: getTotalUser
* @Author wangc
* @Date 2020.04.23 15:30
**/
List<GridBaseInfoResultDTO> selectGridListByAgencyId(@Param("agencyId")String agencyId,@Param("pageSize")Integer pageSize);
}

23
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerStaffAgencyDao.java

@ -19,8 +19,12 @@ package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.CustomerStaffAgencyDTO;
import com.epmet.dto.form.CustomerGridFormDTO;
import com.epmet.entity.CustomerStaffAgencyEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.List;
@ -46,5 +50,22 @@ public interface CustomerStaffAgencyDao extends BaseDao<CustomerStaffAgencyEntit
* @return
*/
List<CustomerStaffAgencyDTO> selectCustomerStaffAgencyList(String agencyId);
/**
* @Description 返回给定网格Id所属的机构下未加入该网格的工作人员Id(禁用未知)
* @Param gridId (String)
* @return List<String> UserId列表
* @Author wangc
* @Date 2020.04.24 14:01
**/
List<String> getSelectableStaffsForGrid(@Param("gridId") String gridId);
/**
* @Description 查询当前网格所属机构下的不在此部门的工作人员Id(禁用未知)
* @Param gridId (String)
* @return List<String> UserId列表
* @Author wangc
* @Date 2020.04.26 16:33
**/
List<String> getSelectableStaffsForDept(@Param("departmentId") String departmentId);
}

24
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerStaffGridDao.java

@ -19,9 +19,15 @@ package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.CustomerGridDTO;
import com.epmet.dto.CustomerStaffGridDTO;
import com.epmet.dto.form.LatestGridFormDTO;
import com.epmet.entity.CustomerStaffGridEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
/**
* 网格人员关系表
@ -41,4 +47,22 @@ public interface CustomerStaffGridDao extends BaseDao<CustomerStaffGridEntity> {
**/
CustomerGridDTO selectStaffGridOrderByGridName(LatestGridFormDTO latestGridFormDTO);
/**
* @Description 校验用户是否已加入当前网格
* @Param userIds
* @Param gridId
* @return Set<String>
* @Author wangc
* @Date 2020.04.26 14:08
**/
Set<String> distinctGridStaffs(@Param("userIds")List<String> userIds, @Param("gridId")String gridId);
/**
* @Description 批量插入网格工作人员
* @Param List<CustomerStaffGridDTO>
* @return
* @Author wangc
* @Date 2020.04.26 14:57
**/
void insertBatch(List<CustomerStaffGridDTO> list);
}

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

@ -15,6 +15,11 @@ 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.result.*;
import com.epmet.dto.CustomerStaffDTO;
import com.epmet.dto.CustomerStaffGridDTO;
import com.epmet.dto.StaffGridListDTO;
import com.epmet.feign.fallback.EpmetUserFeignClientFallBack;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
@ -142,4 +147,23 @@ public interface EpmetUserFeignClient {
@PostMapping("/epmetuser/customerstaff/selectcustomeridbyuserid")
Result<List<CustomerIdDTO>> selectCustomerIdByUserId(AddDepartmentStaffFormDTO addDepartmentStaffFormDTO);
/**
* @Description 通过userId列表查询未被禁用的用户信息
* @Param CommonUserIdListFormDTO :: getUserIdList
* @return Result<List<CommonStaffInfoResultDTO>>
* @Author wangc
* @Date 2020.04.24 15:44
**/
@PostMapping("/epmetuser/customerstaff/enabestaffmsglist")
Result<List<CommonStaffInfoResultDTO>> enableStaffMsgList(CommonUserIdListFormDTO userIdList);
/**
* @Description 查询一个员工在指定客户下的角色
* @Param CommonUserFormDTO
* @return Result<StaffRolesResultDTO>
* @Author wangc
* @Date 2020.04.26 13:08
**/
@PostMapping("/epmetuser/staffrole/getcustomerstaffroles")
Result<StaffRolesResultDTO> getCustomerStaffRoles(CommonUserFormDTO commonUserFormDTO);
}

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

@ -16,6 +16,11 @@ 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.result.*;
import com.epmet.dto.CustomerStaffDTO;
import com.epmet.dto.CustomerStaffGridDTO;
import com.epmet.dto.StaffGridListDTO;
import com.epmet.feign.EpmetUserFeignClient;
import org.springframework.stereotype.Component;
@ -91,4 +96,14 @@ public class EpmetUserFeignClientFallBack implements EpmetUserFeignClient {
return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "selectCustomerIdByUserId", addDepartmentStaffFormDTO);
}
@Override
public Result<List<CommonStaffInfoResultDTO>> enableStaffMsgList(CommonUserIdListFormDTO userIdList) {
return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "enableStaffMsgList", userIdList);
}
@Override
public Result<StaffRolesResultDTO> getCustomerStaffRoles(CommonUserFormDTO commonUserFormDTO) {
return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "getCustomerStaffRoles", commonUserFormDTO);
}
}

44
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/CustomerGridService.java

@ -25,9 +25,10 @@ import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.CustomerGridDTO;
import com.epmet.dto.form.*;
import com.epmet.dto.result.AddGridResultDTO;
import com.epmet.dto.result.CustomerGridByUserIdResultDTO;
import com.epmet.dto.result.CustomerGridForStrangerResultDTO;
import com.epmet.dto.result.GridDetailResultDTO;
import com.epmet.dto.form.CommonAgencyIdFormDTO;
import com.epmet.dto.form.CustomerGridFormDTO;
import com.epmet.dto.form.ListCustomerGridFormDTO;
import com.epmet.dto.result.*;
import com.epmet.entity.CustomerGridEntity;
import org.springframework.web.bind.annotation.RequestBody;
@ -153,4 +154,41 @@ public interface CustomerGridService extends BaseService<CustomerGridEntity> {
* @return
*/
Result deleteGrid(TokenDto tokenDto,DeleteGridFormDTO deleteGridFormDTO);
/**
* @Description 查找指定机构下的网格列表 对应接口:/gov/org/grid/gridlist
* @Param CommonAgencyIdFormDTO -> agencyId
* @return Result<GridListInfoResultDTO>
* @Author wangc
* @Date 2020.04.23 14:45
**/
Result<GridListInfoResultDTO> getGridListByAgency(CommonAgencyIdFormDTO agencyFormDTO);
/**
* @Description 查找指定机构下的全部网格列表 对应接口:/gov/org/grid/allgrids
* @Param CommonAgencyIdFormDTO -> agencyId
* @return Result<List<GridBaseInfoResultDTO>>
* @Author wangc
* @Date 2020.04.24 17:16
**/
Result<List<GridBaseInfoResultDTO>> getAllGridsByAgency(CommonAgencyIdFormDTO agencyFormDTO);
/**
* @Description 移除网格工作人员
* @Param CommonGridStaffInfoFormDTO
* @return Result
* @Author wangc
* @Date 2020.04.26 09:48
**/
Result removeGridStaff(CommonGridStaffInfoFormDTO staffInfoFormDTO);
/**
* @Description 批量添加网格工作人员
* @Param CommonGridStaffListFromDTO
* @return Result
* @Author wangc
* @Date 2020.04.26 09:50
**/
Result addGridStaffs(CommonGridStaffListFromDTO staffListFormDTO);
}

21
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/CustomerStaffAgencyService.java

@ -21,7 +21,10 @@ import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.CustomerStaffAgencyDTO;
import com.epmet.dto.form.CommonDepartmentFormDTO;
import com.epmet.dto.form.StaffsInAgencyFromDTO;
import com.epmet.dto.form.CommonGridIdFormDTO;
import com.epmet.dto.result.CommonStaffInfoResultDTO;
import com.epmet.dto.result.LatestCustomerResultDTO;
import com.epmet.entity.CustomerStaffAgencyEntity;
@ -112,4 +115,22 @@ public interface CustomerStaffAgencyService extends BaseService<CustomerStaffAge
Result<List<CustomerStaffAgencyDTO>> getCustomerStaffAgencyList(StaffsInAgencyFromDTO fromDTO);
/**
* @Description 获取添加网格成员的可选人员列表
* @Param CommonGridIdFormDTO
* @return com.epmet.dto.result.CommonStaffInfoResultDTO[epmet-user-client]
* @Author wangc
* @Date 2020.04.23 16:15
**/
Result<List<CommonStaffInfoResultDTO>> getSelectableStaffs(CommonGridIdFormDTO gridIdFormDTO);
/**
* @Description 获取添加部门成员的可选人员列表
* @Param CommonDepartmentFormDTO
* @return com.epmet.dto.result.CommonStaffInfoResultDTO[epmet-user-client]
* @Author wangc
* @Date 2020.04.26 16:37
**/
Result<List<CommonStaffInfoResultDTO>> getSelectableDeptStaffs(CommonDepartmentFormDTO departmentFormDTO);
}

2
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/CustomerStaffGridService.java

@ -21,7 +21,9 @@ import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.CustomerStaffGridDTO;
import com.epmet.dto.form.CustomerGridFormDTO;
import com.epmet.dto.form.LatestGridFormDTO;
import com.epmet.dto.result.CommonStaffInfoResultDTO;
import com.epmet.dto.result.CustomerGridByUserIdResultDTO;
import com.epmet.entity.CustomerStaffGridEntity;

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

@ -86,4 +86,20 @@ public interface DepartmentService {
* @return
*/
Result addDepartmentStaff(TokenDto tokenDto,AddDepartmentStaffFormDTO addDepartmentStaffFormDTO);
/**
* @Description 部门人员移除
* @Param CommonDepartmentStaffInfoFormDTO
* @return Result
* @Author wangc
* @Date 2020.04.26 16:57
**/
Result removeStaff(CommonDepartmentStaffInfoFormDTO departmentStaffInfoFormDTO);
/**
* 根据StaffId查询所属部门列表
* @param staffId
* @return
*/
List<DepartmentListResultDTO> listDepartmentListByStaffId(String staffId);
}

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

@ -24,10 +24,12 @@ import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.constant.CustomerAgencyConstant;
import com.epmet.dao.CustomerAgencyDao;
import com.epmet.dto.CustomerAgencyDTO;
import com.epmet.dto.form.*;
import com.epmet.dto.result.*;
import com.epmet.entity.CustomerAgencyEntity;
import com.epmet.service.AgencyService;
import com.epmet.service.CustomerAgencyService;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -35,8 +37,7 @@ 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.*;
/**
* 机关单位信息
@ -49,6 +50,8 @@ public class AgencyServiceImpl implements AgencyService {
private static final Logger log = LoggerFactory.getLogger(AgencyServiceImpl.class);
@Autowired
private CustomerAgencyDao customerAgencyDao;
@Autowired
private CustomerAgencyService customerAgencyService;
/**
* @param formDTO
@ -103,10 +106,46 @@ public class AgencyServiceImpl implements AgencyService {
CustomerAgencyEntity entity = new CustomerAgencyEntity();
entity.setId(formDTO.getAgencyId());
entity.setOrganizationName(formDTO.getAgencyName());
//1:更新当前组织信息
if (customerAgencyDao.updateById(entity) < NumConstant.ONE) {
log.error(CustomerAgencyConstant.UPDATE_EXCEPTION);
throw new RenException(CustomerAgencyConstant.UPDATE_EXCEPTION);
}
//2:查询当前组织的所有下级组织列表(查询pids字段值包含该组织id的数据)
CustomerAgencyDTO agencyDTO = new CustomerAgencyDTO();
agencyDTO.setPids(formDTO.getAgencyId());
List<CustomerAgencyDTO> agencyList = customerAgencyDao.selectFindList(agencyDTO);
if (null == agencyList || agencyList.size() < NumConstant.ONE) {
return result;
}
//3:循环组织列表,查询每一个组织的所有上级组织重新拼接所有上级名称(allParentName)字段值
List<CustomerAgencyEntity> editList = new ArrayList<>();
Date date = new Date();
agencyList.forEach(agency->{
CustomerAgencyEntity customerAgencyEntity = new CustomerAgencyEntity();
//3-1:查询当前组织的所有上级组织
List<String> listStr = Arrays.asList(agency.getPids().split(":"));
List<ParentListResultDTO> parentList = customerAgencyDao.selectPAgencyById(listStr);
//3-2:重新拼接当前组织的所有上级名称字段值,将组织Id和拼好的值存入集合
StringBuffer allParentName = new StringBuffer();
parentList.forEach(parents->{
if(StringUtils.isBlank(allParentName)){
allParentName.append(parents.getName());
}else {
allParentName.append("-").append(parents.getName());
}
});
customerAgencyEntity.setId(agency.getId());
customerAgencyEntity.setAllParentName(allParentName.toString());
customerAgencyEntity.setUpdatedBy(formDTO.getUserId());
customerAgencyEntity.setUpdatedTime(date);
editList.add(customerAgencyEntity);
});
//4:批量更新因一个组织名称变动而引起的其他组织字段值的变动
if (!customerAgencyService.updateBatchById(editList)) {
log.error(CustomerAgencyConstant.UPDATE_EXCEPTION);
throw new RenException(CustomerAgencyConstant.UPDATE_EXCEPTION);
}
return result;
}
@ -151,9 +190,11 @@ public class AgencyServiceImpl implements AgencyService {
@Override
public Result<AgencysResultDTO> agencyDetail(AgencydetailFormDTO formDTO) {
AgencysResultDTO agencysResultDTO = new AgencysResultDTO();
List<ParentListResultDTO> parentList = new ArrayList<>();
//1:查询本机关详细信息
CustomerAgencyEntity entity = customerAgencyDao.selectById(formDTO.getAgencyId());
if (null == entity) {
agencysResultDTO.setParentList(parentList);
return new Result<AgencysResultDTO>().ok(agencysResultDTO);
}
agencysResultDTO = ConvertUtils.sourceToTarget(entity, AgencysResultDTO.class);
@ -161,10 +202,11 @@ public class AgencyServiceImpl implements AgencyService {
agencysResultDTO.setAgencyName(entity.getOrganizationName());
//2:查询本机关的所有上级机关,按自上而下层级顺序
if (null == entity.getPids()) {
agencysResultDTO.setParentList(parentList);
return new Result<AgencysResultDTO>().ok(agencysResultDTO);
}
List<String> listStr = Arrays.asList(entity.getPids().split(":"));
List<ParentListResultDTO> parentList = customerAgencyDao.selectPAgencyById(listStr);
parentList = customerAgencyDao.selectPAgencyById(listStr);
agencysResultDTO.setParentList(parentList);
return new Result<AgencysResultDTO>().ok(agencysResultDTO);
}
@ -180,7 +222,7 @@ public class AgencyServiceImpl implements AgencyService {
SubAgencyResultDTO subAgencyResultDTO = new SubAgencyResultDTO();
//1:根据当前机关Id查询直属下一级机关列表
List<SubListResultDTO> agencyList = customerAgencyDao.selectSubAgencyById(formDTO.getAgencyId());
subAgencyResultDTO.setAgencyList(agencyList);
subAgencyResultDTO.setAgencyList(null == agencyList ? new ArrayList<SubListResultDTO>() : agencyList);
//2:统计下一级机关数
subAgencyResultDTO.setSubAgencyCount(agencyList.size());
return new Result<SubAgencyResultDTO>().ok(subAgencyResultDTO);
@ -195,7 +237,7 @@ public class AgencyServiceImpl implements AgencyService {
@Override
public Result<List<AgencyListResultDTO>> agencyList(AgencyListFormDTO formDTO) {
List<AgencyListResultDTO> agencyList = customerAgencyDao.selectAgencyList(formDTO.getAgencyId());
return new Result<List<AgencyListResultDTO>>().ok(agencyList);
return new Result<List<AgencyListResultDTO>>().ok(null == agencyList ? new ArrayList<AgencyListResultDTO>() : agencyList);
}
@Override

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

@ -22,30 +22,39 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.constant.FieldConstant;
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.constant.NumConstant;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dao.CustomerGridDao;
import com.epmet.dao.CustomerStaffGridDao;
import com.epmet.dto.*;
import com.epmet.dto.form.*;
import com.epmet.dto.result.AddGridResultDTO;
import com.epmet.dto.result.CustomerGridByUserIdResultDTO;
import com.epmet.dto.result.CustomerGridForStrangerResultDTO;
import com.epmet.dto.result.GridDetailResultDTO;
import com.epmet.dto.result.*;
import com.epmet.dto.CustomerGridDTO;
import com.epmet.dto.CustomerStaffGridDTO;
import com.epmet.dto.StaffGridListDTO;
import com.epmet.dto.form.CommonAgencyIdFormDTO;
import com.epmet.dto.form.CustomerGridFormDTO;
import com.epmet.dto.form.ListCustomerGridFormDTO;
import com.epmet.entity.CustomerGridEntity;
import com.epmet.feign.EpmetUserFeignClient;
import com.epmet.redis.CustomerGridRedis;
import com.epmet.service.CustomerGridService;
import com.epmet.service.CustomerStaffGridService;
import com.epmet.util.ModuleConstant;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import java.util.stream.Collectors;
/**
* 客户网格表
@ -54,12 +63,18 @@ import java.util.*;
* @since v1.0.0 2020-03-16
*/
@Service
@Slf4j
public class CustomerGridServiceImpl extends BaseServiceImpl<CustomerGridDao, CustomerGridEntity> implements CustomerGridService {
private static final Logger logger = LoggerFactory.getLogger(CustomerGridServiceImpl.class);
@Autowired
private CustomerGridRedis customerGridRedis;
@Autowired
private EpmetUserFeignClient epmetUserFeignClient;
@Autowired
private CustomerStaffGridService customerStaffGridService;
@Autowired
private CustomerStaffGridDao customerStaffGridDao;
@Override
public PageData<CustomerGridDTO> page(Map<String, Object> params) {
@ -242,4 +257,163 @@ public class CustomerGridServiceImpl extends BaseServiceImpl<CustomerGridDao, Cu
return new Result();
}
/**
* @Description 查找指定机构下的网格列表,按照创建时间倒叙取前十个
* @Param CommonAgencyIdFormDTO
* @return Result<GridListInfoResultDTO>
* @Author wangc
* @Date 2020.04.23 14:45
**/
@Override
public Result<GridListInfoResultDTO> getGridListByAgency(CommonAgencyIdFormDTO agencyFormDTO) {
//1.查当前机构下网格总数
int gridCount = baseDao.selectGridCountByAgencyId(agencyFormDTO.getAgencyId());
//2.查当前机构下每个网格的详情,按照创建时间倒叙取前十个
List<GridBaseInfoResultDTO> gridList = baseDao.selectGridListByAgencyId(agencyFormDTO.getAgencyId(), NumConstant.TEN);
//3.封装结果
GridListInfoResultDTO resultData = new GridListInfoResultDTO(gridCount,gridList);
return new Result<GridListInfoResultDTO>().ok(resultData);
}
/**
* @Description 查找指定机构下的全部网格列表
* @Param CommonAgencyIdFormDTO -> agencyId
* @return Result<List<GridBaseInfoResultDTO>>
* @Author wangc
* @Date 2020.04.24 17:16
**/
@Override
public Result<List<GridBaseInfoResultDTO>> getAllGridsByAgency(CommonAgencyIdFormDTO agencyFormDTO) {
return new Result<List<GridBaseInfoResultDTO>>().ok(baseDao.selectGridListByAgencyId(agencyFormDTO.getAgencyId(),null));
}
/**
* @Description 移除网格工作人员
* @Param CommonGridStaffInfoFormDTO
* @return Result
* @Author wangc
* @Date 2020.04.26 09:48
**/
@Override
public Result removeGridStaff(CommonGridStaffInfoFormDTO staffInfoFormDTO) {
Result<CustomerGridEntity> authResult = authenticateManager(staffInfoFormDTO.getGridId(),staffInfoFormDTO.getUserId());
if(authResult.success()){
//3.移除操作
//3.1 人员剔除
CustomerStaffGridDTO staff = new CustomerStaffGridDTO();
staff.setUserId(staffInfoFormDTO.getStaffId());
staff.setGridId(staffInfoFormDTO.getGridId());
staff.setUpdatedBy(staffInfoFormDTO.getUserId());
staff.setDelFlag(NumConstant.ONE);
customerStaffGridService.update(staff);
//3.2 人数减一
CustomerGridDTO grid = new CustomerGridDTO();
grid.setId(authResult.getData().getId());
grid.setUpdatedBy(staffInfoFormDTO.getUserId());
grid.setTotalUser(authResult.getData().getTotalUser() == null || authResult.getData().getTotalUser() <= 0
? 0 : (authResult.getData().getTotalUser() - 1));
update(grid);
}
return new Result().error();
}
/**
* @Description 批量添加网格工作人员
* @Param CommonGridStaffListFromDTO
* @return Result
* @Author wangc
* @Date 2020.04.26 09:50
**/
@Override
public Result addGridStaffs(CommonGridStaffListFromDTO staffListFormDTO) {
//1.校验管理员权限
Result<CustomerGridEntity> authResult = authenticateManager(staffListFormDTO.getGridId(),staffListFormDTO.getUserId());
if(authResult.success()){
//2.校验人员重复信息,剔除重复人员
Set<String> existedStaffIds =
customerStaffGridDao.distinctGridStaffs(staffListFormDTO.getSelectedList(),staffListFormDTO.getGridId());
Set<String> staffIds = new HashSet<>(staffListFormDTO.getSelectedList());
staffIds.removeAll(existedStaffIds);
//3.校验人员是否被禁用
Result<List<CommonStaffInfoResultDTO>> staffsFeignResult =
epmetUserFeignClient.enableStaffMsgList(new CommonUserIdListFormDTO(
new ArrayList<>(staffIds),
authResult.getData().getCustomerId()
));
if(staffsFeignResult.success() && null != staffsFeignResult.getData() && staffsFeignResult.getData().size() > 0){
//4.添加
List<String> validStaffIds =
staffsFeignResult.getData()
.stream()
.map(CommonStaffInfoResultDTO::getStaffId)
.collect(Collectors.toList());
List<CustomerStaffGridDTO> staffs2Insert = new LinkedList<>();
for(String id : validStaffIds){
CustomerStaffGridDTO staff2Insert = new CustomerStaffGridDTO();
staff2Insert.setUserId(id);
staff2Insert.setGridId(staffListFormDTO.getGridId());
staff2Insert.setCustomerId(authResult.getData().getCustomerId());
staff2Insert.setCreatedBy(staffListFormDTO.getUserId());
staff2Insert.setUpdatedBy(staffListFormDTO.getUserId());
staffs2Insert.add(staff2Insert);
}
//4.1 批量新增网格工作人员
customerStaffGridDao.insertBatch(staffs2Insert);
CustomerGridDTO grid2Update = new CustomerGridDTO();
grid2Update.setId(staffListFormDTO.getGridId());
grid2Update.setUpdatedBy(staffListFormDTO.getUserId());
grid2Update.setTotalUser(
null == authResult.getData().getTotalUser() ?
validStaffIds.size() : authResult.getData().getTotalUser() + validStaffIds.size()
);
//4.2 更新网格人数
update(grid2Update);
return new Result();
}
}
return new Result().error();
}
/**
* @Description 对管理员身份进行权鉴
* @Param
* @return
* @Author wangc
* @Date 2020.04.26 13:44
**/
private Result<CustomerGridEntity> authenticateManager(String gridId,String userId){
//1.查询网格相关信息
CustomerGridEntity gridMsg =
baseDao.selectById(gridId);
//2.校验权限
if(null != gridMsg && StringUtils.isNotBlank(gridMsg.getId()) && StringUtils.equals(gridMsg.getDelFlag(),NumConstant.ZERO_STR)){
CommonUserFormDTO userParam = new CommonUserFormDTO();
userParam.setCustomerId(gridMsg.getCustomerId());
userParam.setUserId(userId);
Result<StaffRolesResultDTO> staffFeignResult =
epmetUserFeignClient.getCustomerStaffRoles(userParam);
StaffRolesResultDTO resultData = staffFeignResult.getData();
if(staffFeignResult.success() && null != resultData && StringUtils.isNotBlank(resultData.getStaffId())){
if(null != resultData.getRoleList()
&& StringUtils.equals(ModuleConstant.ENABLE,resultData.getEnableFlag())
&& resultData.getRoleList().size() > 0
&& resultData.getRoleList().contains(ModuleConstant.MANAGER)){
return new Result<CustomerGridEntity>().ok(gridMsg);
}else{
log.error(ModuleConstant.NO_AUTH_OR_DISABLE);
}
}else{
log.error(ModuleConstant.STAFF_INFO_NOT_FOUND);
}
}else{
log.error(ModuleConstant.GRID_INFO_NOT_FOUND);
}
return new Result<CustomerGridEntity>().error();
}
}

66
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerStaffAgencyServiceImpl.java

@ -20,34 +20,36 @@ 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.constant.NumConstant;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dao.CustomerStaffAgencyDao;
import com.epmet.dto.CustomerDTO;
import com.epmet.dto.CustomerStaffAgencyDTO;
import com.epmet.dto.CustomerStaffDTO;
import com.epmet.dto.*;
import com.epmet.dto.form.CommonDepartmentFormDTO;
import com.epmet.dto.form.CommonUserIdListFormDTO;
import com.epmet.dto.form.StaffsInAgencyFromDTO;
import com.epmet.dto.form.CommonGridIdFormDTO;
import com.epmet.dto.result.CommonStaffInfoResultDTO;
import com.epmet.dto.result.LatestCustomerResultDTO;
import com.epmet.dto.result.StaffInfoResultDTO;
import com.epmet.dto.result.StaffsInAgencyResultDTO;
import com.epmet.entity.CustomerAgencyEntity;
import com.epmet.entity.CustomerStaffAgencyEntity;
import com.epmet.feign.EpmetUserFeignClient;
import com.epmet.feign.OperCrmFeignClient;
import com.epmet.redis.CustomerStaffAgencyRedis;
import com.epmet.service.CustomerAgencyService;
import com.epmet.service.CustomerDepartmentService;
import com.epmet.service.CustomerGridService;
import com.epmet.service.CustomerStaffAgencyService;
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.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 人员-机关单位关系表
@ -66,6 +68,10 @@ public class CustomerStaffAgencyServiceImpl extends BaseServiceImpl<CustomerStaf
private OperCrmFeignClient operCrmFeignClient;
@Autowired
private CustomerAgencyService customerAgencyService;
@Autowired
private CustomerGridService customerGridService;
@Autowired
private CustomerDepartmentService customerDepartmentService;
@Override
public PageData<CustomerStaffAgencyDTO> page(Map<String, Object> params) {
@ -148,4 +154,50 @@ public class CustomerStaffAgencyServiceImpl extends BaseServiceImpl<CustomerStaf
return new Result<List<CustomerStaffAgencyDTO>>().ok(customerStaffAgencyList);
}
/**
* @Description 获取添加网格成员的可选人员列表先在本服务下查询userId然后调用EpmetUserFeign校验账户是否被禁用使用EpmetUser服务的DTO作为返回参数
* @Param CustomerGridFormDTO -> gridId
* @return Result<List<CommonStaffInfoResultDTO>> -> CommonStaffInfoResultDTO [epmet-user-client]
* @Author wangc
* @Date 2020.04.23 16:28
**/
@Override
public Result<List<CommonStaffInfoResultDTO>> getSelectableStaffs(CommonGridIdFormDTO customerGridFormDTO) {
//1.去数据库查询是此网格所属机构且不在此网格下的工作人员,这里无法确认是否被禁用
List<String> userId = baseDao.getSelectableStaffsForGrid(customerGridFormDTO.getGridId());
//2.去用户服务下拿取用户基本信息,并校验工作人员身份是否被禁用
if(null != userId && userId.size() >= NumConstant.ONE){
CustomerGridDTO gridMsg =
customerGridService.get(customerGridFormDTO.getGridId());
if(null != gridMsg && StringUtils.isNotBlank(gridMsg.getId())){
//直接返回结果
return epmetUserFeignClient.enableStaffMsgList(new CommonUserIdListFormDTO(userId,gridMsg.getCustomerId()));
}
}
return new Result<List<CommonStaffInfoResultDTO>>().ok(new ArrayList<>());
}
/**
* @Description 获取添加部门成员的可选人员列表
* @Param CommonDepartmentFormDTO
* @return com.epmet.dto.result.CommonStaffInfoResultDTO[epmet-user-client]
* @Author wangc
* @Date 2020.04.26 16:37
**/
@Override
public Result<List<CommonStaffInfoResultDTO>> getSelectableDeptStaffs(CommonDepartmentFormDTO departmentFormDTO) {
//1.去数据库查询是此网格所属机构且不在此网格下的工作人员,这里无法确认是否被禁用
List<String> userId = baseDao.getSelectableStaffsForDept(departmentFormDTO.getDepartmentId());
//2.去用户服务下拿取用户基本信息,并校验工作人员身份是否被禁用
if(null != userId && userId.size() >= NumConstant.ONE){
CustomerDepartmentDTO deptMsg =
customerDepartmentService.get(departmentFormDTO.getDepartmentId());
if(null != deptMsg && StringUtils.isNotBlank(deptMsg.getId())){
//直接返回结果
return epmetUserFeignClient.enableStaffMsgList(new CommonUserIdListFormDTO(userId,deptMsg.getCustomerId()));
}
}
return new Result<List<CommonStaffInfoResultDTO>>().ok(new ArrayList<>());
}
}

14
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerStaffGridServiceImpl.java

@ -28,9 +28,12 @@ import com.epmet.commons.tools.utils.Result;
import com.epmet.dao.CustomerStaffGridDao;
import com.epmet.dto.CustomerGridDTO;
import com.epmet.dto.CustomerStaffGridDTO;
import com.epmet.dto.form.CustomerGridFormDTO;
import com.epmet.dto.form.LatestGridFormDTO;
import com.epmet.dto.result.CommonStaffInfoResultDTO;
import com.epmet.dto.result.CustomerGridByUserIdResultDTO;
import com.epmet.entity.CustomerStaffGridEntity;
import com.epmet.feign.EpmetUserFeignClient;
import com.epmet.redis.CustomerStaffGridRedis;
import com.epmet.service.CustomerStaffGridService;
import org.apache.commons.lang3.StringUtils;
@ -54,6 +57,9 @@ public class CustomerStaffGridServiceImpl extends BaseServiceImpl<CustomerStaffG
@Autowired
private CustomerStaffGridRedis customerStaffGridRedis;
@Autowired
private EpmetUserFeignClient epmetUserFeignClient;
@Override
public PageData<CustomerStaffGridDTO> page(Map<String, Object> params) {
IPage<CustomerStaffGridEntity> page = baseDao.selectPage(
@ -106,6 +112,13 @@ public class CustomerStaffGridServiceImpl extends BaseServiceImpl<CustomerStaffG
baseDao.deleteBatchIds(Arrays.asList(ids));
}
/**
* @Description 查询指定客户下一个用户所在的网格按照网格名称升序排序取第一个
* @Param LatestGridFormDTO -> customerId ; staffId
* @return CustomerGridDTO
* @Author wangc
* @Date 2020.04.23 09:11
**/
@Override
public Result<CustomerGridByUserIdResultDTO> getStaffGridOrderByGridName(LatestGridFormDTO latestGridFormDTO) {
CustomerGridDTO grid = baseDao.selectStaffGridOrderByGridName(latestGridFormDTO);
@ -115,5 +128,4 @@ public class CustomerStaffGridServiceImpl extends BaseServiceImpl<CustomerStaffG
result.setAgencyId(grid.getPid());
return new Result<CustomerGridByUserIdResultDTO>().ok(result);
}
}

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

@ -28,6 +28,8 @@ import com.epmet.dao.CustomerAgencyDao;
import com.epmet.dao.CustomerDepartmentDao;
import com.epmet.dao.CustomerStaffDepartmentDao;
import com.epmet.dto.CustomerIdDTO;
import com.epmet.dto.CustomerDepartmentDTO;
import com.epmet.dto.CustomerStaffDepartmentDTO;
import com.epmet.dto.StaffRoleDTO;
import com.epmet.dto.form.*;
import com.epmet.dto.result.*;
@ -35,14 +37,18 @@ import com.epmet.entity.CustomerAgencyEntity;
import com.epmet.entity.CustomerDepartmentEntity;
import com.epmet.entity.CustomerStaffDepartmentEntity;
import com.epmet.feign.EpmetUserFeignClient;
import com.epmet.service.CustomerDepartmentService;
import com.epmet.service.CustomerStaffDepartmentService;
import com.epmet.service.DepartmentService;
import com.epmet.util.ModuleConstant;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@ -60,8 +66,12 @@ public class DepartmentServiceImpl implements DepartmentService {
@Autowired
private CustomerDepartmentDao customerDepartmentDao;
@Autowired
private CustomerDepartmentService customerDepartmentService;
@Autowired
private CustomerStaffDepartmentDao customerStaffDepartmentDao;
@Autowired
private CustomerStaffDepartmentService customerStaffDepartmentService;
@Autowired
private EpmetUserFeignClient epmetUserFeignClient;
/**
@ -153,6 +163,7 @@ public class DepartmentServiceImpl implements DepartmentService {
//2:查询部门下工作人员的用户Id集合
List<String> userIdList = customerStaffDepartmentDao.selectUserIdByDepartmentId(formDTO.getDepartmentId());
if (null == userIdList || userIdList.size() < NumConstant.ONE) {
departmentDetailResultDTO.setStaffList(new ArrayList<DepartInStaffListResultDTO>());
return result.ok(departmentDetailResultDTO);
}
DepartmentInStaffFormDTO departmentInStaffFormDTO = new DepartmentInStaffFormDTO();
@ -183,7 +194,7 @@ public class DepartmentServiceImpl implements DepartmentService {
DepartmentInAgencyResultDTO departmentInAgencyResultDTO = new DepartmentInAgencyResultDTO();
//1:根据当前机关Id查询该机关下的直属部门列表
List<DepartmentListResultDTO> departmentList = customerDepartmentDao.selectDepartmentListByAgencyId(formDTO.getAgencyId());
departmentInAgencyResultDTO.setDepartmentList(departmentList);
departmentInAgencyResultDTO.setDepartmentList(null == departmentList ? new ArrayList<DepartmentListResultDTO>() : departmentList);
//2:统计下一级机关数
departmentInAgencyResultDTO.setDepartmentCount(departmentList.size());
return new Result<DepartmentInAgencyResultDTO>().ok(departmentInAgencyResultDTO);
@ -198,7 +209,7 @@ public class DepartmentServiceImpl implements DepartmentService {
@Override
public Result<List<DepartmentListResultDTO>> departmentList(DepartmentListFormDTO formDTO) {
List<DepartmentListResultDTO> departmentList = customerDepartmentDao.selectDepartmentList(formDTO.getAgencyId());
return new Result<List<DepartmentListResultDTO>>().ok(departmentList);
return new Result<List<DepartmentListResultDTO>>().ok((null == departmentList ? new ArrayList<DepartmentListResultDTO>() : departmentList));
}
/**
@ -226,4 +237,42 @@ public class DepartmentServiceImpl implements DepartmentService {
customerStaffDepartmentDao.updateDepartmentStaffCount(data.size(),addDepartmentStaffFormDTO.getDepartmentId());
return new Result();
}
/**
* @Description 部门人员移除
* @Param CommonDepartmentStaffInfoFormDTO
* @return Result
* @Author wangc
* @Date 2020.04.26 16:57
**/
@Override
public Result removeStaff(CommonDepartmentStaffInfoFormDTO departmentStaffInfoFormDTO) {
//1.剔除工作人员
CustomerStaffDepartmentDTO staff = new CustomerStaffDepartmentDTO();
staff.setUserId(departmentStaffInfoFormDTO.getStaffId());
staff.setDepartmentId(departmentStaffInfoFormDTO.getDepartmentId());
staff.setUpdatedBy(departmentStaffInfoFormDTO.getUserId());
staff.setDelFlag(NumConstant.ONE_STR);
customerStaffDepartmentService.update(staff);
//2.部门人数减一
CustomerDepartmentDTO dept =
customerDepartmentService.get(departmentStaffInfoFormDTO.getDepartmentId());
if(null != dept && StringUtils.isNotBlank(dept.getId())){
CustomerDepartmentDTO dept2Update = new CustomerDepartmentDTO();
dept2Update.setId(dept.getId());
dept2Update.setTotalUser(null == dept.getTotalUser() || dept.getTotalUser() == 0
? 0 : dept.getTotalUser() - NumConstant.ONE);
dept2Update.setUpdatedBy(departmentStaffInfoFormDTO.getUserId());
customerDepartmentService.update(dept2Update);
return new Result();
}
log.warn(ModuleConstant.DEPT_INFO_NOT_FOUND);
return new Result().error();
}
@Override
public List<DepartmentListResultDTO> listDepartmentListByStaffId(String staffId) {
return customerDepartmentDao.listDepartmentListByStaffId(staffId);
}
}

35
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/util/ModuleConstant.java

@ -16,4 +16,39 @@ public interface ModuleConstant {
* tokenDto不能为null userId不能为空
*/
String USER_NOT_NULL="用户信息不能为空";
/**
* 用户未被禁用标识
* */
String ENABLE = "enable";
/**
* 用户被禁用标识
* */
String DISABLE = "disable";
/**
* 管理员角色名称
* */
String MANAGER = "管理员";
/**
* 操作者账号失效或没有相应权限
* */
String NO_AUTH_OR_DISABLE = "操作者账号失效或没有相应权限,终止操作。";
/**
* 查询操作者身份信息失败
* */
String STAFF_INFO_NOT_FOUND = "查询操作者身份信息失败,终止操作。";
/**
* 网格信息有误
* */
String GRID_INFO_NOT_FOUND = "网格信息有误,终止操作。";
/**
* 找不到相关部门信息
* */
String DEPT_INFO_NOT_FOUND = "找不到相关部门信息";
}

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

@ -3,23 +3,26 @@
<mapper namespace="com.epmet.dao.CustomerAgencyDao">
<resultMap type="com.epmet.entity.CustomerAgencyEntity" id="customerAgencyMap">
<result property="id" column="ID"/>
<result property="customerId" column="CUSTOMER_ID"/>
<result property="pid" column="PID"/>
<result property="pids" column="PIDS"/>
<result property="allParentName" column="ALL_PARENT_NAME"/>
<result property="organizationName" column="ORGANIZATION_NAME"/>
<result property="level" column="LEVEL"/>
<result property="areaCode" column="AREA_CODE"/>
<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"/>
<result property="totalUser" column="TOTAL_USER"/>
</resultMap>
<sql id="sql">
ca.id AS "id",
ca.customer_id AS "customerId",
ca.pid AS "pid",
ca.pids AS "pids",
ca.all_parent_name AS "allParentName",
ca.organization_name AS "organizationName",
ca.level AS "level",
ca.area_code AS "areaCode",
ca.total_user AS "totalUser",
ca.province AS "province",
ca.city AS "city",
ca.district AS "district",
ca.del_flag AS "delflag",
ca.revision AS "revision",
ca.created_by AS "createdby",
ca.created_time AS "createdtime",
ca.updated_by AS "updatedby",
ca.updated_time AS "updatedtime"
</sql>
<!-- 查询客户对应的根级组织 -->
<select id="selectStaffOrgList" parameterType="map" resultType="com.epmet.dto.result.StaffOrgsResultDTO">
@ -71,4 +74,14 @@
AND pid = #{pId}
ORDER BY created_time DESC
</select>
<select id="selectFindList" parameterType="com.epmet.dto.CustomerAgencyDTO" resultType="com.epmet.dto.CustomerAgencyDTO">
SELECT
<include refid="sql"></include>
FROM customer_agency ca
WHERE ca.del_flag = '0'
<if test='pids != "" and pids != null'>
AND ca.pids LIKE concat('%', #{pids}, '%')
</if>
</select>
</mapper>

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

@ -26,4 +26,11 @@
ORDER BY created_time DESC
</select>
<!--根据StaffId查询所属部门列表-->
<select id="listDepartmentListByStaffId" resultType="com.epmet.dto.result.DepartmentListResultDTO">
select cd.ID as departmentId, cd.DEPARTMENT_NAME, TOTAL_USER
from customer_staff_department csd
inner join customer_department cd on (csd.DEPARTMENT_ID = cd.ID)
where csd.USER_ID = #{staffId}
</select>
</mapper>

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

@ -206,4 +206,34 @@
AND del_flag = 0
</select>
<!-- 得到当前机构的网格总数 -->
<select id="selectGridCountByAgencyId" parameterType="string" resultType="int">
SELECT
COUNT( 0 )
FROM
CUSTOMER_GRID
WHERE
DEL_FLAG = '0'
AND
PID = #{agencyId}
</select>
<!-- 得到当前机构的网格列表 -->
<select id="selectGridListByAgencyId" resultType="com.epmet.dto.result.GridBaseInfoResultDTO">
SELECT
ID AS grdiId,
GRID_NAME,
TOTAL_USER
FROM
CUSTOMER_GRID
<where>
DEL_FLAG = '0'
AND PID = #{agencyId}
ORDER BY CREATED_TIME DESC
<if test="null != pageSize and pageSize > 0">
LIMIT #{pageSize}
</if>
</where>
</select>
</mapper>

58
epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerStaffAgencyDao.xml

@ -39,4 +39,62 @@
AND AGENCY_ID =#{agencyId}
</select>
<!-- 查询当前网格所属机构下的不在此网格的工作人员Id -->
<select id="getSelectableStaffsForGrid" parameterType="string" resultType="string">
SELECT
agency.USER_ID
FROM
CUSTOMER_STAFF_AGENCY agency
WHERE
agency.DEL_FLAG = '0'
AND agency.AGENCY_ID = (
SELECT
PID
FROM
CUSTOMER_GRID
WHERE
DEL_FLAG = '0'
AND ID = #{gridId})
AND agency.USER_ID NOT IN (
SELECT
grid2.USER_ID
FROM
CUSTOMER_STAFF_GRID
WHERE
DEL_FLAG = '0'
AND
GRID_ID = #{gridId} )
</select>
<!-- 查询当前部门所属机构下的不在此部门的工作人员Id -->
<select id="getSelectableStaffsForDept" parameterType="string" resultType="string">
SELECT
agency.USER_ID
FROM
CUSTOMER_STAFF_AGENCY agency
WHERE
agency.DEL_FLAG = '0'
AND agency.AGENCY_ID = (
SELECT
AGENCY_ID
FROM
CUSTOMER_DEPARTMENT
WHERE
DEL_FLAG = '0'
AND ID = #{departmentId})
AND agency.USER_ID NOT IN (
SELECT
USER_ID
FROM
CUSTOMER_STAFF_DEPARTMENT
WHERE
DEL_FLAG = '0'
AND
DEPARTMENT_ID = #{departmentId} )
</select>
</mapper>

45
epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerStaffGridDao.xml

@ -41,4 +41,49 @@
LIMIT 1
</select>
<!-- 校验用户是否已加入当前网格 -->
<select id="distinctGridStaffs" resultType="string">
SELECT
USER_ID
FROM
CUSTOMER_STAFF_GRID
WHERE
DEL_FLAG = '0'
AND GRID_ID = #{gird}
<foreach collection="userIds" item="userId" open="AND USER_ID IN (" separator="," close=")">
#{userId}
</foreach>
</select>
<!-- 批量插入网格工作人员 -->
<insert id="insertBatch" parameterType="java.util.List">
insert into customer_staff_grid
(
id,
user_id,
grid_id,
customer_id,
del_flag,
revision,
created_by,
created_time,
updated_by,
updated_time
) values
<foreach collection="list" item="item" index="index" separator=",">
(
(SELECT REPLACE(UUID(), '-', '') AS id),
#{item.userId},
#{item.gridId},
#{item.customerId},
'0',
0,
#{item.createdBy},
now(),
#{item.updatedBy},
now()
)
</foreach>
</insert>
</mapper>

29
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/CommonUserFormDTO.java

@ -0,0 +1,29 @@
package com.epmet.dto.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* @Description 通用的用户Id入参
* @ClassName CommonUserFormDTO
* @Author wangc
* @date 2020.04.26 10:53
*/
@Data
public class CommonUserFormDTO implements Serializable{
private static final long serialVersionUID = -7994579456530273809L;
/**
* 用户Id
* */
@NotBlank(message = "用户Id不能为空")
private String userId;
/**
* 客户Id
* */
@NotBlank(message = "客户Id不能为空")
private String customerId;
}

30
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/CommonUserIdListFormDTO.java

@ -0,0 +1,30 @@
package com.epmet.dto.form;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
import java.util.List;
/**
* @Description 通用用户Id列表参数DTO
* @ClassName CommonUserIdListFormDTO
* @Author wangc
* @date 2020.04.24 15:42
*/
@Data
@AllArgsConstructor
public class CommonUserIdListFormDTO implements Serializable{
private static final long serialVersionUID = -7045691156972928671L;
/**
* 用户列表
* */
@NotBlank(message = "用户列表不能为空")
private List<String> userIdList;
@NotBlank(message = "客户Id不能为空")
private String customerId;
}

36
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/CommonStaffInfoResultDTO.java

@ -0,0 +1,36 @@
package com.epmet.dto.result;
import lombok.Data;
import java.io.Serializable;
/**
* @Description 通用工作人员信息DTO
* @ClassName CommonStaffInfoResultDTO
* @Author wangc
* @date 2020.04.23 16:16
*/
@Data
public class CommonStaffInfoResultDTO implements Serializable {
private static final long serialVersionUID = 4174593133225057232L;
/**
* 工作人员用户Id
* */
private String staffId;
/**
* 工作人员用户头像
* */
private String staffHeadPhoto;
/**
* 工作人员用户显示昵称
* */
private String staffName;
/**
* 性别 1男2女0未知
* */
private Integer gender;
}

32
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/StaffRolesResultDTO.java

@ -0,0 +1,32 @@
package com.epmet.dto.result;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* @Description 通用的员工角色返参
* @ClassName StaffRolesResultDTO
* @Author wangc
* @date 2020.04.26 10:29
*/
@Data
public class StaffRolesResultDTO implements Serializable {
private static final long serialVersionUID = -2049883620062097446L;
/**
* 员工Id
* */
private String staffId;
/**
* 角色列表
* */
private List<String> roleList;
/**
* 是否被禁用 未禁用enable,已禁用disabled
* */
private String enableFlag;
}

18
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/UserInfoOnEnterGridResultDTO.java

@ -15,16 +15,34 @@ import java.util.List;
public class UserInfoOnEnterGridResultDTO implements Serializable{
private static final long serialVersionUID = 1L;
/**
* 当前客户Id
* */
private String currentCustomerId;
/**
* 当前网格Id
* */
private String currentGridId;
/**
* 当前网格名称
* */
private String currentGridName;
/**
* 用户昵称
* */
private String nickname;
/**
* 用户头像
* */
private String userHeadPhoto;
/**
* 用户身份列表
* */
private List<String> userRoleList;
}

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

@ -35,6 +35,11 @@ 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.CustomerStaffDTO;
import com.epmet.dto.CustomerStaffGridDTO;
import com.epmet.dto.StaffGridListDTO;
import com.epmet.dto.form.CustomerStaffFormDTO;
import com.epmet.dto.result.CommonStaffInfoResultDTO;
import com.epmet.excel.CustomerStaffExcel;
import com.epmet.service.CustomerStaffService;
import org.springframework.beans.factory.annotation.Autowired;
@ -179,16 +184,6 @@ public class CustomerStaffController {
return customerStaffService.selectGridStaffCountByUserId(userIdDTO);
}
/**
* @param fromDTO
* @return
* @Author sun
* @Description 根据客户Id及userId集合查询用户基本信息
*/
@PostMapping("getdepartmentstafflist")
public Result<List<DepartInStaffListResultDTO>> getDepartmentStaffList(@RequestBody DepartmentInStaffFormDTO fromDTO) {
return customerStaffService.getDepartmentStaffList(fromDTO);
}
@PostMapping(value = "selectcustomeridbyuserid")
public Result<List<CustomerIdDTO>> selectCustomerIdByUserId(@RequestBody AddDepartmentStaffFormDTO addDepartmentStaffFormDTO){
@ -260,4 +255,28 @@ public class CustomerStaffController {
public Result disabledStaff(@RequestBody StaffInfoFromDTO fromDTO){
return customerStaffService.disabledStaff(fromDTO);
}
/**
* @param fromDTO
* @return
* @Author sun
* @Description 根据客户Id及userId集合查询用户基本信息
*/
@PostMapping("getdepartmentstafflist")
public Result<List<DepartInStaffListResultDTO>> getDepartmentStaffList(DepartmentInStaffFormDTO fromDTO) {
return customerStaffService.getDepartmentStaffList(fromDTO);
}
/**
* @Description 通过userId列表查询未被禁用的用户信息
* @Param CommonUserIdListFormDTO :: getUserIdList
* @return Result<List<CommonStaffInfoResultDTO>>
* @Author wangc
* @Date 2020.04.24 15:44
**/
@PostMapping(value = "enabestaffmsglist")
public Result<List<CommonStaffInfoResultDTO>> enableStaffMsgList(@RequestBody CommonUserIdListFormDTO userIdList){
ValidatorUtils.validateEntity(userIdList);
return customerStaffService.getEnableStaffMsgList(userIdList);
}
}

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

@ -5,8 +5,10 @@ import com.epmet.commons.tools.annotation.RequirePermission;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.dto.GovStaffRoleDTO;
import com.epmet.dto.form.CommonUserFormDTO;
import com.epmet.dto.form.StaffRoleFormDTO;
import com.epmet.dto.result.GovStaffRoleResultDTO;
import com.epmet.dto.result.StaffRolesResultDTO;
import com.epmet.entity.GovStaffRoleEntity;
import com.epmet.service.GovStaffRoleService;
import com.epmet.service.StaffRoleService;
@ -17,6 +19,7 @@ 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;
@ -71,4 +74,16 @@ public class StaffRoleController {
return new Result<List<GovStaffRoleResultDTO>>().ok(staffRoleDTOS);
}
/**
* @Description 查询一个员工在指定客户下的角色
* @Param CommonUserFormDTO
* @return Result<StaffRolesResultDTO>
* @Author wangc
* @Date 2020.04.26 13:06
**/
@PostMapping("getcustomerstaffroles")
public Result<StaffRolesResultDTO> getCustomerStaffRoles(@RequestBody CommonUserFormDTO commonUserFormDTO){
ValidatorUtils.validateEntity(commonUserFormDTO);
return staffRoleService.getStaffRoles(commonUserFormDTO);
}
}

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

@ -23,8 +23,10 @@ import com.epmet.dto.*;
import com.epmet.dto.form.*;
import com.epmet.dto.result.DepartInStaffListResultDTO;
import com.epmet.dto.result.StaffInfoResultDTO;
import com.epmet.dto.result.CommonStaffInfoResultDTO;
import com.epmet.entity.CustomerStaffEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@ -119,4 +121,13 @@ public interface CustomerStaffDao extends BaseDao<CustomerStaffEntity> {
* @auther zxc
*/
List<CustomerIdDTO> selectCustomerIdByUserId(AddDepartmentStaffFormDTO departmentStaffFormDTO);
/**
* @Description 根据UserId列表查询用信息过滤掉被禁用的包含未激活的
* @Param List<String>
* @return List<CommonStaffInfoResultDTO>
* @Author wangc
* @Date 2020.04.24 15:34
**/
List<CommonStaffInfoResultDTO> selectEnableStaffMsg(@Param("userIds") List<String> userIds,@Param("customerId")String customerId);
}

16
epmet-user/epmet-user-server/src/main/java/com/epmet/dao/StaffRoleDao.java

@ -18,11 +18,15 @@
package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.commons.mybatis.entity.DataScope;
import com.epmet.dto.StaffRoleDTO;
import com.epmet.dto.form.CommonUserFormDTO;
import com.epmet.dto.result.GovStaffRoleResultDTO;
import com.epmet.dto.result.StaffRolesResultDTO;
import com.epmet.entity.StaffRoleEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.context.annotation.Scope;
import java.util.List;
@ -40,7 +44,8 @@ public interface StaffRoleDao extends BaseDao<StaffRoleEntity> {
* @param orgId
* @return
*/
List<GovStaffRoleResultDTO> listStaffIdsByRoleKeyAndOrgId(@Param("roleKey") String roleKey, @Param("orgId") String orgId);
List<GovStaffRoleResultDTO> listStaffIdsByRoleKeyAndOrgId(@Param("roleKey") String roleKey, @Param("orgId") String orgId,
@Param("dataScope") DataScope dataScope);
/**
* 删除工作人员权限
@ -49,4 +54,13 @@ public interface StaffRoleDao extends BaseDao<StaffRoleEntity> {
*/
boolean delStaffRoles(StaffRoleDTO dto);
/**
* @Description 得到指定客户下的某个用户的全部角色
* @Param getCustomerId :: getUserId
* @return StaffRolesResultDTO
* @Author wangc
* @Date 2020.04.26 11:01
**/
StaffRolesResultDTO getStaffRoles(CommonUserFormDTO commonUserFormDTO);
}

1
epmet-user/epmet-user-server/src/main/java/com/epmet/feign/GovOrgFeignClient.java

@ -13,6 +13,7 @@ import org.springframework.web.bind.annotation.PostMapping;
* @Author sun
* @Date 2020/3/16
*/
//, url = "localhost:8092"
@FeignClient(name = ServiceConstant.GOV_ORG_SERVER, fallback = GovOrgFeignClientFallBack.class)
public interface GovOrgFeignClient {

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

@ -25,10 +25,18 @@ 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.CommonUserIdListFormDTO;
import com.epmet.dto.form.CustomerGridFormDTO;
import com.epmet.dto.form.CustomerStaffFormDTO;
import com.epmet.dto.form.StaffInfoFromDTO;
import com.epmet.dto.form.StaffSubmitFromDTO;
import com.epmet.dto.form.DepartmentInStaffFormDTO;
import com.epmet.dto.form.StaffsInAgencyFromDTO;
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.CommonStaffInfoResultDTO;
import com.epmet.entity.CustomerStaffEntity;
import java.util.List;
@ -220,4 +228,13 @@ public interface CustomerStaffService extends BaseService<CustomerStaffEntity> {
* @auther: zxc
*/
Result<List<CustomerIdDTO>> selectCustomerIdByUserId(AddDepartmentStaffFormDTO addDepartmentStaffFormDTO);
/**
* @Description 通过userId列表查询未被禁用的用户信息
* @Param CommonUserIdListFormDTO :: getUserIdList
* @return Result<List<CommonStaffInfoResultDTO>>
* @Author wangc
* @Date 2020.04.24 15:44
**/
Result<List<CommonStaffInfoResultDTO>> getEnableStaffMsgList(CommonUserIdListFormDTO userIdList);
}

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

@ -20,8 +20,11 @@ package com.epmet.service;
import com.epmet.commons.mybatis.entity.DataScope;
import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.StaffRoleDTO;
import com.epmet.dto.form.CommonUserFormDTO;
import com.epmet.dto.result.GovStaffRoleResultDTO;
import com.epmet.dto.result.StaffRolesResultDTO;
import com.epmet.entity.StaffRoleEntity;
import java.util.List;
@ -108,4 +111,13 @@ public interface StaffRoleService extends BaseService<StaffRoleEntity> {
* @param dto
*/
void clearStaffRoles(StaffRoleDTO dto);
/**
* @Description 得到某一个员工在一个客户下的所有角色
* @Param CommonUserFormDTO :: getUserId :: getCustomerId
* @return Result<StaffRolesResultDTO>
* @Author wangc
* @Date 2020.04.26 10:59
**/
Result<StaffRolesResultDTO> getStaffRoles(CommonUserFormDTO userParam);
}

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

@ -44,6 +44,11 @@ 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.CustomerStaffGridDTO;
import com.epmet.dto.StaffGridListDTO;
import com.epmet.dto.form.CustomerStaffFormDTO;
import com.epmet.dto.result.CommonStaffInfoResultDTO;
import com.epmet.entity.CustomerStaffEntity;
import com.epmet.entity.GovStaffRoleEntity;
import com.epmet.entity.StaffRoleEntity;
@ -398,4 +403,16 @@ public class CustomerStaffServiceImpl extends BaseServiceImpl<CustomerStaffDao,
return new Result<List<CustomerIdDTO>>().ok(baseDao.selectCustomerIdByUserId(addDepartmentStaffFormDTO));
}
/**
* @Description 通过userId列表查询未被禁用的用户信息
* @Param CommonUserIdListFormDTO :: getUserIdList
* @return Result<List<CommonStaffInfoResultDTO>>
* @Author wangc
* @Date 2020.04.24 15:44
**/
@Override
public Result<List<CommonStaffInfoResultDTO>> getEnableStaffMsgList(CommonUserIdListFormDTO userIdList) {
return new Result<List<CommonStaffInfoResultDTO>>().ok(baseDao.selectEnableStaffMsg(userIdList.getUserIdList(),userIdList.getCustomerId()));
}
}

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

@ -25,9 +25,12 @@ 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.commons.tools.utils.Result;
import com.epmet.dao.StaffRoleDao;
import com.epmet.dto.StaffRoleDTO;
import com.epmet.dto.form.CommonUserFormDTO;
import com.epmet.dto.result.GovStaffRoleResultDTO;
import com.epmet.dto.result.StaffRolesResultDTO;
import com.epmet.entity.StaffRoleEntity;
import com.epmet.redis.StaffRoleRedis;
import com.epmet.service.StaffRoleService;
@ -111,9 +114,9 @@ public class StaffRoleServiceImpl extends BaseServiceImpl<StaffRoleDao, StaffRol
* @return
*/
@Override
//@DataFilter
//@DataFilter(tableAlias = "sr")
public List<GovStaffRoleResultDTO> listStaffsInRole(String roleKey, String orgId, DataScope dataScope) {
return baseDao.listStaffIdsByRoleKeyAndOrgId(roleKey, orgId);
return baseDao.listStaffIdsByRoleKeyAndOrgId(roleKey, orgId, dataScope);
}
@Override
@ -122,4 +125,16 @@ public class StaffRoleServiceImpl extends BaseServiceImpl<StaffRoleDao, StaffRol
baseDao.delStaffRoles(dto);
}
/**
* @Description 得到某一个员工在一个客户下的所有角色
* @Param CommonUserFormDTO :: getUserId :: getCustomerId
* @return Result<StaffRolesResultDTO>
* @Author wangc
* @Date 2020.04.26 10:59
**/
@Override
public Result<StaffRolesResultDTO> getStaffRoles(CommonUserFormDTO userParam) {
return new Result<StaffRolesResultDTO>().ok(baseDao.getStaffRoles(userParam));
}
}

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

@ -174,4 +174,24 @@
AND del_flag = 0
AND enable_flag = 'enable'
</select>
<!-- 根据UserId列表查询用户Id、头像、昵称,过滤掉被禁用的,包含未激活的-->
<select id="selectEnableStaffMsg" resultType="com.epmet.dto.result.CommonStaffInfoResultDTO">
SELECT
USER_ID AS staffId,
REAL_NAME AS staffName,
HEAD_PHOTO AS staffHeadPhoto ,
GENDER
FROM
CUSTOMER_STAFF
WHERE
DEL_FLAG = '0'
AND
CUSTOMER_ID = #{customerId}
AND
ENABLE_FLAG = 'enable'
<foreach collection="userIds" item="userId" open="AND USER_ID IN (" separator="," close=")">
#{userId}
</foreach>
</select>
</mapper>

31
epmet-user/epmet-user-server/src/main/resources/mapper/StaffRoleDao.xml

@ -35,4 +35,35 @@
r.ROLE_KEY = #{roleKey}
AND sr.ORG_ID = #{orgId}
</select>
<!-- StaffRolesResultDTO的映射结果集 -->
<resultMap id="staffRolesResultMap" type="com.epmet.dto.result.StaffRolesResultDTO">
<id property="staffId" column="USER_ID"/>
<result property="enableFlag" column="ENABLE_FLAG"/>
<collection property="roleList" ofType="java.lang.String">
<constructor>
<arg column="ROLE_NAME"/>
</constructor>
</collection>
</resultMap>
<!-- 得到指定客户下的某个用户的全部角色 -->
<select id="getStaffRoles" parameterType="com.epmet.dto.form.CommonUserFormDTO" resultMap="staffRolesResultMap">
SELECT
staff.USER_ID,
staff.ENABLE_FLAG,
rolename.ROLE_NAME
FROM
STAFF_ROLE role
LEFT JOIN CUSTOMER_STAFF staff ON ( role.STAFF_ID = staff.USER_ID )
LEFT JOIN GOV_STAFF_ROLE rolename ON ( role.ROLE_ID = rolename.ID )
WHERE
role.DEL_FLAG = '0'
AND staff.DEL_FLAG = '0'
AND rolename.DEL_FLAG = '0'
AND staff.ID = #{userId}
AND staff.CUSTOMER_ID = #{customerId}
</select>
</mapper>
Loading…
Cancel
Save