|
@@ -0,0 +1,152 @@
|
|
|
+package com.qunzhixinxi.hnqz.admin.service.impl;
|
|
|
+
|
|
|
+import cn.hutool.core.collection.CollUtil;
|
|
|
+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.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;
|
|
|
+import java.util.Collections;
|
|
|
+import java.util.List;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+/**
|
|
|
+ * 试卷项服务实现
|
|
|
+ *
|
|
|
+ * @author jimmy
|
|
|
+ * @version 1.0.0
|
|
|
+ * @date 2023-10-16 22:31
|
|
|
+ */
|
|
|
+@Slf4j
|
|
|
+@Service
|
|
|
+@AllArgsConstructor
|
|
|
+public class WmQuizItemServiceImpl extends ServiceImpl<WmQuizItemMapper, WmQuizItem> implements WmQuizItemService {
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 删除试卷项
|
|
|
+ *
|
|
|
+ * @param itemId 试卷项ID
|
|
|
+ * @return 删除结果
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public Boolean delQuizItem(Integer itemId) {
|
|
|
+ return this.removeById(itemId);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 创建试卷项
|
|
|
+ *
|
|
|
+ * @param resource 试卷项信息
|
|
|
+ * @param user 操作人
|
|
|
+ * @return 创建结果
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public Boolean createItem(WmQuizDTO.OnItemCreate resource, HnqzUser user) {
|
|
|
+ return this.createItems(Collections.singletonList(resource), user);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 批量创建试卷项
|
|
|
+ *
|
|
|
+ * @param resources 试卷项集合
|
|
|
+ * @param user 操作人
|
|
|
+ * @return 创建结果
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public Boolean createItems(List<WmQuizDTO.OnItemCreate> resources, HnqzUser user) {
|
|
|
+
|
|
|
+ List<WmQuizItem> quizItems = resources.stream().map(item -> {
|
|
|
+ WmQuizItem quizItem = new WmQuizItem();
|
|
|
+ quizItem.setQuizSerialNumber(IdUtil.fastSimpleUUID());
|
|
|
+ quizItem.setLabel(item.getLabel());
|
|
|
+ quizItem.setOptions(item.getOptions());
|
|
|
+ quizItem.setAnswer(item.getAnswer());
|
|
|
+ quizItem.setWidget(item.getWidget());
|
|
|
+ String username = user.getUsername();
|
|
|
+ quizItem.setCreateBy(username);
|
|
|
+ quizItem.setUpdateBy(username);
|
|
|
+ LocalDateTime now = LocalDateTime.now();
|
|
|
+ quizItem.setCreateTime(now);
|
|
|
+ quizItem.setUpdateTime(now);
|
|
|
+
|
|
|
+ return quizItem;
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+
|
|
|
+
|
|
|
+ return this.saveBatch(quizItems);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 更新试卷项
|
|
|
+ *
|
|
|
+ * @param resource 试卷信息
|
|
|
+ * @param user 操作人
|
|
|
+ * @return 更新结果
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public Boolean updateItem(WmQuizDTO.OnItemUpdate resource, HnqzUser user) {
|
|
|
+
|
|
|
+ WmQuizItem quizItem = new WmQuizItem();
|
|
|
+ quizItem.setItemId(resource.getItemId());
|
|
|
+ quizItem.setUpdateBy(user.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());
|
|
|
+ }
|
|
|
+
|
|
|
+ if (resource.getWidget() != null) {
|
|
|
+ quizItem.setWidget(resource.getWidget());
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ return this.updateById(quizItem);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取试卷项详情
|
|
|
+ *
|
|
|
+ * @param itemId 试卷项ID
|
|
|
+ * @return 试卷项详情
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public WmQuizItem getItemDetails(Integer itemId) {
|
|
|
+ return this.getById(itemId);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取试卷的试卷项
|
|
|
+ *
|
|
|
+ * @param sn 试卷编号
|
|
|
+ * @return 试卷项集合
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public List<WmQuizItem> listItems(String sn) {
|
|
|
+ List<WmQuizItem> quizItems =
|
|
|
+ this.list(Wrappers.<WmQuizItem>lambdaQuery().eq(WmQuizItem::getQuizSerialNumber, sn).orderByAsc(WmQuizItem::getWidget, WmQuizItem::getCreateTime));
|
|
|
+
|
|
|
+ return CollUtil.isEmpty(quizItems) ? Collections.emptyList() : quizItems;
|
|
|
+ }
|
|
|
+}
|