package com.qxgmat.controller.admin; import com.github.pagehelper.Page; import com.nuliji.tools.*; import com.qxgmat.data.constants.enums.QuestionSubject; import com.qxgmat.data.constants.enums.TextbookSubject; import com.qxgmat.data.constants.enums.TopicQuality; import com.qxgmat.data.constants.enums.status.DirectionStatus; import com.qxgmat.data.dao.entity.*; import com.qxgmat.data.relation.entity.TextbookQuestionRelation; import com.qxgmat.dto.admin.extend.TextbookLibraryExtendDto; import com.qxgmat.dto.admin.request.*; import com.qxgmat.dto.admin.response.TextbookQuestionListDto; import com.qxgmat.dto.admin.response.TextbookTopicInfoDto; import com.qxgmat.service.inline.TextbookPaperService; import com.qxgmat.service.extend.TextbookService; import com.qxgmat.service.inline.*; import com.qxgmat.task.AsyncTask; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import java.util.Collection; import java.util.List; @RestController("AdminTextbookController") @RequestMapping("/admin/textbook") @Api(tags = "机经接口", description = "机经相关", produces = MediaType.APPLICATION_JSON_VALUE) public class TextbookController { @Autowired private ManagerLogService managerLogService; @Autowired private TextbookQuestionService textbookQuestionService; @Autowired private TextbookPaperService textbookPaperService; @Autowired private TextbookLibraryService textbookLibraryService; @Autowired private TextbookLibraryHistoryService textbookLibraryHistoryService; @Autowired private TextbookTopicService textbookTopicService; @Autowired private TextbookService textbookService; @Autowired private AsyncTask asyncTask; @RequestMapping(value = "/question/add", method = RequestMethod.POST) @ApiOperation(value = "添加机经题目", httpMethod = "POST") public Response addQuestion(@RequestBody @Validated TextbookQuestionDto dto, HttpServletRequest request) { TextbookQuestionRelation entity = Transform.dtoToEntity(dto); TextbookQuestion entityNew = textbookService.addQuestion(entity); managerLogService.log(request); return ResponseHelp.success(entityNew); } @RequestMapping(value = "/question/edit", method = RequestMethod.PUT) @ApiOperation(value = "修改机经题目", httpMethod = "PUT") public Response editQuestion(@RequestBody @Validated TextbookQuestionDto dto, HttpServletRequest request) { TextbookQuestionRelation entity = Transform.dtoToEntity(dto); textbookService.editQuestion(entity); managerLogService.log(request); return ResponseHelp.success(true); } // @RequestMapping(value = "/question/delete", method = RequestMethod.DELETE) // @ApiOperation(value = "删除机经题目", httpMethod = "DELETE") // public Response deleteQuestion(@RequestParam int id, HttpServletRequest request) { // managerLogService.log(request); // return ResponseHelp.success(sentenceQuestionService.delete(id)); // } @RequestMapping(value = "/question/detail", method = RequestMethod.GET) @ApiOperation(value = "获取机经题目", httpMethod = "GET") public Response detailQuestion(@RequestParam int id, HttpSession session) { TextbookQuestion entity = textbookQuestionService.get(id); TextbookQuestionRelation relation = textbookQuestionService.relation(entity); return ResponseHelp.success(relation); } @RequestMapping(value = "/question/next", method = RequestMethod.GET) @ApiOperation(value = "获取机经题目下一题序号", httpMethod = "GET") public Response nextQuestion(@RequestParam int libraryId, HttpSession session) { TextbookQuestion entity = textbookQuestionService.lastByLibrary(libraryId); Integer no = 1; if (entity != null){ no += entity.getNo(); } return ResponseHelp.success(no); } @RequestMapping(value = "/paper/list", method = RequestMethod.GET) @ApiOperation(value = "组卷列表", httpMethod = "GET") public Response> listPaper( @RequestParam(required = false, defaultValue = "1") int page, @RequestParam(required = false, defaultValue = "100") int size, @RequestParam(required = false) String keyword, @RequestParam(required = false) Integer[] ids, HttpSession session) { Page p; if (ids != null && ids.length > 0){ p = textbookPaperService.select(ids); }else{ p = textbookPaperService.listAdmin(page, size, keyword); } return ResponseHelp.success(p, page, size, p.getTotal()); } @RequestMapping(value = "/question/search", method = RequestMethod.GET) @ApiOperation(value = "试题列表", httpMethod = "GET") public Response> searchQuestion( @RequestParam(required = false, defaultValue = "1") int page, @RequestParam(required = false, defaultValue = "100") int size, @RequestParam(required = false) String keyword, @RequestParam(required = false) Integer[] ids, HttpSession session) { Page p; if (ids != null && ids.length > 0){ p = textbookQuestionService.select(ids); }else{ p = textbookQuestionService.searchAdmin(page, size, keyword); } List pr = Transform.convert(p, TextbookQuestionListDto.class); return ResponseHelp.success(pr, page, size, p.getTotal()); } @RequestMapping(value = "/question/list", method = RequestMethod.GET) @ApiOperation(value = "试题列表", httpMethod = "GET") public Response> listQuestion( @RequestParam(required = false, defaultValue = "1") int page, @RequestParam(required = false, defaultValue = "100") int size, @RequestParam(required = false) String questionType, @RequestParam(required = false) Integer paperId, @RequestParam(required = false) Integer questionNoId, @RequestParam(required = false, defaultValue = "id") String order, @RequestParam(required = false, defaultValue = "desc") String direction, HttpSession session) { Page p = textbookQuestionService.listAdmin(page, size, questionType, paperId, questionNoId, order, DirectionStatus.ValueOf(direction)); List pr = Transform.convert(p, TextbookQuestionListDto.class); return ResponseHelp.success(pr, page, size, p.getTotal()); } @RequestMapping(value = "/library/add", method = RequestMethod.POST) @ApiOperation(value = "发布新换库信息", httpMethod = "POST") public Response addLibrary(@RequestBody @Validated TextbookLibraryStartDto dto, HttpServletRequest request) { TextbookLibrary entity = Transform.dtoToEntity(dto); textbookService.replace(entity); // 发送机经到用户邮箱 asyncTask.postTextbookLibrary(); managerLogService.log(request); return ResponseHelp.success(true); } @RequestMapping(value = "/library/edit", method = RequestMethod.PUT) @ApiOperation(value = "更新换库信息", httpMethod = "PUT") public Response editLibrary(@RequestBody @Validated TextbookLibraryDto dto, HttpServletRequest request) { TextbookLibrary entity = Transform.dtoToEntity(dto); textbookLibraryService.edit(entity); managerLogService.log(request); return ResponseHelp.success(true); } @RequestMapping(value = "/library/list", method = RequestMethod.GET) @ApiOperation(value = "换库表", httpMethod = "GET") public Response> listLibrary( @RequestParam(required = false, defaultValue = "1") int page, @RequestParam(required = false, defaultValue = "100") int size, @RequestParam(required = false) String keyword, @RequestParam(required = false) Integer[] ids, HttpSession session) { Page p; if (ids != null && ids.length > 0){ p = textbookLibraryService.select(ids); }else{ p = textbookLibraryService.listAdmin(page, size, keyword); } return ResponseHelp.success(p, page, size, p.getTotal()); } @RequestMapping(value = "/library/history/list", method = RequestMethod.GET) @ApiOperation(value = "换库表", httpMethod = "GET") public Response> listLibraryHistory( @RequestParam(required = false, defaultValue = "1") int page, @RequestParam(required = false, defaultValue = "100") int size, @RequestParam(required = true) Integer libraryId, HttpSession session) { Page p = textbookLibraryHistoryService.listByLibrary(page, size, libraryId); return ResponseHelp.success(p, page, size, p.getTotal()); } @RequestMapping(value = "/library/history/post", method = RequestMethod.POST) @ApiOperation(value = "发布新换库信息", httpMethod = "POST") public Response postHistory(@RequestBody @Validated TextbookLibraryHistoryDto dto, HttpServletRequest request) { TextbookLibraryHistory entity = Transform.dtoToEntity(dto); textbookLibraryService.addHistory(entity); // 发送机经到用户邮箱 asyncTask.postTextbookUpdate(); managerLogService.log(request); return ResponseHelp.success(true); } @RequestMapping(value = "/topic/add", method = RequestMethod.POST) @ApiOperation(value = "添加机经题目", httpMethod = "POST") public Response addTopic(@RequestBody @Validated TextbookTopic dto, HttpServletRequest request) { TextbookTopic entity = Transform.convert(dto, TextbookTopic.class); entity = textbookTopicService.add(entity); textbookService.updateLibraryNo(entity.getLibraryId(), entity.getTextbookSubject()); managerLogService.log(request); return ResponseHelp.success(Transform.convert(entity, TextbookTopic.class)); } @RequestMapping(value = "/topic/edit", method = RequestMethod.PUT) @ApiOperation(value = "编辑机经题目", httpMethod = "PUT") public Response editTopic(@RequestBody @Validated TextbookTopic dto, HttpServletRequest request) { TextbookTopic entity = Transform.convert(dto, TextbookTopic.class); entity = textbookTopicService.edit(entity); textbookService.updateLibraryNo(entity.getLibraryId(), entity.getTextbookSubject()); managerLogService.log(request); return ResponseHelp.success(true); } @RequestMapping(value = "/topic/delete", method = RequestMethod.DELETE) @ApiOperation(value = "删除机经题目", httpMethod = "DELETE") public Response deleteTopic(@RequestParam int id, HttpServletRequest request) { TextbookTopic entity = textbookTopicService.get(id); textbookTopicService.delete(id); textbookService.updateLibraryNo(entity.getLibraryId(), entity.getTextbookSubject()); managerLogService.log(request); return ResponseHelp.success(true); } @RequestMapping(value = "/topic/detail", method = RequestMethod.GET) @ApiOperation(value = "获取机经题目", httpMethod = "GET") public Response detailTopic(@RequestParam int id,HttpSession session) { TextbookTopic entity = textbookTopicService.get(id); return ResponseHelp.success(Transform.convert(entity, TextbookTopic.class)); } @RequestMapping(value = "/topic/next", method = RequestMethod.GET) @ApiOperation(value = "获取机经题目下一题序号", httpMethod = "GET") public Response nextTopic(@RequestParam int libraryId, @RequestParam String textbookSubject, HttpSession session) { TextbookTopic entity = textbookTopicService.lastByLibrary(libraryId, textbookSubject); Integer no = 1; if (entity != null){ no += entity.getNo(); } return ResponseHelp.success(no); } @RequestMapping(value = "/topic/list", method = RequestMethod.GET) @ApiOperation(value = "机经题目列表", httpMethod = "GET") public Response> listTopic( @RequestParam(required = false, defaultValue = "1") int page, @RequestParam(required = false, defaultValue = "100") int size, @RequestParam(required = false) String questionSubject, @RequestParam(required = false) Number libraryId, @RequestParam(required = false) String keyword, @RequestParam(required = false) String quality, @RequestParam(required = false, defaultValue = "id") String order, @RequestParam(required = false, defaultValue = "desc") String direction, HttpSession session) { Page p = textbookTopicService.listAdmin(page, size, questionSubject, libraryId, keyword, TopicQuality.ValueOf(quality), order, DirectionStatus.ValueOf(direction)); List pr = Transform.convert(p, TextbookTopicInfoDto.class); Collection libraryIds = Transform.getIds(p, TextbookTopic.class, "libraryId"); List libraryList = textbookLibraryService.select(libraryIds); Transform.combine(pr, libraryList, TextbookTopicInfoDto.class, "libraryId", "library", TextbookLibrary.class, "id", TextbookLibraryExtendDto.class); return ResponseHelp.success(pr, page, size, p.getTotal()); } }