Commit 1887ac9a by 段启岩

Merge remote-tracking branch 'origin/fix-issue#48'

parents dd3658ca 7ba6467d
...@@ -114,4 +114,16 @@ public class QuestionReplyApi { ...@@ -114,4 +114,16 @@ public class QuestionReplyApi {
return Response.error(e); return Response.error(e);
} }
} }
@ApiOperation("取消采纳回复")
@PutMapping("/question/reply/{replyId}/cancelAdoption")
public Response cancelQuestionAdoption(String questionId, @PathVariable("replyId") String replyId, @CurrentSubject Subject subject) {
try {
questionReplyService.cancelReplyAdoption(questionId, replyId, (String) subject.getId());
return Response.success();
} catch (QuestionReplyServiceException e) {
e.printStackTrace();
return Response.error(e);
}
}
} }
...@@ -18,7 +18,11 @@ public enum QuestionReplyErrorCode implements IErrorCode { ...@@ -18,7 +18,11 @@ public enum QuestionReplyErrorCode implements IErrorCode {
/** /**
* 无权删除评论 * 无权删除评论
*/ */
NO_DELETE_PRIVILEGES(4003,"无权删除该回复"); NO_DELETE_PRIVILEGES(4003,"无权删除该回复"),
/**
* 回复未被采纳
*/
REPLY_NOT_ADOPTED(4004, "回复未被采纳");
private long code; private long code;
private String msg; private String msg;
......
...@@ -2,6 +2,7 @@ package cn.meteor.beyondclouds.modules.question.service; ...@@ -2,6 +2,7 @@ package cn.meteor.beyondclouds.modules.question.service;
import cn.meteor.beyondclouds.modules.question.entity.QuestionReply; import cn.meteor.beyondclouds.modules.question.entity.QuestionReply;
import cn.meteor.beyondclouds.modules.question.exception.QuestionReplyServiceException; import cn.meteor.beyondclouds.modules.question.exception.QuestionReplyServiceException;
import cn.meteor.beyondclouds.modules.question.exception.QuestionServiceException;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
...@@ -70,4 +71,13 @@ public interface IQuestionReplyService extends IService<QuestionReply> { ...@@ -70,4 +71,13 @@ public interface IQuestionReplyService extends IService<QuestionReply> {
* @param userId 用户ID * @param userId 用户ID
*/ */
void updateQuestionReplyUserAvatar(String userId); void updateQuestionReplyUserAvatar(String userId);
/**
* 取消采纳回复
* @param questionId 问题ID
* @param replyId 回复ID
* @param userId 用户ID
* @throws QuestionReplyServiceException 问题回复业务异常
*/
void cancelReplyAdoption(String questionId, String replyId, String userId) throws QuestionReplyServiceException;
} }
...@@ -19,6 +19,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; ...@@ -19,6 +19,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
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.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -36,6 +37,8 @@ public class QuestionReplyServiceImpl extends ServiceImpl<QuestionReplyMapper, Q ...@@ -36,6 +37,8 @@ public class QuestionReplyServiceImpl extends ServiceImpl<QuestionReplyMapper, Q
private int ADOPTED_REPLY_STATUS = 1; private int ADOPTED_REPLY_STATUS = 1;
private int NOT_ADOPTED_REPLY_STATUS = 0;
private IQuestionService questionService; private IQuestionService questionService;
private IQuestionReplyCommentService questionReplyCommentService; private IQuestionReplyCommentService questionReplyCommentService;
...@@ -219,4 +222,53 @@ public class QuestionReplyServiceImpl extends ServiceImpl<QuestionReplyMapper, Q ...@@ -219,4 +222,53 @@ public class QuestionReplyServiceImpl extends ServiceImpl<QuestionReplyMapper, Q
update(questionReplyUpdateWrapper); update(questionReplyUpdateWrapper);
} }
} }
@Override
public void cancelReplyAdoption(String questionId, String replyId, String userId) throws QuestionReplyServiceException {
//1.判断用户是否发布过该问题
QueryWrapper<Question> questionQueryWrapper = new QueryWrapper<>();
questionQueryWrapper.eq("user_id", userId)
.eq("question_id", questionId);
Question question = questionService.getOne(questionQueryWrapper);
//若问题不存在,则抛出问题不存在异常
if (null == question) {
throw new QuestionReplyServiceException(QuestionErrorCode.QUESTION_NOT_FOUND);
}
//2.判断该问题的回复是否存在
QueryWrapper<QuestionReply> questionReplyQueryWrapper = new QueryWrapper<>();
questionReplyQueryWrapper.eq("question_id", questionId)
.eq("reply_id", replyId);
QuestionReply questionReply = getOne(questionReplyQueryWrapper);
//若该回复不存在,则抛出回复不存在异常
if (null == questionReply) {
throw new QuestionReplyServiceException(QuestionReplyErrorCode.REPLY_NOT_FOUND);
}
//3.判断该回复之前是否已被采纳,若未被采纳,则抛出回复未被采纳异常
if (0 == questionReply.getReplyStatus()) {
throw new QuestionReplyServiceException(QuestionReplyErrorCode.REPLY_NOT_ADOPTED);
}
//4.取消采纳回复
UpdateWrapper<QuestionReply> updateWrapper = new UpdateWrapper<>();
updateWrapper.set("reply_status", NOT_ADOPTED_REPLY_STATUS).eq("reply_id", questionReply.getReplyId());
update(updateWrapper);
//5.更新问题解决状态
QueryWrapper<QuestionReply> replyQueryWrapper = new QueryWrapper<>();
replyQueryWrapper.eq("question_id", question.getQuestionId())
.eq("reply_status", ADOPTED_REPLY_STATUS);
List<QuestionReply> questionReplies = list(replyQueryWrapper);
//若questionReplies为空,则需要更新问题的解决状态
if (CollectionUtils.isEmpty(questionReplies)) {
UpdateWrapper<Question> questionUpdateWrapper = new UpdateWrapper<>();
questionUpdateWrapper.set("solved", false)
.eq("question_id", question.getQuestionId());
questionService.update(questionUpdateWrapper);
}
}
} }
...@@ -4,7 +4,7 @@ spring: ...@@ -4,7 +4,7 @@ spring:
driver-class-name: com.mysql.cj.jdbc.Driver driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/beyond_clouds?useUnicode=true&characterEncoding=UTF-8&useSSL=false&allowPublicKeyRetrieval=true url: jdbc:mysql://127.0.0.1:3306/beyond_clouds?useUnicode=true&characterEncoding=UTF-8&useSSL=false&allowPublicKeyRetrieval=true
username: root username: root
password: 100Centa30821%mysql password: 197442
# 邮箱 # 邮箱
mail: mail:
......
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