Commit e0d9ff06 by 段启岩

项目点赞完成

parent d3decc13
......@@ -20,9 +20,7 @@ public enum ErrorCode implements IErrorCode {
* 前端传进来的参数没有通过校验规则
*/
FIELD_CHECK_FAILURE(-2, "参数校验失败!"),
DUPLICATE_SUBMISSION(-3, "访问太频繁"),
ALREADY_PRAISE(-4, "已经点过赞"),
NON_PRAISE(-5, "没有点过赞");
DUPLICATE_SUBMISSION(-3, "访问太频繁");
private Integer code;
private String msg;
......
......@@ -27,28 +27,56 @@ public class ProjectPraiseApi {
this.projectPraiseService = projectPraiseService;
}
@ApiOperation("点赞")
@PostMapping("/project/{targetId}/praise")
public Response praise (@PathVariable("targetId") String targetId,
@RequestParam("targetType") Integer targetType) throws ProjectServiceException {
@ApiOperation("项目点赞")
@PostMapping("/project/{projectId}/praise")
public Response praiseProject(@PathVariable("projectId") String projectId) {
Subject subject = SubjectUtils.getSubject();
String currentUserId = (String) subject.getId();
try {
projectPraiseService.praiseProject(currentUserId, projectId);
return Response.success();
} catch (ProjectServiceException e) {
return Response.error(e);
}
}
// TODO 实现点赞功能,包括项目,评论的点赞
projectPraiseService.praise(currentUserId,targetId,targetType);
return Response.success();
@ApiOperation("取消项目点赞")
@DeleteMapping("/project/{projectId}/praise")
public Response deleteProjectPraise(@PathVariable("projectId") String projectId) {
Subject subject = SubjectUtils.getSubject();
String currentUserId = (String) subject.getId();
try {
projectPraiseService.deleteProjectPraise(currentUserId, projectId);
return Response.success();
} catch (ProjectServiceException e) {
return Response.error(e);
}
}
@ApiOperation("取消点赞")
@DeleteMapping("/project/{targetId}/praise")
public Response deletePraise (@PathVariable("targetId") String targetId,
@RequestParam("targetType") Integer targetType) throws ProjectServiceException {
@ApiOperation("项目评论点赞")
@PostMapping("/project/comment/{commentId}/praise")
public Response praiseProjectComment(@PathVariable("commentId") String commentId) {
Subject subject = SubjectUtils.getSubject();
String currentUserId = (String) subject.getId();
try {
projectPraiseService.praiseProjectComment(currentUserId, commentId);
return Response.success();
} catch (ProjectServiceException e) {
return Response.error(e);
}
}
// TODO 实现取消点赞功能,包括项目,评论的取消点赞
projectPraiseService.deletePraise(currentUserId,targetId,targetType);
return Response.success();
@ApiOperation("取消项目评论点赞")
@DeleteMapping("/project/comment/{commentId}/praise")
public Response deleteProjectCommentPraise(@PathVariable("commentId") String commentId) {
Subject subject = SubjectUtils.getSubject();
String currentUserId = (String) subject.getId();
try {
projectPraiseService.deleteProjectCommentPraise(currentUserId, commentId);
return Response.success();
} catch (ProjectServiceException e) {
return Response.error(e);
}
}
}
package cn.meteor.beyondclouds.modules.project.enums;
import cn.meteor.beyondclouds.core.IErrorCode;
/**
* @author 段启岩
*/
public enum ProjectPraiseErrorCode implements IErrorCode {
ALREADY_PRAISE(120001, "已经点过赞"),
NON_PRAISE(120002, "没有点过赞");
private long code;
private String msg;
ProjectPraiseErrorCode(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.project.enums;
import lombok.Getter;
/**
* @author meteor
*/
@Getter
public enum ProjectPraiseType {
/**
* 项目点赞
*/
PROJECT_PRAISE(1),
/**
* 项目评论点赞
*/
PROJECT_COMMENT_PRAISE(2)
;
private Integer praiseType;
ProjectPraiseType(Integer praiseType) {
this.praiseType = praiseType;
}
}
package cn.meteor.beyondclouds.modules.project.service;
import cn.meteor.beyondclouds.core.authentication.Subject;
import cn.meteor.beyondclouds.modules.project.entity.ProjectPraise;
import cn.meteor.beyondclouds.modules.project.exception.ProjectServiceException;
import com.baomidou.mybatisplus.extension.service.IService;
......@@ -18,17 +17,29 @@ public interface IProjectPraiseService extends IService<ProjectPraise> {
/**
* 点赞
* @param currentUserId
* @param targetId
* @param targetType
* @param projectId
* @throws ProjectServiceException
*/
void praise(String currentUserId, String targetId, Integer targetType) throws ProjectServiceException;
void praiseProject(String currentUserId, String projectId) throws ProjectServiceException;
/**
* 取消点赞
* @param currentUserId
* @param targetId
* @param targetType
* @param projectId
*/
void deletePraise(String currentUserId, String targetId, Integer targetType) throws ProjectServiceException;
void deleteProjectPraise(String currentUserId, String projectId) throws ProjectServiceException;
/**
* 项目评论点赞
* @param currentUserId
* @param commentId
*/
void praiseProjectComment(String currentUserId, String commentId) throws ProjectServiceException;
/**
* 取消项目评论点赞
* @param currentUserId
* @param commentId
*/
void deleteProjectCommentPraise(String currentUserId, String commentId) throws ProjectServiceException;
}
package cn.meteor.beyondclouds.modules.project.service.impl;
import cn.meteor.beyondclouds.common.enums.ErrorCode;
import cn.meteor.beyondclouds.core.authentication.Subject;
import cn.meteor.beyondclouds.core.exception.ServiceException;
import cn.meteor.beyondclouds.modules.post.service.IPostCommentService;
import cn.meteor.beyondclouds.modules.project.entity.Project;
import cn.meteor.beyondclouds.modules.project.entity.ProjectComment;
import cn.meteor.beyondclouds.modules.project.entity.ProjectPraise;
import cn.meteor.beyondclouds.modules.project.enums.ProjectCommentErrorCode;
import cn.meteor.beyondclouds.modules.project.enums.ProjectErrorCode;
import cn.meteor.beyondclouds.modules.project.enums.ProjectPraiseErrorCode;
import cn.meteor.beyondclouds.modules.project.enums.ProjectPraiseType;
import cn.meteor.beyondclouds.modules.project.exception.ProjectServiceException;
import cn.meteor.beyondclouds.modules.project.mapper.ProjectPraiseMapper;
import cn.meteor.beyondclouds.modules.project.service.IProjectCommentService;
import cn.meteor.beyondclouds.modules.project.service.IProjectPraiseService;
import cn.meteor.beyondclouds.modules.project.service.IProjectService;
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;
/**
......@@ -23,38 +30,105 @@ import org.springframework.stereotype.Service;
@Service
public class ProjectPraiseServiceImpl extends ServiceImpl<ProjectPraiseMapper, ProjectPraise> implements IProjectPraiseService {
private IProjectService projectService;
private IProjectCommentService projectCommentService;
@Autowired
public void setProjectService(IProjectService projectService) {
this.projectService = projectService;
}
@Autowired
public void setProjectCommentService(IProjectCommentService projectCommentService) {
this.projectCommentService = projectCommentService;
}
@Override
public void praiseProject(String currentUserId, String projectId) throws ProjectServiceException {
// 1.查询项目是否存在
Project project = projectService.getById(projectId);
if (null == project) {
throw new ProjectServiceException(ProjectErrorCode.PROJECT_NOT_FOUND);
}
// 2.查询是否点过赞
QueryWrapper<ProjectPraise> projectPraiseQueryWrapper = new QueryWrapper();
projectPraiseQueryWrapper.eq("user_id", currentUserId);
projectPraiseQueryWrapper.eq("target_id", projectId);
projectPraiseQueryWrapper.eq("target_type", ProjectPraiseType.PROJECT_PRAISE.getPraiseType());
ProjectPraise projectPraise = getOne(projectPraiseQueryWrapper);
if(null != getOne(projectPraiseQueryWrapper)){
throw new ProjectServiceException(ProjectPraiseErrorCode.ALREADY_PRAISE);
}
// 保存点赞
projectPraise = new ProjectPraise();
projectPraise.setUserId(currentUserId);
projectPraise.setTargetId(projectId);
projectPraise.setTargetType(ProjectPraiseType.PROJECT_PRAISE.getPraiseType());
save(projectPraise);
}
@Override
public void praise(String currentUserId, String targetId, Integer targetType) throws ProjectServiceException {
public void deleteProjectPraise(String currentUserId, String projectId) throws ProjectServiceException {
// 1.判断是否点过赞
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("user_id", currentUserId);
queryWrapper.eq("target_id", targetId);
queryWrapper.eq("target_type", targetType);
if(null == getOne(queryWrapper)){
ProjectPraise projectPraise = new ProjectPraise();
projectPraise.setUserId(currentUserId);
projectPraise.setTargetId(targetId);
projectPraise.setTargetType(targetType);
save(projectPraise);
}else{
throw new ProjectServiceException(ErrorCode.ALREADY_PRAISE);
queryWrapper.eq("target_id", projectId);
queryWrapper.eq("target_type", ProjectPraiseType.PROJECT_PRAISE.getPraiseType());
ProjectPraise projectPraise = getOne(queryWrapper);
if(null == projectPraise) {
throw new ProjectServiceException(ProjectPraiseErrorCode.NON_PRAISE);
}
// 1.删除
remove(queryWrapper);
}
@Override
public void praiseProjectComment(String currentUserId, String commentId) throws ProjectServiceException {
// 1.查询评论是否存在
ProjectComment projectComment = projectCommentService.getById(commentId);
if (null == projectComment) {
throw new ProjectServiceException(ProjectCommentErrorCode.COMMENT_NOT_FOUND);
}
// 2.查询是否点过赞
QueryWrapper<ProjectPraise> projectPraiseQueryWrapper = new QueryWrapper();
projectPraiseQueryWrapper.eq("user_id", currentUserId);
projectPraiseQueryWrapper.eq("target_id", commentId);
projectPraiseQueryWrapper.eq("target_type", ProjectPraiseType.PROJECT_COMMENT_PRAISE.getPraiseType());
ProjectPraise projectPraise = getOne(projectPraiseQueryWrapper);
if(null != getOne(projectPraiseQueryWrapper)){
throw new ProjectServiceException(ProjectPraiseErrorCode.ALREADY_PRAISE);
}
// 保存点赞
projectPraise = new ProjectPraise();
projectPraise.setUserId(currentUserId);
projectPraise.setTargetId(commentId);
projectPraise.setTargetType(ProjectPraiseType.PROJECT_COMMENT_PRAISE.getPraiseType());
save(projectPraise);
}
@Override
public void deletePraise(String currentUserId, String targetId, Integer targetType) throws ProjectServiceException {
public void deleteProjectCommentPraise(String currentUserId, String commentId) throws ProjectServiceException {
// 1.判断是否点过赞
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("user_id", currentUserId);
queryWrapper.eq("target_id", targetId);
queryWrapper.eq("target_type", targetType);
queryWrapper.eq("target_id", commentId);
queryWrapper.eq("target_type", ProjectPraiseType.PROJECT_COMMENT_PRAISE.getPraiseType());
if(null != getOne(queryWrapper)){
remove(queryWrapper);
}else{
throw new ProjectServiceException(ErrorCode.NON_PRAISE);
ProjectPraise projectPraise = getOne(queryWrapper);
if(null == projectPraise) {
throw new ProjectServiceException(ProjectPraiseErrorCode.NON_PRAISE);
}
// 1.删除
remove(queryWrapper);
}
}
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