From fdaba78e25c457c48c4581cc84635b63d6363176 Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期五, 07 六月 2024 11:30:06 +0800
Subject: [PATCH] 新增模板及校验
---
src/main/java/com/ycl/jxkg/domain/vo/ExamTemplateVO.java | 3 +
src/main/java/com/ycl/jxkg/controller/admin/ExamTemplateController.java | 11 +++++
src/main/resources/mapper/ExamTemplateMapper.xml | 3 +
src/main/java/com/ycl/jxkg/service/impl/ExamTemplateServiceImpl.java | 63 +++++++++++++++++++++++++++++++
src/main/java/com/ycl/jxkg/domain/entity/ExamTemplate.java | 11 ++++-
src/main/java/com/ycl/jxkg/domain/form/ExamTemplateForm.java | 23 ++++++-----
src/main/java/com/ycl/jxkg/enums/VisibilityEnum.java | 2
7 files changed, 102 insertions(+), 14 deletions(-)
diff --git a/src/main/java/com/ycl/jxkg/controller/admin/ExamTemplateController.java b/src/main/java/com/ycl/jxkg/controller/admin/ExamTemplateController.java
index be8a3ad..e8ebd12 100644
--- a/src/main/java/com/ycl/jxkg/controller/admin/ExamTemplateController.java
+++ b/src/main/java/com/ycl/jxkg/controller/admin/ExamTemplateController.java
@@ -1,10 +1,13 @@
package com.ycl.jxkg.controller.admin;
+import com.ycl.jxkg.base.SystemCode;
import com.ycl.jxkg.group.Update;
import com.ycl.jxkg.group.Add;
import org.springframework.validation.annotation.Validated;
import org.springframework.security.access.prepost.PreAuthorize;
import lombok.RequiredArgsConstructor;
+
+import java.math.BigDecimal;
import java.util.List;
import org.springframework.validation.annotation.Validated;
import javax.validation.constraints.NotEmpty;
@@ -16,6 +19,9 @@
import com.ycl.jxkg.domain.query.ExamTemplateQuery;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
+
+import static com.ycl.jxkg.enums.DeductTypeEnum.EachCorrect;
+import static com.ycl.jxkg.enums.DeductTypeEnum.PartCorrect;
/**
* 闅忔満璇曞嵎妯℃澘 鍓嶇鎺у埗鍣�
@@ -31,10 +37,13 @@
public class ExamTemplateController {
private final ExamTemplateService examTemplateService;
-
@PostMapping
@ApiOperation(value = "娣诲姞", notes = "娣诲姞")
public Result add(@RequestBody @Validated(Add.class) ExamTemplateForm form) {
+ //鍙傛暟鏍¢獙
+ if(form.getDeductType()!=null && (form.getDeductType() ==PartCorrect.getCode() || form.getDeductType() == EachCorrect.getCode()) && (form.getDeductTypeScore() ==null || form.getDeductTypeScore().compareTo(BigDecimal.ZERO) <= 0)){
+ return Result.fail(SystemCode.ParameterValidError.getCode(),"澶氶�夎瘎鍒嗕笉鑳戒负0鎴栫┖");
+ }
return examTemplateService.add(form);
}
diff --git a/src/main/java/com/ycl/jxkg/domain/entity/ExamTemplate.java b/src/main/java/com/ycl/jxkg/domain/entity/ExamTemplate.java
index b3f3ce9..1e31949 100644
--- a/src/main/java/com/ycl/jxkg/domain/entity/ExamTemplate.java
+++ b/src/main/java/com/ycl/jxkg/domain/entity/ExamTemplate.java
@@ -3,9 +3,11 @@
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ycl.jxkg.domain.base.AbsEntity;
+import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
+import java.util.Date;
/**
* 闅忔満璇曞嵎妯℃澘
@@ -29,7 +31,7 @@
@TableField("score")
/** 鎬诲垎 */
- private Integer score;
+ private BigDecimal score;
@TableField("visibility")
/** 鏄惁绉佹湁 */
@@ -42,6 +44,9 @@
@TableField("deduct_type")
/** 澶氶�夋墸鍒嗙被鍨� */
private Integer deductType;
+
+ @TableField("deduct_type_score")
+ private BigDecimal deductTypeScore;
@TableField("single_choice")
/** 鍗曢�夐鏁伴噺 */
@@ -95,5 +100,7 @@
/** */
private Integer createUser;
-
+ @TableField("create_time")
+ /** */
+ private Date createTime;
}
diff --git a/src/main/java/com/ycl/jxkg/domain/form/ExamTemplateForm.java b/src/main/java/com/ycl/jxkg/domain/form/ExamTemplateForm.java
index af2310f..7da12f5 100644
--- a/src/main/java/com/ycl/jxkg/domain/form/ExamTemplateForm.java
+++ b/src/main/java/com/ycl/jxkg/domain/form/ExamTemplateForm.java
@@ -1,20 +1,20 @@
package com.ycl.jxkg.domain.form;
-import com.ycl.jxkg.domain.question.TemplateQuestionDTO;
-import com.ycl.jxkg.group.Update;
-import com.ycl.jxkg.group.Add;
import com.ycl.jxkg.domain.base.AbsForm;
import com.ycl.jxkg.domain.entity.ExamTemplate;
-import org.springframework.beans.BeanUtils;
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotNull;
-import org.springframework.lang.NonNull;
+import com.ycl.jxkg.domain.question.TemplateQuestionDTO;
+import com.ycl.jxkg.group.Add;
+import com.ycl.jxkg.group.Update;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
+import org.springframework.beans.BeanUtils;
+import org.springframework.lang.NonNull;
+import javax.validation.constraints.Min;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
-import java.util.Date;
import java.util.List;
/**
@@ -36,18 +36,21 @@
private Integer subjectId;
@ApiModelProperty("鎬诲垎")
- private Integer score;
+ private BigDecimal score;
@ApiModelProperty("鏄惁绉佹湁")
private String visibility;
- @NotNull(message = "寤鸿鏃堕棿涓嶈兘涓虹┖", groups = {Add.class, Update.class})
+ @Min(value = 1,message = "寤鸿鏃堕棿蹇呴』澶т簬0",groups = {Add.class, Update.class})
@ApiModelProperty("寤鸿鏃堕棿")
private Integer suggestTime;
@ApiModelProperty("澶氶�夋墸鍒嗙被鍨�")
private Integer deductType;
+ @ApiModelProperty("澶氶�夋墸鍒�")
+ private BigDecimal deductTypeScore;
+
@ApiModelProperty("棰樼洰妯℃澘")
private List<TemplateQuestionDTO> questionList;
diff --git a/src/main/java/com/ycl/jxkg/domain/vo/ExamTemplateVO.java b/src/main/java/com/ycl/jxkg/domain/vo/ExamTemplateVO.java
index 112047e..b887805 100644
--- a/src/main/java/com/ycl/jxkg/domain/vo/ExamTemplateVO.java
+++ b/src/main/java/com/ycl/jxkg/domain/vo/ExamTemplateVO.java
@@ -39,6 +39,9 @@
/** 澶氶�夋墸鍒嗙被鍨� */
private Integer deductType;
+ /** 澶氶�夎瘎鍒� */
+ private BigDecimal deductTypeScore;
+
/** 鍗曢�夐鏁伴噺 */
private Integer singleChoice;
diff --git a/src/main/java/com/ycl/jxkg/enums/VisibilityEnum.java b/src/main/java/com/ycl/jxkg/enums/VisibilityEnum.java
index d5bea92..8007bf7 100644
--- a/src/main/java/com/ycl/jxkg/enums/VisibilityEnum.java
+++ b/src/main/java/com/ycl/jxkg/enums/VisibilityEnum.java
@@ -1,4 +1,4 @@
-package com.ycl.jxkg.domain.enums;
+package com.ycl.jxkg.enums;
import java.util.HashMap;
import java.util.Map;
diff --git a/src/main/java/com/ycl/jxkg/service/impl/ExamTemplateServiceImpl.java b/src/main/java/com/ycl/jxkg/service/impl/ExamTemplateServiceImpl.java
index 20bea45..d682060 100644
--- a/src/main/java/com/ycl/jxkg/service/impl/ExamTemplateServiceImpl.java
+++ b/src/main/java/com/ycl/jxkg/service/impl/ExamTemplateServiceImpl.java
@@ -1,7 +1,12 @@
package com.ycl.jxkg.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.ycl.jxkg.context.WebContext;
import com.ycl.jxkg.domain.entity.ExamTemplate;
+import com.ycl.jxkg.domain.entity.User;
+import com.ycl.jxkg.domain.question.TemplateQuestionDTO;
+import com.ycl.jxkg.enums.QuestionTypeEnum;
+import com.ycl.jxkg.enums.VisibilityEnum;
import com.ycl.jxkg.mapper.ExamTemplateMapper;
import com.ycl.jxkg.service.ExamTemplateService;
import com.ycl.jxkg.base.Result;
@@ -9,12 +14,21 @@
import com.ycl.jxkg.domain.form.ExamTemplateForm;
import com.ycl.jxkg.domain.vo.ExamTemplateVO;
import com.ycl.jxkg.domain.query.ExamTemplateQuery;
+import io.swagger.models.auth.In;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.core.context.SecurityContext;
+import org.springframework.security.core.context.SecurityContextHolder;
+import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.stereotype.Service;
import lombok.RequiredArgsConstructor;
import com.ycl.jxkg.utils.PageUtil;
import org.springframework.beans.BeanUtils;
import org.springframework.util.Assert;
+import org.springframework.util.StringUtils;
+import java.math.BigDecimal;
+import java.security.Security;
+import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
@@ -28,6 +42,9 @@
@RequiredArgsConstructor
public class ExamTemplateServiceImpl extends ServiceImpl<ExamTemplateMapper, ExamTemplate> implements ExamTemplateService {
+ @Autowired
+ protected WebContext webContext;
+
private final ExamTemplateMapper examTemplateMapper;
/**
@@ -38,6 +55,52 @@
@Override
public Result add(ExamTemplateForm form) {
ExamTemplate entity = ExamTemplateForm.getEntityByForm(form, null);
+ User currentUser = webContext.getCurrentUser();
+ entity.setCreateUser(currentUser.getId());
+ entity.setCreateTime(new Date());
+ if(!StringUtils.isEmpty(entity.getVisibility())) {
+ entity.setVisibility(VisibilityEnum.fromCode(Integer.parseInt(entity.getVisibility())).getName());
+ }
+ List<TemplateQuestionDTO> questionList = form.getQuestionList();
+ BigDecimal score = BigDecimal.ZERO;
+ //璁剧疆棰樼洰淇℃伅
+ for (TemplateQuestionDTO dto : questionList) {
+ score = score.add(dto.getScore().multiply(BigDecimal.valueOf(dto.getNum())));
+ Integer questionType = dto.getQuestionType();
+ switch (QuestionTypeEnum.fromCode(questionType)){
+ //鍗曢��
+ case SingleChoice:
+ entity.setSingleChoice(dto.getNum());
+ entity.setSingleScore(dto.getScore());
+ break;
+ //澶氶��
+ case MultipleChoice:
+ entity.setMultipleChoice(dto.getNum());
+ entity.setMultipleScore(dto.getScore());
+ break;
+ //鍒ゆ柇
+ case TrueFalse:
+ entity.setTrueFalse(dto.getNum());
+ entity.setTrueFalseScore(dto.getScore());
+ break;
+ //濉┖
+ case GapFilling:
+ entity.setGapFilling(dto.getNum());
+ entity.setGapScore(dto.getScore());
+ break;
+ //绠�绛�
+ case ShortAnswer:
+ entity.setShortAnswer(dto.getNum());
+ entity.setShortAnswerScore(dto.getScore());
+ break;
+ //璁$畻
+ case Calculation:
+ entity.setCalculation(dto.getNum());
+ entity.setCalculationScore(dto.getScore());
+ break;
+ }
+ }
+ entity.setScore(score);
baseMapper.insert(entity);
return Result.ok("娣诲姞鎴愬姛");
}
diff --git a/src/main/resources/mapper/ExamTemplateMapper.xml b/src/main/resources/mapper/ExamTemplateMapper.xml
index a2ca3f5..31a41a8 100644
--- a/src/main/resources/mapper/ExamTemplateMapper.xml
+++ b/src/main/resources/mapper/ExamTemplateMapper.xml
@@ -10,6 +10,7 @@
<result column="visibility" property="visibility" />
<result column="suggest_time" property="suggestTime" />
<result column="deduct_type" property="deductType" />
+ <result column="deduct_type_score" property="deductTypeScore" />
<result column="single_choice" property="singleChoice" />
<result column="multiple_choice" property="multipleChoice" />
<result column="gap_filling" property="gapFilling" />
@@ -40,6 +41,7 @@
TET.visibility,
TET.suggest_time,
TET.deduct_type,
+ TET.deduct_type_score,
TET.single_choice,
TET.multiple_choice,
TET.gap_filling,
@@ -70,6 +72,7 @@
TET.visibility,
TET.suggest_time,
TET.deduct_type,
+ TET.deduct_type_score,
TET.single_choice,
TET.multiple_choice,
TET.gap_filling,
--
Gitblit v1.8.0