TextbookController.java 5.9 KB

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