|
@@ -0,0 +1,87 @@
|
|
|
+package com.qunzhixinxi.hnqz.admin.service.impl;
|
|
|
+
|
|
|
+import cn.hutool.core.collection.CollUtil;
|
|
|
+import cn.hutool.core.util.ArrayUtil;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.qunzhixinxi.hnqz.admin.api.entity.WmPlatformQuizTestResult;
|
|
|
+import com.qunzhixinxi.hnqz.admin.api.model.WmQuizResultModel;
|
|
|
+import com.qunzhixinxi.hnqz.admin.mapper.WmPlatformQuizTestResultMapper;
|
|
|
+import com.qunzhixinxi.hnqz.admin.service.WmPlatformQuizTestResultService;
|
|
|
+import com.qunzhixinxi.hnqz.common.core.exception.BizException;
|
|
|
+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.LocalDate;
|
|
|
+import java.time.LocalDateTime;
|
|
|
+import java.util.Collections;
|
|
|
+import java.util.List;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+import java.util.stream.Stream;
|
|
|
+
|
|
|
+/**
|
|
|
+ * WmPlatformQuizTestResultServiceImpl
|
|
|
+ *
|
|
|
+ * @author jimmy
|
|
|
+ * @version 1.0.0
|
|
|
+ * @date 2023-10-25 15:44
|
|
|
+ */
|
|
|
+@Slf4j
|
|
|
+@Service
|
|
|
+@AllArgsConstructor
|
|
|
+public class WmPlatformQuizTestResultServiceImpl extends ServiceImpl<WmPlatformQuizTestResultMapper, WmPlatformQuizTestResult> implements WmPlatformQuizTestResultService {
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取平台试卷结果
|
|
|
+ *
|
|
|
+ * @param userId 用户ID
|
|
|
+ * @param quizIds 试卷ID
|
|
|
+ * @return 答题结果
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public List<WmPlatformQuizTestResult> listPltQuizResults(Integer userId, List<Integer> quizIds) {
|
|
|
+
|
|
|
+ List<WmPlatformQuizTestResult> results = this.list(Wrappers.<WmPlatformQuizTestResult>lambdaQuery()
|
|
|
+ .eq(userId != null, WmPlatformQuizTestResult::getUserId, userId)
|
|
|
+ .eq(CollUtil.isNotEmpty(quizIds), WmPlatformQuizTestResult::getQuizId, quizIds)
|
|
|
+ .orderByDesc(WmPlatformQuizTestResult::getCreateTime)
|
|
|
+ );
|
|
|
+
|
|
|
+ return CollUtil.isNotEmpty(results) ? results : Collections.emptyList();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 用户保存平台试卷测试结果
|
|
|
+ *
|
|
|
+ * @param quizResults 试卷结果
|
|
|
+ * @param user 用户信息
|
|
|
+ * @return 保存结果
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public Boolean createQuizTestResult(WmQuizResultModel[] quizResults, HnqzUser user) {
|
|
|
+
|
|
|
+ if (ArrayUtil.isEmpty(quizResults)) {
|
|
|
+ log.error("问卷测试结果缺失");
|
|
|
+ throw new BizException("问卷测试结果缺失");
|
|
|
+ }
|
|
|
+ Integer userId = user.getId();
|
|
|
+ LocalDateTime now = LocalDateTime.now();
|
|
|
+
|
|
|
+ List<WmPlatformQuizTestResult> results = Stream.of(quizResults).map(qr -> {
|
|
|
+ WmPlatformQuizTestResult result = new WmPlatformQuizTestResult();
|
|
|
+ result.setUserId(userId);
|
|
|
+ result.setQuizId(qr.getQuizId());
|
|
|
+ result.setQuizResult(qr);
|
|
|
+ result.setExpiry(now.plusYears(1L).toLocalDate());
|
|
|
+ result.setCreateTime(now);
|
|
|
+
|
|
|
+ return result;
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+
|
|
|
+ return this.saveBatch(results);
|
|
|
+ }
|
|
|
+}
|