QuestionCollectionController.java 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. package com.miaxis.app.controller.h5;
  2. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  3. import com.miaxis.common.annotation.Log;
  4. import com.miaxis.common.constant.Constants;
  5. import com.miaxis.common.core.controller.BaseController;
  6. import com.miaxis.common.core.domain.Response;
  7. import com.miaxis.common.core.page.ResponsePageInfo;
  8. import com.miaxis.common.enums.BusinessTypeEnum;
  9. import com.miaxis.common.exception.CustomException;
  10. import com.miaxis.common.utils.SecurityUtils;
  11. import com.miaxis.question.domain.QuestionCollection;
  12. import com.miaxis.question.dto.*;
  13. import com.miaxis.question.service.IQuestionCollectionService;
  14. import com.miaxis.question.vo.QuestionColIdDateVo;
  15. import io.swagger.annotations.*;
  16. import org.springframework.beans.BeanUtils;
  17. import org.springframework.beans.factory.annotation.Autowired;
  18. import org.springframework.web.bind.annotation.*;
  19. import java.sql.Timestamp;
  20. import java.util.ArrayList;
  21. import java.util.Arrays;
  22. import java.util.List;
  23. import java.util.stream.Collectors;
  24. /**
  25. * 【collection】Controller
  26. *
  27. * @author miaxis
  28. * @date 2021-08-18
  29. */
  30. @RestController
  31. @RequestMapping(Constants.STUDENT_PREFIX+"/question/collection")
  32. @Api(tags={"【H5-题目收藏】"})
  33. public class QuestionCollectionController extends BaseController {
  34. @Autowired
  35. private IQuestionCollectionService questionCollectionService;
  36. /**
  37. * 新增collection
  38. */
  39. @Log(title = "collection", businessType = BusinessTypeEnum.INSERT)
  40. @PostMapping
  41. @ApiOperation("新增collection")
  42. public Response<Integer> add(@RequestBody QuestionCollectionDTO questionCollectionDTO) {
  43. //查询该用户已收藏的题目列表
  44. QuestionCollectionListDTO dto = new QuestionCollectionListDTO();
  45. dto.setUserId(SecurityUtils.getLoginUser().getStudent().getId());
  46. List<QuestionCollection> list = questionCollectionService.selectQuestionCollectionList(dto);
  47. long count = list.stream().filter(o -> questionCollectionDTO.getQuestionId().equals(o.getQuestionId()) && questionCollectionDTO.getKm().equals(o.getKm())).count();
  48. if (count > 0) {
  49. Response response = new Response(200,"该题目已收藏过");
  50. return response;
  51. }
  52. QuestionCollection questionCollection = new QuestionCollection();
  53. BeanUtils.copyProperties(questionCollectionDTO, questionCollection);
  54. questionCollection.setUserId(SecurityUtils.getLoginUser().getStudent().getId());
  55. return toResponse(questionCollectionService.save(questionCollection) ? 1 : 0);
  56. }
  57. @PostMapping("collections")
  58. @ApiOperation("合并本机和云端收藏")
  59. public Response<Integer> collections(@RequestBody QuestionCollectionYunDTO col) {
  60. //查询该用户已收藏的题目列表
  61. QuestionCollectionListDTO dto = new QuestionCollectionListDTO();
  62. dto.setUserId(SecurityUtils.getLoginUser().getStudent().getId());
  63. List<QuestionCollection> dblist = questionCollectionService.selectQuestionCollectionList(dto);
  64. List<String> questionIdsStr = dblist.stream().map(o -> (o.getQuestionId()+","+o.getKm())).collect(Collectors.toList());
  65. List<QuestionCollection> qlist = new ArrayList<QuestionCollection>();
  66. for (QuestionColYunDTO colDTO : col.getCols()) {
  67. if (questionIdsStr.contains(colDTO.getId()+","+col.getKm())) {
  68. continue;
  69. }
  70. QuestionCollection questionCollection = new QuestionCollection();
  71. questionCollection.setUserId(SecurityUtils.getLoginUser().getStudent().getId());
  72. questionCollection.setKm(col.getKm());
  73. questionCollection.setQuestionId(colDTO.getId());
  74. Timestamp crDate = new Timestamp(colDTO.getTimestamp());
  75. questionCollection.setCreateTime(crDate);
  76. qlist.add(questionCollection);
  77. }
  78. if (qlist.isEmpty()) {
  79. Response response = new Response(200,"选中的题目已收藏!");
  80. return response;
  81. }
  82. return toResponse(questionCollectionService.saveBatch(qlist) ? 1 : 0);
  83. }
  84. @PostMapping("bakCollections")
  85. @ApiOperation("备份本机收藏到云端")
  86. public Response bakCollections(@RequestBody QuestionCollectionYunDTO col) {
  87. //首先删除云端数据
  88. Long userId = SecurityUtils.getLoginUser().getStudent().getId();
  89. QueryWrapper<QuestionCollection> queryWrapper = new QueryWrapper<QuestionCollection>();
  90. queryWrapper.eq("user_id",userId);
  91. queryWrapper.eq("km",col.getKm());
  92. questionCollectionService.remove(queryWrapper);
  93. //保存上传的收藏题
  94. List<QuestionCollection> qlist = new ArrayList<QuestionCollection>();
  95. for (QuestionColYunDTO colDTO : col.getCols()) {
  96. QuestionCollection questionCollection = new QuestionCollection();
  97. questionCollection.setUserId(userId);
  98. questionCollection.setKm(col.getKm());
  99. questionCollection.setQuestionId(colDTO.getId());
  100. Timestamp crDate = new Timestamp(colDTO.getTimestamp());
  101. questionCollection.setCreateTime(crDate);
  102. qlist.add(questionCollection);
  103. }
  104. if (qlist.isEmpty()) {
  105. Response response = new Response(200,"请先收藏题目。");
  106. return response;
  107. }
  108. return toResponse(questionCollectionService.saveBatch(qlist) ? 1 : 0);
  109. }
  110. @DeleteMapping("/cancel/{questionId}")
  111. @ApiOperation("取消收藏")
  112. public Response<Integer> remove(
  113. @ApiParam(name = "questionId", value = "题目id", required = true)
  114. @PathVariable String questionId
  115. ) {
  116. Long userId = SecurityUtils.getLoginUser().getStudent().getId();
  117. QueryWrapper<QuestionCollection> queryWrapper = new QueryWrapper<QuestionCollection>();
  118. queryWrapper.eq("user_id", userId);
  119. queryWrapper.eq("question_id", questionId);
  120. questionCollectionService.remove(queryWrapper);
  121. return Response.success();
  122. }
  123. @DeleteMapping("/cancelAll")
  124. @ApiOperation("清空收藏")
  125. public Response<Integer> removeAll(@RequestBody QuestionCollectionDelDTO questionCollectionDelDTO){
  126. Long userId = SecurityUtils.getLoginUser().getStudent().getId();
  127. QueryWrapper<QuestionCollection> queryWrapper = new QueryWrapper<QuestionCollection>();
  128. queryWrapper.eq("user_id",userId);
  129. queryWrapper.eq("km",questionCollectionDelDTO.getKm());
  130. questionCollectionService.remove(queryWrapper);
  131. return Response.success();
  132. }
  133. @GetMapping("/collectionByUser")
  134. @ApiOperation("恢复云端收藏到本机(根据用户获取收藏题)")
  135. public Response<List<QuestionColIdDateVo>> appCollectionByUser(@ModelAttribute QuestionCollectionListDTO dto){
  136. dto.setUserId(SecurityUtils.getLoginUser().getStudent().getId());
  137. List<QuestionColIdDateVo> list = questionCollectionService.selectCollectionIdByUserId(dto);
  138. return Response.success(list);
  139. }
  140. @GetMapping("/collectionCountByUser")
  141. @ApiOperation("根据用户获取收藏题数")
  142. public Response<Integer> collectionCountByUser(@ModelAttribute QuestionCollectionListDTO dto){
  143. dto.setUserId(SecurityUtils.getLoginUser().getStudent().getId());
  144. Integer count = questionCollectionService.selectCollectionCountByUserId(dto);
  145. return Response.success(count);
  146. }
  147. }