QuestionController.java 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. package com.zhongzheng.controller.bank;
  2. import com.zhongzheng.common.core.controller.BaseController;
  3. import com.zhongzheng.common.core.domain.AjaxResult;
  4. import com.zhongzheng.common.core.page.TableDataInfo;
  5. import com.zhongzheng.common.utils.ServletUtils;
  6. import com.zhongzheng.framework.web.service.WxTokenService;
  7. import com.zhongzheng.modules.bank.service.IQuestionBusinessService;
  8. import com.zhongzheng.modules.bank.service.IQuestionService;
  9. import com.zhongzheng.modules.exam.service.IExamPaperService;
  10. import com.zhongzheng.modules.exam.vo.ExamPaperVo;
  11. import com.zhongzheng.modules.goods.bo.*;
  12. import com.zhongzheng.modules.goods.service.IGoodsService;
  13. import com.zhongzheng.modules.goods.vo.GoodsExamTimeVo;
  14. import com.zhongzheng.modules.goods.vo.GoodsUserQuestionVo;
  15. import com.zhongzheng.modules.goods.vo.SpecialExamRecordVo;
  16. import com.zhongzheng.modules.user.bo.UserExamRecordQueryBo;
  17. import com.zhongzheng.modules.user.entity.ClientLoginUser;
  18. import com.zhongzheng.modules.user.service.IUserExamRecordService;
  19. import com.zhongzheng.modules.user.service.IUserExamSubscriptionService;
  20. import com.zhongzheng.modules.user.service.IUserSpecialExamRecordService;
  21. import io.swagger.annotations.Api;
  22. import io.swagger.annotations.ApiOperation;
  23. import lombok.RequiredArgsConstructor;
  24. import org.springframework.beans.factory.annotation.Autowired;
  25. import org.springframework.web.bind.annotation.*;
  26. import java.util.List;
  27. /**
  28. * 题库题目Controller
  29. *
  30. * @author hjl
  31. * @date 2021-10-21
  32. */
  33. @Api(value = "题库题目控制器", tags = {"题库题目管理"})
  34. @RequiredArgsConstructor(onConstructor_ = @Autowired)
  35. @RestController
  36. @RequestMapping("/bank/question")
  37. public class QuestionController extends BaseController {
  38. private final IQuestionService iQuestionService;
  39. private final IQuestionBusinessService iQuestionBusinessService;
  40. private final WxTokenService wxTokenService;
  41. private final IGoodsService iGoodsService;
  42. private final IUserExamRecordService iUserExamRecordService;
  43. private final IUserSpecialExamRecordService iUserSpecialExamRecordService;
  44. private final IExamPaperService iExamPaperService;
  45. private final IUserExamSubscriptionService iUserExamSubscriptionService;
  46. /**
  47. * 查询商品列表
  48. */
  49. @ApiOperation("查询用户拥有题库商品")
  50. @GetMapping("/listGoodsUserQuestion")
  51. public TableDataInfo<GoodsUserQuestionVo> listGoodsUserQuestionVo(GoodsQueryBo bo) {
  52. startPage();
  53. ClientLoginUser loginUser = wxTokenService.getLoginUser(ServletUtils.getRequest());
  54. bo.setUserId(loginUser.getUser().getUserId());
  55. List<GoodsUserQuestionVo> list = iQuestionService.listGoodsUserQuestionVo(bo);
  56. for (GoodsUserQuestionVo g : list) {
  57. UserExamRecordQueryBo userExamRecordQueryBo = new UserExamRecordQueryBo();
  58. userExamRecordQueryBo.setOrderGoodsId(g.getOrderGoodsId());
  59. userExamRecordQueryBo.setUserId(loginUser.getUser().getUserId());
  60. Long doNum = iUserExamRecordService.selectDoNum(userExamRecordQueryBo);
  61. Long totalNum = iGoodsService.getQuestionNum(g.getGoodsId());
  62. g.setDoNum(doNum);
  63. g.setTotalNum(totalNum);
  64. }
  65. return getDataTable(list);
  66. }
  67. /**
  68. * 查询用户拥有免费题库商品
  69. */
  70. @ApiOperation("查询用户拥有免费题库商品")
  71. @GetMapping("/listFreeGoodsList")
  72. public TableDataInfo<GoodsUserQuestionVo> listFreeGoodsList(GoodsQueryBo bo) {
  73. startPage();
  74. ClientLoginUser loginUser = wxTokenService.getLoginUser(ServletUtils.getRequest());
  75. bo.setUserId(loginUser.getUser().getUserId());
  76. List<GoodsUserQuestionVo> list = iQuestionService.listUserFreeGoodsList(bo);
  77. for (GoodsUserQuestionVo g : list) {
  78. UserExamRecordQueryBo userExamRecordQueryBo = new UserExamRecordQueryBo();
  79. userExamRecordQueryBo.setOrderGoodsId(g.getOrderGoodsId());
  80. userExamRecordQueryBo.setUserId(loginUser.getUser().getUserId());
  81. Long doNum = iUserExamRecordService.selectDoNum(userExamRecordQueryBo);
  82. Long totalNum = iGoodsService.getQuestionNum(g.getGoodsId());
  83. g.setDoNum(doNum);
  84. g.setTotalNum(totalNum);
  85. }
  86. return getDataTable(list);
  87. }
  88. /**
  89. * 查询用户拥有免费+自购题库商品
  90. */
  91. @ApiOperation("查询用户拥有免费+自购题库商品")
  92. @GetMapping("/listUserFreeUnionBuyGoodsList")
  93. public TableDataInfo<GoodsUserQuestionVo> listUserFreeUnionBuyGoodsList(GoodsQueryBo bo) {
  94. startPage();
  95. ClientLoginUser loginUser = wxTokenService.getLoginUser(ServletUtils.getRequest());
  96. bo.setUserId(loginUser.getUser().getUserId());
  97. List<GoodsUserQuestionVo> list = iQuestionService.listUserFreeUnionBuyGoodsList(bo);
  98. for (GoodsUserQuestionVo g : list) {
  99. UserExamRecordQueryBo userExamRecordQueryBo = new UserExamRecordQueryBo();
  100. userExamRecordQueryBo.setOrderGoodsId(g.getOrderGoodsId());
  101. userExamRecordQueryBo.setUserId(loginUser.getUser().getUserId());
  102. Long doNum = iUserExamRecordService.selectDoNum(userExamRecordQueryBo);
  103. Long totalNum = iGoodsService.getQuestionNum(g.getGoodsId());
  104. g.setDoNum(doNum);
  105. g.setTotalNum(totalNum);
  106. //试卷类型
  107. List<ExamPaperVo> paperVos = iExamPaperService.getGoodsExamPaper(g.getGoodsId());
  108. g.setPaperVos(paperVos);
  109. }
  110. return getDataTable(list);
  111. }
  112. /**
  113. * 获取每日一练当天的试卷信息
  114. */
  115. @ApiOperation("获取每日一练当天的试卷信息")
  116. @GetMapping("/getToDayExam/{goodsId}")
  117. public AjaxResult<GoodsExamTimeVo> getToDayExam(@PathVariable("goodsId") Long goodsId) {
  118. ClientLoginUser loginUser = wxTokenService.getLoginUser(ServletUtils.getRequest());
  119. return AjaxResult.success(iQuestionService.getToDayExam(goodsId,loginUser.getUser().getUserId()));
  120. }
  121. /**
  122. * 每日一练试卷打卡
  123. */
  124. @ApiOperation("每日一练试卷打卡")
  125. @PostMapping("/special/exam/record")
  126. public AjaxResult<Void> specialExamRecord(@RequestBody SpecialExamRecordAddBo addBo) {
  127. ClientLoginUser loginUser = wxTokenService.getLoginUser(ServletUtils.getRequest());
  128. addBo.setUserId(loginUser.getUser().getUserId());
  129. return toAjax(iUserSpecialExamRecordService.specialExamRecord(addBo)? 1 : 0);
  130. }
  131. /**
  132. * 获取每日一练试卷打卡记录
  133. */
  134. @ApiOperation("获取每日一练试卷打卡记录")
  135. @GetMapping("/get/special/record")
  136. public AjaxResult<List<SpecialExamRecordVo>> getSpecialRecord(SpecialExamRecordQuery query) {
  137. ClientLoginUser loginUser = wxTokenService.getLoginUser(ServletUtils.getRequest());
  138. query.setUserId(loginUser.getUser().getUserId());
  139. return AjaxResult.success(iUserSpecialExamRecordService.getSpecialRecord(query));
  140. }
  141. /**
  142. * 每日一练消息提醒订阅
  143. */
  144. @ApiOperation("每日一练消息提醒订阅")
  145. @PostMapping("/today/exam/subscription")
  146. public AjaxResult<Void> todayExamSubscription(@RequestBody TodayExamSubscriptionBo bo) {
  147. ClientLoginUser loginUser = wxTokenService.getLoginUser(ServletUtils.getRequest());
  148. bo.setUserId(loginUser.getUser().getUserId());
  149. return toAjax(iUserExamSubscriptionService.todayExamSubscription(bo)? 1 : 0);
  150. }
  151. /**
  152. * 每日一练打卡排行榜
  153. */
  154. @ApiOperation("每日一练打卡排行榜")
  155. @GetMapping("/todayExam/tob/{goodsId}")
  156. public AjaxResult<List<TodayExamTobVo>> getTodayExamTob(@PathVariable("goodsId") Long goodsId) {
  157. ClientLoginUser loginUser = wxTokenService.getLoginUser(ServletUtils.getRequest());
  158. return AjaxResult.success(iQuestionService.getTodayExamTob(goodsId,loginUser.getUser().getUserId()));
  159. }
  160. }