|
|
|
|
/**
|
|
|
|
|
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 cn.hutool.core.util.ObjectUtil;
|
|
|
|
|
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.constant.ModelCode;
|
|
|
|
|
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.URL, BasicUtil.getUrl());
|
|
|
|
|
//动态解析
|
|
|
|
|
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, null,false,getResString("err.empty", this.getResString("typeid")));
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
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));
|
|
|
|
|
if(ObjectUtil.isNull(article)){
|
|
|
|
|
this.outJson(resp, null,false,getResString("err.empty", this.getResString("id")));
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
//根据文章编号查询栏目详情模版
|
|
|
|
|
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);
|
|
|
|
|
}
|
|
|
|
|
}
|