Commit 05a4c8a9 by Wangmin

小程序 交卷

parent a9b4541c
......@@ -4,14 +4,12 @@ import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.R;
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.service.ITestPaperService;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import java.util.Objects;
......@@ -35,12 +33,18 @@ public class TestPaperController extends BaseController {
*
* @return 试卷
*/
@Log(title = "开始开始", businessType = BusinessType.OTHER)
@Log(title = "开始考试", businessType = BusinessType.OTHER)
@GetMapping("/startTest/{paperId}")
public R<TestPaperVo> startTest(@PathVariable("paperId") Long paperId) {
Long userId = getUserId();
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 {
* 校验并批量删除答题记录详情信息
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
boolean saveBatch(Collection<DbTestPaperRecordDetail> collection);
}
package com.ruoyi.school.paper.service;
import com.ruoyi.school.paper.domain.bo.TestPaperAnswerBo;
import com.ruoyi.school.paper.domain.vo.TestPaperVo;
/**
......@@ -21,4 +22,12 @@ public interface ITestPaperService {
*/
TestPaperVo generateTestPaper(Long userId, Long paperId);
/**
* 交卷
*
* @param bo 试题类容
* @return 操作结果
*/
boolean paperTestEnd(TestPaperAnswerBo bo);
}
package com.ruoyi.school.paper.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.core.page.TableDataInfo;
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.toolkit.Wrappers;
import com.ruoyi.school.paper.domain.vo.MyCollectListVo;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import com.ruoyi.school.paper.domain.bo.DbCollectListBo;
......
......@@ -35,7 +35,7 @@ public class DbTestPaperRecordDetailServiceImpl implements IDbTestPaperRecordDet
* 查询答题记录详情
*/
@Override
public DbTestPaperRecordDetailVo queryById(Long id){
public DbTestPaperRecordDetailVo queryById(Long id) {
return baseMapper.selectVoById(id);
}
......@@ -98,7 +98,7 @@ public class DbTestPaperRecordDetailServiceImpl implements IDbTestPaperRecordDet
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(DbTestPaperRecordDetail entity){
private void validEntityBeforeSave(DbTestPaperRecordDetail entity) {
//TODO 做一些数据校验,如唯一约束
}
......@@ -107,9 +107,14 @@ public class DbTestPaperRecordDetailServiceImpl implements IDbTestPaperRecordDet
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
if (isValid) {
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteBatchIds(ids) > 0;
}
@Override
public boolean saveBatch(Collection<DbTestPaperRecordDetail> collection) {
return baseMapper.insertBatch(collection);
}
}
package com.ruoyi.school.paper.service.impl;
import cn.hutool.core.collection.CollUtil;
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.TestPaperAnswerBo;
import com.ruoyi.school.paper.domain.bo.TestPaperAnswerItemBo;
import com.ruoyi.school.paper.domain.vo.DbTestPaperVo;
import com.ruoyi.school.paper.domain.vo.TestPaperVo;
import com.ruoyi.school.paper.domain.vo.TestQuestionsVo;
import com.ruoyi.school.paper.service.IDbQuestionBankTestPaperService;
import com.ruoyi.school.paper.service.IDbTestPaperRecordService;
import com.ruoyi.school.paper.service.IDbTestPaperService;
import com.ruoyi.school.paper.service.ITestPaperService;
import com.ruoyi.school.paper.service.*;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
......@@ -32,6 +34,8 @@ public class TestPaperServiceImpl implements ITestPaperService {
private final IDbQuestionBankTestPaperService bankTestPaperService;
private final IDbTestPaperRecordDetailService paperRecordDetailService;
@Override
@Transactional(rollbackFor = Exception.class)
public TestPaperVo generateTestPaper(Long userId, Long paperId) {
......@@ -55,4 +59,25 @@ public class TestPaperServiceImpl implements ITestPaperService {
result.setQuestions(testPaperQuestion);
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