From b92317792e338925a8b8501188ac3841e423d357 Mon Sep 17 00:00:00 2001 From: jianjun Date: Tue, 10 Aug 2021 17:47:16 +0800 Subject: [PATCH 1/8] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=97=A0=E7=94=A8?= =?UTF-8?q?=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../form/SubTopicAndGroupFormDTO.java | 38 ------------------- .../datastats/form/SubUserTotalFormDTO.java | 38 ------------------- 2 files changed, 76 deletions(-) delete mode 100644 epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/form/SubTopicAndGroupFormDTO.java delete mode 100644 epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/form/SubUserTotalFormDTO.java diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/form/SubTopicAndGroupFormDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/form/SubTopicAndGroupFormDTO.java deleted file mode 100644 index 7a64b567d7..0000000000 --- a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/form/SubTopicAndGroupFormDTO.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.epmet.dataaggre.dto.datastats.form; - -import com.epmet.commons.tools.validator.group.CustomerClientShowGroup; -import lombok.Data; - -import javax.validation.constraints.NotBlank; -import java.io.Serializable; - -/** - * @Description 对外接口-查询下级话题和小组数-接口入参 - * @Auth sun - */ -@Data -public class SubTopicAndGroupFormDTO implements Serializable { - - private static final long serialVersionUID = -3381286960911634231L; - /** - * 当前组织id;从组织树取 - */ - @NotBlank(message = "组织ID不能为空", groups = SubTopicAndGroupFormDTO.Agency.class) - private String agencyId; - /** - * 当前组织级别;从组织树取 - * 机关级别(社区级:community, - * 乡(镇、街道)级:street, - * 区县级: district, - * 市级: city - * 省级:province) - */ - @NotBlank(message = "组织级别不能为空", groups = SubTopicAndGroupFormDTO.Agency.class) - private String agencyLevel; - /** - * 日维度Id【yyyyMMdd eg:20210808,默认前一天】 - */ - private String dateId; - public interface Agency extends CustomerClientShowGroup{} - -} diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/form/SubUserTotalFormDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/form/SubUserTotalFormDTO.java deleted file mode 100644 index f97af0583e..0000000000 --- a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/form/SubUserTotalFormDTO.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.epmet.dataaggre.dto.datastats.form; - -import com.epmet.commons.tools.validator.group.CustomerClientShowGroup; -import lombok.Data; - -import javax.validation.constraints.NotBlank; -import java.io.Serializable; - -/** - * @Description 对外接口-查询下级用户党员数-接口入参 - * @Auth sun - */ -@Data -public class SubUserTotalFormDTO implements Serializable { - - private static final long serialVersionUID = -3381286960911634231L; - /** - * 当前组织id;从组织树取 - */ - @NotBlank(message = "组织ID不能为空", groups = SubUserTotalFormDTO.Agency.class) - private String agencyId; - /** - * 当前组织级别;从组织树取 - * 机关级别(社区级:community, - * 乡(镇、街道)级:street, - * 区县级: district, - * 市级: city - * 省级:province) - */ - @NotBlank(message = "组织级别不能为空", groups = SubUserTotalFormDTO.Agency.class) - private String agencyLevel; - /** - * 日维度Id【yyyyMMdd eg:20210808,默认前一天】 - */ - private String dateId; - public interface Agency extends CustomerClientShowGroup{} - -} From b946b09dbf68e2771b0d17c5d14f768fcd445f8c Mon Sep 17 00:00:00 2001 From: wxz Date: Wed, 11 Aug 2021 10:24:06 +0800 Subject: [PATCH 2/8] =?UTF-8?q?=E4=BF=AE=E6=94=B9=EF=BC=9ARequestLogAspect?= =?UTF-8?q?=E7=9A=84=E6=8B=A6=E6=88=AA=E8=B7=AF=E5=BE=84=E6=94=B9=E4=B8=BA?= =?UTF-8?q?com.epmet.dataaggre.controller..*Controller.*(..)),=E5=8C=B9?= =?UTF-8?q?=E9=85=8Dcontroller=E5=8C=85=E5=8F=8A=E5=85=B6=E5=AD=90?= =?UTF-8?q?=E5=8C=85=E4=B8=8B=E6=89=80=E6=9C=89controller?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/epmet/dataaggre/aspect/RequestLogAspect.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/aspect/RequestLogAspect.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/aspect/RequestLogAspect.java index 34cf9f3d69..5bba1edfb0 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/aspect/RequestLogAspect.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/aspect/RequestLogAspect.java @@ -21,7 +21,7 @@ import javax.servlet.http.HttpServletRequest; public class RequestLogAspect extends BaseRequestLogAspect { @Override - @Around(value = "execution(* com.epmet.dataaggre.controller.*Controller.*(..)) ") + @Around(value = "execution(* com.epmet.dataaggre.controller..*Controller.*(..)) ") public Object proceed(ProceedingJoinPoint point) throws Throwable { return super.proceed(point, getRequest()); } From 61266c83a200d14f181281289c076dfce83bf46c Mon Sep 17 00:00:00 2001 From: zhaoqifeng Date: Wed, 11 Aug 2021 11:18:53 +0800 Subject: [PATCH 3/8] =?UTF-8?q?=E5=85=9A=E5=91=98=E8=AE=A4=E8=AF=81?= =?UTF-8?q?=E6=9F=90=E7=A7=8D=E6=83=85=E5=86=B5=E4=B8=8B=E6=8F=90=E4=BA=A4?= =?UTF-8?q?=E4=B8=A4=E6=AC=A1bug=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../partymember/service/PartymemberInfoService.java | 8 ++++++++ .../service/impl/PartyMemberConfirmServiceImpl.java | 5 ++++- .../service/impl/PartymemberInfoServiceImpl.java | 13 +++++++++++++ 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/PartymemberInfoService.java b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/PartymemberInfoService.java index 3290cb084f..4a25939dad 100644 --- a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/PartymemberInfoService.java +++ b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/PartymemberInfoService.java @@ -162,4 +162,12 @@ public interface PartymemberInfoService extends BaseService listPartymemberInfoByGridId(List gridIdList); + + /** + * 获取党员信息 + * @param customerId + * @param userId + * @return + */ + PartymemberInfoDTO getPartyMemberInfoByUser(String customerId, String userId); } diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/PartyMemberConfirmServiceImpl.java b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/PartyMemberConfirmServiceImpl.java index 951d13bb86..80cc4cc91e 100644 --- a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/PartyMemberConfirmServiceImpl.java +++ b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/PartyMemberConfirmServiceImpl.java @@ -191,7 +191,10 @@ public class PartyMemberConfirmServiceImpl implements PartyMemberConfirmService //党员信息存入党员认证信息表 PartymemberInfoEntity partyMemberInfoEntity = ConvertUtils.sourceToTarget(partyMemberInfoDTO, PartymemberInfoEntity.class); - + PartymemberInfoDTO info = partymemberInfoService.getPartyMemberInfoByUser(partyMemberInfoDTO.getCustomerId(), partyMemberInfoDTO.getUserId()); + if (null != info) { + partyMemberInfoDTO.setId(info.getId()); + } if (confirmAutoDTO == null || !confirmAutoDTO.getComparisonResults()) { log.info("submit confirmAutoDTO return null or false:{}",JSON.toJSONString(confirmAutoDTO)); //将访问记录更新到热心居民申请行为记录表 diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/PartymemberInfoServiceImpl.java b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/PartymemberInfoServiceImpl.java index c6ce32113b..57e6a2922c 100644 --- a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/PartymemberInfoServiceImpl.java +++ b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/PartymemberInfoServiceImpl.java @@ -17,6 +17,7 @@ package com.epmet.modules.partymember.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; @@ -25,6 +26,7 @@ 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.utils.Result; +import com.epmet.constant.PartyMemberConstant; import com.epmet.dto.form.CreatedTimeByUserIdFormDTO; import com.epmet.dto.result.CertifiedResultDTO; import com.epmet.dto.result.CreatedTimeByUserIdResultDTO; @@ -41,6 +43,7 @@ import com.epmet.resi.partymember.dto.partymember.form.CertifiedDetailFormDTO; import com.epmet.resi.partymember.dto.partymember.form.CertifiedFormDTO; import com.epmet.resi.partymember.dto.partymember.result.CertifiedDetailResultDTO; import com.epmet.resi.partymember.dto.partymember.result.PartyAuthProcessingCountResultDTO; +import kotlin.jvm.internal.Lambda; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -235,4 +238,14 @@ public class PartymemberInfoServiceImpl extends BaseServiceImpl list = baseDao.selectListPartymemberInfoByGridId(gridIdList); return list; } + + @Override + public PartymemberInfoDTO getPartyMemberInfoByUser(String customerId, String userId) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(PartymemberInfoEntity :: getCustomerId, customerId); + wrapper.eq(PartymemberInfoEntity :: getUserId, userId); + wrapper.ne(PartymemberInfoEntity :: getConfirmResult, PartyMemberConstant.REJECTED); + PartymemberInfoEntity entity = baseDao.selectOne(wrapper); + return ConvertUtils.sourceToTarget(entity, PartymemberInfoDTO.class); + } } From d73a975c16b39e51e0d5829e051697671fc014ff Mon Sep 17 00:00:00 2001 From: wxz Date: Wed, 11 Aug 2021 23:39:18 +0800 Subject: [PATCH 4/8] =?UTF-8?q?=E4=BF=AE=E6=94=B9=EF=BC=9Agateway=E4=B8=AD?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=AF=B7=E6=B1=82url=E7=9A=84=E6=97=A5?= =?UTF-8?q?=E5=BF=97=EF=BC=8C=E5=92=8C=E6=8A=A5=E9=94=99=E7=9A=84=E6=97=A5?= =?UTF-8?q?=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../auth/ExtAppTakeTokenAuthProcessor.java | 6 +- .../filter/CpAuthGatewayFilterFactory.java | 344 ++++++++++-------- 2 files changed, 197 insertions(+), 153 deletions(-) diff --git a/epmet-gateway/src/main/java/com/epmet/auth/ExtAppTakeTokenAuthProcessor.java b/epmet-gateway/src/main/java/com/epmet/auth/ExtAppTakeTokenAuthProcessor.java index 6b527dc074..dcede2b1d0 100644 --- a/epmet-gateway/src/main/java/com/epmet/auth/ExtAppTakeTokenAuthProcessor.java +++ b/epmet-gateway/src/main/java/com/epmet/auth/ExtAppTakeTokenAuthProcessor.java @@ -1,7 +1,6 @@ package com.epmet.auth; import com.epmet.commons.security.jwt.JwtUtils; -import com.epmet.commons.security.sign.openapi.OpenApiSignUtils; import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.redis.RedisKeys; @@ -12,7 +11,6 @@ import com.epmet.feign.EpmetCommonServiceOpenFeignClient; import com.epmet.openapi.constant.InClusterHeaderKeys; import com.epmet.openapi.constant.RequestParamKeys; import io.jsonwebtoken.Claims; -import io.jsonwebtoken.Jwts; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.server.reactive.ServerHttpRequest; @@ -79,11 +77,11 @@ public class ExtAppTakeTokenAuthProcessor extends ExtAppAuthProcessor { EpmetCommonServiceOpenFeignClient commonService = SpringContextUtils.getBean(EpmetCommonServiceOpenFeignClient.class); Result result = commonService.getSecret(appId); if (result == null || !result.success()) { - throw new RenException("fetchToken方式的外部应用认证,获取secret失败"); + throw new RenException("TakeToken方式的外部应用认证,获取secret失败"); } String secret = result.getData(); if (StringUtils.isBlank(secret)) { - throw new RenException("fetchToken方式的外部应用认证,获取secret失败"); + throw new RenException("TakeToken方式的外部应用认证,获取secret失败"); } return secret; diff --git a/epmet-gateway/src/main/java/com/epmet/filter/CpAuthGatewayFilterFactory.java b/epmet-gateway/src/main/java/com/epmet/filter/CpAuthGatewayFilterFactory.java index c9a19fa8b8..6513d27f04 100644 --- a/epmet-gateway/src/main/java/com/epmet/filter/CpAuthGatewayFilterFactory.java +++ b/epmet-gateway/src/main/java/com/epmet/filter/CpAuthGatewayFilterFactory.java @@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSON; import com.epmet.auth.ExternalAuthProcessor; import com.epmet.auth.InternalAuthProcessor; import com.epmet.commons.tools.constant.AppClientConstant; +import com.epmet.commons.tools.exception.ExceptionUtils; import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.utils.IpUtils; import com.epmet.commons.tools.utils.Result; @@ -26,13 +27,13 @@ import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.server.reactive.ServerHttpRequest; import org.springframework.stereotype.Component; +import org.springframework.util.MultiValueMap; import org.springframework.web.server.ServerWebExchange; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; import java.nio.charset.StandardCharsets; -import java.util.Arrays; -import java.util.List; +import java.util.*; /** * app接口权限过滤器 @@ -43,152 +44,197 @@ import java.util.List; @Component("CpAuth") public class CpAuthGatewayFilterFactory extends AbstractGatewayFilterFactory { - private Logger logger = LoggerFactory.getLogger(getClass()); - - @Autowired - private InternalAuthProcessor internalAuthProcessor; - - @Autowired - private ExternalAuthProcessor externalAuthProcessor; - - @Override - public List shortcutFieldOrder() { - return Arrays.asList("enabled"); - } - - public CpAuthGatewayFilterFactory() { - super(CpAuthConfig.class); - } - - @Override - public GatewayFilter apply(CpAuthConfig config) { - return (exchange, chain) -> { - if (!config.isEnabled()) { - return chain.filter(exchange); - } - - //添加流水号 - ServerHttpRequest request = exchange.getRequest(); - List tranSerials = request.getHeaders().get(AppClientConstant.TRANSACTION_SERIAL_KEY); - if (CollectionUtils.isEmpty(tranSerials) || StringUtils.isBlank(tranSerials.get(0))) { - request.mutate().header(AppClientConstant.TRANSACTION_SERIAL_KEY, new String[]{getTransactionSerial()}); - } - - String authType = getAuthType(request); - String requestUri = request.getPath().pathWithinApplication().value(); - - logger.info("CpAuthGatewayFilterFactory当前requestUri=[" + requestUri + "],CpAuthGatewayFilterFactory拦截成功,客户端Id:{}", IpUtils.getClientIp(request)); - try { - switch (authType) { - case AuthTypeConstant.AUTH_TYPE_ALL: - externalAuthProcessor.auth(exchange, chain); - internalAuthProcessor.auth(exchange, chain); - break; - case AuthTypeConstant.AUTH_TYPE_EXTERNAL: - externalAuthProcessor.auth(exchange, chain); - break; - case AuthTypeConstant.AUTH_TYPE_INTERNAL: - internalAuthProcessor.auth(exchange, chain); - break; - } - } catch (RenException e) { - return response(exchange, new Result<>().error(e.getCode(), e.getMessage())); - } catch (Exception e) { - return response(exchange, new Result<>().error(e.getMessage())); - } - - return chain.filter(exchange); - }; - } - - /** - * 判断需要执行的认证方式(内部应用认证还是外部应用认证) - * @return - */ - private String getAuthType(ServerHttpRequest request) { - //String requestUri = request.getPath().pathWithinApplication().value(); - - // 是否在外部认证列表中(外部认证列表中的url,是对外部应用开放的,只有在这个列表中的url才对外部应用开放) - //boolean inExtAuthPaths = false; - // - //for (String url : cpProperty.getExternalAuthUrls()) { - // if (antPathMatcher.match(url, requestUri)) { - // inExtAuthPaths = true; - // } - //} - - String authType = ServerHttpRequestUtils.getRequestParam(request, RequestParamKeys.AUTH_TYPE); - if (StringUtils.isNotBlank(authType) && AuthTypes.TAKE_TOKEN.equals(authType)) { - return AuthTypeConstant.AUTH_TYPE_EXTERNAL; - } - - boolean needExternal = StringUtils.isNotBlank(request.getHeaders().getFirst(TokenHeaderKeyConstant.ACCESS_TOKEN_HEADER_KEY)); - boolean needInternal = StringUtils.isNotBlank(request.getHeaders().getFirst(TokenHeaderKeyConstant.AUTHORIZATION_TOKEN_HEADER_KEY)); - - if (needExternal && needInternal) { - return AuthTypeConstant.AUTH_TYPE_ALL; - } - - if (needExternal) { - // url对外部应用开放,并且头里面有AccessToken,那么走外部应用认证 - return AuthTypeConstant.AUTH_TYPE_EXTERNAL; - } - - return AuthTypeConstant.AUTH_TYPE_INTERNAL; - } - - /** - * 获取请求头 - * @param request - * @return - */ - private String getHeader(ServerHttpRequest request, String headerName) { - HttpHeaders headers = request.getHeaders(); - return headers.getFirst(headerName); - } - - /** - * 获取事务流水号 - * @return - */ - public static String getTransactionSerial() { - String[] letterPool = {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n" - , "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"}; - - StringBuilder sb = new StringBuilder(); - for (int i = 0; i < 2; i++) { - sb.append(letterPool[(int) (Math.random() * 25)]); - } - - sb.append(System.currentTimeMillis()); - return sb.toString(); - } - - public static class CpAuthConfig { - - /** - * 控制是否开启认证 - */ - private boolean enabled; - - public CpAuthConfig() { - } - - public boolean isEnabled() { - return enabled; - } - - public void setEnabled(boolean enabled) { - this.enabled = enabled; - } - } - - protected Mono response(ServerWebExchange exchange, Object object) { - String json = JSON.toJSONString(object); - DataBuffer buffer = exchange.getResponse().bufferFactory().wrap(json.getBytes(StandardCharsets.UTF_8)); - exchange.getResponse().getHeaders().setContentType(MediaType.APPLICATION_JSON_UTF8); - exchange.getResponse().setStatusCode(HttpStatus.OK); - return exchange.getResponse().writeWith(Flux.just(buffer)); - } + private Logger logger = LoggerFactory.getLogger(getClass()); + + @Autowired + private InternalAuthProcessor internalAuthProcessor; + + @Autowired + private ExternalAuthProcessor externalAuthProcessor; + + @Override + public List shortcutFieldOrder() { + return Arrays.asList("enabled"); + } + + public CpAuthGatewayFilterFactory() { + super(CpAuthConfig.class); + } + + @Override + public GatewayFilter apply(CpAuthConfig config) { + return (exchange, chain) -> { + if (!config.isEnabled()) { + return chain.filter(exchange); + } + + //1.添加流水号 + ServerHttpRequest request = exchange.getRequest(); + List tranSerials = request.getHeaders().get(AppClientConstant.TRANSACTION_SERIAL_KEY); + if (CollectionUtils.isEmpty(tranSerials) || StringUtils.isBlank(tranSerials.get(0))) { + request.mutate().header(AppClientConstant.TRANSACTION_SERIAL_KEY, new String[]{getTransactionSerial()}); + } + + //2.获取请求路径,参数 + String requestUri = request.getPath().pathWithinApplication().value(); + MultiValueMap queryParams = request.getQueryParams(); + String queryParamsStr = convertQueryParams2String(queryParams); + logger.info("CpAuthGatewayFilterFactory当前requestUri=[" + requestUri.concat(queryParamsStr) + "],CpAuthGatewayFilterFactory拦截成功,客户端Id:{}", IpUtils.getClientIp(request)); + + //3.认证 + String authType = getAuthType(request); + logger.info("认证类型为:{}", authType); + try { + switch (authType) { + case AuthTypeConstant.AUTH_TYPE_ALL: + externalAuthProcessor.auth(exchange, chain); + internalAuthProcessor.auth(exchange, chain); + break; + case AuthTypeConstant.AUTH_TYPE_EXTERNAL: + externalAuthProcessor.auth(exchange, chain); + break; + case AuthTypeConstant.AUTH_TYPE_INTERNAL: + internalAuthProcessor.auth(exchange, chain); + break; + } + } catch (RenException e) { + logger.error("CpAuthGatewayFilterFactory认证出错,错误信息:{}", ExceptionUtils.getErrorStackTrace(e)); + return response(exchange, new Result<>().error(e.getCode(), e.getMessage())); + } catch (Exception e) { + logger.error("CpAuthGatewayFilterFactory认证出错,错误信息:{}", ExceptionUtils.getErrorStackTrace(e)); + return response(exchange, new Result<>().error(e.getMessage())); + } + + return chain.filter(exchange); + }; + } + + /** + * @return + * @Description 将url参数转化为String + * @author wxz + * @date 2021.08.11 23:12 + */ + private String convertQueryParams2String(MultiValueMap queryParams) { + try { + if (queryParams == null || queryParams.size() == 0) { + return ""; + } + StringBuilder sb = new StringBuilder(""); + queryParams.entrySet().forEach(entry -> { + String key = entry.getKey(); + List values = entry.getValue(); + + String value = ""; + if (values != null && values.size() > 0) { + value = values.get(0); + } + + sb.append("&").append(key).append("=").append(value); + }); + String result = sb.toString(); + if (result.startsWith("&")) { + result = result.substring(1); + return "?".concat(result); + } + return ""; + } catch (Exception e) { + logger.warn("gateway中将url参数转化为String失败,程序继续执行,错误信息:".concat(ExceptionUtils.getErrorStackTrace(e))); + return ""; + } + } + + /** + * 判断需要执行的认证方式(内部应用认证还是外部应用认证) + * + * @return + */ + private String getAuthType(ServerHttpRequest request) { + //String requestUri = request.getPath().pathWithinApplication().value(); + + // 是否在外部认证列表中(外部认证列表中的url,是对外部应用开放的,只有在这个列表中的url才对外部应用开放) + //boolean inExtAuthPaths = false; + // + //for (String url : cpProperty.getExternalAuthUrls()) { + // if (antPathMatcher.match(url, requestUri)) { + // inExtAuthPaths = true; + // } + //} + + String authType = ServerHttpRequestUtils.getRequestParam(request, RequestParamKeys.AUTH_TYPE); + if (StringUtils.isNotBlank(authType) && AuthTypes.TAKE_TOKEN.equals(authType)) { + return AuthTypeConstant.AUTH_TYPE_EXTERNAL; + } + + boolean needExternal = StringUtils.isNotBlank(request.getHeaders().getFirst(TokenHeaderKeyConstant.ACCESS_TOKEN_HEADER_KEY)); + boolean needInternal = StringUtils.isNotBlank(request.getHeaders().getFirst(TokenHeaderKeyConstant.AUTHORIZATION_TOKEN_HEADER_KEY)); + + if (needExternal && needInternal) { + return AuthTypeConstant.AUTH_TYPE_ALL; + } + + if (needExternal) { + // url对外部应用开放,并且头里面有AccessToken,那么走外部应用认证 + return AuthTypeConstant.AUTH_TYPE_EXTERNAL; + } + + return AuthTypeConstant.AUTH_TYPE_INTERNAL; + } + + /** + * 获取请求头 + * + * @param request + * @return + */ + private String getHeader(ServerHttpRequest request, String headerName) { + HttpHeaders headers = request.getHeaders(); + return headers.getFirst(headerName); + } + + /** + * 获取事务流水号 + * + * @return + */ + public static String getTransactionSerial() { + String[] letterPool = {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n" + , "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"}; + + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < 2; i++) { + sb.append(letterPool[(int) (Math.random() * 25)]); + } + + sb.append(System.currentTimeMillis()); + return sb.toString(); + } + + public static class CpAuthConfig { + + /** + * 控制是否开启认证 + */ + private boolean enabled; + + public CpAuthConfig() { + } + + public boolean isEnabled() { + return enabled; + } + + public void setEnabled(boolean enabled) { + this.enabled = enabled; + } + } + + protected Mono response(ServerWebExchange exchange, Object object) { + String json = JSON.toJSONString(object); + DataBuffer buffer = exchange.getResponse().bufferFactory().wrap(json.getBytes(StandardCharsets.UTF_8)); + exchange.getResponse().getHeaders().setContentType(MediaType.APPLICATION_JSON_UTF8); + exchange.getResponse().setStatusCode(HttpStatus.OK); + return exchange.getResponse().writeWith(Flux.just(buffer)); + } } From e8dc33ccdf0762615e52ecfd5ce61894bedf3636 Mon Sep 17 00:00:00 2001 From: sunyuchao Date: Thu, 12 Aug 2021 10:19:56 +0800 Subject: [PATCH 5/8] =?UTF-8?q?=E6=9B=B4=E5=A4=9A-=E5=B7=A1=E6=9F=A5?= =?UTF-8?q?=E8=AE=B0=E5=BD=95-=E7=A8=8B=E5=BA=8F=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../epmet/dataaggre/controller/EpmetUserController.java | 9 +++++---- .../resources/mapper/epmetuser/StaffPatrolRecordDao.xml | 4 ++-- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/EpmetUserController.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/EpmetUserController.java index 39a634fb76..359ec365d9 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/EpmetUserController.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/EpmetUserController.java @@ -100,13 +100,14 @@ public class EpmetUserController { @RequirePermission(requirePermission = RequirePermissionEnum.MORE_PATROL_RECORD_LIST) public Result> staffPatrolList(@LoginUser TokenDto tokenDto, @RequestBody StaffListFormDTO formDTO) { ValidatorUtils.validateEntity(formDTO, StaffListFormDTO.Staff.class); - if (!"patrolTotal".equals(formDTO.getSortCode()) && !"latestPatrolledTime".equals(formDTO.getSortCode()) + //程序稳定 部分安全校验可省略 + /*if (!"patrolTotal".equals(formDTO.getSortCode()) && !"latestPatrolledTime".equals(formDTO.getSortCode()) && !"reportProjectCount".equals(formDTO.getSortCode()) && !"totalTime".equals(formDTO.getSortCode())) { throw new RenException("参数错误,排序条件值错误"); - } - if (formDTO.getTime() != 1 && formDTO.getTime() != 3) { + }*/ + /*if (formDTO.getTime() != 1 && formDTO.getTime() != 3) { throw new RenException("参数错误,最近时间值不正确"); - } + }*/ formDTO.setUserId(tokenDto.getUserId()); return new Result>().ok(epmetUserService.staffPatrolList(formDTO)); } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/StaffPatrolRecordDao.xml b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/StaffPatrolRecordDao.xml index ce078c21f3..57fb814737 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/StaffPatrolRecordDao.xml +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/StaffPatrolRecordDao.xml @@ -76,8 +76,8 @@ AND cs.real_name = #{staffName} - - ssp.grid_id = #{gridId} + + #{gridId} GROUP BY ssp.grid_id, ssp.staff_id From c44b7cbb0a3b7a7e6a68c86b453a926002839fd5 Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Thu, 12 Aug 2021 11:06:11 +0800 Subject: [PATCH 6/8] =?UTF-8?q?=E5=B7=A5=E4=BD=9C=E7=AB=AF=E4=B8=8B?= =?UTF-8?q?=E7=BA=A7=E7=BB=84=E7=BB=87=E6=8C=87=E6=95=B0=E6=8E=92=E8=A1=8C?= =?UTF-8?q?=E4=B8=8E=E5=B9=B3=E9=98=B4=E5=A4=A7=E5=B1=8F=E4=B8=8B=E7=BA=A7?= =?UTF-8?q?=E5=8D=95=E4=BD=8D=E6=8C=87=E6=95=B0=E6=8E=92=E8=A1=8C=E4=BF=9D?= =?UTF-8?q?=E6=8C=81=E4=B8=80=E8=87=B4=EF=BC=8C=E5=8F=96=E6=9C=88=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/screen/IndexController.java | 4 +- .../screen/ScreenIndexDataMonthlyDao.java | 8 +-- .../evaluationindex/screen/IndexService.java | 2 +- .../screen/impl/IndexServiceImpl.java | 12 +++-- .../screen/ScreenIndexDataMonthlyDao.xml | 51 +++++++++---------- 5 files changed, 39 insertions(+), 38 deletions(-) diff --git a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/controller/screen/IndexController.java b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/controller/screen/IndexController.java index 55543e1e70..b0f7fcf03f 100644 --- a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/controller/screen/IndexController.java +++ b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/controller/screen/IndexController.java @@ -84,7 +84,7 @@ public class IndexController { /** * 5、下级部门指数排行(安宁数据段用) - * + * 工作端小程序:下级组织指数排行也调用的此接口。 * @param formDTO * @return com.epmet.commons.tools.utils.Result> * @Author zhangyong @@ -154,7 +154,7 @@ public class IndexController { /** * @param formDTO * @author yinzuomei - * @description 8、平阴大屏-下级街道or网格指数排行 + * @description 8、平阴大屏-下级街道or网格指数排行 默认查询上个月 * @Date 2021/2/28 14:33 **/ @PostMapping("subagencyindexrank-py") diff --git a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/dao/evaluationindex/screen/ScreenIndexDataMonthlyDao.java b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/dao/evaluationindex/screen/ScreenIndexDataMonthlyDao.java index 18a3795b05..f5307d1fc2 100644 --- a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/dao/evaluationindex/screen/ScreenIndexDataMonthlyDao.java +++ b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/dao/evaluationindex/screen/ScreenIndexDataMonthlyDao.java @@ -107,24 +107,24 @@ public interface ScreenIndexDataMonthlyDao{ List getSingleIndexRank(SubSingleIndexRankFormDTO formDTO); /** - * @param yearId + * @param monthId * @param areaCode * @Description 根据areaCode查询下级指数 * @author yinzuomei */ List selectSubStreetByAreaCode(@Param("customerId") String customerId, - @Param("yearId") String yearId, + @Param("monthId") String monthId, @Param("areaCode") String areaCode, @Param("topNum") int topNum); /** - * @param yearId + * @param monthId * @param areaCode * @Description 根据areaCode查询网格指数 * @author yinzuomei */ List selectSubGridByAreaCode(@Param("customerId") String customerId, - @Param("yearId") String yearId, + @Param("monthId") String monthId, @Param("areaCode") String areaCode, @Param("topNum") int topNum); diff --git a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/IndexService.java b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/IndexService.java index bfbf7a9d41..97ad39b278 100644 --- a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/IndexService.java +++ b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/IndexService.java @@ -90,7 +90,7 @@ public interface IndexService { /** * @param formDTO * @author yinzuomei - * @description 8、平阴大屏-下级街道or网格指数排行 + * @description 8、平阴大屏-下级街道or网格指数排行 默认查询上个月 * @Date 2021/2/28 14:33 **/ List subAgencyIndexRankPy(SubAgencyIndexRankPyFormDTO formDTO); diff --git a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/IndexServiceImpl.java b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/IndexServiceImpl.java index d945b93460..8ccc906405 100644 --- a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/IndexServiceImpl.java +++ b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/IndexServiceImpl.java @@ -426,7 +426,8 @@ public class IndexServiceImpl implements IndexService { /** * @param formDTO * @author yinzuomei - * @description 8、平阴大屏-下级街道or网格指数排行 + * @description 8、平阴大屏-下级街道or网格指数排行 默认查询上个月 + * 改为默认查询上个月, * @Date 2021/2/28 14:33 **/ @Override @@ -435,10 +436,10 @@ public class IndexServiceImpl implements IndexService { if (!"street".equals(formDTO.getType()) && !"grid".equals(formDTO.getType())) { throw new RenException("type传参错误,街道:street;网格:grid"); } - LocalDate now = LocalDate.now().minusMonths(NumConstant.ONE); - String yearId = String.valueOf(now.getYear()); + String monthId=DateUtils.getBeforeNMonth(1); if("street".equals(formDTO.getType())){ - List streetList = screenIndexDataMonthlyDao.selectSubStreetByAreaCode(formDTO.getCustomerId(),yearId,formDTO.getAreaCode(),formDTO.getTopNum()); + // 默认查询8个街道,平阴大屏,不会跟随中央区变化 + List streetList = screenIndexDataMonthlyDao.selectSubStreetByAreaCode(formDTO.getCustomerId(),monthId,formDTO.getAreaCode(),formDTO.getTopNum()); // 小数四舍五入 streetList.forEach(indexRank -> { indexRank.setOrgType("street"); @@ -449,7 +450,8 @@ public class IndexServiceImpl implements IndexService { }); return streetList; } - List gridList = screenIndexDataMonthlyDao.selectSubGridByAreaCode(formDTO.getCustomerId(),yearId,formDTO.getAreaCode(),formDTO.getTopNum()); + // 网格会根据中央区选择具体某个街道,变化 + List gridList = screenIndexDataMonthlyDao.selectSubGridByAreaCode(formDTO.getCustomerId(),monthId,formDTO.getAreaCode(),formDTO.getTopNum()); // 小数四舍五入 gridList.forEach(indexRank -> { indexRank.setOrgType("grid"); diff --git a/epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenIndexDataMonthlyDao.xml b/epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenIndexDataMonthlyDao.xml index ce83c8e058..8ef92f4afd 100644 --- a/epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenIndexDataMonthlyDao.xml +++ b/epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenIndexDataMonthlyDao.xml @@ -352,47 +352,46 @@ From 50babd183bb8c1fcbd601df3a1289eeab0f4a9ae Mon Sep 17 00:00:00 2001 From: jianjun Date: Thu, 12 Aug 2021 13:25:46 +0800 Subject: [PATCH 8/8] =?UTF-8?q?=E5=85=88=E8=BF=9B=E6=8E=92=E8=A1=8C?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2-=E6=B7=BB=E5=8A=A0areaCode?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../screen/dto/form/AdvancedBranchRankFormDTO.java | 5 +++-- .../mapper/screen/ScreenIndexDataMonthlyDao.xml | 10 +++++++++- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/form/AdvancedBranchRankFormDTO.java b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/form/AdvancedBranchRankFormDTO.java index 27f638f3d2..cd3cf536af 100644 --- a/epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/form/AdvancedBranchRankFormDTO.java +++ b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/form/AdvancedBranchRankFormDTO.java @@ -29,8 +29,9 @@ public class AdvancedBranchRankFormDTO implements Serializable { private String monthId; /** - * 组织类型 agency grid + * areaCode */ - private String orgType; + private String areaCode; + public interface AddUserInternalGroup {} } diff --git a/epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenIndexDataMonthlyDao.xml b/epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenIndexDataMonthlyDao.xml index ce83c8e058..2eec46bb2c 100644 --- a/epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenIndexDataMonthlyDao.xml +++ b/epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenIndexDataMonthlyDao.xml @@ -260,9 +260,17 @@ WHERE dm.del_flag = '0' AND rd.del_flag = '0' + + + AND org.AREA_CODE LIKE concat(#{areaCode}, '%') + + + AND dm.all_parent_ids LIKE concat('%', #{agencyId}, '%') + + AND dm.org_type = 'grid' AND dm.month_id = #{monthId} - AND dm.all_parent_ids LIKE concat('%', #{agencyId}, '%') + ORDER BY dm.index_total DESC LIMIT #{topNum}