Commit cf7653bd by 胡学良

增加话题引用

parent 8b8b1bf9
......@@ -27,6 +27,7 @@ import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
/**
......@@ -73,9 +74,12 @@ public class QuestionApi {
//祛除重复标签
HashSet<String> tags = QuestionUtils.toHashSet(questionForm.getTags());
//祛除重复话题
HashSet<String> topicIds = QuestionUtils.toHashSet(questionForm.getTopicIds());
//发布问题
try {
questionService.postQuestion(question,questionForm.getQuestionDetail(),tags);
questionService.postQuestion(question,questionForm.getQuestionDetail(),tags, topicIds);
return Response.success();
} catch (QuestionServiceException e) {
e.printStackTrace();
......
......@@ -2,11 +2,13 @@ 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.Size;
import java.util.List;
/**
* @author 胡学良
......@@ -37,4 +39,7 @@ public class QuestionForm {
@ApiModelProperty("详情")
private String questionDetail;
@ApiModelProperty("话题ID")
private String topicIds;
}
......@@ -27,9 +27,10 @@ public interface IQuestionService extends IService<Question> {
* @param question 问题基本信息
* @param questionDetail 问题详细信息
* @param tags 问题标签
* @param topicIds 话题ID
* @throws QuestionServiceException 问题业务异常
*/
void postQuestion(Question question, String questionDetail, HashSet<String> tags) throws QuestionServiceException;
void postQuestion(Question question, String questionDetail, HashSet<String> tags, HashSet<String> topicIds) throws QuestionServiceException;
/**
* 删除问题
......
package cn.meteor.beyondclouds.modules.question.service.impl;
import cn.meteor.beyondclouds.modules.question.bean.QuestionDetails;
import cn.meteor.beyondclouds.modules.question.entity.Question;
import cn.meteor.beyondclouds.modules.question.entity.QuestionCategory;
import cn.meteor.beyondclouds.modules.question.entity.QuestionExt;
import cn.meteor.beyondclouds.modules.question.entity.QuestionReply;
import cn.meteor.beyondclouds.modules.question.entity.*;
import cn.meteor.beyondclouds.modules.question.enums.QuestionErrorCode;
import cn.meteor.beyondclouds.modules.question.exception.QuestionServiceException;
import cn.meteor.beyondclouds.modules.question.exception.QuestionTagServiceException;
......@@ -12,6 +9,10 @@ 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.topic.entity.Topic;
import cn.meteor.beyondclouds.modules.topic.entity.TopicReference;
import cn.meteor.beyondclouds.modules.topic.service.ITopicReferenceService;
import cn.meteor.beyondclouds.modules.topic.service.ITopicService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
......@@ -24,6 +25,7 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
/**
......@@ -51,10 +53,16 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
private IQuestionCategoryService questionCategoryService;
private ITopicService topicService;
private ITopicReferenceService topicReferenceService;
@Autowired
public QuestionServiceImpl(IQuestionExtService questionExtService, IQuestionCategoryService questionCategoryService) {
public QuestionServiceImpl(IQuestionExtService questionExtService, IQuestionCategoryService questionCategoryService, ITopicService topicService, ITopicReferenceService topicReferenceService) {
this.questionExtService = questionExtService;
this.questionCategoryService = questionCategoryService;
this.topicService = topicService;
this.topicReferenceService = topicReferenceService;
}
@Autowired
......@@ -74,7 +82,7 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
@Transactional(rollbackFor = Exception.class)
@Override
public void postQuestion(Question question, String questionDetail, HashSet<String> tags) throws QuestionServiceException {
public void postQuestion(Question question, String questionDetail, HashSet<String> tags, 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);
......@@ -97,6 +105,32 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
//5.保存问题标签信息
questionTagService.saveQuestionTag(tags,question.getQuestionId());
//6.保存话题引用信息并更新话题引用次数
Iterator<String> iterator = topicIds.iterator();
TopicReference topicReference = null;
while (iterator.hasNext()) {
System.out.println("============");
Topic topic = topicService.getById(iterator.next());
if (topic == null) {
System.out.println("111111111111");
continue;
}
//保存话题引用信息
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);
}
}
@Transactional(rollbackFor = Exception.class)
......
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