Commit 5d4e09e6 by Author name

2.20 增加博客点赞和取消点赞功能

parent 3cfb6540
......@@ -8,6 +8,7 @@ import cn.meteor.beyondclouds.core.annotation.PreventDuplicate;
import cn.meteor.beyondclouds.core.annotation.ReplaceWithRemarks;
import cn.meteor.beyondclouds.core.api.Response;
import cn.meteor.beyondclouds.core.authentication.Subject;
import cn.meteor.beyondclouds.core.exception.ServiceException;
import cn.meteor.beyondclouds.core.flow.AccessInfo;
import cn.meteor.beyondclouds.core.flow.CollectAccessInfo;
import cn.meteor.beyondclouds.core.flow.ParamType;
......@@ -16,8 +17,11 @@ import cn.meteor.beyondclouds.core.validation.groups.UpdateGroup;
import cn.meteor.beyondclouds.modules.blog.dto.BlogDetailDTO;
import cn.meteor.beyondclouds.modules.blog.entity.Blog;
import cn.meteor.beyondclouds.modules.blog.exception.BlogCategoryServiceException;
import cn.meteor.beyondclouds.modules.blog.exception.BlogCommentServiceException;
import cn.meteor.beyondclouds.modules.blog.exception.BlogPraiseServiceException;
import cn.meteor.beyondclouds.modules.blog.exception.BlogServiceException;
import cn.meteor.beyondclouds.modules.blog.form.BlogForm;
import cn.meteor.beyondclouds.modules.blog.service.IBlogPraiseService;
import cn.meteor.beyondclouds.modules.blog.service.IBlogService;
import cn.meteor.beyondclouds.util.AccessInfoUtils;
import cn.meteor.beyondclouds.util.SubjectUtils;
......@@ -43,28 +47,42 @@ import javax.validation.Valid;
@RequestMapping("/api")
public class BlogPraiseApi {
private IBlogPraiseService blogPraiseService;
@Autowired
public void setBlogPraiseService(IBlogPraiseService blogPraiseService) {
this.blogPraiseService = blogPraiseService;
}
@ApiOperation("点赞")
@PostMapping("/blog/{targetId}/praise")
public Response praise (@PathVariable("targetId") String targetId,
@RequestParam("targetType") Integer targetType) {
Subject subject = SubjectUtils.getSubject();
Subject currentUserId = (Subject) subject.getId();
// TODO 实现点赞功能,包括博客,评论的点赞
return Response.success();
String currentUserId = (String) subject.getId();
try {
blogPraiseService.praise(currentUserId, targetId, targetType);
return Response.success();
} catch (ServiceException e) {
e.printStackTrace();
return Response.error(e);
}
}
@ApiOperation("点赞")
@ApiOperation("取消点赞")
@DeleteMapping("/blog/{targetId}/praise")
public Response deletePraise (@PathVariable("targetId") String targetId,
@RequestParam("targetType") Integer targetType) {
public Response deletePraise (@PathVariable("targetId") String targetId) {
Subject subject = SubjectUtils.getSubject();
Subject currentUserId = (Subject) subject.getId();
String currentUserId = (String) subject.getId();
// TODO 实现取消点赞功能,包括博客,评论的取消点赞
return Response.success();
try {
blogPraiseService.deletePraise(currentUserId, targetId);
return Response.success();
} catch (ServiceException e) {
e.printStackTrace();
return Response.error(e);
}
}
}
package cn.meteor.beyondclouds.modules.blog.enums;
import cn.meteor.beyondclouds.core.IErrorCode;
/**
* @author gaoTong
* @date 2020/2/20 10:59
*/
public enum BlogPraiseErrorCode implements IErrorCode {
BLOG_PRAISE_EXIST(8008,"您已经点过赞了"),
NO_DELETE_PRIVILEGES(8009,"没有权限取消赞")
;
private long code;
private String msg;
BlogPraiseErrorCode(long code, String msg) {
this.code = code;
this.msg = msg;
}
@Override
public long code() {
return code;
}
@Override
public String msg() {
return msg;
}
}
package cn.meteor.beyondclouds.modules.blog.exception;
import cn.meteor.beyondclouds.core.IErrorCode;
import cn.meteor.beyondclouds.core.exception.ServiceException;
/**
* @author gaoTong
* @date 2020/2/20 10:55
*/
public class BlogPraiseServiceException extends ServiceException {
public BlogPraiseServiceException(long errorCode, String errorMsg) {
super(errorCode, errorMsg);
}
public BlogPraiseServiceException(IErrorCode errorCode) {
super(errorCode.code() , errorCode.msg());
}
}
package cn.meteor.beyondclouds.modules.blog.service;
import cn.meteor.beyondclouds.modules.blog.entity.BlogPraise;
import cn.meteor.beyondclouds.modules.blog.exception.BlogCommentServiceException;
import cn.meteor.beyondclouds.modules.blog.exception.BlogPraiseServiceException;
import cn.meteor.beyondclouds.modules.blog.exception.BlogServiceException;
import com.baomidou.mybatisplus.extension.service.IService;
/**
......@@ -13,4 +16,18 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/
public interface IBlogPraiseService extends IService<BlogPraise> {
/**
* 点赞
* @param userId
* @param targetId
* @param targetType
*/
void praise(String userId , String targetId , Integer targetType) throws BlogServiceException, BlogPraiseServiceException, BlogCommentServiceException;
/**
* 取消点赞
* @param userId
* @param targetId
*/
void deletePraise(String userId , String targetId) throws BlogPraiseServiceException;
}
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.BlogPraise;
import cn.meteor.beyondclouds.modules.blog.enums.BlogCommentErrorCode;
import cn.meteor.beyondclouds.modules.blog.enums.BlogErrorCode;
import cn.meteor.beyondclouds.modules.blog.enums.BlogPraiseErrorCode;
import cn.meteor.beyondclouds.modules.blog.exception.BlogCommentServiceException;
import cn.meteor.beyondclouds.modules.blog.exception.BlogPraiseServiceException;
import cn.meteor.beyondclouds.modules.blog.exception.BlogServiceException;
import cn.meteor.beyondclouds.modules.blog.mapper.BlogPraiseMapper;
import cn.meteor.beyondclouds.modules.blog.service.IBlogCommentService;
import cn.meteor.beyondclouds.modules.blog.service.IBlogPraiseService;
import cn.meteor.beyondclouds.modules.blog.service.IBlogService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
/**
* <p>
......@@ -17,4 +30,81 @@ import org.springframework.stereotype.Service;
@Service
public class BlogPraiseServiceImpl extends ServiceImpl<BlogPraiseMapper, BlogPraise> implements IBlogPraiseService {
private IBlogService blogService;
private IBlogCommentService blogCommentService;
@Autowired
public void setBlogService(IBlogService blogService) {
this.blogService = blogService;
}
@Autowired
public void setBlogCommentService(IBlogCommentService blogCommentService) {
this.blogCommentService = blogCommentService;
}
@Override
public void praise(String userId, String targetId, Integer targetType) throws BlogServiceException, BlogPraiseServiceException, BlogCommentServiceException {
//判断是博客内容点赞还是博客评论
if (1 == targetType) {
//判断当前博客是否存在
Blog blog = blogService.getById(targetId);
if (null != blog) {
//判断该用户是否已经点过赞
QueryWrapper<BlogPraise> blogExtqueryWrapper = new QueryWrapper<>();
blogExtqueryWrapper.eq("user_id", userId);
blogExtqueryWrapper.eq("target_id", targetId);
BlogPraise blogExtPraise = getOne(blogExtqueryWrapper);
//如果没有点过赞则进行点赞
if (null == blogExtPraise) {
BlogPraise blogPraise = new BlogPraise();
blogPraise.setUserId(userId);
blogPraise.setTargetType(targetType);
blogPraise.setTargetId(targetId);
save(blogPraise);
} else {
throw new BlogPraiseServiceException(BlogPraiseErrorCode.BLOG_PRAISE_EXIST);
}
} else {
throw new BlogServiceException(BlogErrorCode.BLOG_NOT_FOUND);
}
} else if (2==targetType){
//判断当前评论是否存在
BlogComment blogComment = blogCommentService.getById(targetId);
if (null != blogComment) {
//判断该用户是否已经对此评论点过赞了
QueryWrapper<BlogPraise> blogCommentQueryWrapper = new QueryWrapper<>();
blogCommentQueryWrapper.eq("user_id", userId);
blogCommentQueryWrapper.eq("target_id", targetId);
BlogPraise blogCommentPraise = getOne(blogCommentQueryWrapper);
if (null == blogCommentPraise) {
BlogPraise blogPraise = new BlogPraise();
blogPraise.setUserId(userId);
blogPraise.setTargetType(targetType);
blogPraise.setTargetId(targetId);
save(blogPraise);
} else {
throw new BlogPraiseServiceException(BlogPraiseErrorCode.BLOG_PRAISE_EXIST);
}
} else {
throw new BlogCommentServiceException(BlogCommentErrorCode.COMMENT_NOT_FOUND);
}
}
}
@Override
public void deletePraise(String userId, String targetId) throws BlogPraiseServiceException {
//判断是否是该用户点的赞
QueryWrapper<BlogPraise> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("user_id", userId);
queryWrapper.eq("target_id", targetId);
BlogPraise blogPraise = getOne(queryWrapper);
if (null == blogPraise) {
throw new BlogPraiseServiceException(BlogPraiseErrorCode.NO_DELETE_PRIVILEGES);
}
remove(queryWrapper);
}
}
......@@ -77,6 +77,7 @@ public class BlogServiceImpl extends ServiceImpl<BlogMapper, Blog> implements IB
private IUserFollowService userFollowService;
private IBlogPraiseService blogPraiseService;
@Autowired
public BlogServiceImpl(IBlogTagService blogTagService, ITopicReferenceService topicReferenceService, IBlogExtService blogExtService, IBlogCategoryService blogCategoryService, BlogMapper blogMapper, ITagService tagService) {
this.blogTagService = blogTagService;
......@@ -112,6 +113,11 @@ public class BlogServiceImpl extends ServiceImpl<BlogMapper, Blog> implements IB
this.blogCommentService = blogCommentService;
}
@Autowired
public void setBlogPraiseService(IBlogPraiseService blogPraiseService) {
this.blogPraiseService = blogPraiseService;
}
/**
* 发布博客
*
......@@ -193,14 +199,29 @@ public class BlogServiceImpl extends ServiceImpl<BlogMapper, Blog> implements IB
//2.删除博客评论表
QueryWrapper<BlogComment> queryWrapperComment = new QueryWrapper();
queryWrapperComment.eq("blog_id", blogId);
//删除博客评论的点赞
List<String> blogCommentId = new ArrayList<>();
for (BlogComment blogComment : blogCommentService.list(queryWrapperComment)) {
String commentId = String.valueOf(blogComment.getCommentId());
blogCommentId.add(commentId);
}
QueryWrapper<BlogPraise> blogCommentPraiseQueryWrapper = new QueryWrapper<>();
blogCommentPraiseQueryWrapper.in("target_id", blogCommentId);
blogPraiseService.remove(blogCommentPraiseQueryWrapper);
blogCommentService.remove(queryWrapperComment);
//3.删除博客内容
QueryWrapper<BlogExt> queryWrapperExt = new QueryWrapper();
queryWrapperExt.eq("blog_id", blogId);
blogExtService.remove(queryWrapperExt);
//4.删除博客标签
//4.删除博客内容点赞
QueryWrapper<BlogPraise> blogExtPraiseQueryWrapper = new QueryWrapper<>();
blogExtPraiseQueryWrapper.eq("target_id", blogId);
blogPraiseService.remove(blogExtPraiseQueryWrapper);
//5.删除博客标签
QueryWrapper<BlogTag> queryWrapperTag = new QueryWrapper();
queryWrapperTag.eq("blog_id", blogId);
//引用标签数量减一
......@@ -210,7 +231,7 @@ public class BlogServiceImpl extends ServiceImpl<BlogMapper, Blog> implements IB
}
blogTagService.remove(queryWrapperTag);
//5.删除博客引用的话题
//6.删除博客引用的话题
QueryWrapper<TopicReference> queryWrapperTopic = new QueryWrapper();
queryWrapperTopic.eq("referencer_id", blogId);
//引用话题数量减一
......@@ -220,9 +241,10 @@ public class BlogServiceImpl extends ServiceImpl<BlogMapper, Blog> implements IB
}
topicReferenceService.remove(queryWrapperTopic);
//6.删除博客表里的数据
//7.删除博客表里的数据
removeById(blogId);
// 5.发送消息到消息队列
messageQueueService
.sendDataItemChangeMessage(
......
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