package com.islizx.controller.admin;
import cn.hutool.core.lang.Validator;
import cn.hutool.extra.servlet.ServletUtil;
import com.github.pagehelper.PageInfo;
import com.islizx.config.annotation.SystemLog;
import com.islizx.entity.*;
import com.islizx.model.dto.LizxConst;
import com.islizx.model.dto.Msg;
import com.islizx.model.enums.*;
import com.islizx.service.BlogService;
import com.islizx.service.CommentService;
import com.islizx.service.MailService;
import com.islizx.vo.CommentQuery;
import com.sun.org.apache.xpath.internal.operations.Bool;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.*;
/**
* @author lizx
* @date 2020-02-14 - 15:26
*/
@Controller
@Slf4j
@RequestMapping("/admin")
public class CommentController {
@Autowired
private CommentService commentService;
@Autowired
private BlogService blogService;
@Autowired
private MailService mailService;
/**
* 评论人相关信息
*/
public static final String COMMENT_AUTHOR_IP = "ip";
public static final String COMMENT_AUTHOR = "nickname";
public static final String COMMENT_EMAIL = "email";
public static final String COMMENT_CONTENT = "content";
@RequestMapping("/comments/getpublishedsize")
@ResponseBody
public Msg getpublishedsize() {
// 三种评论类型个数
Integer publish = commentService.countCommentByPass(CommentStatusEnum.PUBLISHED.getCode());
Integer draft = commentService.countCommentByPass(CommentStatusEnum.CHECKING.getCode());
Integer trash = commentService.countCommentByPass(CommentStatusEnum.RECYCLE.getCode());
return Msg.success().add("publish", publish).add("draft", draft).add("trash", trash);
}
/**
* 后台评论列表显示
*
* @return modelAndView
*/
@RequestMapping(value = "/comments", method = RequestMethod.GET)
public String index(@RequestParam(required = false, defaultValue = "1") Integer pageIndex,
@RequestParam(required = false, defaultValue = "15") Integer pageSize,
@RequestParam(required = false, defaultValue = "1") Integer pass,
HttpSession session, Model model) {
// 三种文章类型个数
Integer publish = commentService.countCommentByPass(CommentStatusEnum.PUBLISHED.getCode());
Integer draft = commentService.countCommentByPass(CommentStatusEnum.CHECKING.getCode());
Integer trash = commentService.countCommentByPass(CommentStatusEnum.RECYCLE.getCode());
HashMap<String, Object> criteria = new HashMap<>(1);
criteria.put("pass", pass);
PageInfo<Comment> commentPageInfo = commentService.pageComment(pageIndex, pageSize, criteria);
model.addAttribute("pageInfo", commentPageInfo);
model.addAttribute("publish", publish);
model.addAttribute("draft", draft);
model.addAttribute("trash", trash);
model.addAttribute("pass", pass);
String msg = (String) session.getAttribute("msg");
if (msg != null && !msg.equals("")) {
model.addAttribute("msg", msg);
session.removeAttribute("msg");
}
return "admin/comment/comments";
}
/**
* 分页条件查询
*
* @param pageIndex 页数
* @param pageSize
* @param commentQuery
* @param model
* @return
*/
@RequestMapping("/comments/search")
public String search(@RequestParam(required = false, defaultValue = "1") Integer pageIndex,
@RequestParam(required = false, defaultValue = "15") Integer pageSize, CommentQuery commentQuery, Model model) {
HashMap<String, Object> criteria = new HashMap<>();
String keywords = commentQuery.getKeywords();
Integer pass = commentQuery.getPass();
String sort = commentQuery.getSort();
String order = commentQuery.getOrder();
String searchType = commentQuery.getSearchType();
if (!StringUtils.isBlank(keywords)) {
if (COMMENT_CONTENT.equals(searchType)) {
criteria.put("content", keywords);
} else if (COMMENT_AUTHOR.equals(searchType)) {
criteria.put("nickname", keywords);
} else if (COMMENT_EMAIL.equals(searchType)) {
criteria.put("email", keywords);
} else if (COMMENT_AUTHOR_IP.equals(searchType)) {
criteria.put("ip", keywords);
}
}
if (pass != null) {
criteria.put("pass", pass);
} else {
criteria.put("pass", 1);
}
if (sort != null && !StringUtils.isBlank(sort)) criteria.put("sort", sort);
if (order != null && !StringUtils.isBlank(order)) criteria.put("order", order);
PageInfo<Comment> commentPageInfo = commentService.pageComment(pageIndex, pageSize, criteria);
model.addAttribute("pageInfo", commentPageInfo);
return "admin/comment/comments :: commentList";
}
/**
* 将评论改变为发布状态
* 评论状态有两种:待审核1,回收站2
* 对待审核转发布的,发邮件
*
* @param commentId 评论编号
* @return 重定向到/admin/comment
*/
@ResponseBody
@RequestMapping(value = "/comments/revert", method = RequestMethod.PUT)
@SystemLog(description = "回滚评论", type = LogTypeEnum.OPERATION)
public Msg moveToPublish(@RequestParam("id") Integer commentId, HttpSession session) {
User loginUser = (User) session.getAttribute("user");
//评论
Comment comment = commentService.getById(null,null,null,commentId);
Blog blog = blogService.getBlogByPublishedAndId(null, null,comment.getBlogId());
Comment result = commentService.updateCommentPass(commentId, CommentStatusEnum.PUBLISHED.getCode());
// 判断是不是子评论,如果是,也对被回复人发邮件
if(result.getParentCommentId() != null && result.getParentCommentId() > 0){
//被回复的评论
Comment lastComment = commentService.getById(null,null, null,comment.getParentCommentId());
//邮件通知
new EmailToAuthor(result, lastComment, blog).start();
}
//判断是否启用邮件服务
new NoticeToAuthor(result, blog, result.getPass()).start();
return Msg.success().add("msg", "评论已发布!");
}
/**
* 删除评论
*
* @param commentId commentId
* @return string 重定向到/admin/comment
*/
@RequestMapping(value = "/comments/delete", method = RequestMethod.DELETE)
@ResponseBody
@SystemLog(description = "删除评论", type = LogTypeEnum.OPERATION)
public Msg moveToAway(@RequestParam("id") Integer commentId) {
//评论
Comment comment = commentService.getById(null,null, null, commentId);
if (Objects.equals(comment.getPass(), CommentStatusEnum.RECYCLE.getCode())) {
commentService.deleteComment(commentId);
return Msg.success().add("msg", "评论已彻底删除");
} else {
commentService.updateCommentPass(commentId, CommentStatusEnum.RECYCLE.getCode());
return Msg.success().add("msg", "评论仍入回收站");
}
}
/**
* 管理员回复评论,并通过评论
*
* @param commentId 被回复的评论
* @param commentContent 回复的内容
没有合适的资源?快使用搜索试试~ 我知道了~
基于SpringMVC+Spring+MyBatis的博客网站系统源码+数据库+使用说明(毕业设计)
共1533个文件
js:537个
html:298个
css:184个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 53 浏览量
2024-10-20
16:43:58
上传
评论 1
收藏 17.26MB ZIP 举报
温馨提示
基于SpringMVC+Spring+MyBatis的博客网站系统源码+数据库(毕业设计),本项目是一套个人98分毕业设计系统,主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业,包含:项目源码、项目说明等。该项目可以直接作为毕设使用,项目都经过严格调试,确保可以运行! 基于SpringMVC+Spring+MyBatis的博客网站系统源码+数据库+使用说明(毕业设计)基于SpringMVC+Spring+MyBatis的博客网站系统源码+数据库+使用说明(毕业设计)基于SpringMVC+Spring+MyBatis的博客网站系统源码+数据库+使用说明(毕业设计) 基于SpringMVC+Spring+MyBatis的博客网站系统源码+数据库+使用说明(毕业设计)基于SpringMVC+Spring+MyBatis的博客网站系统源码+数据库+使用说明(毕业设计)基于SpringMVC+Spring+MyBatis的博客网站系统源码+数据库+使用说明(毕业设计)基于SpringMVC+Spring+MyBatis的博客网站系统源码+数据
资源推荐
资源详情
资源评论
收起资源包目录
基于SpringMVC+Spring+MyBatis的博客网站系统源码+数据库+使用说明(毕业设计) (1533个子文件)
$PRODUCT_WORKSPACE_FILE$ 489B
AUTHORS 6KB
AUTHORS 6KB
COPYING 10KB
semantic.min.css 437KB
style.css 169KB
summernote-bs3.css 143KB
bootstrap.css 143KB
bootstrap.min.css 118KB
bootstrap.min.css 115KB
editormd.css 76KB
editormd.css 76KB
animate.css 64KB
editormd.min.css 60KB
editormd.min.css 60KB
editormd.preview.css 55KB
editormd.preview.css 55KB
editormd.preview.min.css 44KB
editormd.preview.min.css 44KB
font-awesome.css 37KB
datepicker3.css 33KB
jquery-ui.css 32KB
jquery-ui.css 32KB
bootstrap-rtl.css 31KB
font-awesome.min.css 30KB
style.css 29KB
ambiance.css 26KB
ambiance.css 26KB
bootstrap-theme.css 26KB
ambiance.css 25KB
jquery-ui.min.css 25KB
style.min.css 25KB
bootstrap-rtl.min.css 24KB
fullcalendar.css 23KB
bootstrap-theme.min.css 23KB
bootstrap-theme.min.css 19KB
sweetalert.css 18KB
select2.min.css 15KB
chartist.min.css 14KB
jasny-bootstrap.min.css 14KB
jquery-ui-1.10.4.custom.min.css 14KB
chosen.css 13KB
social-buttons.css 13KB
ui.jqgrid.css 13KB
dropzone.css 11KB
datatables.min.css 10KB
summernote.css 10KB
ladda.min.css 9KB
codemirror.css 8KB
codemirror.css 8KB
ladda-themeless.min.css 8KB
codemirror.css 7KB
typo.css 7KB
blueimp-gallery.min.css 7KB
daterangepicker-bs3.css 7KB
awesome-bootstrap-checkbox.css 7KB
toastr.min.css 7KB
jquery-jvectormap-2.0.2.css 6KB
jsdoc-default.css 6KB
blueimp-gallery.css 6KB
jquery.steps.css 6KB
footable.core.css 5KB
fullcalendar.print.css 5KB
codemirror.min.css 5KB
codemirror.min.css 5KB
mdn-like.css 5KB
mdn-like.css 5KB
solarized.css 5KB
solarized.css 5KB
qunit-1.16.0.css 5KB
me.css 4KB
clockpicker.css 4KB
basic.css 4KB
bootstrap-colorpicker.min.css 3KB
cropper.min.css 3KB
merge.css 3KB
merge.css 3KB
ion.rangeSlider.css 3KB
login.css 3KB
lint.css 3KB
lint.css 3KB
slick-theme.css 3KB
jquery.nouislider.css 3KB
xq-dark.css 3KB
xq-dark.css 3KB
bootstrap-markdown.min.css 3KB
prism.css 3KB
jquery.gritter.css 2KB
lesser-dark.css 2KB
lesser-dark.css 2KB
pastel-on-dark.css 2KB
pastel-on-dark.css 2KB
xq-light.css 2KB
xq-light.css 2KB
tomorrow-night-eighties.css 2KB
tomorrow-night-eighties.css 2KB
blueimp-gallery-video.css 2KB
editormd.logo.css 2KB
editormd.logo.css 2KB
c3.min.css 2KB
共 1533 条
- 1
- 2
- 3
- 4
- 5
- 6
- 16
资源评论
程序员张小妍
- 粉丝: 1w+
- 资源: 3252
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于Django和OpenCV的智能车视频处理系统.zip
- (源码)基于ESP8266的WebDAV服务器与3D打印机管理系统.zip
- (源码)基于Nio实现的Mycat 2.0数据库代理系统.zip
- (源码)基于Java的高校学生就业管理系统.zip
- (源码)基于Spring Boot框架的博客系统.zip
- (源码)基于Spring Boot框架的博客管理系统.zip
- (源码)基于ESP8266和Blynk的IR设备控制系统.zip
- (源码)基于Java和JSP的校园论坛系统.zip
- (源码)基于ROS Kinetic框架的AGV激光雷达导航与SLAM系统.zip
- (源码)基于PythonDjango框架的资产管理系统.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功