Commit 0f4dcbda authored by 他是超人他会飞's avatar 他是超人他会飞 Committed by 铭飞

!153 添加分页类

Merge pull request !153 from 他是超人他会飞/4.7.0
parents a15269e6 1859f695
This diff is collapsed.
This diff is collapsed.
......@@ -36,20 +36,20 @@ import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.PageUtil;
import freemarker.core.ParseException;
import freemarker.template.MalformedTemplateNameException;
import freemarker.template.TemplateNotFoundException;
import net.mingsoft.basic.biz.IColumnBiz;
import net.mingsoft.basic.entity.ColumnEntity;
import net.mingsoft.basic.util.BasicUtil;
import net.mingsoft.cms.bean.ColumnArticleIdBean;
import net.mingsoft.cms.biz.IArticleBiz;
import net.mingsoft.cms.constant.ModelCode;
import net.mingsoft.cms.entity.ArticleEntity;
import net.mingsoft.cms.util.CmsParserUtil;
import net.mingsoft.mdiy.bean.PageBean;
import net.mingsoft.mdiy.biz.IPageBiz;
import net.mingsoft.mdiy.entity.PageEntity;
import freemarker.core.ParseException;
import freemarker.template.MalformedTemplateNameException;
import freemarker.template.TemplateNotFoundException;
import net.mingsoft.basic.util.BasicUtil;
import net.mingsoft.mdiy.util.ParserUtil;
/**
......@@ -157,24 +157,27 @@ public class MCmsAction extends net.mingsoft.mdiy.action.BaseAction {
Map map = BasicUtil.assemblyRequestMap();
//获取栏目编号
int typeId = BasicUtil.getInt(ParserUtil.TYPE_ID,0);
int size = BasicUtil.getInt(ParserUtil.SIZE,10);
//获取文章总数
List<ColumnArticleIdBean> columnArticles = articleBiz.queryIdsByCategoryIdForParser(typeId, null, null);
//判断栏目下是否有文章
if(columnArticles.size()==0){
this.outJson(resp, null,false,getResString("err.empty", this.getResString("typeid")));
return;
this.outJson(resp, false);
}
//设置分页类
PageBean page = new PageBean();
int total = PageUtil.totalPage(columnArticles.size(), size);
map.put(ParserUtil.COLUMN, columnArticles.get(0));
//获取总数
map.put(ParserUtil.TOTAL, columnArticles.size());
map.put(ParserUtil.RCOUNT, BasicUtil.getInt(ParserUtil.SIZE,10));
page.setTotal(total);
//设置栏目编号
map.put(ParserUtil.TYPE_ID, typeId);
//设置列表当前页
map.put(ParserUtil.PAGE_NO, BasicUtil.getInt(ParserUtil.PAGE_NO,1));
map.put(ParserUtil.URL, BasicUtil.getUrl());
map.put(ParserUtil.PAGE, page);
//动态解析
map.put(ParserUtil.IS_DO,true);
//设置动态请求的模块路径
......
......@@ -40,30 +40,28 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.PageUtil;
import freemarker.core.ParseException;
import freemarker.template.MalformedTemplateNameException;
import freemarker.template.TemplateNotFoundException;
import net.mingsoft.base.constant.Const;
import net.mingsoft.basic.action.BaseAction;
import net.mingsoft.basic.biz.ICategoryBiz;
import net.mingsoft.basic.biz.IColumnBiz;
import net.mingsoft.basic.biz.IModelBiz;
import net.mingsoft.basic.entity.BaseEntity;
import net.mingsoft.basic.entity.ColumnEntity;
import net.mingsoft.basic.util.BasicUtil;
import net.mingsoft.basic.util.StringUtil;
import net.mingsoft.cms.biz.IArticleBiz;
import net.mingsoft.cms.util.CmsParserUtil;
import net.mingsoft.mdiy.bean.PageBean;
import net.mingsoft.mdiy.biz.IContentModelBiz;
import net.mingsoft.mdiy.biz.IContentModelFieldBiz;
import net.mingsoft.mdiy.biz.ISearchBiz;
import net.mingsoft.mdiy.entity.ContentModelEntity;
import net.mingsoft.mdiy.entity.ContentModelFieldEntity;
import net.mingsoft.mdiy.entity.SearchEntity;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.text.StrSpliter;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.PageUtil;
import freemarker.core.ParseException;
import freemarker.template.MalformedTemplateNameException;
import freemarker.template.TemplateNotFoundException;
import net.mingsoft.base.constant.Const;
import net.mingsoft.basic.util.BasicUtil;
import net.mingsoft.basic.util.StringUtil;
import net.mingsoft.mdiy.util.ParserUtil;
/**
......@@ -225,17 +223,17 @@ public class SearchAction extends BaseAction {
Map whereMap = this.searchMap(articleFieldName, diyFieldName, fieldList);
// 获取符合条件的文章总数
int count = articleBiz.getSearchCount(contentModel, whereMap, BasicUtil.getAppId(), null);
//设置分页类
PageBean page = new PageBean();
int size = BasicUtil.getInt(ParserUtil.SIZE,10);
int total = PageUtil.totalPage(count, size);
//获取总数
map.put(ParserUtil.TOTAL, total);
page.setTotal(total);
//设置页面显示数量
map.put(ParserUtil.RCOUNT, size);
map.put(ParserUtil.SIZE, size);
page.setSize(size);
//设置列表当前页
int pageNo = BasicUtil.getInt(ParserUtil.PAGE_NO,1);
map.put(ParserUtil.PAGE_NO, pageNo);
page.setPageNo(pageNo);
int next ,pre;
if(StringUtil.isBlank(pageNo) || pageNo==1){
//如果总页数等于1,下一页就是第一页,不等于就有第二页
......@@ -257,16 +255,17 @@ public class SearchAction extends BaseAction {
String lastUrl = url + pageNoStr + total;
//上一页
String preUrl = url + pageNoStr + pre;
map.put(ParserUtil.INDEX_URL, indexUrl);
map.put(ParserUtil.NEXT_URL, nextUrl);
map.put(ParserUtil.PRE_URL, preUrl);
map.put(ParserUtil.LAST_URL, lastUrl);
page.setIndexUrl(indexUrl);
page.setNextUrl(nextUrl);
page.setPreUrl(preUrl);
page.setLastUrl(lastUrl);
map.put(ParserUtil.URL, BasicUtil.getUrl());
map.put(ParserUtil.PAGE, page);
Map<Object, Object> searchMap = new HashMap<>();
searchMap.put(BASIC_TITLE, BasicUtil.getString(BASIC_TITLE));
searchMap.put(ParserUtil.PAGE_NO, BasicUtil.getInt(ParserUtil.PAGE_NO,1));
searchMap.put(ParserUtil.PAGE_NO, pageNo);
map.put(SEARCH, searchMap);
map.put(ParserUtil.PAGE, page);
//动态解析
map.put(ParserUtil.IS_DO,false);
//设置动态请求的模块路径
......
......@@ -48,15 +48,13 @@
<!-- 通过视图查询返回结果集 开始 -->
<resultMap type="net.mingsoft.cms.bean.ColumnArticleIdBean" id="resultMapBean">
<result column="ARTICLE_BASICID" property="articleId" />
<result column="column_listurl" property="columnListUrl"/><!-- 最终栏目列表地址 -->
<result column="column_path" property="columnPath"/>
<result column="column_url" property="columnUrl" />
<result column="category_title" property="categoryTitle" />
<result column="column_category_id" property="categoryId"/><!-- 与Category类别类绑定ID -->
<result column="category_parent_id" property="categoryParentId" /><!-- 关联表category的父类型编号 -->
<result column="category_id" property="categoryId" />
<result column="COLUMN_CM_ID" property="columnContentModelId" />
<result column="COLUMN_TYPE" property="columnType" />
<result column="category_parent_id" property="categoryParentId" /><!--关联表category的字典对应编号 -->
</resultMap>
<!-- 通过视图查询返回结果集 结束 -->
<!-- 通过视图查询返回结果集 开始 -->
......@@ -320,7 +318,7 @@
<!-- 根据站点编号、开始、结束时间和栏目编号查询文章编号集合 -->
<select id="queryIdsByCategoryIdForParser" resultMap="resultMapBean" >
select
ARTICLE_BASICID,cl.*,c.*
ARTICLE_BASICID,cl.*,c.category_parent_id
FROM cms_article a LEFT JOIN basic b ON a.ARTICLE_BASICID = b.BASIC_ID
LEFT JOIN basic_column cl ON b.BASIC_CATEGORYID = cl.COLUMN_CATEGORY_ID
JOIN category c ON c.CATEGORY_ID = cl.COLUMN_CATEGORY_ID
......
......@@ -22,6 +22,7 @@ import net.mingsoft.basic.util.BasicUtil;
import net.mingsoft.basic.util.SpringUtil;
import net.mingsoft.cms.bean.ColumnArticleIdBean;
import net.mingsoft.cms.constant.e.ColumnTypeEnum;
import net.mingsoft.mdiy.bean.PageBean;
import net.mingsoft.mdiy.biz.IContentModelBiz;
import net.mingsoft.mdiy.entity.ContentModelEntity;
import net.mingsoft.mdiy.parser.TagParser;
......@@ -78,11 +79,9 @@ public class CmsParserUtil extends ParserUtil {
// 文章的栏目模型编号
int columnContentModelId = column.getColumnContentModelId();
StringWriter writer = new StringWriter();
try {
// 为了分页添加column,判断栏目是否为父栏目
template.process(null, writer);
String content = writer.toString();
//获取列表页显示的文章数量
......@@ -90,7 +89,6 @@ public class CmsParserUtil extends ParserUtil {
//获取总数
int totalPageSize = PageUtil.totalPage(articleIdTotal, pageSize);
String columnListPath;
String mobilePath;
ContentModelEntity contentModel = null;
......@@ -100,13 +98,12 @@ public class CmsParserUtil extends ParserUtil {
contentModel = (ContentModelEntity) SpringUtil.getBean(IContentModelBiz.class).getEntity(columnContentModelId);
}
int pageNo = 1;
// 遍历分页
for (int i = 0; i < totalPageSize; i++) {
PageBean page = new PageBean();
page.setSize(pageSize);
//全局参数设置
Map parserParams = new HashMap();
parserParams.put(COLUMN, column);
parserParams.put(TOTAL, totalPageSize);
parserParams.put(RCOUNT, pageSize);
parserParams.put(TYPE_ID, column.getCategoryId());
page.setTotal(totalPageSize);
parserParams.put(IS_DO, false);
parserParams.put(HTML, HTML);
if (contentModel!=null) {
......@@ -117,6 +114,30 @@ public class CmsParserUtil extends ParserUtil {
if(ParserUtil.IS_SINGLE) {
parserParams.put(ParserUtil.URL, BasicUtil.getUrl());
}
//文章列表页没有写文章列表标签,总数为0
if (totalPageSize <= 0) {
// 数据库中第一页是从开始0*size
// 首页路径index.html
mobilePath = ParserUtil.buildMobileHtmlPath(column.getColumnPath() + File.separator + ParserUtil.INDEX);
columnListPath = ParserUtil.buildHtmlPath(column.getColumnPath() + File.separator + ParserUtil.INDEX);
// 设置分页的起始位置
page.setPageNo(pageNo);
parserParams.put(ParserUtil.PAGE, page);
TagParser tag = new TagParser(content,parserParams);
FileUtil.writeString(tag.rendering(), columnListPath, Const.UTF8);
// 判断是手机端生成还是pc端,防止重复生成
if (ParserUtil.hasMobileFile(column.getColumnListUrl())) {
writer = new StringWriter();
mobileTemplate.process(null, writer);
tag = new TagParser(writer.toString(), parserParams);
// 将tag.getContent()写入路径
FileUtil.writeString(tag.rendering(), mobilePath, Const.UTF8);
}
writer = new StringWriter();
} else {
// 遍历分页
for (int i = 0; i < totalPageSize; i++) {
if (i == 0) {
// 数据库中第一页是从开始0*size
// 首页路径index.html
......@@ -131,13 +152,11 @@ public class CmsParserUtil extends ParserUtil {
columnListPath = ParserUtil
.buildHtmlPath(column.getColumnPath() + File.separator + ParserUtil.PAGE_LIST + pageNo);
}
// 设置分页的起始位置
parserParams.put(PAGE_NO, pageNo);
page.setPageNo(pageNo);
parserParams.put(ParserUtil.PAGE, page);
TagParser tag = new TagParser(content,parserParams);
FileUtil.writeString(tag.rendering(), columnListPath, Const.UTF8);
// 判断是手机端生成还是pc端,防止重复生成
if (ParserUtil.hasMobileFile(column.getColumnListUrl())) {
writer = new StringWriter();
......@@ -146,11 +165,10 @@ public class CmsParserUtil extends ParserUtil {
// 将tag.getContent()写入路径
FileUtil.writeString(tag.rendering(), mobilePath, Const.UTF8);
}
writer = new StringWriter();
pageNo++;
}
}
} catch (TemplateException e) {
e.printStackTrace();
}
......@@ -176,24 +194,26 @@ public class CmsParserUtil extends ParserUtil {
// 记录已经生成了文章编号
List<Integer> generateIds = new ArrayList<>();
// 生成文档
for (int ai = 0; ai < articleIdList.size();) {
for (int artId = 0; artId < articleIdList.size();) {
//设置分页类
PageBean page = new PageBean();
// 文章编号
int articleId = articleIdList.get(ai).getArticleId();
int articleId = articleIdList.get(artId).getArticleId();
// 文章的栏目路径
String articleColumnPath = articleIdList.get(ai).getColumnPath();
String articleColumnPath = articleIdList.get(artId).getColumnPath();
// 文章的模板路径
String columnUrl = articleIdList.get(ai).getColumnUrl();
String columnUrl = articleIdList.get(artId).getColumnUrl();
// 文章的栏目模型编号
int columnContentModelId = articleIdList.get(ai).getColumnContentModelId();
int columnContentModelId = articleIdList.get(artId).getColumnContentModelId();
// 文章是否已经生成了,生成了就跳过
if (generateIds.contains(articleId)) {
ai++;
artId++;
continue;
}
// 判断文件是否存在,若不存在弹出返回信息
if (!FileUtil.exist(ParserUtil.buildTempletPath(columnUrl))) {
ai++;
artId++;
continue;
}
// 将
......@@ -201,10 +221,11 @@ public class CmsParserUtil extends ParserUtil {
// 组合文章路径如:html/站点id/栏目id/文章id.html
writePath = ParserUtil.buildHtmlPath(articleColumnPath + File.separator + articleId);
//如果是封面就生成index.html
if(articleIdList.get(ai).getColumnType() == ColumnTypeEnum.COLUMN_TYPE_COVER.toInt()) {
if(articleIdList.get(artId).getColumnType() == ColumnTypeEnum.COLUMN_TYPE_COVER.toInt()) {
writePath = ParserUtil.buildHtmlPath(articleColumnPath + File.separator + ParserUtil.INDEX);
}
Map<String, Object> parserParams = new HashMap<String, Object>();
parserParams.put(ParserUtil.COLUMN, articleIdList.get(artId));
// 判断当前栏目是否有自定义模型
if (columnContentModelId > 0) {
// 通过当前栏目的模型编号获取,自定义模型表名
......@@ -222,43 +243,43 @@ public class CmsParserUtil extends ParserUtil {
parserParams.put(ID, articleId);
// 第一篇文章没有上一篇
if (ai > 0) {
ColumnArticleIdBean preCaBean = articleIdList.get(ai - 1);
if (artId > 0) {
ColumnArticleIdBean preCaBean = articleIdList.get(artId - 1);
//判断当前文档是否与上一页文章在同一栏目下,并且不能使用父栏目字符串,因为父栏目中没有所属栏目编号
if(articleColumnPath.contains(preCaBean.getCategoryId()+"")){
parserParams.put(PRE_ID, preCaBean.getArticleId());
page.setPreId(preCaBean.getArticleId());
}
}
// 最后一篇文章没有下一篇
if (ai + 1 < articleIdList.size()) {
ColumnArticleIdBean nextCaBean = articleIdList.get(ai + 1);
if (artId + 1 < articleIdList.size()) {
ColumnArticleIdBean nextCaBean = articleIdList.get(artId + 1);
//判断当前文档是否与下一页文章在同一栏目下并且不能使用父栏目字符串,因为父栏目中没有所属栏目编号
if(articleColumnPath.contains(nextCaBean.getCategoryId()+"")){
parserParams.put(NEXT_ID, nextCaBean.getArticleId());
page.setNextId(nextCaBean.getArticleId());
}
}
parserParams.put(IS_DO, false);
String content = CmsParserUtil.generate(articleIdList.get(ai).getColumnUrl(), parserParams, false);
parserParams.put(ParserUtil.PAGE, page);
String content = CmsParserUtil.generate(articleIdList.get(artId).getColumnUrl(), parserParams, false);
FileUtil.writeString(content, writePath, Const.UTF8);
// 手机端
if (ParserUtil.hasMobileFile(columnUrl)) {
writePath = ParserUtil.buildMobileHtmlPath(articleColumnPath + File.separator + articleId);
//如果是封面就生成index.html
if(articleIdList.get(ai).getColumnType() == ColumnTypeEnum.COLUMN_TYPE_COVER.toInt()) {
if(articleIdList.get(artId).getColumnType() == ColumnTypeEnum.COLUMN_TYPE_COVER.toInt()) {
writePath = ParserUtil.buildMobileHtmlPath(articleColumnPath + File.separator + ParserUtil.INDEX);
}
// 判断文件是否存在,若不存在弹出返回信息
if (!FileUtil.exist(ParserUtil.buildTempletPath(MOBILE + File.separator + columnUrl))) {
ai++;
artId++;
continue;
}
parserParams.put(MOBILE, BasicUtil.getApp().getAppMobileStyle());
content = CmsParserUtil.generate(articleIdList.get(ai).getColumnUrl(), parserParams, true);
content = CmsParserUtil.generate(articleIdList.get(artId).getColumnUrl(), parserParams, true);
FileUtil.writeString(content, writePath, Const.UTF8);
}
ai++;
artId++;
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment