Commit a849e44e by 段启岩

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

# Conflicts:
#	src/main/java/cn/meteor/beyondclouds/modules/question/api/QuestionApi.java
#	src/main/java/cn/meteor/beyondclouds/modules/question/service/IQuestionService.java
#	src/main/java/cn/meteor/beyondclouds/modules/question/service/impl/QuestionServiceImpl.java
parents 48a23c76 6af80433
...@@ -269,4 +269,17 @@ public class QuestionApi { ...@@ -269,4 +269,17 @@ public class QuestionApi {
} }
} }
@Anonymous
@ApiOperation("得到标签下的问答列表")
@GetMapping("/tag/{tagId}/questions")
public Response<PageVO<Question>> getQuestionsByTagId(@Valid PageForm pageForm, @PathVariable("tagId") String tagId) {
try {
IPage<Question> page = questionService.getQuestionsByTagId(pageForm.getPage(), pageForm.getSize(), tagId);
PageVO<Question> pageVO = new PageVO<>(page);
return Response.success(pageVO);
} catch (QuestionTagServiceException e) {
e.printStackTrace();
return Response.error(e);
}
}
} }
...@@ -7,7 +7,10 @@ import cn.meteor.beyondclouds.core.IErrorCode; ...@@ -7,7 +7,10 @@ import cn.meteor.beyondclouds.core.IErrorCode;
* @since 2020/2/1 * @since 2020/2/1
*/ */
public enum QuestionTagErrorCode implements IErrorCode { public enum QuestionTagErrorCode implements IErrorCode {
; /**
* 标签不存在
*/
TAG_NOT_FOUND(6001, "标签不存在");
private long code; private long code;
private String msg; private String msg;
......
...@@ -103,5 +103,14 @@ public interface IQuestionService extends IService<Question> { ...@@ -103,5 +103,14 @@ public interface IQuestionService extends IService<Question> {
*/ */
IPage<Question> questionRecommends(Integer pageNumber, Integer pageSize, String questionId) throws QuestionServiceException; IPage<Question> questionRecommends(Integer pageNumber, Integer pageSize, String questionId) throws QuestionServiceException;
/**
* 得到标签下的问答列表
* @param pageNumber 页数
* @param pageSize 页面大小
* @param tagId 标签ID
* @return 分页对象
* @throws QuestionTagServiceException 问题标签业务异常
*/
IPage<Question> getQuestionsByTagId(Integer pageNumber, Integer pageSize, String tagId) throws QuestionTagServiceException;
} }
...@@ -3,6 +3,7 @@ package cn.meteor.beyondclouds.modules.question.service.impl; ...@@ -3,6 +3,7 @@ package cn.meteor.beyondclouds.modules.question.service.impl;
import cn.meteor.beyondclouds.modules.question.bean.QuestionDetails; 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.enums.QuestionTagErrorCode;
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.mapper.QuestionMapper; import cn.meteor.beyondclouds.modules.question.mapper.QuestionMapper;
...@@ -32,7 +33,6 @@ import org.springframework.util.StringUtils; ...@@ -32,7 +33,6 @@ import org.springframework.util.StringUtils;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.Stream;
/** /**
* <p> * <p>
...@@ -457,4 +457,33 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i ...@@ -457,4 +457,33 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
return questionPage; return questionPage;
} }
@Override
public IPage<Question> getQuestionsByTagId(Integer pageNumber, Integer pageSize, String tagId) throws QuestionTagServiceException {
//1.检查标签是否存在
Tag tag = tagService.getById(tagId);
if (null == tag) {
throw new QuestionTagServiceException(QuestionTagErrorCode.TAG_NOT_FOUND);
}
IPage<Question> questionPage = new Page<>(pageNumber, pageSize);
IPage<QuestionTag> questionTagPage = new Page<>(pageNumber, pageSize);
//2.通过标签ID得到对应的问题ID
QueryWrapper<QuestionTag> questionTagQueryWrapper = new QueryWrapper<>();
questionTagQueryWrapper.eq("tag_id", tag.getTagId());
questionTagService.page(questionTagPage,questionTagQueryWrapper);
List<String> questionIds = questionTagPage.getRecords().stream().map(QuestionTag::getQuestionId).collect(Collectors.toList());
questionPage.setTotal(questionTagPage.getTotal());
questionPage.setCurrent(questionTagPage.getCurrent());
if (!CollectionUtils.isEmpty(questionIds)) {
questionPage.setRecords(questionMapper.listByIdsWithTags(questionIds));
}else {
questionPage.setRecords(List.of());
}
return questionPage;
}
} }
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