瀏覽代碼

Merge branch 'feat-quiz' into temp-pre

shc 1 年之前
父節點
當前提交
38baa64afa

+ 11 - 10
db/10wm_quiz_item.sql

@@ -9,16 +9,17 @@ SET FOREIGN_KEY_CHECKS = 0;
 DROP TABLE IF EXISTS `wm_quiz_item`;
 CREATE TABLE `wm_quiz_item`
 (
-    `item_id`     INT AUTO_INCREMENT COMMENT 'Id',
-    `quiz_sn`     VARCHAR(64)  NOT NULL COMMENT '试卷序号',
-    `label`       VARCHAR(64)  NOT NULL COMMENT '标题',
-    `options`     JSON COMMENT '选项',
-    `answer`      VARCHAR(255) NULL COMMENT '答案',
-    `widget`      BIGINT       NOT NULL COMMENT '排序权重',
-    `create_by`   VARCHAR(64)  NOT NULL COMMENT '创建人',
-    `update_by`   VARCHAR(64)  NOT NULL COMMENT '修改人',
-    `create_time` DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
-    `update_time` DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
+    `item_id`      INT AUTO_INCREMENT COMMENT 'Id',
+    `quiz_sn`      VARCHAR(64)  NOT NULL COMMENT '试卷序号',
+    `label`        VARCHAR(64)  NOT NULL COMMENT '标题',
+    `quiz_options` JSON COMMENT '选项',
+    `answer`       VARCHAR(255) NULL COMMENT '答案',
+    `widget`       BIGINT       NOT NULL COMMENT '排序权重',
+    `mark`         INT          NOT NULL DEFAULT 0 COMMENT '分数',
+    `create_by`    VARCHAR(64)  NOT NULL COMMENT '创建人',
+    `update_by`    VARCHAR(64)  NOT NULL COMMENT '修改人',
+    `create_time`  DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+    `update_time`  DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
     PRIMARY KEY `pk_id` (`item_id`) USING BTREE,
     INDEX `idx_quiz_sn` (`quiz_sn`) USING BTREE
 ) ENGINE = InnoDB

+ 14 - 7
hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/dto/WmQuizDTO.java

@@ -1,12 +1,6 @@
 package com.qunzhixinxi.hnqz.admin.api.dto;
 
-import com.baomidou.mybatisplus.annotation.FieldFill;
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
 import com.qunzhixinxi.hnqz.admin.api.entity.WmQuestion;
-import com.qunzhixinxi.hnqz.admin.api.entity.WmQuiz;
 import com.qunzhixinxi.hnqz.common.core.constant.enums.UpmsState;
 import com.qunzhixinxi.hnqz.common.core.constant.enums.UpmsType;
 import lombok.AccessLevel;
@@ -15,10 +9,10 @@ import lombok.NoArgsConstructor;
 import org.hibernate.validator.constraints.Length;
 
 import javax.validation.Valid;
+import javax.validation.constraints.Min;
 import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotEmpty;
 import javax.validation.constraints.NotNull;
-import java.time.LocalDateTime;
 
 /**
  * 试卷dto
@@ -86,6 +80,10 @@ public final class WmQuizDTO {
 
 		@NotNull(message = "排序权重必填")
 		private Long widget;
+
+		@NotNull(message = "分数必填")
+		@Min(value = 0, message = "分数最小为{value}")
+		private Integer mark;
 	}
 
 	@Data
@@ -101,6 +99,9 @@ public final class WmQuizDTO {
 		private String answer;
 
 		private Long widget;
+
+		@Min(value = 0, message = "分数最小为{value}")
+		private Integer mark;
 	}
 
 	@Data
@@ -141,4 +142,10 @@ public final class WmQuizDTO {
 
 	}
 
+	@Data
+	public static class OnQuestionDel {
+		@NotNull(message = "试题ID必填")
+		private Integer questionId;
+	}
+
 }

+ 3 - 1
hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/entity/WmQuizItem.java

@@ -29,13 +29,15 @@ public final class WmQuizItem {
 
 	private String label;
 
-	@TableField(typeHandler = JacksonTypeHandler.class)
+	@TableField(value = "quiz_options", typeHandler = JacksonTypeHandler.class)
 	private WmQuestion.Option[] options;
 
 	private String answer;
 
 	private Long widget;
 
+	private Integer mark;
+
 	/**
 	 * 创建人
 	 */

+ 14 - 1
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/WmQuizController.java

@@ -372,7 +372,7 @@ public class WmQuizController {
 	 */
 	@SysLog("更新试题")
 	@PostMapping(value = "/quiz/question/update")
-	public R<Boolean> updateQuizItem(@Valid @RequestBody WmQuizDTO.OnQuestionUpdate resource) {
+	public R<Boolean> updateQuestion(@Valid @RequestBody WmQuizDTO.OnQuestionUpdate resource) {
 
 		HnqzUser operator = SecurityUtils.getUser();
 		Boolean passed = questionService.checkQuestion(operator, resource.getLabel(), resource.getQuestionId());
@@ -386,4 +386,17 @@ public class WmQuizController {
 
 	}
 
+	/**
+	 * 删除问题
+	 *
+	 * @param resource 问题信息
+	 * @return 删除结果
+	 */
+	@SysLog(value = "删除问题")
+	@PostMapping(value = "/quiz/question/del")
+	public R<Boolean> deleteQuestion(@Valid @RequestBody WmQuizDTO.OnQuestionDel resource) {
+		Boolean deleted = questionService.deleteQuestion(resource);
+		return deleted ? R.ok(true, "删除试题成功") : R.failed(false, "删除试题失败");
+	}
+
 }

+ 7 - 1
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/WmQuestionService.java

@@ -62,5 +62,11 @@ public interface WmQuestionService extends IService<WmQuestion> {
 	 */
 	WmQuestion getQuestionDetails(Integer itemId, String sn);
 
-
+	/**
+	 * 删除试题
+	 *
+	 * @param resource 试题信息
+	 * @return 删除结果
+	 */
+	Boolean deleteQuestion(WmQuizDTO.OnQuestionDel resource);
 }

+ 12 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmQuestionServiceImpl.java

@@ -144,4 +144,16 @@ public class WmQuestionServiceImpl extends ServiceImpl<WmQuestionMapper, WmQuest
 			return null;
 		}
 	}
+
+	/**
+	 * 删除试题
+	 *
+	 * @param resource 试题信息
+	 * @return 删除结果
+	 */
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public Boolean deleteQuestion(WmQuizDTO.OnQuestionDel resource) {
+		return this.removeById(resource.getQuestionId());
+	}
 }

+ 7 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmQuizItemServiceImpl.java

@@ -74,6 +74,10 @@ public class WmQuizItemServiceImpl extends ServiceImpl<WmQuizItemMapper, WmQuizI
 			quizItem.setOptions(item.getOptions());
 			quizItem.setAnswer(item.getAnswer());
 			quizItem.setWidget(item.getWidget());
+
+			int mark = item.getMark() == null ? 0 : item.getMark();
+
+			quizItem.setMark(mark);
 			String username = user.getUsername();
 			quizItem.setCreateBy(username);
 			quizItem.setUpdateBy(username);
@@ -120,6 +124,9 @@ public class WmQuizItemServiceImpl extends ServiceImpl<WmQuizItemMapper, WmQuizI
 			quizItem.setWidget(resource.getWidget());
 		}
 
+		if (resource.getMark() != null){
+			quizItem.setMark(resource.getMark());
+		}
 
 		return this.updateById(quizItem);
 	}