Browse Source

bug修复

master
luogw 7 days ago
parent
commit
45df06887a
  1. 4
      src/main/java/com/project/appeal/domain/service/Impl/CheckAppealDomainServiceImpl.java
  2. 49
      src/main/java/com/project/appeal/domain/service/Impl/SaveAppealDomainServiceImpl.java
  3. 11
      src/main/java/com/project/exam/mapper/ExamRecordMapper.java

4
src/main/java/com/project/appeal/domain/service/Impl/CheckAppealDomainServiceImpl.java

@ -51,8 +51,8 @@ public class CheckAppealDomainServiceImpl implements CheckAppealDomainService {
QueryWrapper<AppealEntity> entityQueryWrapper = new QueryWrapper<>();
entityQueryWrapper.eq("exam_id", appealDTO.getExamId());
entityQueryWrapper.eq("question_id", appealDTO.getQuestionId());
AppealEntity appeal = appealBaseService.getOne(entityQueryWrapper);
if(appeal != null){
long count = appealBaseService.count(entityQueryWrapper);
if(count > 0){
throw new BusinessErrorException("题目已申诉");
}
}

49
src/main/java/com/project/appeal/domain/service/Impl/SaveAppealDomainServiceImpl.java

@ -65,20 +65,11 @@ public class SaveAppealDomainServiceImpl implements SaveAppealDomainService {
appealBaseService.saveOrUpdate(entity);
appealDTO = appealBaseService.getById(entity.getId()).toDTO(AppealDTO::new);
//如果审核通过,需要为用户加分
if (!appealDTO.getStatus().equals(AppealStatusEnum.PASS_REVIEW.getValue())) {
//审核拒绝,发送工作通知消息,告知用户
if (appealDTO.getStatus().equals(AppealStatusEnum.REFUSE_REVIEW.getValue())) {
dingUtil.sendWorkNotice(appealDTO);
}
return Result.success(appealDTO);
}
ExamRecordEntity examRecord = examRecordMapper.selectById(appealDTO.getExamId());
if (examRecord == null){
throw new BusinessErrorException("用户未该场考试");
}
//找到题目相关信息,获取该类型题目分数
//找到题目相关信息
ExamRecordDTO examRecordDTO = examRecord.toDTO(ExamRecordDTO::new);
List<ExamRecordDTO.QuestionSnapshotDTO> answerSnapshotDTOList = examRecordDTO.getAnswerSnapshotDTOList();
ExamRecordDTO.QuestionSnapshotDTO questionSnapshotDTO = null;
@ -98,11 +89,33 @@ public class SaveAppealDomainServiceImpl implements SaveAppealDomainService {
throw new BusinessErrorException("题目不存在");
}
TaskEntity taskEntity = taskMapper.getTaskByTaskUserId(examRecord.getTaskUserId());
appealDTO.setQuestionContent(questionSnapshotDTO.getQuestionContent());
if (appealDTO.getStatus().equals(AppealStatusEnum.PENDING_REVIEW.getValue())) {
//更新申诉状态
examRecordMapper.updateHasAppealed(index, examRecordDTO.getId());
}else if(appealDTO.getStatus().equals(AppealStatusEnum.PASS_REVIEW.getValue())){
//审批通过需要加分
calculateScore(appealDTO, examRecordDTO, questionSnapshotDTO.getType());
return Result.success(appealDTO);
}
//通知用户
dingUtil.sendWorkNotice(appealDTO);
return Result.success(appealDTO);
}
QuestionTypeEnum questionType = QuestionTypeEnum.findByValue(questionSnapshotDTO.getType());
/**
* 计算分数审批通过需要加分
*/
public void calculateScore(AppealDTO appealDTO, ExamRecordDTO examRecordDTO,int type) {
//审批通过需要加分
TaskEntity taskEntity = taskMapper.getTaskByTaskUserId(examRecordDTO.getTaskUserId());
QuestionTypeEnum questionType = QuestionTypeEnum.findByValue(type);
if (questionType == null) {
throw new BusinessErrorException("不支持的题目类型:" + questionSnapshotDTO.getType());
throw new BusinessErrorException("不支持的题目类型:" + type);
}
Double questionScore = switch (questionType) {
case SINGLE_CHOICE-> taskEntity.getSingleChoiceScore();
@ -126,11 +139,11 @@ public class SaveAppealDomainServiceImpl implements SaveAppealDomainService {
);
}
//保存
examRecordMapper.updateScore(index,score.doubleValue(),examRecord.getId());
//通知用户
dingUtil.sendWorkNotice(appealDTO);
if(score.compareTo(new BigDecimal(100)) > 0){
score = new BigDecimal(100);
};
return Result.success(appealDTO);
//保存
examRecordMapper.updateScore(score.doubleValue(),examRecordDTO.getId());
}
}

11
src/main/java/com/project/exam/mapper/ExamRecordMapper.java

@ -21,11 +21,16 @@ public interface ExamRecordMapper extends BaseMapper<ExamRecordEntity> {
@Param("answer") String answer);
@Update("UPDATE evaluator_exam_record SET " +
"answer_snapshot = JSON_SET(answer_snapshot, '$[${index}].hasAppealed', true), " +
"score = #{score}, " +
"update_time = NOW() " +
"WHERE id = #{id}")
void updateScore(@Param("index") int index,
@Param("score") double score,
void updateScore(@Param("score") double score,
@Param("id") Long id);
@Update("UPDATE evaluator_exam_record SET " +
"answer_snapshot = JSON_SET(answer_snapshot, '$[${index}].hasAppealed', true), " +
"update_time = NOW() " +
"WHERE id = #{id}")
void updateHasAppealed(@Param("index") int index,
@Param("id") Long id);
}

Loading…
Cancel
Save