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.service.QuestionService;
|
import com.ycl.jxkg.enums.QuestionTypeEnum;
|
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 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<PageInfo<QuestionResponseVO>> pageList(@RequestBody QuestionPageRequestVO model) {
|
PageInfo<QuestionResponseVO> pageInfo = questionService.page(model);
|
PageInfo<QuestionResponseVO> 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<QuestionEditRequestVO> 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<String> status(@RequestBody QuestionResponseVO question) {
|
questionService.updateStatus(question);
|
return Result.ok("操作成功");
|
}
|
|
}
|