mirror of
https://gitee.com/liweiyi/ChestnutCMS.git
synced 2025-12-06 16:38:24 +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;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.chestnut.cms.dynamic.core.IDynamicPageInitData;
|
||||
import com.chestnut.cms.dynamic.domain.CmsDynamicPage;
|
||||
import com.chestnut.cms.dynamic.mapper.CmsDynamicPageMapper;
|
||||
import com.chestnut.common.redis.RedisCache;
|
||||
import com.chestnut.contentcore.config.CMSConfig;
|
||||
import com.chestnut.contentcore.core.IDynamicPageType;
|
||||
@ -34,13 +36,14 @@ public class DynamicPageHelper {
|
||||
|
||||
private static final String CACHE_PREFIX = CMSConfig.CachePrefix + "dynamic_page:";
|
||||
|
||||
|
||||
private final RedisCache redisCache;
|
||||
|
||||
private final Map<String, IDynamicPageInitData> dynamicPageInitDataMap;
|
||||
|
||||
private final Map<String, IDynamicPageType> dynamicPageTypeMap;
|
||||
|
||||
private final CmsDynamicPageMapper dynamicPageMapper;
|
||||
|
||||
public IDynamicPageInitData getDynamicPageInitData(String type) {
|
||||
return dynamicPageInitDataMap.get(IDynamicPageInitData.BEAN_PREFIX + type);
|
||||
}
|
||||
@ -50,7 +53,7 @@ public class DynamicPageHelper {
|
||||
if (Objects.nonNull(dynamicPageType)) {
|
||||
return dynamicPageType.getRequestPath();
|
||||
}
|
||||
CmsDynamicPage dynamicPage = getDynamicPage(siteId, code);
|
||||
CmsDynamicPage dynamicPage = getDynamicPageByCode(siteId, code);
|
||||
if (Objects.nonNull(dynamicPage)) {
|
||||
return dynamicPage.getPath();
|
||||
}
|
||||
@ -67,10 +70,24 @@ public class DynamicPageHelper {
|
||||
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("/")) {
|
||||
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.IdUtils;
|
||||
import com.chestnut.common.utils.SpringUtils;
|
||||
import com.chestnut.contentcore.config.CMSConfig;
|
||||
import com.chestnut.contentcore.domain.CmsSite;
|
||||
import com.chestnut.contentcore.service.ISiteService;
|
||||
import com.chestnut.contentcore.service.ITemplateService;
|
||||
@ -56,8 +55,6 @@ import java.util.*;
|
||||
public class DynamicPageServiceImpl extends ServiceImpl<CmsDynamicPageMapper, CmsDynamicPage>
|
||||
implements IDynamicPageService, CommandLineRunner {
|
||||
|
||||
private static final String CACHE_PREFIX = CMSConfig.CachePrefix + "dynamic_page:";
|
||||
|
||||
private final ISiteService siteService;
|
||||
|
||||
private final ITemplateService templateService;
|
||||
@ -185,7 +182,7 @@ public class DynamicPageServiceImpl extends ServiceImpl<CmsDynamicPageMapper, Cm
|
||||
this.catchException("/", response, new RuntimeException("Site not found: " + siteId));
|
||||
return;
|
||||
}
|
||||
CmsDynamicPage dynamicPage = dynamicPageHelper.getDynamicPage(siteId, requestURI);
|
||||
CmsDynamicPage dynamicPage = dynamicPageHelper.getDynamicPageByPath(siteId, requestURI);
|
||||
String template = dynamicPage.getTemplates().get(publishPipeCode);
|
||||
File templateFile = this.templateService.findTemplateFile(site, template, publishPipeCode);
|
||||
if (Objects.isNull(templateFile) || !templateFile.exists()) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user