Commit 3dc5625a authored by ms-dev's avatar ms-dev

代码初始化

parent a480376d
......@@ -31,10 +31,32 @@
<classifier>classes</classifier>
<scope>provided</scope>
</dependency>
<!-- <dependency> <groupId>net.mingsoft</groupId> <artifactId>ms-mdiy</artifactId>
<version>1.0.7-SNAPSHOT</version> <type>war</type> </dependency> <dependency>
<groupId>net.mingsoft</groupId> <artifactId>ms-mdiy</artifactId> <version>1.0.7-SNAPSHOT</version>
<classifier>classes</classifier> <scope>provided</scope> </dependency> -->
<dependency>
<groupId>net.mingsoft</groupId>
<artifactId>ms-mdiy</artifactId>
<version>1.0.7-SNAPSHOT</version>
<type>war</type>
</dependency>
<dependency>
<groupId>net.mingsoft</groupId>
<artifactId>ms-mdiy</artifactId>
<version>1.0.7-SNAPSHOT</version>
<classifier>classes</classifier>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>net.mingsoft</groupId>
<artifactId>ms-mpeople</artifactId>
<version>1.0.7-SNAPSHOT</version>
<type>war</type>
</dependency>
<dependency>
<groupId>net.mingsoft</groupId>
<artifactId>ms-mpeople</artifactId>
<version>1.0.7-SNAPSHOT</version>
<classifier>classes</classifier>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
......
This diff is collapsed.
This diff is collapsed.
/**
The MIT License (MIT) * Copyright (c) 2016 铭飞科技(mingsoft.net)
* Permission is hereby granted, free of charge, to any person obtaining a copy of
* this software and associated documentation files (the "Software"), to deal in
* the Software without restriction, including without limitation the rights to
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
* the Software, and to permit persons to whom the Software is furnished to do so,
* subject to the following conditions:
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
package net.mingsoft.cms.action;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.alibaba.fastjson.JSONArray;
import net.mingsoft.basic.action.BaseAction;
import net.mingsoft.basic.biz.IColumnBiz;
import net.mingsoft.basic.biz.IModelBiz;
import net.mingsoft.basic.entity.AppEntity;
import net.mingsoft.basic.entity.CategoryEntity;
import net.mingsoft.basic.entity.ColumnEntity;
import net.mingsoft.cms.bean.ColumnArticleIdBean;
import net.mingsoft.cms.biz.IArticleBiz;
import net.mingsoft.cms.constant.ModelCode;
import net.mingsoft.cms.util.CmsParserUtil;
import net.mingsoft.mdiy.biz.IContentModelBiz;
import net.mingsoft.mdiy.biz.IContentModelFieldBiz;
import cn.hutool.core.io.FileUtil;
import net.mingsoft.basic.util.BasicUtil;
import net.mingsoft.mdiy.util.ParserUtil;
/**
*
* @ClassName: GeneraterAction
* @Description:TODO 生成器
* @author: 铭飞开发团队
* @date: 2018年1月31日 下午2:52:07
*
* @Copyright: 2018 www.mingsoft.net Inc. All rights reserved.
*/
@Controller("cmsGenerater")
@RequestMapping("/${ms.manager.path}/cms/generate")
@Scope("request")
public class GeneraterAction extends BaseAction {
/**
* 文章管理业务层
*/
@Autowired
private IArticleBiz articleBiz;
/**
* 栏目管理业务层
*/
@Autowired
private IColumnBiz columnBiz;
/**
* 模块管理业务层
*/
@Autowired
private IModelBiz modelBiz;
@Value("${ms.manager.path}")
private String managerPath;
/**
* 新增字段业务层
*/
@Autowired
protected IContentModelFieldBiz fieldBiz;
/**
* 自定义模型业务层
*/
@Autowired
protected IContentModelBiz contentBiz;
/**
* 更新主页
*
* @return
*/
@RequestMapping("/index")
public String index(HttpServletRequest request, ModelMap model) {
// 该站点ID有session提供
int websiteId = BasicUtil.getAppId();
Integer modelId = modelBiz.getEntityByModelCode(ModelCode.CMS_COLUMN).getModelId(); // 查询当前模块编号
// 获取所有的内容管理栏目
List<ColumnEntity> list = columnBiz.queryAll(websiteId, modelId);
model.addAttribute("list", JSONArray.toJSONString(list));
model.addAttribute("now", new Date());
return view("/cms/generate/index");
}
/**
* 生成主页
*
* @param request
* @param response
*/
@RequestMapping("/generateIndex")
@RequiresPermissions("cms:generate:index")
@ResponseBody
public void generateIndex(HttpServletRequest request, HttpServletResponse response) {
// 模版文件名称
String tmpFileName = request.getParameter("url");
// 生成后的文件名称
String generateFileName = request.getParameter("position");
// 获取文件所在路径 首先判断用户输入的模版文件是否存在
if (!FileUtil.exist(ParserUtil.buildTempletPath())) {
this.outJson(response, false, getResString("templet.file"));
} else {
try {
CmsParserUtil.generate(tmpFileName, generateFileName);
this.outJson(response, true);
} catch (IOException e) {
e.printStackTrace();
this.outJson(response, false);
}
}
}
/**
* 生成列表的静态页面
*
* @param request
* @param response
* @param columnId
*/
@RequestMapping("/{columnId}/genernateColumn")
@RequiresPermissions("cms:generate:column")
@ResponseBody
public void genernateColumn(HttpServletRequest request, HttpServletResponse response, @PathVariable int columnId) {
// 获取站点id
AppEntity app = BasicUtil.getApp();
List<ColumnEntity> columns = new ArrayList<ColumnEntity>();
// 如果栏目id小于0则更新所有的栏目,否则只更新选中的栏目
int modelId = BasicUtil.getModelCodeId(ModelCode.CMS_COLUMN); // 查询当前模块编号
if (columnId > 0) {
List<CategoryEntity> categorys = columnBiz.queryChildrenCategory(columnId, app.getAppId(), modelId);
for (CategoryEntity c : categorys) {
columns.add((ColumnEntity) columnBiz.getEntity(c.getCategoryId()));
}
} else {
// 获取所有的内容管理栏目
columns = columnBiz.queryAll(app.getAppId(), modelId);
}
List<ColumnArticleIdBean> articleIdList = null;
try {
// 1、设置模板文件夹路径
// 获取栏目列表模版
for (ColumnEntity column : columns) {
// 判断模板文件是否存在
if (!FileUtil.exist(ParserUtil.buildTempletPath(column.getColumnUrl()))) {
continue;
}
articleIdList = articleBiz.queryIdsByCategoryIdForParser(column.getCategoryId(), null, null);
// 判断列表类型
switch (column.getColumnType()) {
case ColumnEntity.COLUMN_TYPE_LIST: // 列表
CmsParserUtil.generateList(column, articleIdList.size());
break;
case ColumnEntity.COLUMN_TYPE_COVER:// 单页
CmsParserUtil.generateBasic(articleIdList);
break;
}
}
} catch (IOException e) {
e.printStackTrace();
this.outJson(response, false);
}
this.outJson(response, true);
}
/**
* 根据栏目id更新所有的文章
*
* @param request
* @param response
* @param columnId
*/
@RequestMapping("/{columnId}/generateArticle")
@RequiresPermissions("cms:generate:article")
@ResponseBody
public void generateArticle(HttpServletRequest request, HttpServletResponse response, @PathVariable int columnId) {
String dateTime = request.getParameter("dateTime");
// 网站风格物理路径
List<ColumnArticleIdBean> articleIdList = null;
try {
// 查出所有文章(根据选择栏目)包括子栏目
articleIdList = articleBiz.queryIdsByCategoryIdForParser(columnId, dateTime, null);
// 有符合条件的新闻就更新
if (articleIdList.size() > 0) {
CmsParserUtil.generateBasic(articleIdList);
}
this.outJson(response, true);
} catch (IOException e) {
e.printStackTrace();
this.outJson(response, false);
}
}
/**
* 用户预览主页
*
* @param request
* @return
*/
@RequestMapping("/{position}/viewIndex")
public String viewIndex(HttpServletRequest request, @PathVariable String position, HttpServletResponse response) {
AppEntity app = BasicUtil.getApp();
// 组织主页预览地址
String indexPosition = app.getAppHostUrl() + File.separator + ParserUtil.HTML + File.separator + app.getAppId()
+ File.separator + position + ParserUtil.HTML_SUFFIX;
return "redirect:" + indexPosition;
}
}
\ No newline at end of file
/**
The MIT License (MIT) * Copyright (c) 2016 铭飞科技(mingsoft.net)
* Permission is hereby granted, free of charge, to any person obtaining a copy of
* this software and associated documentation files (the "Software"), to deal in
* the Software without restriction, including without limitation the rights to
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
* the Software, and to permit persons to whom the Software is furnished to do so,
* subject to the following conditions:
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
package net.mingsoft.cms.action.web;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import net.mingsoft.basic.action.BaseAction;
import net.mingsoft.basic.biz.IColumnBiz;
import net.mingsoft.basic.entity.ColumnEntity;
import net.mingsoft.cms.biz.IArticleBiz;
import net.mingsoft.cms.entity.ArticleEntity;
import net.mingsoft.mdiy.biz.IContentModelBiz;
import net.mingsoft.mdiy.biz.IContentModelFieldBiz;
import net.mingsoft.mdiy.entity.ContentModelEntity;
import org.apache.commons.lang3.StringUtils;
import cn.hutool.core.util.ObjectUtil;
import net.mingsoft.base.filter.DateValueFilter;
import net.mingsoft.basic.bean.ListBean;
import net.mingsoft.basic.util.BasicUtil;
/**
*
* @ClassName: ArticleAction
* @Description:TODO 前段文章控制,如果标签不能满足可以使用这个控制来满足用户的查询文章需求,主要是通过ajax返回json数据格式
* @author: 铭飞开发团队
* @date: 2018年1月31日 下午2:52:44
*
* @Copyright: 2018 www.mingsoft.net Inc. All rights reserved.
*/
@Controller("jsonApiArticle")
@RequestMapping("/mcms/article")
public class ArticleAction extends BaseAction {
/**
* 文章管理业务处理层
*/
@Autowired
private IArticleBiz articleBiz;
/**
* 栏目管理业务处理层
*/
@Autowired
private IColumnBiz columnBiz;
/**
* 内容模型管理业务处理层
*/
@Autowired
private IContentModelBiz contentModelBiz;
/**
* 自定义字段管理业务处理层
*/
@Autowired
private IContentModelFieldBiz fieldBiz;
/**
* 文章信息
*
* @param basicId
* 文章编号
* <dt><span class="strong">返回</span></dt><br/>
* {"basicCategoryId":分类编号,basicTitle
* :"标题",basicDescription:"描述",basicThumbnails:"缩略图",
* basicDateTime:"发布时间",basicUpdateTime:"更新时间","basicHit":点击数,
* "basicId":编号 articleContent:"文章内容","basicSort":排序,[自定义模型字段]}
*/
@RequestMapping("/{basicId}/detail")
@ResponseBody
public void detail(@PathVariable int basicId, HttpServletRequest request, HttpServletResponse response) {
System.out.println(BasicUtil.getSession("xxx"));
//ArticleEntity article = articleBiz.getById(basicId);
// if (article == null) {
// this.outJson(response, "");
// return;
// }
// // 获取文章栏目id获取栏目实体
// ColumnEntity column = (ColumnEntity) columnBiz.getEntity(article.getBasicCategoryId());
// ContentModelEntity contentModel = (ContentModelEntity) contentModelBiz
// .getEntity(column.getColumnContentModelId());
//
// // 判断内容模型的值
// if (contentModel != null) {
// Map where = new HashMap();
// // 压入basicId字段的值
// where.put("basicId", basicId);
// // 遍历所有的字段实体,得到字段名列表信息
// List<String> listFieldName = new ArrayList<String>();
// listFieldName.add("basicId");
// // 查询新增字段的信息
// List fieldLists = fieldBiz.queryBySQL(contentModel.getCmTableName(), listFieldName, where);
// if (fieldLists.size() > 0) {
// Map map = (Map) fieldLists.get(0);
// article.setExtendsFields(map);
// }
// }
//
// this.outJson(response, JSONObject.toJSONStringWithDateFormat(article, "yyyy-MM-dd hh:mm:ss"));
}
/**
* 文章列表信息
*
* @param pageSize
* 一页显示数量
* @param pageNum
* 当前页码
* @param basicCategoryId
* 分类编号
* <dt><span class="strong">返回</span></dt><br/>
* {"list":"[{
* "basicTitle":"标题",
* "basicDescription":"描述",
* "basicThumbnails":"缩略图",
* "basicDateTime":"发布时间",
* "basicUpdateTime":"更新时间",
* "basicHit":点击数,
* "basicId":编号,
* "articleContent":文章内容,
* "articleAuthor":文章作者
* "articleType":文章属性,
* "articleSource":文章的来源,
* "articleUrl":文章跳转链接地址,
* "articleKeyword":文章关键字,
* "articleCategoryId":文章所属的分类Id,
* "articleTypeLinkURL":文章分类url地址,主要是用户生成html使用,
* "order":"排序方式",
* "orderBy":"排序字段
* }],
* "page":{"endRow": 2, 当前页面最后一个元素在数据库中的行号
* "firstPage": 1, 第一页页码
* "hasNextPage": true存在下一页false不存在,
* "hasPreviousPage": true存在上一页false不存在,
* "isFirstPage": true是第一页false不是第一页,
* "isLastPage": true是最后一页false不是最后一页,
* "lastPage": 最后一页的页码,
* "navigatePages": 导航数量,实现 1...5.6.7....10效果,
* "navigatepageNums": []导航页码集合,
* "nextPage": 下一页,
* "pageNum": 当前页码,
* "pageSize": 一页显示数量,
* "pages": 总页数,
* "prePage": 上一页,
* "size": 总记录,
* "startRow":当前页面第一个元素在数据库中的行号,
* "total":总记录数量
* }
*/
@RequestMapping(value = "/list")
@ResponseBody
public void list(@ModelAttribute ArticleEntity article, HttpServletRequest request, HttpServletResponse response) {
int appId = BasicUtil.getAppId();
int[] ids = null;
if (article.getBasicCategoryId()>0) {
ids = new int[]{article.getBasicCategoryId()};
}
//默认为desc排序
boolean isOrder = true;
if(!StringUtils.isBlank(article.getOrder())){
String basicOrder = article.getOrder();
if(basicOrder.equalsIgnoreCase("asc")){
isOrder = false;
}
}
BasicUtil.startPage();
List<ArticleEntity> list = articleBiz.query(appId, ids, null, null, article.getOrderBy(), isOrder, null, null, article);
for(ArticleEntity _article : list){
// 获取文章栏目id获取栏目实体
ColumnEntity column = (ColumnEntity) columnBiz.getEntity(_article.getBasicCategoryId());
ContentModelEntity contentModel = (ContentModelEntity) contentModelBiz
.getEntity(column.getColumnContentModelId());
// 判断内容模型的值
if (contentModel != null) {
Map where = new HashMap();
// 压入basicId字段的值
where.put("basicId", _article.getBasicId());
// 遍历所有的字段实体,得到字段名列表信息
List<String> listFieldName = new ArrayList<String>();
listFieldName.add("basicId");
// 查询新增字段的信息
List fieldLists = fieldBiz.queryBySQL(contentModel.getCmTableName(), listFieldName, where);
if (fieldLists.size() > 0) {
Map map = (Map) fieldLists.get(0);
_article.setExtendsFields(map);
}
}
}
this.outJson(response, JSONArray.toJSONString(new ListBean(list, BasicUtil.endPage(list)),new DateValueFilter("yyyy-MM-dd HH:mm:ss")));
}
}
\ No newline at end of file
/**
The MIT License (MIT) * Copyright (c) 2016 铭飞科技(mingsoft.net)
* Permission is hereby granted, free of charge, to any person obtaining a copy of
* this software and associated documentation files (the "Software"), to deal in
* the Software without restriction, including without limitation the rights to
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
* the Software, and to permit persons to whom the Software is furnished to do so,
* subject to the following conditions:
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
package net.mingsoft.cms.action.web;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.alibaba.fastjson.JSONObject;
import net.mingsoft.basic.biz.IColumnBiz;
import net.mingsoft.mdiy.biz.IContentModelBiz;
import net.mingsoft.mdiy.biz.IContentModelFieldBiz;
import net.mingsoft.basic.entity.ColumnEntity;
import net.mingsoft.mdiy.entity.ContentModelEntity;
import net.mingsoft.mdiy.entity.ContentModelFieldEntity;
import net.mingsoft.base.action.BaseAction;
import net.mingsoft.basic.util.BasicUtil;
/**
*
*
*
* <p>
* <b>铭飞科技</b>
* </p>
*
* <p>
* Copyright: Copyright (c) 2014 - 2015
* </p>
*
* @author 史爱华
*
* <p>
* Comments: 供前端页面获取自定义模型中字段实体信息
* </p>
*
* <p>
* Create Date:2015-07-11
* </p>
*
* <p>
* Modification history:
* </p>
*/
@Controller("webField")
@RequestMapping("/field")
public class FieldAction extends BaseAction{
/**
* 栏目业务层
*/
@Autowired
private IColumnBiz columnBiz;
/**
* 内容模型业务层
*/
@Autowired
private IContentModelBiz contentModelBiz;
/**
* 字段管理业务层
*/
@Autowired
private IContentModelFieldBiz fieldBiz;
/**
*
* 根据当前栏目id和字段名称获取自定义模型中的字段实体信息
* @param request
* @param response
*/
@RequestMapping("/{columId}/getEntity")
@ResponseBody
public void getEntity(@PathVariable int columId,HttpServletRequest request, HttpServletResponse response) {
System.out.println("111");
BasicUtil.setSession("xxx", "888");
System.err.println("session:"+BasicUtil.getSession("xxx"));
//获取字段名称
String fieldFieldName = request.getParameter("fieldFieldName");
//根据栏目id获取栏目实体
ColumnEntity column = (ColumnEntity) this.columnBiz.getEntity(columId);
if(column==null){
this.outJson(response, this.getResString("err"));
return;
}else{
//判断该栏目下是存在内容模型
if(column.getColumnContentModelId()>0){
//获取当前栏目对应的内容模型
ContentModelEntity contentModel = (ContentModelEntity) this.contentModelBiz.getEntity(column.getColumnContentModelId());
if(contentModel==null){
this.outJson(response, this.getResString("err"));
return;
}
//获取字段实体
ContentModelFieldEntity field = fieldBiz.getEntityByCmId(column.getColumnContentModelId(), fieldFieldName);
//返回字段实体
this.outJson(response, JSONObject.toJSONString(field));
}
}
}
}
\ No newline at end of file
/**
The MIT License (MIT) * Copyright (c) 2016 铭飞科技(mingsoft.net)
* Permission is hereby granted, free of charge, to any person obtaining a copy of
* this software and associated documentation files (the "Software"), to deal in
* the Software without restriction, including without limitation the rights to
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
* the Software, and to permit persons to whom the Software is furnished to do so,
* subject to the following conditions:
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
package net.mingsoft.cms.action.web;
import java.io.IOException;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import net.mingsoft.basic.biz.IColumnBiz;
import net.mingsoft.basic.entity.ColumnEntity;
import net.mingsoft.cms.bean.ColumnArticleIdBean;
import net.mingsoft.cms.biz.IArticleBiz;
import net.mingsoft.cms.entity.ArticleEntity;
import net.mingsoft.cms.util.CmsParserUtil;
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;
/**
* 动态生成页面,需要后台配置自定义页数据
*
* @author 铭飞开源团队
* @date 2018年12月17日
*/
@Controller("dynamicPageAction")
@RequestMapping("/mcms")
public class MCmsAction extends net.mingsoft.mdiy.action.BaseAction {
/**
* 自定义页面业务层
*/
@Autowired
private IPageBiz pageBiz;
/**
* 文章管理业务处理层
*/
@Autowired
private IArticleBiz articleBiz;
/**
* 栏目业务层
*/
@Autowired
private IColumnBiz columnBiz;
// 如商城就为:/mall/{key}.do
/**
* 前段会员中心所有页面都可以使用该方法 请求地址例如: /{diy}.do,例如登陆界面,与注册界面都可以使用
*
* @param key
*/
@RequestMapping("/{diy}.do")
@ExceptionHandler(java.lang.NullPointerException.class)
public void diy(@PathVariable(value = "diy") String diy, HttpServletRequest req, HttpServletResponse resp) {
Map map = BasicUtil.assemblyRequestMap();
//动态解析
map.put(ParserUtil.IS_DO,true);
//设置动态请求的模块路径
map.put(ParserUtil.MODEL_NAME, "mcms");
//解析后的内容
String content = "";
PageEntity page = new PageEntity();
page.setPageKey(diy);
//根据请求路径查询模版文件
PageEntity _page = (PageEntity) pageBiz.getEntity(page);
try {
content = CmsParserUtil.generate(_page.getPagePath(), map, isMobileDevice(req));
} catch (TemplateNotFoundException e) {
e.printStackTrace();
} catch (MalformedTemplateNameException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
this.outString(resp, content);
}
/**
* 动态列表页
*/
@GetMapping("/index.do")
public void index(HttpServletRequest req, HttpServletResponse resp) {
Map map = BasicUtil.assemblyRequestMap();
map.put(ParserUtil.URL, BasicUtil.getUrl());
//动态解析
map.put(ParserUtil.IS_DO,true);
//设置动态请求的模块路径
map.put(ParserUtil.MODEL_NAME, "mcms");
//解析后的内容
String content = "";
try {
//根据模板路径,参数生成
content = CmsParserUtil.generate(ParserUtil.INDEX+ParserUtil.HTM_SUFFIX, map, isMobileDevice(req));
} catch (TemplateNotFoundException e) {
e.printStackTrace();
} catch (MalformedTemplateNameException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
this.outString(resp, content);
}
/**
* 动态列表页
* @param req
* @param resp
* @param pageNumber 设置列表当前页
* @param typeid 栏目编号
* @param size 显示条数
*/
@GetMapping("/list.do")
public void list(HttpServletRequest req, HttpServletResponse resp) {
Map map = BasicUtil.assemblyRequestMap();
//获取栏目编号
int typeId = BasicUtil.getInt(ParserUtil.TYPE_ID,0);
//获取文章总数
List<ColumnArticleIdBean> columnArticles = articleBiz.queryIdsByCategoryIdForParser(typeId, null, null);
//判断栏目下是否有文章
if(columnArticles.size()==0){
this.outJson(resp, false);
}
map.put(ParserUtil.COLUMN, columnArticles.get(0));
//获取总数
map.put(ParserUtil.TOTAL, columnArticles.size());
map.put(ParserUtil.RCOUNT, BasicUtil.getInt(ParserUtil.SIZE,10));
//设置栏目编号
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.IS_DO,true);
//设置动态请求的模块路径
map.put(ParserUtil.MODEL_NAME, "mcms");
//解析后的内容
String content = "";
try {
//根据模板路径,参数生成
content = CmsParserUtil.generate(columnArticles.get(0).getColumnListUrl(),map, isMobileDevice(req));
} catch (TemplateNotFoundException e) {
e.printStackTrace();
} catch (MalformedTemplateNameException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
this.outString(resp, content);
}
/**
* 动态详情页
* @param id 文章编号
*/
@GetMapping("/view.do")
public void view(HttpServletRequest req, HttpServletResponse resp) {
//参数文章编号
ArticleEntity article = (ArticleEntity) articleBiz.getEntity(BasicUtil.getInt(ParserUtil.ID));
//根据文章编号查询栏目详情模版
ColumnEntity column = (ColumnEntity) columnBiz.getEntity(article.getBasicCategoryId());
//解析后的内容
String content = "";
Map map = BasicUtil.assemblyRequestMap();
//动态解析
map.put(ParserUtil.IS_DO,true);
//设置动态请求的模块路径
map.put(ParserUtil.MODEL_NAME, "mcms");
map.put(ParserUtil.URL, BasicUtil.getUrl());
try {
//根据模板路径,参数生成
content = CmsParserUtil.generate(column.getColumnUrl(), map, isMobileDevice(req));
} catch (TemplateNotFoundException e) {
e.printStackTrace();
} catch (MalformedTemplateNameException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
this.outString(resp, content);
}
}
\ No newline at end of file
/**
The MIT License (MIT) * Copyright (c) 2016 铭飞科技(mingsoft.net)
* Permission is hereby granted, free of charge, to any person obtaining a copy of
* this software and associated documentation files (the "Software"), to deal in
* the Software without restriction, including without limitation the rights to
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
* the Software, and to permit persons to whom the Software is furnished to do so,
* subject to the following conditions:
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
package net.mingsoft.cms.action.web;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import net.mingsoft.basic.action.BaseAction;
import net.mingsoft.basic.biz.IColumnBiz;
import net.mingsoft.basic.entity.ColumnEntity;
import net.mingsoft.cms.biz.IArticleBiz;
import net.mingsoft.cms.util.CmsParserUtil;
import net.mingsoft.mdiy.biz.ISearchBiz;
import net.mingsoft.mdiy.entity.ContentModelFieldEntity;
import net.mingsoft.mdiy.entity.SearchEntity;
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.mdiy.util.ParserUtil;
/**
* 根据搜索结果动态解析模版内容
* @author 铭飞开源团队-Administrator
* @date 2018年12月18日
*/
@Controller(value = "webSearchAction")
@RequestMapping("/cms")
public class SearchAction extends BaseAction {
/**
* 搜索标签;
*/
public static final String SEARCH = "search";
/**
* 搜索的标题;
*/
public static final String BASIC_TITLE = "basic_title";
/**
* 注入文章业务层
*/
@Autowired
private IArticleBiz articleBiz;
/**
* 注入搜索业务层
*/
@Autowired
private ISearchBiz searchBiz;
/**
* 注入栏目业务层
*/
@Autowired
private IColumnBiz columnBiz;
/**
* 实现前端页面的文章搜索
*
* @param request
* @param searchId
* 搜索id
* @param response
*/
@RequestMapping(value = "/{searchId}/search")
@ResponseBody
public void search(HttpServletRequest request, @PathVariable int searchId, HttpServletResponse response) {
SearchEntity _search = new SearchEntity();
_search.setAppId(BasicUtil.getAppId());
_search.setSearchId(searchId);
// 获取对应搜索模型
SearchEntity search = (SearchEntity) searchBiz.getEntity(_search);
//判断当前搜索是否有模板文件
if (ObjectUtil.isNull(search)) {
this.outJson(response, false);
}
Map map = BasicUtil.assemblyRequestMap();
// 读取请求字段
Map<String, String[]> field = request.getParameterMap();
Map<String, String> basicField = getMapByProperties(net.mingsoft.mdiy.constant.Const.BASIC_FIELD);
// 文章字段集合
Map<String, Object> articleFieldName = new HashMap<String, Object>();
// 遍历取字段集合
if (field != null) {
for (Entry<String, String[]> entry : field.entrySet()) {
if (entry != null) {
String value = entry.getValue()[0]; // 处理由get方法请求中文乱码问题
if (ObjectUtil.isNull(value)) {
continue;
}
if (request.getMethod().equals(RequestMethod.GET)) { // 如果是get方法需要将请求地址参数转吗
try {
value = new String(value.getBytes("ISO-8859-1"),Const.UTF8);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
// 若为文章字段,则保存至文章字段集合;否则保存至自定义字段集合
if (ObjectUtil.isNotNull(basicField.get(entry.getKey())) && ObjectUtil.isNotNull(value)) {
articleFieldName.put(entry.getKey(), value);
}
}
}
}
Map whereMap = this.searchMap(articleFieldName, null, null);
// 获取符合条件的文章总数
int count = articleBiz.getSearchCount(null, whereMap, BasicUtil.getAppId(), null);
int typeId = BasicUtil.getInt("categoryId",0);
//根据栏目确定模版
if(typeId>0){
ColumnEntity column = (ColumnEntity) columnBiz.getEntity(Integer.parseInt(map.get("typeid")+""));
map.put(ParserUtil.COLUMN, column);
//设置栏目编号
map.put(ParserUtil.TYPE_ID, typeId);
}
int size = BasicUtil.getInt(ParserUtil.SIZE,10);
//获取总数
map.put(ParserUtil.TOTAL, PageUtil.totalPage(count, size));
//设置页面显示数量
map.put(ParserUtil.RCOUNT, size);
//设置列表当前页
map.put(ParserUtil.PAGE_NO, BasicUtil.getInt(ParserUtil.PAGE_NO,1));
map.put(ParserUtil.URL, BasicUtil.getUrl());
Map searchMap = new HashMap<>();
searchMap.put(BASIC_TITLE, BasicUtil.getString(BASIC_TITLE));
map.put(SEARCH, searchMap);
//动态解析
map.put(ParserUtil.IS_DO,true);
//设置动态请求的模块路径
map.put(ParserUtil.MODEL_NAME, "mcms");
//解析后的内容
String content = "";
try {
//根据模板路径,参数生成
content = CmsParserUtil.generate(search.getSearchTemplets(),map, isMobileDevice(request));
} catch (TemplateNotFoundException e) {
e.printStackTrace();
} catch (MalformedTemplateNameException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
this.outString(response, content);
}
/**
* 动态组织查询where条件 获取查询条件的Map key:字段名 value:List 字段的各种判断值 list[0]:是否为自定义字段
* list[1]:是否为整形 list[2]:是否是等值查询 list[3]:字段的值
*
* @param articleField
* 文章字段
* @param diyFieldName
* 动态字段
* @param fields
* 模型对应的字段类型
* @return
*/
@SuppressWarnings({ "rawtypes", "unchecked" })
private Map<String, List> searchMap(Map<String, Object> articleField, Map<String, String> diyFieldName,
List fields) {
Map<String, List> map = new HashMap<String, List>();
// 遍历文章中的字段
for (Iterator iter = articleField.keySet().iterator(); iter.hasNext();) {
String key = iter.next().toString();
String fieldValue = articleField.get(key).toString();
List list = new ArrayList();
List listValue = new ArrayList();
// 是否为自定义字段
list.add(false);
// 是否是数字类型,true:不是
list.add(true);
// 是否是模糊查询3
list.add(true);
// 字段值
listValue.add(articleField.get(key));
list.add(listValue);
map.put(key, list);
}
// 遍历字段自定义字段
// for (Iterator iter = diyFieldName.keySet().iterator(); iter.hasNext();) {
// String key = iter.next().toString();
// String fieldValue = diyFieldName.get(key);
// // 获取字段实体
// ContentModelFieldEntity field = this.get(key, fields);
// if (field != null) {
// List list = new ArrayList();
// // 是否为自定义字段0
// list.add(0, true);
// List listValue = new ArrayList();
// // 字段的值
// if (field.getFieldType() == IContentModelFieldBiz.INT || field.getFieldType() == IContentModelFieldBiz.FLOAT) {
// // 判断是否为区间查询
//
// if (diyFieldName.get(key).toString().indexOf("-") > 0) {
// String[] values = fieldValue.toString().split("-");
// // 是否是数字类型,false:是
// list.add(false);
// // 是否是区间比较 false:是
// list.add(false);
// // 字段值1
// listValue.add(values[0]);
// listValue.add(values[1]);
// } else {
// // 是否是数字类型,false:是2
// list.add(false);
// // 是否是区间比较 true:不是3
// list.add(true);
// // 字段值 1
// listValue.add(fieldValue);
// }
// } else {
// // 是否是数字类型,true:不是2
// list.add(true);
// list.add(false);
// // 字段值 1
// listValue.add(fieldValue);
// }
// list.add(listValue);
// map.put(key, list);
// }
// }
return map;
}
/**
* 根据字段名称获取字段类型
*
* @param columnName
* 字段名称
* @return 字段实体
*/
private ContentModelFieldEntity get(String columnName, List<ContentModelFieldEntity> fields) {
if (fields == null) {
return null;
}
for (ContentModelFieldEntity field : fields) {
if (field.getFieldFieldName().equals(columnName)) {
return field;
}
}
return null;
}
}
\ No newline at end of file
/**
The MIT License (MIT) * Copyright (c) 2016 铭飞科技(mingsoft.net)
* Permission is hereby granted, free of charge, to any person obtaining a copy of
* this software and associated documentation files (the "Software"), to deal in
* the Software without restriction, including without limitation the rights to
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
* the Software, and to permit persons to whom the Software is furnished to do so,
* subject to the following conditions:
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
package net.mingsoft.cms.bean;
import net.mingsoft.basic.entity.ColumnEntity;
/**
* 文章解析生成
* @author 铭飞开源团队
* @date 2018年12月13日
*/
public class ColumnArticleIdBean extends ColumnEntity{
/**
* 文章编号
*/
private int articleId;
public int getArticleId() {
return articleId;
}
public void setArticleId(int articleId) {
this.articleId = articleId;
}
}
\ No newline at end of file
/**
The MIT License (MIT) * Copyright (c) 2016 铭飞科技(mingsoft.net)
* Permission is hereby granted, free of charge, to any person obtaining a copy of
* this software and associated documentation files (the "Software"), to deal in
* the Software without restriction, including without limitation the rights to
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
* the Software, and to permit persons to whom the Software is furnished to do so,
* subject to the following conditions:
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
package net.mingsoft.cms.biz;
import java.util.List;
import java.util.Map;
import net.mingsoft.basic.biz.IBasicBiz;
import net.mingsoft.cms.bean.ColumnArticleIdBean;
import net.mingsoft.cms.entity.ArticleEntity;
import net.mingsoft.mdiy.entity.ContentModelEntity;
/**
*
* @ClassName: IArticleBiz
* @Description:TODO(文章管理业务处理层 || 继承IBasicBiz业务处理层)
* @author: 铭飞开发团队
* @date: 2018年1月31日 下午2:53:32
*
* @Copyright: 2018 www.mingsoft.net Inc. All rights reserved.
*/
public interface IArticleBiz extends IBasicBiz {
/**
* @para webId 网站编号
* @param basicCategoryId
* 栏目编号
* @param flag
* 文章属性
* @param noFlag
* 文章不存在的属性
* @param article
* 文件实体
* @return
*/
@Deprecated
int count(int webId, int[] basicCategoryId, String flag, String noFlag, ArticleEntity article);
/**
* 通过分类id获取文章内容
*
* @param categoryId
* 分类编号
* @return
*/
@Deprecated
public ArticleEntity getByCategoryId(int categoryId);
/**
* 通过视图表来查询文章总数
*
* @param basicId
* 文章编号
*/
public ArticleEntity getById(int basicId);
/**
* 查找basicId下一篇文章
*
* @param appId
* 应用编号
* @param basicId
* 文章编号
* @return
*/
@Deprecated
public ArticleEntity getNext(int appId, int basicId, Integer categoryId);
/**
* 查找basicId上一篇文章
*
* @param appId
* 应用编号
* @param basicId
* 文章编号
* @return
*/
@Deprecated
public ArticleEntity getPrevious(int appId, int basicId, Integer categoryId);
/**
* 高级查询接口,主要提供给有自定义模型的栏目,返回總數
*
* @param contentModel
* 自定义模型
* @param whereMap
* 條件
* @param appId
* appId 應用編號
* @param ids
* 子类id
* @return 记录数量
* @see IArticleBiz.count
*/
@Deprecated
public int getSearchCount(ContentModelEntity contentModel, Map whereMap, int appId, List ids);
/**
* 文章查询
*
* @para webId 网站编号
* @param basicCategoryIds
* 栏目编号集合
* @param flag
* 文章属性
* @param noFlag
* 文章不存在的属性
* @param orderBy
* 排序字段
* @param order
* true 升序 false 降序 排序方式
* @param beginTime 开始时间
* @param endTime 结束时间
* @param article
* 文章实体,便于扩展查询
* @return 文章集合
*/
List<ArticleEntity> query(int webId, int[] basicCategoryIds, String flag, String noFlag, String orderBy,
boolean order, String beginTime,String endTime, ArticleEntity article);
/**
* 查询文章编号集合
* @param categoryId 栏目编号
* @param beginTime 开始时间
* @param endTime 结束时间
* @return
*/
public List<ColumnArticleIdBean> queryIdsByCategoryIdForParser(int categoryId, String beginTime,String endTime);
/**
* 根据页面栏目的id获取与其绑定的文章实体
*
* @param basicCategoryId
* @return 文章实体
*/
@Deprecated
public List<ArticleEntity> queryListByColumnId(int basicCategoryId);
/**
* 高级查询接口,主要提供给有自定义模型的栏目,
*
* @param conntentModel
* 自定义模型
* @param whereMap
* 條件
* @param page
* 分頁
* @param appId
* 應用編號
* @param ids
* 子类id
* @return 记录集合
*/
@Deprecated
public List<ArticleEntity> queryListForSearch(ContentModelEntity conntentModel, Map whereMap,
int appId, List ids, Map orders);
}
\ No newline at end of file
/**
The MIT License (MIT) * Copyright (c) 2016 铭飞科技(mingsoft.net)
* Permission is hereby granted, free of charge, to any person obtaining a copy of
* this software and associated documentation files (the "Software"), to deal in
* the Software without restriction, including without limitation the rights to
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
* the Software, and to permit persons to whom the Software is furnished to do so,
* subject to the following conditions:
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
package net.mingsoft.cms.biz.impl;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import net.mingsoft.basic.biz.ICategoryBiz;
import net.mingsoft.basic.biz.IColumnBiz;
import net.mingsoft.basic.biz.IModelBiz;
import net.mingsoft.basic.biz.impl.BasicBizImpl;
import net.mingsoft.cms.bean.ColumnArticleIdBean;
import net.mingsoft.cms.biz.IArticleBiz;
import net.mingsoft.cms.dao.IArticleDao;
import net.mingsoft.cms.entity.ArticleEntity;
import net.mingsoft.mdiy.biz.IContentModelBiz;
import net.mingsoft.mdiy.entity.ContentModelEntity;
import net.mingsoft.base.dao.IBaseDao;
import net.mingsoft.basic.util.BasicUtil;
/**
*
* @ClassName: ArticleBizImpl
* @Description:TODO(文章管理业务层实现类 || 继承BasicBizImpl || 实现IArticleBiz)
* @author: 铭飞开发团队
* @date: 2018年1月31日 下午2:53:53
*
* @Copyright: 2018 www.mingsoft.net Inc. All rights reserved.
*/
@Service("ArticleBizImpl")
public class ArticleBizImpl extends BasicBizImpl implements IArticleBiz {
/**
* 文章持久化处理
*/
private IArticleDao articleDao;
/**
* 栏目业务处理
*/
@Autowired
private ICategoryBiz categoryBiz;
/**
* 自定类型义业务处理
*/
@Autowired
private IColumnBiz columnBiz;
/**
* 自定义模型
*/
@Autowired
private IContentModelBiz contentModelBiz;
/**
* 模块管理业务层
*/
@Autowired
private IModelBiz modelBiz;
@Override
@Deprecated
public int count(int webId, int[] basicCategoryId, String flag, String noFlag,ArticleEntity article) {
return articleDao.count(webId, basicCategoryId, flag, noFlag,article);
}
/**
* 获取Article的持久化层
*
* @return 返回持Article的久化对象
*/
public IArticleDao getArticleDao() {
return articleDao;
}
@Override
@Deprecated
public ArticleEntity getByCategoryId(int categoryId) {
// TODO Auto-generated method stub
List list = articleDao.getByCategoryId(categoryId);
if (list != null && list.size() > 0) {
return (ArticleEntity) list.get(0);
}
return null;
}
@Override
public ArticleEntity getById(int basicId) {
// TODO Auto-generated method stub
ArticleEntity article = (ArticleEntity) articleDao.getEntity(basicId);
String contentModelTableName = null;
int ccmi = article.getColumn().getColumnContentModelId(); // 内容模型编号
if (ccmi > 0) {
ContentModelEntity contentModel = (ContentModelEntity) contentModelBiz.getEntity(ccmi);
contentModelTableName = contentModel.getCmTableName();
}
List temp = articleDao.getById(basicId, contentModelTableName);
if (temp != null && temp.size() > 0) {
return (ArticleEntity) temp.get(0);
}
return null;
}
/**
* 获取IBaseDao的持久化层
*
* @return 返回持articleDao的久化对象
*/
@Override
protected IBaseDao getDao() {
// TODO Auto-generated method stub
return articleDao;
}
@Override
@Deprecated
public ArticleEntity getNext(int appId, int basicId,Integer categoryId) {
// TODO Auto-generated method stub
return articleDao.getNextOrPrevious(appId, basicId, true,categoryId);
}
@Override
@Deprecated
public ArticleEntity getPrevious(int appId, int basicId,Integer categoryId) {
// TODO Auto-generated method stub
return articleDao.getNextOrPrevious(appId, basicId, false,categoryId);
}
@Override
@Deprecated
public int getSearchCount(ContentModelEntity contentModel,Map wherMap, int websiteId,List ids) {
if (contentModel!=null) {
return articleDao.getSearchCount(contentModel.getCmTableName(),wherMap, websiteId,ids);
}
return articleDao.getSearchCount(null,wherMap, websiteId,ids);
}
@Override
public List<ArticleEntity> query(int webId, int[] basicCategoryIds, String flag, String noFlag, String orderBy,
boolean order,String beginTime,String endTime, ArticleEntity article) {
// TODO Auto-generated method stub
if(article == null) {
article = new ArticleEntity();
}
return articleDao.query(webId, basicCategoryIds, flag, noFlag, orderBy, order, beginTime, endTime, article);
}
/**
* 根据页面栏目的id获取与其绑定的文章实体
*
* @param basicCategoryId
* @return 文章实体
*/
@Override
@Deprecated
public List<ArticleEntity> queryListByColumnId(int basicCategoryId) {
// TODO Auto-generated method stub
return articleDao.queryListByColumnId(basicCategoryId);
}
@Deprecated
public List<ArticleEntity> queryListForSearch(ContentModelEntity conntentModel, Map whereMap, int websiteId,List ids,Map orders) {
List<ArticleEntity> articleList = new ArrayList<ArticleEntity>();
String tableName = null;
if (conntentModel!=null) {
tableName = conntentModel.getCmTableName();
}
// 查找所有符合条件的文章实体
articleList = articleDao.queryListForSearch(tableName, whereMap, websiteId,ids,orders);
return articleList;
}
/**
* 设置Article的持久化层
*
* @param articleDao
*/
@Autowired
public void setArticleDao(IArticleDao articleDao) {
this.articleDao = articleDao;
}
@Override
public List<ColumnArticleIdBean> queryIdsByCategoryIdForParser(int categoryId, String beginTime,String endTime) {
return this.articleDao.queryIdsByCategoryIdForParser(categoryId,BasicUtil.getAppId(), beginTime, endTime);
}
}
\ No newline at end of file
/**
The MIT License (MIT) * Copyright (c) 2016 铭飞科技(mingsoft.net)
* Permission is hereby granted, free of charge, to any person obtaining a copy of
* this software and associated documentation files (the "Software"), to deal in
* the Software without restriction, including without limitation the rights to
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
* the Software, and to permit persons to whom the Software is furnished to do so,
* subject to the following conditions:
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
package net.mingsoft.cms.constant;
import net.mingsoft.base.constant.e.BaseEnum;
public enum ModelCode implements BaseEnum{
/**
* 内容:栏目模块编号
*/
CMS_COLUMN("02990000"),
/**
* 内容:文章模块编号
*/
CMS_ARTICLE("02980100"),
/**
* 内容:文章列表
*/
CMS_ARTICLE_BASIC("02980000"),
/**
* 内容:自定义搜索
*/
CMS_SEARCH("02050000"),
/**
* 内容:自定义模型
*/
CMS_CONTENT_MODEL("02060000"),
/**
* 内容:一键更新
*/
CMS_GENERATE_ALL("02070100"),
/**
* 内容:更新主页
*/
CMS_GENERATE_INDEX("02070200"),
/**
* 内容:更新文档
*/
CMS_GENERATE_ARTICLE("02070300"),
/**
* 内容: 更新栏目
*/
CMS_GENERATE_COLUMN("02070400"),
/**
* 内容:模版
*/
CMS_TEMPLETSKIN("02080000"),
/**
* 内容:织梦数据导入
*/
COM_DEDE_DATA_IMPORT("02090100"),
/**
* 内容:栏目属性管理模块
*/
CMS_COLUMN_TYPE("02090200");
/**
* 设置modelCode的常量
* @param code 常量
*/
ModelCode(String code) {
this.code = code;
}
private String code;
/**
* 返回该modelCode常量的字符串表示
* @return 字符串
*/
@Override
public String toString() {
// TODO Auto-generated method stub
return code;
}
/**
* 返回该modelCode常量的整型表示
* @return 整型
*/
public int toInt() {
// TODO Auto-generated method stub
return Integer.parseInt(code);
}
}
\ No newline at end of file
/**
The MIT License (MIT) * Copyright (c) 2016 铭飞科技(mingsoft.net)
* Permission is hereby granted, free of charge, to any person obtaining a copy of
* this software and associated documentation files (the "Software"), to deal in
* the Software without restriction, including without limitation the rights to
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
* the Software, and to permit persons to whom the Software is furnished to do so,
* subject to the following conditions:
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
package net.mingsoft.cms.constant.e;
import net.mingsoft.base.constant.e.BaseEnum;
/**
*
* @ClassName: ColumnTypeEnum
* @Description:TODO(文章栏目分类类型)
* @author: 铭飞开发团队
* @date: 2018年1月31日 下午2:55:18
*
* @Copyright: 2018 www.mingsoft.net Inc. All rights reserved.
*/
public enum ColumnTypeEnum implements BaseEnum {
/**
* 列表
*/
COLUMN_TYPE_LIST(1),
/**
* 单页
*/
COLUMN_TYPE_COVER(2),
/**
* 跳转地址
*/
COLUMN_TYPE_URL(3);
ColumnTypeEnum(Object code) {
this.code = code;
}
private Object code;
@Override
public int toInt() {
// TODO Auto-generated method stub
return Integer.valueOf(code+"");
}
}
\ No newline at end of file
/**
The MIT License (MIT) * Copyright (c) 2016 铭飞科技(mingsoft.net)
* Permission is hereby granted, free of charge, to any person obtaining a copy of
* this software and associated documentation files (the "Software"), to deal in
* the Software without restriction, including without limitation the rights to
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
* the Software, and to permit persons to whom the Software is furnished to do so,
* subject to the following conditions:
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
package net.mingsoft.cms.dao;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.annotations.Param;
import net.mingsoft.cms.bean.ColumnArticleIdBean;
import net.mingsoft.cms.entity.ArticleEntity;
import net.mingsoft.base.dao.IBaseDao;
/**
*
* @ClassName: IArticleDao
* @Description:TODO(文章管理持久化层 || 继承IBaseDao持久化层)
* @author: 铭飞开发团队
* @date: 2018年1月31日 下午2:55:33
*
* @Copyright: 2018 www.mingsoft.net Inc. All rights reserved.
*/
public interface IArticleDao extends IBaseDao {
/**
* @para webId 网站编号
* @param basicCategoryIds
* 栏目编号集合
* @param flag
* 文章属性
* @param noFlag
* 文章不存在的属性
* @param article
* 文章实体,便于扩展查询
* @return 文章总数
*/
@Deprecated
int count(@Param("webId") int webId, @Param("basicCategoryIds") int[] basicCategoryIds, @Param("flag") String flag,
@Param("noFlag") String noFlag, @Param("article") ArticleEntity article);
/**
* 通过分类id获取文章内容
*
* @param categoryId
* 分类编号
* @return 文章集合
*/
@Deprecated
List getByCategoryId(@Param("categoryId") int categoryId);
/**
* 通过视图表来查询文章总数
*
* @param basicId
* 文章编号
* @param contentModelTableName
* 对应模块表名称
*/
List getById(@Param("basicId") int basicId, @Param("contentModelTableName") String contentModelTableName);
/**
* 查找basicId上一篇文章
*
* @param appId
* 应用编号
* @param basicId
* 文章编号
* @param flag
* true:上一条 false:下一条
* @return
*/
ArticleEntity getNextOrPrevious(@Param("appId") int appId, @Param("basicId") int basicId,
@Param("flag") boolean flag, @Param("categoryId") Integer categoryId);
/**
* 根据查询文章实体总数
*
* @param tableName
* :自定义生成的表名
* @param map
* key:字段名 value:List 字段的各种判断值 list[0]:是否为自定义字段 list[1]:是否为整形
* list[2]:是否是等值查询 list[3]:字段的值
* @return 文章实体总数
*/
@Deprecated
int getSearchCount(@Param("tableName") String tableName, @Param("map") Map<String, List> map,
@Param("websiteId") int websiteId, @Param("ids") List ids);
/**
* 文章查询
*
* @para webId 网站编号
* @param basicCategoryIds
* 栏目编号集合
* @param flag
* 文章属性
* @param noFlag
* 文章不存在的属性
* @param orderBy
* 排序字段
* @param order
* true 升序 false 降序 排序方式
* @param article
* 文章实体,便于扩展查询
* @param beginTime 开始时间
* @param endTime 结束时间
* @return 文章集合
*/
List<ArticleEntity> query(@Param("webId") int webId, @Param("basicCategoryIds") int[] basicCategoryIds,
@Param("flag") String flag, @Param("noFlag") String noFlag, @Param("orderBy") String orderBy,
@Param("order") boolean order, @Param("beginTime") String beginTime,@Param("endTime") String endTime,
@Param("article") ArticleEntity article);
/**
* 根据页面栏目的id获取与其绑定的文章实体
*
* @param basicCategoryId
* @return 文章实体
*/
@Deprecated
List<ArticleEntity> queryListByColumnId(@Param("basicCategoryId") int basicCategoryId);
/**
* 根据查询文章实体
*
* @param tableName
* :自定义生成的表名
* @param map
* 获取查询条件的Map key:字段名 value:List 字段的各种判断值 list[0]:是否为自定义字段
* list[1]:是否为整形 list[2]:是否是等值查询 list[3]:字段的值
* @return 文章实体
*/
@Deprecated
List<ArticleEntity> queryListForSearch(@Param("tableName") String tableName, @Param("map") Map<String, List> map,
@Param("websiteId") int websiteId, @Param("ids") List ids,
@Param("sortMap") Map sortMap);
/**
* 查询文章编号集合
* @param categoryId 栏目编号
* @param appId 站点编号
* @param beginTime 开始时间
* @param endTime 结束时间
* @return
*/
public List<ColumnArticleIdBean> queryIdsByCategoryIdForParser(@Param("categoryId")int categoryId,@Param("appId")int appId , @Param("beginTime") String beginTime,@Param("endTime") String endTime);
}
\ No newline at end of file
This diff is collapsed.
/**
The MIT License (MIT) * Copyright (c) 2016 铭飞科技(mingsoft.net)
* Permission is hereby granted, free of charge, to any person obtaining a copy of
* this software and associated documentation files (the "Software"), to deal in
* the Software without restriction, including without limitation the rights to
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
* the Software, and to permit persons to whom the Software is furnished to do so,
* subject to the following conditions:
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
package net.mingsoft.cms.entity;
import java.io.File;
import java.util.Arrays;
import net.mingsoft.basic.entity.AppEntity;
import net.mingsoft.basic.entity.BasicEntity;
import net.mingsoft.basic.entity.ColumnEntity;
import org.apache.commons.lang3.StringUtils;
import cn.hutool.core.util.ArrayUtil;
import net.mingsoft.base.constant.Const;
import net.mingsoft.mdiy.util.ParserUtil;
/**
*
* @ClassName: ArticleEntity
* @Description:TODO(文章模块实体类 || 继承BasicEntity实体)
* @author: 铭飞开发团队
* @date: 2018年1月31日 下午2:55:48
*
* @Copyright: 2018 www.mingsoft.net Inc. All rights reserved.
*/
public class ArticleEntity extends BasicEntity{
/**
* 文章Id
*/
private int articleID;
/**
* 文章内容
*/
private String articleContent;
/**
* 文章作者
*/
private String articleAuthor;
/**
* 文章属性
*/
private String articleType ;
/**
* 文章的来源
*/
private String articleSource;
/**
* 文章跳转链接地址
*/
private String articleUrl;
/**
* 文章关键字
*/
private String articleKeyword;
/**
* 文章自定义显示顺序
*/
@Deprecated
private int articleFreeOrder;
/**
* 站点d
*/
private int articleWebId;
/**
* 文章url地址 主要是用户生成html使用
*/
private String articleLinkURL;
/**
* 文章分类url地址,主要是用户生成html使用
*/
private String articleTypeLinkURL;
/**
* 一对一管理栏目
*/
private ColumnEntity column;
/**
* 获取文章实体所属的栏目实体
* @return
*/
public ColumnEntity getColumn() {
return column;
}
/**
* 设置文章所属的栏目实体
* @param column
*/
public void setColumn(ColumnEntity column) {
this.column = column;
}
public String getArticleTypeLinkURL() {
return articleTypeLinkURL;
}
public void setArticleTypeLinkURL(String articleTypeLinkURL) {
this.articleTypeLinkURL = articleTypeLinkURL;
}
public String getArticleLinkURL() {
return articleLinkURL;
}
public void setArticleLinkURL(String articleLinkURL) {
this.articleLinkURL = articleLinkURL;
}
/**
* 获取文章作者
* @return 返回文章作者
*/
public String getArticleAuthor() {
return articleAuthor;
}
/**
* 获取文章内容
* @return 返回文章内容
*/
public String getArticleContent() {
return articleContent;
}
/**
* 获取自定义显示顺序
* @return
*/
public int getArticleFreeOrder() {
return articleFreeOrder;
}
/**
* 获取文章Id
* @return 返回文章Id
*/
public int getArticleID() {
return articleID;
}
/**
* 获取文章关键字
* @return 返回文章关键字
*/
public String getArticleKeyword() {
return articleKeyword;
}
/**
* 获取文章的来源
* @return 返回文章的来源
*/
public String getArticleSource() {
return articleSource;
}
/**
* 获取文章属性
* @return 返回文章属性
*/
public String getArticleType() {
return articleType;
}
/**
* 获取文章跳转链接
* @return 返回文章跳转链接
*/
public String getArticleUrl() {
return articleUrl;
}
/**
* 获取文章站点id
* @return
*/
public int getArticleWebId() {
return articleWebId;
}
/**
* 设置文章作者
* @param articleAuthor 传入文章作者
*/
public void setArticleAuthor(String articleAuthor) {
this.articleAuthor = articleAuthor;
}
/**
* 设置文章内容
* @param articleContent 传入文章内容
*/
public void setArticleContent(String articleContent) {
this.articleContent = articleContent;
}
/**
* 设置文章自定义显示循序排序
* @param articleFreeOrder
*/
public void setArticleFreeOrder(int articleFreeOrder) {
this.articleFreeOrder = articleFreeOrder;
}
/**
* 设置文章Id
* @param articleID 传入文章Id
*/
public void setArticleID(int articleID) {
this.articleID = articleID;
}
/**
* 设置文章关键字
* @param articleKeyword 传入文章关键字列表
*/
public void setArticleKeyword(String articleKeyword) {
this.articleKeyword = articleKeyword;
}
/**
* 设置文章的来源
* @param articleSource 传入文章的来源
*/
public void setArticleSource(String articleSource) {
this.articleSource = articleSource;
}
/**
* 设置文章属性
* @param articleType 传入文章属性
*/
public void setArticleType(String articleType) {
this.articleType = articleType;
}
/**
* 设置文章跳转链接
* @param articleUrl 传入文章跳转链接地址
*/
public void setArticleUrl(String articleUrl) {
this.articleUrl = articleUrl;
}
/**
* 设置文章站点id
* @param articleWebId
*/
public void setArticleWebId(int articleWebId) {
this.articleWebId = articleWebId;
}
public String getArticleUrl(AppEntity app) {
if (!StringUtils.isBlank(app.getAppMobileStyle())) {
return app.getAppHostUrl()+ParserUtil.HTML+Const.SEPARATOR+ParserUtil.MOBILE+Const.SEPARATOR+this.getArticleUrl();
}
return app.getAppHostUrl()+Const.SEPARATOR+ParserUtil.HTML+Const.SEPARATOR+this.getArticleUrl();
}
}
\ No newline at end of file
#mcms\u7248\u672c
version=d3a98fefcb242db78da5fc31608ff247
templet.file=\u6a21\u677f\u6587\u4ef6\u4e0d\u5b58\u5728
\ No newline at end of file
package net.mingsoft.cms.util;
import java.io.File;
import java.io.IOException;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.commons.lang3.StringUtils;
import net.mingsoft.basic.entity.ColumnEntity;
import net.mingsoft.cms.bean.ColumnArticleIdBean;
import net.mingsoft.cms.constant.e.ColumnTypeEnum;
import net.mingsoft.mdiy.biz.IContentModelBiz;
import net.mingsoft.mdiy.entity.ContentModelEntity;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.PageUtil;
import freemarker.cache.FileTemplateLoader;
import freemarker.core.ParseException;
import freemarker.template.MalformedTemplateNameException;
import freemarker.template.Template;
import freemarker.template.TemplateException;
import freemarker.template.TemplateNotFoundException;
import net.mingsoft.base.constant.Const;
import net.mingsoft.basic.util.BasicUtil;
import net.mingsoft.basic.util.SpringUtil;
import net.mingsoft.mdiy.parser.TagParser;
import net.mingsoft.mdiy.util.ParserUtil;
public class CmsParserUtil extends ParserUtil {
/**
* 指定模板,指定路径进行生成静态页面,会自定识别pc与移动端
*
* @param templatePath
* 模板路径
* @param targetPath
* 生成后的路径,默认生成的html文件,所以不能带.html后缀,
* @throws IOException
*/
public static void generate(String templatePath, String targetPath) throws IOException {
Map map = new HashMap();
map.put(IS_DO, false);
String content = CmsParserUtil.generate(templatePath, map, false);
FileUtil.writeString(content, ParserUtil.buildHtmlPath(targetPath), Const.UTF8);
// 生成移动页面
if (ObjectUtil.isNotNull(BasicUtil.getApp().getAppMobileStyle())) {
// 手机端m
map.put(ParserUtil.MOBILE, BasicUtil.getApp().getAppMobileStyle());
content = CmsParserUtil.generate(templatePath, map, true);
FileUtil.writeString(content, ParserUtil.buildMobileHtmlPath(targetPath), Const.UTF8);
}
}
/**
* 生成静态列表页
* @param column
* @param articleIdTotal
* @throws TemplateNotFoundException
* @throws MalformedTemplateNameException
* @throws ParseException
* @throws IOException
*/
public static void generateList(ColumnEntity column, int articleIdTotal)
throws TemplateNotFoundException, MalformedTemplateNameException, ParseException, IOException {
// 只初始化一次cfg
if (ftl == null) {
ftl = new FileTemplateLoader(new File(ParserUtil.buildTempletPath()));
cfg.setTemplateLoader(ftl);
}
// 移动端模板
Template mobileTemplate = cfg.getTemplate(
BasicUtil.getApp().getAppMobileStyle() + File.separator + column.getColumnListUrl(), Const.UTF8);
// pc端模板
Template template = cfg.getTemplate(File.separator + column.getColumnListUrl(), Const.UTF8);
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;
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);
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);
TagParser tag = new TagParser(content,parserParams);
FileUtil.writeString(tag.rendering(), columnListPath, Const.UTF8);
// 判断是手机端生成还是pc端,防止重复生成
if (ObjectUtil.isNotNull(BasicUtil.getApp().getAppMobileStyle())) {
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++;
}
} catch (TemplateException e) {
e.printStackTrace();
}
}
/**
* 生成内容
*
* @param articleIdList
* 文章集合
* @return
* @throws IOException
* @throws ParseException
* @throws MalformedTemplateNameException
* @throws TemplateNotFoundException
*/
public static void generateBasic(List<ColumnArticleIdBean> articleIdList)
throws TemplateNotFoundException, MalformedTemplateNameException, ParseException, IOException {
Map<Object, Object> contentModelMap = new HashMap<Object, Object>();
ContentModelEntity contentModel = null;
String writePath = null;
// 记录已经生成了文章编号
List<Integer> generateIds = new ArrayList<>();
// 生成文档
for (int ai = 0; ai < articleIdList.size();) {
// 文章编号
int articleId = articleIdList.get(ai).getArticleId();
// 文章的栏目路径
String articleColumnPath = articleIdList.get(ai).getColumnPath();
// 文章的模板路径
String columnUrl = articleIdList.get(ai).getColumnUrl();
// 文章的栏目模型编号
int columnContentModelId = articleIdList.get(ai).getColumnContentModelId();
// 文章是否已经生成了,生成了就跳过
if (generateIds.contains(articleId)) {
ai++;
continue;
}
// 判断文件是否存在,若不存在弹出返回信息
if (!FileUtil.exist(ParserUtil.buildTempletPath(columnUrl))) {
ai++;
continue;
}
// 将
generateIds.add(articleId);
// 组合文章路径如:html/站点id/栏目id/文章id.html
writePath = ParserUtil.buildHtmlPath(articleColumnPath + File.separator + articleId);
//如果是封面就生成index.html
if(articleIdList.get(ai).getColumnType() == ColumnTypeEnum.COLUMN_TYPE_COVER.toInt()) {
writePath = ParserUtil.buildHtmlPath(articleColumnPath + File.separator + ParserUtil.INDEX);
}
Map<String, Object> parserParams = new HashMap<String, Object>();
// 判断当前栏目是否有自定义模型
if (columnContentModelId > 0) {
// 通过当前栏目的模型编号获取,自定义模型表名
if (contentModelMap.containsKey(columnContentModelId)) {
parserParams.put(TABLE_NAME, contentModel.getCmTableName());
} else {
// 通过栏目模型编号获取自定义模型实体
contentModel = (ContentModelEntity) SpringUtil.getBean(IContentModelBiz.class)
.getEntity(columnContentModelId);
// 将自定义模型编号设置为key值
contentModelMap.put(columnContentModelId, contentModel.getCmTableName());
parserParams.put(TABLE_NAME, contentModel.getCmTableName());
}
}
parserParams.put(ID, articleId);
// 第一篇文章没有上一篇
if (ai > 0) {
parserParams.put(PRE_ID, articleIdList.get(ai - 1).getArticleId());
}
// 最后一篇文章没有下一篇
if (ai + 1 < articleIdList.size()) {
parserParams.put(NEXT_ID, articleIdList.get(ai + 1).getArticleId());
}
parserParams.put(IS_DO, false);
String content = CmsParserUtil.generate(articleIdList.get(ai).getColumnUrl(), parserParams, false);
FileUtil.writeString(content, writePath, Const.UTF8);
// 手机端
if (StringUtils.isNotEmpty(BasicUtil.getApp().getAppMobileStyle())) {
writePath = ParserUtil.buildMobileHtmlPath(articleColumnPath + File.separator + articleId);
//如果是封面就生成index.html
if(articleIdList.get(ai).getColumnType() == ColumnTypeEnum.COLUMN_TYPE_COVER.toInt()) {
writePath = ParserUtil.buildMobileHtmlPath(articleColumnPath + File.separator + ParserUtil.INDEX);
}
// 判断文件是否存在,若不存在弹出返回信息
if (!FileUtil.exist(ParserUtil.buildTempletPath(MOBILE + File.separator + columnUrl))) {
ai++;
continue;
}
parserParams.put(MOBILE, BasicUtil.getApp().getAppMobileStyle());
content = CmsParserUtil.generate(articleIdList.get(ai).getColumnUrl(), parserParams, true);
FileUtil.writeString(content, writePath, Const.UTF8);
}
ai++;
}
}
}
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