package com.jeff.tianti.controller;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
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.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.jeff.tianti.cms.dto.ArticleQueryDTO;
import com.jeff.tianti.cms.dto.ColumnInfoQueryDTO;
import com.jeff.tianti.cms.dto.CurrentArticleInfoDTO;
import com.jeff.tianti.cms.entity.Article;
import com.jeff.tianti.cms.entity.ColumnInfo;
import com.jeff.tianti.cms.service.ArticleService;
import com.jeff.tianti.cms.service.ColumnInfoService;
import com.jeff.tianti.common.dto.AjaxResult;
import com.jeff.tianti.common.entity.PageModel;
/**
* CMS的Controller
* @author Jeff Xu
*/
@Controller
@RequestMapping("/cms/api")
public class CmsController {
@Autowired
private ColumnInfoService columnInfoService;
@Autowired
private ArticleService articleService;
/**
* 获取栏目列表
* @param request
* @param model
* @return
*/
@RequestMapping("/column/list")
@ResponseBody
public AjaxResult getColumnList(HttpServletRequest request,HttpServletResponse response){
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "x-requested-with");
AjaxResult ajaxResult = new AjaxResult();
String code = request.getParameter("code");
String name = request.getParameter("name");
String levelStr = request.getParameter("level");
String rootColumnId = request.getParameter("rootColumnId");
//1为true,0为false
String isRootColumnLikeStr= request.getParameter("isRootColumnLike");
Integer level = null;
Boolean isRootColumnLike = false;
if(StringUtils.isNotBlank(levelStr)){
level = Integer.parseInt(levelStr);
}
if(StringUtils.isNotBlank(isRootColumnLikeStr) && isRootColumnLikeStr.equals("1")){
isRootColumnLike = true;
}
ColumnInfoQueryDTO columnInfoQueryDTO = new ColumnInfoQueryDTO();
columnInfoQueryDTO.setLevel(level);
columnInfoQueryDTO.setCode(code);
columnInfoQueryDTO.setName(name);
columnInfoQueryDTO.setRootColumnId(rootColumnId);
columnInfoQueryDTO.setIsRootColumnLike(isRootColumnLike);
List<ColumnInfo> list = this.columnInfoService.queryColumnInfoList(columnInfoQueryDTO);
ajaxResult.setSuccess(true);
ajaxResult.setData(list);
return ajaxResult;
}
/**
* 获取文章列表
* @param request
* @param model
* @return
*/
@RequestMapping("/article/list")
@ResponseBody
public AjaxResult getArticleList(HttpServletRequest request,HttpServletResponse response){
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "x-requested-with");
AjaxResult ajaxResult = new AjaxResult();
String columnId = request.getParameter("columnId");
//是否分页:1为是,0为否,默认为分页
String isPage = request.getParameter("isPage");
//type为shenhe时获取审核通过的数据,type为zhiding时获取置顶的数据
String type = request.getParameter("type");
//获取前N条的数据
String topStr = request.getParameter("top");
String currentPageStr = request.getParameter("currentPage");
String pageSizeStr = request.getParameter("pageSize");
int currentPage = 1;
int pageSize = 10;
Integer top = null;
if(StringUtils.isNotBlank(currentPageStr)){
currentPage = Integer.parseInt(currentPageStr);
}
if(StringUtils.isNotBlank(pageSizeStr)){
pageSize = Integer.parseInt(pageSizeStr);
}
if(StringUtils.isNotBlank(topStr)){
top = Integer.parseInt(topStr);
}
PageModel<Article> page = null;
List<Article> list = null;
ArticleQueryDTO articleQueryDTO = new ArticleQueryDTO();
articleQueryDTO.setColumnId(columnId);
articleQueryDTO.setCurrentPage(currentPage);
articleQueryDTO.setPageSize(pageSize);
articleQueryDTO.setTop(top);
articleQueryDTO.setType(type);
if(StringUtils.isNotBlank(isPage)){
if(isPage.equals("1")){
page = this.articleService.queryArticlePage(articleQueryDTO);
ajaxResult.setData(page);
}else{
list = this.articleService.queryArticleList(articleQueryDTO);
ajaxResult.setData(list);
}
}else{
page = this.articleService.queryArticlePage(articleQueryDTO);
ajaxResult.setData(page);
}
ajaxResult.setSuccess(true);
return ajaxResult;
}
/**
* 获取文章详情
* @param request
* @param model
* @return
*/
@RequestMapping("/article/detail")
@ResponseBody
public AjaxResult getArticle(HttpServletRequest request,HttpServletResponse response){
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "x-requested-with");
AjaxResult ajaxResult = new AjaxResult();
String articleId = request.getParameter("articleId");
Article article = null;
if(StringUtils.isNotBlank(articleId)){
article = this.articleService.find(articleId);
if(article != null){
article.setViewCount(article.getViewCount() == null ? 1 : article.getViewCount()+1);
this.articleService.update(article);
}
}
ajaxResult.setSuccess(true);
ajaxResult.setData(article);
return ajaxResult;
}
/**
* 获取下一篇文章详情
* @param request
* @param model
* @return
*/
@RequestMapping("/article/next")
@ResponseBody
public AjaxResult getNextArticle(HttpServletRequest request,HttpServletResponse response){
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "x-requested-with");
AjaxResult ajaxResult = new AjaxResult();
//当前文章ID
String currentArticleId = request.getParameter("currentArticleId");
String columnId = request.getParameter("columnId");
String articleDateStr = request.getParameter("articleDate");
String orderNoStr = request.getParameter("orderNo");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Article nextArticle = null;
Date articleDate = null;
Integer orderNo = null;
if(StringUtils.isNotBlank(articleDateStr)){
try {
articleDate = sdf.parse(articleDateStr);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(StringUtils.isNotBlank(orderNoStr)){
orderNo = Integer.parseInt(orderNoStr);
}
CurrentArticleInfoDTO currentArticleInfoDTO = new CurrentArticleInfoDTO();
currentArticleInfoDTO.setColumnId(columnId);
currentArticleInfoDTO.setArticleId(currentArticleId);
currentArticleInfoDTO.setArticleDate(articleDate);
currentArticleInfoDTO.setOrderNo(orderNo);
if(StringUtils.isNotBlank(columnId)){
nextArticle = this.articleService.queryNextArticle(currentArticleInfoDTO);
}
ajaxResult.setSuccess(true);
ajaxResult.setData(nextArticle);
return ajaxResult;
}
/**
* 获取上一篇文章详情
* @param request
* @param model
* @return
*/
@RequestMapping("/article/pre")
@ResponseBody
public AjaxResult getPreArticle(HttpServletRequest request,HttpServletResponse response){
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "x-requested-with");
AjaxResult ajaxResult = new AjaxResult();
//当前文章ID
String currentArticleId = request.getParameter("currentArticleId");
String columnId = request.getParameter("columnId");
String articleDateStr = request.getParameter("articleDate");
String orderNoStr = request.getParameter("orderNo");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Article preArticle = null;
Date articleDate = null;
Integer orderNo = null;
if(StringUtils.isNotBlank(articleDateStr)){
try {
articleDate = sdf.parse(articleDateStr);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(StringUtils.isNotBlank(orderNoStr)){
orderNo = Integer.parseInt(orderNoStr);
}
CurrentArticleInfoDTO currentArticleInfoDTO = new CurrentArticleInfoDTO();
currentArticleInfoDTO.setColumnId(columnId);
currentArticleInfoDTO.setArticleId(currentArticleId);
currentArticleInfoDTO.setArticleDate(articleDate);
currentArticleInfoDTO.setOrderNo(orderNo);
if(StringUtils.isNotBlank(columnId)){
preArticle = this.articleService.queryPreArticle(currentArticleInfoDTO);
}
ajaxResult.setSuccess(true);
ajaxResult.setData(preArticle);
return ajaxResult;
}
}