Commit 75356962 by 胡学良

完善0131代码

parent 5e04066c
package cn.meteor.beyondclouds.modules.question.api; package cn.meteor.beyondclouds.modules.question.api;
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;
...@@ -9,49 +10,58 @@ import cn.meteor.beyondclouds.modules.question.exception.QuestionServiceExceptio ...@@ -9,49 +10,58 @@ import cn.meteor.beyondclouds.modules.question.exception.QuestionServiceExceptio
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.util.QuestionUtils; import cn.meteor.beyondclouds.modules.question.util.QuestionUtils;
import cn.meteor.beyondclouds.modules.user.bean.AuthenticationResult;
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.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.BindingResult; import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.validation.Valid; import javax.validation.Valid;
import java.util.Arrays;
import java.util.HashSet; import java.util.HashSet;
/** /**
* @author 胡学良 * @author 胡学良
* @date 2020/1/31 * @since 2020/1/31
*/ */
@Api(tags = "问题Api") @Api(tags = "问题Api")
@RestController @RestController
@RequestMapping("/api") @RequestMapping("/api")
public class QuestionApi { public class QuestionApi {
IQuestionService questionService; private IQuestionService questionService;
@Autowired @Autowired
public QuestionApi(IQuestionService questionService) { public QuestionApi(IQuestionService questionService) {
this.questionService = questionService; this.questionService = questionService;
} }
/**
* 发布问题
* @param questionForm 问题表单
* @param result 校验信息
* @param subject 访问者信息
* @return default
*/
@ApiOperation("发布问题") @ApiOperation("发布问题")
@PostMapping("/question") @PostMapping("/question")
public Response postQuestion(@RequestBody @Valid QuestionForm questionForm, BindingResult result, @CurrentSubject Subject subject){ public Response postQuestion(@RequestBody @Valid QuestionForm questionForm, BindingResult result, @CurrentSubject Subject subject){
if (result.hasErrors()) { if (result.hasErrors()) {
return Response.fieldError(result.getFieldError()); return Response.fieldError(result.getFieldError());
} }
//将问题表单转换为问题对象
Question question = new Question(); Question question = new Question();
question.setUserId((String) subject.getId()); BeanUtils.copyProperties(questionForm,question);
question.setQuestionTitle(questionForm.getQuestionTitle());
question.setCategoryId(Integer.valueOf(questionForm.getCategoryId())); question.setCategoryId(Integer.valueOf(questionForm.getCategoryId()));
question.setQuestionAbstract(questionForm.getQuestionAbstract());
//设置用户ID(问题发布者ID)
question.setUserId((String) subject.getId());
//祛除重复标签
HashSet<String> tags = QuestionUtils.toHashSet(questionForm.getTags()); HashSet<String> tags = QuestionUtils.toHashSet(questionForm.getTags());
//发布问题
try { try {
questionService.postQuestion(question,questionForm.getQuestionDetail(),tags); questionService.postQuestion(question,questionForm.getQuestionDetail(),tags);
return Response.success(); return Response.success();
...@@ -61,30 +71,56 @@ public class QuestionApi { ...@@ -61,30 +71,56 @@ public class QuestionApi {
} }
} }
/**
* 删除问题
* @param questionId 问题ID
* @param subject 访问者信息
* @return default
*/
@ApiOperation("删除问题") @ApiOperation("删除问题")
@DeleteMapping("/question/{questionId}") @DeleteMapping("/question/{questionId}")
public Response deleteQuestion(@PathVariable("questionId") String questionId){ public Response deleteQuestion(@PathVariable("questionId") String questionId, @CurrentSubject Subject subject){
questionService.deleteQuestion(questionId); try {
return Response.success(); questionService.deleteQuestion(questionId, (String) subject.getId());
return Response.success();
} catch (QuestionServiceException e) {
e.printStackTrace();
return Response.error(e);
}
} }
/**
* 修改问题
* @param questionId 问题ID
* @param questionForm 问题表单
* @param result 校验信息
* @param subject 访问者信息
* @return default
*/
@ApiOperation("修改问题") @ApiOperation("修改问题")
@PutMapping("/question/{questionId}") @PutMapping("/question/{questionId}")
public Response modifyQuestion(@PathVariable("questionId") String questionId,@RequestBody @Valid QuestionForm questionForm, BindingResult result, @CurrentSubject Subject subject){ public Response modifyQuestion(@PathVariable("questionId") String questionId, @RequestBody @Valid QuestionForm questionForm, BindingResult result, @CurrentSubject Subject subject){
if (result.hasErrors()) { if (result.hasErrors()) {
return Response.fieldError(result.getFieldError()); return Response.fieldError(result.getFieldError());
} }
//将问题表单转换为问题对象
Question question = new Question(); Question question = new Question();
BeanUtils.copyProperties(questionForm,question);
question.setCategoryId(Integer.valueOf(questionForm.getCategoryId()));
//2.设置问题ID
question.setQuestionId(questionId); question.setQuestionId(questionId);
//3.设置用户ID
question.setUserId((String) subject.getId()); question.setUserId((String) subject.getId());
question.setQuestionTitle(questionForm.getQuestionTitle());
question.setCategoryId(Integer.valueOf(questionForm.getCategoryId()));
question.setQuestionAbstract(questionForm.getQuestionAbstract());
//4.祛除重复标签
HashSet<String> tags = QuestionUtils.toHashSet(questionForm.getTags()); HashSet<String> tags = QuestionUtils.toHashSet(questionForm.getTags());
//5.修改问题
try { try {
questionService.modifyQuestion(question, questionForm.getQuestionDetail(), tags); questionService.updateQuestion(question, questionForm.getQuestionDetail(), tags);
return Response.success(); return Response.success();
} catch (QuestionServiceException e) { } catch (QuestionServiceException e) {
e.printStackTrace(); e.printStackTrace();
...@@ -92,11 +128,24 @@ public class QuestionApi { ...@@ -92,11 +128,24 @@ public class QuestionApi {
} }
} }
/**
* 问题详情
* @param questionId 问题ID
* @return 问题详情
*/
@Anonymous
@ApiOperation("问题详情") @ApiOperation("问题详情")
@GetMapping("/question/{questionId}") @GetMapping("/question/{questionId}")
public Response questionDetails(@PathVariable("questionId") String questionId){ public Response questionDetails(@PathVariable("questionId") String questionId){
QuestionDetails questionDetails = questionService.questionDetails(questionId); QuestionDetails questionDetails = null;
return Response.success(questionDetails); try {
questionDetails = questionService.questionDetails(questionId);
return Response.success(questionDetails);
} catch (QuestionServiceException e) {
e.printStackTrace();
return Response.error(e);
}
} }
} }
package cn.meteor.beyondclouds.modules.question.bean; package cn.meteor.beyondclouds.modules.question.bean;
import cn.meteor.beyondclouds.modules.question.entity.Question;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
/** /**
* @author 胡学良 * @author 胡学良
* @date 2020/1/31 * @since 2020/1/31
*/ */
@ApiModel("问题详情") @ApiModel("问题详情")
@Data @Data
public class QuestionDetails { public class QuestionDetails extends Question {
@ApiModelProperty("问题ID")
private String questionId;
@ApiModelProperty("用户ID")
private String userId;
@ApiModelProperty("标题")
private String questionTitle;
@ApiModelProperty("类别") @ApiModelProperty("类别")
private String category; private String category;
@ApiModelProperty("摘要")
private String questionAbstract;
@ApiModelProperty("详情") @ApiModelProperty("详情")
private String questionDetail; private String questionDetail;
......
...@@ -4,13 +4,15 @@ import cn.meteor.beyondclouds.core.IErrorCode; ...@@ -4,13 +4,15 @@ import cn.meteor.beyondclouds.core.IErrorCode;
/** /**
* @author 胡学良 * @author 胡学良
* @date 2020/1/31 * @since 2020/1/31
*/ */
public enum QuestionErrorCode implements IErrorCode { public enum QuestionErrorCode implements IErrorCode {
/** /**
* 问题没有以?结尾 * 问题没有以?结尾
*/ */
QUESTION_END_ERROR(3001,"问题没有以?结尾"); QUESTION_END_ERROR(3001,"问题没有以?结尾"),
INCORRECT_CATEGORY(3002,"问题类别错误"),
QUESTION_NOT_FOUND(3003, "找不到该问题");
private long code; private long code;
private String msg; private String msg;
...@@ -30,5 +32,4 @@ public enum QuestionErrorCode implements IErrorCode { ...@@ -30,5 +32,4 @@ public enum QuestionErrorCode implements IErrorCode {
return msg; return msg;
} }
public enum QUESTION_END_ERROR {}
} }
...@@ -5,7 +5,7 @@ import cn.meteor.beyondclouds.core.exception.ServiceException; ...@@ -5,7 +5,7 @@ import cn.meteor.beyondclouds.core.exception.ServiceException;
/** /**
* @author 胡学良 * @author 胡学良
* @date 2020/1/31 * @since 2020/1/31
*/ */
public class QuestionServiceException extends ServiceException { public class QuestionServiceException extends ServiceException {
public QuestionServiceException(long errorCode, String errorMsg) { public QuestionServiceException(long errorCode, String errorMsg) {
......
...@@ -10,12 +10,14 @@ import javax.validation.constraints.Size; ...@@ -10,12 +10,14 @@ import javax.validation.constraints.Size;
/** /**
* @author 胡学良 * @author 胡学良
* @date 2020/1/31 * @since 2020/1/31
*/ */
@ApiModel("发布问题表单") @ApiModel(value = "QuestionForm", description = "问题表单")
@Data @Data
public class QuestionForm { public class QuestionForm {
private static final long serialVersionUID=1L;
@ApiModelProperty("类别ID") @ApiModelProperty("类别ID")
@NotEmpty(message = "问题类别ID不能为空") @NotEmpty(message = "问题类别ID不能为空")
private String categoryId; private String categoryId;
......
...@@ -24,31 +24,34 @@ public interface IQuestionService extends IService<Question> { ...@@ -24,31 +24,34 @@ public interface IQuestionService extends IService<Question> {
* @param question 问题基本信息 * @param question 问题基本信息
* @param questionDetail 问题详细信息 * @param questionDetail 问题详细信息
* @param tags 问题标签 * @param tags 问题标签
* @throws QuestionServiceException * @throws QuestionServiceException 问题业务异常
*/ */
void postQuestion(Question question, String questionDetail, HashSet<String> tags) throws QuestionServiceException; void postQuestion(Question question, String questionDetail, HashSet<String> tags) throws QuestionServiceException;
/** /**
* 删除问题 * 删除问题
* @param questionId 问题ID * @param questionId 问题ID
* @param userId 用户ID
* @throws QuestionServiceException 问题业务异常
*/ */
void deleteQuestion(String questionId); void deleteQuestion(String questionId, String userId) throws QuestionServiceException;
/** /**
* 修改问题 * 修改问题
* @param question 问题基本信息 * @param question 问题基本信息
* @param questionDetail 问题详细信息 * @param questionDetail 问题详细信息
* @param tags 问题标签 * @param tags 问题标签
* @throws QuestionServiceException * @throws QuestionServiceException 问题业务异常
*/ */
void modifyQuestion(Question question, String questionDetail, HashSet<String> tags) throws QuestionServiceException; void updateQuestion(Question question, String questionDetail, HashSet<String> tags) throws QuestionServiceException;
/** /**
* 问题详情 * 问题详情
* @param questionId 问题ID * @param questionId 问题ID
* @return 问题详情 * @return 问题详情
* @throws QuestionServiceException 问题业务异常
*/ */
QuestionDetails questionDetails(String questionId); QuestionDetails questionDetails(String questionId) 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.QuestionExt;
import cn.meteor.beyondclouds.modules.question.entity.QuestionReply;
import cn.meteor.beyondclouds.modules.question.entity.QuestionTag;
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.mapper.QuestionMapper; import cn.meteor.beyondclouds.modules.question.mapper.QuestionMapper;
...@@ -15,8 +12,11 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; ...@@ -15,8 +12,11 @@ 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.extension.conditions.update.LambdaUpdateChainWrapper;
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.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
import java.util.HashSet; import java.util.HashSet;
import java.util.Iterator; import java.util.Iterator;
...@@ -59,6 +59,7 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i ...@@ -59,6 +59,7 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
this.questionCategoryService = questionCategoryService; this.questionCategoryService = questionCategoryService;
} }
@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 {
//1.检查问题标题是否以?结尾 //1.检查问题标题是否以?结尾
...@@ -66,59 +67,93 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i ...@@ -66,59 +67,93 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
throw new QuestionServiceException(QuestionErrorCode.QUESTION_END_ERROR); throw new QuestionServiceException(QuestionErrorCode.QUESTION_END_ERROR);
} }
//2.创建问题信息 //2.检查问题分类是否存在
QuestionCategory questionCategory = questionCategoryService.getById(question.getCategoryId());
if (null == questionCategory) {
throw new QuestionServiceException(QuestionErrorCode.INCORRECT_CATEGORY);
}
//3.保存问题信息
save(question); save(question);
//3.创建问题扩展信息 //4.保存问题扩展信息
QuestionExt questionExt = new QuestionExt(); QuestionExt questionExt = new QuestionExt();
questionExt.setQuestionId(question.getQuestionId()); questionExt.setQuestionId(question.getQuestionId());
questionExt.setQuestionDetail(questionDetail); questionExt.setQuestionDetail(questionDetail);
questionExtService.save(questionExt); questionExtService.save(questionExt);
//3.创建问题标签信息 //5.保存问题标签信息
questionTagService.saveQuestionTag(tags,question.getQuestionId()); questionTagService.saveQuestionTag(tags,question.getQuestionId());
} }
@Transactional(rollbackFor = Exception.class)
@Override @Override
public void deleteQuestion(String questionId) { public void deleteQuestion(String questionId, String userId) throws QuestionServiceException{
//1.删除question表中的问题信息 //1.判断自己是否发布过此问题
removeById(questionId); QueryWrapper<Question> questionQueryWrapper = new QueryWrapper<>();
questionQueryWrapper.eq("question_id",questionId)
.eq("user_id",userId);
Question question = getOne(questionQueryWrapper);
if (null == question) {
throw new QuestionServiceException(QuestionErrorCode.QUESTION_NOT_FOUND);
}
//2.删除question-ext表中的问题信息 //2.删除question-tag表中关于该问题的标签
questionExtService.remove(QuestionUtils.getWrapper("question_id",questionId)); questionTagService.remove(QuestionUtils.getWrapper("question_id",questionId));
//3.获取该问题的所有回复 //3.获取该问题的所有回复
List<QuestionReply> questionReplies = questionReplyService.list(QuestionUtils.getWrapper("question_id",questionId)); List<QuestionReply> questionReplies = questionReplyService.list(QuestionUtils.getWrapper("question_id",questionId));
//4.删除question-reply表中关于该问题的所有回复 //4.删除question-reply-comment表中关于该问题的所有回复
questionReplyService.remove(QuestionUtils.getWrapper("question_id",questionId));
//5.删除question-reply-comment表中关于该问题的所有回复
for (QuestionReply questionReply : questionReplies){ for (QuestionReply questionReply : questionReplies){
questionReplyCommentService.remove(QuestionUtils.getWrapper("reply_id",questionReply.getReplyId())); questionReplyCommentService.remove(QuestionUtils.getWrapper("reply_id",questionReply.getReplyId()));
} }
//6.删除question-tag表中关于该问题的标签 //5.删除question-reply表中关于该问题的所有回复
questionTagService.remove(QuestionUtils.getWrapper("question_id",questionId)); questionReplyService.remove(QuestionUtils.getWrapper("question_id",questionId));
//6.删除question-ext表中的问题信息
questionExtService.remove(QuestionUtils.getWrapper("question_id",questionId));
//7.删除question表中的问题信息
removeById(questionId);
} }
@Override @Override
public void modifyQuestion(Question question, String questionDetail, HashSet<String> tags) throws QuestionServiceException { public void updateQuestion(Question question, String questionDetail, HashSet<String> tags) throws QuestionServiceException {
//1.检查问题标题是否以?结尾 //1.判断自己是否发布过此问题
QueryWrapper<Question> questionQueryWrapper = new QueryWrapper<>();
questionQueryWrapper.eq("question_id",question.getQuestionId())
.eq("user_id",question.getUserId());
Question questionInDb = getOne(questionQueryWrapper);
if (null == questionInDb) {
throw new QuestionServiceException(QuestionErrorCode.QUESTION_NOT_FOUND);
}
//2.检查问题标题是否以?结尾
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);
} }
//3.检查问题分类是否存在
QuestionCategory questionCategory = questionCategoryService.getById(question.getCategoryId());
if (null == questionCategory) {
throw new QuestionServiceException(QuestionErrorCode.INCORRECT_CATEGORY);
}
//2.更新问题信息 //2.更新问题信息
update(question,QuestionUtils.getWrapper("question_id",question.getQuestionId())); update(question,QuestionUtils.getWrapper("question_id",question.getQuestionId()));
//3.更新问题扩展信息 //3.更新问题扩展信息
QuestionExt questionExt = new QuestionExt(); if (!StringUtils.isEmpty(questionDetail)) {
questionExt.setQuestionId(question.getQuestionId()); QuestionExt questionExt = new QuestionExt();
questionExt.setQuestionDetail(questionDetail); questionExt.setQuestionId(question.getQuestionId());
UpdateWrapper<QuestionExt> updateWrapper = new UpdateWrapper<>(); questionExt.setQuestionDetail(questionDetail);
updateWrapper.eq("question_id",question.getQuestionId()); UpdateWrapper<QuestionExt> updateWrapper = new UpdateWrapper<>();
questionExtService.update(questionExt,updateWrapper); updateWrapper.eq("question_id",question.getQuestionId());
questionExtService.update(questionExt,updateWrapper);
}
//4.更新问题标签 //4.更新问题标签
questionTagService.remove(QuestionUtils.getWrapper("question_id",question.getQuestionId())); questionTagService.remove(QuestionUtils.getWrapper("question_id",question.getQuestionId()));
...@@ -126,15 +161,19 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i ...@@ -126,15 +161,19 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
} }
@Override @Override
public QuestionDetails questionDetails(String questionId) { public QuestionDetails questionDetails(String questionId) throws QuestionServiceException{
//1.获取问题基本信息 //1.获取问题基本信息
Question question = getById(questionId); Question question = getById(questionId);
//2.获取问题扩展信息 //2.判断是否存在此问题
if (null == question) {
throw new QuestionServiceException(QuestionErrorCode.QUESTION_NOT_FOUND);
}
//3.获取问题扩展信息
QuestionExt questionExt = questionExtService.getOne(QuestionUtils.getWrapper("question_id", questionId)); QuestionExt questionExt = questionExtService.getOne(QuestionUtils.getWrapper("question_id", questionId));
//3.获取问题标签 //4.获取问题标签
List<QuestionTag> questionTags = questionTagService.list(QuestionUtils.getWrapper("question_id", questionId)); List<QuestionTag> questionTags = questionTagService.list(QuestionUtils.getWrapper("question_id", questionId));
StringBuilder stringBuilder = new StringBuilder(); StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("["); stringBuilder.append("[");
...@@ -145,12 +184,9 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i ...@@ -145,12 +184,9 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
stringBuilder.append("]"); stringBuilder.append("]");
String tags = stringBuilder.toString(); String tags = stringBuilder.toString();
//4.生成问题详情对象 //5.生成问题详情对象
QuestionDetails questionDetails = new QuestionDetails(); QuestionDetails questionDetails = new QuestionDetails();
questionDetails.setUserId(question.getUserId()); BeanUtils.copyProperties(question,questionDetails);
questionDetails.setQuestionId(question.getQuestionId());
questionDetails.setQuestionTitle(question.getQuestionTitle());
questionDetails.setQuestionAbstract(question.getQuestionAbstract());
questionDetails.setQuestionDetail(questionExt.getQuestionDetail()); questionDetails.setQuestionDetail(questionExt.getQuestionDetail());
questionDetails.setTags(tags); questionDetails.setTags(tags);
questionDetails.setCategory(questionCategoryService.getById(question.getCategoryId()).getCategory()); questionDetails.setCategory(questionCategoryService.getById(question.getCategoryId()).getCategory());
......
...@@ -3,8 +3,11 @@ package cn.meteor.beyondclouds.modules.question.service.impl; ...@@ -3,8 +3,11 @@ package cn.meteor.beyondclouds.modules.question.service.impl;
import cn.meteor.beyondclouds.modules.question.entity.QuestionTag; import cn.meteor.beyondclouds.modules.question.entity.QuestionTag;
import cn.meteor.beyondclouds.modules.question.mapper.QuestionTagMapper; import cn.meteor.beyondclouds.modules.question.mapper.QuestionTagMapper;
import cn.meteor.beyondclouds.modules.question.service.IQuestionTagService; import cn.meteor.beyondclouds.modules.question.service.IQuestionTagService;
import cn.meteor.beyondclouds.modules.tag.entity.Tag;
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.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;
import java.util.HashSet; import java.util.HashSet;
...@@ -21,14 +24,25 @@ import java.util.Iterator; ...@@ -21,14 +24,25 @@ import java.util.Iterator;
@Service @Service
public class QuestionTagServiceImpl extends ServiceImpl<QuestionTagMapper, QuestionTag> implements IQuestionTagService { public class QuestionTagServiceImpl extends ServiceImpl<QuestionTagMapper, QuestionTag> implements IQuestionTagService {
private ITagService tagService;
@Autowired
public QuestionTagServiceImpl(ITagService tagService) {
this.tagService = tagService;
}
@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();
QuestionTag questionTag; QuestionTag questionTag;
while(iterator.hasNext()){ while(iterator.hasNext()){
Tag tag = tagService.getById(iterator.next());
if (tag == null || tag.getTagType() != 2) {
continue;
}
questionTag = new QuestionTag(); questionTag = new QuestionTag();
questionTag.setQuestionId(questionId); questionTag.setQuestionId(questionId);
questionTag.setTagId(iterator.next()); questionTag.setTagId(tag.getTagId());
save(questionTag); save(questionTag);
} }
} }
......
...@@ -7,7 +7,7 @@ import java.util.HashSet; ...@@ -7,7 +7,7 @@ import java.util.HashSet;
/** /**
* @author 胡学良 * @author 胡学良
* @date 2020/1/31 * @since 2020/1/31
*/ */
public class QuestionUtils { public class QuestionUtils {
......
...@@ -7,6 +7,7 @@ import cn.meteor.beyondclouds.core.bean.Subject; ...@@ -7,6 +7,7 @@ import cn.meteor.beyondclouds.core.bean.Subject;
import cn.meteor.beyondclouds.modules.topic.entity.Topic; import cn.meteor.beyondclouds.modules.topic.entity.Topic;
import cn.meteor.beyondclouds.modules.topic.form.CreateTopicForm; import cn.meteor.beyondclouds.modules.topic.form.CreateTopicForm;
import cn.meteor.beyondclouds.modules.topic.service.ITopicService; import cn.meteor.beyondclouds.modules.topic.service.ITopicService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
...@@ -57,7 +58,6 @@ public class TopicApi { ...@@ -57,7 +58,6 @@ public class TopicApi {
int pageNo= pageForm.getPage(); int pageNo= pageForm.getPage();
int pageSize= pageForm.getSize(); int pageSize= pageForm.getSize();
IPage<Topic> page = new Page<>(pageNo, pageSize); IPage<Topic> page = new Page<>(pageNo, pageSize);
return Response.success(iTopicService.page(page)); return Response.success(iTopicService.page(page));
} }
......
...@@ -3,7 +3,7 @@ spring: ...@@ -3,7 +3,7 @@ spring:
driver-class-name: com.mysql.cj.jdbc.Driver driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/beyond_clouds?useUnicode=true&characterEncoding=UTF-8&useSSL=false&allowPublicKeyRetrieval=true url: jdbc:mysql://127.0.0.1:3306/beyond_clouds?useUnicode=true&characterEncoding=UTF-8&useSSL=false&allowPublicKeyRetrieval=true
username: root username: root
password: 100Centa30821%mysql password: 197442
swagger: swagger:
enable: true enable: true
......
...@@ -3,7 +3,7 @@ spring: ...@@ -3,7 +3,7 @@ spring:
driver-class-name: com.mysql.cj.jdbc.Driver driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/beyond_clouds?useUnicode=true&characterEncoding=UTF-8&useSSL=false&allowPublicKeyRetrieval=true url: jdbc:mysql://127.0.0.1:3306/beyond_clouds?useUnicode=true&characterEncoding=UTF-8&useSSL=false&allowPublicKeyRetrieval=true
username: root username: root
password: 100Centa30821%mysql password: 197442
swagger: swagger:
enable: true enable: true
......
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