package com.qxgmat.controller.admin; import com.github.pagehelper.Page; import com.nuliji.tools.PageMessage; import com.nuliji.tools.Response; import com.nuliji.tools.ResponseHelp; import com.nuliji.tools.Transform; import com.nuliji.tools.exception.ParameterException; import com.qxgmat.data.constants.enums.module.CourseModule; import com.qxgmat.data.constants.enums.status.DirectionStatus; import com.qxgmat.data.dao.entity.Course; import com.qxgmat.data.dao.entity.PreviewAssign; import com.qxgmat.data.dao.entity.PreviewPaper; import com.qxgmat.data.dao.entity.User; import com.qxgmat.dto.admin.extend.CourseExtendDto; import com.qxgmat.dto.admin.extend.UserExtendDto; import com.qxgmat.dto.admin.request.PreviewAssignDto; import com.qxgmat.dto.admin.request.PreviewPaperDto; import com.qxgmat.dto.admin.response.PreviewPaperListDto; import com.qxgmat.service.extend.PreviewService; 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.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("AdminPreviewController") @RequestMapping("/admin/preview") @Api(tags = "预习作业接口", description = "设置预习作业", produces = MediaType.APPLICATION_JSON_VALUE) public class PreviewController { @Autowired private ManagerLogService managerLogService; @Autowired private CourseService courseService; @Autowired private PreviewService previewService; @Autowired private PreviewPaperService previewPaperService; @Autowired private PreviewAssignService previewAssignService; @Autowired private QuestionNoService questionNoService; @Autowired private QuestionFlowService questionFlowService; @RequestMapping(value = "/add", method = RequestMethod.POST) @ApiOperation(value = "添加预习作业", httpMethod = "POST") public Response add(@RequestBody @Validated PreviewPaperDto dto, HttpServletRequest request) { PreviewPaper entity = Transform.dtoToEntity(dto); if (dto.getCourseNo() != null){ PreviewAssign assign = previewAssignService.getByCourseNo(dto.getCourseId(), dto.getCourseNo()); if (assign != null){ throw new ParameterException("该课时已经创建"); } } previewPaperService.add(entity); managerLogService.log(request); return ResponseHelp.success(entity); } @RequestMapping(value = "/edit", method = RequestMethod.PUT) @ApiOperation(value = "编辑预习作业", httpMethod = "PUT") public Response edit(@RequestBody @Validated PreviewPaperDto dto, HttpServletRequest request) { PreviewPaper entity = Transform.dtoToEntity(dto); previewPaperService.edit(entity); // 不允许编辑课时,如果允许,该处进行处理 managerLogService.log(request); return ResponseHelp.success(true); } @RequestMapping(value = "/delete", method = RequestMethod.DELETE) @ApiOperation(value = "删除预习作业", httpMethod = "DELETE") public Response delete(@RequestParam int id, HttpServletRequest request) { previewPaperService.delete(id); managerLogService.log(request); return ResponseHelp.success(true); } @RequestMapping(value = "/detail", method = RequestMethod.GET) @ApiOperation(value = "获取预习作业", httpMethod = "GET") public Response detail(@RequestParam int id, HttpSession session) { PreviewPaper entity = previewPaperService.get(id); return ResponseHelp.success(entity); } @RequestMapping(value = "/list", method = RequestMethod.GET) @ApiOperation(value = "预习作业列表", httpMethod = "GET") public Response> list( @RequestParam(required = false, defaultValue = "1") int page, @RequestParam(required = false, defaultValue = "100") int size, @RequestParam(required = false) String courseModule, @RequestParam(required = false) Integer structId, @RequestParam(required = false, defaultValue = "id") String order, @RequestParam(required = false, defaultValue = "desc") String direction, HttpSession session) { Page p = previewPaperService.listAdmin(page, size, CourseModule.ValueOf(courseModule), structId, order, DirectionStatus.ValueOf(direction)); List pr = Transform.convert(p, PreviewPaperListDto.class); // 绑定用户 Collection courseIds = Transform.getIds(p, PreviewPaper.class, "courseId"); List courseList = courseService.select(courseIds); Transform.combine(pr, courseList, PreviewPaperListDto.class, "courseId", "course", Course.class, "id", CourseExtendDto.class); return ResponseHelp.success(pr, page, size, p.getTotal()); } @RequestMapping(value = "/assign/add", method = RequestMethod.POST) @ApiOperation(value = "添加分配预习作业", httpMethod = "POST") public Response addAssign(@RequestBody @Validated PreviewAssignDto dto, HttpServletRequest request) { PreviewAssign entity = Transform.dtoToEntity(dto); previewAssignService.add(entity); managerLogService.log(request); return ResponseHelp.success(entity); } @RequestMapping(value = "/assign/edit", method = RequestMethod.PUT) @ApiOperation(value = "编辑分配预习作业", httpMethod = "PUT") public Response editAssign(@RequestBody @Validated PreviewAssignDto dto, HttpServletRequest request) { PreviewAssign entity = Transform.dtoToEntity(dto); previewAssignService.edit(entity); managerLogService.log(request); return ResponseHelp.success(true); } @RequestMapping(value = "/assign/delete", method = RequestMethod.DELETE) @ApiOperation(value = "删除分配预习作业", httpMethod = "DELETE") public Response deleteAssign(@RequestParam int id, HttpServletRequest request) { previewAssignService.delete(id); managerLogService.log(request); return ResponseHelp.success(true); } @RequestMapping(value = "/assign/detail", method = RequestMethod.GET) @ApiOperation(value = "获取预习作业", httpMethod = "GET") public Response detailAssign(@RequestParam int id, HttpSession session) { PreviewAssign entity = previewAssignService.get(id); return ResponseHelp.success(entity); } @RequestMapping(value = "/assign/list", method = RequestMethod.GET) @ApiOperation(value = "获取预习作业列表", httpMethod = "GET") public Response> listAssign( @RequestParam(required = false, defaultValue = "1") int page, @RequestParam(required = false, defaultValue = "100") int size, @RequestParam(required = false) Integer paperId, @RequestParam(required = false, defaultValue = "id") String order, @RequestParam(required = false, defaultValue = "desc") String direction, HttpSession session) { Page p = previewAssignService.listAdmin(page, size, paperId, order, DirectionStatus.ValueOf(direction)); return ResponseHelp.success(p, page, size, p.getTotal()); } }