TextbookController.java 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. package com.qxgmat.controller.api;
  2. import com.github.pagehelper.Page;
  3. import com.nuliji.tools.PageMessage;
  4. import com.nuliji.tools.Response;
  5. import com.nuliji.tools.ResponseHelp;
  6. import com.nuliji.tools.Tools;
  7. import com.nuliji.tools.exception.AuthException;
  8. import com.nuliji.tools.exception.ParameterException;
  9. import com.qxgmat.data.constants.enums.QuestionSubject;
  10. import com.qxgmat.data.constants.enums.ServiceKey;
  11. import com.qxgmat.data.constants.enums.status.DirectionStatus;
  12. import com.qxgmat.data.dao.entity.TextbookLibrary;
  13. import com.qxgmat.data.dao.entity.TextbookLibraryHistory;
  14. import com.qxgmat.data.dao.entity.TextbookTopic;
  15. import com.qxgmat.data.dao.entity.User;
  16. import com.qxgmat.dto.response.UserTextbookInfoDto;
  17. import com.qxgmat.help.ShiroHelp;
  18. import com.qxgmat.service.UserServiceService;
  19. import com.qxgmat.service.UsersService;
  20. import com.qxgmat.service.extend.QuestionFlowService;
  21. import com.qxgmat.service.inline.*;
  22. import io.swagger.annotations.Api;
  23. import io.swagger.annotations.ApiOperation;
  24. import org.springframework.beans.factory.annotation.Autowired;
  25. import org.springframework.web.bind.annotation.*;
  26. import javax.servlet.http.HttpSession;
  27. import java.text.DateFormat;
  28. import java.text.ParseException;
  29. import java.util.Date;
  30. import java.util.List;
  31. @RestController
  32. @RequestMapping("/api/textbook")
  33. @Api(tags = "机经", description = "机经接口")
  34. public class TextbookController
  35. {
  36. @Autowired
  37. private ShiroHelp shiroHelp;
  38. @Autowired
  39. private QuestionService questionService;
  40. @Autowired
  41. private SettingService settingService;
  42. @Autowired
  43. private UsersService usersService;
  44. @Autowired
  45. private UserServiceService userServiceService;
  46. @Autowired
  47. private UserOrderRecordService userOrderRecordService;
  48. @Autowired
  49. private QuestionFlowService questionFlowService;
  50. @Autowired
  51. private TextbookLibraryService textbookLibraryService;
  52. @Autowired
  53. private TextbookLibraryHistoryService textbookLibraryHistoryService;
  54. @Autowired
  55. private TextbookTopicService textbookTopicService;
  56. @RequestMapping(value = "/info", method = RequestMethod.GET)
  57. @ApiOperation(value = "机经信息", httpMethod = "GET")
  58. public Response<UserTextbookInfoDto> info(HttpSession session) {
  59. User user = (User) shiroHelp.getLoginUser();
  60. UserTextbookInfoDto dto = new UserTextbookInfoDto();
  61. TextbookLibrary latest = textbookLibraryService.getLatest();
  62. dto.setLatest(latest);
  63. if (user != null){
  64. dto.setHasService(userServiceService.hasService(user.getId(), ServiceKey.TEXTBOOK));
  65. dto.setUnUseRecord(userOrderRecordService.getUnUseService(user.getId(), ServiceKey.TEXTBOOK));
  66. }
  67. TextbookLibrary second = textbookLibraryService.getSecond();
  68. dto.setSecond(second);
  69. return ResponseHelp.success(dto);
  70. }
  71. @RequestMapping(value = "/year", method = RequestMethod.GET)
  72. @ApiOperation(value = "机经年度更新信息", httpMethod = "GET")
  73. public Response<List<TextbookLibrary>> year(
  74. @RequestParam(required = false) String year,
  75. HttpSession session) {
  76. Date start;
  77. try {
  78. start = DateFormat.getDateInstance().parse(String.format("%s-01-01", year));
  79. } catch (ParseException e) {
  80. throw new ParameterException("日期格式错误");
  81. }
  82. Date end = Tools.addYear(start, 1);
  83. List<TextbookLibrary> libraryList = textbookLibraryService.listByTime(start, end);
  84. return ResponseHelp.success(libraryList);
  85. }
  86. @RequestMapping(value = "/history/list", method = RequestMethod.GET)
  87. @ApiOperation(value = "机经更新记录", httpMethod = "GET")
  88. public Response<List<TextbookLibraryHistory>> listHistory(
  89. @RequestParam(required = true) String subject,
  90. HttpSession session) {
  91. User user = (User) shiroHelp.getLoginUser();
  92. if (user == null){
  93. throw new AuthException("请先登录");
  94. }
  95. if (!userServiceService.hasService(user.getId(), ServiceKey.TEXTBOOK)){
  96. throw new ParameterException("没有机经查看权限");
  97. }
  98. if (QuestionSubject.ValueOf(subject) == null){
  99. throw new ParameterException("科目错误");
  100. }
  101. TextbookLibrary library = textbookLibraryService.getLatest();
  102. List<TextbookLibraryHistory> p = textbookLibraryHistoryService.allByLibraryAndSubject(library.getId(), QuestionSubject.ValueOf(subject));
  103. return ResponseHelp.success(p);
  104. }
  105. @RequestMapping(value = "/topic/list", method = RequestMethod.GET)
  106. @ApiOperation(value = "机经列表", httpMethod = "GET")
  107. public Response<PageMessage<TextbookTopic>> listTopic(
  108. @RequestParam(required = false, defaultValue = "1") int page,
  109. @RequestParam(required = false, defaultValue = "100") int size,
  110. @RequestParam(required = true) boolean latest,
  111. @RequestParam(required = true) String subject,
  112. @RequestParam(required = false) String[] qualitys,
  113. @RequestParam(required = false) Boolean isOld,
  114. @RequestParam(required = false, defaultValue = "id") String order,
  115. @RequestParam(required = false, defaultValue = "desc") String direction,
  116. HttpSession session) {
  117. TextbookLibrary library;
  118. if (latest){
  119. User user = (User) shiroHelp.getLoginUser();
  120. if (user == null){
  121. throw new AuthException("请先登录");
  122. }
  123. if (!userServiceService.hasService(user.getId(), ServiceKey.TEXTBOOK)){
  124. throw new ParameterException("没有机经查看权限");
  125. }
  126. library = textbookLibraryService.getLatest();
  127. }else{
  128. // 获取往期:倒数第二
  129. library = textbookLibraryService.getSecond();
  130. }
  131. Page<TextbookTopic> p = textbookTopicService.list(page, size, library.getId(), QuestionSubject.ValueOf(subject), qualitys, isOld, order, DirectionStatus.ValueOf(direction));
  132. return ResponseHelp.success(p, page, size, p.getTotal());
  133. }
  134. }