删除旧文章

master
tianbj 6 years ago
parent 1d7e5413d6
commit ffe26f9348
  1. 631
      src/main/java/net/mingsoft/cms/action/ArticleAction.java
  2. 317
      src/main/java/net/mingsoft/cms/action/ColumnAction.java
  3. 233
      src/main/java/net/mingsoft/cms/action/web/ArticleAction.java
  4. 266
      src/main/java/net/mingsoft/cms/action/web/ContentAction.java
  5. 191
      src/main/java/net/mingsoft/cms/biz/IArticleBiz.java
  6. 222
      src/main/java/net/mingsoft/cms/biz/impl/ArticleBizImpl.java
  7. 169
      src/main/java/net/mingsoft/cms/dao/IArticleDao.java
  8. 624
      src/main/java/net/mingsoft/cms/dao/IArticleDao.xml
  9. 293
      src/main/java/net/mingsoft/cms/entity/ArticleEntity.java

@ -1,631 +0,0 @@
/**
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.sql.Timestamp;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import com.alibaba.fastjson.JSONArray;
import net.mingsoft.base.entity.BaseEntity;
import net.mingsoft.base.filter.DateValueFilter;
import net.mingsoft.base.filter.DoubleValueFilter;
import net.mingsoft.basic.action.BaseAction;
import net.mingsoft.basic.bean.EUListBean;
import net.mingsoft.basic.biz.IColumnBiz;
import net.mingsoft.basic.entity.ColumnEntity;
import net.mingsoft.basic.util.ArrysUtil;
import net.mingsoft.basic.util.BasicUtil;
import net.mingsoft.basic.util.FileUtil;
import net.mingsoft.basic.util.StringUtil;
import net.mingsoft.cms.biz.IArticleBiz;
import net.mingsoft.cms.constant.ModelCode;
import net.mingsoft.cms.constant.e.ColumnTypeEnum;
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 net.mingsoft.mdiy.entity.ContentModelFieldEntity;
import net.mingsoft.mdiy.util.DictUtil;
import net.mingsoft.mdiy.util.ParserUtil;
/**
* @ClassName: ArticleAction
* @Description:TODO 文章管理
* @author: 铭飞开发团队
* @date: 2018年1月31日 下午2:51:39
*
* @Copyright: 2018 www.mingsoft.net Inc. All rights reserved.
*/
@Controller
@RequestMapping("/${ms.manager.path}/cms/article")
public class ArticleAction extends BaseAction {
/**
* 上传路径
*/
@Value("${ms.upload.path}")
private String uploadFloderPath;
/**
* 业务层的注入
*/
@Autowired
private IColumnBiz columnBiz;
/**
* 文章管理业务处理层
*/
@Autowired
private IArticleBiz articleBiz;
/**
* 字段管理业务层
*/
@Autowired
private IContentModelFieldBiz fieldBiz;
/**
* 内容管理业务层
*/
@Autowired
private IContentModelBiz contentBiz;
/**
* 判断是否为checkbox类型
*/
private static final int checkBox = 11;
/**
* 加载页面显示所有文章信息
*
* @param request
* @return 返回文章页面显示地址
*/
@SuppressWarnings("static-access")
@RequestMapping("/index")
public String index(HttpServletRequest request, ModelMap mode, HttpServletResponse response) {
// 获取站点id
int appId = BasicUtil.getAppId();
List<ColumnEntity> list = columnBiz.queryAll(appId, this.getModelCodeId(request, ModelCode.CMS_COLUMN));
request.setAttribute("listColumn", JSONArray.toJSONString(list));
// 返回路径
return "/cms/article/index"; // 这里表示显示/manager/cms/article/article_list.ftl
}
/**
* 返回一个文章列表框架和一些基础数据
* @param article
* @param request
* @param mode
* @param response
* @param categoryId
* @return 返回一个文章列表界面
*/
@RequestMapping("/{categoryId}/main")
public String main(@ModelAttribute ArticleEntity article, HttpServletRequest request, ModelMap mode,
HttpServletResponse response, @PathVariable int categoryId) {
String articleType = request.getParameter("articleType");
String isParent = BasicUtil.getString("isParent", "false");
mode.addAttribute("isParent", isParent);
//使用糊涂工具排序使全部属性排在第一个
mode.addAttribute("articleTypeList", DictUtil.list("文章属性"));
mode.addAttribute("articleType", articleType);
mode.addAttribute("categoryId", categoryId);
//返回文章页面显示地址
return "/cms/article/article_main";
}
/**
* 加载页面显示所有文章信息
*
* @param request
* @return 返回文章页面显示数据
*/
@RequestMapping("/{categoryId}/list")
public void list(@ModelAttribute ArticleEntity article, HttpServletRequest request, ModelMap mode,
HttpServletResponse response, @PathVariable int categoryId) {
int[] basicCategoryIds = null;
String articleType = article.getArticleType();
if(StringUtils.isEmpty(articleType)){
articleType = BasicUtil.getString("articleTypeStr");
}
if(!StringUtils.isEmpty(articleType) && articleType.equals("a")){
articleType = null;
}
if(categoryId > 0){
basicCategoryIds = columnBiz.queryChildrenCategoryIds(categoryId, BasicUtil.getAppId(),
BasicUtil.getModelCodeId(ModelCode.CMS_COLUMN));
}
int appId = BasicUtil.getAppId();
BasicUtil.startPage();
article.setBasicDisplay(-1);
//查询文章列表
List<ArticleEntity> articleList = articleBiz.query(appId, basicCategoryIds, articleType, null, null, true, null, null, article);
EUListBean _list = new EUListBean(articleList, (int) BasicUtil.endPage(articleList).getTotal());
//将数据以json数据的形式返回
this.outJson(response, net.mingsoft.base.util.JSONArray.toJSONString(_list, new DoubleValueFilter(),new DateValueFilter("yyyy-MM-dd")));
}
/**
* 添加文章页面
*
* @return 保存文章的页面地址
*/
@SuppressWarnings("static-access")
@RequestMapping("/add")
public String add(ModelMap mode, HttpServletRequest request) {
int categoryId = BasicUtil.getInt("categoryId", 0);
String categoryTitle = request.getParameter("categoryTitle");
// 文章属性
mode.addAttribute("articleType", DictUtil.list("文章属性"));
// 站点ID
int appId = BasicUtil.getAppId();
List<ColumnEntity> list = columnBiz.queryAll(appId, this.getModelCodeId(request, ModelCode.CMS_COLUMN));
mode.addAttribute("appId", appId);
mode.addAttribute("listColumn", JSONArray.toJSONString(list));
boolean isEditCategory = false; // 新增,不是单篇
int columnType=1;//新增,不是单篇
if(categoryId != 0){
// 获取栏目id
ColumnEntity column = (ColumnEntity) columnBiz.getEntity(categoryId);
columnType = column.getColumnType();
// 判断栏目是否为"",如果是"",就重新赋值
if (StringUtils.isBlank(categoryTitle)) {
categoryTitle = column.getCategoryTitle();
}
// 判断栏目是否是单篇
if (column != null && column.getColumnType() == ColumnTypeEnum.COLUMN_TYPE_COVER.toInt()) {
isEditCategory = true; // 是单页
columnType = column.getColumnType();;
}
}
mode.addAttribute("categoryTitle", categoryTitle);
mode.addAttribute("isEditCategory", isEditCategory); // 新增状态
mode.addAttribute("columnType", columnType);
mode.addAttribute("categoryId", categoryId);
mode.addAttribute("articleImagesUrl", uploadFloderPath+net.mingsoft.base.constant.Const.SEPARATOR
+BasicUtil.getAppId()+net.mingsoft.base.constant.Const.SEPARATOR);
// 添加一个空的article实体
ArticleEntity article = new ArticleEntity();
mode.addAttribute("article", article);
mode.addAttribute("action", "save");
// 返回路径
return "/cms/article/article_form"; // 这里表示显示/manager/cms/article/article_save.ftl
}
/**
* 获取表单信息进行保存
*
* @param article
* 文章对象
*/
@RequestMapping("/save")
@RequiresPermissions("article:save")
public void save(@ModelAttribute ArticleEntity article, HttpServletRequest request, HttpServletResponse response) {
// 获取站点id
int appId = BasicUtil.getAppId();
// 验证文章,文章自由排序,栏目id
if (!validateForm(article, response)) {
this.outJson(response, ModelCode.CMS_ARTICLE, false);
}
article.setBasicUpdateTime(new Timestamp(System.currentTimeMillis()));
// 文章类型
String langtyp[] = request.getParameterValues("articleType");
if (langtyp != null) {
StringBuffer sb = new StringBuffer();
for (int j = 0; j < langtyp.length; j++) {
sb.append(langtyp[j] + ",");
}
}
String checkboxType = BasicUtil.getString("checkboxType");
//如果选择一个属性不做排序操作
if(!StringUtils.isEmpty(checkboxType) && checkboxType.length()>2){
// 文章类型排序
article.setArticleType(ArrysUtil.sort(checkboxType, ",")+",");
}else{
article.setArticleType(checkboxType);
}
ColumnEntity column = (ColumnEntity) columnBiz.getEntity(article.getBasicCategoryId());
article.setColumn(column);
// 添加文章所属的站点id
article.setArticleWebId(appId);
// 绑定模块编号
article.setBasicModelId(BasicUtil.getInt("modelId"));
// 保存文章实体
articleBiz.saveBasic(article);
if (column.getColumnType() == ColumnTypeEnum.COLUMN_TYPE_LIST.toInt()) {// 列表
article.setArticleUrl(column.getColumnPath() + File.separator + article.getBasicId() + ParserUtil.HTML_SUFFIX);
} else if (column.getColumnType() == ColumnTypeEnum.COLUMN_TYPE_COVER.toInt()) {// 单篇
article.setArticleUrl(column.getColumnPath() + File.separator + ParserUtil.INDEX+ParserUtil.HTML_SUFFIX);
}
articleBiz.updateBasic(article);
// 判断栏目是否存在新增字段
if (column.getColumnContentModelId() != 0) {
// 保存所有的字段信息
List<ContentModelFieldEntity> listField = fieldBiz.queryListByCmid(column.getColumnContentModelId());
// 获取内容模型实体
ContentModelEntity contentModel = (ContentModelEntity) contentBiz
.getEntity(column.getColumnContentModelId());
if (contentModel != null) {
// 保存新增字段的信息
Map<String, Object> param = this.checkField(listField, request, article.getBasicId());
fieldBiz.insertBySQL(contentModel.getCmTableName(), param);
}
}
//
if (article.getColumn().getColumnType() == ColumnTypeEnum.COLUMN_TYPE_COVER.toInt()) {
this.outJson(response, ModelCode.CMS_ARTICLE, true, "" + article.getColumn().getCategoryId(), article.getBasicId());
} else {
this.outJson(response, ModelCode.CMS_ARTICLE, true, article.getColumn().getCategoryId()+"", "");
}
}
/**
* 验证表单
*
* @param article
* @param response
* @return 返回Boolean类型 true通过false:有错
*/
public boolean validateForm(ArticleEntity article, HttpServletResponse response) {
// 对表单数据进行再次验证
// 验证文章标题是否为空
if (StringUtils.isBlank(article.getBasicTitle())) {
this.outJson(response, ModelCode.CMS_ARTICLE, false,
getResString("err.empty", this.getResString("basicTitle")));
return false;
}
// 验证文章所属是否为0
if (article.getBasicCategoryId() == 0) {
this.outJson(response, ModelCode.CMS_ARTICLE, false,
getResString("err.empty", this.getResString("basicCategoryId")));
return false;
}
// 验证文章标题长度,若超过定义长度则截取
if (!StringUtil.checkLength(article.getBasicTitle(), 1, 300)) {
this.outJson(response, ModelCode.CMS_ARTICLE, false,
getResString("err.length", this.getResString("basicTitle"), "1", "300"));
return false;
}
// 验证文章来源长度,若超过定义长度则截取
if (!StringUtils.isBlank(article.getArticleSource())
&& !StringUtil.checkLength(article.getArticleSource(), 1, 300)) {
this.outJson(response, ModelCode.CMS_ARTICLE, false,
getResString("err.length", this.getResString("articleSource"), "1", "300"));
return false;
}
// 验证文章作者长度,若超过定义长度则截取
if (!StringUtils.isBlank(article.getArticleAuthor())
&& !StringUtil.checkLength(article.getArticleAuthor(), 1, 12)) {
this.outJson(response, ModelCode.CMS_ARTICLE, false,
getResString("err.length", this.getResString("articleAuthor"), "1", "12"));
return false;
}
// 验证文章描述长度,若超过定义长度则截取
if (!StringUtils.isBlank(article.getBasicDescription())
&& !StringUtil.checkLength(article.getBasicDescription(), 1, 400)) {
this.outJson(response, ModelCode.CMS_ARTICLE, false,
getResString("err.length", this.getResString("basicDescription"), "1", "400"));
return false;
}
// 验证文章关键字长度,若超过定义长度则截取
if (!StringUtils.isBlank(article.getArticleKeyword())
&& !StringUtil.checkLength(article.getArticleKeyword(), 1, 155)) {
this.outJson(response, ModelCode.CMS_ARTICLE, false,
getResString("err.length", this.getResString("articleKeyword"), "1", "155"));
return false;
}
return true;
}
/**
* 更新文章
*
* @param basicId
* 文章id
* @param article
* 文章实体
* @param request
* @param response
*/
@RequestMapping("/{basicId}/update")
@RequiresPermissions("article:update")
public void update(@PathVariable int basicId, @ModelAttribute ArticleEntity article, HttpServletRequest request,
HttpServletResponse response) {
// 获取站点id
int appId = BasicUtil.getAppId();
article.setBasicUpdateTime(new Timestamp(System.currentTimeMillis()));
// 文章类型
String checkboxType = BasicUtil.getString("checkboxType");
//如果选择一个属性不做排序操作
if(!StringUtils.isEmpty(checkboxType) && checkboxType.length()>2){
// 文章类型排序
article.setArticleType(ArrysUtil.sort(checkboxType, ",")+",");
}else{
article.setArticleType(checkboxType);
}
// 获取更改前的文章实体
ArticleEntity oldArticle = (ArticleEntity) articleBiz.getEntity(basicId);
// 获取栏目实体
ColumnEntity column = (ColumnEntity) columnBiz.getEntity(article.getBasicCategoryId());
if (oldArticle != null) {
// 获取更改前的文章所属栏目实体
ColumnEntity oldColumn = (ColumnEntity) columnBiz.getEntity(oldArticle.getBasicCategoryId());
// 通过表单类型id判断是否更改了表单类型,如果更改则先删除记录
if (oldColumn.getColumnContentModelId() != column.getColumnContentModelId()) {
// 获取旧的内容模型id
ContentModelEntity contentModel = (ContentModelEntity) contentBiz
.getEntity(oldColumn.getColumnContentModelId());
// 删除旧的内容模型中保存的值
Map<String, Integer> wheres = new HashMap<String, Integer>();
wheres.put("basicId", article.getBasicId());
if (contentModel != null) {
fieldBiz.deleteBySQL(contentModel.getCmTableName(), wheres);
}
// 判断栏目是否存在新增字段
if (column.getColumnContentModelId() != 0) {
// 保存所有的字段信息
List<ContentModelFieldEntity> listField = fieldBiz.queryListByCmid(column.getColumnContentModelId());
ContentModelEntity newContentModel = (ContentModelEntity) contentBiz
.getEntity(column.getColumnContentModelId());
if (newContentModel != null) {
Map<String, Object> param = this.checkField(listField, request, article.getBasicId());
fieldBiz.insertBySQL(newContentModel.getCmTableName(), param);
}
}
}
}
//判断是否修改了所属栏目
if(oldArticle.getBasicCategoryId()!=article.getBasicCategoryId()){
//拼接栏目路径和文章编号及文件后缀
article.setArticleUrl(column.getColumnPath() + File.separator + article.getBasicId() + ParserUtil.HTML_SUFFIX);
}
// 添加文章所属的站点id
article.setArticleWebId(appId);
// 设置文章所属的栏目实体
article.setColumn(column);
article.setBasicUpdateTime(new Date());
String articleType = request.getParameter("articleTypeJson");
articleBiz.updateBasic(article);
// 判断该文章是否存在新增字段
if (column.getColumnContentModelId() != 0) {
// 保存所有的字段信息
List<ContentModelFieldEntity> listField = fieldBiz.queryListByCmid(column.getColumnContentModelId());
// // update中的where条件
Map<String, Integer> where = new HashMap<String, Integer>();
// 压入默认的basicId字段
where.put("basicId", article.getBasicId());
// 遍历字段的信息
Map<String, Object> param = this.checkField(listField, request, article.getBasicId());
ContentModelEntity contentModel = (ContentModelEntity) contentBiz
.getEntity(column.getColumnContentModelId());
if (contentModel != null) {
// 遍历所有的字段实体,得到字段名列表信息
List<String> listFieldName = new ArrayList<String>();
listFieldName.add("basicId");
// 查询新增字段的信息
List fieldLists = fieldBiz.queryBySQL(contentModel.getCmTableName(), listFieldName, where);
// 判断新增字段表中是否存在该文章,不存在则保存,否则更新
if (fieldLists == null || fieldLists.size() == 0) {
fieldBiz.insertBySQL(contentModel.getCmTableName(), param);
} else {
fieldBiz.updateBySQL(contentModel.getCmTableName(), param, where);
}
}
}
switch (column.getColumnType()) {
case ColumnEntity.COLUMN_TYPE_COVER:
this.outJson(response, ModelCode.CMS_ARTICLE, true, column.getCategoryId() + "", "");
break;
case ColumnEntity.COLUMN_TYPE_LIST:
this.outJson(response, ModelCode.CMS_ARTICLE, true, column.getCategoryId() + "",
this.redirectBack(request, false));
}
}
/**
* 显示更新内容
*
* @param request
* @return 修改文章的页面地址
*/
@RequestMapping("/{id}/edit")
public String edit(@PathVariable int id, ModelMap model, HttpServletRequest request) {
// 如果_categoryId大于0表示是编辑封面栏目,应该先查询分类下面的唯一一篇文章
String categoryTitle = request.getParameter("categoryTitle");
// 板块id
int categoryId = BasicUtil.getInt("categoryId", 0);
ArticleEntity articleEntity = null;
int appId = BasicUtil.getAppId();
model.addAttribute("appId", appId);
model.addAttribute("articleImagesUrl", "/upload/"+BasicUtil.getAppId()+"/");
model.addAttribute("action", "update");
if (categoryId > 0) { // 分类获取文章
articleEntity = articleBiz.getByCategoryId(categoryId);
ColumnEntity column = articleEntity.getColumn();
int columnType = column.getColumnType();
model.addAttribute("article", articleEntity);
// 文章属性
model.addAttribute("articleType", DictUtil.list("文章属性"));
model.addAttribute("categoryTitle", categoryTitle);
model.addAttribute("categoryId", categoryId);// 编辑封面
model.addAttribute("isEditCategory", true);// 编辑封面
model.addAttribute("columnType", columnType);
return "/cms/article/article_form";
} else if (id > 0) { // 文章id获取
// 允许编辑文章时更改分类
List<ColumnEntity> list = columnBiz.queryAll(appId, this.getModelCodeId(request, ModelCode.CMS_COLUMN));
@SuppressWarnings("static-access")
String listJsonString = JSONArray.toJSONString(list);
request.setAttribute("listColumn", listJsonString);
// 文章属性
model.addAttribute("articleType", DictUtil.list("文章属性"));
articleEntity = (ArticleEntity) articleBiz.getEntity(id);
model.addAttribute("article", articleEntity);
// 判断是否是封面类型的栏目,如果是封面类型的栏目有些信息需要屏蔽,例如分类
ColumnEntity column = articleEntity.getColumn();
int columnType = column.getColumnType();
if (column.getColumnType() == ColumnEntity.ColumnTypeEnum.COLUMN_TYPE_COVER.toInt()) {
model.addAttribute("categoryTitle", categoryTitle);
model.addAttribute("categoryId", column.getCategoryId());// 编辑封面
model.addAttribute("isEditCategory", true);// 编辑封面
} else {
model.addAttribute("categoryTitle", articleEntity.getColumn().getCategoryTitle());
model.addAttribute("isEditCategory", false);// 编辑文章
}
model.addAttribute("columnType", columnType);
model.addAttribute("categoryId", column.getCategoryId());// 编辑封面
model.addAttribute("websiteId", BasicUtil.getAppId());
return "/cms/article/article_form";
} else {// 非法
// return "/cms/article/article_form");
return this.redirectBack(request, true);
}
}
/**
* 删除文章
*
* @param request
* @param response
* @return
*/
@RequestMapping("/delete")
@RequiresPermissions("article:del")
public void delete(@RequestBody List<ArticleEntity> articles, HttpServletRequest request, HttpServletResponse response) {
int appId = BasicUtil.getAppId();
int[] ids = new int[articles.size()];
//循环获取id数据
for(int i=0;i<articles.size();i++){
ids[i] = articles.get(i).getArticleID();
}
if (ids.length == 0 || ids == null) {
this.outJson(response, ModelCode.CMS_ARTICLE, false, "", this.redirectBack(request, false));
return;
}
// 删除多个帖子
articleBiz.deleteBasic(ids);
FileUtil.del(articles);
this.outJson(response, ModelCode.CMS_ARTICLE, true, "", this.redirectBack(request, false));
}
/**
* 遍历出所有文章新增字段的信息
*
* @param listField
* :字段列表
* @param request
* @param articleId
* 文章id
* @return 字段信息
*/
private Map checkField(List<ContentModelFieldEntity> listField, HttpServletRequest request, int articleId) {
Map<String, Object> mapParams = new HashMap();
// 压入默认的basicId字段
mapParams.put("basicId", articleId);
// 遍历字段名
for (int i = 0; i < listField.size(); i++) {
ContentModelFieldEntity field = (ContentModelFieldEntity) listField.get(i);
String fieldName = field.getFieldFieldName();
// 判断字段类型是否为checkbox类型
if (field.getFieldType() == checkBox) {
String langtyp[] = request.getParameterValues(field.getFieldFieldName());
if (langtyp != null) {
StringBuffer sb = new StringBuffer();
for (int j = 0; j < langtyp.length; j++) {
sb.append(langtyp[j] + ",");
}
mapParams.put(field.getFieldFieldName(), sb.toString());
} else {
mapParams.put(field.getFieldFieldName(), langtyp);
}
} else {
if (StringUtils.isBlank(request.getParameter(field.getFieldFieldName()))) {
mapParams.put(field.getFieldFieldName(), null);
} else {
mapParams.put(field.getFieldFieldName(), request.getParameter(field.getFieldFieldName()));
}
}
}
return mapParams;
}
/**
* 查询单页栏目是否绑定了文章
*
* @param article
* 文章对象
*/
@RequestMapping("/{id}/queryColumnArticle")
public void queryColumnArticle(@PathVariable int id, HttpServletResponse response) {
List articls = articleBiz.queryListByColumnId(id);
if (articls == null || articls.size() == 0) {
this.outJson(response, ModelCode.CMS_ARTICLE, true, null);
} else {
this.outJson(response, ModelCode.CMS_ARTICLE, false, null);
}
}
}

@ -1,317 +0,0 @@
package net.mingsoft.cms.action;
import java.io.File;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.mingsoft.basic.util.ArrysUtil;
import net.mingsoft.mdiy.util.DictUtil;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
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 net.mingsoft.basic.action.BaseAction;
import net.mingsoft.basic.bean.EUListBean;
import net.mingsoft.basic.biz.ICategoryBiz;
import net.mingsoft.basic.biz.IColumnBiz;
import net.mingsoft.basic.biz.IModelBiz;
import net.mingsoft.basic.constant.Const;
import net.mingsoft.basic.constant.ModelCode;
import net.mingsoft.basic.constant.e.SessionConstEnum;
import net.mingsoft.basic.entity.ColumnEntity;
import net.mingsoft.basic.entity.ManagerEntity;
import net.mingsoft.basic.util.BasicUtil;
import net.mingsoft.basic.util.FileUtil;
import net.mingsoft.basic.util.StringUtil;
import net.mingsoft.mdiy.util.ParserUtil;
/**
* 铭飞MS平台通用栏目分类,为了区分文章栏目与其他栏目的权限该类是从basic模块复制过来
* @author 铭飞开发团队
* @version
* 版本号100-000-000<br/>
* 创建日期2017年8月9日<br/>
* 历史修订<br/>
*/
@Controller("articleColumnAction")
@RequestMapping("/${ms.manager.path}/cms/column")
public class ColumnAction extends BaseAction{
/**
* 栏目业务层
*/
@Autowired
private IColumnBiz columnBiz;
@Autowired
private ICategoryBiz categoryBiz;
/**
* 模块业务层注入
*/
@Autowired
private IModelBiz modelBiz;
/**
* 返回主界面index
*/
@RequestMapping("/index")
@RequiresPermissions("cms:column:view")
public String index(HttpServletResponse response,HttpServletRequest request,ModelMap model){
model.addAttribute("model", "cms");
return "/basic/column/index";
}
/**
* 栏目添加跳转页面
*
* @return
*/
@RequestMapping("/add")
public String add(HttpServletRequest request,ModelMap model) {
// 站点ID
int appId =BasicUtil.getAppId();
List<ColumnEntity> list = columnBiz.queryAll(appId, BasicUtil.getModelCodeId(net.mingsoft.cms.constant.ModelCode.CMS_COLUMN.toString()));
ColumnEntity columnSuper = new ColumnEntity();
// 栏目属性
model.addAttribute("columnFlag", DictUtil.list("栏目属性"));
model.addAttribute("appId",appId);
model.addAttribute("columnSuper", columnSuper);
model.addAttribute("column",new ColumnEntity());
model.addAttribute("listColumn", JSONArray.toJSONString(list));
model.addAttribute("model", "cms");
model.addAttribute("websiteId", appId);
return "/basic/column/form";
}
/**
* 后台验证填写的栏目信息是否合法
* @param column 栏目信息
* @param response
* @return false:不合法 true:合法
*/
private boolean checkForm(ColumnEntity column, HttpServletResponse response){
//栏目标题空值验证
if(StringUtils.isBlank(column.getCategoryTitle())){
this.outJson( response, ModelCode.COLUMN, false, getResString("err.empty", this.getResString("categoryTitle")));
return false;
}
//栏目标题长度验证
if(!StringUtil.checkLength(column.getCategoryTitle(), 1, 31)){
this.outJson( response, ModelCode.COLUMN, false, getResString("err.length", this.getResString("categoryTitle"), "1", "30"));
return false;
}
//栏目属性空值验证
if(StringUtils.isBlank(column.getColumnType()+"")){
this.outJson( response, ModelCode.COLUMN, false, getResString("err.empty", this.getResString("columnType")));
return false;
}
return true;
}
/**
* 组织栏目链接地址
* @param request
* @param column 栏目实体
*/
private void columnPath(HttpServletRequest request,ColumnEntity column){
StringBuffer columnPath = new StringBuffer();
String file = BasicUtil.getRealPath("")+ParserUtil.HTML+File.separator+ column.getAppId();
String delFile = "";
//修改栏目路径时,删除已存在的文件夹
column = (ColumnEntity) columnBiz.getEntity(column.getCategoryId());
delFile = file + column.getColumnPath();
if(!StringUtils.isBlank(delFile)){
File delFileName = new File(delFile);
delFileName.delete();
}
//若为顶级栏目,则路径为:/+栏目ID
if(column.getCategoryCategoryId() == 0){
column.setColumnPath(File.separator+column.getCategoryId());
file = file + File.separator + column.getCategoryId();
} else {
List<ColumnEntity> list = columnBiz.queryParentColumnByColumnId(column.getCategoryId());
if(list != null){
StringBuffer temp = new StringBuffer();
for(int i = list.size()-1; i>=0; i--){
ColumnEntity entity = list.get(i);
columnPath.append(File.separator).append(entity.getCategoryId());
temp.append(File.separator).append(entity.getCategoryId());
}
column.setColumnPath(columnPath.append(File.separator).append(column.getCategoryId()).toString());
file = file + temp.toString() + File.separator + column.getCategoryId();
}
}
columnBiz.updateEntity(column);
//生成文件夹
File fileName = new File(file);
fileName.mkdir();
}
/**
* @param column 栏目表实体
* <i>column参数包含字段信息参考</i><br/>
* columnCategoryid:多个columnCategoryid直接用逗号隔开,例如columnCategoryid=1,2,3,4
* 批量删除栏目表
* <dt><span class="strong">返回</span></dt><br/>
* <dd>{code:"错误编码",<br/>
* result:"true|false",<br/>
* resultMsg:"错误信息"<br/>
* }</dd>
*/
@RequestMapping("/delete")
@ResponseBody
public void delete(HttpServletResponse response, HttpServletRequest request) {
int[] ids = BasicUtil.getInts("ids", ",");
ColumnEntity column =new ColumnEntity();
for(int i=0;i<ids.length;i++){
column = (ColumnEntity) columnBiz.getEntity(ids[i]);
columnBiz.deleteCategory(ids[i]);
FileUtil.del(column);
};
this.outJson(response, true);
}
/**
* 栏目更新页面跳转
* @param columnId 栏目ID
* @param request
* @param model
* @return 编辑栏目页
*/
@RequestMapping("/{columnId}/edit")
public String edit(@PathVariable int columnId, HttpServletRequest request,ModelMap model) {
// 获取管理实体
ManagerEntity managerSession = (ManagerEntity) BasicUtil.getSession( SessionConstEnum.MANAGER_SESSION);
// 站点ID
int appId = BasicUtil.getAppId();
List<ColumnEntity> list = new ArrayList<ColumnEntity>();
// 判断管理员权限,查询其管理的栏目集合
list = columnBiz.queryAll(appId, BasicUtil.getModelCodeId(net.mingsoft.cms.constant.ModelCode.CMS_COLUMN.toString()));
//查询当前栏目实体
ColumnEntity column = (ColumnEntity) columnBiz.getEntity(columnId);
// 栏目属性
model.addAttribute("columnFlag", DictUtil.list("栏目属性"));
model.addAttribute("appId",appId);
model.addAttribute("column", column);
model.addAttribute("columnc", column.getCategoryId());
ColumnEntity columnSuper = new ColumnEntity();
// 获取父栏目对象
if (column.getCategoryCategoryId() != Const.COLUMN_TOP_CATEGORY_ID) {
columnSuper = (ColumnEntity) columnBiz.getEntity(column.getCategoryCategoryId());
}
model.addAttribute("columnSuper", columnSuper);
model.addAttribute("listColumn", JSONArray.toJSONString(list));
model.addAttribute("model", "cms");
model.addAttribute("websiteId", appId);
return "/basic/column/form";
}
/**
* 栏目首页面列表显示
*/
@SuppressWarnings("deprecation")
@RequestMapping("/list")
public void list(@ModelAttribute ColumnEntity column,HttpServletResponse response, HttpServletRequest request,ModelMap model) {
// 站点ID有session获取
int websiteId = BasicUtil.getAppId();
// 需要打开的栏目节点树的栏目ID
List list = columnBiz.queryAll(websiteId, BasicUtil.getModelCodeId(net.mingsoft.cms.constant.ModelCode.CMS_COLUMN.toString()));
EUListBean _list = new EUListBean(list, list.size());
this.outJson(response, net.mingsoft.base.util.JSONArray.toJSONString(_list));
}
/**
* 栏目添加
*
* @param column
* 栏目对象
* @return 返回页面跳转
*/
@RequestMapping("/save")
public void save(@ModelAttribute ColumnEntity column,HttpServletRequest request,HttpServletResponse response) {
if(!checkForm(column,response)){
return;
}
column.setCategoryAppId( BasicUtil.getAppId());
column.setAppId(BasicUtil.getAppId());
column.setCategoryManagerId(getManagerBySession(request).getManagerId());
column.setCategoryDateTime(new Timestamp(System.currentTimeMillis()));
column.setCategoryModelId(BasicUtil.getModelCodeId(net.mingsoft.cms.constant.ModelCode.CMS_COLUMN.toString()));
String checkboxType = BasicUtil.getString("checkboxType");
//如果选择一个属性不做排序操作
if(!StringUtils.isEmpty(checkboxType) && checkboxType.length()>2){
column.setColumnFlag(ArrysUtil.sort(checkboxType, ",")+",");
}else{
column.setColumnFlag(checkboxType);
}
if(column.getColumnType()==ColumnEntity.ColumnTypeEnum.COLUMN_TYPE_COVER.toInt()){
column.setColumnListUrl(null);
}
columnBiz.saveCategory(column);
this.columnPath(request,column);
this.outJson(response, ModelCode.COLUMN, true,null,JSONArray.toJSONString(column.getCategoryId()));
}
/**
* 更新栏目
* @param column 栏目实体
* @param request
* @param response
*/
@RequestMapping("/update")
@ResponseBody
public void update(@ModelAttribute ColumnEntity column,HttpServletRequest request,HttpServletResponse response) {
//获取站点ID
int websiteId = BasicUtil.getAppId();
//检测栏目信息是否合法
if(!checkForm(column,response)){
return;
}
//若栏目管理属性为单页,则栏目的列表模板地址设为Null
if(column.getColumnType()==ColumnEntity.ColumnTypeEnum.COLUMN_TYPE_COVER.toInt()){
column.setColumnListUrl(null);
}
column.setCategoryManagerId(getManagerBySession(request).getManagerId());
column.setAppId(websiteId);
String checkboxType = BasicUtil.getString("checkboxType");
//如果选择一个属性不做排序操作
if(!StringUtils.isEmpty(checkboxType) && checkboxType.length()>2){
column.setColumnFlag(ArrysUtil.sort(checkboxType, ",")+",");
}else{
column.setColumnFlag(checkboxType);
}
columnBiz.updateCategory(column);
this.columnPath(request,column);
//查询当前栏目是否有子栏目,
List<ColumnEntity> childList = columnBiz.queryChild(column.getCategoryId(), websiteId,BasicUtil.getModelCodeId(net.mingsoft.cms.constant.ModelCode.CMS_COLUMN.toString()),null);
if(childList != null && childList.size()>0){
//改变子栏目的顶级栏目ID为当前栏目的父级栏目ID
for(int i=0;i<childList.size();i++){
childList.get(i).setCategoryCategoryId(column.getCategoryId());
childList.get(i).setCategoryManagerId(getManagerBySession(request).getManagerId());
childList.get(i).setAppId(websiteId);
columnBiz.updateCategory(childList.get(i));
//组织子栏目链接地址
this.columnPath(request, childList.get(i));
}
}
this.outJson(response, ModelCode.COLUMN, true,null,JSONArray.toJSONString(column.getCategoryId()));
}
}

@ -1,233 +0,0 @@
/**
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.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
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.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import io.swagger.annotations.ApiOperation;
import net.mingsoft.base.filter.DateValueFilter;
import net.mingsoft.basic.action.BaseAction;
import net.mingsoft.basic.bean.ListBean;
import net.mingsoft.basic.biz.IColumnBiz;
import net.mingsoft.basic.entity.ColumnEntity;
import net.mingsoft.basic.util.BasicUtil;
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 springfox.documentation.annotations.ApiIgnore;
/**
*
* @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":排序,[自定义模型字段]}
*/
@GetMapping("/{basicId}/detail")
@ResponseBody
public void detail(@PathVariable int basicId, HttpServletRequest request, HttpServletResponse response) {
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",method= RequestMethod.GET)
@ApiOperation(value="文章列表信息")
@ResponseBody
public void list(@ModelAttribute @ApiIgnore 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")));
}
}

@ -1,266 +0,0 @@
package net.mingsoft.cms.action.web;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import net.mingsoft.base.entity.BaseEntity;
import net.mingsoft.base.entity.ResultData;
import net.mingsoft.basic.bean.EUListBean;
import net.mingsoft.basic.util.BasicUtil;
import net.mingsoft.basic.util.StringUtil;
import net.mingsoft.cms.biz.IContentBiz;
import net.mingsoft.cms.entity.ContentEntity;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import springfox.documentation.annotations.ApiIgnore;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
* 文章管理控制层
* @author 铭飞开发团队
* 创建日期2019-11-28 15:12:32<br/>
* 历史修订<br/>
*/
@Api(value = "文章接口")
@Controller("WebcmsContentAction")
@RequestMapping("/cms/content")
public class ContentAction extends net.mingsoft.cms.action.BaseAction{
/**
* 注入文章业务层
*/
@Autowired
private IContentBiz contentBiz;
/**
* 返回主界面index
*/
@GetMapping("/index")
public String index(HttpServletResponse response,HttpServletRequest request){
return "/cms/content/index";
}
/**
* 查询文章列表
* @param content 文章实体
*/
@ApiOperation(value = "查询文章列表接口")
@ApiImplicitParams({
@ApiImplicitParam(name = "contentTitle", value = "文章标题", required =false,paramType="query"),
@ApiImplicitParam(name = "contentCategoryId", value = "所属栏目", required =false,paramType="query"),
@ApiImplicitParam(name = "contentType", value = "文章类型", required =false,paramType="query"),
@ApiImplicitParam(name = "contentDisplay", value = "是否显示", required =false,paramType="query"),
@ApiImplicitParam(name = "contentAuthor", value = "文章作者", required =false,paramType="query"),
@ApiImplicitParam(name = "contentSource", value = "文章来源", required =false,paramType="query"),
@ApiImplicitParam(name = "contentDatetime", value = "发布时间", required =false,paramType="query"),
@ApiImplicitParam(name = "contentSort", value = "自定义顺序", required =false,paramType="query"),
@ApiImplicitParam(name = "contentImg", value = "文章缩略图", required =false,paramType="query"),
@ApiImplicitParam(name = "contentDescription", value = "描述", required =false,paramType="query"),
@ApiImplicitParam(name = "contentKeyword", value = "关键字", required =false,paramType="query"),
@ApiImplicitParam(name = "contentDetails", value = "文章内容", required =false,paramType="query"),
@ApiImplicitParam(name = "contentUrl", value = "文章跳转链接地址", required =false,paramType="query"),
@ApiImplicitParam(name = "appid", value = "文章管理的应用id", required =false,paramType="query"),
@ApiImplicitParam(name = "createBy", value = "创建人", required =false,paramType="query"),
@ApiImplicitParam(name = "createDate", value = "创建时间", required =false,paramType="query"),
@ApiImplicitParam(name = "updateBy", value = "修改人", required =false,paramType="query"),
@ApiImplicitParam(name = "updateDate", value = "修改时间", required =false,paramType="query"),
@ApiImplicitParam(name = "del", value = "删除标记", required =false,paramType="query"),
@ApiImplicitParam(name = "id", value = "编号", required =false,paramType="query"),
})
@RequestMapping("/list")
@ResponseBody
public ResultData list(@ModelAttribute @ApiIgnore ContentEntity content,HttpServletResponse response, HttpServletRequest request,@ApiIgnore ModelMap model,BindingResult result) {
BasicUtil.startPage();
List contentList = contentBiz.query(content);
return ResultData.build().success(new EUListBean(contentList,(int)BasicUtil.endPage(contentList).getTotal()));
}
/**
* 返回编辑界面content_form
*/
@GetMapping("/form")
public String form(@ModelAttribute ContentEntity content,HttpServletResponse response,HttpServletRequest request,ModelMap model){
if(content.getId()!=null){
BaseEntity contentEntity = contentBiz.getEntity(Integer.parseInt(content.getId()));
model.addAttribute("contentEntity",contentEntity);
}
return "/cms/content/form";
}
/**
* 获取文章
* @param content 文章实体
*/
@ApiOperation(value = "获取文章列表接口")
@ApiImplicitParam(name = "id", value = "编号", required =true,paramType="query")
@GetMapping("/get")
@ResponseBody
public ResultData get(@ModelAttribute @ApiIgnore ContentEntity content,HttpServletResponse response, HttpServletRequest request,@ApiIgnore ModelMap model){
if(content.getId()==null) {
return ResultData.build().error();
}
ContentEntity _content = (ContentEntity)contentBiz.getEntity(Integer.parseInt(content.getId()));
return ResultData.build().success(_content);
}
@ApiOperation(value = "保存文章列表接口")
@ApiImplicitParams({
@ApiImplicitParam(name = "contentTitle", value = "文章标题", required =true,paramType="query"),
@ApiImplicitParam(name = "contentCategoryId", value = "所属栏目", required =false,paramType="query"),
@ApiImplicitParam(name = "contentType", value = "文章类型", required =false,paramType="query"),
@ApiImplicitParam(name = "contentDisplay", value = "是否显示", required =false,paramType="query"),
@ApiImplicitParam(name = "contentAuthor", value = "文章作者", required =false,paramType="query"),
@ApiImplicitParam(name = "contentSource", value = "文章来源", required =false,paramType="query"),
@ApiImplicitParam(name = "contentDatetime", value = "发布时间", required =true,paramType="query"),
@ApiImplicitParam(name = "contentSort", value = "自定义顺序", required =false,paramType="query"),
@ApiImplicitParam(name = "contentImg", value = "文章缩略图", required =false,paramType="query"),
@ApiImplicitParam(name = "contentDescription", value = "描述", required =false,paramType="query"),
@ApiImplicitParam(name = "contentKeyword", value = "关键字", required =false,paramType="query"),
@ApiImplicitParam(name = "contentDetails", value = "文章内容", required =false,paramType="query"),
@ApiImplicitParam(name = "contentUrl", value = "文章跳转链接地址", required =false,paramType="query"),
@ApiImplicitParam(name = "appid", value = "文章管理的应用id", required =false,paramType="query"),
@ApiImplicitParam(name = "createBy", value = "创建人", required =false,paramType="query"),
@ApiImplicitParam(name = "createDate", value = "创建时间", required =false,paramType="query"),
@ApiImplicitParam(name = "updateBy", value = "修改人", required =false,paramType="query"),
@ApiImplicitParam(name = "updateDate", value = "修改时间", required =false,paramType="query"),
@ApiImplicitParam(name = "del", value = "删除标记", required =false,paramType="query"),
@ApiImplicitParam(name = "id", value = "编号", required =false,paramType="query"),
})
/**
* 保存文章
* @param content 文章实体
*/
@PostMapping("/save")
@ResponseBody
public ResultData save(@ModelAttribute @ApiIgnore ContentEntity content, HttpServletResponse response, HttpServletRequest request) {
//验证文章标题的值是否合法
if(StringUtil.isBlank(content.getContentTitle())){
return ResultData.build().error(getResString("err.empty", this.getResString("content.title")));
}
if(!StringUtil.checkLength(content.getContentTitle()+"", 0, 200)){
return ResultData.build().error(getResString("err.length", this.getResString("content.title"), "0", "200"));
}
if(!StringUtil.checkLength(content.getContentAuthor()+"", 0, 200)){
return ResultData.build().error(getResString("err.length", this.getResString("content.author"), "0", "200"));
}
if(!StringUtil.checkLength(content.getContentSource()+"", 0, 200)){
return ResultData.build().error(getResString("err.length", this.getResString("content.source"), "0", "200"));
}
//验证发布时间的值是否合法
if(StringUtil.isBlank(content.getContentDatetime())){
return ResultData.build().error(getResString("err.empty", this.getResString("content.datetime")));
}
if(!StringUtil.checkLength(content.getContentUrl()+"", 0, 200)){
return ResultData.build().error(getResString("err.length", this.getResString("content.url"), "0", "200"));
}
contentBiz.saveEntity(content);
return ResultData.build().success(content);
}
/**
* @param contents 文章实体
*/
@ApiOperation(value = "批量删除文章列表接口")
@PostMapping("/delete")
@ResponseBody
public ResultData delete(@RequestBody List<ContentEntity> contents,HttpServletResponse response, HttpServletRequest request) {
int[] ids = new int[contents.size()];
for(int i = 0;i<contents.size();i++){
ids[i] =Integer.parseInt(contents.get(i).getId()) ;
}
contentBiz.delete(ids);
return ResultData.build().success();
}
/**
* 更新文章列表
* @param content 文章实体
*/
@ApiOperation(value = "更新文章列表接口")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "编号", required =true,paramType="query"),
@ApiImplicitParam(name = "contentTitle", value = "文章标题", required =true,paramType="query"),
@ApiImplicitParam(name = "contentCategoryId", value = "所属栏目", required =false,paramType="query"),
@ApiImplicitParam(name = "contentType", value = "文章类型", required =false,paramType="query"),
@ApiImplicitParam(name = "contentDisplay", value = "是否显示", required =false,paramType="query"),
@ApiImplicitParam(name = "contentAuthor", value = "文章作者", required =false,paramType="query"),
@ApiImplicitParam(name = "contentSource", value = "文章来源", required =false,paramType="query"),
@ApiImplicitParam(name = "contentDatetime", value = "发布时间", required =true,paramType="query"),
@ApiImplicitParam(name = "contentSort", value = "自定义顺序", required =false,paramType="query"),
@ApiImplicitParam(name = "contentImg", value = "文章缩略图", required =false,paramType="query"),
@ApiImplicitParam(name = "contentDescription", value = "描述", required =false,paramType="query"),
@ApiImplicitParam(name = "contentKeyword", value = "关键字", required =false,paramType="query"),
@ApiImplicitParam(name = "contentDetails", value = "文章内容", required =false,paramType="query"),
@ApiImplicitParam(name = "contentUrl", value = "文章跳转链接地址", required =false,paramType="query"),
@ApiImplicitParam(name = "appid", value = "文章管理的应用id", required =false,paramType="query"),
@ApiImplicitParam(name = "createBy", value = "创建人", required =false,paramType="query"),
@ApiImplicitParam(name = "createDate", value = "创建时间", required =false,paramType="query"),
@ApiImplicitParam(name = "updateBy", value = "修改人", required =false,paramType="query"),
@ApiImplicitParam(name = "updateDate", value = "修改时间", required =false,paramType="query"),
@ApiImplicitParam(name = "del", value = "删除标记", required =false,paramType="query"),
@ApiImplicitParam(name = "id", value = "编号", required =false,paramType="query"),
})
@PostMapping("/update")
@ResponseBody
public ResultData update(@ModelAttribute @ApiIgnore ContentEntity content, HttpServletResponse response,
HttpServletRequest request) {
//验证文章标题的值是否合法
if(StringUtil.isBlank(content.getContentTitle())){
return ResultData.build().error(getResString("err.empty", this.getResString("content.title")));
}
if(!StringUtil.checkLength(content.getContentTitle()+"", 0, 200)){
return ResultData.build().error(getResString("err.length", this.getResString("content.title"), "0", "200"));
}
if(!StringUtil.checkLength(content.getContentAuthor()+"", 0, 200)){
return ResultData.build().error(getResString("err.length", this.getResString("content.author"), "0", "200"));
}
if(!StringUtil.checkLength(content.getContentSource()+"", 0, 200)){
return ResultData.build().error(getResString("err.length", this.getResString("content.source"), "0", "200"));
}
//验证发布时间的值是否合法
if(StringUtil.isBlank(content.getContentDatetime())){
return ResultData.build().error(getResString("err.empty", this.getResString("content.datetime")));
}
if(!StringUtil.checkLength(content.getContentUrl()+"", 0, 200)){
return ResultData.build().error(getResString("err.length", this.getResString("content.url"), "0", "200"));
}
contentBiz.updateEntity(content);
return ResultData.build().success(content);
}
@ApiOperation(value = "查看文章点击数")
@ApiImplicitParam(name = "contentId", value = "文章编号", required = true,paramType="path")
@GetMapping(value = "/{contentId}/hit")
@ResponseBody
public void hit(@PathVariable @ApiIgnore int contentId, HttpServletRequest request, HttpServletResponse response){
if(contentId<=0){
this.outString(response, "document.write(0)");
return;
}
ContentEntity content = (ContentEntity)contentBiz.getEntity(contentId);
if(content == null){
this.outString(response, "document.write(0)");
return;
}
if(content.getAppId() == null || content.getAppId() != BasicUtil.getAppId()){
this.outString(response, "document.write(0)");
return;
}
this.outString(response, "document.write(" + content.getContentHit() + ")");
return;
}
}

@ -1,191 +0,0 @@
/**
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
*/
public int getSearchCount(ContentModelEntity contentModel, Map whereMap, int appId, String 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);
/**
* 查询文章编号集合
* @param categoryId 栏目编号
* @param beginTime 开始时间
* @param endTime 结束时间
* @param orderBy 排序字段
* @param order 排序方式
* @return
*/
public List<ColumnArticleIdBean> queryIdsByCategoryIdForParser(int categoryId, String beginTime,String endTime,String orderBy,String order);
/**
* 根据页面栏目的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);
}

@ -1,222 +0,0 @@
/**
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 com.github.pagehelper.PageHelper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import net.mingsoft.base.dao.IBaseDao;
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.basic.util.BasicUtil;
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;
/**
*
* @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
public int getSearchCount(ContentModelEntity contentModel,Map wherMap, int websiteId,String 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,null,null);
}
@Override
public List<ColumnArticleIdBean> queryIdsByCategoryIdForParser(int categoryId, String beginTime,String endTime,String orderBy,String order) {
return this.articleDao.queryIdsByCategoryIdForParser(categoryId,BasicUtil.getAppId(), beginTime, endTime,orderBy,order);
}
}

@ -1,169 +0,0 @@
/**
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 文章实体总数
*/
int getSearchCount(@Param("tableName") String tableName, @Param("map") Map<String, List> map,
@Param("websiteId") int websiteId, @Param("ids") String 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,@Param("orderBy")String orderBy,@Param("order")String order);
}

@ -1,624 +0,0 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<!-- 文章管理持久化层配置文件 -->
<mapper namespace="net.mingsoft.cms.dao.IArticleDao">
<!-- 表栏目名 开始 -->
<sql id="column_list">
a.ARTICLE_BASICID,a.ARTICLE_CONTENT,a.ARTICLE_AUTHOR,a.ARTICLE_TYPE,a.ARTICLE_SOURCE,a.ARTICLE_URL,a.ARTICLE_KEYWORD,a.ARTICLE_FREEORDER,a.ARTICLE_WEBID,
b.BASIC_ID,b.BASIC_TITLE,b.BASIC_DESCRIPTION,b.BASIC_THUMBNAILS,b.BASIC_HIT,b.BASIC_DISPLAY,b.BASIC_DATETIME,b.BASIC_UPDATETIME,b.BASIC_PEOPLEID,b.BASIC_CATEGORYID,b.BASIC_SORT
</sql>
<!-- 表栏目名 结束 -->
<!-- 获取表字段 开始 -->
<resultMap type="net.mingsoft.cms.entity.ArticleEntity" id="resultMap">
<id column="ARTICLE_BASICID" property="articleID" /> <!-- 与cms_article表绑定id -->
<result column="ARTICLE_CONTENT" property="articleContent" /> <!-- 文章内容 -->
<result column="ARTICLE_AUTHOR" property="articleAuthor" /> <!-- 文章作者 -->
<result column="ARTICLE_TYPE" property="articleType" /> <!-- 文章属性 -->
<result column="ARTICLE_SOURCE" property="articleSource" /> <!-- 文章来源 -->
<result column="ARTICLE_URL" property="articleUrl" /> <!-- 文章跳转链接地址 -->
<result column="ARTICLE_KEYWORD" property="articleKeyword" /> <!-- 文章关键字 -->
<result column="ARTICLE_FREEORDER" property="articleFreeOrder" /><!--
文章自定义显示顺序 -->
<result column="ARTICLE_WEBID" property="articleWebId" /> <!-- 站点id -->
<result column="BASIC_ID" property="basicId" /> <!-- 与表basic绑定 自增长ID -->
<result column="BASIC_TITLE" property="basicTitle" /> <!-- 文章标题 -->
<result column="BASIC_DESCRIPTION" property="basicDescription" /><!--
文章描述 -->
<result column="BASIC_THUMBNAILS" property="basicThumbnails" /> <!-- 文章缩略图 -->
<result column="BASIC_HIT" property="basicHit" /> <!-- 文章点击次数 -->
<result column="BASIC_DATETIME" property="basicDateTime" /> <!-- 文章发布时间 -->
<result column="BASIC_UPDATETIME" property="basicUpdateTime" /> <!-- 文章更新时间 -->
<result column="BASIC_PEOPLEID" property="basicPeopleId" /> <!-- 文章发布者id -->
<result column="BASIC_CATEGORYID" property="basicCategoryId" /> <!-- 文章所属主栏目id -->
<result column="BASIC_SORT" property="basicSort" />
<result column="BASIC_DISPLAY" property="basicDisplay" />
<!-- 一对一关联栏目 -->
<association property="column" column="COLUMN_CATEGORY_ID"
javaType="net.mingsoft.basic.entity.ColumnEntity">
<result property="columnPath" column="column_path" />
<result property="categoryTitle" column="category_title" />
<result property="categoryId" column="category_id" />
<result property="columnContentModelId" column="COLUMN_CM_ID" />
<result property="columnType" column="COLUMN_TYPE" />
</association>
</resultMap>
<!-- 获取表字段 结束 -->
<!-- 通过视图查询返回结果集 开始 -->
<resultMap type="net.mingsoft.cms.bean.ColumnArticleIdBean" id="resultMapBean">
<result column="ARTICLE_BASICID" property="articleId" />
<result column="column_path" property="columnPath"/>
<result column="column_url" property="columnUrl" />
<result column="column_listurl" property="columnListUrl" />
<result column="category_title" property="categoryTitle" />
<result column="category_id" property="categoryId" />
<result column="COLUMN_CM_ID" property="columnContentModelId" />
<result column="category_categoryid" property="categoryCategoryId" /><!--关联表category的父类别ID category_categoryid字段 -->
<result column="category_modelId" property="categoryModelId" /><!--关联表category的所属模块ID category_modelid字段 -->
<result column="COLUMN_TYPE" property="columnType" />
<result column="category_parent_id" property="categoryParentId" /><!--关联表category的字典对应编号 -->
</resultMap>
<!-- 通过视图查询返回结果集 结束 -->
<!-- 通过视图查询返回结果集 开始 -->
<resultMap type="net.mingsoft.cms.entity.ArticleEntity" id="viewResultMap">
<id column="ARTICLE_BASICID" property="articleID" /> <!-- 与cms_article表绑定id -->
<result column="ARTICLE_CONTENT" property="articleContent" /> <!-- 文章内容 -->
<result column="ARTICLE_AUTHOR" property="articleAuthor" /> <!-- 文章作者 -->
<result column="ARTICLE_TYPE" property="articleType" /> <!-- 文章属性 -->
<result column="ARTICLE_SOURCE" property="articleSource" /> <!-- 文章来源 -->
<result column="ARTICLE_URL" property="articleUrl" /> <!-- 文章跳转链接地址 -->
<result column="ARTICLE_KEYWORD" property="articleKeyword" /> <!-- 文章关键字 -->
<result column="ARTICLE_FREEORDER" property="articleFreeOrder" /><!--
文章自定义显示顺序 -->
<result column="ARTICLE_WEBID" property="articleWebId" /> <!-- 站点id -->
<result column="BASIC_ID" property="basicId" /> <!-- 与表basic绑定 自增长ID -->
<result column="BASIC_TITLE" property="basicTitle" /> <!-- 文章标题 -->
<result column="BASIC_DESCRIPTION" property="basicDescription" /><!--
文章描述 -->
<result column="BASIC_THUMBNAILS" property="basicThumbnails" /> <!-- 文章缩略图 -->
<result column="BASIC_HIT" property="basicHit" /> <!-- 文章点击次数 -->
<result column="BASIC_DATETIME" property="basicDateTime" /> <!-- 文章发布时间 -->
<result column="BASIC_UPDATETIME" property="basicUpdateTime" /> <!-- 文章更新时间 -->
<result column="BASIC_CATEGORYID" property="basicCategoryId" /> <!-- 文章所属主栏目id -->
<result column="BASIC_SORT" property="basicSort" />
<result column="BASIC_DISPLAY" property="basicDisplay" />
<!-- 一对一关联栏目 -->
<association property="column"
javaType="net.mingsoft.basic.entity.ColumnEntity">
<result property="columnPath" column="column_path" />
<result property="categoryTitle" column="category_title" />
<result property="categoryId" column="category_id" />
<result property="columnContentModelId" column="COLUMN_CM_ID" />
<result property="columnType" column="COLUMN_TYPE" />
</association>
</resultMap>
<!-- 通过视图查询返回结果集 结束 -->
<!-- 文章bean返回数据列表 开始 -->
<sql id="bean_column_list">
BASIC_ID,ARTICLE_AUTHOR,ARTICLE_TYPE,ARTICLE_SOURCE,ARTICLE_URL,ARTICLE_KEYWORD,ARTICLE_FREEORDER,
BASIC_DISPLAY,BASIC_TITLE,BASIC_DESCRIPTION,BASIC_THUMBNAILS,BASIC_HIT,BASIC_DATETIME,BASIC_UPDATETIME,BASIC_PEOPLEID,BASIC_CATEGORYID,BASIC_SORT
</sql>
<!-- 表栏目名结束 -->
<!-- 文章基础数据返回数据列表 开始 -->
<sql id="basic_data_list">
BASIC_DISPLAY,BASIC_ID,BASIC_CATEGORYID,BASIC_TITLE,BASIC_DESCRIPTION,BASIC_THUMBNAILS,BASIC_HIT,BASIC_DATETIME,BASIC_UPDATETIME,BASIC_PEOPLEID,BASIC_SORT,
ARTICLE_BASICID,ARTICLE_AUTHOR,ARTICLE_CONTENT,ARTICLE_TYPE,ARTICLE_SOURCE,ARTICLE_URL,ARTICLE_KEYWORD,ARTICLE_FREEORDER,ARTICLE_WEBID,
COLUMN_KEYWORD,COLUMN_DESCRIP,COLUMN_TYPE,COLUMN_URL,COLUMN_LISTURL,COLUMN_PATH,COLUMN_CM_ID,COLUMN_CATEGORY_ID,
CATEGORY_TITLE,CATEGORY_APPID,CATEGORY_ID
</sql>
<!-- 文章基础数据返回数据列表结束 -->
<!-- 添加文章信息 开始 -->
<insert id="saveEntity" parameterType="net.mingsoft.base.entity.BaseEntity">
insert into cms_article
<!-- 添加表字段 -->
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="basicId != null">ARTICLE_BASICID,</if>
<if test="articleContent != null">ARTICLE_CONTENT,</if>
<if test="articleAuthor != null">ARTICLE_AUTHOR,</if>
<if test="articleType != null">ARTICLE_TYPE,</if>
<if test="articleSource != null">ARTICLE_SOURCE,</if>
<if test="articleUrl != null">ARTICLE_URL,</if>
<if test="articleKeyword != null">ARTICLE_KEYWORD,</if>
<if test="articleFreeOrder != null">ARTICLE_FREEORDER,</if>
<if test="articleWebId != null">ARTICLE_WEBID,</if>
</trim>
<!-- 注入控制层字段 -->
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="basicId != null">#{basicId},</if>
<if test="articleContent != null">#{articleContent},</if>
<if test="articleAuthor != null">#{articleAuthor},</if>
<if test="articleType != null">#{articleType},</if>
<if test="articleSource != null">#{articleSource},</if>
<if test="articleUrl != null">#{articleUrl},</if>
<if test="articleKeyword != null">#{articleKeyword},</if>
<if test="articleFreeOrder != null">#{articleFreeOrder},</if>
<if test="articleWebId != null">#{articleWebId},</if>
</trim>
</insert>
<!-- 添加文章信息 结束 -->
<!-- 删除文章管理的信息 开始 -->
<delete id="deleteEntity" parameterType="int">
DELETE b from basic b WHERE b.basic_id=#{basicId};
DELETE c from cms_article c WHERE c.article_basicid=#{basicId}
</delete>
<!-- 删除文章管理的信息 结束 -->
<!-- 更新文章管理的信息 开始 -->
<update id="updateEntity" parameterType="net.mingsoft.base.entity.BaseEntity">
update cms_article
<set>
<if test="articleContent != null">ARTICLE_CONTENT=#{articleContent},</if>
<if test="articleAuthor != null">ARTICLE_AUTHOR=#{articleAuthor},</if>
<if test="articleType != null">ARTICLE_TYPE=#{articleType},</if>
<if test="articleSource != null">ARTICLE_SOURCE=#{articleSource},</if>
<if test="articleUrl != null">ARTICLE_URL=#{articleUrl},</if>
<if test="articleKeyword != null">ARTICLE_KEYWORD=#{articleKeyword},</if>
<if test="articleFreeOrder != null">ARTICLE_FREEORDER=#{articleFreeOrder},</if>
<if test="articleWebId != null">ARTICLE_WEBID=#{articleWebId},</if>
</set>
where ARTICLE_BASICID = #{basicId}
</update>
<!-- 更新文章管理的信息 开始 -->
<!-- 查找文章管理的信息 开始 -->
<select id="getEntity" resultMap="resultMap" parameterType="int">
select
<include refid="column_list" />
,c.CATEGORY_TITLE,cl.column_path,cl.column_type,c.CATEGORY_id,cl.COLUMN_CM_ID
FROM
basic b
LEFT JOIN
category c ON b.BASIC_CATEGORYID = c.CATEGORY_ID
LEFT JOIN basic_column
cl ON c.CATEGORY_ID = cl.COLUMN_CATEGORY_ID
LEFT
JOIN cms_article a ON
a.ARTICLE_BASICID = b.BASIC_ID
<!-- 查询与关联表id相同的信息 -->
where a.ARTICLE_BASICID=#{basicId}
</select>
<!-- 查找文章管理的信息 结束 -->
<!-- 标题字段query -->
<sql id="queryWhereBasicTitle" databaseId="mysql">
CONCAT('%',#{article.basicTitle},'%')
</sql>
<sql id="queryWhereBasicTitle" databaseId="oracle">
'%'||#{ article.basicTitle}||'%'
</sql>
<sql id="queryWhereBasicTitle" databaseId="sqlServer">
'%'+#{ article.basicTitle}+'%'
</sql>
<!-- flag字段 -->
<sql id="queryWhereFlag" databaseId="mysql">
CONCAT('%',#{flag},'%')
</sql>
<sql id="queryWhereFlag" databaseId="oracle">
'%'||#{ flag}||'%'
</sql>
<sql id="queryWhereFlag" databaseId="sqlServer">
'%'+#{ flag}+'%'
</sql>
<!-- noFlag字段 -->
<sql id="queryWhereNoFlag" databaseId="mysql">
CONCAT('%',#{noFlag},'%')
</sql>
<sql id="queryWhereNoFlag" databaseId="oracle">
'%'||#{ noFlag}||'%'
</sql>
<sql id="queryWhereNoFlag" databaseId="sqlServer">
'%'+#{ noFlag}+'%'
</sql>
<!-- 已过期 -->
<select id="count" resultType="int">
select count(basic_id) FROM basic b
LEFT JOIN category c ON
b.BASIC_CATEGORYID = c.CATEGORY_ID
LEFT JOIN basic_column cl ON
c.CATEGORY_ID = cl.COLUMN_CATEGORY_ID
LEFT JOIN cms_article a ON
a.ARTICLE_BASICID = b.BASIC_ID
<where>
a.ARTICLE_WEBID = #{webId}
<if test="article != null ">
<if test="article.basicTitle != null and article.basicTitle != ''">
and b.BASIC_TITLE like
<include refid="queryWhereBasicTitle"></include>
</if>
</if>
<if test="basicCategoryIds != null">
and b.BASIC_CATEGORYID in
<foreach collection="basicCategoryIds" index="index" item="categoryId"
open="(" separator="," close=")">
#{categoryId}
</foreach>
</if>
<if test="flag != null">
and a.ARTICLE_TYPE like <include refid="queryWhereFlag"></include>
</if>
<if test="noFlag != null">
and a.ARTICLE_TYPE not like <include refid="queryWhereNoFlag"></include>
</if>
</where>
</select>
<!-- 列表查询结束 -->
<!-- 列表查询开始 -->
<select id="query" resultMap="resultMap" >
select
<include refid="column_list" />
,c.CATEGORY_TITLE,c.CATEGORY_ID
,cl.COLUMN_PATH,cl.COLUMN_CM_ID,cl.COLUMN_TYPE,cl.COLUMN_CATEGORY_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
where a.ARTICLE_WEBID = #{webId}
<if test="article != null ">
<if test="article.basicTitle != null and article.basicTitle != ''">
and b.BASIC_TITLE like
<include refid="queryWhereBasicTitle"></include>
</if>
</if>
<if test="basicCategoryIds != null">
and b.BASIC_CATEGORYID in
<foreach collection="basicCategoryIds" index="index" item="categoryId"
open="(" separator="," close=")">
#{categoryId}
</foreach>
</if>
<if test="flag != null">
and a.ARTICLE_TYPE like <include refid="queryWhereFlag"></include>
</if>
<if test="noFlag != null">
and a.ARTICLE_TYPE not like <include refid="queryWhereNoFlag"></include>
</if>
<if test="article !=null and article.basicDisplay &gt; -1">
and b.basic_display = #{article.basicDisplay}
</if>
<if test="beginTime!=null and beginTime!=''">
and basic_updatetime &gt;= #{beginTime}
</if>
<if test="endTime!=null and endTime!=''">
and basic_updatetime &gt;= #{endTime}
</if>
<if test="orderBy != null">
order by
<choose>
<when test='orderBy=="sort"'>basic_sort</when>
<when test='orderBy=="date"'>basic_datetime</when>
<when test='orderBy=="hit"'>basic_hit</when>
<when test='orderBy=="updatedate"'>basic_updatedate</when>
<when test='orderBy=="id"'>basic_id</when>
<otherwise>
${orderBy}
</otherwise>
</choose>
</if>
<if test="orderBy==null">
order by b.basic_id
</if>
<if test="order == true">desc</if>
<if test="order == false">asc</if>
</select>
<sql id="queryWhereCategoryId" databaseId="mysql">
find_in_set('${categoryId}',CATEGORY_PARENT_ID)
</sql>
<sql id="queryWhereCategoryId" databaseId="oracle" >
instr(','||'${categoryId}'||',', ','||CATEGORY_PARENT_ID||',')>0
</sql>
<sql id="queryWhereCategoryId" databaseId="sqlServer">
CHARINDEX(','+'${categoryId}'+',' , ','+CATEGORY_PARENT_ID +',')>0
</sql>
<!-- 根据站点编号、开始、结束时间和栏目编号查询文章编号集合 -->
<select id="queryIdsByCategoryIdForParser" resultMap="resultMapBean" >
select
ARTICLE_BASICID,cl.*,c.*
FROM cms_article a LEFT JOIN basic ON a.ARTICLE_BASICID = basic.BASIC_ID
LEFT JOIN basic_column cl ON basic.BASIC_CATEGORYID = cl.COLUMN_CATEGORY_ID
JOIN category c ON c.CATEGORY_ID = cl.COLUMN_CATEGORY_ID
where
<if test="appId &gt; 0">
a.ARTICLE_WEBID = #{appId}
</if>
<!-- 查询子栏目数据 -->
<if test="categoryId &gt; 0">
and (basic.basic_categoryid=#{categoryId} or basic.basic_categoryid in
(select category_id FROM category where <include refid="queryWhereCategoryId"></include>))
</if>
<if test="beginTime!=null and beginTime!=''">
and basic.basic_updatetime &gt;= #{beginTime}
</if>
<if test="endTime!=null and endTime!=''">
and basic.basic_updatetime &gt;= #{endTime}
</if>
<if test="orderBy!=null and order!=null and orderBy!='' and order!=''">
ORDER BY `${orderBy}` ${order}
</if>
</select>
<!--查询页面栏目的文章 开始 -->
<!-- 已过期 -->
<select id="queryListByColumnId" resultMap="resultMap">
select
<include refid="column_list" />
from cms_article a left join basic b on b.basic_id=a.ARTICLE_BASICID
where b.BASIC_CATEGORYID = #{basicCategoryId}
</select>
<!-- 查询页面栏目的文章 结束 -->
<!-- 根据字段条件查找文章实体开始 -->
<sql id="queryLike" databaseId="mysql">
like CONCAT("%",
<foreach item="val" index="index" collection="item[3]">
<if test="index==0">#{val}</if>
</foreach>
,"%")
</sql>
<sql id="queryLike" databaseId="oracle">
like '%'||
<foreach item="val" index="index" collection="item[3]">
<if test="index==0">#{val}</if>
</foreach>
||'%'
</sql>
<sql id="queryLike" databaseId="sqlServer">
like '%'+
<foreach item="val" index="index" collection="item[3]">
<if test="index==0">#{val}</if>
</foreach>
+'%'
</sql>
<!-- 已过期 -->
<select id="queryListForSearch" resultMap="resultMap">
select
<include refid="column_list" />
,c.CATEGORY_TITLE,cl.column_path,c.CATEGORY_id,cl.COLUMN_CM_ID,cl.column_type
from cms_article a
left join basic b
on b.basic_id=a.ARTICLE_BASICID
left join category c
ON b.BASIC_CATEGORYID = c.CATEGORY_ID
left join
basic_column cl
on c.CATEGORY_ID = cl.COLUMN_CATEGORY_ID
<if test="tableName!=null">left join ${tableName} d on d.basicId=a.ARTICLE_BASICID
</if>
where c.DEL=0 and a.ARTICLE_WEBID = #{websiteId}
<if test="ids!=null">
and
b.BASIC_CATEGORYID in
<foreach item="id" index="key" collection="ids" open="("
separator="," close=")">
#{id.categoryId}
</foreach>
</if>
<foreach item="item" index="key" collection="map" open=""
separator="" close="">
<if test=" item[0] == false">
and ${key}
</if>
<if test="item[0]== true">
and d.${key}
</if>
<!-- 数字类型的查找 item[1]:字段是否为数字类型false:数字 -->
<if test="item[1] == false">
<!--item[2]: 是采用等值还是区间查询。false:区间 itme[3][0]第一个值item[3][1]的二个值 -->
<if test="item[2] == true">
=
<foreach item="val" index="index" collection="item[3]">#{val}
</foreach>
</if>
<if test="item[2] == false">
between
<foreach item="val" index="index" collection="item[3]"
separator="and">
#{val}
</foreach>
</if>
</if>
<!-- 字符型数据的查找 item[1]:字段是否为数字类型true:字符串 -->
<if test="item[1] == true">
<!--item[2]: 是采用模糊查询。false:不采用模糊 -->
<if test="item[2] == true">
<include refid="queryLike"></include>
</if>
<if test="item[2] == false">
=
<foreach item="val" index="index" collection="item[3]">#{val}
</foreach>
</if>
</if>
</foreach>
<if test="sortMap!=null">
order by ${sortMap.order} ${sortMap.by}
</if>
</select>
<!-- 根据字段条件查找文章实体结束 -->
<!--已过期 根据字段条件查找文章实体总数开始 -->
<select id="getSearchCount" resultType="int">
select count(*) from
cms_article a
left join basic b
on
b.basic_id=a.ARTICLE_BASICID
left join category c
ON b.BASIC_CATEGORYID
= c.CATEGORY_ID
left join basic_column cl
on c.CATEGORY_ID =
cl.COLUMN_CATEGORY_ID
<if test="tableName!=null and tableName!=''">left join ${tableName} d on d.basicId=a.ARTICLE_BASICID
</if>
where a.ARTICLE_WEBID = #{websiteId}
<if test="ids!=null and ids!=''">
and FIND_IN_SET(category_categoryid,'${ids}')
</if>
<foreach item="item" index="key" collection="map" open=""
separator="" close="">
<if test=" item[0] == false">
and ${key}
</if>
<if test="item[0]== true">
and d.${key}
</if>
<!-- 数字类型的查找 item[1]:字段是否为数字类型false:数字 -->
<if test="item[1] == false">
<!--item[2]: 是采用等值还是区间查询。false:区间 itme[3][0]第一个值item[3][1]的二个值 -->
<if test="item[2] == true">
=
<foreach item="val" index="index" collection="item[3]">#{val}
</foreach>
</if>
<if test="item[2] == false">
between
<foreach item="val" index="index" collection="item[3]"
separator="and">
#{val}
</foreach>
</if>
</if>
<!-- 字符型数据的查找 item[1]:字段是否为数字类型true:字符串 -->
<if test="item[1] == true">
<!--item[2]: 是采用模糊查询。false:不采用模糊 -->
<if test="item[2] == true">
<include refid="queryLike"></include>
</if>
<if test="item[2] == false">
=
<foreach item="val" index="index" collection="item[3]">#{val}
</foreach>
</if>
</if>
</foreach>
</select>
<!-- 根据字段条件查找文章实体总数结束 -->
<select id="getById" resultMap="viewResultMap">
select
<include refid="basic_data_list" />
from
(((basic JOIN cms_article ON (BASIC_ID = ARTICLE_BASICID))
JOIN basic_column ON (BASIC_CATEGORYID = COLUMN_CATEGORY_ID))
JOIN category ON (COLUMN_CATEGORY_ID = CATEGORY_ID))
<if test="contentModelTableName!=null">
left join ${contentModelTableName} cmt on
cmt.basicid=basic_id
</if>
where basic_id=#{basicId}
</select>
<!-- 通过文章标题、应用ID、模块编号来查询文章集合开始 -->
<resultMap type="java.util.HashMap" id="resultTitleMap">
<result column="basic_id" property="basicId" />
<result column="basic_title" property="basicTitle" />
<result column="basic_hit" property="basicHit" />
<result column="basic_categoryid" property="basicCategoryId" />
<result column="model_id" property="modelId" />
</resultMap>
<!-- 已过期 -->
<!-- 查找上一篇下一篇 -->
<sql id="selectOne">
from
(((basic JOIN cms_article ON (BASIC_ID = ARTICLE_BASICID))
JOIN basic_column ON (BASIC_CATEGORYID = COLUMN_CATEGORY_ID))
JOIN category ON (COLUMN_CATEGORY_ID = CATEGORY_ID))
where category_appid=#{appId}
<if test="flag==false">
and basic_id &lt; ${basicId}
</if>
<if test="flag==true">
and basic_id &gt; ${basicId}
</if>
<if test="categoryId!=null">
and BASIC_CATEGORYID = #{categoryId}
</if>
</sql>
<!-- 已过期 -->
<select id="getNextOrPrevious" resultMap="resultMap" databaseId="mysql">
select
<include refid="basic_data_list" />
<include refid="selectOne"></include>
<if test="flag==false">
order by basic_id desc
</if>
<if test="flag==true">
order by basic_id asc
</if>
limit 0,1
</select>
<!-- 已过期 -->
<select id="getNextOrPrevious" resultMap="resultMap" databaseId="oracle">
select
<include refid="basic_data_list" />
<include refid="selectOne"></include>
and rownum=1
<if test="flag==false">
order by basic_id desc
</if>
<if test="flag==true">
order by basic_id asc
</if>
</select>
<!-- 已过期 -->
<select id="getNextOrPrevious" resultMap="resultMap" databaseId="sqlServer">
select top(1)
<include refid="basic_data_list" />
<include refid="selectOne"></include>
<if test="flag==false">
order by basic_id desc
</if>
<if test="flag==true">
order by basic_id asc
</if>
</select>
<sql id="queryTime" databaseId="oracle">
to_date(#{dateTime},'yyyy-MM-dd HH24:mi:ss')
</sql>
<sql id="queryTime" databaseId="mysql">
#{dateTime}
</sql>
<sql id="queryTime" databaseId="sqlServer">
#{dateTime}
</sql>
<!-- 已过期 -->
<select id="getByCategoryId" resultMap="resultMap">
select
<include refid="basic_data_list" />
from
(((basic JOIN cms_article ON (BASIC_ID = ARTICLE_BASICID))
JOIN basic_column ON (BASIC_CATEGORYID = COLUMN_CATEGORY_ID))
JOIN category ON (COLUMN_CATEGORY_ID = CATEGORY_ID))
where basic_categoryId=#{categoryId} order by basic_id desc
</select>
<!-- 根据basicID删除开始 -->
<delete id="delete">
delete from cms_article
<where>
ARTICLE_BASICID in
<foreach collection="ids" item="item" index="index" open="("
separator="," close=")">#{item}</foreach>
</where>
</delete>
</mapper>

@ -1,293 +0,0 @@
/**
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();
}
}
Loading…
Cancel
Save