提交 7b2ee871 作者: 方治民

feat: 开发分支合并

上级 8ff38882
...@@ -6,7 +6,6 @@ import com.yiring.app.push.domain.PushMessage; ...@@ -6,7 +6,6 @@ import com.yiring.app.push.domain.PushMessage;
import com.yiring.app.push.domain.PushMessageRepository; import com.yiring.app.push.domain.PushMessageRepository;
import com.yiring.app.push.rabbitmq.PushRabbitConfig; import com.yiring.app.push.rabbitmq.PushRabbitConfig;
import com.yiring.app.push.service.PushService; import com.yiring.app.push.service.PushService;
import java.time.LocalDateTime;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.transaction.Transactional; import javax.transaction.Transactional;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -37,7 +36,6 @@ public class PushServiceImpl implements PushService { ...@@ -37,7 +36,6 @@ public class PushServiceImpl implements PushService {
PushMessage message = new PushMessage(); PushMessage message = new PushMessage();
message.setType(type); message.setType(type);
message.setExtra(raw); message.setExtra(raw);
message.setCreateTime(LocalDateTime.now());
repository.saveAndFlush(message); repository.saveAndFlush(message);
amqpTemplate.convertAndSend(PushRabbitConfig.PUSH_TOPIC_EXCHANGE, type.queue(), message.getId()); amqpTemplate.convertAndSend(PushRabbitConfig.PUSH_TOPIC_EXCHANGE, type.queue(), message.getId());
} }
......
...@@ -31,6 +31,7 @@ import org.springframework.stereotype.Service; ...@@ -31,6 +31,7 @@ import org.springframework.stereotype.Service;
* @author tzl * @author tzl
* 2022/4/13 15:37 * 2022/4/13 15:37
*/ */
@Service @Service
public class DictServiceImpl implements DictService { public class DictServiceImpl implements DictService {
......
...@@ -7,6 +7,7 @@ import com.yiring.app.constant.Code; ...@@ -7,6 +7,7 @@ import com.yiring.app.constant.Code;
import com.yiring.app.exception.CodeException; import com.yiring.app.exception.CodeException;
import com.yiring.app.push.domain.PushMessage; import com.yiring.app.push.domain.PushMessage;
import com.yiring.app.push.service.PushService; import com.yiring.app.push.service.PushService;
import com.yiring.app.util.GeoUtils;
import com.yiring.common.core.Result; import com.yiring.common.core.Result;
import com.yiring.common.param.PageParam; import com.yiring.common.param.PageParam;
import com.yiring.common.vo.PageVo; import com.yiring.common.vo.PageVo;
...@@ -15,6 +16,7 @@ import java.util.Arrays; ...@@ -15,6 +16,7 @@ import java.util.Arrays;
import java.util.List; import java.util.List;
import javax.validation.Valid; import javax.validation.Valid;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.locationtech.jts.geom.Point;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
...@@ -52,9 +54,10 @@ public class HelloController { ...@@ -52,9 +54,10 @@ public class HelloController {
} }
@GetMapping("test") @GetMapping("test")
public Result<String> test() { public Result<Point> test() {
PushService service = SpringUtil.getBean(PushService.class); PushService service = SpringUtil.getBean(PushService.class);
service.push(PushMessage.Type.WS, new JSONObject().fluentPut("msg", "hello")); service.push(PushMessage.Type.WS, new JSONObject().fluentPut("msg", "hello"));
return Result.ok(); Point point = GeoUtils.createPoint(112.1, 23.56);
return Result.ok(point);
} }
} }
/* (C) 2022 YiRing, Inc. */
package com.yiring.auth.config;
import java.time.Duration;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.cache.RedisCacheConfiguration;
import org.springframework.data.redis.cache.RedisCacheManager;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.listener.RedisMessageListenerContainer;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.RedisSerializationContext;
import org.springframework.data.redis.serializer.StringRedisSerializer;
/**
* Redis Config
* @author LJ-2204
* @date 2022/4/15
*/
@EnableCaching
@Configuration
public class RedisConfig {
@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
redisTemplate.setKeySerializer(stringRedisSerializer);
redisTemplate.setHashKeySerializer(stringRedisSerializer);
redisTemplate.setDefaultSerializer(new GenericJackson2JsonRedisSerializer());
redisTemplate.setEnableTransactionSupport(true);
redisTemplate.setConnectionFactory(factory);
redisTemplate.afterPropertiesSet();
return redisTemplate;
}
@Bean
public RedisCacheManager cacheManager(RedisConnectionFactory connectionFactory) {
RedisCacheConfiguration config = RedisCacheConfiguration
.defaultCacheConfig()
.entryTtl(Duration.ofMinutes(5))
.serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(new StringRedisSerializer()))
.serializeValuesWith(
RedisSerializationContext.SerializationPair.fromSerializer(new GenericJackson2JsonRedisSerializer())
)
.disableCachingNullValues();
return RedisCacheManager.builder(connectionFactory).cacheDefaults(config).transactionAware().build();
}
@Bean
public RedisMessageListenerContainer redisMessageListenerContainer(RedisConnectionFactory redisConnectionFactory) {
RedisMessageListenerContainer redisMessageListenerContainer = new RedisMessageListenerContainer();
redisMessageListenerContainer.setConnectionFactory(redisConnectionFactory);
return redisMessageListenerContainer;
}
}
...@@ -8,6 +8,8 @@ import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; ...@@ -8,6 +8,8 @@ import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import javax.annotation.Resource; import javax.annotation.Resource;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order;
/** /**
* Jackson Config * Jackson Config
...@@ -17,6 +19,7 @@ import org.springframework.context.annotation.Configuration; ...@@ -17,6 +19,7 @@ import org.springframework.context.annotation.Configuration;
* 2022/4/17 16:54 * 2022/4/17 16:54
*/ */
@Order(Ordered.HIGHEST_PRECEDENCE)
@Configuration @Configuration
public class JacksonConfig { public class JacksonConfig {
......
dependencies { dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-redis' implementation 'org.springframework.boot:spring-boot-starter-data-redis'
// jackson-databind ( io.spring.dependency-management )
implementation "com.fasterxml.jackson.core:jackson-databind"
// hutool-crypto // hutool-crypto
implementation "cn.hutool:hutool-crypto:${hutoolVersion}" implementation "cn.hutool:hutool-crypto:${hutoolVersion}"
......
/* (C) 2022 YiRing, Inc. */ /* (C) 2022 YiRing, Inc. */
package com.yiring.common.config; package com.yiring.common.config;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.time.Duration; import java.time.Duration;
import javax.annotation.Resource;
import org.springframework.cache.annotation.EnableCaching; import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
...@@ -25,13 +27,16 @@ import org.springframework.data.redis.serializer.StringRedisSerializer; ...@@ -25,13 +27,16 @@ import org.springframework.data.redis.serializer.StringRedisSerializer;
@Configuration @Configuration
public class RedisConfig { public class RedisConfig {
@Resource
ObjectMapper objectMapper;
@Bean @Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) { public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>(); RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
StringRedisSerializer stringRedisSerializer = new StringRedisSerializer(); StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
redisTemplate.setKeySerializer(stringRedisSerializer); redisTemplate.setKeySerializer(stringRedisSerializer);
redisTemplate.setHashKeySerializer(stringRedisSerializer); redisTemplate.setHashKeySerializer(stringRedisSerializer);
redisTemplate.setDefaultSerializer(new GenericJackson2JsonRedisSerializer()); redisTemplate.setDefaultSerializer(new GenericJackson2JsonRedisSerializer(objectMapper));
redisTemplate.setEnableTransactionSupport(false); redisTemplate.setEnableTransactionSupport(false);
redisTemplate.setConnectionFactory(factory); redisTemplate.setConnectionFactory(factory);
redisTemplate.afterPropertiesSet(); redisTemplate.afterPropertiesSet();
......
/* (C) 2022 YiRing, Inc. */ /* (C) 2022 YiRing, Inc. */
package com.yiring.common.util; package com.yiring.common.util;
import cn.hutool.extra.spring.SpringUtil;
import com.yiring.common.core.Redis; import com.yiring.common.core.Redis;
import com.yiring.common.dict.Dict; import com.yiring.common.dict.Dict;
import com.yiring.common.util.spring.SpringUtil;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
...@@ -148,8 +148,8 @@ public class DictUtils { ...@@ -148,8 +148,8 @@ public class DictUtils {
* 清空字典缓存 * 清空字典缓存
*/ */
public static void clearDictCache() { public static void clearDictCache() {
Collection<String> keys = SpringUtil.getBean(Redis.class).get("sys_dict:*"); Collection<String> keys = SpringUtil.getBean(Redis.class).keys("sys_dict:*");
SpringUtil.getBean(Redis.class).del(keys); SpringUtil.getBean(Redis.class).del(keys.toArray(new String[0]));
} }
/** /**
......
/* (C) 2022 YiRing, Inc. */
package com.yiring.common.util.spring;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanFactoryPostProcessor;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
/**
* spring工具类 方便在非spring管理环境中获取bean
*
* @author ruoyi
*/
@Component
public final class SpringUtil implements BeanFactoryPostProcessor, ApplicationContextAware {
/** Spring应用上下文环境 */
private static ConfigurableListableBeanFactory beanFactory;
private static ApplicationContext applicationContext;
@Override
public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
SpringUtil.beanFactory = beanFactory;
}
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
SpringUtil.applicationContext = applicationContext;
}
/**
* 获取类型为requiredType的对象
*
* @param clz Class
* @return T
*
*/
public static <T> T getBean(Class<T> clz) throws BeansException {
return (T) beanFactory.getBean(clz);
}
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论