TextbookController.java 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287
  1. package com.qxgmat.controller.admin;
  2. import com.github.pagehelper.Page;
  3. import com.nuliji.tools.*;
  4. import com.qxgmat.data.constants.enums.QuestionSubject;
  5. import com.qxgmat.data.constants.enums.TextbookSubject;
  6. import com.qxgmat.data.constants.enums.TopicQuality;
  7. import com.qxgmat.data.constants.enums.status.DirectionStatus;
  8. import com.qxgmat.data.dao.entity.*;
  9. import com.qxgmat.data.relation.entity.TextbookQuestionRelation;
  10. import com.qxgmat.dto.admin.extend.TextbookLibraryExtendDto;
  11. import com.qxgmat.dto.admin.request.*;
  12. import com.qxgmat.dto.admin.response.TextbookQuestionListDto;
  13. import com.qxgmat.dto.admin.response.TextbookTopicInfoDto;
  14. import com.qxgmat.service.inline.TextbookPaperService;
  15. import com.qxgmat.service.extend.TextbookService;
  16. import com.qxgmat.service.inline.*;
  17. import com.qxgmat.task.AsyncTask;
  18. import io.swagger.annotations.Api;
  19. import io.swagger.annotations.ApiOperation;
  20. import org.springframework.beans.factory.annotation.Autowired;
  21. import org.springframework.http.MediaType;
  22. import org.springframework.validation.annotation.Validated;
  23. import org.springframework.web.bind.annotation.*;
  24. import javax.servlet.http.HttpServletRequest;
  25. import javax.servlet.http.HttpSession;
  26. import java.util.Collection;
  27. import java.util.List;
  28. @RestController("AdminTextbookController")
  29. @RequestMapping("/admin/textbook")
  30. @Api(tags = "机经接口", description = "机经相关", produces = MediaType.APPLICATION_JSON_VALUE)
  31. public class TextbookController {
  32. @Autowired
  33. private ManagerLogService managerLogService;
  34. @Autowired
  35. private TextbookQuestionService textbookQuestionService;
  36. @Autowired
  37. private TextbookPaperService textbookPaperService;
  38. @Autowired
  39. private TextbookLibraryService textbookLibraryService;
  40. @Autowired
  41. private TextbookLibraryHistoryService textbookLibraryHistoryService;
  42. @Autowired
  43. private TextbookTopicService textbookTopicService;
  44. @Autowired
  45. private TextbookService textbookService;
  46. @Autowired
  47. private AsyncTask asyncTask;
  48. @RequestMapping(value = "/question/add", method = RequestMethod.POST)
  49. @ApiOperation(value = "添加机经题目", httpMethod = "POST")
  50. public Response<TextbookQuestion> addQuestion(@RequestBody @Validated TextbookQuestionDto dto, HttpServletRequest request) {
  51. TextbookQuestionRelation entity = Transform.dtoToEntity(dto);
  52. TextbookQuestion entityNew = textbookService.addQuestion(entity);
  53. managerLogService.log(request);
  54. return ResponseHelp.success(entityNew);
  55. }
  56. @RequestMapping(value = "/question/edit", method = RequestMethod.PUT)
  57. @ApiOperation(value = "修改机经题目", httpMethod = "PUT")
  58. public Response<Boolean> editQuestion(@RequestBody @Validated TextbookQuestionDto dto, HttpServletRequest request) {
  59. TextbookQuestionRelation entity = Transform.dtoToEntity(dto);
  60. textbookService.editQuestion(entity);
  61. managerLogService.log(request);
  62. return ResponseHelp.success(true);
  63. }
  64. // @RequestMapping(value = "/question/delete", method = RequestMethod.DELETE)
  65. // @ApiOperation(value = "删除机经题目", httpMethod = "DELETE")
  66. // public Response<Boolean> deleteQuestion(@RequestParam int id, HttpServletRequest request) {
  67. // managerLogService.log(request);
  68. // return ResponseHelp.success(sentenceQuestionService.delete(id));
  69. // }
  70. @RequestMapping(value = "/question/detail", method = RequestMethod.GET)
  71. @ApiOperation(value = "获取机经题目", httpMethod = "GET")
  72. public Response<TextbookQuestionRelation> detailQuestion(@RequestParam int id, HttpSession session) {
  73. TextbookQuestion entity = textbookQuestionService.get(id);
  74. TextbookQuestionRelation relation = textbookQuestionService.relation(entity);
  75. return ResponseHelp.success(relation);
  76. }
  77. @RequestMapping(value = "/question/next", method = RequestMethod.GET)
  78. @ApiOperation(value = "获取机经题目下一题序号", httpMethod = "GET")
  79. public Response<Integer> nextQuestion(@RequestParam int libraryId, HttpSession session) {
  80. TextbookQuestion entity = textbookQuestionService.lastByLibrary(libraryId);
  81. Integer no = 1;
  82. if (entity != null){
  83. no += entity.getNo();
  84. }
  85. return ResponseHelp.success(no);
  86. }
  87. @RequestMapping(value = "/paper/list", method = RequestMethod.GET)
  88. @ApiOperation(value = "组卷列表", httpMethod = "GET")
  89. public Response<PageMessage<TextbookPaper>> listPaper(
  90. @RequestParam(required = false, defaultValue = "1") int page,
  91. @RequestParam(required = false, defaultValue = "100") int size,
  92. @RequestParam(required = false) String keyword,
  93. @RequestParam(required = false) Integer[] ids,
  94. HttpSession session) {
  95. Page<TextbookPaper> p;
  96. if (ids != null && ids.length > 0){
  97. p = textbookPaperService.select(ids);
  98. }else{
  99. p = textbookPaperService.listAdmin(page, size, keyword);
  100. }
  101. return ResponseHelp.success(p, page, size, p.getTotal());
  102. }
  103. @RequestMapping(value = "/question/search", method = RequestMethod.GET)
  104. @ApiOperation(value = "试题列表", httpMethod = "GET")
  105. public Response<PageMessage<TextbookQuestionListDto>> searchQuestion(
  106. @RequestParam(required = false, defaultValue = "1") int page,
  107. @RequestParam(required = false, defaultValue = "100") int size,
  108. @RequestParam(required = false) String keyword,
  109. @RequestParam(required = false) Integer[] ids,
  110. HttpSession session) {
  111. Page<TextbookQuestion> p;
  112. if (ids != null && ids.length > 0){
  113. p = textbookQuestionService.select(ids);
  114. }else{
  115. p = textbookQuestionService.searchAdmin(page, size, keyword);
  116. }
  117. List<TextbookQuestionListDto> pr = Transform.convert(p, TextbookQuestionListDto.class);
  118. return ResponseHelp.success(pr, page, size, p.getTotal());
  119. }
  120. @RequestMapping(value = "/question/list", method = RequestMethod.GET)
  121. @ApiOperation(value = "试题列表", httpMethod = "GET")
  122. public Response<PageMessage<TextbookQuestionListDto>> listQuestion(
  123. @RequestParam(required = false, defaultValue = "1") int page,
  124. @RequestParam(required = false, defaultValue = "100") int size,
  125. @RequestParam(required = false) String questionType,
  126. @RequestParam(required = false) Integer paperId,
  127. @RequestParam(required = false) Integer questionNoId,
  128. @RequestParam(required = false, defaultValue = "id") String order,
  129. @RequestParam(required = false, defaultValue = "desc") String direction,
  130. HttpSession session) {
  131. Page<TextbookQuestionRelation> p = textbookQuestionService.listAdmin(page, size, questionType, paperId, questionNoId, order, DirectionStatus.ValueOf(direction));
  132. List<TextbookQuestionListDto> pr = Transform.convert(p, TextbookQuestionListDto.class);
  133. return ResponseHelp.success(pr, page, size, p.getTotal());
  134. }
  135. @RequestMapping(value = "/library/add", method = RequestMethod.POST)
  136. @ApiOperation(value = "发布新换库信息", httpMethod = "POST")
  137. public Response<Boolean> addLibrary(@RequestBody @Validated TextbookLibraryStartDto dto, HttpServletRequest request) {
  138. TextbookLibrary entity = Transform.dtoToEntity(dto);
  139. textbookService.replace(entity);
  140. // 发送机经到用户邮箱
  141. asyncTask.postTextbookLibrary();
  142. managerLogService.log(request);
  143. return ResponseHelp.success(true);
  144. }
  145. @RequestMapping(value = "/library/edit", method = RequestMethod.PUT)
  146. @ApiOperation(value = "更新换库信息", httpMethod = "PUT")
  147. public Response<Boolean> editLibrary(@RequestBody @Validated TextbookLibraryDto dto, HttpServletRequest request) {
  148. TextbookLibrary entity = Transform.dtoToEntity(dto);
  149. textbookLibraryService.edit(entity);
  150. managerLogService.log(request);
  151. return ResponseHelp.success(true);
  152. }
  153. @RequestMapping(value = "/library/list", method = RequestMethod.GET)
  154. @ApiOperation(value = "换库表", httpMethod = "GET")
  155. public Response<PageMessage<TextbookLibrary>> listLibrary(
  156. @RequestParam(required = false, defaultValue = "1") int page,
  157. @RequestParam(required = false, defaultValue = "100") int size,
  158. @RequestParam(required = false) String keyword,
  159. @RequestParam(required = false) Integer[] ids,
  160. HttpSession session) {
  161. Page<TextbookLibrary> p;
  162. if (ids != null && ids.length > 0){
  163. p = textbookLibraryService.select(ids);
  164. }else{
  165. p = textbookLibraryService.listAdmin(page, size, keyword);
  166. }
  167. return ResponseHelp.success(p, page, size, p.getTotal());
  168. }
  169. @RequestMapping(value = "/library/history/list", method = RequestMethod.GET)
  170. @ApiOperation(value = "换库表", httpMethod = "GET")
  171. public Response<PageMessage<TextbookLibraryHistory>> listLibraryHistory(
  172. @RequestParam(required = false, defaultValue = "1") int page,
  173. @RequestParam(required = false, defaultValue = "100") int size,
  174. @RequestParam(required = true) Integer libraryId,
  175. HttpSession session) {
  176. Page<TextbookLibraryHistory> p = textbookLibraryHistoryService.listByLibrary(page, size, libraryId);
  177. return ResponseHelp.success(p, page, size, p.getTotal());
  178. }
  179. @RequestMapping(value = "/library/history/post", method = RequestMethod.POST)
  180. @ApiOperation(value = "发布新换库信息", httpMethod = "POST")
  181. public Response<Boolean> postHistory(@RequestBody @Validated TextbookLibraryHistoryDto dto, HttpServletRequest request) {
  182. TextbookLibraryHistory entity = Transform.dtoToEntity(dto);
  183. textbookLibraryService.addHistory(entity);
  184. // 发送机经到用户邮箱
  185. asyncTask.postTextbookUpdate();
  186. managerLogService.log(request);
  187. return ResponseHelp.success(true);
  188. }
  189. @RequestMapping(value = "/topic/add", method = RequestMethod.POST)
  190. @ApiOperation(value = "添加机经题目", httpMethod = "POST")
  191. public Response<TextbookTopic> addTopic(@RequestBody @Validated TextbookTopic dto, HttpServletRequest request) {
  192. TextbookTopic entity = Transform.convert(dto, TextbookTopic.class);
  193. entity = textbookTopicService.add(entity);
  194. textbookService.updateLibraryNo(entity.getLibraryId(), entity.getTextbookSubject());
  195. managerLogService.log(request);
  196. return ResponseHelp.success(Transform.convert(entity, TextbookTopic.class));
  197. }
  198. @RequestMapping(value = "/topic/edit", method = RequestMethod.PUT)
  199. @ApiOperation(value = "编辑机经题目", httpMethod = "PUT")
  200. public Response<Boolean> editTopic(@RequestBody @Validated TextbookTopic dto, HttpServletRequest request) {
  201. TextbookTopic entity = Transform.convert(dto, TextbookTopic.class);
  202. entity = textbookTopicService.edit(entity);
  203. textbookService.updateLibraryNo(entity.getLibraryId(), entity.getTextbookSubject());
  204. managerLogService.log(request);
  205. return ResponseHelp.success(true);
  206. }
  207. @RequestMapping(value = "/topic/delete", method = RequestMethod.DELETE)
  208. @ApiOperation(value = "删除机经题目", httpMethod = "DELETE")
  209. public Response<Boolean> deleteTopic(@RequestParam int id, HttpServletRequest request) {
  210. TextbookTopic entity = textbookTopicService.get(id);
  211. textbookTopicService.delete(id);
  212. textbookService.updateLibraryNo(entity.getLibraryId(), entity.getTextbookSubject());
  213. managerLogService.log(request);
  214. return ResponseHelp.success(true);
  215. }
  216. @RequestMapping(value = "/topic/detail", method = RequestMethod.GET)
  217. @ApiOperation(value = "获取机经题目", httpMethod = "GET")
  218. public Response<TextbookTopic> detailTopic(@RequestParam int id,HttpSession session) {
  219. TextbookTopic entity = textbookTopicService.get(id);
  220. return ResponseHelp.success(Transform.convert(entity, TextbookTopic.class));
  221. }
  222. @RequestMapping(value = "/topic/next", method = RequestMethod.GET)
  223. @ApiOperation(value = "获取机经题目下一题序号", httpMethod = "GET")
  224. public Response<Integer> nextTopic(@RequestParam int libraryId, @RequestParam String textbookSubject, HttpSession session) {
  225. TextbookTopic entity = textbookTopicService.lastByLibrary(libraryId, textbookSubject);
  226. Integer no = 1;
  227. if (entity != null){
  228. no += entity.getNo();
  229. }
  230. return ResponseHelp.success(no);
  231. }
  232. @RequestMapping(value = "/topic/list", method = RequestMethod.GET)
  233. @ApiOperation(value = "机经题目列表", httpMethod = "GET")
  234. public Response<PageMessage<TextbookTopicInfoDto>> listTopic(
  235. @RequestParam(required = false, defaultValue = "1") int page,
  236. @RequestParam(required = false, defaultValue = "100") int size,
  237. @RequestParam(required = false) String questionSubject,
  238. @RequestParam(required = false) Number libraryId,
  239. @RequestParam(required = false) String keyword,
  240. @RequestParam(required = false) String quality,
  241. @RequestParam(required = false, defaultValue = "id") String order,
  242. @RequestParam(required = false, defaultValue = "desc") String direction,
  243. HttpSession session) {
  244. Page<TextbookTopic> p = textbookTopicService.listAdmin(page, size, questionSubject, libraryId, keyword, TopicQuality.ValueOf(quality), order, DirectionStatus.ValueOf(direction));
  245. List<TextbookTopicInfoDto> pr = Transform.convert(p, TextbookTopicInfoDto.class);
  246. Collection libraryIds = Transform.getIds(p, TextbookTopic.class, "libraryId");
  247. List<TextbookLibrary> libraryList = textbookLibraryService.select(libraryIds);
  248. Transform.combine(pr, libraryList, TextbookTopicInfoDto.class, "libraryId", "library", TextbookLibrary.class, "id", TextbookLibraryExtendDto.class);
  249. return ResponseHelp.success(pr, page, size, p.getTotal());
  250. }
  251. }