Commit 5c16d663 by 胡学良

问答标签、列表展示、发布回复

parent 75356962
package cn.meteor.beyondclouds.modules.question.api; package cn.meteor.beyondclouds.modules.question.api;
import cn.meteor.beyondclouds.common.form.PageForm;
import cn.meteor.beyondclouds.core.annotation.Anonymous; import cn.meteor.beyondclouds.core.annotation.Anonymous;
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.question.bean.QuestionDetails; import cn.meteor.beyondclouds.modules.question.bean.QuestionDetails;
import cn.meteor.beyondclouds.modules.question.entity.Question; import cn.meteor.beyondclouds.modules.question.entity.Question;
import cn.meteor.beyondclouds.modules.question.entity.QuestionReply;
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.form.QuestionForm; import cn.meteor.beyondclouds.modules.question.form.QuestionForm;
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.util.QuestionUtils; import cn.meteor.beyondclouds.modules.question.util.QuestionUtils;
import cn.meteor.beyondclouds.modules.question.vo.PageVO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
...@@ -31,9 +38,12 @@ public class QuestionApi { ...@@ -31,9 +38,12 @@ public class QuestionApi {
private IQuestionService questionService; private IQuestionService questionService;
private IQuestionTagService questionTagService;
@Autowired @Autowired
public QuestionApi(IQuestionService questionService) { public QuestionApi(IQuestionService questionService, IQuestionTagService questionTagService) {
this.questionService = questionService; this.questionService = questionService;
this.questionTagService = questionTagService;
} }
/** /**
...@@ -136,16 +146,103 @@ public class QuestionApi { ...@@ -136,16 +146,103 @@ public class QuestionApi {
@Anonymous @Anonymous
@ApiOperation("问题详情") @ApiOperation("问题详情")
@GetMapping("/question/{questionId}") @GetMapping("/question/{questionId}")
public Response questionDetails(@PathVariable("questionId") String questionId){ public Response<QuestionDetails> questionDetails(@PathVariable("questionId") String questionId){
QuestionDetails questionDetails = null; QuestionDetails questionDetails = null;
try { try {
questionDetails = questionService.questionDetails(questionId); questionDetails = questionService.questionDetails(questionId);
return Response.success(questionDetails); return Response.success(questionDetails);
} catch (QuestionServiceException e) { } catch (QuestionServiceException | QuestionTagServiceException e) {
e.printStackTrace();
return Response.error(e);
}
}
/**
* 得到问题引用标签
* @param questionId 问题ID
* @return 问题引用标签
*/
@Anonymous
@ApiOperation(("得到问题的引用标签"))
@GetMapping("/question/{questionId}/tags")
public Response<String> questionTags(@PathVariable("questionId") String questionId) {
try {
String tags = questionTagService.getQuestionTags(questionId);
return Response.success(tags);
} catch (QuestionTagServiceException e) {
e.printStackTrace(); e.printStackTrace();
return Response.error(e); return Response.error(e);
} }
} }
/**
* 问答列表
* @param pageForm 分页表单
* @return 问答列表
*/
@Anonymous
@ApiOperation("问答列表")
@GetMapping("/questions")
public Response<PageVO<Question>> getQuestions(@Valid PageForm pageForm) {
//获取列表并返回
IPage<Question> questionPage = questionService.getQuestionPage(pageForm.getPage(), pageForm.getSize());
PageVO<Question> questionPageVO = new PageVO<>();
questionPageVO.setTotalPage(questionPage.getPages());
questionPageVO.setDataList(questionPage.getRecords());
return Response.success(questionPageVO);
}
/**
* 我创建的问答列表
* @param pageForm 分页表单
* @param subject 访问者信息
* @return 我创建的问答列表
*/
@ApiOperation("我创建的问答列表")
@GetMapping("/my/questions")
public Response<PageVO<Question>> getMyQuestions(@Valid PageForm pageForm, @CurrentSubject Subject subject) {
//获取我的列表并返回
IPage<Question> myQuestionPage = questionService.getUserQuestionPage(pageForm.getPage(), pageForm.getSize(), (String) subject.getId());
PageVO<Question> questionPageVO = new PageVO<>();
questionPageVO.setTotalPage(myQuestionPage.getTotal());
questionPageVO.setDataList(myQuestionPage.getRecords());
return Response.success(questionPageVO);
}
/**
* 我参与的问答列表
* @param pageForm 分页表单
* @param subject 访问者信息
* @return 我参与的问答列表
*/
@ApiOperation("我参与的问答列表")
@GetMapping("/my/question/participated")
public Response<PageVO<QuestionReply>> getMyParticipateQuestions(@Valid PageForm pageForm, @CurrentSubject Subject subject) {
//获取我的列表并返回
IPage<QuestionReply> userParticipateQuestionReplyPage = questionService.getUserParticipateQuestionReplyPage(pageForm.getPage(), pageForm.getSize(), (String) subject.getId());
PageVO<QuestionReply> questionReplyPageVO = new PageVO<>();
questionReplyPageVO.setTotalPage(userParticipateQuestionReplyPage.getTotal());
questionReplyPageVO.setDataList(userParticipateQuestionReplyPage.getRecords());
return Response.success(questionReplyPageVO);
}
/**
* 用户创建的问答列表
* @param pageForm 分页表单
* @param userId 用户ID
* @return 用户创建的问答列表
*/
@Anonymous
@ApiOperation("用户创建的问答列表")
@GetMapping("/user/{userId}/questions")
public Response<PageVO<Question>> getOthersQuestions(@Valid PageForm pageForm, @PathVariable("userId") String userId) {
//获取别人的问答列表并返回
IPage<Question> questionPage = questionService.getUserQuestionPage(pageForm.getPage(), pageForm.getSize(), userId);
PageVO<Question> questionPageVO = new PageVO<>();
questionPageVO.setTotalPage(questionPage.getTotal());
questionPageVO.setDataList(questionPage.getRecords());
return Response.success(questionPageVO);
}
} }
package cn.meteor.beyondclouds.modules.question.api;
import cn.meteor.beyondclouds.core.annotation.CurrentSubject;
import cn.meteor.beyondclouds.core.api.Response;
import cn.meteor.beyondclouds.core.bean.Subject;
import cn.meteor.beyondclouds.modules.question.exception.QuestionReplyServiceException;
import cn.meteor.beyondclouds.modules.question.service.IQuestionReplyService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author 胡学良
* @since 2020/2/1
*/
@Api(tags = "问题回复Api")
@RestController
@RequestMapping("/api")
public class QuestionReply {
private IQuestionReplyService questionReplyService;
@Autowired
public QuestionReply(IQuestionReplyService questionReplyService) {
this.questionReplyService = questionReplyService;
}
/**
* 回复问题
* @param questionId 问题ID
* @param reply 回复内容
* @param subject 访问者信息
* @return default
*/
@ApiOperation("发布回复")
@PostMapping("/question/{questionId}/reply")
public Response replyQuestion(@PathVariable("questionId") String questionId, String reply, @CurrentSubject Subject subject){
try {
questionReplyService.replyQuestion(questionId, reply, (String) subject.getId());
return Response.success();
} catch (QuestionReplyServiceException e) {
e.printStackTrace();
return Response.error(e);
}
}
}
package cn.meteor.beyondclouds.modules.question.enums;
import cn.meteor.beyondclouds.core.IErrorCode;
/**
* @author 胡学良
* @since 2020/2/1
*/
public enum QuestionReplyErrorCode implements IErrorCode {
;
private long code;
private String msg;
QuestionReplyErrorCode(long code, String msg) {
this.code = code;
this.msg = msg;
}
@Override
public long code() {
return 0;
}
@Override
public String msg() {
return null;
}
}
package cn.meteor.beyondclouds.modules.question.enums;
import cn.meteor.beyondclouds.core.IErrorCode;
/**
* @author 胡学良
* @since 2020/2/1
*/
public enum QuestionTagErrorCode implements IErrorCode {
;
private long code;
private String msg;
QuestionTagErrorCode(long code, String msg) {
this.code = code;
this.msg = msg;
}
@Override
public long code() {
return 0;
}
@Override
public String msg() {
return null;
}
}
package cn.meteor.beyondclouds.modules.question.exception;
import cn.meteor.beyondclouds.core.IErrorCode;
import cn.meteor.beyondclouds.core.exception.ServiceException;
/**
* @author 胡学良
* @since 2020/2/1
*/
public class QuestionReplyServiceException extends ServiceException {
public QuestionReplyServiceException(long errorCode, String errorMsg) {
super(errorCode, errorMsg);
}
public QuestionReplyServiceException(IErrorCode errorCode) {
super(errorCode);
}
}
package cn.meteor.beyondclouds.modules.question.exception;
import cn.meteor.beyondclouds.core.IErrorCode;
import cn.meteor.beyondclouds.core.exception.ServiceException;
/**
* @author 胡学良
* @since 2020/2/1
*/
public class QuestionTagServiceException extends ServiceException {
public QuestionTagServiceException(long errorCode, String errorMsg) {
super(errorCode, errorMsg);
}
public QuestionTagServiceException(IErrorCode errorCode) {
super(errorCode);
}
}
package cn.meteor.beyondclouds.modules.question.service; 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 com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
/** /**
...@@ -13,4 +14,11 @@ import com.baomidou.mybatisplus.extension.service.IService; ...@@ -13,4 +14,11 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/ */
public interface IQuestionReplyService extends IService<QuestionReply> { public interface IQuestionReplyService extends IService<QuestionReply> {
/**
* 回复问题
* @param questionId 问题ID
* @param reply 回复内容
* @param userId 用户ID
*/
void replyQuestion(String questionId, String reply, String userId) throws QuestionReplyServiceException;
} }
...@@ -2,8 +2,11 @@ package cn.meteor.beyondclouds.modules.question.service; ...@@ -2,8 +2,11 @@ package cn.meteor.beyondclouds.modules.question.service;
import cn.meteor.beyondclouds.modules.question.bean.QuestionDetails; import cn.meteor.beyondclouds.modules.question.bean.QuestionDetails;
import cn.meteor.beyondclouds.modules.question.entity.Question; import cn.meteor.beyondclouds.modules.question.entity.Question;
import cn.meteor.beyondclouds.modules.question.entity.QuestionExt; import cn.meteor.beyondclouds.modules.question.entity.QuestionReply;
import cn.meteor.beyondclouds.modules.question.exception.QuestionReplyServiceException;
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 com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import java.util.HashSet; import java.util.HashSet;
...@@ -51,7 +54,34 @@ public interface IQuestionService extends IService<Question> { ...@@ -51,7 +54,34 @@ public interface IQuestionService extends IService<Question> {
* @param questionId 问题ID * @param questionId 问题ID
* @return 问题详情 * @return 问题详情
* @throws QuestionServiceException 问题业务异常 * @throws QuestionServiceException 问题业务异常
* @throws QuestionTagServiceException 问题标签业务异常
*/ */
QuestionDetails questionDetails(String questionId) throws QuestionServiceException; QuestionDetails questionDetails(String questionId) throws QuestionServiceException, QuestionTagServiceException;
/**
* 获取问答列表
* @param pageNumber 页数
* @param pageSize 页面大小
* @return 分页对象
*/
IPage<Question> getQuestionPage(Integer pageNumber, Integer pageSize);
/**
* 获取用户的问答列表
* @param pageNumber 页数
* @param pageSize 页面大小
* @param userId 用户ID
* @return 分页对象
*/
IPage<Question> getUserQuestionPage(Integer pageNumber, Integer pageSize, String userId);
/**
* 获取用户参与的问答列表
* @param pageNumber 页数
* @param pageSize 页面大小
* @param userId 用户ID
* @return 分页对象
*/
IPage<QuestionReply> getUserParticipateQuestionReplyPage(Integer pageNumber, Integer pageSize, String userId);
} }
package cn.meteor.beyondclouds.modules.question.service; package cn.meteor.beyondclouds.modules.question.service;
import cn.meteor.beyondclouds.modules.question.entity.QuestionTag; import cn.meteor.beyondclouds.modules.question.entity.QuestionTag;
import cn.meteor.beyondclouds.modules.question.exception.QuestionServiceException;
import cn.meteor.beyondclouds.modules.question.exception.QuestionTagServiceException;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import java.util.HashSet; import java.util.HashSet;
...@@ -22,4 +24,12 @@ public interface IQuestionTagService extends IService<QuestionTag> { ...@@ -22,4 +24,12 @@ public interface IQuestionTagService extends IService<QuestionTag> {
*/ */
void saveQuestionTag(HashSet<String> tags, String questionId); void saveQuestionTag(HashSet<String> tags, String questionId);
/**
* 得到问题引用标签
* @param questionId 问题ID
* @return 问题引用标签
* @throws QuestionTagServiceException 问题业务异常
*/
String getQuestionTags(String questionId) throws QuestionTagServiceException;
} }
package cn.meteor.beyondclouds.modules.question.service.impl; package cn.meteor.beyondclouds.modules.question.service.impl;
import cn.meteor.beyondclouds.modules.question.entity.Question;
import cn.meteor.beyondclouds.modules.question.entity.QuestionReply; import cn.meteor.beyondclouds.modules.question.entity.QuestionReply;
import cn.meteor.beyondclouds.modules.question.enums.QuestionErrorCode;
import cn.meteor.beyondclouds.modules.question.exception.QuestionReplyServiceException;
import cn.meteor.beyondclouds.modules.question.mapper.QuestionReplyMapper; import cn.meteor.beyondclouds.modules.question.mapper.QuestionReplyMapper;
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 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;
/** /**
...@@ -17,4 +22,30 @@ import org.springframework.stereotype.Service; ...@@ -17,4 +22,30 @@ import org.springframework.stereotype.Service;
@Service @Service
public class QuestionReplyServiceImpl extends ServiceImpl<QuestionReplyMapper, QuestionReply> implements IQuestionReplyService { public class QuestionReplyServiceImpl extends ServiceImpl<QuestionReplyMapper, QuestionReply> implements IQuestionReplyService {
private IQuestionService questionService;
@Autowired
public void setQuestionService(IQuestionService questionService) {
this.questionService = questionService;
}
@Override
public void replyQuestion(String questionId, String reply, String userId) throws QuestionReplyServiceException {
//1.判断问题是否存在
Question question = questionService.getById(questionId);
//如果问题不存在,则抛出异常
if (null == question) {
throw new QuestionReplyServiceException(QuestionErrorCode.QUESTION_NOT_FOUND);
}
//2.保存回复信息
QuestionReply questionReply = new QuestionReply();
questionReply.setQuestionId(questionId);
questionReply.setReply(reply);
questionReply.setUserId(userId);
//默认该回复未被采纳
questionReply.setReplyStatus(0);
save(questionReply);
}
} }
...@@ -4,13 +4,15 @@ import cn.meteor.beyondclouds.modules.question.bean.QuestionDetails; ...@@ -4,13 +4,15 @@ import cn.meteor.beyondclouds.modules.question.bean.QuestionDetails;
import cn.meteor.beyondclouds.modules.question.entity.*; import cn.meteor.beyondclouds.modules.question.entity.*;
import cn.meteor.beyondclouds.modules.question.enums.QuestionErrorCode; import cn.meteor.beyondclouds.modules.question.enums.QuestionErrorCode;
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.mapper.QuestionMapper; import cn.meteor.beyondclouds.modules.question.mapper.QuestionMapper;
import cn.meteor.beyondclouds.modules.question.service.*; import cn.meteor.beyondclouds.modules.question.service.*;
import cn.meteor.beyondclouds.modules.question.util.QuestionUtils; import cn.meteor.beyondclouds.modules.question.util.QuestionUtils;
import cn.meteor.beyondclouds.modules.tag.service.ITagService; import cn.meteor.beyondclouds.modules.tag.service.ITagService;
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.extension.conditions.update.LambdaUpdateChainWrapper; import com.baomidou.mybatisplus.core.metadata.IPage;
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.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -19,7 +21,6 @@ import org.springframework.transaction.annotation.Transactional; ...@@ -19,7 +21,6 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import java.util.HashSet; import java.util.HashSet;
import java.util.Iterator;
import java.util.List; import java.util.List;
/** /**
...@@ -45,20 +46,25 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i ...@@ -45,20 +46,25 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
private IQuestionReplyCommentService questionReplyCommentService; private IQuestionReplyCommentService questionReplyCommentService;
private ITagService tagService;
private IQuestionCategoryService questionCategoryService; private IQuestionCategoryService questionCategoryService;
@Autowired @Autowired
public QuestionServiceImpl(IQuestionExtService questionExtService, IQuestionTagService questionTagService, IQuestionReplyService questionReplyService, IQuestionReplyCommentService questionReplyCommentService, ITagService tagService, IQuestionCategoryService questionCategoryService) { public QuestionServiceImpl(IQuestionExtService questionExtService, IQuestionReplyCommentService questionReplyCommentService, IQuestionCategoryService questionCategoryService) {
this.questionExtService = questionExtService; this.questionExtService = questionExtService;
this.questionTagService = questionTagService;
this.questionReplyService = questionReplyService;
this.questionReplyCommentService = questionReplyCommentService; this.questionReplyCommentService = questionReplyCommentService;
this.tagService = tagService;
this.questionCategoryService = questionCategoryService; this.questionCategoryService = questionCategoryService;
} }
@Autowired
public void setQuestionReplyService(IQuestionReplyService questionReplyService) {
this.questionReplyService = questionReplyService;
}
@Autowired
public void setQuestionTagService(IQuestionTagService questionTagService) {
this.questionTagService = questionTagService;
}
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@Override @Override
public void postQuestion(Question question, String questionDetail, HashSet<String> tags) throws QuestionServiceException { public void postQuestion(Question question, String questionDetail, HashSet<String> tags) throws QuestionServiceException {
...@@ -161,7 +167,7 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i ...@@ -161,7 +167,7 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
} }
@Override @Override
public QuestionDetails questionDetails(String questionId) throws QuestionServiceException{ public QuestionDetails questionDetails(String questionId) throws QuestionServiceException, QuestionTagServiceException {
//1.获取问题基本信息 //1.获取问题基本信息
Question question = getById(questionId); Question question = getById(questionId);
...@@ -174,15 +180,7 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i ...@@ -174,15 +180,7 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
QuestionExt questionExt = questionExtService.getOne(QuestionUtils.getWrapper("question_id", questionId)); QuestionExt questionExt = questionExtService.getOne(QuestionUtils.getWrapper("question_id", questionId));
//4.获取问题标签 //4.获取问题标签
List<QuestionTag> questionTags = questionTagService.list(QuestionUtils.getWrapper("question_id", questionId)); String tags = questionTagService.getQuestionTags(questionId);
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("[");
for (QuestionTag questionTag : questionTags){
stringBuilder.append(tagService.getById(questionTag.getTagId()).getTagName()+",");
}
stringBuilder.deleteCharAt(stringBuilder.length()-1);
stringBuilder.append("]");
String tags = stringBuilder.toString();
//5.生成问题详情对象 //5.生成问题详情对象
QuestionDetails questionDetails = new QuestionDetails(); QuestionDetails questionDetails = new QuestionDetails();
...@@ -193,4 +191,22 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i ...@@ -193,4 +191,22 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
return questionDetails; return questionDetails;
} }
@Override
public IPage<Question> getQuestionPage(Integer pageNumber, Integer pageSize) {
IPage<Question> page = new Page<>(pageNumber,pageSize);
return page(page);
}
@Override
public IPage<Question> getUserQuestionPage(Integer pageNumber, Integer pageSize, String userId) {
IPage<Question> page = new Page<>(pageNumber, pageSize);
return page(page,QuestionUtils.getWrapper("user_id",userId));
}
@Override
public IPage<QuestionReply> getUserParticipateQuestionReplyPage(Integer pageNumber, Integer pageSize, String userId) {
IPage<QuestionReply> page = new Page<>(pageNumber, pageSize);
return questionReplyService.page(page,QuestionUtils.getWrapper("user_id",userId));
}
} }
package cn.meteor.beyondclouds.modules.question.service.impl; package cn.meteor.beyondclouds.modules.question.service.impl;
import cn.meteor.beyondclouds.modules.question.entity.Question;
import cn.meteor.beyondclouds.modules.question.entity.QuestionTag; import cn.meteor.beyondclouds.modules.question.entity.QuestionTag;
import cn.meteor.beyondclouds.modules.question.enums.QuestionErrorCode;
import cn.meteor.beyondclouds.modules.question.exception.QuestionServiceException;
import cn.meteor.beyondclouds.modules.question.exception.QuestionTagServiceException;
import cn.meteor.beyondclouds.modules.question.mapper.QuestionTagMapper; import cn.meteor.beyondclouds.modules.question.mapper.QuestionTagMapper;
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.tag.entity.Tag; import cn.meteor.beyondclouds.modules.tag.entity.Tag;
import cn.meteor.beyondclouds.modules.tag.service.ITagService; import cn.meteor.beyondclouds.modules.tag.service.ITagService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
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 java.util.HashSet; import java.util.HashSet;
import java.util.Iterator; import java.util.Iterator;
import java.util.List;
/** /**
* <p> * <p>
...@@ -26,11 +32,18 @@ public class QuestionTagServiceImpl extends ServiceImpl<QuestionTagMapper, Quest ...@@ -26,11 +32,18 @@ public class QuestionTagServiceImpl extends ServiceImpl<QuestionTagMapper, Quest
private ITagService tagService; private ITagService tagService;
private IQuestionService questionService;
@Autowired @Autowired
public QuestionTagServiceImpl(ITagService tagService) { public QuestionTagServiceImpl(ITagService tagService) {
this.tagService = tagService; this.tagService = tagService;
} }
@Autowired
public void setQuestionService(IQuestionService questionService) {
this.questionService = questionService;
}
@Override @Override
public void saveQuestionTag(HashSet<String> tags, String questionId) { public void saveQuestionTag(HashSet<String> tags, String questionId) {
Iterator<String> iterator = tags.iterator(); Iterator<String> iterator = tags.iterator();
...@@ -47,5 +60,25 @@ public class QuestionTagServiceImpl extends ServiceImpl<QuestionTagMapper, Quest ...@@ -47,5 +60,25 @@ public class QuestionTagServiceImpl extends ServiceImpl<QuestionTagMapper, Quest
} }
} }
@Override
public String getQuestionTags(String questionId) throws QuestionTagServiceException {
//1.获取问题信息
Question question = questionService.getById(questionId);
//判断该问题是否存在
if (null == question) {
throw new QuestionTagServiceException(QuestionErrorCode.QUESTION_NOT_FOUND);
}
//2.得到问题引用标签
List<QuestionTag> questionTags = list(QuestionUtils.getWrapper("question_id", questionId));
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("[");
for (QuestionTag questionTag : questionTags){
stringBuilder.append(tagService.getById(questionTag.getTagId()).getTagName()+",");
}
stringBuilder.deleteCharAt(stringBuilder.length()-1);
stringBuilder.append("]");
return stringBuilder.toString();
}
} }
package cn.meteor.beyondclouds.modules.question.vo;
import lombok.Data;
import java.util.List;
/**
* @author 胡学良
* @since 2020/2/1
*/
@Data
public class PageVO<T> {
/**
* 总页数
*/
private Long totalPage;
/**
* 数据
*/
private List<T> dataList;
}
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