Commit 1c3d1ee6 by 段启岩

添加问题类别、标签、详细信息

parent 6fe11361
......@@ -18,13 +18,6 @@ import org.apache.ibatis.annotations.Param;
public interface BlogMapper extends BaseMapper<Blog> {
/**
* 分页查询博客获取标签
* @param page
* @return
*/
IPage<Blog> selectPageWithTags(IPage<Blog> page);
/**
* 根据查询条件分页查询博客获取标签
* @param page
* @param queryWrapper
......
......@@ -8,7 +8,6 @@ import cn.meteor.beyondclouds.core.api.Response;
import cn.meteor.beyondclouds.core.bean.Subject;
import cn.meteor.beyondclouds.modules.question.bean.QuestionDetails;
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.QuestionTagServiceException;
import cn.meteor.beyondclouds.modules.question.form.QuestionForm;
......@@ -21,13 +20,11 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
/**
......@@ -66,7 +63,7 @@ public class QuestionApi {
//将问题表单转换为问题对象
Question question = new Question();
BeanUtils.copyProperties(questionForm,question);
question.setCategoryId(Integer.valueOf(questionForm.getCategoryId()));
question.setCategoryId(questionForm.getCategoryId());
//设置用户ID(问题发布者ID)
question.setUserId((String) subject.getId());
......@@ -222,10 +219,10 @@ public class QuestionApi {
*/
@ApiOperation("我参与的问答列表")
@GetMapping("/my/question/participated")
public Response<PageVO<QuestionReply>> getMyParticipateQuestions(@Valid PageForm pageForm, @CurrentSubject Subject subject) {
public Response<PageVO<Question>> getMyParticipateQuestions(@Valid PageForm pageForm, @CurrentSubject Subject subject) {
//获取我的列表并返回
IPage<QuestionReply> myParticipateQuestionReplyPage = questionService.getUserParticipateQuestionReplyPage(pageForm.getPage(), pageForm.getSize(), (String) subject.getId());
PageVO<QuestionReply> questionReplyPageVO = new PageVO<>(myParticipateQuestionReplyPage);
IPage<Question> questionPage = questionService.getUserParticipatePage(pageForm.getPage(), pageForm.getSize(), (String) subject.getId());
PageVO<Question> questionReplyPageVO = new PageVO<>(questionPage);
return Response.success(questionReplyPageVO);
}
......@@ -254,10 +251,10 @@ public class QuestionApi {
@Anonymous
@ApiOperation("用户参与的问答列表")
@GetMapping("/user/{userId}/question/participated")
public Response<PageVO<QuestionReply>> getUserParticipateQuestions(@Valid PageForm pageForm, @PathVariable("userId") String userId) {
public Response<PageVO<Question>> getUserParticipateQuestions(@Valid PageForm pageForm, @PathVariable("userId") String userId) {
//获取用户参与的问答列表并返回
IPage<QuestionReply> userParticipateQuestionReplyPage = questionService.getUserParticipateQuestionReplyPage(pageForm.getPage(), pageForm.getSize(), userId);
PageVO<QuestionReply> questionReplyPageVO = new PageVO<>(userParticipateQuestionReplyPage);
IPage<Question> userParticipateQuestion = questionService.getUserParticipatePage(pageForm.getPage(), pageForm.getSize(), userId);
PageVO<Question> questionReplyPageVO = new PageVO<>(userParticipateQuestion);
return Response.success(questionReplyPageVO);
}
......
package cn.meteor.beyondclouds.modules.question.bean;
import cn.meteor.beyondclouds.modules.question.entity.Question;
import cn.meteor.beyondclouds.modules.tag.entity.Tag;
import cn.meteor.beyondclouds.modules.topic.entity.Topic;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* @author 胡学良
* @since 2020/1/31
......@@ -17,16 +13,6 @@ import java.util.List;
@Data
public class QuestionDetails extends Question {
@ApiModelProperty("类别")
private String category;
@ApiModelProperty("详情")
private String questionDetail;
@ApiModelProperty("标签")
private List<Tag> tags;
@ApiModelProperty("话题")
private List<Topic> topics;
}
package cn.meteor.beyondclouds.modules.question.entity;
import cn.meteor.beyondclouds.modules.tag.entity.Tag;
import cn.meteor.beyondclouds.modules.topic.entity.Topic;
import com.baomidou.mybatisplus.annotation.IdType;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import java.io.Serializable;
import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
* <p>
* 问题表
......@@ -35,15 +41,26 @@ public class Question implements Serializable {
@ApiModelProperty(value = "问题类别ID")
private Integer categoryId;
@ApiModelProperty(value = "问题类别名称")
private String category;
@ApiModelProperty(value = "问题标题")
private String questionTitle;
@ApiModelProperty(value = "问题摘要")
private String questionAbstract;
private LocalDateTime createTime;
private Date createTime;
private Date updateTime;
@JsonInclude(JsonInclude.Include.NON_NULL)
@TableField(exist = false)
private List<Tag> tags;
private LocalDateTime updateTime;
@JsonInclude(JsonInclude.Include.NON_NULL)
@TableField(exist = false)
private List<Topic> topics;
}
......@@ -2,11 +2,10 @@ package cn.meteor.beyondclouds.modules.question.form;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.annotations.ApiOperation;
import lombok.Data;
import javax.validation.constraints.Max;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.util.List;
......@@ -21,8 +20,8 @@ public class QuestionForm {
private static final long serialVersionUID=1L;
@ApiModelProperty("类别ID")
@NotEmpty(message = "问题类别ID不能为空")
private String categoryId;
@NotNull(message = "问题类别ID不能为空")
private Integer categoryId;
@ApiModelProperty("标题")
@NotEmpty(message = "问题标题不能为空")
......
package cn.meteor.beyondclouds.modules.question.mapper;
import cn.meteor.beyondclouds.modules.question.entity.Question;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* <p>
......@@ -12,5 +18,19 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
* @since 2020-01-30
*/
public interface QuestionMapper extends BaseMapper<Question> {
/**
* 根据查询条件分页查询问题并获取标签
* @param page
* @param queryWrapper
* @return
*/
IPage<Question> selectPageWithTags(IPage<Question> page, @Param(Constants.WRAPPER) QueryWrapper<?> queryWrapper);
/**
* 批量查询并获取标签
* @param questionIds
* @return
*/
List<Question> listByIdsWithTags(@Param("questionIds") List<String> questionIds);
}
......@@ -2,6 +2,8 @@ package cn.meteor.beyondclouds.modules.question.mapper;
import cn.meteor.beyondclouds.modules.question.entity.QuestionReply;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.ibatis.annotations.Select;
/**
* <p>
......@@ -13,4 +15,12 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
*/
public interface QuestionReplyMapper extends BaseMapper<QuestionReply> {
/**
* 获取参与的问题ID的分页
* @param page
* @param userId
* @return
*/
@Select("select DISTINCT(question_id) from (SELECT * from question_reply where user_id=#{userId} order by create_time desc) t")
IPage<String> participateQuestionIdPage(IPage<String> page, String userId);
}
......@@ -2,4 +2,56 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.meteor.beyondclouds.modules.question.mapper.QuestionMapper">
<resultMap id="blogWithTagsResultMap" type="cn.meteor.beyondclouds.modules.question.entity.Question">
<id property="questionId" column="question_id"/>
<result property="userId" column="user_id"/>
<result property="categoryId" column="category_id"/>
<result property="category" column="category"/>
<result property="questionTitle" column="question_title"/>
<result property="questionAbstract" column="question_abstract"/>
<result property="createTime" column="create_time"/>
<result property="updateTime" column="update_time"/>
<collection property="tags" ofType="cn.meteor.beyondclouds.modules.tag.entity.Tag">
<id property="tagId" column="tag_id"/>
<result property="tagName" column="tag_name"/>
<result property="tagType" column="tag_type"/>
</collection>
</resultMap>
<select id="selectPageWithTags" resultMap="blogWithTagsResultMap">
select
q.*,
t.tag_id,
t.tag_name,
t.tag_type,
t.create_time,
t.update_time
from question q
left join question_tag qt
on q.question_id = qt.question_id
left join tag t
on t.tag_id = qt.tag_id
<if test="ew != null and ew.sqlSegment != null">
where ${ew.sqlSegment}
</if>
</select>
<select id="listByIdsWithTags" resultMap="blogWithTagsResultMap">
select
q.*,
t.tag_id,
t.tag_name,
t.tag_type,
t.create_time,
t.update_time
from question q
left join question_tag qt
on q.question_id = qt.question_id
left join tag t
on t.tag_id = qt.tag_id
where q.question_id in
<foreach collection="questionIds" item="questionId" index="index" open="(" close=")" separator=",">
#{questionId}
</foreach>
</select>
</mapper>
......@@ -4,7 +4,6 @@ import cn.meteor.beyondclouds.modules.question.entity.QuestionReply;
import cn.meteor.beyondclouds.modules.question.exception.QuestionReplyServiceException;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import io.swagger.models.auth.In;
/**
* <p>
......@@ -51,4 +50,12 @@ public interface IQuestionReplyService extends IService<QuestionReply> {
* @throws QuestionReplyServiceException 问题回复业务异常
*/
void deleteReply(String replyId, String userId) throws QuestionReplyServiceException;
/**
* 获取用户参加过的问题的ID分页列表
* @param page
* @param userId
* @return
*/
IPage<String> participateQuestionIdPage(IPage<String> page, String userId);
}
......@@ -2,8 +2,6 @@ package cn.meteor.beyondclouds.modules.question.service;
import cn.meteor.beyondclouds.modules.question.bean.QuestionDetails;
import cn.meteor.beyondclouds.modules.question.entity.Question;
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.QuestionTagServiceException;
import com.baomidou.mybatisplus.core.metadata.IPage;
......@@ -84,6 +82,6 @@ public interface IQuestionService extends IService<Question> {
* @param userId 用户ID
* @return 分页对象
*/
IPage<QuestionReply> getUserParticipateQuestionReplyPage(Integer pageNumber, Integer pageSize, String userId);
IPage<Question> getUserParticipatePage(Integer pageNumber, Integer pageSize, String userId);
}
......@@ -18,6 +18,8 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* <p>
* 问题回复表 服务实现类
......@@ -35,12 +37,19 @@ public class QuestionReplyServiceImpl extends ServiceImpl<QuestionReplyMapper, Q
private IQuestionReplyCommentService questionReplyCommentService;
private QuestionReplyMapper questionReplyMapper;
@Autowired
public void setQuestionService(IQuestionService questionService) {
this.questionService = questionService;
}
@Autowired
public void setQuestionReplyMapper(QuestionReplyMapper questionReplyMapper) {
this.questionReplyMapper = questionReplyMapper;
}
@Autowired
public void setQuestionReplyCommentService(IQuestionReplyCommentService questionReplyCommentService) {
this.questionReplyCommentService = questionReplyCommentService;
}
......@@ -134,4 +143,9 @@ public class QuestionReplyServiceImpl extends ServiceImpl<QuestionReplyMapper, Q
questionReplyCommentService.remove(QuestionUtils.getWrapper("reply_id",replyId));
removeById(replyId);
}
@Override
public IPage<String> participateQuestionIdPage(IPage<String> page, String userId) {
return questionReplyMapper.participateQuestionIdPage(page, userId);
}
}
......@@ -9,6 +9,7 @@ import cn.meteor.beyondclouds.modules.question.mapper.QuestionMapper;
import cn.meteor.beyondclouds.modules.question.service.*;
import cn.meteor.beyondclouds.modules.question.util.QuestionUtils;
import cn.meteor.beyondclouds.modules.tag.entity.Tag;
import cn.meteor.beyondclouds.modules.tag.service.ITagService;
import cn.meteor.beyondclouds.modules.topic.entity.Topic;
import cn.meteor.beyondclouds.modules.topic.entity.TopicReference;
import cn.meteor.beyondclouds.modules.topic.service.ITopicReferenceService;
......@@ -22,12 +23,13 @@ import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.stream.Collectors;
/**
* <p>
......@@ -58,12 +60,17 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
private ITopicReferenceService topicReferenceService;
private ITagService tagService;
private QuestionMapper questionMapper;
@Autowired
public QuestionServiceImpl(IQuestionExtService questionExtService, IQuestionCategoryService questionCategoryService, ITopicService topicService, ITopicReferenceService topicReferenceService) {
public QuestionServiceImpl(IQuestionExtService questionExtService, IQuestionCategoryService questionCategoryService, ITopicService topicService, ITopicReferenceService topicReferenceService, QuestionMapper questionMapper) {
this.questionExtService = questionExtService;
this.questionCategoryService = questionCategoryService;
this.topicService = topicService;
this.topicReferenceService = topicReferenceService;
this.questionMapper = questionMapper;
}
@Autowired
......@@ -81,9 +88,14 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
this.questionReplyCommentService = questionReplyCommentService;
}
@Autowired
public void setTagService(ITagService tagService) {
this.tagService = tagService;
}
@Transactional(rollbackFor = Exception.class)
@Override
public void postQuestion(Question question, String questionDetail, HashSet<String> tags, HashSet<String> topicIds) throws QuestionServiceException {
public void postQuestion(Question question, String questionDetail, HashSet<String> tagIds, HashSet<String> topicIds) throws QuestionServiceException {
//1.检查问题标题是否以?结尾
if (!question.getQuestionTitle().endsWith(QUESTION_END_EN) && !question.getQuestionTitle().endsWith(QUESTION_END_CN)){
throw new QuestionServiceException(QuestionErrorCode.QUESTION_END_ERROR);
......@@ -96,6 +108,7 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
}
//3.保存问题信息
question.setCategory(questionCategory.getCategory());
save(question);
//4.保存问题扩展信息
......@@ -104,30 +117,41 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
questionExt.setQuestionDetail(questionDetail);
questionExtService.save(questionExt);
//5.保存问题标签信息
questionTagService.saveQuestionTag(tags,question.getQuestionId());
//6.保存话题引用信息并更新话题引用次数
Iterator<String> iterator = topicIds.iterator();
TopicReference topicReference = null;
while (iterator.hasNext()) {
Topic topic = topicService.getById(iterator.next());
if (topic == null) {
continue;
//5.判断是否引用话题
if (!CollectionUtils.isEmpty(topicIds)) {
// 获取要引用的话题,不正确的话题ID会被自动过滤
List<String> existsTopicIds = topicService.listByIds(topicIds).stream().map(Topic::getTopicId).collect(Collectors.toList());
if (!CollectionUtils.isEmpty(existsTopicIds)) {
List<TopicReference> topicReferenceList = new ArrayList<>();
for (String topicId : existsTopicIds) {
TopicReference topicReference = new TopicReference();
topicReference.setTopicId(topicId);
topicReference.setReferencerId(question.getQuestionId());
topicReference.setReferencerType(2);
topicReferenceList.add(topicReference);
}
// 批量保存
topicReferenceService.saveBatch(topicReferenceList);
// 更新话题引用次数
existsTopicIds.forEach(topicId -> {
topicService.increaseReferenceCount(topicId, 1);
});
}
}
//保存话题引用信息
topicReference = new TopicReference();
topicReference.setTopicId(topic.getTopicId());
topicReference.setReferencerId(question.getQuestionId());
topicReference.setReferencerType(2);
topicReferenceService.save(topicReference);
//更新话题引用次数
UpdateWrapper<Topic> updateWrapper = new UpdateWrapper<>();
updateWrapper.set("reference_count",topic.getReferenceCount()+1)
.eq("topic_id",topic.getTopicId());
topicService.update(updateWrapper);
//5.判断是否引用标签
if (!CollectionUtils.isEmpty(tagIds)) {
List<String> existsTagIds = tagService.listByIds(tagIds).stream().map(Tag::getTagId).collect(Collectors.toList());
if (!CollectionUtils.isEmpty(existsTagIds)) {
List<QuestionTag> questionTagList = new ArrayList<>();
for (String tagId : existsTagIds) {
QuestionTag questionTag = new QuestionTag();
questionTag.setQuestionId(question.getQuestionId());
questionTag.setTagId(tagId);
questionTagList.add(questionTag);
}
questionTagService.saveBatch(questionTagList);
}
}
}
......@@ -170,7 +194,7 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
}
@Override
public void updateQuestion(Question question, String questionDetail, HashSet<String> tags, HashSet<String> topicIds) throws QuestionServiceException {
public void updateQuestion(Question question, String questionDetail, HashSet<String> tagIds, HashSet<String> topicIds) throws QuestionServiceException {
//1.判断自己是否发布过此问题
QueryWrapper<Question> questionQueryWrapper = new QueryWrapper<>();
questionQueryWrapper.eq("question_id",question.getQuestionId())
......@@ -192,6 +216,7 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
}
//2.更新问题信息
question.setCategory(questionCategory.getCategory());
update(question,QuestionUtils.getWrapper("question_id",question.getQuestionId()));
//3.更新问题扩展信息
......@@ -204,36 +229,52 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
questionExtService.update(questionExt,updateWrapper);
}
//4.更新问题标签
questionTagService.remove(QuestionUtils.getWrapper("question_id",question.getQuestionId()));
questionTagService.saveQuestionTag(tags,question.getQuestionId());
//5.更新话题
// 删除旧话题引用
QueryWrapper<TopicReference> topicReferenceQueryWrapper = new QueryWrapper<>();
topicReferenceQueryWrapper.eq("referencer_id", question.getQuestionId());
topicReferenceService.remove(topicReferenceQueryWrapper);
//5.判断是否引用话题
if (!CollectionUtils.isEmpty(topicIds)) {
// 获取要引用的话题,不正确的话题ID会被自动过滤
List<String> existsTopicIds = topicService.listByIds(topicIds).stream().map(Topic::getTopicId).collect(Collectors.toList());
if (!CollectionUtils.isEmpty(existsTopicIds)) {
List<TopicReference> topicReferenceList = new ArrayList<>();
for (String topicId : existsTopicIds) {
TopicReference topicReference = new TopicReference();
topicReference.setTopicId(topicId);
topicReference.setReferencerId(question.getQuestionId());
topicReference.setReferencerType(2);
topicReferenceList.add(topicReference);
}
// 批量保存
topicReferenceService.saveBatch(topicReferenceList);
// 更新话题引用次数
existsTopicIds.forEach(topicId -> {
topicService.increaseReferenceCount(topicId, 1);
});
}
}
//删除以前的话题信息
topicReferenceService.remove(QuestionUtils.getWrapper("referencer_id",question.getQuestionId()));
//保存更新后的话题信息
Iterator<String> iterator = topicIds.iterator();
TopicReference topicReference = null;
while (iterator.hasNext()) {
Topic topic = topicService.getById(iterator.next());
if (topic == null) {
continue;
//5.判断是否引用标签
// 删除旧标签
QueryWrapper<QuestionTag> questionTagQueryWrapper = new QueryWrapper<>();
questionTagQueryWrapper.eq("question_id", question.getQuestionId());
questionTagService.remove(questionTagQueryWrapper);
if (!CollectionUtils.isEmpty(tagIds)) {
List<String> existsTagIds = tagService.listByIds(tagIds).stream().map(Tag::getTagId).collect(Collectors.toList());
if (!CollectionUtils.isEmpty(existsTagIds)) {
List<QuestionTag> questionTagList = new ArrayList<>();
for (String tagId : existsTagIds) {
QuestionTag questionTag = new QuestionTag();
questionTag.setQuestionId(question.getQuestionId());
questionTag.setTagId(tagId);
questionTagList.add(questionTag);
}
questionTagService.saveBatch(questionTagList);
}
//保存话题引用信息
topicReference = new TopicReference();
topicReference.setTopicId(topic.getTopicId());
topicReference.setReferencerId(question.getQuestionId());
topicReference.setReferencerType(2);
topicReferenceService.save(topicReference);
//更新话题引用次数
UpdateWrapper<Topic> updateWrapper = new UpdateWrapper<>();
updateWrapper.set("reference_count",topic.getReferenceCount()+1)
.eq("topic_id",topic.getTopicId());
topicService.update(updateWrapper);
}
}
......@@ -252,6 +293,11 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
//4.获取问题标签
List<Tag> tags = questionTagService.getQuestionTags(questionId);
if (CollectionUtils.isEmpty(tags)) {
question.setTags(List.of());
} else {
question.setTags(tags);
}
//5.获取话题详情
List<TopicReference> references = topicReferenceService.list(QuestionUtils.getWrapper("referencer_id", question.getQuestionId()));
......@@ -259,14 +305,16 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
for (TopicReference topicReference : references ) {
topics.add(topicService.getById(topicReference.getTopicId()));
}
if (CollectionUtils.isEmpty(topics)) {
question.setTopics(List.of());
} else {
question.setTopics(topics);
}
//5.生成问题详情对象
QuestionDetails questionDetails = new QuestionDetails();
BeanUtils.copyProperties(question,questionDetails);
BeanUtils.copyProperties(question, questionDetails);
questionDetails.setQuestionDetail(questionExt.getQuestionDetail());
questionDetails.setTags(tags);
questionDetails.setCategory(questionCategoryService.getById(question.getCategoryId()).getCategory());
questionDetails.setTopics(topics);
return questionDetails;
}
......@@ -274,18 +322,33 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
@Override
public IPage<Question> getQuestionPage(Integer pageNumber, Integer pageSize) {
IPage<Question> page = new Page<>(pageNumber,pageSize);
return page(page);
return questionMapper.selectPageWithTags(page, null);
}
@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));
QueryWrapper<Question> questionQueryWrapper = new QueryWrapper<>();
questionQueryWrapper.eq("q.user_id", userId);
return questionMapper.selectPageWithTags(page, questionQueryWrapper);
}
@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));
public IPage<Question> getUserParticipatePage(Integer pageNumber, Integer pageSize, String userId) {
IPage<String> page = new Page<>(pageNumber, pageSize);
IPage<Question> questionPage = new Page<>(pageNumber, pageSize);
questionReplyService.participateQuestionIdPage(page, userId);
questionPage.setTotal(page.getPages());
questionPage.setSize(page.getSize());
questionPage.setCurrent(page.getCurrent());
List<String> questionIds = page.getRecords();
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