fix: 优化逻辑
This commit is contained in:
parent
716ee0bfa9
commit
98afa05338
@ -5,15 +5,27 @@ import com.fasterxml.jackson.annotation.PropertyAccessor;
|
|||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
import com.fasterxml.jackson.databind.SerializationFeature;
|
import com.fasterxml.jackson.databind.SerializationFeature;
|
||||||
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
|
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
|
||||||
|
import org.springframework.cache.CacheManager;
|
||||||
|
import org.springframework.cache.annotation.EnableCaching;
|
||||||
|
import org.springframework.cache.interceptor.KeyGenerator;
|
||||||
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.context.annotation.Primary;
|
||||||
|
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.connection.RedisConnectionFactory;
|
||||||
import org.springframework.data.redis.core.RedisTemplate;
|
import org.springframework.data.redis.core.RedisTemplate;
|
||||||
import org.springframework.data.redis.core.StringRedisTemplate;
|
import org.springframework.data.redis.core.StringRedisTemplate;
|
||||||
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
|
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
|
||||||
|
import org.springframework.data.redis.serializer.RedisSerializationContext;
|
||||||
import org.springframework.data.redis.serializer.StringRedisSerializer;
|
import org.springframework.data.redis.serializer.StringRedisSerializer;
|
||||||
|
|
||||||
|
import java.time.Duration;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
@Configuration
|
@Configuration
|
||||||
|
@EnableCaching
|
||||||
public class RedisConfig {
|
public class RedisConfig {
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
@ -21,19 +33,12 @@ public class RedisConfig {
|
|||||||
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
|
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
|
||||||
redisTemplate.setConnectionFactory(redisConnectionFactory);
|
redisTemplate.setConnectionFactory(redisConnectionFactory);
|
||||||
|
|
||||||
ObjectMapper objectMapper = new ObjectMapper();
|
|
||||||
objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
|
|
||||||
objectMapper.registerModule(new JavaTimeModule());
|
|
||||||
objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
|
|
||||||
|
|
||||||
Jackson2JsonRedisSerializer<Object> jsonSerializer = new Jackson2JsonRedisSerializer<>(objectMapper, Object.class);
|
|
||||||
|
|
||||||
StringRedisSerializer stringSerializer = new StringRedisSerializer();
|
StringRedisSerializer stringSerializer = new StringRedisSerializer();
|
||||||
|
|
||||||
redisTemplate.setKeySerializer(stringSerializer);
|
redisTemplate.setKeySerializer(stringSerializer);
|
||||||
redisTemplate.setHashKeySerializer(stringSerializer);
|
redisTemplate.setHashKeySerializer(stringSerializer);
|
||||||
redisTemplate.setValueSerializer(jsonSerializer);
|
redisTemplate.setValueSerializer(genericJackson2JsonRedisSerializer());
|
||||||
redisTemplate.setHashValueSerializer(jsonSerializer);
|
redisTemplate.setHashValueSerializer(genericJackson2JsonRedisSerializer());
|
||||||
|
|
||||||
redisTemplate.afterPropertiesSet();
|
redisTemplate.afterPropertiesSet();
|
||||||
return redisTemplate;
|
return redisTemplate;
|
||||||
@ -45,4 +50,51 @@ public class RedisConfig {
|
|||||||
stringRedisTemplate.setConnectionFactory(redisConnectionFactory);
|
stringRedisTemplate.setConnectionFactory(redisConnectionFactory);
|
||||||
return stringRedisTemplate;
|
return stringRedisTemplate;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
@Primary
|
||||||
|
public CacheManager cacheManager(RedisConnectionFactory redisConnectionFactory) {
|
||||||
|
RedisCacheConfiguration defaultConfig = RedisCacheConfiguration.defaultCacheConfig()
|
||||||
|
.prefixCacheNameWith("qgc:")
|
||||||
|
.serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(new StringRedisSerializer()))
|
||||||
|
.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(genericJackson2JsonRedisSerializer()))
|
||||||
|
.entryTtl(Duration.ofMinutes(30));
|
||||||
|
|
||||||
|
Map<String, RedisCacheConfiguration> cacheConfigs = new HashMap<>();
|
||||||
|
cacheConfigs.put("dictCache", defaultConfig.entryTtl(Duration.ofHours(6)));
|
||||||
|
cacheConfigs.put("dataCache", defaultConfig.entryTtl(Duration.ofMinutes(5)));
|
||||||
|
|
||||||
|
return RedisCacheManager.builder(redisConnectionFactory)
|
||||||
|
.cacheDefaults(defaultConfig)
|
||||||
|
.withInitialCacheConfigurations(cacheConfigs)
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public GenericJackson2JsonRedisSerializer genericJackson2JsonRedisSerializer() {
|
||||||
|
ObjectMapper objectMapper = new ObjectMapper();
|
||||||
|
objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
|
||||||
|
objectMapper.registerModule(new JavaTimeModule());
|
||||||
|
objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
|
||||||
|
return new GenericJackson2JsonRedisSerializer(objectMapper);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean("customKeyGenerator")
|
||||||
|
public KeyGenerator customKeyGenerator() {
|
||||||
|
return (target, method, params) -> {
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
sb.append(target.getClass().getSimpleName());
|
||||||
|
sb.append(":");
|
||||||
|
sb.append(method.getName());
|
||||||
|
sb.append(":");
|
||||||
|
for (Object param : params) {
|
||||||
|
sb.append(param != null ? param.toString() : "null");
|
||||||
|
sb.append(",");
|
||||||
|
}
|
||||||
|
if (sb.length() > 0 && sb.charAt(sb.length() - 1) == ',') {
|
||||||
|
sb.deleteCharAt(sb.length() - 1);
|
||||||
|
}
|
||||||
|
return sb.toString();
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|||||||
import com.yfd.platform.qgc_base.domain.SdHycdDic;
|
import com.yfd.platform.qgc_base.domain.SdHycdDic;
|
||||||
import com.yfd.platform.qgc_base.mapper.SdHycdDicMapper;
|
import com.yfd.platform.qgc_base.mapper.SdHycdDicMapper;
|
||||||
import com.yfd.platform.qgc_base.service.ISdHycdDicService;
|
import com.yfd.platform.qgc_base.service.ISdHycdDicService;
|
||||||
|
import org.springframework.cache.annotation.CacheEvict;
|
||||||
|
import org.springframework.cache.annotation.Cacheable;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -27,6 +29,7 @@ public class SdHycdDicServiceImpl extends ServiceImpl<SdHycdDicMapper, SdHycdDic
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Cacheable(cacheNames = "dictCache", key = "'hycd:phycd:' + #phycd")
|
||||||
public List<SdHycdDic> getByPhycd(String phycd) {
|
public List<SdHycdDic> getByPhycd(String phycd) {
|
||||||
return this.lambdaQuery()
|
return this.lambdaQuery()
|
||||||
.eq(SdHycdDic::getPhycd, phycd)
|
.eq(SdHycdDic::getPhycd, phycd)
|
||||||
@ -35,6 +38,7 @@ public class SdHycdDicServiceImpl extends ServiceImpl<SdHycdDicMapper, SdHycdDic
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Cacheable(cacheNames = "dictCache", key = "'hycd:root'")
|
||||||
public List<SdHycdDic> getRootList() {
|
public List<SdHycdDic> getRootList() {
|
||||||
return this.lambdaQuery()
|
return this.lambdaQuery()
|
||||||
.eq(SdHycdDic::getPhycd, "0")
|
.eq(SdHycdDic::getPhycd, "0")
|
||||||
@ -43,21 +47,25 @@ public class SdHycdDicServiceImpl extends ServiceImpl<SdHycdDicMapper, SdHycdDic
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@CacheEvict(cacheNames = "dictCache", allEntries = true)
|
||||||
public boolean addHycdDic(SdHycdDic hycdDic) {
|
public boolean addHycdDic(SdHycdDic hycdDic) {
|
||||||
return this.save(hycdDic);
|
return this.save(hycdDic);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@CacheEvict(cacheNames = "dictCache", allEntries = true)
|
||||||
public boolean updateHycdDic(SdHycdDic hycdDic) {
|
public boolean updateHycdDic(SdHycdDic hycdDic) {
|
||||||
return this.updateById(hycdDic);
|
return this.updateById(hycdDic);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@CacheEvict(cacheNames = "dictCache", allEntries = true)
|
||||||
public boolean deleteHycdDic(String hycd) {
|
public boolean deleteHycdDic(String hycd) {
|
||||||
return this.removeById(hycd);
|
return this.removeById(hycd);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Cacheable(cacheNames = "dictCache", keyGenerator = "customKeyGenerator")
|
||||||
public List<SdHycdDic> selectForDropdown(String hynm, Integer grd, Integer lx,String phycd) {
|
public List<SdHycdDic> selectForDropdown(String hynm, Integer grd, Integer lx,String phycd) {
|
||||||
return this.lambdaQuery()
|
return this.lambdaQuery()
|
||||||
.like(hynm != null && !hynm.isEmpty(), SdHycdDic::getHynm, hynm)
|
.like(hynm != null && !hynm.isEmpty(), SdHycdDic::getHynm, hynm)
|
||||||
@ -69,6 +77,7 @@ public class SdHycdDicServiceImpl extends ServiceImpl<SdHycdDicMapper, SdHycdDic
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Cacheable(cacheNames = "dictCache", keyGenerator = "customKeyGenerator")
|
||||||
public List<SdHycdDic> regDropdown(String hynm, Integer grd,Integer lx,String phycd) {
|
public List<SdHycdDic> regDropdown(String hynm, Integer grd,Integer lx,String phycd) {
|
||||||
return this.lambdaQuery()
|
return this.lambdaQuery()
|
||||||
.like(hynm != null && !hynm.isEmpty(), SdHycdDic::getHynm, hynm)
|
.like(hynm != null && !hynm.isEmpty(), SdHycdDic::getHynm, hynm)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user