package com.qxgmat.controller.api; import com.github.pagehelper.Page; import com.nuliji.tools.PageMessage; import com.nuliji.tools.Response; import com.nuliji.tools.ResponseHelp; import com.nuliji.tools.Tools; import com.nuliji.tools.exception.AuthException; import com.nuliji.tools.exception.ParameterException; import com.qxgmat.data.constants.enums.QuestionSubject; import com.qxgmat.data.constants.enums.ServiceKey; import com.qxgmat.data.constants.enums.status.DirectionStatus; import com.qxgmat.data.dao.entity.TextbookLibrary; import com.qxgmat.data.dao.entity.TextbookLibraryHistory; import com.qxgmat.data.dao.entity.TextbookTopic; import com.qxgmat.data.dao.entity.User; import com.qxgmat.dto.response.UserTextbookInfoDto; import com.qxgmat.help.ShiroHelp; import com.qxgmat.service.UserServiceService; import com.qxgmat.service.UsersService; import com.qxgmat.service.extend.QuestionFlowService; import com.qxgmat.service.inline.*; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpSession; import java.text.DateFormat; import java.text.ParseException; import java.util.Date; import java.util.List; @RestController @RequestMapping("/api/textbook") @Api(tags = "机经", description = "机经接口") public class TextbookController { @Autowired private ShiroHelp shiroHelp; @Autowired private QuestionService questionService; @Autowired private SettingService settingService; @Autowired private UsersService usersService; @Autowired private UserServiceService userServiceService; @Autowired private UserOrderRecordService userOrderRecordService; @Autowired private QuestionFlowService questionFlowService; @Autowired private TextbookLibraryService textbookLibraryService; @Autowired private TextbookLibraryHistoryService textbookLibraryHistoryService; @Autowired private TextbookTopicService textbookTopicService; @RequestMapping(value = "/info", method = RequestMethod.GET) @ApiOperation(value = "机经信息", httpMethod = "GET") public Response info(HttpSession session) { User user = (User) shiroHelp.getLoginUser(); UserTextbookInfoDto dto = new UserTextbookInfoDto(); TextbookLibrary latest = textbookLibraryService.getLatest(); dto.setLatest(latest); if (user != null){ dto.setHasService(userServiceService.hasService(user.getId(), ServiceKey.TEXTBOOK)); dto.setUnUseRecord(userOrderRecordService.getUnUseService(user.getId(), ServiceKey.TEXTBOOK)); } TextbookLibrary second = textbookLibraryService.getSecond(); dto.setSecond(second); return ResponseHelp.success(dto); } @RequestMapping(value = "/year", method = RequestMethod.GET) @ApiOperation(value = "机经年度更新信息", httpMethod = "GET") public Response> year( @RequestParam(required = false) String year, HttpSession session) { Date start; try { start = DateFormat.getDateInstance().parse(String.format("%s-01-01", year)); } catch (ParseException e) { throw new ParameterException("日期格式错误"); } Date end = Tools.addYear(start, 1); List libraryList = textbookLibraryService.listByTime(start, end); return ResponseHelp.success(libraryList); } @RequestMapping(value = "/history/list", method = RequestMethod.GET) @ApiOperation(value = "机经更新记录", httpMethod = "GET") public Response> listHistory( @RequestParam(required = true) String subject, HttpSession session) { User user = (User) shiroHelp.getLoginUser(); if (user == null){ throw new AuthException("请先登录"); } if (!userServiceService.hasService(user.getId(), ServiceKey.TEXTBOOK)){ throw new ParameterException("没有机经查看权限"); } if (QuestionSubject.ValueOf(subject) == null){ throw new ParameterException("科目错误"); } TextbookLibrary library = textbookLibraryService.getLatest(); List p = textbookLibraryHistoryService.allByLibraryAndSubject(library.getId(), QuestionSubject.ValueOf(subject)); return ResponseHelp.success(p); } @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 = true) boolean latest, @RequestParam(required = true) String subject, @RequestParam(required = false) String[] qualitys, @RequestParam(required = false) Boolean isOld, @RequestParam(required = false, defaultValue = "id") String order, @RequestParam(required = false, defaultValue = "desc") String direction, HttpSession session) { TextbookLibrary library; if (latest){ User user = (User) shiroHelp.getLoginUser(); if (user == null){ throw new AuthException("请先登录"); } if (!userServiceService.hasService(user.getId(), ServiceKey.TEXTBOOK)){ throw new ParameterException("没有机经查看权限"); } library = textbookLibraryService.getLatest(); }else{ // 获取往期:倒数第二 library = textbookLibraryService.getSecond(); } Page p = textbookTopicService.list(page, size, library.getId(), QuestionSubject.ValueOf(subject), qualitys, isOld, order, DirectionStatus.ValueOf(direction)); return ResponseHelp.success(p, page, size, p.getTotal()); } }