diff --git a/modules/cms/src/main/java/com/jeesite/modules/cms/service/CategoryService.java b/modules/cms/src/main/java/com/jeesite/modules/cms/service/CategoryService.java index 94b8ce5a..a9700873 100644 --- a/modules/cms/src/main/java/com/jeesite/modules/cms/service/CategoryService.java +++ b/modules/cms/src/main/java/com/jeesite/modules/cms/service/CategoryService.java @@ -33,8 +33,6 @@ public class CategoryService extends TreeService { /** * 获取单条数据 - * @param category - * @return */ @Override public Category get(Category category) { @@ -52,8 +50,6 @@ public class CategoryService extends TreeService { /** * 查询列表数据 - * @param category - * @return */ @Override public List findList(Category category) { @@ -62,19 +58,15 @@ public class CategoryService extends TreeService { /** * 保存数据(插入或更新) - * @param category */ @Override @Transactional public void save(Category category) { super.save(category); - CmsUtils.removeCache("mainNavList_"+category.getSite().getId()); // 保存上传图片 FileUploadUtils.saveFileUpload(category, category.getId(), "category_image"); - // 清理首页、栏目和文章页面缓存 - if (pageCacheService != null) { - pageCacheService.clearCache(category); - } + // 清理栏目缓存 + clearCache(category); } /** @@ -89,27 +81,37 @@ public class CategoryService extends TreeService { /** * 更新状态 - * @param category */ @Override @Transactional public void updateStatus(Category category) { super.updateStatus(category); - // 清理首页、栏目和文章页面缓存 - if (pageCacheService != null) { - pageCacheService.clearCache(category); - } + // 清理栏目缓存 + clearCache(category); } /** * 删除数据 - * @param category */ @Override @Transactional public void delete(Category category) { category.sqlMap().markIdDelete(); super.delete(category); + // 清理栏目缓存 + clearCache(category); + } + + /** + * 清理栏目缓存 + */ + public void clearCache(Category category) { + // 清理栏目缓存 + CmsUtils.removeCache("category_" + category.getId()); + // 清理栏目列表缓存 + CmsUtils.removeCacheByKeyPrefix("categoryList_" + category.getSite().getId() + "_" + category.getParentCode() + "_"); + // 清理主导航缓存 + CmsUtils.removeCache("mainNavList_" + category.getSite().getId()); // 清理首页、栏目和文章页面缓存 if (pageCacheService != null) { pageCacheService.clearCache(category); diff --git a/modules/cms/src/main/java/com/jeesite/modules/cms/service/SiteService.java b/modules/cms/src/main/java/com/jeesite/modules/cms/service/SiteService.java index b638078a..924e2189 100644 --- a/modules/cms/src/main/java/com/jeesite/modules/cms/service/SiteService.java +++ b/modules/cms/src/main/java/com/jeesite/modules/cms/service/SiteService.java @@ -34,7 +34,6 @@ public class SiteService extends CrudService { /** * 获取单条数据 * @param site - * @return */ @Override public Site get(Site site) { @@ -45,7 +44,6 @@ public class SiteService extends CrudService { * 查询分页数据 * @param site 查询条件 * @param site page 分页对象 - * @return */ @Override public Page findPage(Site site) { @@ -54,19 +52,14 @@ public class SiteService extends CrudService { /** * 保存数据(插入或更新) - * @param site */ @Override @Transactional public void save(Site site) { super.save(site); - CmsUtils.removeCache("siteList"); - // 保存logo FileUploadUtils.saveFileUpload(site, site.getId(), "site_logo"); - // 清理首页、栏目和文章页面缓存 - if (pageCacheService != null) { - pageCacheService.clearCache(site); - } + // 清理站点缓存 + clearCache(site); } /** @@ -77,11 +70,8 @@ public class SiteService extends CrudService { @Transactional public void updateStatus(Site site) { super.updateStatus(site); - CmsUtils.removeCache("siteList"); - // 清理首页、栏目和文章页面缓存 - if (pageCacheService != null) { - pageCacheService.clearCache(site); - } + // 清理站点缓存 + clearCache(site); } /** @@ -93,11 +83,8 @@ public class SiteService extends CrudService { public void delete(Site site) { site.sqlMap().markIdDelete(); super.delete(site); - CmsUtils.removeCache("siteList"); - // 清理首页、栏目和文章页面缓存 - if (pageCacheService != null) { - pageCacheService.clearCache(site); - } + // 清理站点缓存 + clearCache(site); } // /** @@ -112,6 +99,26 @@ public class SiteService extends CrudService { // CmsUtils.removeCache("siteList"); // } + /** + * 清理站点缓存 + */ + public void clearCache(Site site) { + // 清理栏目缓存 + CmsUtils.removeCacheByKeyPrefix("category_"); + // 清理栏目列表缓存 + CmsUtils.removeCacheByKeyPrefix("categoryList_" + site.getId() + "_"); + // 清理主导航缓存 + CmsUtils.removeCache("mainNavList_" + site.getId()); + // 清理站点缓存 + CmsUtils.removeCache("site_" + site.getId()); + // 清理站点列表缓存 + CmsUtils.removeCache("siteList"); + // 清理首页、栏目和文章页面缓存 + if (pageCacheService != null) { + pageCacheService.clearCache(site); + } + } + /** * 重建索引 * @author ThinkGem 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 3581f693..62ceeb73 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 @@ -5,6 +5,7 @@ package com.jeesite.modules.cms.utils; import com.jeesite.common.cache.CacheUtils; +import com.jeesite.common.codec.Md5Utils; import com.jeesite.common.collect.ListUtils; import com.jeesite.common.config.Global; import com.jeesite.common.entity.Page; @@ -52,17 +53,14 @@ public class CmsUtils { * @param siteCode 站点编号 */ public static Site getSite(String siteCode) { - String code = Site.MAIN_SITE_CODE; - if (StringUtils.isNotBlank(siteCode)) { - code = siteCode; - } - // 根据编码获取站点 - for (Site site : getSiteList()) { - if (site.getSiteCode().equals(code)) { - return site; + String code = StringUtils.isNotBlank(siteCode) ? siteCode : Site.MAIN_SITE_CODE; + return CmsUtils.computeIfAbsentCache("site_" + code, k -> { + Site site = Static.siteService.get(code); + if (site == null) { + site = new Site(code); } - } - return new Site(code); + return site; + }); } /** @@ -92,7 +90,8 @@ public class CmsUtils { * @param categoryCode 栏目编号 */ public static Category getCategory(String categoryCode) { - return Static.categoryService.get(categoryCode); + return CmsUtils.computeIfAbsentCache("category_" + categoryCode, k -> + Static.categoryService.get(categoryCode)); } /** @@ -113,46 +112,49 @@ public class CmsUtils { if (StringUtils.isBlank(siteCode) || StringUtils.isBlank(parentCode)) { return ListUtils.newArrayList(); } - Page page = new Page<>(1, number, -1); - Category category = new Category(); - category.setSite(new Site(siteCode)); - category.setParentCode(parentCode); - Boolean isChildList = false; // 是否进行childList转换 - if (StringUtils.isNotBlank(params)) { - @SuppressWarnings({ "rawtypes" }) - Map map = JsonMapper.fromJson("{" + params.trim() + "}", Map.class); + String key = "categoryList_" + siteCode + "_" + parentCode + "_" + Md5Utils.md5(number + "_" + params); + return CmsUtils.computeIfAbsentCache(key, k -> { + Page page = new Page<>(1, number, -1); + Category category = new Category(); + category.setSite(new Site(siteCode)); + category.setParentCode(parentCode); + boolean isChildList = false; // 是否进行childList转换 + if (StringUtils.isNotBlank(params)) { + @SuppressWarnings({ "rawtypes" }) + Map map = JsonMapper.fromJson("{" + params.trim() + "}", Map.class); - // 获取的层级级别 - String sortGrades = ObjectUtils.toString(map.get("sortGrades")); - if (StringUtils.isNotBlank(sortGrades)) { + // 获取的层级级别 + String sortGrades = ObjectUtils.toString(map.get("sortGrades")); + if (StringUtils.isNotBlank(sortGrades)) { - // 如果设置了级别,则清理ParentCode,并使用ParentCodes进行查询 - category.setParentCode(null); + // 如果设置了级别,则清理ParentCode,并使用ParentCodes进行查询 + category.setParentCode(null); - // 如果是跟节点则不加入条件,代表查询全部,不是跟节点的时候获取指定节点的所有下级 - if (!Category.ROOT_CODE.equals(parentCode)) { - category.setParentCodes("%," + parentCode + ",%"); + // 如果是跟节点则不加入条件,代表查询全部,不是跟节点的时候获取指定节点的所有下级 + if (!Category.ROOT_CODE.equals(parentCode)) { + category.setParentCodes("%," + parentCode + ",%"); + } + + // 增加获取层次级别条件 + List sortGradeList = ListUtils.newArrayList(); + for (String s : StringUtils.splitComma(sortGrades)) { + sortGradeList.add(ObjectUtils.toInteger(s)); + } + category.setSortGradeList(sortGradeList); } - - // 增加获取层次级别条件 - List sortGradeList = ListUtils.newArrayList(); - for (String s : StringUtils.splitComma(sortGrades)) { - sortGradeList.add(ObjectUtils.toInteger(s)); - } - category.setSortGradeList(sortGradeList); + // 是否进行childList转换 + isChildList = ObjectUtils.toBoolean(map.get("isChildList")); } - // 是否进行childList转换 - isChildList = ObjectUtils.toBoolean(map.get("isChildList")); - } - category.setPage(page); - page = Static.categoryService.findPage(category); - // 进行childList转换 - if (isChildList) { - List sourceList = page.getList(); - List targetList = Static.categoryService.convertTreeList(sourceList, parentCode); - page.setList(targetList); - } - return page.getList(); + category.setPage(page); + page = Static.categoryService.findPage(category); + // 进行childList转换 + if (isChildList) { + List sourceList = page.getList(); + List targetList = Static.categoryService.convertTreeList(sourceList, parentCode); + page.setList(targetList); + } + return page.getList(); + }); } /** @@ -518,4 +520,12 @@ public class CmsUtils { CacheUtils.remove(CMS_CACHE, key); } + /** + * 根据key前缀从缓存中移除 + * @param key 缓存键 + */ + public static void removeCacheByKeyPrefix(String key) { + CacheUtils.removeByKeyPrefix(CMS_CACHE, key); + } + } \ No newline at end of file diff --git a/modules/cms/src/main/java/com/jeesite/modules/cms/web/ArticleController.java b/modules/cms/src/main/java/com/jeesite/modules/cms/web/ArticleController.java index 1eee1054..5fb00402 100644 --- a/modules/cms/src/main/java/com/jeesite/modules/cms/web/ArticleController.java +++ b/modules/cms/src/main/java/com/jeesite/modules/cms/web/ArticleController.java @@ -126,7 +126,7 @@ public class ArticleController extends BaseController { categoryParam.setSite(new Site(Site.getCurrentSiteCode())); categoryParam.setParentCode(article.getCategory().getCategoryCode()); List list = categoryService.findList(categoryParam); - if (list.size() > 0) { + if (!list.isEmpty()) { article.setCategory(null); // 不允许在父节点上添加文章 } else { article.setCategory(CmsUtils.getCategory(article.getCategory().getCategoryCode())); diff --git a/modules/cms/src/main/resources/views/modules/cms/siteForm.html b/modules/cms/src/main/resources/views/modules/cms/siteForm.html index 008aecaa..59806f5d 100644 --- a/modules/cms/src/main/resources/views/modules/cms/siteForm.html +++ b/modules/cms/src/main/resources/views/modules/cms/siteForm.html @@ -40,7 +40,7 @@
- <#form:input path="domain" maxlength="500" class="form-control" placeholder="www.jeesite.com"/> + <#form:input path="domain" maxlength="500" class="form-control" placeholder="https://jeesite.com"/>