Commit 05a4c8a9 by Wangmin

小程序 交卷

parent a9b4541c
...@@ -4,14 +4,12 @@ import com.ruoyi.common.annotation.Log; ...@@ -4,14 +4,12 @@ import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.school.paper.domain.bo.TestPaperAnswerBo;
import com.ruoyi.school.paper.domain.vo.TestPaperVo; import com.ruoyi.school.paper.domain.vo.TestPaperVo;
import com.ruoyi.school.paper.service.ITestPaperService; import com.ruoyi.school.paper.service.ITestPaperService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Objects; import java.util.Objects;
...@@ -35,12 +33,18 @@ public class TestPaperController extends BaseController { ...@@ -35,12 +33,18 @@ public class TestPaperController extends BaseController {
* *
* @return 试卷 * @return 试卷
*/ */
@Log(title = "开始开始", businessType = BusinessType.OTHER) @Log(title = "开始考试", businessType = BusinessType.OTHER)
@GetMapping("/startTest/{paperId}") @GetMapping("/startTest/{paperId}")
public R<TestPaperVo> startTest(@PathVariable("paperId") Long paperId) { public R<TestPaperVo> startTest(@PathVariable("paperId") Long paperId) {
Long userId = getUserId(); Long userId = getUserId();
Objects.requireNonNull(userId, "未检查到合法账户信息"); Objects.requireNonNull(userId, "未检查到合法账户信息");
return R.ok(testPaperService.generateTestPaper(userId,paperId)); return R.ok(testPaperService.generateTestPaper(userId, paperId));
}
@Log(title = "交卷", businessType = BusinessType.INSERT)
@PostMapping("/endTest/")
public R<Void> paperTestEnd(@RequestBody TestPaperAnswerBo bo) {
return toAjax(testPaperService.paperTestEnd(bo));
} }
......
package com.ruoyi.school.paper.domain.bo;
import com.ruoyi.common.core.validate.AddGroup;
import com.ruoyi.common.core.validate.EditGroup;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
* 试卷答题记录
* <p>created in 2023/7/21 18:59
*
* @author WangMin
* @version 1.0
*/
@Data
public class TestPaperAnswerBo {
/**
* 记录ID
*/
@NotNull(message = "记录id不能为空", groups = { AddGroup.class, EditGroup.class })
private Long recordId;
/**
* 试卷考题答案
*/
private List<TestPaperAnswerItemBo> answers;
}
package com.ruoyi.school.paper.domain.bo;
import com.ruoyi.common.core.validate.AddGroup;
import com.ruoyi.common.core.validate.EditGroup;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
* 答题卷结果单项
* <p>created in 2023/7/21 19:07
*
* @author WangMin
* @version 1.0
*/
@Data
public class TestPaperAnswerItemBo {
/**
* 问题ID
*/
@NotNull(message = "问题id不能为空", groups = { AddGroup.class, EditGroup.class })
private Long id;
/**
* 学生答题内容
*/
private String answer;
}
...@@ -46,4 +46,6 @@ public interface IDbTestPaperRecordDetailService { ...@@ -46,4 +46,6 @@ public interface IDbTestPaperRecordDetailService {
* 校验并批量删除答题记录详情信息 * 校验并批量删除答题记录详情信息
*/ */
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid); Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
boolean saveBatch(Collection<DbTestPaperRecordDetail> collection);
} }
package com.ruoyi.school.paper.service; package com.ruoyi.school.paper.service;
import com.ruoyi.school.paper.domain.bo.TestPaperAnswerBo;
import com.ruoyi.school.paper.domain.vo.TestPaperVo; import com.ruoyi.school.paper.domain.vo.TestPaperVo;
/** /**
...@@ -21,4 +22,12 @@ public interface ITestPaperService { ...@@ -21,4 +22,12 @@ public interface ITestPaperService {
*/ */
TestPaperVo generateTestPaper(Long userId, Long paperId); TestPaperVo generateTestPaper(Long userId, Long paperId);
/**
* 交卷
*
* @param bo 试题类容
* @return 操作结果
*/
boolean paperTestEnd(TestPaperAnswerBo bo);
} }
package com.ruoyi.school.paper.service.impl; package com.ruoyi.school.paper.service.impl;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.core.domain.PageQuery; import com.ruoyi.common.core.domain.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.school.paper.domain.vo.MyCollectListVo;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.ruoyi.school.paper.domain.bo.DbCollectListBo; import com.ruoyi.school.paper.domain.bo.DbCollectListBo;
......
...@@ -35,7 +35,7 @@ public class DbTestPaperRecordDetailServiceImpl implements IDbTestPaperRecordDet ...@@ -35,7 +35,7 @@ public class DbTestPaperRecordDetailServiceImpl implements IDbTestPaperRecordDet
* 查询答题记录详情 * 查询答题记录详情
*/ */
@Override @Override
public DbTestPaperRecordDetailVo queryById(Long id){ public DbTestPaperRecordDetailVo queryById(Long id) {
return baseMapper.selectVoById(id); return baseMapper.selectVoById(id);
} }
...@@ -98,7 +98,7 @@ public class DbTestPaperRecordDetailServiceImpl implements IDbTestPaperRecordDet ...@@ -98,7 +98,7 @@ public class DbTestPaperRecordDetailServiceImpl implements IDbTestPaperRecordDet
/** /**
* 保存前的数据校验 * 保存前的数据校验
*/ */
private void validEntityBeforeSave(DbTestPaperRecordDetail entity){ private void validEntityBeforeSave(DbTestPaperRecordDetail entity) {
//TODO 做一些数据校验,如唯一约束 //TODO 做一些数据校验,如唯一约束
} }
...@@ -107,9 +107,14 @@ public class DbTestPaperRecordDetailServiceImpl implements IDbTestPaperRecordDet ...@@ -107,9 +107,14 @@ public class DbTestPaperRecordDetailServiceImpl implements IDbTestPaperRecordDet
*/ */
@Override @Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) { public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){ if (isValid) {
//TODO 做一些业务上的校验,判断是否需要校验 //TODO 做一些业务上的校验,判断是否需要校验
} }
return baseMapper.deleteBatchIds(ids) > 0; return baseMapper.deleteBatchIds(ids) > 0;
} }
@Override
public boolean saveBatch(Collection<DbTestPaperRecordDetail> collection) {
return baseMapper.insertBatch(collection);
}
} }
package com.ruoyi.school.paper.service.impl; package com.ruoyi.school.paper.service.impl;
import cn.hutool.core.collection.CollUtil;
import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.school.paper.domain.DbTestPaperRecordDetail;
import com.ruoyi.school.paper.domain.bo.DbTestPaperRecordBo; import com.ruoyi.school.paper.domain.bo.DbTestPaperRecordBo;
import com.ruoyi.school.paper.domain.bo.TestPaperAnswerBo;
import com.ruoyi.school.paper.domain.bo.TestPaperAnswerItemBo;
import com.ruoyi.school.paper.domain.vo.DbTestPaperVo; import com.ruoyi.school.paper.domain.vo.DbTestPaperVo;
import com.ruoyi.school.paper.domain.vo.TestPaperVo; import com.ruoyi.school.paper.domain.vo.TestPaperVo;
import com.ruoyi.school.paper.domain.vo.TestQuestionsVo; import com.ruoyi.school.paper.domain.vo.TestQuestionsVo;
import com.ruoyi.school.paper.service.IDbQuestionBankTestPaperService; import com.ruoyi.school.paper.service.*;
import com.ruoyi.school.paper.service.IDbTestPaperRecordService;
import com.ruoyi.school.paper.service.IDbTestPaperService;
import com.ruoyi.school.paper.service.ITestPaperService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
...@@ -32,6 +34,8 @@ public class TestPaperServiceImpl implements ITestPaperService { ...@@ -32,6 +34,8 @@ public class TestPaperServiceImpl implements ITestPaperService {
private final IDbQuestionBankTestPaperService bankTestPaperService; private final IDbQuestionBankTestPaperService bankTestPaperService;
private final IDbTestPaperRecordDetailService paperRecordDetailService;
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public TestPaperVo generateTestPaper(Long userId, Long paperId) { public TestPaperVo generateTestPaper(Long userId, Long paperId) {
...@@ -55,4 +59,25 @@ public class TestPaperServiceImpl implements ITestPaperService { ...@@ -55,4 +59,25 @@ public class TestPaperServiceImpl implements ITestPaperService {
result.setQuestions(testPaperQuestion); result.setQuestions(testPaperQuestion);
return result; return result;
} }
@Override
public boolean paperTestEnd(TestPaperAnswerBo bo) {
List<TestPaperAnswerItemBo> answers = bo.getAnswers();
if (CollUtil.isEmpty(answers)) {
return true;
}
List<DbTestPaperRecordDetail> insertPaperRecords = new ArrayList<>(answers.size());
for (TestPaperAnswerItemBo answer : answers) {
DbTestPaperRecordDetail buffer = new DbTestPaperRecordDetail();
buffer.setRecordId(bo.getRecordId());
buffer.setQuestionBankId(answer.getId());
buffer.setAnswer(answer.getAnswer());
insertPaperRecords.add(buffer);
}
if (CollUtil.isNotEmpty(insertPaperRecords)) {
paperRecordDetailService.saveBatch(insertPaperRecords);
return true;
}
return false;
}
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment