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); + } + } + }