From 3dd0bdcd62010de3c2a9b1a3b8d21d352e5f4578 Mon Sep 17 00:00:00 2001 From: thinkgem Date: Fri, 10 Oct 2025 11:12:59 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BC=93=E5=AD=98=E5=B7=A5=E5=85=B7=20CacheUti?= =?UTF-8?q?ls=20=E5=A2=9E=E5=8A=A0=20computeIfAbsent=20=E7=AE=80=E5=8C=96?= =?UTF-8?q?=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ai/service/CacheChatMemoryRepository.java | 3 +- .../cms/ai/service/CmsAiChatService.java | 6 +- .../modules/cms/service/ArticleService.java | 3 +- .../jeesite/modules/cms/utils/CmsUtils.java | 76 ++++++++++--------- .../jeesite/modules/sys/utils/AreaUtils.java | 13 +--- .../jeesite/modules/sys/utils/EmpUtils.java | 50 ++++++------ 6 files changed, 75 insertions(+), 76 deletions(-) diff --git a/modules/cms-ai/src/main/java/com/jeesite/modules/cms/ai/service/CacheChatMemoryRepository.java b/modules/cms-ai/src/main/java/com/jeesite/modules/cms/ai/service/CacheChatMemoryRepository.java index d8d51d31..b9540218 100644 --- a/modules/cms-ai/src/main/java/com/jeesite/modules/cms/ai/service/CacheChatMemoryRepository.java +++ b/modules/cms-ai/src/main/java/com/jeesite/modules/cms/ai/service/CacheChatMemoryRepository.java @@ -28,8 +28,7 @@ public class CacheChatMemoryRepository implements ChatMemoryRepository { @Override public @NotNull List findByConversationId(@NotNull String conversationId) { - List all = CacheUtils.get(CMS_CHAT_MSG_CACHE, conversationId); - return all != null ? all : List.of(); + return CacheUtils.computeIfAbsent(CMS_CHAT_MSG_CACHE, conversationId, k -> List.of()); } @Override diff --git a/modules/cms-ai/src/main/java/com/jeesite/modules/cms/ai/service/CmsAiChatService.java b/modules/cms-ai/src/main/java/com/jeesite/modules/cms/ai/service/CmsAiChatService.java index a60b63ea..f7995275 100644 --- a/modules/cms-ai/src/main/java/com/jeesite/modules/cms/ai/service/CmsAiChatService.java +++ b/modules/cms-ai/src/main/java/com/jeesite/modules/cms/ai/service/CmsAiChatService.java @@ -85,11 +85,7 @@ public class CmsAiChatService extends BaseService { } public Map> getChatCacheMap() { - Map> cache = CacheUtils.get(CMS_CHAT_CACHE, getChatCacheKey()); - if (cache == null) { - cache = MapUtils.newHashMap(); - } - return cache; + return CacheUtils.computeIfAbsent(CMS_CHAT_CACHE, getChatCacheKey(), k -> MapUtils.newHashMap()); } /** diff --git a/modules/cms/src/main/java/com/jeesite/modules/cms/service/ArticleService.java b/modules/cms/src/main/java/com/jeesite/modules/cms/service/ArticleService.java index a35d237d..a179f440 100644 --- a/modules/cms/src/main/java/com/jeesite/modules/cms/service/ArticleService.java +++ b/modules/cms/src/main/java/com/jeesite/modules/cms/service/ArticleService.java @@ -120,8 +120,7 @@ public class ArticleService extends CrudService { public void updateExpiredWeight(Article article) { // 更新过期的权重,间隔为“6”个小时 Date updateExpiredWeightDate = CmsUtils.getCache("updateExpiredWeightDateByArticle"); - if (updateExpiredWeightDate == null || (updateExpiredWeightDate != null - && updateExpiredWeightDate.getTime() < System.currentTimeMillis())) { + if (updateExpiredWeightDate == null || updateExpiredWeightDate.getTime() < System.currentTimeMillis()) { article.setWeightDate(new Date()); dao.updateExpiredWeight(article); CmsUtils.putCache("updateExpiredWeightDateByArticle", DateUtils.addHours(new Date(), 6)); diff --git a/modules/cms/src/main/java/com/jeesite/modules/cms/utils/CmsUtils.java b/modules/cms/src/main/java/com/jeesite/modules/cms/utils/CmsUtils.java index 30ba4540..3581f693 100644 --- a/modules/cms/src/main/java/com/jeesite/modules/cms/utils/CmsUtils.java +++ b/modules/cms/src/main/java/com/jeesite/modules/cms/utils/CmsUtils.java @@ -20,10 +20,10 @@ import com.jeesite.modules.cms.service.CategoryService; import com.jeesite.modules.cms.service.SiteService; import org.springframework.ui.Model; -import jakarta.servlet.ServletContext; import java.util.Collections; import java.util.List; import java.util.Map; +import java.util.function.Function; /** * CmsUtils @@ -69,13 +69,8 @@ public class CmsUtils { * 获得站点列表 */ public static List getSiteList() { - @SuppressWarnings("unchecked") - List siteList = (List) getCache("siteList"); - if (siteList == null) { - siteList = Static.siteService.findList(new Site()); - putCache("siteList", siteList); - } - return siteList; + return CmsUtils.computeIfAbsentCache("siteList", k -> + Static.siteService.findList(new Site())); } /** @@ -83,23 +78,18 @@ public class CmsUtils { * @param siteCode 站点编号 */ public static List getMainNavList(String siteCode) { - @SuppressWarnings("unchecked") - List mainNavList = (List) getCache("mainNavList_" + siteCode); - if (mainNavList == null) { + return CmsUtils.computeIfAbsentCache("mainNavList_" + siteCode, k -> { Category category = new Category(); category.setSite(new Site(siteCode)); category.setParent(new Category(Category.ROOT_CODE)); category.setInMenu(Global.SHOW); - mainNavList = Static.categoryService.findList(category); - putCache("mainNavList_" + siteCode, mainNavList); - } - return mainNavList; + return Static.categoryService.findList(category); + }); } /** * 获取栏目 * @param categoryCode 栏目编号 - * @return */ public static Category getCategory(String categoryCode) { return Static.categoryService.get(categoryCode); @@ -237,8 +227,6 @@ public class CmsUtils { /** * 获得文章动态URL地址 - * @param article - * @return url */ public static String getUrlDynamic(Article article) { StringBuilder str = new StringBuilder(); @@ -259,8 +247,6 @@ public class CmsUtils { /** * 获得栏目动态URL地址 - * @param category - * @return url */ public static String getUrlDynamic(Category category) { StringBuilder str = new StringBuilder(); @@ -279,8 +265,6 @@ public class CmsUtils { /** * 获得站点动态URL地址 - * @param site - * @return url */ public static String getUrlDynamic(Site site) { StringBuilder str = new StringBuilder(); @@ -299,8 +283,6 @@ public class CmsUtils { /** * 获得栏目动态URL地址 - * @param category - * @return url */ public static String getAdminUrlDynamic(Category category) { StringBuilder str = new StringBuilder(); @@ -381,8 +363,6 @@ public class CmsUtils { /** * 从图片地址中去除ContextPath地址 - * @param src - * @return */ public static String formatImageSrcToDb(String src) { if (StringUtils.isBlank(src)) { @@ -397,8 +377,6 @@ public class CmsUtils { /** * 从图片地址中加入ContextPath地址 - * @param src - * @return */ public static String formatImageSrcToWeb(String src) { if (StringUtils.isBlank(src)) { @@ -413,8 +391,6 @@ public class CmsUtils { /** * 获取文章视图 - * @param article - * @return */ public static String getArticleView(Article article) { if (StringUtils.isBlank(article.getCustomContentView())) { @@ -441,8 +417,6 @@ public class CmsUtils { /** * 视图配置属性设置 - * @param model - * @param params */ public static void addViewConfigAttribute(Model model, String params) { if (StringUtils.isNotBlank(params)) { @@ -458,8 +432,6 @@ public class CmsUtils { /** * 视图配置属性设置 - * @param model - * @param category */ public static void addViewConfigAttribute(Model model, Category category) { List categoryList = ListUtils.newArrayList(); @@ -481,31 +453,67 @@ public class CmsUtils { } } + /** + * 获取站点服务 + */ public static SiteService getSiteService() { return Static.siteService; } + /** + * 获取栏目服务 + */ public static CategoryService getCategoryService() { return Static.categoryService; } + /** + * 获取文章服务 + */ public static ArticleService getArticleService() { return Static.articleService; } + /** + * 获取缓存值 + * @param key 缓存键 + */ public static V getCache(String key) { return CacheUtils.get(CMS_CACHE, key); } + /** + * 获取缓存值 + * @param key 缓存键 + * @param defaultValue 默认值 + */ public static V getCache(String key, V defaultValue) { V value = CacheUtils.get(CMS_CACHE, key); return value != null ? value : defaultValue; } + /** + * 设置缓存值 + * @param key 缓存键 + * @param value 缓存值 + */ public static void putCache(String key, Object value) { CacheUtils.put(CMS_CACHE, key, value); } + /** + * 获取缓存,如果不存在,则设置新值 + * @param key 缓存键 + * @param mappingFunction 新值 + */ + public static V computeIfAbsentCache(String key, Function mappingFunction) { + return CacheUtils.computeIfAbsent(CMS_CACHE, key, mappingFunction); + } + + /** + * 移除缓存值 + * @param key 缓存键 + */ public static void removeCache(String key) { CacheUtils.remove(CMS_CACHE, key); } diff --git a/modules/core/src/main/java/com/jeesite/modules/sys/utils/AreaUtils.java b/modules/core/src/main/java/com/jeesite/modules/sys/utils/AreaUtils.java index 6e3ff6db..1006694e 100644 --- a/modules/core/src/main/java/com/jeesite/modules/sys/utils/AreaUtils.java +++ b/modules/core/src/main/java/com/jeesite/modules/sys/utils/AreaUtils.java @@ -4,12 +4,12 @@ */ package com.jeesite.modules.sys.utils; -import java.util.List; - import com.jeesite.common.utils.SpringUtils; import com.jeesite.modules.sys.entity.Area; import com.jeesite.modules.sys.service.AreaService; +import java.util.List; + /** * * @author ThinkGem @@ -29,15 +29,10 @@ public class AreaUtils { /** * 获取所有区域列表(系统级别缓存) - * @return */ public static List getAreaAllList(){ - List areaList = SysCacheUtils.get(CACHE_AREA_ALL_LIST); - if (areaList == null){ - areaList = Static.areaService.findList(new Area()); - SysCacheUtils.put(CACHE_AREA_ALL_LIST, areaList); - } - return areaList; + return SysCacheUtils.computeIfAbsentCache(CACHE_AREA_ALL_LIST, k -> + Static.areaService.findList(new Area())); } /** diff --git a/modules/core/src/main/java/com/jeesite/modules/sys/utils/EmpUtils.java b/modules/core/src/main/java/com/jeesite/modules/sys/utils/EmpUtils.java index a084ba14..6cdef688 100644 --- a/modules/core/src/main/java/com/jeesite/modules/sys/utils/EmpUtils.java +++ b/modules/core/src/main/java/com/jeesite/modules/sys/utils/EmpUtils.java @@ -107,12 +107,8 @@ public class EmpUtils { * @author ThinkGem */ public static List getEmployeeOfficeList(){ - List list = UserUtils.getCache(CACHE_EMPLOYEE_OFFICE_LIST); - if (list == null){ - list = Static.employeeService.findEmployeeOfficeList(getEmployee()); - UserUtils.putCache(CACHE_EMPLOYEE_OFFICE_LIST, list); - } - return list; + return UserUtils.computeIfAbsentCache(CACHE_EMPLOYEE_OFFICE_LIST, k -> + Static.employeeService.findEmployeeOfficeList(getEmployee())); } /** @@ -143,14 +139,19 @@ public class EmpUtils { * @author ThinkGem */ public static List getOfficeAllList(){ - List officeList = CorpUtils.getCache(CACHE_OFFICE_ALL_LIST); - if (officeList == null){ +// List officeList = CorpUtils.getCache(CACHE_OFFICE_ALL_LIST); +// if (officeList == null){ +// Office where = new Office(); +// where.setStatus(Office.STATUS_NORMAL); +// officeList = Static.officeService.findList(where); +// CorpUtils.putCache(CACHE_OFFICE_ALL_LIST, officeList); +// } +// return officeList; + return CorpUtils.computeIfAbsentCache(CACHE_OFFICE_ALL_LIST, k -> { Office where = new Office(); where.setStatus(Office.STATUS_NORMAL); - officeList = Static.officeService.findList(where); - CorpUtils.putCache(CACHE_OFFICE_ALL_LIST, officeList); - } - return officeList; + return Static.officeService.findList(where); + }); } /** @@ -304,14 +305,19 @@ public class EmpUtils { * @author ThinkGem */ public static List getCompanyAllList(){ - List companyList = CorpUtils.getCache(CACHE_COMPANY_ALL_LIST); - if (companyList == null){ +// List companyList = CorpUtils.getCache(CACHE_COMPANY_ALL_LIST); +// if (companyList == null){ +// Company where = new Company(); +// where.setStatus(Office.STATUS_NORMAL); +// companyList = Static.companyService.findList(where); +// CorpUtils.putCache(CACHE_COMPANY_ALL_LIST, companyList); +// } +// return companyList; + return CorpUtils.computeIfAbsentCache(CACHE_COMPANY_ALL_LIST, k -> { Company where = new Company(); where.setStatus(Office.STATUS_NORMAL); - companyList = Static.companyService.findList(where); - CorpUtils.putCache(CACHE_COMPANY_ALL_LIST, companyList); - } - return companyList; + return Static.companyService.findList(where); + }); } /** @@ -351,12 +357,8 @@ public class EmpUtils { * @return */ public static List getEmployeePostList(){ - List list = UserUtils.getCache(CACHE_EMPLOYEE_POST_LIST); - if (list == null){ - list = getEmployeePostList(getEmployee().getEmpCode()); - UserUtils.putCache(CACHE_EMPLOYEE_POST_LIST, list); - } - return list; + return UserUtils.computeIfAbsentCache(CACHE_EMPLOYEE_POST_LIST, k -> + getEmployeePostList(getEmployee().getEmpCode())); } /**