package com.my.blog.website.controller.admin; import com.github.pagehelper.PageInfo; import com.my.blog.website.exception.TipException; import com.my.blog.website.modal.Bo.RestResponseBo; import com.my.blog.website.modal.Vo.UserVo; import com.my.blog.website.service.ILogService; import com.my.blog.website.constant.WebConst; 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.modal.Vo.ContentVo; import com.my.blog.website.modal.Vo.ContentVoExample; import com.my.blog.website.service.IContentService; 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; /** * Created by 13 on 2017/2/21. */ @Controller() @RequestMapping("admin/page") public class PageController extends BaseController { private static final Logger LOGGER = LoggerFactory.getLogger(PageController.class); @Resource private IContentService contentsService; @Resource private ILogService logService; @GetMapping(value = "") public String index(HttpServletRequest request) { ContentVoExample contentVoExample = new ContentVoExample(); contentVoExample.setOrderByClause("created desc"); contentVoExample.createCriteria().andTypeEqualTo(Types.PAGE.getType()); PageInfo<ContentVo> contentsPaginator = contentsService.getArticlesWithpage(contentVoExample, 1, WebConst.MAX_POSTS); request.setAttribute("articles", contentsPaginator); return "admin/page_list"; } @GetMapping(value = "new") public String newPage(HttpServletRequest request) { return "admin/page_edit"; } @GetMapping(value = "/{cid}") public String editPage(@PathVariable String cid, HttpServletRequest request) { ContentVo contents = contentsService.getContents(cid); request.setAttribute("contents", contents); return "admin/page_edit"; } @PostMapping(value = "publish") @ResponseBody @Transactional(rollbackFor = TipException.class) public RestResponseBo publishPage(@RequestParam String title, @RequestParam String content, @RequestParam String status, @RequestParam String slug, @RequestParam(required = false) Integer allowComment, @RequestParam(required = false) Integer allowPing, HttpServletRequest request) { UserVo users = this.user(request); ContentVo contents = new ContentVo(); contents.setTitle(title); contents.setContent(content); contents.setStatus(status); contents.setSlug(slug); contents.setType(Types.PAGE.getType()); if (null != allowComment) { contents.setAllowComment(allowComment == 1); } if (null != allowPing) { contents.setAllowPing(allowPing == 1); } contents.setAuthorId(users.getUid()); 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(@RequestParam Integer cid, @RequestParam String title, @RequestParam String content, @RequestParam String status, @RequestParam String slug, @RequestParam(required = false) Integer allowComment, @RequestParam(required = false) Integer allowPing, HttpServletRequest request) { UserVo users = this.user(request); ContentVo contents = new ContentVo(); contents.setCid(cid); contents.setTitle(title); contents.setContent(content); contents.setStatus(status); contents.setSlug(slug); contents.setType(Types.PAGE.getType()); if (null != allowComment) { contents.setAllowComment(allowComment == 1); } if (null != allowPing) { contents.setAllowPing(allowPing == 1); } contents.setAuthorId(users.getUid()); 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_PAGE.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(); } }