feat(system): 添加字典和菜单缓存清除接口,并优化字典的缓存逻辑

- 在 DictController 中添加清除字典缓存接口
- 在 MenuController 中添加清除菜单缓存接口
- 更新数据库变更脚本,添加相关权限
- 优化字典的缓存逻辑
This commit is contained in:
2025-03-12 22:11:38 +08:00
parent 2e76caa35e
commit 093d2d3c8a
6 changed files with 35 additions and 2 deletions

View File

@@ -16,7 +16,9 @@
package top.continew.admin.system.mapper;
import com.alicp.jetcache.anno.Cached;
import org.apache.ibatis.annotations.Param;
import top.continew.admin.common.constant.CacheConstants;
import top.continew.admin.system.model.entity.DictItemDO;
import top.continew.starter.data.mp.base.BaseMapper;
import top.continew.starter.extension.crud.model.resp.LabelValueResp;
@@ -37,5 +39,6 @@ public interface DictItemMapper extends BaseMapper<DictItemDO> {
* @param dictCode 字典编码
* @return 字典项列表
*/
@Cached(key = "#dictCode", name = CacheConstants.DICT_KEY_PREFIX)
List<LabelValueResp> listByDictCode(@Param("dictCode") String dictCode);
}

View File

@@ -19,9 +19,9 @@ package top.continew.admin.system.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ClassUtil;
import cn.hutool.core.util.StrUtil;
import com.alicp.jetcache.anno.Cached;
import jakarta.annotation.PostConstruct;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import top.continew.admin.common.constant.CacheConstants;
import top.continew.admin.system.mapper.DictItemMapper;
@@ -48,6 +48,7 @@ import java.util.stream.Collectors;
* @author Charles7c
* @since 2023/9/11 21:29
*/
@Slf4j
@Service
@RequiredArgsConstructor
public class DictItemServiceImpl extends BaseServiceImpl<DictItemMapper, DictItemDO, DictItemResp, DictItemResp, DictItemQuery, DictItemReq> implements DictItemService {
@@ -70,7 +71,6 @@ public class DictItemServiceImpl extends BaseServiceImpl<DictItemMapper, DictIte
}
@Override
@Cached(key = "#dictCode", name = CacheConstants.DICT_KEY_PREFIX)
public List<LabelValueResp> listByDictCode(String dictCode) {
return Optional.ofNullable(ENUM_DICT_CACHE.get(dictCode.toLowerCase()))
.orElseGet(() -> baseMapper.listByDictCode(dictCode));
@@ -129,5 +129,6 @@ public class DictItemServiceImpl extends BaseServiceImpl<DictItemMapper, DictIte
ENUM_DICT_CACHE.putAll(classSet.stream()
.collect(Collectors.toMap(cls -> StrUtil.toUnderlineCase(cls.getSimpleName())
.toLowerCase(), this::toEnumDict)));
log.debug("枚举字典已缓存到内存:{}", ENUM_DICT_CACHE.keySet());
}
}