mirror of
https://gitee.com/liweiyi/ChestnutCMS.git
synced 2025-12-07 08:58:23 +08:00
修正customDynamicPageLink()获取自定义动态模板页面数据异常
This commit is contained in:
parent
582c7bdc06
commit
175c582608
@ -0,0 +1,55 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2022-2024 兮玥(190785909@qq.com)
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
package com.chestnut.cms.dynamic.listener;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import com.chestnut.cms.dynamic.domain.CmsDynamicPage;
|
||||||
|
import com.chestnut.cms.dynamic.service.IDynamicPageService;
|
||||||
|
import com.chestnut.common.async.AsyncTaskManager;
|
||||||
|
import com.chestnut.contentcore.domain.CmsSite;
|
||||||
|
import com.chestnut.contentcore.listener.event.BeforeSiteDeleteEvent;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.context.event.EventListener;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
@Slf4j
|
||||||
|
@Component
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
public class DynamicListener {
|
||||||
|
|
||||||
|
private final IDynamicPageService dynamicPageService;
|
||||||
|
|
||||||
|
@EventListener
|
||||||
|
public void beforeSiteDelete(BeforeSiteDeleteEvent event) {
|
||||||
|
CmsSite site = event.getSite();
|
||||||
|
int pageSize = 500;
|
||||||
|
try {
|
||||||
|
// 删除友链数据
|
||||||
|
long total = this.dynamicPageService
|
||||||
|
.count(new LambdaQueryWrapper<CmsDynamicPage>().eq(CmsDynamicPage::getSiteId, site.getSiteId()));
|
||||||
|
for (long i = 0; i * pageSize < total; i++) {
|
||||||
|
AsyncTaskManager.setTaskProgressInfo((int) (i * pageSize * 100 / total),
|
||||||
|
"正在删除自定义动态模板页面数据:" + (i * pageSize) + "/" + total);
|
||||||
|
this.dynamicPageService.remove(new LambdaQueryWrapper<CmsDynamicPage>().eq(CmsDynamicPage::getSiteId, site.getSiteId())
|
||||||
|
.last("limit " + pageSize));
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
AsyncTaskManager.addErrMessage("删除自定义动态模板页面数据错误:" + e.getMessage());
|
||||||
|
log.error("Delete dynamic page failed on site[{}] delete.", site.getSiteId());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -15,8 +15,10 @@
|
|||||||
*/
|
*/
|
||||||
package com.chestnut.cms.dynamic.service.impl;
|
package com.chestnut.cms.dynamic.service.impl;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.chestnut.cms.dynamic.core.IDynamicPageInitData;
|
import com.chestnut.cms.dynamic.core.IDynamicPageInitData;
|
||||||
import com.chestnut.cms.dynamic.domain.CmsDynamicPage;
|
import com.chestnut.cms.dynamic.domain.CmsDynamicPage;
|
||||||
|
import com.chestnut.cms.dynamic.mapper.CmsDynamicPageMapper;
|
||||||
import com.chestnut.common.redis.RedisCache;
|
import com.chestnut.common.redis.RedisCache;
|
||||||
import com.chestnut.contentcore.config.CMSConfig;
|
import com.chestnut.contentcore.config.CMSConfig;
|
||||||
import com.chestnut.contentcore.core.IDynamicPageType;
|
import com.chestnut.contentcore.core.IDynamicPageType;
|
||||||
@ -34,13 +36,14 @@ public class DynamicPageHelper {
|
|||||||
|
|
||||||
private static final String CACHE_PREFIX = CMSConfig.CachePrefix + "dynamic_page:";
|
private static final String CACHE_PREFIX = CMSConfig.CachePrefix + "dynamic_page:";
|
||||||
|
|
||||||
|
|
||||||
private final RedisCache redisCache;
|
private final RedisCache redisCache;
|
||||||
|
|
||||||
private final Map<String, IDynamicPageInitData> dynamicPageInitDataMap;
|
private final Map<String, IDynamicPageInitData> dynamicPageInitDataMap;
|
||||||
|
|
||||||
private final Map<String, IDynamicPageType> dynamicPageTypeMap;
|
private final Map<String, IDynamicPageType> dynamicPageTypeMap;
|
||||||
|
|
||||||
|
private final CmsDynamicPageMapper dynamicPageMapper;
|
||||||
|
|
||||||
public IDynamicPageInitData getDynamicPageInitData(String type) {
|
public IDynamicPageInitData getDynamicPageInitData(String type) {
|
||||||
return dynamicPageInitDataMap.get(IDynamicPageInitData.BEAN_PREFIX + type);
|
return dynamicPageInitDataMap.get(IDynamicPageInitData.BEAN_PREFIX + type);
|
||||||
}
|
}
|
||||||
@ -50,7 +53,7 @@ public class DynamicPageHelper {
|
|||||||
if (Objects.nonNull(dynamicPageType)) {
|
if (Objects.nonNull(dynamicPageType)) {
|
||||||
return dynamicPageType.getRequestPath();
|
return dynamicPageType.getRequestPath();
|
||||||
}
|
}
|
||||||
CmsDynamicPage dynamicPage = getDynamicPage(siteId, code);
|
CmsDynamicPage dynamicPage = getDynamicPageByCode(siteId, code);
|
||||||
if (Objects.nonNull(dynamicPage)) {
|
if (Objects.nonNull(dynamicPage)) {
|
||||||
return dynamicPage.getPath();
|
return dynamicPage.getPath();
|
||||||
}
|
}
|
||||||
@ -67,10 +70,24 @@ public class DynamicPageHelper {
|
|||||||
this.redisCache.setCacheObject(CACHE_PREFIX + dynamicPage.getSiteId() + ":" + dynamicPage.getCode(), dynamicPage);
|
this.redisCache.setCacheObject(CACHE_PREFIX + dynamicPage.getSiteId() + ":" + dynamicPage.getCode(), dynamicPage);
|
||||||
}
|
}
|
||||||
|
|
||||||
public CmsDynamicPage getDynamicPage(Long siteId, String path) {
|
public CmsDynamicPage getDynamicPageByPath(Long siteId, String path) {
|
||||||
if (path.startsWith("/")) {
|
if (path.startsWith("/")) {
|
||||||
path = path.substring(1);
|
path = path.substring(1);
|
||||||
}
|
}
|
||||||
return redisCache.getCacheObject(CACHE_PREFIX + siteId + ":" + path);
|
LambdaQueryWrapper<CmsDynamicPage> q = new LambdaQueryWrapper<CmsDynamicPage>()
|
||||||
|
.eq(CmsDynamicPage::getSiteId, siteId)
|
||||||
|
.eq(CmsDynamicPage::getPath, path);
|
||||||
|
return redisCache.getCacheObject(CACHE_PREFIX + siteId + ":" + path, () ->
|
||||||
|
this.dynamicPageMapper.selectOne(q)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public CmsDynamicPage getDynamicPageByCode(Long siteId, String code) {
|
||||||
|
LambdaQueryWrapper<CmsDynamicPage> q = new LambdaQueryWrapper<CmsDynamicPage>()
|
||||||
|
.eq(CmsDynamicPage::getSiteId, siteId)
|
||||||
|
.eq(CmsDynamicPage::getCode, code);
|
||||||
|
return redisCache.getCacheObject(CACHE_PREFIX + siteId + ":" + code, () ->
|
||||||
|
this.dynamicPageMapper.selectOne(q)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -29,7 +29,6 @@ import com.chestnut.common.staticize.core.TemplateContext;
|
|||||||
import com.chestnut.common.utils.Assert;
|
import com.chestnut.common.utils.Assert;
|
||||||
import com.chestnut.common.utils.IdUtils;
|
import com.chestnut.common.utils.IdUtils;
|
||||||
import com.chestnut.common.utils.SpringUtils;
|
import com.chestnut.common.utils.SpringUtils;
|
||||||
import com.chestnut.contentcore.config.CMSConfig;
|
|
||||||
import com.chestnut.contentcore.domain.CmsSite;
|
import com.chestnut.contentcore.domain.CmsSite;
|
||||||
import com.chestnut.contentcore.service.ISiteService;
|
import com.chestnut.contentcore.service.ISiteService;
|
||||||
import com.chestnut.contentcore.service.ITemplateService;
|
import com.chestnut.contentcore.service.ITemplateService;
|
||||||
@ -56,8 +55,6 @@ import java.util.*;
|
|||||||
public class DynamicPageServiceImpl extends ServiceImpl<CmsDynamicPageMapper, CmsDynamicPage>
|
public class DynamicPageServiceImpl extends ServiceImpl<CmsDynamicPageMapper, CmsDynamicPage>
|
||||||
implements IDynamicPageService, CommandLineRunner {
|
implements IDynamicPageService, CommandLineRunner {
|
||||||
|
|
||||||
private static final String CACHE_PREFIX = CMSConfig.CachePrefix + "dynamic_page:";
|
|
||||||
|
|
||||||
private final ISiteService siteService;
|
private final ISiteService siteService;
|
||||||
|
|
||||||
private final ITemplateService templateService;
|
private final ITemplateService templateService;
|
||||||
@ -185,7 +182,7 @@ public class DynamicPageServiceImpl extends ServiceImpl<CmsDynamicPageMapper, Cm
|
|||||||
this.catchException("/", response, new RuntimeException("Site not found: " + siteId));
|
this.catchException("/", response, new RuntimeException("Site not found: " + siteId));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
CmsDynamicPage dynamicPage = dynamicPageHelper.getDynamicPage(siteId, requestURI);
|
CmsDynamicPage dynamicPage = dynamicPageHelper.getDynamicPageByPath(siteId, requestURI);
|
||||||
String template = dynamicPage.getTemplates().get(publishPipeCode);
|
String template = dynamicPage.getTemplates().get(publishPipeCode);
|
||||||
File templateFile = this.templateService.findTemplateFile(site, template, publishPipeCode);
|
File templateFile = this.templateService.findTemplateFile(site, template, publishPipeCode);
|
||||||
if (Objects.isNull(templateFile) || !templateFile.exists()) {
|
if (Objects.isNull(templateFile) || !templateFile.exists()) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user