فهرست منبع

feat: quiz item to question

shc 1 سال پیش
والد
کامیت
d1294655db

+ 29 - 0
db/11wm_quiz_item.sql

@@ -0,0 +1,29 @@
+USE `hnqzx`;
+
+SET NAMES utf8mb4;
+SET FOREIGN_KEY_CHECKS = 0;
+
+-- ----------------------------
+-- Table structure for wm_question
+-- ----------------------------
+DROP TABLE IF EXISTS `wm_question`;
+CREATE TABLE `wm_question`
+(
+    `qst_id`      INT AUTO_INCREMENT COMMENT 'Id',
+    `serial_num`  VARCHAR(64)  NOT NULL COMMENT '序列号',
+    `label`       VARCHAR(64)  NOT NULL COMMENT '标题',
+    `options`     JSON COMMENT '选项',
+    `answer`      VARCHAR(255) NULL COMMENT '答案',
+    `ent_id`      INT UNSIGNED 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 '更新时间',
+    PRIMARY KEY `pk_id` (`qst_id`) USING BTREE,
+    UNIQUE KEY `uk_sn` (`serial_num`) USING BTREE,
+    INDEX `idx_eid` (`ent_id`) USING BTREE
+) ENGINE = InnoDB
+    COMMENT ='试题表';
+
+
+SET FOREIGN_KEY_CHECKS = 1;

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

@@ -1,6 +1,6 @@
 package com.qunzhixinxi.hnqz.admin.api.dto;
 
-import com.qunzhixinxi.hnqz.admin.api.entity.WmQuizItem;
+import com.qunzhixinxi.hnqz.admin.api.entity.WmQuestion;
 import lombok.AccessLevel;
 import lombok.Data;
 import lombok.NoArgsConstructor;
@@ -22,14 +22,14 @@ import javax.validation.constraints.NotNull;
 public final class WmQuizDTO {
 
 	@Data
-	public static class OnItemCreate {
+	public static class OnQuestionCreate {
 		@NotBlank(message = "试题标题必填")
 		@Length(max = 64, message = "试卷标题最多{max}个字符")
 		private String label;
 
 		@Valid
 		@NotEmpty(message = "试题选项必填")
-		private WmQuizItem.Option[] options;
+		private WmQuestion.Option[] options;
 
 		@NotBlank(message = "试题答案必填")
 		@Length(max = 255, message = "试卷标题最多{max}个字符")
@@ -38,14 +38,14 @@ public final class WmQuizDTO {
 	}
 
 	@Data
-	public static class OnItemUpdate {
+	public static class OnQuestionUpdate {
 
 		@NotNull(message = "试题ID必填")
-		private Integer itemId;
+		private Integer questionId;
 
 		private String label;
 
-		private WmQuizItem.Option[] options;
+		private WmQuestion.Option[] options;
 
 		private String answer;
 

+ 86 - 0
hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/entity/WmQuestion.java

@@ -0,0 +1,86 @@
+package com.qunzhixinxi.hnqz.admin.api.entity;
+
+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.annotation.TableName;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import java.time.LocalDateTime;
+
+/**
+ * 试题实体
+ *
+ * @author jimmy
+ * @version 1.0.0
+ * @date 2023-10-16 14:58
+ */
+@Data
+@TableName(value = "wm_question", autoResultMap = true)
+public final class WmQuestion {
+
+	@TableId(value = "qst_id", type = IdType.AUTO)
+	private Integer questionId;
+
+	@TableField(value = "serial_num")
+	private String serialNumber;
+
+	private String label;
+
+	private Option[] options;
+
+	private String answer;
+
+	@TableField(value = "ent_id")
+	private Integer enterpriseId;
+
+	/**
+	 * 创建人
+	 */
+	@TableField(fill = FieldFill.INSERT)
+	private String createBy;
+
+	/**
+	 * 修改人
+	 */
+	@TableField(fill = FieldFill.INSERT_UPDATE)
+	private String updateBy;
+
+	/**
+	 * 创建时间
+	 */
+	@TableField(fill = FieldFill.INSERT)
+	private LocalDateTime createTime;
+
+	/**
+	 * 修改时间
+	 */
+	@TableField(fill = FieldFill.INSERT_UPDATE)
+	private LocalDateTime updateTime;
+
+	/**
+	 * 选项实体
+	 *
+	 * @author jimmy
+	 * @version 1.0.0
+	 * @date 2023-10-16 15:13
+	 */
+	@Data
+	public static class Option {
+
+		/**
+		 * 选项编号
+		 */
+		@NotBlank(message = "选项编号必填")
+		private String no;
+
+		/**
+		 * 选项文本
+		 */
+		@NotBlank(message = "选项文本必填")
+		private String text;
+
+	}
+}

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

@@ -64,7 +64,7 @@ public final class WmQuiz {
 	private Integer enterpriseId;
 
 	@TableField(value = "quiz_item", typeHandler = JacksonTypeHandler.class)
-	private WmQuizItem[] items;
+	private WmQuizItem1[] items;
 
 	@TableField(value = "quiz_expand", typeHandler = JacksonTypeHandler.class)
 	private Expand expand;

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

@@ -19,7 +19,7 @@ import java.time.LocalDateTime;
  */
 @Data
 @TableName(value = "wm_quiz_item", autoResultMap = true)
-public final class WmQuizItem {
+public final class WmQuizItem1 {
 
 	@TableId(value = "item_id", type = IdType.AUTO)
 	private Integer itemId;

+ 1 - 1
hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/vo/WmQuizVO.java

@@ -17,7 +17,7 @@ import java.time.LocalDateTime;
 public final class WmQuizVO {
 
 	@Data
-	public static class ToItemPageVO{
+	public static class ToQuestionPageVO{
 		private Integer itemId;
 		private String serialNum;
 		private String label;

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

@@ -5,10 +5,10 @@ import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.qunzhixinxi.hnqz.admin.api.dto.WmQuizDTO;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysUser;
-import com.qunzhixinxi.hnqz.admin.api.entity.WmQuizItem;
+import com.qunzhixinxi.hnqz.admin.api.entity.WmQuestion;
 import com.qunzhixinxi.hnqz.admin.api.vo.WmQuizVO;
 import com.qunzhixinxi.hnqz.admin.service.SysUserService;
-import com.qunzhixinxi.hnqz.admin.service.WmQuizItemService;
+import com.qunzhixinxi.hnqz.admin.service.WmQuestionService;
 import com.qunzhixinxi.hnqz.admin.service.WmQuizService;
 import com.qunzhixinxi.hnqz.common.core.exception.BizException;
 import com.qunzhixinxi.hnqz.common.core.util.R;
@@ -44,45 +44,45 @@ public class WmQuizController {
 	private final SysUserService userService;
 
 	private final WmQuizService quizService;
-	private final WmQuizItemService quizItemService;
+	private final WmQuestionService questionService;
 
 
 	/**
 	 * 获取试题详情
 	 *
-	 * @param itemId 试题ID
+	 * @param questionId 试题ID
 	 * @return 详情
 	 */
-	@GetMapping(value = "/quiz/item/details")
-	public R<WmQuizItem> getItemDetails(@RequestParam(value = "itemId", required = false) Integer itemId,
-										@RequestParam(value = "sn", required = false) String sn) {
+	@GetMapping(value = "/quiz/question/details")
+	public R<WmQuestion> getQuestionDetails(@RequestParam(value = "questionId", required = false) Integer questionId,
+											@RequestParam(value = "sn", required = false) String sn) {
 
-		if (itemId == null && StrUtil.isBlank(sn)) {
+		if (questionId == null && StrUtil.isBlank(sn)) {
 			log.error("试题编号或者ID缺失");
 			throw new BizException("试题编号或者ID缺失");
 		}
 
-		WmQuizItem item = quizItemService.getItemDetails(itemId, sn);
+		WmQuestion item = questionService.getQuestionDetails(questionId, sn);
 		return R.ok(item);
 
 	}
 
 	/**
-	 * 获取试卷项分页
+	 * 获取试分页
 	 *
 	 * @param current 当前页
 	 * @param size    每页记录数
 	 * @param label   试题标题
 	 * @return 分页结果
 	 */
-	@GetMapping(value = "/quiz/item/page")
-	public R<Page<?>> pageQuizItems(@RequestParam(value = "current", defaultValue = "1") Integer current,
+	@GetMapping(value = "/quiz/question/page")
+	public R<Page<?>> pageQuestions(@RequestParam(value = "current", defaultValue = "1") Integer current,
 									@RequestParam(value = "size", defaultValue = "20") Integer size,
 									@RequestParam(value = "label", required = false) String label) {
 		// 获取试题信息
-		Page<WmQuizItem> itemPage = quizItemService.pageQuizItems(current, size, label);
+		Page<WmQuestion> itemPage = questionService.pageQuestions(current, size, label);
 
-		List<WmQuizItem> records = itemPage.getRecords();
+		List<WmQuestion> records = itemPage.getRecords();
 
 		// 不存在试题的情况
 		if (CollUtil.isEmpty(records)) {
@@ -90,13 +90,13 @@ public class WmQuizController {
 		}
 		// 封装包含创建人的实体信息
 		else {
-			Set<String> usernames = records.stream().map(WmQuizItem::getCreateBy).collect(Collectors.toSet());
+			Set<String> usernames = records.stream().map(WmQuestion::getCreateBy).collect(Collectors.toSet());
 
 			Map<String, List<SysUser>> users = userService.mapUsersByUsername(usernames);
 
-			List<WmQuizVO.ToItemPageVO> vos = records.stream().map(item -> {
-				WmQuizVO.ToItemPageVO vo = new WmQuizVO.ToItemPageVO();
-				vo.setItemId(item.getItemId());
+			List<WmQuizVO.ToQuestionPageVO> vos = records.stream().map(item -> {
+				WmQuizVO.ToQuestionPageVO vo = new WmQuizVO.ToQuestionPageVO();
+				vo.setItemId(item.getQuestionId());
 				vo.setSerialNum(item.getSerialNumber());
 				vo.setLabel(item.getLabel());
 				vo.setCreateTime(item.getCreateTime());
@@ -105,7 +105,7 @@ public class WmQuizController {
 				return vo;
 			}).collect(Collectors.toList());
 
-			Page<WmQuizVO.ToItemPageVO> pages = new Page<>();
+			Page<WmQuizVO.ToQuestionPageVO> pages = new Page<>();
 			pages.setCurrent(current);
 			pages.setSize(size);
 			pages.setPages(itemPage.getPages());
@@ -118,17 +118,17 @@ public class WmQuizController {
 	}
 
 	/**
-	 * 创建试卷项
+	 * 创建试
 	 *
 	 * @param resource 试卷项内容
 	 * @return 创建结果
 	 */
 	@SysLog("创建试卷项")
-	@PostMapping(value = "/quiz/item/create")
-	public R<Boolean> createQuizItem(@Valid @RequestBody WmQuizDTO.OnItemCreate resource) {
+	@PostMapping(value = "/quiz/question/create")
+	public R<Boolean> createQuestion(@Valid @RequestBody WmQuizDTO.OnQuestionCreate resource) {
 
 		HnqzUser operator = SecurityUtils.getUser();
-		Boolean passed = quizItemService.checkItem(operator, resource.getLabel(), null);
+		Boolean passed = questionService.checkQuestion(operator, resource.getLabel(), null);
 
 		if (!passed) {
 			String errorMsg = String.format("存在标题重复的试题,[%s]", resource.getLabel());
@@ -136,7 +136,7 @@ public class WmQuizController {
 			throw new BizException(errorMsg);
 		}
 
-		Boolean succ = quizItemService.createItem(resource, operator);
+		Boolean succ = questionService.createQuestion(resource, operator);
 		return succ ? R.ok(succ, "添加试题成功") : R.failed(succ, "添加试题失败");
 	}
 
@@ -147,17 +147,17 @@ public class WmQuizController {
 	 * @return 更新结果
 	 */
 	@SysLog("更新试卷项")
-	@PostMapping(value = "/quiz/item/update")
-	public R<Boolean> updateQuizItem(@Valid @RequestBody WmQuizDTO.OnItemUpdate resource) {
+	@PostMapping(value = "/quiz/question/update")
+	public R<Boolean> updateQuizItem(@Valid @RequestBody WmQuizDTO.OnQuestionUpdate resource) {
 
 		HnqzUser operator = SecurityUtils.getUser();
-		Boolean passed = quizItemService.checkItem(operator, resource.getLabel(), resource.getItemId());
+		Boolean passed = questionService.checkQuestion(operator, resource.getLabel(), resource.getQuestionId());
 		if (!passed) {
 			String errorMsg = String.format("存在标题重复的试题,[%s]", resource.getLabel());
 			log.error(errorMsg);
 			throw new BizException(errorMsg);
 		}
-		Boolean succ = quizItemService.updateItem(resource, operator);
+		Boolean succ = questionService.updateQuestion(resource, operator);
 		return succ ? R.ok(succ, "更新试题成功") : R.failed(succ, "更新试题失败");
 
 	}

+ 2 - 2
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/mapper/WmQuizItemMapper.java → hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/mapper/WmQuestionMapper.java

@@ -1,7 +1,7 @@
 package com.qunzhixinxi.hnqz.admin.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.qunzhixinxi.hnqz.admin.api.entity.WmQuizItem;
+import com.qunzhixinxi.hnqz.admin.api.entity.WmQuestion;
 import org.apache.ibatis.annotations.Mapper;
 
 /**
@@ -12,5 +12,5 @@ import org.apache.ibatis.annotations.Mapper;
  * @date 2023-10-16 15:49
  */
 @Mapper
-public interface WmQuizItemMapper extends BaseMapper<WmQuizItem> {
+public interface WmQuestionMapper extends BaseMapper<WmQuestion> {
 }

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

@@ -3,7 +3,7 @@ package com.qunzhixinxi.hnqz.admin.service;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.qunzhixinxi.hnqz.admin.api.dto.WmQuizDTO;
-import com.qunzhixinxi.hnqz.admin.api.entity.WmQuizItem;
+import com.qunzhixinxi.hnqz.admin.api.entity.WmQuestion;
 import com.qunzhixinxi.hnqz.common.security.service.HnqzUser;
 
 /**
@@ -13,7 +13,7 @@ import com.qunzhixinxi.hnqz.common.security.service.HnqzUser;
  * @version 1.0.0
  * @date 2023-10-16 15:59
  */
-public interface WmQuizItemService extends IService<WmQuizItem> {
+public interface WmQuestionService extends IService<WmQuestion> {
 
 	/**
 	 * 校验试卷项
@@ -23,7 +23,7 @@ public interface WmQuizItemService extends IService<WmQuizItem> {
 	 * @param itemId   试卷项ID
 	 * @return 校验结果
 	 */
-	Boolean checkItem(HnqzUser operator, String label, Integer itemId);
+	Boolean checkQuestion(HnqzUser operator, String label, Integer itemId);
 
 	/**
 	 * 创建试题
@@ -32,7 +32,7 @@ public interface WmQuizItemService extends IService<WmQuizItem> {
 	 * @param operator 操作人
 	 * @return 创建结果
 	 */
-	Boolean createItem(WmQuizDTO.OnItemCreate resource, HnqzUser operator);
+	Boolean createQuestion(WmQuizDTO.OnQuestionCreate resource, HnqzUser operator);
 
 	/**
 	 * 创建试题
@@ -41,7 +41,7 @@ public interface WmQuizItemService extends IService<WmQuizItem> {
 	 * @param operator 操作人
 	 * @return 创建结果
 	 */
-	Boolean updateItem(WmQuizDTO.OnItemUpdate resource, HnqzUser operator);
+	Boolean updateQuestion(WmQuizDTO.OnQuestionUpdate resource, HnqzUser operator);
 
 	/**
 	 * 获取试题分页
@@ -51,7 +51,7 @@ public interface WmQuizItemService extends IService<WmQuizItem> {
 	 * @param label   标题
 	 * @return 分页结果
 	 */
-	Page<WmQuizItem> pageQuizItems(Integer current, Integer size, String label);
+	Page<WmQuestion> pageQuestions(Integer current, Integer size, String label);
 
 	/**
 	 * 获取试题详情
@@ -60,7 +60,7 @@ public interface WmQuizItemService extends IService<WmQuizItem> {
 	 * @param sn     试题唯一序列号
 	 * @return 试题信息
 	 */
-	WmQuizItem getItemDetails(Integer itemId, String sn);
+	WmQuestion getQuestionDetails(Integer itemId, String sn);
 
 
 }

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

@@ -0,0 +1,147 @@
+package com.qunzhixinxi.hnqz.admin.service.impl;
+
+import cn.hutool.core.util.ArrayUtil;
+import cn.hutool.core.util.IdUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qunzhixinxi.hnqz.admin.api.dto.WmQuizDTO;
+import com.qunzhixinxi.hnqz.admin.api.entity.WmQuestion;
+import com.qunzhixinxi.hnqz.admin.mapper.WmQuestionMapper;
+import com.qunzhixinxi.hnqz.admin.service.WmQuestionService;
+import com.qunzhixinxi.hnqz.common.security.service.HnqzUser;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.time.LocalDateTime;
+
+/**
+ * 试题服务实现
+ *
+ * @author jimmy
+ * @version 1.0.0
+ * @date 2023-10-16 16:01
+ */
+@Slf4j
+@Service
+@AllArgsConstructor
+public class WmQuestionServiceImpl extends ServiceImpl<WmQuestionMapper, WmQuestion> implements WmQuestionService {
+
+	/**
+	 * 校验试题
+	 *
+	 * @param operator   操作人
+	 * @param label      标题
+	 * @param questionId 试题ID
+	 * @return 校验结果
+	 */
+	@Override
+	public Boolean checkQuestion(HnqzUser operator, String label, Integer questionId) {
+
+		int count = this.count(Wrappers.<WmQuestion>lambdaQuery()
+				.eq(WmQuestion::getLabel, label)
+				.eq(WmQuestion::getEnterpriseId, operator.getDeptId())
+				.ne(questionId != null, WmQuestion::getQuestionId, questionId)
+		);
+
+		return count == 0;
+	}
+
+	/**
+	 * 创建试题
+	 *
+	 * @param resource 试题信息
+	 * @param operator 操作人
+	 * @return 创建结果
+	 */
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public Boolean createQuestion(WmQuizDTO.OnQuestionCreate resource, HnqzUser operator) {
+
+		WmQuestion question = new WmQuestion();
+		question.setSerialNumber(IdUtil.fastSimpleUUID());
+		question.setLabel(resource.getLabel());
+		question.setOptions(resource.getOptions());
+		question.setAnswer(resource.getAnswer());
+		question.setEnterpriseId(operator.getDeptId());
+		String username = operator.getUsername();
+		question.setCreateBy(username);
+		question.setUpdateBy(username);
+		LocalDateTime now = LocalDateTime.now();
+		question.setCreateTime(now);
+		question.setUpdateTime(now);
+
+		return this.save(question);
+	}
+
+	/**
+	 * 创建试题
+	 *
+	 * @param resource 试题信息
+	 * @param operator 操作人
+	 * @return 创建结果
+	 */
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public Boolean updateQuestion(WmQuizDTO.OnQuestionUpdate resource, HnqzUser operator) {
+
+		WmQuestion question = new WmQuestion();
+		question.setQuestionId(resource.getQuestionId());
+		question.setUpdateBy(operator.getUsername());
+		question.setUpdateTime(LocalDateTime.now());
+
+		if (StrUtil.isNotBlank(resource.getLabel())) {
+			question.setLabel(resource.getLabel());
+		}
+
+		if (ArrayUtil.isNotEmpty(resource.getOptions())) {
+			question.setOptions(resource.getOptions());
+		}
+
+		if (StrUtil.isNotBlank(resource.getAnswer())) {
+			question.setAnswer(resource.getAnswer());
+		}
+
+		return this.updateById(question);
+	}
+
+	/**
+	 * 获取试题分页
+	 *
+	 * @param current 当前页
+	 * @param size    每页记录数
+	 * @param label   标题
+	 * @return 分页结果
+	 */
+	@Override
+	public Page<WmQuestion> pageQuestions(Integer current, Integer size, String label) {
+
+		return this.page(new Page<>(current, size),
+				Wrappers.<WmQuestion>lambdaQuery()
+						.like(StrUtil.isNotBlank(label), WmQuestion::getLabel, label)
+						.orderByDesc(WmQuestion::getUpdateTime)
+		);
+	}
+
+	/**
+	 * 获取试题详情
+	 *
+	 * @param questionId 试题ID
+	 * @param sn         试题唯一序列号
+	 * @return 试题信息
+	 */
+	@Override
+	public WmQuestion getQuestionDetails(Integer questionId, String sn) {
+
+		if (questionId != null) {
+			return this.getById(questionId);
+		} else if (StrUtil.isNotBlank(sn)) {
+			return this.getOne(Wrappers.<WmQuestion>lambdaQuery().eq(WmQuestion::getSerialNumber, sn));
+		} else {
+			return null;
+		}
+	}
+}

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

@@ -1,147 +0,0 @@
-package com.qunzhixinxi.hnqz.admin.service.impl;
-
-import cn.hutool.core.util.ArrayUtil;
-import cn.hutool.core.util.IdUtil;
-import cn.hutool.core.util.StrUtil;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.qunzhixinxi.hnqz.admin.api.dto.WmQuizDTO;
-import com.qunzhixinxi.hnqz.admin.api.entity.WmQuizItem;
-import com.qunzhixinxi.hnqz.admin.mapper.WmQuizItemMapper;
-import com.qunzhixinxi.hnqz.admin.service.WmQuizItemService;
-import com.qunzhixinxi.hnqz.common.security.service.HnqzUser;
-import lombok.AllArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.time.LocalDateTime;
-
-/**
- * 试卷项服务实现
- *
- * @author jimmy
- * @version 1.0.0
- * @date 2023-10-16 16:01
- */
-@Slf4j
-@Service
-@AllArgsConstructor
-public class WmQuizItemServiceImpl extends ServiceImpl<WmQuizItemMapper, WmQuizItem> implements WmQuizItemService {
-
-	/**
-	 * 校验试卷项
-	 *
-	 * @param operator 操作人
-	 * @param label    标题
-	 * @param itemId   试卷项ID
-	 * @return 校验结果
-	 */
-	@Override
-	public Boolean checkItem(HnqzUser operator, String label, Integer itemId) {
-
-		int count = this.count(Wrappers.<WmQuizItem>lambdaQuery()
-				.eq(WmQuizItem::getLabel, label)
-				.eq(WmQuizItem::getEnterpriseId, operator.getDeptId())
-				.ne(itemId != null, WmQuizItem::getItemId, itemId)
-		);
-
-		return count == 0;
-	}
-
-	/**
-	 * 创建试题
-	 *
-	 * @param resource 试题信息
-	 * @param operator 操作人
-	 * @return 创建结果
-	 */
-	@Override
-	@Transactional(rollbackFor = Exception.class)
-	public Boolean createItem(WmQuizDTO.OnItemCreate resource, HnqzUser operator) {
-
-		WmQuizItem quizItem = new WmQuizItem();
-		quizItem.setSerialNumber(IdUtil.fastSimpleUUID());
-		quizItem.setLabel(resource.getLabel());
-		quizItem.setOptions(resource.getOptions());
-		quizItem.setAnswer(resource.getAnswer());
-		quizItem.setEnterpriseId(operator.getDeptId());
-		String username = operator.getUsername();
-		quizItem.setCreateBy(username);
-		quizItem.setUpdateBy(username);
-		LocalDateTime now = LocalDateTime.now();
-		quizItem.setCreateTime(now);
-		quizItem.setUpdateTime(now);
-
-		return this.save(quizItem);
-	}
-
-	/**
-	 * 创建试题
-	 *
-	 * @param resource 试题信息
-	 * @param operator 操作人
-	 * @return 创建结果
-	 */
-	@Override
-	@Transactional(rollbackFor = Exception.class)
-	public Boolean updateItem(WmQuizDTO.OnItemUpdate resource, HnqzUser operator) {
-
-		WmQuizItem quizItem = new WmQuizItem();
-		quizItem.setItemId(resource.getItemId());
-		quizItem.setUpdateBy(operator.getUsername());
-		quizItem.setUpdateTime(LocalDateTime.now());
-
-		if (StrUtil.isNotBlank(resource.getLabel())) {
-			quizItem.setLabel(resource.getLabel());
-		}
-
-		if (ArrayUtil.isNotEmpty(resource.getOptions())) {
-			quizItem.setOptions(resource.getOptions());
-		}
-
-		if (StrUtil.isNotBlank(resource.getAnswer())) {
-			quizItem.setAnswer(resource.getAnswer());
-		}
-
-		return this.updateById(quizItem);
-	}
-
-	/**
-	 * 获取试题分页
-	 *
-	 * @param current 当前页
-	 * @param size    每页记录数
-	 * @param label   标题
-	 * @return 分页结果
-	 */
-	@Override
-	public Page<WmQuizItem> pageQuizItems(Integer current, Integer size, String label) {
-
-		return this.page(new Page<>(current, size),
-				Wrappers.<WmQuizItem>lambdaQuery()
-						.like(StrUtil.isNotBlank(label), WmQuizItem::getLabel, label)
-						.orderByDesc(WmQuizItem::getUpdateTime)
-		);
-	}
-
-	/**
-	 * 获取试题详情
-	 *
-	 * @param itemId 试题ID
-	 * @param sn     试题唯一序列号
-	 * @return 试题信息
-	 */
-	@Override
-	public WmQuizItem getItemDetails(Integer itemId, String sn) {
-
-		if (itemId != null) {
-			return this.getById(itemId);
-		} else if (StrUtil.isNotBlank(sn)) {
-			return this.getOne(Wrappers.<WmQuizItem>lambdaQuery().eq(WmQuizItem::getSerialNumber, sn));
-		} else {
-			return null;
-		}
-	}
-}