package com.ycl.jxkg.controller.admin; import com.github.pagehelper.PageInfo; import com.ycl.jxkg.base.BaseApiController; import com.ycl.jxkg.base.Result; import com.ycl.jxkg.base.SystemCode; import com.ycl.jxkg.domain.question.QuestionObject; import com.ycl.jxkg.domain.vo.admin.question.QuestionEditRequestVO; import com.ycl.jxkg.domain.vo.admin.question.QuestionPageRequestVO; import com.ycl.jxkg.domain.vo.admin.question.QuestionResponseVO; import com.ycl.jxkg.enums.QuestionTypeEnum; import com.ycl.jxkg.service.QuestionService; import com.ycl.jxkg.utils.ErrorUtil; import com.ycl.jxkg.utils.HtmlUtil; import com.ycl.jxkg.utils.JsonUtil; import com.ycl.jxkg.utils.PageInfoHelper; import lombok.RequiredArgsConstructor; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; @RequiredArgsConstructor @RestController("AdminQuestionController") @RequestMapping(value = "/api/admin/question") public class QuestionController extends BaseApiController { private final QuestionService questionService; @RequestMapping(value = "/page", method = RequestMethod.POST) public Result> pageList(@RequestBody QuestionPageRequestVO model) { PageInfo pageInfo = questionService.page(model); PageInfo page = PageInfoHelper.copyMap(pageInfo, q -> { QuestionResponseVO vo = new QuestionResponseVO(); BeanUtils.copyProperties(q, vo); QuestionObject questionObject = JsonUtil.toJsonObject(q.getContent(), QuestionObject.class); String clearHtml = HtmlUtil.clear(questionObject.getTitleContent()); vo.setShortTitle(clearHtml); return vo; }); return Result.ok(page); } @RequestMapping(value = "/edit", method = RequestMethod.POST) public Result edit(@RequestBody @Valid QuestionEditRequestVO model) { Result validQuestionEditRequestResult = validQuestionEditRequestVM(model); if (validQuestionEditRequestResult.getCode() != SystemCode.OK.getCode()) { return validQuestionEditRequestResult; } if (null == model.getId()) { questionService.insertFullQuestion(model, getCurrentUser().getId()); } else { questionService.updateFullQuestion(model); } return Result.ok(); } @RequestMapping(value = "/select/{id}", method = RequestMethod.POST) public Result select(@PathVariable Integer id) { QuestionEditRequestVO newVM = questionService.getQuestionEditRequestVM(id); return Result.ok(newVM); } @RequestMapping(value = "/delete/{id}", method = RequestMethod.POST) public Result delete(@PathVariable Integer id) { questionService.removeById(id); return Result.ok(); } private Result validQuestionEditRequestVM(QuestionEditRequestVO model) { int qType = model.getQuestionType().intValue(); boolean requireCorrect = qType == QuestionTypeEnum.SingleChoice.getCode() || qType == QuestionTypeEnum.TrueFalse.getCode(); if (requireCorrect) { if (StringUtils.isBlank(model.getCorrect())) { String errorMsg = ErrorUtil.parameterErrorFormat("correct", "不能为空"); return new Result<>(SystemCode.ParameterValidError.getCode(), errorMsg); } } return Result.ok(); } @PostMapping(value = "/status") public Result status(@RequestBody QuestionResponseVO question) { questionService.updateStatus(question); return Result.ok("操作成功"); } @GetMapping("/download/importTemplate") public void importTemplate(HttpServletResponse response) { questionService.importTemplate(response); } @PostMapping("/import") public Result importPaper(MultipartFile file) { return questionService.importQuestion(file); } }