Commit 9c41b925 by 段启岩

问题回复和评论列表添加头像和昵称

parent 1c3d1ee6
...@@ -11,6 +11,7 @@ import cn.meteor.beyondclouds.modules.question.entity.Question; ...@@ -11,6 +11,7 @@ import cn.meteor.beyondclouds.modules.question.entity.Question;
import cn.meteor.beyondclouds.modules.question.exception.QuestionServiceException; import cn.meteor.beyondclouds.modules.question.exception.QuestionServiceException;
import cn.meteor.beyondclouds.modules.question.exception.QuestionTagServiceException; import cn.meteor.beyondclouds.modules.question.exception.QuestionTagServiceException;
import cn.meteor.beyondclouds.modules.question.form.QuestionForm; import cn.meteor.beyondclouds.modules.question.form.QuestionForm;
import cn.meteor.beyondclouds.modules.question.form.QuestionUpdateForm;
import cn.meteor.beyondclouds.modules.question.service.IQuestionService; import cn.meteor.beyondclouds.modules.question.service.IQuestionService;
import cn.meteor.beyondclouds.modules.question.service.IQuestionTagService; import cn.meteor.beyondclouds.modules.question.service.IQuestionTagService;
import cn.meteor.beyondclouds.modules.question.util.QuestionUtils; import cn.meteor.beyondclouds.modules.question.util.QuestionUtils;
...@@ -112,7 +113,7 @@ public class QuestionApi { ...@@ -112,7 +113,7 @@ public class QuestionApi {
*/ */
@ApiOperation("修改问题") @ApiOperation("修改问题")
@PutMapping("/question/{questionId}") @PutMapping("/question/{questionId}")
public Response modifyQuestion(@PathVariable("questionId") String questionId, @RequestBody @Valid QuestionForm questionForm, BindingResult result, @CurrentSubject Subject subject){ public Response modifyQuestion(@PathVariable("questionId") String questionId, @RequestBody @Valid QuestionUpdateForm questionForm, BindingResult result, @CurrentSubject Subject subject){
if (result.hasErrors()) { if (result.hasErrors()) {
return Response.fieldError(result.getFieldError()); return Response.fieldError(result.getFieldError());
} }
......
package cn.meteor.beyondclouds.modules.question.entity; package cn.meteor.beyondclouds.modules.question.entity;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import java.io.Serializable;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import java.io.Serializable;
import java.time.LocalDateTime;
/** /**
* <p> * <p>
* 问题回复表 * 问题回复表
...@@ -32,6 +33,12 @@ public class QuestionReply implements Serializable { ...@@ -32,6 +33,12 @@ public class QuestionReply implements Serializable {
@ApiModelProperty(value = "用户ID") @ApiModelProperty(value = "用户ID")
private String userId; private String userId;
@ApiModelProperty(value = "用户昵称")
private String userNick;
@ApiModelProperty(value = "用户头像")
private String userAvatar;
@ApiModelProperty(value = "问题ID") @ApiModelProperty(value = "问题ID")
private String questionId; private String questionId;
......
package cn.meteor.beyondclouds.modules.question.entity; package cn.meteor.beyondclouds.modules.question.entity;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import java.io.Serializable;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import java.io.Serializable;
import java.time.LocalDateTime;
/** /**
* <p> * <p>
* 问题回复评论表 * 问题回复评论表
...@@ -32,6 +33,13 @@ public class QuestionReplyComment implements Serializable { ...@@ -32,6 +33,13 @@ public class QuestionReplyComment implements Serializable {
@ApiModelProperty(value = "用户ID") @ApiModelProperty(value = "用户ID")
private String userId; private String userId;
@ApiModelProperty(value = "用户昵称")
private String userNick;
@ApiModelProperty(value = "用户头像")
private String userAvatar;
@ApiModelProperty(value = "回复ID") @ApiModelProperty(value = "回复ID")
private String replyId; private String replyId;
......
...@@ -24,6 +24,7 @@ public class QuestionForm { ...@@ -24,6 +24,7 @@ public class QuestionForm {
private Integer categoryId; private Integer categoryId;
@ApiModelProperty("标题") @ApiModelProperty("标题")
@NotNull(message = "问题标题不能为空")
@NotEmpty(message = "问题标题不能为空") @NotEmpty(message = "问题标题不能为空")
@Size(max = 256, message = "问题标题太长") @Size(max = 256, message = "问题标题太长")
private String questionTitle; private String questionTitle;
......
package cn.meteor.beyondclouds.modules.question.form;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.util.List;
/**
* @author 胡学良
* @since 2020/1/31
*/
@ApiModel(value = "QuestionForm", description = "问题表单")
@Data
public class QuestionUpdateForm {
private static final long serialVersionUID=1L;
@ApiModelProperty("类别ID")
@NotNull(message = "问题类别ID不能为空")
private Integer categoryId;
@ApiModelProperty("标题")
@NotEmpty(message = "问题标题不能为空")
@Size(max = 256, message = "问题标题太长")
private String questionTitle;
@ApiModelProperty("摘要")
@Size(max = 256, message = "问题摘要太长")
private String questionAbstract;
@ApiModelProperty("标签")
@Size(max = 12, message = "问题标签个数不能超过5个")
private List<String> tagIds;
@ApiModelProperty("详情")
private String questionDetail;
@ApiModelProperty("话题ID")
private List<String> topicIds;
}
...@@ -11,6 +11,8 @@ import cn.meteor.beyondclouds.modules.question.service.IQuestionReplyCommentServ ...@@ -11,6 +11,8 @@ import cn.meteor.beyondclouds.modules.question.service.IQuestionReplyCommentServ
import cn.meteor.beyondclouds.modules.question.service.IQuestionReplyService; import cn.meteor.beyondclouds.modules.question.service.IQuestionReplyService;
import cn.meteor.beyondclouds.modules.question.service.IQuestionService; import cn.meteor.beyondclouds.modules.question.service.IQuestionService;
import cn.meteor.beyondclouds.modules.question.util.QuestionUtils; import cn.meteor.beyondclouds.modules.question.util.QuestionUtils;
import cn.meteor.beyondclouds.modules.user.entity.User;
import cn.meteor.beyondclouds.modules.user.service.IUserService;
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.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
...@@ -20,8 +22,6 @@ import org.springframework.stereotype.Service; ...@@ -20,8 +22,6 @@ import org.springframework.stereotype.Service;
import org.springframework.util.Assert; import org.springframework.util.Assert;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import java.nio.file.Watchable;
/** /**
* <p> * <p>
* 问题回复评论表 服务实现类 * 问题回复评论表 服务实现类
...@@ -37,12 +37,19 @@ public class QuestionReplyCommentServiceImpl extends ServiceImpl<QuestionReplyCo ...@@ -37,12 +37,19 @@ public class QuestionReplyCommentServiceImpl extends ServiceImpl<QuestionReplyCo
private IQuestionReplyService questionReplyService; private IQuestionReplyService questionReplyService;
private IUserService userService;
@Autowired @Autowired
public void setQuestionReplyService(IQuestionReplyService questionReplyService) { public void setQuestionReplyService(IQuestionReplyService questionReplyService) {
this.questionReplyService = questionReplyService; this.questionReplyService = questionReplyService;
} }
@Autowired @Autowired
public void setUserService(IUserService userService) {
this.userService = userService;
}
@Autowired
public void setQuestionService(IQuestionService questionService) { public void setQuestionService(IQuestionService questionService) {
this.questionService = questionService; this.questionService = questionService;
} }
...@@ -74,8 +81,11 @@ public class QuestionReplyCommentServiceImpl extends ServiceImpl<QuestionReplyCo ...@@ -74,8 +81,11 @@ public class QuestionReplyCommentServiceImpl extends ServiceImpl<QuestionReplyCo
} }
//3.保存评论信息 //3.保存评论信息
User user = userService.getById(userId);
QuestionReplyComment questionReplyComment = new QuestionReplyComment(); QuestionReplyComment questionReplyComment = new QuestionReplyComment();
questionReplyComment.setUserId(userId); questionReplyComment.setUserId(userId);
questionReplyComment.setUserNick(user.getNickName());
questionReplyComment.setUserAvatar(user.getUserAvatar());
questionReplyComment.setReplyId(replyId); questionReplyComment.setReplyId(replyId);
questionReplyComment.setParentId(parentId); questionReplyComment.setParentId(parentId);
questionReplyComment.setComment(comment); questionReplyComment.setComment(comment);
......
...@@ -10,6 +10,8 @@ import cn.meteor.beyondclouds.modules.question.service.IQuestionReplyCommentServ ...@@ -10,6 +10,8 @@ import cn.meteor.beyondclouds.modules.question.service.IQuestionReplyCommentServ
import cn.meteor.beyondclouds.modules.question.service.IQuestionReplyService; import cn.meteor.beyondclouds.modules.question.service.IQuestionReplyService;
import cn.meteor.beyondclouds.modules.question.service.IQuestionService; import cn.meteor.beyondclouds.modules.question.service.IQuestionService;
import cn.meteor.beyondclouds.modules.question.util.QuestionUtils; import cn.meteor.beyondclouds.modules.question.util.QuestionUtils;
import cn.meteor.beyondclouds.modules.user.entity.User;
import cn.meteor.beyondclouds.modules.user.service.IUserService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
...@@ -18,8 +20,6 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; ...@@ -18,8 +20,6 @@ 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 java.util.List;
/** /**
* <p> * <p>
* 问题回复表 服务实现类 * 问题回复表 服务实现类
...@@ -39,6 +39,8 @@ public class QuestionReplyServiceImpl extends ServiceImpl<QuestionReplyMapper, Q ...@@ -39,6 +39,8 @@ public class QuestionReplyServiceImpl extends ServiceImpl<QuestionReplyMapper, Q
private QuestionReplyMapper questionReplyMapper; private QuestionReplyMapper questionReplyMapper;
private IUserService userService;
@Autowired @Autowired
public void setQuestionService(IQuestionService questionService) { public void setQuestionService(IQuestionService questionService) {
this.questionService = questionService; this.questionService = questionService;
...@@ -50,6 +52,11 @@ public class QuestionReplyServiceImpl extends ServiceImpl<QuestionReplyMapper, Q ...@@ -50,6 +52,11 @@ public class QuestionReplyServiceImpl extends ServiceImpl<QuestionReplyMapper, Q
} }
@Autowired @Autowired
public void setUserService(IUserService userService) {
this.userService = userService;
}
@Autowired
public void setQuestionReplyCommentService(IQuestionReplyCommentService questionReplyCommentService) { public void setQuestionReplyCommentService(IQuestionReplyCommentService questionReplyCommentService) {
this.questionReplyCommentService = questionReplyCommentService; this.questionReplyCommentService = questionReplyCommentService;
} }
...@@ -65,10 +72,14 @@ public class QuestionReplyServiceImpl extends ServiceImpl<QuestionReplyMapper, Q ...@@ -65,10 +72,14 @@ public class QuestionReplyServiceImpl extends ServiceImpl<QuestionReplyMapper, Q
} }
//2.保存回复信息 //2.保存回复信息
User user = userService.getById(userId);
QuestionReply questionReply = new QuestionReply(); QuestionReply questionReply = new QuestionReply();
questionReply.setQuestionId(questionId); questionReply.setQuestionId(questionId);
questionReply.setReply(reply); questionReply.setReply(reply);
questionReply.setUserId(userId); questionReply.setUserId(userId);
questionReply.setUserNick(user.getNickName());
questionReply.setUserAvatar(user.getUserAvatar());
//默认该回复未被采纳 //默认该回复未被采纳
questionReply.setReplyStatus(0); questionReply.setReplyStatus(0);
save(questionReply); save(questionReply);
......
...@@ -205,10 +205,13 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i ...@@ -205,10 +205,13 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
} }
//2.检查问题标题是否以?结尾 //2.检查问题标题是否以?结尾
if (!StringUtils.isEmpty(question.getQuestionTitle())) {
if (!question.getQuestionTitle().endsWith(QUESTION_END_EN) && !question.getQuestionTitle().endsWith(QUESTION_END_CN)){ if (!question.getQuestionTitle().endsWith(QUESTION_END_EN) && !question.getQuestionTitle().endsWith(QUESTION_END_CN)){
throw new QuestionServiceException(QuestionErrorCode.QUESTION_END_ERROR); throw new QuestionServiceException(QuestionErrorCode.QUESTION_END_ERROR);
} }
}
//3.检查问题分类是否存在 //3.检查问题分类是否存在
QuestionCategory questionCategory = questionCategoryService.getById(question.getCategoryId()); QuestionCategory questionCategory = questionCategoryService.getById(question.getCategoryId());
if (null == questionCategory) { if (null == questionCategory) {
...@@ -322,7 +325,9 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i ...@@ -322,7 +325,9 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
@Override @Override
public IPage<Question> getQuestionPage(Integer pageNumber, Integer pageSize) { public IPage<Question> getQuestionPage(Integer pageNumber, Integer pageSize) {
IPage<Question> page = new Page<>(pageNumber,pageSize); IPage<Question> page = new Page<>(pageNumber,pageSize);
return questionMapper.selectPageWithTags(page, null); QueryWrapper<Question> questionQueryWrapper = new QueryWrapper<>();
questionQueryWrapper.orderByDesc("q.create_time");
return questionMapper.selectPageWithTags(page, questionQueryWrapper);
} }
@Override @Override
...@@ -330,6 +335,7 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i ...@@ -330,6 +335,7 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
IPage<Question> page = new Page<>(pageNumber, pageSize); IPage<Question> page = new Page<>(pageNumber, pageSize);
QueryWrapper<Question> questionQueryWrapper = new QueryWrapper<>(); QueryWrapper<Question> questionQueryWrapper = new QueryWrapper<>();
questionQueryWrapper.eq("q.user_id", userId); questionQueryWrapper.eq("q.user_id", userId);
questionQueryWrapper.orderByDesc("q.create_time");
return questionMapper.selectPageWithTags(page, questionQueryWrapper); return questionMapper.selectPageWithTags(page, questionQueryWrapper);
} }
......
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