From bf0066ebc613ea11b546c7c6e130beed9aa6a05a Mon Sep 17 00:00:00 2001 From: Bill <771989711@qq.com> Date: Tue, 24 Oct 2023 11:19:43 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E5=8A=9F=E8=83=BD=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E3=80=91=E9=97=AE=E5=8D=B7=E5=8F=AF=E4=BB=A5=E9=80=9A=E8=BF=87?= =?UTF-8?q?=E7=A4=BE=E5=8C=BAID=E6=9F=A5=E8=AF=A2=201.=E9=97=AE=E5=8D=B7?= =?UTF-8?q?=E8=B0=83=E6=9F=A5=E5=88=97=E8=A1=A8=E5=8F=AF=E4=BB=A5=E9=80=9A?= =?UTF-8?q?=E8=BF=87=E7=A4=BE=E5=8C=BAID=E6=9F=A5=E8=AF=A2=EF=BC=8C?= =?UTF-8?q?=E9=9C=80=E8=A6=81=E4=BC=A0orgType=E4=B8=BAagency=202.=E9=97=AE?= =?UTF-8?q?=E5=8D=B7=E8=AF=A6=E6=83=85=E6=A0=A1=E9=AA=8C=E6=9D=83=E9=99=90?= =?UTF-8?q?=EF=BC=8C=E5=8F=AF=E4=BB=A5=E9=80=9A=E8=BF=87=E7=A4=BE=E5=8C=BA?= =?UTF-8?q?ID=E6=9F=A5=E8=AF=A2=EF=BC=8C=E9=9C=80=E8=A6=81=E4=BC=A0orgType?= =?UTF-8?q?=E4=B8=BAagency?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/EpmetTDuckController.java | 12 ++++-- .../service/QuestionnaireService.java | 2 + .../impl/PrUserProjectServiceImpl.java | 33 +++++++++++----- .../impl/QuestionnaireServiceImpl.java | 39 +++++++++++++++++++ 4 files changed, 74 insertions(+), 12 deletions(-) diff --git a/code/smart-community/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/EpmetTDuckController.java b/code/smart-community/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/EpmetTDuckController.java index ea8e701d..2d069dba 100644 --- a/code/smart-community/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/EpmetTDuckController.java +++ b/code/smart-community/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/EpmetTDuckController.java @@ -7,6 +7,7 @@ import com.epmet.commons.tools.exception.ValidateException; 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.dataaggre.constant.TDuckConstant; import com.epmet.dataaggre.dto.epmettduck.PrPublishRangeDTO; import com.epmet.dataaggre.dto.epmettduck.form.*; import com.epmet.dataaggre.dto.epmettduck.result.*; @@ -167,11 +168,16 @@ public class EpmetTDuckController { PermissionValidateResultDTO r = null; if (AppClientConstant.APP_RESI.equals(app)) { - if (StringUtils.isBlank(orgId) || !"grid".equals(input.getOrgType())) { + if (StringUtils.isBlank(orgId)) { // 居民端,orgId是网格id,必填 - throw new ValidateException(EpmetErrorCode.INTERNAL_VALIDATE_ERROR.getCode(), "【调查问卷】校验访问权限-居民端 orgId不能为空,且orgType需要为[grid]"); + throw new ValidateException(EpmetErrorCode.INTERNAL_VALIDATE_ERROR.getCode(), "【调查问卷】校验访问权限-居民端 orgId不能为空"); } - r = questionnaireService.resiPermissionValidate(projectKey, userId, orgId); + if(TDuckConstant.ORG_TYPE_AGENCY.equals(input.getOrgType())) { + r = questionnaireService.resiPermissionValidate(projectKey, userId, orgId, input.getOrgType()); + } else { + r = questionnaireService.resiPermissionValidate(projectKey, userId, orgId); + } + } else if (AppClientConstant.APP_GOV.equals(app)) { // 工作端 r = questionnaireService.govPermissionValidate(projectKey, userId, customerId); diff --git a/code/smart-community/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/QuestionnaireService.java b/code/smart-community/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/QuestionnaireService.java index c23f7f12..3e102086 100644 --- a/code/smart-community/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/QuestionnaireService.java +++ b/code/smart-community/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/QuestionnaireService.java @@ -5,5 +5,7 @@ import com.epmet.dataaggre.dto.epmettduck.result.PermissionValidateResultDTO; public interface QuestionnaireService { PermissionValidateResultDTO resiPermissionValidate(String projectKey, String userId, String gridId); + PermissionValidateResultDTO resiPermissionValidate(String projectKey, String userId, String orgId, String orgType); + PermissionValidateResultDTO govPermissionValidate(String projectKey, String staffId, String customerId); } diff --git a/code/smart-community/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/impl/PrUserProjectServiceImpl.java b/code/smart-community/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/impl/PrUserProjectServiceImpl.java index a2bf9831..bead4369 100644 --- a/code/smart-community/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/impl/PrUserProjectServiceImpl.java +++ b/code/smart-community/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/impl/PrUserProjectServiceImpl.java @@ -55,8 +55,11 @@ import com.epmet.dataaggre.service.epmettduck.PrPublishRangeService; import com.epmet.dataaggre.service.epmettduck.PrUserProjectService; import com.epmet.dataaggre.service.epmettduck.PrVistRecordService; import com.epmet.dataaggre.service.govorg.GovOrgService; +import com.epmet.dto.CustomerAgencyDTO; import com.epmet.dto.CustomerGridDTO; import com.epmet.dto.form.CustomerGridFormDTO; +import com.epmet.dto.result.AgencySubResultDTO; +import com.epmet.dto.result.ProcessorListResultDTO; import com.epmet.feign.GovOrgOpenFeignClient; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; @@ -197,16 +200,28 @@ public class PrUserProjectServiceImpl extends BaseServiceImpl gridResult = govOrgOpenFeignClient.getGridBaseInfoByGridId(customerGridFormDTO); - if (!gridResult.success()){ - throw new RenException("查询网格信息失败了..."); + + if(TDuckConstant.ORG_TYPE_AGENCY.equals(formDTO.getOrgType())){ + CustomerAgencyDTO customerAgency = govOrgOpenFeignClient.getAgencyById(formDTO.getOrgId()).getData(); + + if(customerAgency == null) { + throw new RenException("查询组织信息失败了..."); + } + String oneOrg = customerAgency.getPids() + ":" + customerAgency.getId(); + orgIds.add(oneOrg); + + } else { + CustomerGridFormDTO customerGridFormDTO = new CustomerGridFormDTO(); + customerGridFormDTO.setGridId(formDTO.getOrgId()); + // 查询网格信息 + Result gridResult = govOrgOpenFeignClient.getGridBaseInfoByGridId(customerGridFormDTO); + if (!gridResult.success()) { + throw new RenException("查询网格信息失败了..."); + } + CustomerGridDTO data = gridResult.getData(); + String oneOrg = data.getPids() + ":" + data.getId(); + orgIds.add(oneOrg); } - CustomerGridDTO data = gridResult.getData(); - String oneOrg = data.getPids() + ":" + data.getId(); - orgIds.add(oneOrg); } // 根据orgIds查询 问卷调查的key List projectKeys = baseDao.selectProjectKey(orgIds,formDTO.getCustomerId()); diff --git a/code/smart-community/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/impl/QuestionnaireServiceImpl.java b/code/smart-community/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/impl/QuestionnaireServiceImpl.java index 9c5d9a39..89f0ddca 100644 --- a/code/smart-community/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/impl/QuestionnaireServiceImpl.java +++ b/code/smart-community/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/impl/QuestionnaireServiceImpl.java @@ -11,12 +11,14 @@ import com.epmet.commons.tools.redis.RedisKeys; import com.epmet.commons.tools.redis.RedisUtils; import com.epmet.commons.tools.redis.common.CustomerStaffRedis; import com.epmet.commons.tools.utils.Result; +import com.epmet.dataaggre.constant.TDuckConstant; import com.epmet.dataaggre.dto.epmettduck.result.PermissionValidateResultDTO; import com.epmet.dataaggre.entity.epmettduck.PrPublishRangeEntity; import com.epmet.dataaggre.entity.epmettduck.PrUserProjectEntity; import com.epmet.dataaggre.service.QuestionnaireService; import com.epmet.dataaggre.service.epmettduck.PrPublishRangeService; import com.epmet.dataaggre.service.epmettduck.PrUserProjectService; +import com.epmet.dto.CustomerAgencyDTO; import com.epmet.dto.CustomerGridDTO; import com.epmet.dto.form.CustomerGridFormDTO; import com.epmet.feign.GovOrgOpenFeignClient; @@ -88,6 +90,43 @@ public class QuestionnaireServiceImpl implements QuestionnaireService, ResultDat return r; } + @Override + public PermissionValidateResultDTO resiPermissionValidate(String projectKey, String userId, String orgId, String orgType) { + PrUserProjectEntity project = prUserProjectService.getProjectEntityBykey(projectKey); + if (project == null || !AppClientConstant.APP_RESI.equals(project.getClient())) { + // 工作端只能看到发布到居民端的 + log.warn("【调查问卷】居民端无法查看发布到工作端的调查问卷,staffId:{}, projectKey:{}", userId, projectKey); + return generateValidateResult(userId, projectKey, false); + } + + String gridIdPath = null; + + if(TDuckConstant.ORG_TYPE_AGENCY.equals(orgType)) { + CustomerAgencyDTO customerAgency = govOrgOpenFeignClient.getAgencyById(orgId).getData(); + + if (customerAgency == null) { + throw new RenException("查询组织信息失败了..."); + } + gridIdPath = customerAgency.getPids() + ":" + customerAgency.getId(); + } else { + CustomerGridFormDTO form = new CustomerGridFormDTO(); + form.setGridId(orgId); + Result gridInfoResult = govOrgOpenFeignClient.getGridBaseInfoByGridId(form); + CustomerGridDTO gridInfo = getResultDataOrThrowsException(gridInfoResult, ServiceConstant.GOV_ORG_SERVER, EpmetErrorCode.SERVER_ERROR.getCode(), "【调查问卷】校验访问权限,查询网格信息失败", null); + // 网格父级ID列表:网格ID(拼接起来,冒号分割) + gridIdPath = gridInfo.getPids().concat(":").concat(gridInfo.getId()); + } + List publishRangeEntity = prPublishRangeService.getPublishRangeEntity(projectKey); + PermissionValidateResultDTO r = new PermissionValidateResultDTO(); + for (PrPublishRangeEntity rangeEntity : publishRangeEntity) { + if (gridIdPath.contains(rangeEntity.getOrgIds())) { + return generateValidateResult(userId, projectKey, true); + } + } + r.setPermitted(false); + return r; + } + @Override public PermissionValidateResultDTO govPermissionValidate(String projectKey, String staffId, String customerId) { PrUserProjectEntity project = prUserProjectService.getProjectEntityBykey(projectKey);