From 0da6ef25e2c79ad81c67b301df6ba602e693c706 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=86=B7=E5=86=B7?= Date: Mon, 25 Mar 2019 21:34:33 +0800 Subject: [PATCH] =?UTF-8?q?:bug:=20Fixing=20a=20bug.=20=E5=BA=8F=E5=88=97?= =?UTF-8?q?=E5=8C=96=E9=97=AE=E9=A2=98=20=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pigx/auth/endpoint/PigxTokenEndpoint.java | 14 +++++++------- .../gateway/filter/ValidateCodeGatewayFilter.java | 3 +++ .../pigx/gateway/handler/ImageCodeHandler.java | 2 ++ .../pigx/admin/config/DynamicRouteInitRunner.java | 8 ++++---- .../pigx/admin/service/impl/MobileServiceImpl.java | 6 +++--- .../service/impl/SysRouteConfServiceImpl.java | 8 ++++---- .../pigx/monitor/support/RedisEventStore.java | 12 ++++++------ 7 files changed, 29 insertions(+), 24 deletions(-) diff --git a/pigx-auth/src/main/java/com/pig4cloud/pigx/auth/endpoint/PigxTokenEndpoint.java b/pigx-auth/src/main/java/com/pig4cloud/pigx/auth/endpoint/PigxTokenEndpoint.java index 01a720d45..fb897a81c 100644 --- a/pigx-auth/src/main/java/com/pig4cloud/pigx/auth/endpoint/PigxTokenEndpoint.java +++ b/pigx-auth/src/main/java/com/pig4cloud/pigx/auth/endpoint/PigxTokenEndpoint.java @@ -58,8 +58,8 @@ import java.util.Map; @RequestMapping("/token") public class PigxTokenEndpoint { private static final String PIGX_OAUTH_ACCESS = SecurityConstants.PIGX_PREFIX + SecurityConstants.OAUTH_PREFIX + "auth_to_access:"; + private final RedisTemplate pigxRedisTemplate; private final TokenStore tokenStore; - private final RedisTemplate redisTemplate; private final CacheManager cacheManager; /** @@ -131,19 +131,19 @@ public class PigxTokenEndpoint { List pages = findKeysForPage(key, MapUtil.getInt(params, PaginationConstants.CURRENT) , MapUtil.getInt(params, PaginationConstants.SIZE)); - redisTemplate.setKeySerializer(new StringRedisSerializer()); - redisTemplate.setValueSerializer(new JdkSerializationRedisSerializer()); + pigxRedisTemplate.setKeySerializer(new StringRedisSerializer()); + pigxRedisTemplate.setValueSerializer(new JdkSerializationRedisSerializer()); Page result = new Page(MapUtil.getInt(params, PaginationConstants.CURRENT), MapUtil.getInt(params, PaginationConstants.SIZE)); - result.setRecords(redisTemplate.opsForValue().multiGet(pages)); - result.setTotal(Long.valueOf(redisTemplate.keys(key).size())); + result.setRecords(pigxRedisTemplate.opsForValue().multiGet(pages)); + result.setTotal(Long.valueOf(pigxRedisTemplate.keys(key).size())); return new R<>(result); } private List findKeysForPage(String patternKey, int pageNum, int pageSize) { ScanOptions options = ScanOptions.scanOptions().match(patternKey).build(); - RedisSerializer redisSerializer = (RedisSerializer) redisTemplate.getKeySerializer(); - Cursor cursor = (Cursor) redisTemplate.executeWithStickyConnection(redisConnection -> new ConvertingCursor<>(redisConnection.scan(options), redisSerializer::deserialize)); + RedisSerializer redisSerializer = (RedisSerializer) pigxRedisTemplate.getKeySerializer(); + Cursor cursor = (Cursor) pigxRedisTemplate.executeWithStickyConnection(redisConnection -> new ConvertingCursor<>(redisConnection.scan(options), redisSerializer::deserialize)); List result = new ArrayList<>(); int tmpIndex = 0; int startIndex = (pageNum - 1) * pageSize; diff --git a/pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/filter/ValidateCodeGatewayFilter.java b/pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/filter/ValidateCodeGatewayFilter.java index 089c4c95e..71f0a9a4d 100644 --- a/pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/filter/ValidateCodeGatewayFilter.java +++ b/pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/filter/ValidateCodeGatewayFilter.java @@ -33,6 +33,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.cloud.gateway.filter.GatewayFilter; import org.springframework.cloud.gateway.filter.factory.AbstractGatewayFilterFactory; import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.serializer.StringRedisSerializer; import org.springframework.http.HttpStatus; import org.springframework.http.server.reactive.ServerHttpRequest; import org.springframework.http.server.reactive.ServerHttpResponse; @@ -125,6 +126,8 @@ public class ValidateCodeGatewayFilter extends AbstractGatewayFilterFactory { } String key = CommonConstants.DEFAULT_CODE_KEY + randomStr; + redisTemplate.setKeySerializer(new StringRedisSerializer()); + if (!redisTemplate.hasKey(key)) { throw new ValidateCodeException("验证码不合法"); } diff --git a/pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/handler/ImageCodeHandler.java b/pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/handler/ImageCodeHandler.java index 4fe797a52..c89595403 100644 --- a/pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/handler/ImageCodeHandler.java +++ b/pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/handler/ImageCodeHandler.java @@ -24,6 +24,7 @@ import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.core.io.ByteArrayResource; import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.serializer.StringRedisSerializer; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.stereotype.Component; @@ -60,6 +61,7 @@ public class ImageCodeHandler implements HandlerFunction { //保存验证码信息 String randomStr = serverRequest.queryParam("randomStr").get(); + redisTemplate.setKeySerializer(new StringRedisSerializer()); redisTemplate.opsForValue().set(CommonConstants.DEFAULT_CODE_KEY + randomStr, text , SecurityConstants.CODE_TIME, TimeUnit.SECONDS); diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/config/DynamicRouteInitRunner.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/config/DynamicRouteInitRunner.java index 754daf8e0..4d9c520cb 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/config/DynamicRouteInitRunner.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/config/DynamicRouteInitRunner.java @@ -50,14 +50,14 @@ import java.net.URI; @Configuration @AllArgsConstructor public class DynamicRouteInitRunner { - private final RedisTemplate redisTemplate; + private final RedisTemplate pigxRedisTemplate; private final SysRouteConfService routeConfService; @Async @Order @EventListener({WebServerInitializedEvent.class, DynamicRouteInitEvent.class}) public void initRoute() { - Boolean result = redisTemplate.delete(CommonConstants.ROUTE_KEY); + Boolean result = pigxRedisTemplate.delete(CommonConstants.ROUTE_KEY); log.info("初始化网关路由 {} ", result); routeConfService.routes().forEach(route -> { @@ -73,8 +73,8 @@ public class DynamicRouteInitRunner { vo.setPredicates(predicateObj.toList(PredicateDefinition.class)); log.info("加载路由ID:{},{}", route.getRouteId(), vo); - redisTemplate.setHashValueSerializer(new Jackson2JsonRedisSerializer<>(RouteDefinitionVo.class)); - redisTemplate.opsForHash().put(CommonConstants.ROUTE_KEY, route.getRouteId(), vo); + pigxRedisTemplate.setHashValueSerializer(new Jackson2JsonRedisSerializer<>(RouteDefinitionVo.class)); + pigxRedisTemplate.opsForHash().put(CommonConstants.ROUTE_KEY, route.getRouteId(), vo); }); log.debug("初始化网关路由结束 "); } diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/MobileServiceImpl.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/MobileServiceImpl.java index 5ccb3d587..0ba25958e 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/MobileServiceImpl.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/MobileServiceImpl.java @@ -45,7 +45,7 @@ import java.util.concurrent.TimeUnit; @Service @AllArgsConstructor public class MobileServiceImpl implements MobileService { - private final RedisTemplate redisTemplate; + private final RedisTemplate pigxRedisTemplate; private final SysUserMapper userMapper; @@ -67,7 +67,7 @@ public class MobileServiceImpl implements MobileService { return new R<>(Boolean.FALSE, "手机号未注册"); } - Object codeObj = redisTemplate.opsForValue().get(CommonConstants.DEFAULT_CODE_KEY + mobile); + Object codeObj = pigxRedisTemplate.opsForValue().get(CommonConstants.DEFAULT_CODE_KEY + mobile); if (codeObj != null) { log.info("手机号验证码未过期:{},{}", mobile, codeObj); @@ -76,7 +76,7 @@ public class MobileServiceImpl implements MobileService { String code = RandomUtil.randomNumbers(Integer.parseInt(SecurityConstants.CODE_SIZE)); log.debug("手机号生成验证码成功:{},{}", mobile, code); - redisTemplate.opsForValue().set( + pigxRedisTemplate.opsForValue().set( CommonConstants.DEFAULT_CODE_KEY + LoginTypeEnum.SMS.getType() + "@" + mobile , code, SecurityConstants.CODE_TIME, TimeUnit.SECONDS); return new R<>(Boolean.TRUE, code); diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysRouteConfServiceImpl.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysRouteConfServiceImpl.java index a06c317eb..e94316881 100755 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysRouteConfServiceImpl.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysRouteConfServiceImpl.java @@ -55,7 +55,7 @@ import java.util.stream.Collectors; @AllArgsConstructor @Service("sysRouteConfService") public class SysRouteConfServiceImpl extends ServiceImpl implements SysRouteConfService { - private final RedisTemplate redisTemplate; + private final RedisTemplate pigxRedisTemplate; private final ApplicationEventPublisher applicationEventPublisher; @@ -82,7 +82,7 @@ public class SysRouteConfServiceImpl extends ServiceImpl updateRoutes(JSONArray routes) { // 清空Redis 缓存 - Boolean result = redisTemplate.delete(CommonConstants.ROUTE_KEY); + Boolean result = pigxRedisTemplate.delete(CommonConstants.ROUTE_KEY); log.info("清空网关路由 {} ", result); // 遍历修改的routes,保存到Redis @@ -128,8 +128,8 @@ public class SysRouteConfServiceImpl extends ServiceImpl(RouteDefinitionVo.class)); - redisTemplate.opsForHash().put(CommonConstants.ROUTE_KEY, vo.getId(), vo); + pigxRedisTemplate.setHashValueSerializer(new Jackson2JsonRedisSerializer<>(RouteDefinitionVo.class)); + pigxRedisTemplate.opsForHash().put(CommonConstants.ROUTE_KEY, vo.getId(), vo); routeDefinitionVoList.add(vo); }); diff --git a/pigx-visual/pigx-monitor/src/main/java/com/pig4cloud/pigx/monitor/support/RedisEventStore.java b/pigx-visual/pigx-monitor/src/main/java/com/pig4cloud/pigx/monitor/support/RedisEventStore.java index 7edd3f960..5fc8ee211 100644 --- a/pigx-visual/pigx-monitor/src/main/java/com/pig4cloud/pigx/monitor/support/RedisEventStore.java +++ b/pigx-visual/pigx-monitor/src/main/java/com/pig4cloud/pigx/monitor/support/RedisEventStore.java @@ -20,8 +20,8 @@ package com.pig4cloud.pigx.monitor.support; import com.pig4cloud.pigx.common.core.constant.CommonConstants; import de.codecentric.boot.admin.server.domain.events.InstanceEvent; import de.codecentric.boot.admin.server.eventstore.InMemoryEventStore; +import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer; @@ -39,18 +39,18 @@ import java.util.List; */ @Slf4j @Configuration +@AllArgsConstructor public class RedisEventStore extends InMemoryEventStore { - @Autowired - private RedisTemplate redisTemplate; + private final RedisTemplate pigxRedisTemplate; @Override public Mono append(List events) { events.forEach(event -> { String key = event.getInstance().getValue() + "_" + event.getTimestamp().toString(); log.info("保存实例事件的KEY:{},EVENT: {}", key, event.getType()); - redisTemplate.setKeySerializer(new StringRedisSerializer()); - redisTemplate.setHashValueSerializer(new Jackson2JsonRedisSerializer<>(InstanceEvent.class)); - redisTemplate.opsForHash().put(CommonConstants.EVENT_KEY, key, event); + pigxRedisTemplate.setKeySerializer(new StringRedisSerializer()); + pigxRedisTemplate.setHashValueSerializer(new Jackson2JsonRedisSerializer<>(InstanceEvent.class)); + pigxRedisTemplate.opsForHash().put(CommonConstants.EVENT_KEY, key, event); }); return super.append(events); }