package com.my.blog.website.controller.admin; import com.github.pagehelper.PageInfo; import com.my.blog.website.controller.BaseController; import com.my.blog.website.dto.LogActions; import com.my.blog.website.dto.Types; import com.my.blog.website.exception.TipException; import com.my.blog.website.modal.Bo.RestResponseBo; import com.my.blog.website.modal.Vo.ContentVo; import com.my.blog.website.modal.Vo.ContentVoExample; import com.my.blog.website.modal.Vo.MetaVo; import com.my.blog.website.modal.Vo.UserVo; import com.my.blog.website.service.IContentService; import com.my.blog.website.service.ILogService; import com.my.blog.website.service.IMetaService; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Controller; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.util.List; /** * Created by 13 on 2017/2/21. */ @Controller @RequestMapping("/admin/article") @Transactional(rollbackFor = TipException.class) public class ArticleController extends BaseController { private static final Logger LOGGER = LoggerFactory.getLogger(ArticleController.class); @Resource private IContentService contentsService; @Resource private IMetaService metasService; @Resource private ILogService logService; @GetMapping(value = "") public String index(@RequestParam(value = "page", defaultValue = "1") int page, @RequestParam(value = "limit", defaultValue = "15") int limit, HttpServletRequest request) { ContentVoExample contentVoExample = new ContentVoExample(); contentVoExample.setOrderByClause("created desc"); contentVoExample.createCriteria().andTypeEqualTo(Types.ARTICLE.getType()); PageInfo<ContentVo> contentsPaginator = contentsService.getArticlesWithpage(contentVoExample,page,limit); request.setAttribute("articles", contentsPaginator); return "admin/article_list"; } @GetMapping(value = "/publish") public String newArticle(HttpServletRequest request) { List<MetaVo> categories = metasService.getMetas(Types.CATEGORY.getType()); request.setAttribute("categories", categories); return "admin/article_edit"; } @GetMapping(value = "/{cid}") public String editArticle(@PathVariable String cid, HttpServletRequest request) { ContentVo contents = contentsService.getContents(cid); request.setAttribute("contents", contents); List<MetaVo> categories = metasService.getMetas(Types.CATEGORY.getType()); request.setAttribute("categories", categories); request.setAttribute("active", "article"); return "admin/article_edit"; } @PostMapping(value = "/publish") @ResponseBody @Transactional(rollbackFor = TipException.class) public RestResponseBo publishArticle(ContentVo contents, HttpServletRequest request) { UserVo users = this.user(request); contents.setAuthorId(users.getUid()); contents.setType(Types.ARTICLE.getType()); if (StringUtils.isBlank(contents.getCategories())) { contents.setCategories("默认分类"); } try { contentsService.publish(contents); } catch (Exception e) { String msg = "文章发布失败"; if (e instanceof TipException) { msg = e.getMessage(); } else { LOGGER.error(msg, e); } return RestResponseBo.fail(msg); } return RestResponseBo.ok(); } @PostMapping(value = "/modify") @ResponseBody @Transactional(rollbackFor = TipException.class) public RestResponseBo modifyArticle(ContentVo contents,HttpServletRequest request) { UserVo users = this.user(request); contents.setAuthorId(users.getUid()); contents.setType(Types.ARTICLE.getType()); try { contentsService.updateArticle(contents); } catch (Exception e) { String msg = "文章编辑失败"; if (e instanceof TipException) { msg = e.getMessage(); } else { LOGGER.error(msg, e); } return RestResponseBo.fail(msg); } return RestResponseBo.ok(); } @RequestMapping(value = "/delete") @ResponseBody @Transactional(rollbackFor = TipException.class) public RestResponseBo delete(@RequestParam int cid, HttpServletRequest request) { try { contentsService.deleteByCid(cid); logService.insertLog(LogActions.DEL_ARTICLE.getAction(), cid+"", request.getRemoteAddr(), this.getUid(request)); } catch (Exception e) { String msg = "文章删除失败"; if (e instanceof TipException) { msg = e.getMessage(); } else { LOGGER.error(msg, e); } return RestResponseBo.fail(msg); } return RestResponseBo.ok(); } }