From 080760174acb35463d8a0da5cf6f02925b4f5a5c Mon Sep 17 00:00:00 2001 From: stylefeng Date: Fri, 10 Jan 2025 16:05:50 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=908.3.3=E3=80=91=E3=80=90dict=E3=80=91?= =?UTF-8?q?=E3=80=90cache=E3=80=91=E5=88=A0=E9=99=A4=E5=92=8C=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E5=AD=97=E5=85=B8=E6=97=B6=E5=80=99=EF=BC=8C=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E7=BC=93=E5=AD=98=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../{ => dictname}/DictInfoMemoryCache.java | 2 +- .../{ => dictname}/DictInfoRedisCache.java | 2 +- .../dict/modular/service/DictService.java | 4 +-- .../modular/service/impl/DictServiceImpl.java | 32 ++++++++++++++++++- .../DictMemoryCacheAutoConfiguration.java | 2 +- .../DictRedisCacheAutoConfiguration.java | 2 +- 6 files changed, 36 insertions(+), 8 deletions(-) rename kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/cache/{ => dictname}/DictInfoMemoryCache.java (91%) rename kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/cache/{ => dictname}/DictInfoRedisCache.java (91%) diff --git a/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/cache/DictInfoMemoryCache.java b/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/cache/dictname/DictInfoMemoryCache.java similarity index 91% rename from kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/cache/DictInfoMemoryCache.java rename to kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/cache/dictname/DictInfoMemoryCache.java index cb55b7350..c3998935b 100644 --- a/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/cache/DictInfoMemoryCache.java +++ b/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/cache/dictname/DictInfoMemoryCache.java @@ -1,4 +1,4 @@ -package cn.stylefeng.roses.kernel.dict.modular.cache; +package cn.stylefeng.roses.kernel.dict.modular.cache.dictname; import cn.hutool.cache.impl.TimedCache; import cn.stylefeng.roses.kernel.cache.memory.AbstractMemoryCacheOperator; diff --git a/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/cache/DictInfoRedisCache.java b/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/cache/dictname/DictInfoRedisCache.java similarity index 91% rename from kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/cache/DictInfoRedisCache.java rename to kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/cache/dictname/DictInfoRedisCache.java index 7dec7a5e5..f41cdd0a8 100644 --- a/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/cache/DictInfoRedisCache.java +++ b/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/cache/dictname/DictInfoRedisCache.java @@ -1,4 +1,4 @@ -package cn.stylefeng.roses.kernel.dict.modular.cache; +package cn.stylefeng.roses.kernel.dict.modular.cache.dictname; import cn.stylefeng.roses.kernel.cache.redis.AbstractRedisCacheOperator; import cn.stylefeng.roses.kernel.dict.api.pojo.DictDetail; diff --git a/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/service/DictService.java b/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/service/DictService.java index ebc823a17..33d64a93a 100644 --- a/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/service/DictService.java +++ b/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/service/DictService.java @@ -66,7 +66,6 @@ public interface DictService extends IService, DictApi { */ void del(DictRequest dictRequest); - /** * 批量删除字典 * @@ -74,8 +73,7 @@ public interface DictService extends IService, DictApi { * @date 2023/07/04 10:29 */ void batchDelete(DictRequest dictRequest); - - + /** * 修改字典 * diff --git a/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/service/impl/DictServiceImpl.java b/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/service/impl/DictServiceImpl.java index 42a5ab3de..122152a8d 100644 --- a/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/service/impl/DictServiceImpl.java +++ b/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/service/impl/DictServiceImpl.java @@ -130,10 +130,12 @@ public class DictServiceImpl extends ServiceImpl implements @Override public void del(DictRequest dictRequest) { this.removeById(dictRequest.getDictId()); + + // 删除字典缓存 + this.dictInfoCache.remove(String.valueOf(dictRequest.getDictId())); } @Override - @Transactional(rollbackFor = Exception.class) public void edit(DictRequest dictRequest) { // 校验字典重复 @@ -151,6 +153,9 @@ public class DictServiceImpl extends ServiceImpl implements sysDict.setDictNamePinyin(pinYinApi.parseEveryPinyinFirstLetter(sysDict.getDictName())); this.updateById(sysDict); + + // 删除字典名称缓存 + this.dictInfoCache.remove(String.valueOf(sysDict.getDictId())); } @Override @@ -176,8 +181,22 @@ public class DictServiceImpl extends ServiceImpl implements @Override public void removeByDictTypeId(Long dictTypeId) { + + // 查询字典类型下的所有字典 LambdaQueryWrapper sysDictLambdaQueryWrapper = new LambdaQueryWrapper<>(); sysDictLambdaQueryWrapper.eq(SysDict::getDictTypeId, dictTypeId); + sysDictLambdaQueryWrapper.select(SysDict::getDictId); + List list = this.list(sysDictLambdaQueryWrapper); + if (ObjectUtil.isEmpty(list)) { + return; + } + + // 删除所有字典的缓存 + list.forEach(sysDict -> { + this.dictInfoCache.remove(String.valueOf(sysDict.getDictId())); + }); + + // 删除字典类型下的所有字典 this.remove(sysDictLambdaQueryWrapper); } @@ -286,6 +305,9 @@ public class DictServiceImpl extends ServiceImpl implements @Override public void deleteByDictId(Long dictId) { this.removeById(dictId); + + // 删除字典详情缓存 + this.dictInfoCache.remove(dictId.toString()); } @Override @@ -357,6 +379,9 @@ public class DictServiceImpl extends ServiceImpl implements // 更新字典 this.edit(dictRequest); + + // 删除字典详情缓存 + this.dictInfoCache.remove(String.valueOf(dictRequest.getDictId())); } @Override @@ -537,6 +562,11 @@ public class DictServiceImpl extends ServiceImpl implements @Override public void batchDelete(DictRequest dictRequest) { this.removeBatchByIds(dictRequest.getDictIdList()); + + // 循环删除缓存 + for (Long dictId : dictRequest.getDictIdList()) { + this.dictInfoCache.remove(dictId.toString()); + } } } diff --git a/kernel-s-dict/dict-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/dict/starter/DictMemoryCacheAutoConfiguration.java b/kernel-s-dict/dict-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/dict/starter/DictMemoryCacheAutoConfiguration.java index fb2421972..8cd646d8e 100644 --- a/kernel-s-dict/dict-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/dict/starter/DictMemoryCacheAutoConfiguration.java +++ b/kernel-s-dict/dict-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/dict/starter/DictMemoryCacheAutoConfiguration.java @@ -28,7 +28,7 @@ import cn.hutool.cache.CacheUtil; import cn.hutool.cache.impl.TimedCache; import cn.stylefeng.roses.kernel.cache.api.CacheOperatorApi; import cn.stylefeng.roses.kernel.dict.api.pojo.DictDetail; -import cn.stylefeng.roses.kernel.dict.modular.cache.DictInfoMemoryCache; +import cn.stylefeng.roses.kernel.dict.modular.cache.dictname.DictInfoMemoryCache; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; diff --git a/kernel-s-dict/dict-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/dict/starter/DictRedisCacheAutoConfiguration.java b/kernel-s-dict/dict-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/dict/starter/DictRedisCacheAutoConfiguration.java index e81f3b694..b79a9cb88 100644 --- a/kernel-s-dict/dict-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/dict/starter/DictRedisCacheAutoConfiguration.java +++ b/kernel-s-dict/dict-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/dict/starter/DictRedisCacheAutoConfiguration.java @@ -27,7 +27,7 @@ package cn.stylefeng.roses.kernel.dict.starter; import cn.stylefeng.roses.kernel.cache.api.CacheOperatorApi; import cn.stylefeng.roses.kernel.cache.redis.util.CreateRedisTemplateUtil; import cn.stylefeng.roses.kernel.dict.api.pojo.DictDetail; -import cn.stylefeng.roses.kernel.dict.modular.cache.DictInfoRedisCache; +import cn.stylefeng.roses.kernel.dict.modular.cache.dictname.DictInfoRedisCache; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration;