diff --git a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/domain/entity/CategoryEntity.java b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/domain/entity/CategoryEntity.java index 83933a1d..d6934a8a 100644 --- a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/domain/entity/CategoryEntity.java +++ b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/domain/entity/CategoryEntity.java @@ -6,6 +6,8 @@ import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import net.lab1024.sa.admin.module.business.category.constant.CategoryTypeEnum; +import java.io.Serial; +import java.io.Serializable; import java.time.LocalDateTime; /** @@ -19,7 +21,10 @@ import java.time.LocalDateTime; */ @Data @TableName("t_category") -public class CategoryEntity { +public class CategoryEntity implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; @TableId(type = IdType.AUTO) private Long categoryId; diff --git a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/domain/vo/CategoryTreeVO.java b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/domain/vo/CategoryTreeVO.java index 3c55b658..6fbd0e0a 100644 --- a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/domain/vo/CategoryTreeVO.java +++ b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/domain/vo/CategoryTreeVO.java @@ -3,6 +3,8 @@ package net.lab1024.sa.admin.module.business.category.domain.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import java.io.Serial; +import java.io.Serializable; import java.util.List; /** @@ -15,7 +17,10 @@ import java.util.List; * @Copyright 1024创新实验室 */ @Data -public class CategoryTreeVO { +public class CategoryTreeVO implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; @Schema(description = "类目id") private Long categoryId; diff --git a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/vo/GoodsVO.java b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/vo/GoodsVO.java index 24f07738..191965f9 100644 --- a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/vo/GoodsVO.java +++ b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/vo/GoodsVO.java @@ -1,6 +1,5 @@ package net.lab1024.sa.admin.module.business.goods.domain.vo; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import net.lab1024.sa.admin.module.business.goods.constant.GoodsStatusEnum; diff --git a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/domain/vo/DepartmentVO.java b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/domain/vo/DepartmentVO.java index 3566f877..def0c314 100644 --- a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/domain/vo/DepartmentVO.java +++ b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/domain/vo/DepartmentVO.java @@ -3,6 +3,8 @@ package net.lab1024.sa.admin.module.system.department.domain.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import java.io.Serial; +import java.io.Serializable; import java.time.LocalDateTime; /** @@ -15,7 +17,10 @@ import java.time.LocalDateTime; * @Copyright 1024创新实验室 */ @Data -public class DepartmentVO { +public class DepartmentVO implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; @Schema(description = "部门id") private Long departmentId; diff --git a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminCacheController.java b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminCacheController.java index adaacdb3..de25e80a 100644 --- a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminCacheController.java +++ b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminCacheController.java @@ -7,7 +7,7 @@ import jakarta.annotation.Resource; import net.lab1024.sa.base.common.controller.SupportBaseController; import net.lab1024.sa.base.common.domain.ResponseDTO; import net.lab1024.sa.base.constant.SwaggerTagConst; -import net.lab1024.sa.base.module.support.cache.CacheService; +import net.lab1024.sa.base.module.support.cache.service.CacheService; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RestController; diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/common/json/deserializer/DictValueVoDeserializer.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/common/json/deserializer/DictValueVoDeserializer.java index 7631db6a..9f8377a0 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/common/json/deserializer/DictValueVoDeserializer.java +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/common/json/deserializer/DictValueVoDeserializer.java @@ -1,18 +1,15 @@ package net.lab1024.sa.base.common.json.deserializer; import com.fasterxml.jackson.core.JsonParser; -import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.ObjectCodec; import com.fasterxml.jackson.databind.DeserializationContext; import com.fasterxml.jackson.databind.JsonDeserializer; import com.fasterxml.jackson.databind.JsonNode; import lombok.extern.slf4j.Slf4j; -import net.lab1024.sa.base.module.support.dict.domain.vo.DictValueVO; import java.io.IOException; import java.util.ArrayList; import java.util.List; -import java.util.stream.Collectors; /** * 字典反序列化 @@ -27,7 +24,7 @@ import java.util.stream.Collectors; public class DictValueVoDeserializer extends JsonDeserializer { @Override - public String deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException { + public String deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException { List list = new ArrayList<>(); ObjectCodec objectCodec = jsonParser.getCodec(); JsonNode listOrObjectNode = objectCodec.readTree(jsonParser); diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/config/FileConfig.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/config/FileConfig.java index ca770124..189be2f7 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/config/FileConfig.java +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/config/FileConfig.java @@ -68,7 +68,7 @@ public class FileConfig implements WebMvcConfigurer { * @return */ @Bean - @ConditionalOnProperty(prefix = "file.storage", name = {"mode"}, havingValue = "cloud") + @ConditionalOnProperty(prefix = "file.storage", name = {"mode"}, havingValue = MODE_CLOUD) public AmazonS3 initAmazonS3() { ClientConfiguration clientConfig = new ClientConfiguration(); clientConfig.setProtocol(Protocol.HTTPS); diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/config/RedisConfig.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/config/RedisConfig.java index 5d1357c3..7c1c24d5 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/config/RedisConfig.java +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/config/RedisConfig.java @@ -33,7 +33,6 @@ public class RedisConfig { @Bean public RedisTemplate redisTemplate() { - Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class); ObjectMapper om = new ObjectMapper(); om.registerModule(new JavaTimeModule()) .configure(SerializationFeature.WRITE_DATE_TIMESTAMPS_AS_NANOSECONDS, false) @@ -43,9 +42,11 @@ public class RedisConfig { .setSerializationInclusion(JsonInclude.Include.NON_NULL); om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); - // enableDefaultTyping 官方已弃用 所以改为 activateDefaultTyping om.activateDefaultTyping(LaissezFaireSubTypeValidator.instance, ObjectMapper.DefaultTyping.NON_FINAL); - jackson2JsonRedisSerializer.setObjectMapper(om); + + // 由于在 SpringBoot3 中 jackson2JsonRedisSerializer.setObjectMapper 弃用,所以改为 + Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(om, Object.class); + RedisTemplate template = new RedisTemplate<>(); template.setConnectionFactory(factory); template.setKeySerializer(new StringRedisSerializer()); diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/apiencrypt/advice/DecryptRequestAdvice.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/apiencrypt/advice/DecryptRequestAdvice.java index 9adf42ad..72a86e29 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/apiencrypt/advice/DecryptRequestAdvice.java +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/apiencrypt/advice/DecryptRequestAdvice.java @@ -1,6 +1,6 @@ package net.lab1024.sa.base.module.support.apiencrypt.advice; -import com.alibaba.fastjson.JSONObject; +import com.fasterxml.jackson.databind.ObjectMapper; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import net.lab1024.sa.base.common.util.SmartStringUtil; @@ -25,7 +25,7 @@ import java.lang.reflect.Type; * @Date 2023/10/21 11:41:46 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室,Since 2012 + * @Copyright 1024创新实验室,Since 2012 */ @Slf4j @@ -37,16 +37,19 @@ public class DecryptRequestAdvice extends RequestBodyAdviceAdapter { @Resource private ApiEncryptService apiEncryptService; + @Resource + private ObjectMapper objectMapper; + @Override public boolean supports(MethodParameter methodParameter, Type targetType, Class> converterType) { return methodParameter.hasMethodAnnotation(ApiDecrypt.class) || methodParameter.hasParameterAnnotation(ApiDecrypt.class) || methodParameter.getContainingClass().isAnnotationPresent(ApiDecrypt.class); } @Override - public HttpInputMessage beforeBodyRead(HttpInputMessage inputMessage, MethodParameter parameter, Type targetType, Class> converterType) { + public HttpInputMessage beforeBodyRead(HttpInputMessage inputMessage, MethodParameter parameter, Type targetType, Class> converterType) { try { String bodyStr = IOUtils.toString(inputMessage.getBody(), ENCODING); - ApiEncryptForm apiEncryptForm = JSONObject.parseObject(bodyStr, ApiEncryptForm.class); + ApiEncryptForm apiEncryptForm = objectMapper.readValue(bodyStr, ApiEncryptForm.class); if (SmartStringUtil.isEmpty(apiEncryptForm.getEncryptData())) { return inputMessage; } diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/apiencrypt/advice/EncryptResponseAdvice.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/apiencrypt/advice/EncryptResponseAdvice.java index 0d6afa15..ee90c092 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/apiencrypt/advice/EncryptResponseAdvice.java +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/apiencrypt/advice/EncryptResponseAdvice.java @@ -1,6 +1,5 @@ package net.lab1024.sa.base.module.support.apiencrypt.advice; -import com.alibaba.fastjson.JSON; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import jakarta.annotation.Resource; @@ -24,13 +23,13 @@ import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice; * @Date 2023/10/24 09:52:58 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室,Since 2012 + * @Copyright 1024创新实验室,Since 2012 */ @Slf4j @ControllerAdvice -public class EncryptResponseAdvice implements ResponseBodyAdvice { +public class EncryptResponseAdvice implements ResponseBodyAdvice> { @Resource private ApiEncryptService apiEncryptService; @@ -44,19 +43,18 @@ public class EncryptResponseAdvice implements ResponseBodyAdvice { } @Override - public ResponseDTO beforeBodyWrite(ResponseDTO body, MethodParameter returnType, MediaType selectedContentType, Class> selectedConverterType, ServerHttpRequest request, ServerHttpResponse response) { - if (body.getData() == null) { + public ResponseDTO beforeBodyWrite(ResponseDTO body, MethodParameter returnType, MediaType selectedContentType, Class> selectedConverterType, ServerHttpRequest request, ServerHttpResponse response) { + if (body == null || body.getData() == null) { return body; } - String encrypt = null; try { - encrypt = apiEncryptService.encrypt(objectMapper.writeValueAsString(body.getData())); + String encrypt = apiEncryptService.encrypt(objectMapper.writeValueAsString(body.getData())); + body.setData(encrypt); + body.setDataType(DataTypeEnum.ENCRYPT.getValue()); } catch (JsonProcessingException e) { throw new RuntimeException(e); } - body.setData(encrypt); - body.setDataType(DataTypeEnum.ENCRYPT.getValue()); return body; } } diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/cache/config/CacheConfig.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/cache/config/CacheConfig.java new file mode 100644 index 00000000..fe7c85cb --- /dev/null +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/cache/config/CacheConfig.java @@ -0,0 +1,35 @@ +package net.lab1024.sa.base.module.support.cache.config; + +import net.lab1024.sa.base.module.support.cache.service.CacheService; +import net.lab1024.sa.base.module.support.cache.service.CaffeineCacheServiceImpl; +import net.lab1024.sa.base.module.support.cache.service.RedisCacheServiceImpl; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * 缓存配置 + * + * @author zhoumingfa + * @date 2025/03/28 + */ +@Configuration +public class CacheConfig { + + private static final String REDIS_CACHE = "redis"; + private static final String CAFFEINE_CACHE = "caffeine"; + + + @Bean + @ConditionalOnProperty(prefix = "spring.cache", name = {"type"}, havingValue = REDIS_CACHE) + public CacheService redisCacheService() { + return new RedisCacheServiceImpl(); + } + + @Bean + @ConditionalOnProperty(prefix = "spring.cache", name = {"type"}, havingValue = CAFFEINE_CACHE) + public CacheService caffeineCacheService() { + return new CaffeineCacheServiceImpl(); + } + +} diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/cache/service/CacheService.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/cache/service/CacheService.java new file mode 100644 index 00000000..e0742b66 --- /dev/null +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/cache/service/CacheService.java @@ -0,0 +1,34 @@ +package net.lab1024.sa.base.module.support.cache.service; + +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 缓存服务 + * + * @Author 1024创新实验室: 罗伊 + * @Date 2021/10/11 20:07 + * @Wechat zhuoda1024 + * @Email lab1024@163.com + * @Copyright 1024创新实验室 + */ +@Service +public interface CacheService { + + /** + * 获取所有缓存名称 + */ + List cacheNames(); + + /** + * 某个缓存下的所有 key + */ + List cacheKey(String cacheName); + + /** + * 移除某个 key + */ + void removeCache(String cacheName); + +} diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/cache/CacheService.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/cache/service/CaffeineCacheServiceImpl.java similarity index 85% rename from smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/cache/CacheService.java rename to smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/cache/service/CaffeineCacheServiceImpl.java index 0229b3f4..b07ab1fa 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/cache/CacheService.java +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/cache/service/CaffeineCacheServiceImpl.java @@ -1,4 +1,4 @@ -package net.lab1024.sa.base.module.support.cache; +package net.lab1024.sa.base.module.support.cache.service; import com.google.common.collect.Lists; import jakarta.annotation.Resource; @@ -6,7 +6,6 @@ import net.lab1024.sa.base.constant.ReloadConst; import net.lab1024.sa.base.module.support.reload.core.annoation.SmartReload; import org.springframework.cache.caffeine.CaffeineCache; import org.springframework.cache.caffeine.CaffeineCacheManager; -import org.springframework.stereotype.Service; import java.util.Collection; import java.util.List; @@ -14,32 +13,31 @@ import java.util.Set; import java.util.stream.Collectors; /** - * 缓存操作 + * caffeine 缓存实现 * * @Author 1024创新实验室: 罗伊 * @Date 2021/10/11 20:07 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 + * @Copyright 1024创新实验室 */ -@Service -public class CacheService { +public class CaffeineCacheServiceImpl implements CacheService { @Resource private CaffeineCacheManager caffeineCacheManager; /** * 获取所有缓存名称 - * */ + @Override public List cacheNames() { return Lists.newArrayList(caffeineCacheManager.getCacheNames()); } /** - * 某个缓存下的所有key - * + * 某个缓存下的所有 key */ + @Override public List cacheKey(String cacheName) { CaffeineCache cache = (CaffeineCache) caffeineCacheManager.getCache(cacheName); if (cache == null) { @@ -50,10 +48,9 @@ public class CacheService { } /** - * 移除某个key - * + * 移除某个 key */ - + @Override public void removeCache(String cacheName) { CaffeineCache cache = (CaffeineCache) caffeineCacheManager.getCache(cacheName); if (cache != null) { diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/cache/service/RedisCacheServiceImpl.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/cache/service/RedisCacheServiceImpl.java new file mode 100644 index 00000000..5efeb3ca --- /dev/null +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/cache/service/RedisCacheServiceImpl.java @@ -0,0 +1,86 @@ +package net.lab1024.sa.base.module.support.cache.service; + +import cn.hutool.core.util.StrUtil; +import com.google.common.collect.Lists; +import jakarta.annotation.Resource; +import net.lab1024.sa.base.constant.ReloadConst; +import net.lab1024.sa.base.module.support.reload.core.annoation.SmartReload; +import org.springframework.data.redis.cache.RedisCache; +import org.springframework.data.redis.cache.RedisCacheManager; +import org.springframework.data.redis.connection.RedisConnection; +import org.springframework.data.redis.connection.RedisConnectionFactory; + +import java.util.Collection; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + +/** + * redis 缓存实现 + * + * @author zhoumingfa + * @date 2025/3/28 + */ +public class RedisCacheServiceImpl implements CacheService { + + @Resource + private RedisCacheManager redisCacheManager; + + @Resource + private RedisConnectionFactory redisConnectionFactory; + + /** + * 获取所有缓存名称 + */ + @Override + public List cacheNames() { + return Lists.newArrayList(redisCacheManager.getCacheNames()); + } + + /** + * 某个缓存下的所有 key + */ + @Override + public List cacheKey(String cacheName) { + RedisCache cache = (RedisCache) redisCacheManager.getCache(cacheName); + if (cache == null) { + return Lists.newArrayList(); + } + // 获取 Redis 连接 + RedisConnection connection = redisConnectionFactory.getConnection(); + // 根据指定的 key 模式获取所有匹配的键 + Set keys = connection.keyCommands().keys((cacheName + ":*").getBytes()); + + if (keys != null) { + return keys.stream().map(key -> { + String redisKey = StrUtil.str(key, "utf-8"); + // 从 Redis 键中提取出最后一个冒号后面的字符串作为真正的键 + return redisKey.substring(redisKey.lastIndexOf(":") + 1); + }).collect(Collectors.toList()); + } + connection.close(); + return Lists.newArrayList(cacheName); + } + + /** + * 移除某个 key + */ + @Override + public void removeCache(String cacheName) { + RedisCache cache = (RedisCache) redisCacheManager.getCache(cacheName); + if (cache != null) { + cache.clear(); + } + } + + @SmartReload(ReloadConst.CACHE_SERVICE) + public void clearAllCache() { + Collection cacheNames = redisCacheManager.getCacheNames(); + for (String name : cacheNames) { + RedisCache cache = (RedisCache) redisCacheManager.getCache(name); + if (cache != null) { + cache.clear(); + } + } + } +} diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/service/DictCacheService.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/service/DictCacheService.java index ad9edf5d..f724dcec 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/service/DictCacheService.java +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/service/DictCacheService.java @@ -107,16 +107,14 @@ public class DictCacheService { return null; } - List dictValueVOList = DICT_CACHE.get(valueCode); + List dictValueVOList = DICT_CACHE.get(keyCode); if (CollectionUtils.isEmpty(dictValueVOList)) { return null; } Optional option = dictValueVOList.stream().filter(e->e.getValueCode().equals(valueCode)).findFirst(); - if(option.isPresent()){ - return option.get(); - } - return null; + return option.orElse(null); } + public String selectValueNameByValueCodeSplit(String keyCode, String valueCodes) { if (StrUtil.isEmpty(valueCodes)) { return ""; diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/resources/mapper/support/FeedbackMapper.xml b/smart-admin-api-java17-springboot3/sa-base/src/main/resources/mapper/support/FeedbackMapper.xml index db34a5ed..1cc90cb0 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/resources/mapper/support/FeedbackMapper.xml +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/resources/mapper/support/FeedbackMapper.xml @@ -9,7 +9,7 @@ AND ( INSTR(feedback_content,#{query.searchWord}) - OR INSTR(create_name,#{query.searchWord}) + OR INSTR(user_name,#{query.searchWord}) ) diff --git a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/domain/entity/CategoryEntity.java b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/domain/entity/CategoryEntity.java index 83933a1d..4b0b348c 100644 --- a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/domain/entity/CategoryEntity.java +++ b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/domain/entity/CategoryEntity.java @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import net.lab1024.sa.admin.module.business.category.constant.CategoryTypeEnum; +import java.io.Serializable; import java.time.LocalDateTime; /** @@ -19,7 +20,9 @@ import java.time.LocalDateTime; */ @Data @TableName("t_category") -public class CategoryEntity { +public class CategoryEntity implements Serializable { + + private static final long serialVersionUID = 1L; @TableId(type = IdType.AUTO) private Long categoryId; diff --git a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/domain/vo/CategoryTreeVO.java b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/domain/vo/CategoryTreeVO.java index 3c55b658..bbd7fb4a 100644 --- a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/domain/vo/CategoryTreeVO.java +++ b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/domain/vo/CategoryTreeVO.java @@ -3,6 +3,7 @@ package net.lab1024.sa.admin.module.business.category.domain.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import java.io.Serializable; import java.util.List; /** @@ -15,7 +16,9 @@ import java.util.List; * @Copyright 1024创新实验室 */ @Data -public class CategoryTreeVO { +public class CategoryTreeVO implements Serializable { + + private static final long serialVersionUID = 1L; @Schema(description = "类目id") private Long categoryId; diff --git a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/vo/GoodsVO.java b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/vo/GoodsVO.java index 24f07738..191965f9 100644 --- a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/vo/GoodsVO.java +++ b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/vo/GoodsVO.java @@ -1,6 +1,5 @@ package net.lab1024.sa.admin.module.business.goods.domain.vo; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import net.lab1024.sa.admin.module.business.goods.constant.GoodsStatusEnum; diff --git a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/domain/vo/DepartmentVO.java b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/domain/vo/DepartmentVO.java index 3566f877..fc591634 100644 --- a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/domain/vo/DepartmentVO.java +++ b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/domain/vo/DepartmentVO.java @@ -3,6 +3,7 @@ package net.lab1024.sa.admin.module.system.department.domain.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import java.io.Serializable; import java.time.LocalDateTime; /** @@ -15,7 +16,9 @@ import java.time.LocalDateTime; * @Copyright 1024创新实验室 */ @Data -public class DepartmentVO { +public class DepartmentVO implements Serializable { + + private static final long serialVersionUID = 1L; @Schema(description = "部门id") private Long departmentId; diff --git a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminCacheController.java b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminCacheController.java index 9696e5ec..b6b5906e 100644 --- a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminCacheController.java +++ b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminCacheController.java @@ -6,7 +6,7 @@ import io.swagger.v3.oas.annotations.Operation; import net.lab1024.sa.base.common.controller.SupportBaseController; import net.lab1024.sa.base.common.domain.ResponseDTO; import net.lab1024.sa.base.constant.SwaggerTagConst; -import net.lab1024.sa.base.module.support.cache.CacheService; +import net.lab1024.sa.base.module.support.cache.cache.service.CacheService; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RestController; diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/common/json/deserializer/DictValueVoDeserializer.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/common/json/deserializer/DictValueVoDeserializer.java index 7631db6a..9f8377a0 100644 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/common/json/deserializer/DictValueVoDeserializer.java +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/common/json/deserializer/DictValueVoDeserializer.java @@ -1,18 +1,15 @@ package net.lab1024.sa.base.common.json.deserializer; import com.fasterxml.jackson.core.JsonParser; -import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.ObjectCodec; import com.fasterxml.jackson.databind.DeserializationContext; import com.fasterxml.jackson.databind.JsonDeserializer; import com.fasterxml.jackson.databind.JsonNode; import lombok.extern.slf4j.Slf4j; -import net.lab1024.sa.base.module.support.dict.domain.vo.DictValueVO; import java.io.IOException; import java.util.ArrayList; import java.util.List; -import java.util.stream.Collectors; /** * 字典反序列化 @@ -27,7 +24,7 @@ import java.util.stream.Collectors; public class DictValueVoDeserializer extends JsonDeserializer { @Override - public String deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException { + public String deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException { List list = new ArrayList<>(); ObjectCodec objectCodec = jsonParser.getCodec(); JsonNode listOrObjectNode = objectCodec.readTree(jsonParser); diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/config/FileConfig.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/config/FileConfig.java index ca770124..189be2f7 100644 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/config/FileConfig.java +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/config/FileConfig.java @@ -68,7 +68,7 @@ public class FileConfig implements WebMvcConfigurer { * @return */ @Bean - @ConditionalOnProperty(prefix = "file.storage", name = {"mode"}, havingValue = "cloud") + @ConditionalOnProperty(prefix = "file.storage", name = {"mode"}, havingValue = MODE_CLOUD) public AmazonS3 initAmazonS3() { ClientConfiguration clientConfig = new ClientConfiguration(); clientConfig.setProtocol(Protocol.HTTPS); diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/apiencrypt/advice/DecryptRequestAdvice.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/apiencrypt/advice/DecryptRequestAdvice.java index ea087e4d..03c0397d 100644 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/apiencrypt/advice/DecryptRequestAdvice.java +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/apiencrypt/advice/DecryptRequestAdvice.java @@ -1,6 +1,6 @@ package net.lab1024.sa.base.module.support.apiencrypt.advice; -import com.alibaba.fastjson.JSONObject; +import com.fasterxml.jackson.databind.ObjectMapper; import lombok.extern.slf4j.Slf4j; import net.lab1024.sa.base.common.util.SmartStringUtil; import net.lab1024.sa.base.module.support.apiencrypt.annotation.ApiDecrypt; @@ -37,16 +37,19 @@ public class DecryptRequestAdvice extends RequestBodyAdviceAdapter { @Resource private ApiEncryptService apiEncryptService; + @Resource + private ObjectMapper objectMapper; + @Override public boolean supports(MethodParameter methodParameter, Type targetType, Class> converterType) { return methodParameter.hasMethodAnnotation(ApiDecrypt.class) || methodParameter.hasParameterAnnotation(ApiDecrypt.class) || methodParameter.getContainingClass().isAnnotationPresent(ApiDecrypt.class); } @Override - public HttpInputMessage beforeBodyRead(HttpInputMessage inputMessage, MethodParameter parameter, Type targetType, Class> converterType) { + public HttpInputMessage beforeBodyRead(HttpInputMessage inputMessage, MethodParameter parameter, Type targetType, Class> converterType) { try { String bodyStr = IOUtils.toString(inputMessage.getBody(), ENCODING); - ApiEncryptForm apiEncryptForm = JSONObject.parseObject(bodyStr, ApiEncryptForm.class); + ApiEncryptForm apiEncryptForm = objectMapper.readValue(bodyStr, ApiEncryptForm.class); if (SmartStringUtil.isEmpty(apiEncryptForm.getEncryptData())) { return inputMessage; } diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/apiencrypt/advice/EncryptResponseAdvice.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/apiencrypt/advice/EncryptResponseAdvice.java index d38544fc..2e9df5fa 100644 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/apiencrypt/advice/EncryptResponseAdvice.java +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/apiencrypt/advice/EncryptResponseAdvice.java @@ -1,6 +1,5 @@ package net.lab1024.sa.base.module.support.apiencrypt.advice; -import com.alibaba.fastjson.JSON; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import lombok.extern.slf4j.Slf4j; @@ -31,7 +30,7 @@ import javax.annotation.Resource; @Slf4j @ControllerAdvice -public class EncryptResponseAdvice implements ResponseBodyAdvice { +public class EncryptResponseAdvice implements ResponseBodyAdvice> { @Resource private ApiEncryptService apiEncryptService; @@ -45,19 +44,18 @@ public class EncryptResponseAdvice implements ResponseBodyAdvice { } @Override - public ResponseDTO beforeBodyWrite(ResponseDTO body, MethodParameter returnType, MediaType selectedContentType, Class> selectedConverterType, ServerHttpRequest request, ServerHttpResponse response) { - if (body.getData() == null) { + public ResponseDTO beforeBodyWrite(ResponseDTO body, MethodParameter returnType, MediaType selectedContentType, Class> selectedConverterType, ServerHttpRequest request, ServerHttpResponse response) { + if (body == null || body.getData() == null) { return body; } - String encrypt = null; try { - encrypt = apiEncryptService.encrypt(objectMapper.writeValueAsString(body.getData())); + String encrypt = apiEncryptService.encrypt(objectMapper.writeValueAsString(body.getData())); + body.setData(encrypt); + body.setDataType(DataTypeEnum.ENCRYPT.getValue()); } catch (JsonProcessingException e) { throw new RuntimeException(e); } - body.setData(encrypt); - body.setDataType(DataTypeEnum.ENCRYPT.getValue()); return body; } } diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/cache/cache/config/CacheConfig.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/cache/cache/config/CacheConfig.java new file mode 100644 index 00000000..20afcf34 --- /dev/null +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/cache/cache/config/CacheConfig.java @@ -0,0 +1,35 @@ +package net.lab1024.sa.base.module.support.cache.cache.config; + +import net.lab1024.sa.base.module.support.cache.cache.service.CacheService; +import net.lab1024.sa.base.module.support.cache.cache.service.CaffeineCacheServiceImpl; +import net.lab1024.sa.base.module.support.cache.cache.service.RedisCacheServiceImpl; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * 缓存配置 + * + * @author zhoumingfa + * @date 2025/03/28 + */ +@Configuration +public class CacheConfig { + + private static final String REDIS_CACHE = "redis"; + private static final String CAFFEINE_CACHE = "caffeine"; + + + @Bean + @ConditionalOnProperty(prefix = "spring.cache", name = {"type"}, havingValue = REDIS_CACHE) + public CacheService redisCacheService() { + return new RedisCacheServiceImpl(); + } + + @Bean + @ConditionalOnProperty(prefix = "spring.cache", name = {"type"}, havingValue = CAFFEINE_CACHE) + public CacheService caffeineCacheService() { + return new CaffeineCacheServiceImpl(); + } + +} diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/cache/cache/service/CacheService.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/cache/cache/service/CacheService.java new file mode 100644 index 00000000..c883386e --- /dev/null +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/cache/cache/service/CacheService.java @@ -0,0 +1,34 @@ +package net.lab1024.sa.base.module.support.cache.cache.service; + +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 缓存服务 + * + * @Author 1024创新实验室: 罗伊 + * @Date 2021/10/11 20:07 + * @Wechat zhuoda1024 + * @Email lab1024@163.com + * @Copyright 1024创新实验室 + */ +@Service +public interface CacheService { + + /** + * 获取所有缓存名称 + */ + List cacheNames(); + + /** + * 某个缓存下的所有 key + */ + List cacheKey(String cacheName); + + /** + * 移除某个 key + */ + void removeCache(String cacheName); + +} diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/cache/CacheService.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/cache/cache/service/CaffeineCacheServiceImpl.java similarity index 84% rename from smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/cache/CacheService.java rename to smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/cache/cache/service/CaffeineCacheServiceImpl.java index 16326aa0..2f18a782 100644 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/cache/CacheService.java +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/cache/cache/service/CaffeineCacheServiceImpl.java @@ -1,11 +1,10 @@ -package net.lab1024.sa.base.module.support.cache; +package net.lab1024.sa.base.module.support.cache.cache.service; import com.google.common.collect.Lists; import net.lab1024.sa.base.constant.ReloadConst; import net.lab1024.sa.base.module.support.reload.core.annoation.SmartReload; import org.springframework.cache.caffeine.CaffeineCache; import org.springframework.cache.caffeine.CaffeineCacheManager; -import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.Collection; @@ -14,32 +13,31 @@ import java.util.Set; import java.util.stream.Collectors; /** - * 缓存操作 + * caffeine 缓存实现 * * @Author 1024创新实验室: 罗伊 * @Date 2021/10/11 20:07 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 + * @Copyright 1024创新实验室 */ -@Service -public class CacheService { +public class CaffeineCacheServiceImpl implements CacheService { @Resource private CaffeineCacheManager caffeineCacheManager; /** * 获取所有缓存名称 - * */ + @Override public List cacheNames() { return Lists.newArrayList(caffeineCacheManager.getCacheNames()); } /** - * 某个缓存下的所有key - * + * 某个缓存下的所有 key */ + @Override public List cacheKey(String cacheName) { CaffeineCache cache = (CaffeineCache) caffeineCacheManager.getCache(cacheName); if (cache == null) { @@ -50,10 +48,9 @@ public class CacheService { } /** - * 移除某个key - * + * 移除某个 key */ - + @Override public void removeCache(String cacheName) { CaffeineCache cache = (CaffeineCache) caffeineCacheManager.getCache(cacheName); if (cache != null) { diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/cache/cache/service/RedisCacheServiceImpl.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/cache/cache/service/RedisCacheServiceImpl.java new file mode 100644 index 00000000..5a1a7e36 --- /dev/null +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/cache/cache/service/RedisCacheServiceImpl.java @@ -0,0 +1,86 @@ +package net.lab1024.sa.base.module.support.cache.cache.service; + +import cn.hutool.core.util.StrUtil; +import com.google.common.collect.Lists; +import net.lab1024.sa.base.constant.ReloadConst; +import net.lab1024.sa.base.module.support.reload.core.annoation.SmartReload; +import org.springframework.data.redis.cache.RedisCache; +import org.springframework.data.redis.cache.RedisCacheManager; +import org.springframework.data.redis.connection.RedisConnection; +import org.springframework.data.redis.connection.RedisConnectionFactory; + +import javax.annotation.Resource; +import java.util.Collection; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + +/** + * redis 缓存实现 + * + * @author zhoumingfa + * @date 2025/3/28 + */ +public class RedisCacheServiceImpl implements CacheService { + + @Resource + private RedisCacheManager redisCacheManager; + + @Resource + private RedisConnectionFactory redisConnectionFactory; + + /** + * 获取所有缓存名称 + */ + @Override + public List cacheNames() { + return Lists.newArrayList(redisCacheManager.getCacheNames()); + } + + /** + * 某个缓存下的所有 key + */ + @Override + public List cacheKey(String cacheName) { + RedisCache cache = (RedisCache) redisCacheManager.getCache(cacheName); + if (cache == null) { + return Lists.newArrayList(); + } + // 获取 Redis 连接 + RedisConnection connection = redisConnectionFactory.getConnection(); + // 根据指定的 key 模式获取所有匹配的键 + Set keys = connection.keyCommands().keys((cacheName + ":*").getBytes()); + + if (keys != null) { + return keys.stream().map(key -> { + String redisKey = StrUtil.str(key, "utf-8"); + // 从 Redis 键中提取出最后一个冒号后面的字符串作为真正的键 + return redisKey.substring(redisKey.lastIndexOf(":") + 1); + }).collect(Collectors.toList()); + } + connection.close(); + return Lists.newArrayList(cacheName); + } + + /** + * 移除某个 key + */ + @Override + public void removeCache(String cacheName) { + RedisCache cache = (RedisCache) redisCacheManager.getCache(cacheName); + if (cache != null) { + cache.clear(); + } + } + + @SmartReload(ReloadConst.CACHE_SERVICE) + public void clearAllCache() { + Collection cacheNames = redisCacheManager.getCacheNames(); + for (String name : cacheNames) { + RedisCache cache = (RedisCache) redisCacheManager.getCache(name); + if (cache != null) { + cache.clear(); + } + } + } +} diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/service/DictCacheService.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/service/DictCacheService.java index 7279cbdb..4f7a12bc 100644 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/service/DictCacheService.java +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/service/DictCacheService.java @@ -107,16 +107,14 @@ public class DictCacheService { return null; } - List dictValueVOList = DICT_CACHE.get(valueCode); + List dictValueVOList = DICT_CACHE.get(keyCode); if (CollectionUtils.isEmpty(dictValueVOList)) { return null; } Optional option = dictValueVOList.stream().filter(e->e.getValueCode().equals(valueCode)).findFirst(); - if(option.isPresent()){ - return option.get(); - } - return null; + return option.orElse(null); } + public String selectValueNameByValueCodeSplit(String keyCode, String valueCodes) { if (StrUtil.isEmpty(valueCodes)) { return ""; diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/resources/mapper/support/FeedbackMapper.xml b/smart-admin-api-java8-springboot2/sa-base/src/main/resources/mapper/support/FeedbackMapper.xml index db34a5ed..1cc90cb0 100644 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/resources/mapper/support/FeedbackMapper.xml +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/resources/mapper/support/FeedbackMapper.xml @@ -9,7 +9,7 @@ AND ( INSTR(feedback_content,#{query.searchWord}) - OR INSTR(create_name,#{query.searchWord}) + OR INSTR(user_name,#{query.searchWord}) ) diff --git a/smart-admin-web-javascript/src/components/dict-preview/index.vue b/smart-admin-web-javascript/src/components/dict-preview/index.vue index 30762b22..64204910 100644 --- a/smart-admin-web-javascript/src/components/dict-preview/index.vue +++ b/smart-admin-web-javascript/src/components/dict-preview/index.vue @@ -1,11 +1,6 @@ @@ -21,8 +16,11 @@ // 当前的值 value: [Number, String, Array], }); - const values = computed(() => { - if (props.value === null || typeof props.value === 'undefined' || props.value === '') return []; - return Array.isArray(props.value) ? props.value.map((item) => item.valueCode) : props.value.split(','); + const dictValueName = computed(() => { + if (props.value === null || typeof props.value === 'undefined' || props.value === '') return ''; + const valueCodeList = Array.isArray(props.value) ? props.value.map((item) => item.valueCode) : props.value.split(','); + const valueNameList = props.options.filter((item) => valueCodeList.includes(item.valueCode)).map((item) => item.valueName); + + return valueNameList.join(','); }); diff --git a/smart-admin-web-javascript/src/views/business/erp/goods/goods-list.vue b/smart-admin-web-javascript/src/views/business/erp/goods/goods-list.vue index 39f793b1..15b01a1f 100644 --- a/smart-admin-web-javascript/src/views/business/erp/goods/goods-list.vue +++ b/smart-admin-web-javascript/src/views/business/erp/goods/goods-list.vue @@ -120,7 +120,7 @@ {{ text }}