Commit cf7653bd by 胡学良

增加话题引用

parent 8b8b1bf9
...@@ -27,6 +27,7 @@ import org.springframework.web.bind.annotation.*; ...@@ -27,6 +27,7 @@ import org.springframework.web.bind.annotation.*;
import javax.validation.Valid; import javax.validation.Valid;
import java.util.HashSet; import java.util.HashSet;
import java.util.Iterator;
import java.util.List; import java.util.List;
/** /**
...@@ -73,9 +74,12 @@ public class QuestionApi { ...@@ -73,9 +74,12 @@ public class QuestionApi {
//祛除重复标签 //祛除重复标签
HashSet<String> tags = QuestionUtils.toHashSet(questionForm.getTags()); HashSet<String> tags = QuestionUtils.toHashSet(questionForm.getTags());
//祛除重复话题
HashSet<String> topicIds = QuestionUtils.toHashSet(questionForm.getTopicIds());
//发布问题 //发布问题
try { try {
questionService.postQuestion(question,questionForm.getQuestionDetail(),tags); questionService.postQuestion(question,questionForm.getQuestionDetail(),tags, topicIds);
return Response.success(); return Response.success();
} catch (QuestionServiceException e) { } catch (QuestionServiceException e) {
e.printStackTrace(); e.printStackTrace();
......
...@@ -2,11 +2,13 @@ package cn.meteor.beyondclouds.modules.question.form; ...@@ -2,11 +2,13 @@ package cn.meteor.beyondclouds.modules.question.form;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import io.swagger.annotations.ApiOperation;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.Max; import javax.validation.constraints.Max;
import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.Size; import javax.validation.constraints.Size;
import java.util.List;
/** /**
* @author 胡学良 * @author 胡学良
...@@ -37,4 +39,7 @@ public class QuestionForm { ...@@ -37,4 +39,7 @@ public class QuestionForm {
@ApiModelProperty("详情") @ApiModelProperty("详情")
private String questionDetail; private String questionDetail;
@ApiModelProperty("话题ID")
private String topicIds;
} }
...@@ -27,9 +27,10 @@ public interface IQuestionService extends IService<Question> { ...@@ -27,9 +27,10 @@ public interface IQuestionService extends IService<Question> {
* @param question 问题基本信息 * @param question 问题基本信息
* @param questionDetail 问题详细信息 * @param questionDetail 问题详细信息
* @param tags 问题标签 * @param tags 问题标签
* @param topicIds 话题ID
* @throws QuestionServiceException 问题业务异常 * @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; 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.Question; import cn.meteor.beyondclouds.modules.question.entity.*;
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.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.exception.QuestionTagServiceException;
...@@ -12,6 +9,10 @@ import cn.meteor.beyondclouds.modules.question.mapper.QuestionMapper; ...@@ -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.service.*;
import cn.meteor.beyondclouds.modules.question.util.QuestionUtils; 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.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.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;
...@@ -24,6 +25,7 @@ import org.springframework.transaction.annotation.Transactional; ...@@ -24,6 +25,7 @@ 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;
/** /**
...@@ -51,10 +53,16 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i ...@@ -51,10 +53,16 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
private IQuestionCategoryService questionCategoryService; private IQuestionCategoryService questionCategoryService;
private ITopicService topicService;
private ITopicReferenceService topicReferenceService;
@Autowired @Autowired
public QuestionServiceImpl(IQuestionExtService questionExtService, IQuestionCategoryService questionCategoryService) { public QuestionServiceImpl(IQuestionExtService questionExtService, IQuestionCategoryService questionCategoryService, ITopicService topicService, ITopicReferenceService topicReferenceService) {
this.questionExtService = questionExtService; this.questionExtService = questionExtService;
this.questionCategoryService = questionCategoryService; this.questionCategoryService = questionCategoryService;
this.topicService = topicService;
this.topicReferenceService = topicReferenceService;
} }
@Autowired @Autowired
...@@ -74,7 +82,7 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i ...@@ -74,7 +82,7 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
@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, HashSet<String> topicIds) throws QuestionServiceException {
//1.检查问题标题是否以?结尾 //1.检查问题标题是否以?结尾
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);
...@@ -97,6 +105,32 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i ...@@ -97,6 +105,32 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
//5.保存问题标签信息 //5.保存问题标签信息
questionTagService.saveQuestionTag(tags,question.getQuestionId()); 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) @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