考试部分接口优化

This commit is contained in:
zhujunjieit 2019-01-17 00:30:13 +08:00
parent 692154150c
commit 429ce3ccae
2 changed files with 118 additions and 105 deletions

View File

@ -1,5 +1,6 @@
package com.ruoyi.exam.controller; package com.ruoyi.exam.controller;
import cn.hutool.core.util.StrUtil;
import com.ruoyi.common.base.AjaxResult; import com.ruoyi.common.base.AjaxResult;
import com.ruoyi.exam.domain.*; import com.ruoyi.exam.domain.*;
import com.ruoyi.exam.service.*; import com.ruoyi.exam.service.*;
@ -49,6 +50,7 @@ public class ApiExaminationController extends BaseController {
/** /**
* 获取考试列表 * 获取考试列表
*
* @param examExamination * @param examExamination
* @return * @return
*/ */
@ -58,25 +60,26 @@ public class ApiExaminationController extends BaseController {
SysUser sysUser = sysUserService.selectUserByLoginName( JwtUtil.getLoginName() ); SysUser sysUser = sysUserService.selectUserByLoginName( JwtUtil.getLoginName() );
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
map.put("ination",examExamination); map.put( "ination", examExamination );
map.put("userId", sysUser.getUserId()); map.put( "userId", sysUser.getUserId() );
List<ExamExamination> list = examExaminationService.selectListFromWeb(map); List<ExamExamination> list = examExaminationService.selectListFromWeb( map );
AjaxResult success = success("查询成功"); AjaxResult success = success( "查询成功" );
success.put("data", list); success.put( "data", list );
return success; return success;
} }
/** /**
* 开始考试 * 开始考试
*
* @param inationId * @param inationId
* @return * @return
*/ */
@GetMapping("/v1/examination/start/{inationId}") @GetMapping("/v1/examination/start/{inationId}")
public AjaxResult start(@PathVariable("inationId") String inationId) { public AjaxResult start(@PathVariable("inationId") String inationId) {
ExamExamination examExamination = examExaminationService.selectById(inationId); ExamExamination examExamination = examExaminationService.selectById( inationId );
SysUser sysUser = sysUserService.selectUserByLoginName( JwtUtil.getLoginName() ); SysUser sysUser = sysUserService.selectUserByLoginName( JwtUtil.getLoginName() );
Integer userId = Integer.parseInt(sysUser.getUserId().toString()); Integer userId = Integer.parseInt( sysUser.getUserId().toString() );
//考试类型 //考试类型
String type = examExamination.getType(); String type = examExamination.getType();
//试卷ID //试卷ID
@ -88,66 +91,68 @@ public class ApiExaminationController extends BaseController {
//考试记录ID //考试记录ID
Integer examUserExaminationId = -1; Integer examUserExaminationId = -1;
ExamUserExamination insert = new ExamUserExamination();
//正式考试 //正式考试
if(type.equals("2")){ if (type.equals( "2" )) {
ExamUserExamination examUserExamination = new ExamUserExamination(); ExamUserExamination examUserExamination = new ExamUserExamination();
examUserExamination.setVipUserId(userId); examUserExamination.setVipUserId( userId );
examUserExamination.setExamPaperId(examPaperId); examUserExamination.setExamPaperId( examPaperId );
examUserExamination.setExamExaminationId(Integer.parseInt(inationId)); examUserExamination.setExamExaminationId( Integer.parseInt( inationId ) );
//考试记录集合 //考试记录集合
List<ExamUserExamination> userExamination = examUserExaminationService.selectLastOne(examUserExamination); List<ExamUserExamination> userExamination = examUserExaminationService.selectLastOne( examUserExamination );
// 最后一次考试 // 最后一次考试
ExamUserExamination last; ExamUserExamination last;
//超过考试次数 //超过考试次数
if(userExamination.size()>=examNumber){ if (userExamination.size() >= examNumber) {
last = userExamination.get(0); last = userExamination.get( 0 );
//最后一次考试已交卷直接返回 //最后一次考试已交卷直接返回
if(last.getUpdateDate()!=null&&!last.getUpdateDate().equals("")){ if (last.getUpdateDate() != null && !last.getUpdateDate().equals( "" )) {
return error(500,"已超过"+examNumber+"次考试,"); return error( 500, "已超过" + examNumber + "次考试," );
}else{ } else {
// 最后一次考试未交卷但超过考试时长,直接返回 // 最后一次考试未交卷但超过考试时长,直接返回
if(last.getCreateDate().getTime()+timeLength*60*1000<new Date().getTime()){ if (last.getCreateDate().getTime() + timeLength * 60 * 1000 < new Date().getTime()) {
return error(500,"已超过"+examNumber+"次考试,"); return error( 500, "已超过" + examNumber + "次考试," );
} }
} }
} }
if(userExamination.size()<=0 //考试次数小于0 if (userExamination.size() <= 0 //考试次数小于0
||userExamination.get(0).getUpdateDate()!=null //最后一次考试已交卷 || userExamination.get( 0 ).getUpdateDate() != null //最后一次考试已交卷
||userExamination.get(0).getCreateDate().getTime()+timeLength*60*1000<new Date().getTime()//最后一次考试已超过考过时长 || userExamination.get( 0 ).getCreateDate().getTime() + timeLength * 60 * 1000 < new Date().getTime()//最后一次考试已超过考过时长
){ ) {
ExamUserExamination insert = new ExamUserExamination(); insert.setExamExaminationId( Integer.parseInt( inationId ) );
insert.setExamExaminationId(Integer.parseInt(inationId)); insert.setVipUserId( userId );
insert.setVipUserId(userId); insert.setCreateDate( new Date() );
insert.setCreateDate(new Date()); insert.setExamPaperId( examPaperId );
insert.setExamPaperId(examPaperId); insert.setDelFlag( "0" );
insert.setDelFlag("0"); insert.setScore( 0 );
insert.setScore(0); examUserExaminationService.insertOne( insert );
examUserExaminationService.insertOne(insert);
examUserExaminationId = insert.getId(); examUserExaminationId = insert.getId();
}else{ } else {
examUserExaminationId = userExamination.get(0).getId(); examUserExaminationId = userExamination.get( 0 ).getId();
} }
} }
List<ExamQuestionVO> list = examPaperService.selectQuestionAndItemByPaperId(examPaperId); List<ExamQuestionVO> list = examPaperService.selectQuestionAndItemByPaperId( examPaperId );
//是否乱序 //是否乱序
if(examExamination.getQuestionDisorder().equals("2")){ if (examExamination.getQuestionDisorder().equals( "2" )) {
Collections.shuffle(list); Collections.shuffle( list );
} }
AjaxResult success = success("查询成功"); AjaxResult success = success( "查询成功" );
success.put("data", list); success.put( "data", list );
success.put("examUserExaminationId",examUserExaminationId); success.put( "examUserExaminationId", examUserExaminationId );
success.put( "examExamination", examExamination );
return success; return success;
} }
/** /**
* 报名列表 * 报名列表
*
* @param examExamination * @param examExamination
* @return * @return
*/ */
@ -156,44 +161,45 @@ public class ApiExaminationController extends BaseController {
SysUser sysUser = sysUserService.selectUserByLoginName( JwtUtil.getLoginName() ); SysUser sysUser = sysUserService.selectUserByLoginName( JwtUtil.getLoginName() );
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
map.put("ination",examExamination); map.put( "ination", examExamination );
map.put("userId",sysUser.getUserId()); map.put( "userId", sysUser.getUserId() );
List<ExamExamination> list = examExaminationService.selectEnterNameListFromWeb(map); List<ExamExamination> list = examExaminationService.selectEnterNameListFromWeb( map );
AjaxResult success = success("查询成功"); AjaxResult success = success( "查询成功" );
success.put("data", list); success.put( "data", list );
return success; return success;
} }
/** /**
* 报名 * 报名
*
* @param sysUser * @param sysUser
* @param inationId * @param inationId
* @return * @return
*/ */
@PostMapping("/v1/examination/entername") @PostMapping("/v1/examination/entername")
public AjaxResult enterName(SysUser sysUser,String inationId) { public AjaxResult enterName(SysUser sysUser, String inationId) {
SysUser user = sysUserService.selectUserByLoginName( JwtUtil.getLoginName() ); SysUser user = sysUserService.selectUserByLoginName( JwtUtil.getLoginName() );
Long userId = user.getUserId(); Long userId = user.getUserId();
sysUser.setUserId(userId); sysUser.setUserId( userId );
sysUserService.updateSelectiveById(sysUser); sysUserService.updateSelectiveById( sysUser );
ExamExaminationUser examExaminationUser = new ExamExaminationUser(); ExamExaminationUser examExaminationUser = new ExamExaminationUser();
examExaminationUser.setVipUserId(Integer.parseInt(userId.toString())); examExaminationUser.setVipUserId( Integer.parseInt( userId.toString() ) );
examExaminationUser.setDelFlag("0"); examExaminationUser.setDelFlag( "0" );
examExaminationUser.setCreateDate(new Date()); examExaminationUser.setCreateDate( new Date() );
examExaminationUser.setCreateBy(user.getLoginName()); examExaminationUser.setCreateBy( user.getLoginName() );
examExaminationUser.setExamExaminationId(Integer.parseInt(inationId)); examExaminationUser.setExamExaminationId( Integer.parseInt( inationId ) );
examExaminationUserService.insertOne(examExaminationUser); examExaminationUserService.insertOne( examExaminationUser );
AjaxResult success = success("报名成功"); AjaxResult success = success( "报名成功" );
return success; return success;
} }
/** /**
* 交卷 * 交卷
*
* @param examUserExaminationQuestion * @param examUserExaminationQuestion
* @param examUserExaminationId * @param examUserExaminationId
* @param examinationId * @param examinationId
@ -202,25 +208,25 @@ public class ApiExaminationController extends BaseController {
*/ */
@PostMapping("/v1/examination/finish/{examUserExaminationId}/{examinationId}/{paperId}") @PostMapping("/v1/examination/finish/{examUserExaminationId}/{examinationId}/{paperId}")
public AjaxResult finish(@RequestBody List<ExamUserExaminationQuestion> examUserExaminationQuestion, public AjaxResult finish(@RequestBody List<ExamUserExaminationQuestion> examUserExaminationQuestion,
@PathVariable Integer examUserExaminationId ,@PathVariable Integer examinationId,@PathVariable Integer paperId) { @PathVariable Integer examUserExaminationId, @PathVariable Integer examinationId, @PathVariable Integer paperId) {
SysUser user = sysUserService.selectUserByLoginName( JwtUtil.getLoginName() ); SysUser user = sysUserService.selectUserByLoginName( JwtUtil.getLoginName() );
Long userId = user.getUserId(); Long userId = user.getUserId();
//交卷后返回的数据 //交卷后返回的数据
ArrayList<Map<String,String>> data = new ArrayList<>(); ArrayList<Map<String, String>> data = new ArrayList<>();
//如果是模拟考试考试记录新增数据 //如果是模拟考试考试记录新增数据
if(examUserExaminationId == -1){ if (examUserExaminationId == -1) {
ExamUserExamination insert = new ExamUserExamination(); ExamUserExamination insert = new ExamUserExamination();
insert.setExamExaminationId(examinationId); insert.setExamExaminationId( examinationId );
insert.setVipUserId(Integer.parseInt(userId.toString())); insert.setVipUserId( Integer.parseInt( userId.toString() ) );
insert.setCreateDate(new Date()); insert.setCreateDate( new Date() );
insert.setExamPaperId(paperId); insert.setExamPaperId( paperId );
insert.setDelFlag("0"); insert.setDelFlag( "0" );
insert.setScore(0); insert.setScore( 0 );
examUserExaminationService.insertOne(insert); examUserExaminationService.insertOne( insert );
examUserExaminationId = insert.getId(); examUserExaminationId = insert.getId();
} }
@ -229,43 +235,48 @@ public class ApiExaminationController extends BaseController {
HashMap<String, String> returnItem = new HashMap<>(); HashMap<String, String> returnItem = new HashMap<>();
String userAnswer = item.getUserAnswer(); String userAnswer = item.getUserAnswer();
//存入用户回答 //存入用户回答
returnItem.put("userAnswer",userAnswer); if (StrUtil.isNotBlank( userAnswer )) {
returnItem.put( "userAnswer", userAnswer );
}
Integer examQuestionId = item.getExamQuestionId(); Integer examQuestionId = item.getExamQuestionId();
ExamQuestion examQuestion = examQuestionService.selectById(examQuestionId); ExamQuestion examQuestion = examQuestionService.selectById( examQuestionId );
//存入正确答案 //存入正确答案
returnItem.put("answer",examQuestion.getAnswer()); if (StrUtil.isNotBlank( examQuestion.getAnswer() )) {
returnItem.put("title",examQuestion.getTitle()); returnItem.put( "answer", examQuestion.getAnswer() );
returnItem.put("rightWrong","错误"); }
if(examQuestion.getAnswer().equals(userAnswer)){ returnItem.put( "title", examQuestion.getTitle() );
returnItem.put( "rightWrong", "错误" );
if (examQuestion.getAnswer().equals( userAnswer )) {
ExamPaperQuestion examPaperQuestion = new ExamPaperQuestion(); ExamPaperQuestion examPaperQuestion = new ExamPaperQuestion();
examPaperQuestion.setExamPaperId(paperId); examPaperQuestion.setExamPaperId( paperId );
examPaperQuestion.setExamQuestionId(examQuestionId); examPaperQuestion.setExamQuestionId( examQuestionId );
score+=examPaperQuestionService.selectExamPaperQuestionList(examPaperQuestion).get(0).getScore(); score += examPaperQuestionService.selectExamPaperQuestionList( examPaperQuestion ).get( 0 ).getScore();
returnItem.put("rightWrong","正确"); returnItem.put( "rightWrong", "正确" );
} }
item.setExamUserExaminationId(examUserExaminationId); item.setExamUserExaminationId( examUserExaminationId );
item.setCreateDate(new Date()); item.setCreateDate( new Date() );
item.setCreateBy(user.getLoginName()); item.setCreateBy( user.getLoginName() );
item.setDelFlag("0"); item.setDelFlag( "0" );
examUserExaminationQuestionService.insertOne(item); item.setId( null );
data.add(returnItem); examUserExaminationQuestionService.insertOne( item );
data.add( returnItem );
} }
ExamUserExamination examUserExamination = examUserExaminationService.selectById(examUserExaminationId); ExamUserExamination examUserExamination = examUserExaminationService.selectById( examUserExaminationId );
examUserExamination.setScore(score); examUserExamination.setScore( score );
examUserExamination.setUpdateDate(new Date()); examUserExamination.setUpdateDate( new Date() );
examUserExamination.setCreateBy(user.getLoginName()); examUserExamination.setCreateBy( user.getLoginName() );
examUserExaminationService.updateOneSelectiveById(examUserExamination); examUserExaminationService.updateOneSelectiveById( examUserExamination );
ExamExamination examExamination = examExaminationService.selectById(examinationId); ExamExamination examExamination = examExaminationService.selectById( examinationId );
String finishedPaper = examExamination.getFinishedPaper(); String finishedPaper = examExamination.getFinishedPaper();
AjaxResult success = success("考试完成"); AjaxResult success = success( "考试完成" );
//考试完成后参数 //考试完成后参数
success.put("finishedPaper",finishedPaper); success.put( "finishedPaper", finishedPaper );
success.put("score",score); success.put( "score", score );
if(!finishedPaper.equals("0")){ if (!finishedPaper.equals( "0" )) {
success.put("data", data); success.put( "data", data );
} }
return success; return success;
} }
@ -273,25 +284,26 @@ public class ApiExaminationController extends BaseController {
/** /**
* 考试记录列表 * 考试记录列表
*
* @param bean * @param bean
* @return * @return
*/ */
@GetMapping("/v1/examination/userexamination/list") @GetMapping("/v1/user/examination/page")
public AjaxResult userexamination(ExamUserExaminationVO bean) { public AjaxResult userexamination(ExamUserExaminationVO bean) {
SysUser sysUser = sysUserService.selectUserByLoginName( JwtUtil.getLoginName() ); SysUser sysUser = sysUserService.selectUserByLoginName( JwtUtil.getLoginName() );
bean.setVipUserId(Integer.parseInt(sysUser.getUserId().toString())); bean.setVipUserId( Integer.parseInt( sysUser.getUserId().toString() ) );
List<ExamUserExaminationVO> data = examUserExaminationService.selectMyExamUserExamination(bean); List<ExamUserExaminationVO> data = examUserExaminationService.selectMyExamUserExamination( bean );
AjaxResult success = success("考试完成"); AjaxResult success = success( "考试完成" );
success.put("data", data); success.put( "data", data );
return success; return success;
} }
@GetMapping("/v1/examination/userexamination/detail/{id}") @GetMapping("/v1/examination/userexamination/detail/{id}")
public AjaxResult detail(@PathVariable Integer id) { public AjaxResult detail(@PathVariable Integer id) {
ExamUserExaminationVO data = examUserExaminationService.selectDetailById(id); ExamUserExaminationVO data = examUserExaminationService.selectDetailById( id );
AjaxResult success = success("考试完成"); AjaxResult success = success( "考试完成" );
success.put("data", data); success.put( "data", data );
return success; return success;
} }

View File

@ -20,6 +20,7 @@
<input id="name" name="name" class="form-control" type="text"> <input id="name" name="name" class="form-control" type="text">
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="col-sm-3 control-label">证书照片:</label> <label class="col-sm-3 control-label">证书照片:</label>
<div class="col-sm-8"> <div class="col-sm-8">