From a03d64b2ca351acf28950ab79cb86ba75fdaa032 Mon Sep 17 00:00:00 2001 From: stylefeng Date: Fri, 10 Jan 2025 18:27:41 +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=AD=97=E5=85=B8=E7=B1=BB=E5=9E=8B?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=EF=BC=8C=E6=B8=85=E7=A9=BA=E5=AD=97=E5=85=B8?= =?UTF-8?q?=E7=BC=93=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dict/modular/service/DictService.java | 16 +++ .../modular/service/impl/DictServiceImpl.java | 106 +++++++++--------- .../service/impl/DictTypeServiceImpl.java | 34 +++++- 3 files changed, 103 insertions(+), 53 deletions(-) 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 33d64a93a..c60052737 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 @@ -127,4 +127,20 @@ public interface DictService extends IService, DictApi { */ String getPinyin(String name); + /** + * 清空字典id对应的所有缓存 + * + * @author fengshuonan + * @since 2025/1/10 18:16 + */ + void deleteDictIdCaches(Long dictId); + + /** + * 清空字典对应的所有缓存 + * + * @author fengshuonan + * @since 2025/1/10 18:17 + */ + void deleteDictIdCaches(SysDict sysDict); + } 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 0cca5aea4..329ad4884 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 @@ -181,7 +181,7 @@ public class DictServiceImpl extends ServiceImpl implements LambdaQueryWrapper wrapper = this.createWrapper(dictRequest); // 只查询有用字段 - wrapper.select(SysDict::getDictName, SysDict::getDictCode, SysDict::getDictSort, SysDict::getDictId, SysDict::getDictParentId); + wrapper.select(SysDict::getDictId, SysDict::getDictTypeId, SysDict::getDictName, SysDict::getDictCode, SysDict::getDictSort, SysDict::getDictParentId); return this.list(wrapper); } @@ -498,6 +498,59 @@ public class DictServiceImpl extends ServiceImpl implements this.removeBatchByIds(dictRequest.getDictIdList()); } + /** + * 删除字典id对应的缓存,目前有3种缓存 + *

+ * 第一种:key是字典id + * 第二种:key是字典类型id + 字典编码 + * 第三种:key是字典类型编码 + 字典编码 + * + * @author fengshuonan + * @since 2025/1/10 18:02 + */ + @Override + public void deleteDictIdCaches(Long dictId) { + if (dictId == null) { + return; + } + + // 获取字典id的详情 + SysDict sysDict = this.getById(dictId); + if (sysDict == null) { + return; + } + this.deleteDictIdCaches(sysDict); + } + + /** + * 删除字典id对应的缓存,目前有3种缓存 + *

+ * 第一种:key是字典id + * 第二种:key是字典类型id + 字典编码 + * 第三种:key是字典类型编码 + 字典编码 + * + * @author fengshuonan + * @since 2025/1/10 18:02 + */ + @Override + public void deleteDictIdCaches(SysDict sysDict) { + if (sysDict == null) { + return; + } + + // 删除字典id为key的缓存 + this.dictInfoCache.remove(String.valueOf(sysDict.getDictId())); + + // 删除字典类型id+字典编码为缓存key的缓存 + this.dictNameMixedCache.remove(sysDict.getDictTypeId() + sysDict.getDictCode()); + + // 获取字典类型对应的字典编码 + SysDictType sysDictType = dictTypeService.getById(sysDict.getDictTypeId()); + if (sysDictType != null) { + this.dictNameMixedCache.remove(sysDictType.getDictTypeCode() + sysDict.getDictCode()); + } + } + /** * 获取详细信息 * @@ -613,55 +666,4 @@ public class DictServiceImpl extends ServiceImpl implements } } - /** - * 删除字典id对应的缓存,目前有3种缓存 - *

- * 第一种:key是字典id - * 第二种:key是字典类型id + 字典编码 - * 第三种:key是字典类型编码 + 字典编码 - * - * @author fengshuonan - * @since 2025/1/10 18:02 - */ - private void deleteDictIdCaches(Long dictId) { - if (dictId == null) { - return; - } - - // 获取字典id的详情 - SysDict sysDict = this.getById(dictId); - if (sysDict == null) { - return; - } - this.deleteDictIdCaches(sysDict); - } - - /** - * 删除字典id对应的缓存,目前有3种缓存 - *

- * 第一种:key是字典id - * 第二种:key是字典类型id + 字典编码 - * 第三种:key是字典类型编码 + 字典编码 - * - * @author fengshuonan - * @since 2025/1/10 18:02 - */ - private void deleteDictIdCaches(SysDict sysDict) { - if (sysDict == null) { - return; - } - - // 删除字典id为key的缓存 - this.dictInfoCache.remove(String.valueOf(sysDict.getDictId())); - - // 删除字典类型id+字典编码为缓存key的缓存 - this.dictNameMixedCache.remove(sysDict.getDictTypeId() + sysDict.getDictCode()); - - // 获取字典类型对应的字典编码 - SysDictType sysDictType = dictTypeService.getById(sysDict.getDictTypeId()); - if (sysDictType != null) { - this.dictNameMixedCache.remove(sysDictType.getDictTypeCode() + sysDict.getDictCode()); - } - } - } diff --git a/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/service/impl/DictTypeServiceImpl.java b/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/service/impl/DictTypeServiceImpl.java index 5b3bc36e3..4157c31c4 100644 --- a/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/service/impl/DictTypeServiceImpl.java +++ b/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/service/impl/DictTypeServiceImpl.java @@ -30,8 +30,10 @@ import cn.stylefeng.roses.kernel.auth.api.context.LoginContext; import cn.stylefeng.roses.kernel.dict.api.enums.DictTypeClassEnum; import cn.stylefeng.roses.kernel.dict.api.exception.DictException; import cn.stylefeng.roses.kernel.dict.api.exception.enums.DictExceptionEnum; +import cn.stylefeng.roses.kernel.dict.modular.entity.SysDict; import cn.stylefeng.roses.kernel.dict.modular.entity.SysDictType; import cn.stylefeng.roses.kernel.dict.modular.mapper.DictTypeMapper; +import cn.stylefeng.roses.kernel.dict.modular.pojo.request.DictRequest; import cn.stylefeng.roses.kernel.dict.modular.pojo.request.DictTypeRequest; import cn.stylefeng.roses.kernel.dict.modular.service.DictService; import cn.stylefeng.roses.kernel.dict.modular.service.DictTypeService; @@ -85,6 +87,9 @@ public class DictTypeServiceImpl extends ServiceImpl list = dictService.findList(dictRequest); + + // 删除掉这些字典的所有缓存 + for (SysDict sysDict : list) { + this.dictService.deleteDictIdCaches(sysDict); + } + } + }