package cn.com.qmth.scancentral.controller.admin; import java.util.HashMap; import java.util.Map; import javax.annotation.Resource; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.task.AsyncTaskExecutor; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import com.qmth.boot.api.annotation.Aac; import com.qmth.boot.api.constant.ApiConstant; import com.qmth.boot.core.collection.PageResult; import com.qmth.boot.core.concurrent.service.ConcurrentService; import cn.com.qmth.scancentral.bean.ExamConfigDomain; import cn.com.qmth.scancentral.bean.SubjectConfigDomain; import cn.com.qmth.scancentral.bean.User; import cn.com.qmth.scancentral.controller.BaseController; import cn.com.qmth.scancentral.entity.ExamEntity; import cn.com.qmth.scancentral.exception.ParameterExceptions; import cn.com.qmth.scancentral.service.ExamService; import cn.com.qmth.scancentral.service.StudentService; import cn.com.qmth.scancentral.service.SubjectService; import cn.com.qmth.scancentral.vo.ExamConfigVo; import cn.com.qmth.scancentral.vo.ExamUploadVo; import cn.com.qmth.scancentral.vo.ExamVo; import cn.com.qmth.scancentral.vo.SubjectConfigVo; import cn.com.qmth.scancentral.vo.examinfo.ExamInfoVo; import cn.com.qmth.scancentral.vo.examinfo.ExamQuery; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import net.sf.json.JSONObject; @RestController @Api(tags = "考试接口") @RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + "/admin/exam") @Aac(strict = false, auth = true) public class ExamController extends BaseController { @Autowired private ExamService examService; @Autowired private StudentService studentService; @Autowired private SubjectService subjectService; @ApiOperation(value = "获取考试详情") @RequestMapping(value = "/info", method = RequestMethod.POST) public ExamInfoVo info(@RequestParam Long id) { User user = getAccessUser(); return examService.getExamInfoVo(id, user); } @ApiOperation(value = "获取考试列表") @RequestMapping(value = "/list", method = RequestMethod.POST) public PageResult list(ExamQuery query) { User user = getAccessUser(); return examService.pageQuery(query, user); } @ApiOperation(value = "启用/关闭考试") @RequestMapping(value = "/toggle", method = RequestMethod.POST) public JSONObject enable(@RequestParam Long id, @RequestParam Boolean enable) { User user = getAccessUser(); JSONObject result = new JSONObject(); ExamEntity exam = examService.getById(id); if (exam == null) { throw ParameterExceptions.EXAM_NOT_FOUND; } exam.setEnable(enable); exam.setUpdaterId(user.getId()); exam.setUpdateTime(System.currentTimeMillis()); examService.saveOrUpdate(exam); result.accumulate("enable", enable); result.accumulate("updateTime", exam.getUpdateTime()); return result; } @ApiOperation(value = "修改考试参数") @RequestMapping(value = "/config", method = RequestMethod.POST) public ExamConfigVo config(@Validated ExamConfigDomain domain) { User user = getAccessUser(); return examService.config(user, domain); } @ApiOperation(value = "修改考试上传状态") @RequestMapping(value = "/upload", method = RequestMethod.POST) public ExamUploadVo upload(@RequestParam Long id, @RequestParam Boolean enable) { User user = getAccessUser(); ExamUploadVo vo = new ExamUploadVo(); ExamEntity exam = examService.getById(id); if (exam == null) { throw ParameterExceptions.EXAM_NOT_FOUND; } exam.setEnableUpload(enable); examService.saveOrUpdate(exam); vo.setEnable(exam.getEnableUpload()); vo.setUpdateTime(exam.getUpdateTime()); vo.setProgress(studentService.getUploadProgress(id)); return vo; } @ApiOperation(value = "修改考试科目参数") @RequestMapping(value = "/subject/config", method = RequestMethod.POST) public SubjectConfigVo subjectConfig(@Validated SubjectConfigDomain domain) { User user = getAccessUser(); return subjectService.config(user, domain); } @ApiOperation(value = "修改考试实时审核状态") @RequestMapping(value = "/syncVerify", method = RequestMethod.POST) public Map syncVerify(@RequestParam Long examId, @RequestParam Boolean enable) { User user = getAccessUser(); ExamEntity exam = examService.updateEnableSyncVerify(user,examId, enable); Map result = new HashMap(); result.put("enable", enable); result.put("updateTime", exam.getUpdateTime()); return result; } }