Forráskód Böngészése

!153 添加分页类
Merge pull request !153 from 他是超人他会飞/4.7.0

他是超人他会飞 6 éve
szülő
commit
0f4dcbdac8

A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 5
doc/4.6.5-to-4.7.0-mysql.sql


A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 0
doc/db-mcms-mysql-4.7.0.sql


+ 14 - 11
src/main/java/net/mingsoft/cms/action/web/MCmsAction.java

@@ -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);
 		//设置动态请求的模块路径

+ 21 - 22
src/main/java/net/mingsoft/cms/action/web/SearchAction.java

@@ -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);
 		//设置动态请求的模块路径

+ 3 - 5
src/main/java/net/mingsoft/cms/dao/IArticleDao.xml

@@ -47,16 +47,14 @@
 	<!-- 获取表字段 结束 -->
 	<!-- 通过视图查询返回结果集 开始 -->
 	<resultMap type="net.mingsoft.cms.bean.ColumnArticleIdBean" id="resultMapBean">
-		<result column="ARTICLE_BASICID" property="articleId" />
-		<result column="column_listurl" property="columnListUrl"/><!-- 最终栏目列表地址 -->	
+		<result column="ARTICLE_BASICID" property="articleId" />	
 		<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

+ 94 - 73
src/main/java/net/mingsoft/cms/util/CmsParserUtil.java

@@ -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;
@@ -75,21 +76,18 @@ public class CmsParserUtil extends ParserUtil {
 				BasicUtil.getApp().getAppMobileStyle() + File.separator + column.getColumnListUrl(), Const.UTF8);
 		// pc端模板
 		Template template = cfg.getTemplate(File.separator + column.getColumnListUrl(), Const.UTF8);
-		
+
 		// 文章的栏目模型编号
 		int columnContentModelId = column.getColumnContentModelId();
-		
 		StringWriter writer = new StringWriter();
 		try {
 			// 为了分页添加column,判断栏目是否为父栏目
-			
 			template.process(null, writer);
 			String content = writer.toString();
 			//获取列表页显示的文章数量
 			int pageSize = TagParser.getPageSize(content);
 			//获取总数
 			int totalPageSize = PageUtil.totalPage(articleIdTotal, pageSize);
-		
 			
 			String columnListPath;
 			String mobilePath;
@@ -100,57 +98,77 @@ public class CmsParserUtil extends ParserUtil {
 				contentModel = (ContentModelEntity) SpringUtil.getBean(IContentModelBiz.class).getEntity(columnContentModelId);
 			}
 			int pageNo = 1;
-			// 遍历分页
-			for (int i = 0; i < totalPageSize; i++) {
-				Map parserParams = new HashMap();
-				parserParams.put(COLUMN, column);
-				parserParams.put(TOTAL, totalPageSize);
-				parserParams.put(RCOUNT, pageSize);
-				parserParams.put(TYPE_ID, column.getCategoryId());
-				parserParams.put(IS_DO, false);
-				parserParams.put(HTML, HTML);
-				if (contentModel!=null) {
-					// 将自定义模型编号设置为key值
-					parserParams.put(TABLE_NAME, contentModel.getCmTableName());
-				}
-				//如果单站点,就废弃站点地址
-				if(ParserUtil.IS_SINGLE) {
-					parserParams.put(ParserUtil.URL, BasicUtil.getUrl());
-				}
-				if (i == 0) {
-					// 数据库中第一页是从开始0*size
-					// 首页路径index.html
-					mobilePath = ParserUtil
-							.buildMobileHtmlPath(column.getColumnPath() + File.separator + ParserUtil.INDEX);
-					columnListPath = ParserUtil
-							.buildHtmlPath(column.getColumnPath() + File.separator + ParserUtil.INDEX);
-				} else {
-					// 其他路径list-2.html
-					mobilePath = ParserUtil.buildMobileHtmlPath(
-							column.getColumnPath() + File.separator + ParserUtil.PAGE_LIST + pageNo);
-					columnListPath = ParserUtil
-							.buildHtmlPath(column.getColumnPath() + File.separator + ParserUtil.PAGE_LIST + pageNo);
-				}
-				
-				// 设置分页的起始位置
-				parserParams.put(PAGE_NO, pageNo);
+			PageBean page = new PageBean();
+			page.setSize(pageSize);
+			//全局参数设置
+			Map parserParams = new HashMap();
+			parserParams.put(COLUMN, column);
+			page.setTotal(totalPageSize);
+			parserParams.put(IS_DO, false);
+			parserParams.put(HTML, HTML);
+			if (contentModel!=null) {
+				// 将自定义模型编号设置为key值
+				parserParams.put(TABLE_NAME, contentModel.getCmTableName());
+			}
+			//如果单站点,就废弃站点地址
+			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())) {
+	            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
+						mobilePath = ParserUtil
+								.buildMobileHtmlPath(column.getColumnPath() + File.separator + ParserUtil.INDEX);
+						columnListPath = ParserUtil
+								.buildHtmlPath(column.getColumnPath() + File.separator + ParserUtil.INDEX);
+					} else {
+						// 其他路径list-2.html
+						mobilePath = ParserUtil.buildMobileHtmlPath(
+								column.getColumnPath() + File.separator + ParserUtil.PAGE_LIST + pageNo);
+						columnListPath = ParserUtil
+								.buildHtmlPath(column.getColumnPath() + File.separator + ParserUtil.PAGE_LIST + 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();
+						mobileTemplate.process(null, writer);
+						tag = new TagParser(writer.toString(),parserParams);
+						// 将tag.getContent()写入路径
+						FileUtil.writeString(tag.rendering(), mobilePath, Const.UTF8);
+					}
 					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();
-				pageNo++;
-			}
-
+					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++;
 		}
 	}
 }

Nem az összes módosított fájl került megjelenítésre, mert túl sok fájl változott