Commit 04c6d791 by Author name

2.1 删除评论

parent 1a97fb08
...@@ -11,6 +11,7 @@ import cn.meteor.beyondclouds.modules.blog.bean.BlogDetail; ...@@ -11,6 +11,7 @@ import cn.meteor.beyondclouds.modules.blog.bean.BlogDetail;
import cn.meteor.beyondclouds.modules.blog.entity.Blog; import cn.meteor.beyondclouds.modules.blog.entity.Blog;
import cn.meteor.beyondclouds.modules.blog.exception.BlogServiceException; import cn.meteor.beyondclouds.modules.blog.exception.BlogServiceException;
import cn.meteor.beyondclouds.modules.blog.form.PublishBlogForm; import cn.meteor.beyondclouds.modules.blog.form.PublishBlogForm;
import cn.meteor.beyondclouds.modules.blog.form.UpdateBlogForm;
import cn.meteor.beyondclouds.modules.blog.service.IBlogService; import cn.meteor.beyondclouds.modules.blog.service.IBlogService;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
...@@ -93,6 +94,12 @@ public class BlogApi { ...@@ -93,6 +94,12 @@ public class BlogApi {
return Response.success(blogPageVO); return Response.success(blogPageVO);
} }
/**
* 我的博客列表
* @param pageForm
* @param subject
* @return
*/
@ApiOperation("我的博客列表") @ApiOperation("我的博客列表")
@GetMapping("/my/blogs") @GetMapping("/my/blogs")
public Response<PageVO<Blog>> getMyBlogs (@Valid PageForm pageForm , @CurrentSubject Subject subject) { public Response<PageVO<Blog>> getMyBlogs (@Valid PageForm pageForm , @CurrentSubject Subject subject) {
...@@ -104,6 +111,12 @@ public class BlogApi { ...@@ -104,6 +111,12 @@ public class BlogApi {
} }
/**
* 他人博客列表
* @param pageForm
* @param userId
* @return
*/
@ApiOperation("他人博客列表") @ApiOperation("他人博客列表")
@GetMapping("/user/{userId}/blogs") @GetMapping("/user/{userId}/blogs")
public Response<PageVO<Blog>> getMyBlogs (@Valid PageForm pageForm , @PathVariable("userId") String userId) { public Response<PageVO<Blog>> getMyBlogs (@Valid PageForm pageForm , @PathVariable("userId") String userId) {
...@@ -113,4 +126,26 @@ public class BlogApi { ...@@ -113,4 +126,26 @@ public class BlogApi {
blogPageVO.setDataList(blogIPage.getRecords()); blogPageVO.setDataList(blogIPage.getRecords());
return Response.success(blogPageVO); return Response.success(blogPageVO);
} }
@ApiOperation("修改博客")
@PutMapping("/blog/{blogId}")
public Response updateBlog (@PathVariable("blogId") String blogId , @RequestBody @Valid UpdateBlogForm updateBlogForm ,
BindingResult result , @CurrentSubject Subject subject) {
if (result.hasErrors()) {
return Response.fieldError(result.getFieldError());
}
Blog blog = new Blog();
BeanUtils.copyProperties(updateBlogForm, blog);
blog.setUserId((String) subject.getId());
blog.setBlogId(blogId);
//更新项目
try {
blogService.updateBlog(blog, updateBlogForm.getContent(),updateBlogForm.getTopicIds(),updateBlogForm.getTagIds());
return Response.success();
} catch (BlogServiceException e) {
e.printStackTrace();
return Response.error(e);
}
}
} }
...@@ -3,6 +3,7 @@ package cn.meteor.beyondclouds.modules.blog.api; ...@@ -3,6 +3,7 @@ package cn.meteor.beyondclouds.modules.blog.api;
import cn.meteor.beyondclouds.core.annotation.CurrentSubject; import cn.meteor.beyondclouds.core.annotation.CurrentSubject;
import cn.meteor.beyondclouds.core.api.Response; import cn.meteor.beyondclouds.core.api.Response;
import cn.meteor.beyondclouds.core.bean.Subject; import cn.meteor.beyondclouds.core.bean.Subject;
import cn.meteor.beyondclouds.modules.blog.exception.BlogCommentServiceException;
import cn.meteor.beyondclouds.modules.blog.form.BlogCommentForm; import cn.meteor.beyondclouds.modules.blog.form.BlogCommentForm;
import cn.meteor.beyondclouds.modules.blog.service.IBlogCommentService; import cn.meteor.beyondclouds.modules.blog.service.IBlogCommentService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
...@@ -29,10 +30,22 @@ public class BlogCommentApi { ...@@ -29,10 +30,22 @@ public class BlogCommentApi {
@ApiOperation("创建评论") @ApiOperation("创建评论")
@PostMapping("/blog/{blogId}/comment") @PostMapping("/blog/{blogId}/comment")
public Response commentCreate (@PathVariable("blogId") String blogId, @RequestBody @Valid BlogCommentForm blogCommentForm, @CurrentSubject Subject subject){ public Response createComment (@PathVariable("blogId") String blogId, @RequestBody @Valid BlogCommentForm blogCommentForm, @CurrentSubject Subject subject){
blogCommentService.commentCreate(blogId, blogCommentForm.getParentId(), blogCommentService.commentCreate(blogId, blogCommentForm.getParentId(),
blogCommentForm.getComment(), (String) subject.getId()); blogCommentForm.getComment(), (String) subject.getId());
return Response.success(); return Response.success();
} }
@ApiOperation("删除评论")
@DeleteMapping("/blog/comment/{commentId}")
public Response deleteBlogComment (@PathVariable("commentId") Integer commentId , @CurrentSubject Subject subject) {
try {
blogCommentService.deleteComment(commentId, (String) subject.getId());
return Response.success();
} catch (BlogCommentServiceException e) {
e.printStackTrace();
return Response.error(e);
}
}
} }
...@@ -7,6 +7,8 @@ import cn.meteor.beyondclouds.core.IErrorCode; ...@@ -7,6 +7,8 @@ import cn.meteor.beyondclouds.core.IErrorCode;
* @date 2020/1/31 9:21 * @date 2020/1/31 9:21
*/ */
public enum BlogCommentErrorCode implements IErrorCode { public enum BlogCommentErrorCode implements IErrorCode {
COMMENT_NOT_FOUND(8003,"该评论不存在"),
NO_DELETE_PRIVILEGES(8004,"没有权限删除评论")
; ;
private long code; private long code;
......
...@@ -35,7 +35,6 @@ public class PublishBlogForm { ...@@ -35,7 +35,6 @@ public class PublishBlogForm {
private List<String> tagIds; private List<String> tagIds;
@NotNull(message = "浏览权限不能为空") @NotNull(message = "浏览权限不能为空")
private Integer viewPrivileges; private Integer viewPrivileges;
......
package cn.meteor.beyondclouds.modules.blog.form;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
* @author gaoTong
* @date 2020/2/1 14:48
*/
@Data
public class UpdateBlogForm {
private String blogTitle;
private String originLink;
private String blogAbstract;
private Integer categoryId;
private String Content;
private List<String> topicIds;
private List<String> tagIds;
private Integer viewPrivileges;
private Boolean allowComment;
private Boolean allowForward;
private String cover;
}
package cn.meteor.beyondclouds.modules.blog.service; package cn.meteor.beyondclouds.modules.blog.service;
import cn.meteor.beyondclouds.modules.blog.entity.BlogComment; import cn.meteor.beyondclouds.modules.blog.entity.BlogComment;
import cn.meteor.beyondclouds.modules.blog.exception.BlogCommentServiceException;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
/** /**
...@@ -13,6 +15,27 @@ import com.baomidou.mybatisplus.extension.service.IService; ...@@ -13,6 +15,27 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/ */
public interface IBlogCommentService extends IService<BlogComment> { public interface IBlogCommentService extends IService<BlogComment> {
/**
* 创建评论
* @param blogId
* @param parentId
* @param comment
* @param userId
*/
void commentCreate(String blogId,Integer parentId,String comment,String userId); void commentCreate(String blogId,Integer parentId,String comment,String userId);
/**
* 评论列表
* @param blogId
* @return
*/
IPage<BlogComment> getComments(String blogId);
/**
* 删除评论
* @param commentId
* @param userId
*/
void deleteComment(Integer commentId, String userId) throws BlogCommentServiceException;
} }
...@@ -2,6 +2,7 @@ package cn.meteor.beyondclouds.modules.blog.service; ...@@ -2,6 +2,7 @@ package cn.meteor.beyondclouds.modules.blog.service;
import cn.meteor.beyondclouds.modules.blog.bean.BlogDetail; import cn.meteor.beyondclouds.modules.blog.bean.BlogDetail;
import cn.meteor.beyondclouds.modules.blog.entity.Blog; import cn.meteor.beyondclouds.modules.blog.entity.Blog;
import cn.meteor.beyondclouds.modules.blog.entity.BlogComment;
import cn.meteor.beyondclouds.modules.blog.entity.BlogExt; import cn.meteor.beyondclouds.modules.blog.entity.BlogExt;
import cn.meteor.beyondclouds.modules.blog.entity.BlogTag; import cn.meteor.beyondclouds.modules.blog.entity.BlogTag;
import cn.meteor.beyondclouds.modules.blog.exception.BlogServiceException; import cn.meteor.beyondclouds.modules.blog.exception.BlogServiceException;
...@@ -53,11 +54,24 @@ public interface IBlogService extends IService<Blog> { ...@@ -53,11 +54,24 @@ public interface IBlogService extends IService<Blog> {
IPage<Blog> getBlogPage(Integer pageNumber , Integer pageSize); IPage<Blog> getBlogPage(Integer pageNumber , Integer pageSize);
/** /**
* 博客列表 * 个人博客列表
* @param pageNumber * @param pageNumber
* @param pageSize * @param pageSize
* @param userId * @param userId
* @return * @return
*/ */
IPage<Blog> getUserBlogPage(Integer pageNumber , Integer pageSize , String userId); IPage<Blog> getUserBlogPage(Integer pageNumber , Integer pageSize , String userId);
/**
* 更新博客
* @param blog
* @param content
* @param topicIds
* @param tagIds
*/
void updateBlog(Blog blog , String content , List<String> topicIds , List<String> tagIds) throws BlogServiceException;
} }
package cn.meteor.beyondclouds.modules.blog.service.impl; package cn.meteor.beyondclouds.modules.blog.service.impl;
import cn.meteor.beyondclouds.modules.blog.entity.Blog;
import cn.meteor.beyondclouds.modules.blog.entity.BlogComment; import cn.meteor.beyondclouds.modules.blog.entity.BlogComment;
import cn.meteor.beyondclouds.modules.blog.enums.BlogCommentErrorCode;
import cn.meteor.beyondclouds.modules.blog.enums.BlogErrorCode;
import cn.meteor.beyondclouds.modules.blog.exception.BlogCommentServiceException;
import cn.meteor.beyondclouds.modules.blog.mapper.BlogCommentMapper; import cn.meteor.beyondclouds.modules.blog.mapper.BlogCommentMapper;
import cn.meteor.beyondclouds.modules.blog.service.IBlogCommentService; import cn.meteor.beyondclouds.modules.blog.service.IBlogCommentService;
import cn.meteor.beyondclouds.modules.blog.service.IBlogService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.Assert;
/** /**
* <p> * <p>
...@@ -18,6 +26,13 @@ import org.springframework.stereotype.Service; ...@@ -18,6 +26,13 @@ import org.springframework.stereotype.Service;
@Service @Service
public class BlogCommentServiceImpl extends ServiceImpl<BlogCommentMapper, BlogComment> implements IBlogCommentService { public class BlogCommentServiceImpl extends ServiceImpl<BlogCommentMapper, BlogComment> implements IBlogCommentService {
private IBlogService blogService;
@Autowired
public void setBlogService(IBlogService blogService) {
this.blogService = blogService;
}
@Override @Override
public void commentCreate(String blogId, Integer parentId, String comment, String userId) { public void commentCreate(String blogId, Integer parentId, String comment, String userId) {
...@@ -60,4 +75,35 @@ public class BlogCommentServiceImpl extends ServiceImpl<BlogCommentMapper, BlogC ...@@ -60,4 +75,35 @@ public class BlogCommentServiceImpl extends ServiceImpl<BlogCommentMapper, BlogC
updateById(blogComment); updateById(blogComment);
} }
@Override
public IPage<BlogComment> getComments(String blogId) {
return null;
}
@Override
public void deleteComment(Integer commentId, String userId) throws BlogCommentServiceException {
Assert.notNull(commentId, "commentId must not be null");
Assert.notNull(userId, "userId must not be null");
//1.查找评论是否存在
BlogComment blogComment = getById(commentId);
if (null == blogComment) {
throw new BlogCommentServiceException(BlogCommentErrorCode.COMMENT_NOT_FOUND);
}
//2.判断是不是自己的评论
if (!userId.equals(blogComment.getUserId())) {
//3.如果不是自己的评论看是否是自己的博客
Blog blog = blogService.getById(blogComment.getBlogId());
if (!blog.getUserId().equals(userId)) {
throw new BlogCommentServiceException(BlogCommentErrorCode.NO_DELETE_PRIVILEGES);
}
}
//4.删除评论
QueryWrapper blogCommentQueryWrapper = new QueryWrapper();
blogCommentQueryWrapper.like("thread", blogComment.getThread());
remove(blogCommentQueryWrapper);
}
} }
...@@ -2,6 +2,7 @@ package cn.meteor.beyondclouds.modules.blog.service.impl; ...@@ -2,6 +2,7 @@ package cn.meteor.beyondclouds.modules.blog.service.impl;
import cn.meteor.beyondclouds.modules.blog.bean.BlogDetail; import cn.meteor.beyondclouds.modules.blog.bean.BlogDetail;
import cn.meteor.beyondclouds.modules.blog.entity.Blog; import cn.meteor.beyondclouds.modules.blog.entity.Blog;
import cn.meteor.beyondclouds.modules.blog.entity.BlogComment;
import cn.meteor.beyondclouds.modules.blog.entity.BlogExt; import cn.meteor.beyondclouds.modules.blog.entity.BlogExt;
import cn.meteor.beyondclouds.modules.blog.entity.BlogTag; import cn.meteor.beyondclouds.modules.blog.entity.BlogTag;
import cn.meteor.beyondclouds.modules.blog.enums.BlogErrorCode; import cn.meteor.beyondclouds.modules.blog.enums.BlogErrorCode;
...@@ -23,6 +24,8 @@ import lombok.extern.java.Log; ...@@ -23,6 +24,8 @@ import lombok.extern.java.Log;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.Assert;
import org.springframework.util.StringUtils;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
...@@ -50,16 +53,17 @@ public class BlogServiceImpl extends ServiceImpl<BlogMapper, Blog> implements IB ...@@ -50,16 +53,17 @@ public class BlogServiceImpl extends ServiceImpl<BlogMapper, Blog> implements IB
private IBlogCommentService blogCommentService; private IBlogCommentService blogCommentService;
@Autowired @Autowired
public BlogServiceImpl(IBlogTagService blogTagService, ITopicReferenceService topicReferenceService, IBlogExtService blogExtService, IBlogCommentService blogCommentService) { public void setBlogCommentService(IBlogCommentService blogCommentService) {
this.blogCommentService = blogCommentService;
}
@Autowired
public BlogServiceImpl(IBlogTagService blogTagService, ITopicReferenceService topicReferenceService, IBlogExtService blogExtService) {
this.blogTagService = blogTagService; this.blogTagService = blogTagService;
this.topicReferenceService = topicReferenceService; this.topicReferenceService = topicReferenceService;
this.blogExtService = blogExtService; this.blogExtService = blogExtService;
this.blogCommentService = blogCommentService;
} }
@Override @Override
public void publishBlog(Blog blog, String content, List<String> topicIds, List<String> tagIds) { public void publishBlog(Blog blog, String content, List<String> topicIds, List<String> tagIds) {
...@@ -179,5 +183,61 @@ public class BlogServiceImpl extends ServiceImpl<BlogMapper, Blog> implements IB ...@@ -179,5 +183,61 @@ public class BlogServiceImpl extends ServiceImpl<BlogMapper, Blog> implements IB
return page(page, myBlogQueryWrapper); return page(page, myBlogQueryWrapper);
} }
@Override
public void updateBlog(Blog blog, String content, List<String> topicIds, List<String> tagIds) throws BlogServiceException {
Assert.notNull(blog, "blog must not be null");
Assert.notNull(blog.getBlogId(), "blogId must not be null");
Assert.notNull(blog.getUserId(),"userId must not be null");
//1.判断当前用户是否拥有此博客
Blog blogInDb = getById(blog);
if (null == blogInDb) {
throw new BlogServiceException(BlogErrorCode.BLOG_NOT_FOUND);
}
//2.更新博客基本信息
updateById(blog);
//3.更新博客内容
if (!StringUtils.isEmpty(content)) {
BlogExt blogExt = new BlogExt();
blogExt.setBlogId(blog.getBlogId());
blogExt.setContent(content);
QueryWrapper blogExtQueryWrapper = new QueryWrapper();
blogExtQueryWrapper.eq("blog_id", blog.getBlogId());
blogExtService.update(blogExt,blogExtQueryWrapper);
}
//4.更新标签
if (!StringUtils.isEmpty(tagIds)) {
QueryWrapper tagIdQueryWrapperTag = new QueryWrapper();
tagIdQueryWrapperTag.eq("blog_id", blog.getBlogId());
blogTagService.remove(tagIdQueryWrapperTag);
for (String tagId : tagIds) {
BlogTag blogTag = new BlogTag();
blogTag.setBlogId(blog.getBlogId());
blogTag.setTagId(tagId);
blogTagService.save(blogTag);
}
}
//5.更新话题
if (!StringUtils.isEmpty(topicIds)) {
QueryWrapper topicIdQueryWrapper = new QueryWrapper();
topicIdQueryWrapper.eq("referencer_id", blog.getBlogId());
topicReferenceService.remove(topicIdQueryWrapper);
for (String topicId : topicIds) {
TopicReference topicReference = new TopicReference();
topicReference.setTopicId(topicId);
topicReference.setReferencerId(blog.getBlogId());
topicReference.setReferencerType(0);
topicReferenceService.save(topicReference);
}
}
}
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment