|
@@ -1,17 +1,22 @@
|
|
|
package com.qunzhixinxi.hnqz.admin.controller;
|
|
|
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
+import cn.hutool.core.util.ArrayUtil;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
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.WmQuestion;
|
|
|
+import com.qunzhixinxi.hnqz.admin.api.entity.WmQuiz;
|
|
|
import com.qunzhixinxi.hnqz.admin.api.entity.WmQuizItem;
|
|
|
import com.qunzhixinxi.hnqz.admin.api.vo.WmQuizVO;
|
|
|
import com.qunzhixinxi.hnqz.admin.service.SysUserService;
|
|
|
import com.qunzhixinxi.hnqz.admin.service.WmQuestionService;
|
|
|
import com.qunzhixinxi.hnqz.admin.service.WmQuizItemService;
|
|
|
import com.qunzhixinxi.hnqz.admin.service.WmQuizService;
|
|
|
+import com.qunzhixinxi.hnqz.common.core.constant.enums.UpmsState;
|
|
|
import com.qunzhixinxi.hnqz.common.core.exception.BizException;
|
|
|
import com.qunzhixinxi.hnqz.common.core.util.R;
|
|
|
import com.qunzhixinxi.hnqz.common.log.annotation.SysLog;
|
|
@@ -26,6 +31,7 @@ import org.springframework.web.bind.annotation.RequestParam;
|
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
|
|
|
|
import javax.validation.Valid;
|
|
|
+import java.time.LocalDateTime;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
import java.util.Set;
|
|
@@ -51,6 +57,136 @@ public class WmQuizController {
|
|
|
|
|
|
// ~ QUIZ =========
|
|
|
|
|
|
+ /**
|
|
|
+ * 获取试卷详情
|
|
|
+ *
|
|
|
+ * @param quizId 试卷ID
|
|
|
+ * @return 详情信息
|
|
|
+ */
|
|
|
+ @GetMapping(value = "/quiz/details")
|
|
|
+ public R<Map<String, Object>> getQuizDetails(@RequestParam(value = "quizId") Integer quizId) {
|
|
|
+
|
|
|
+ Map<String, Object> details = quizService.getDetails(quizId);
|
|
|
+
|
|
|
+ return R.ok(details);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取试卷分页
|
|
|
+ *
|
|
|
+ * @param current 当前页
|
|
|
+ * @param size 每页记录数
|
|
|
+ * @param title 试卷标题
|
|
|
+ * @param createTime 创建时间范围
|
|
|
+ * @return 分页结果
|
|
|
+ */
|
|
|
+ @GetMapping(value = "/quiz/page")
|
|
|
+ public R<Page<?>> pageQuizzes(@RequestParam(value = "current", defaultValue = "1") Integer current,
|
|
|
+ @RequestParam(value = "size", defaultValue = "20") Integer size,
|
|
|
+ @RequestParam(value = "title", required = false) String title,
|
|
|
+ @RequestParam(value = "state", required = false) UpmsState.QuizState state,
|
|
|
+ @RequestParam(value = "createTime", required = false) LocalDateTime[] createTime) {
|
|
|
+
|
|
|
+ LambdaQueryWrapper<WmQuiz> queryWrapper = Wrappers.<WmQuiz>lambdaQuery()
|
|
|
+ .like(StrUtil.isNotBlank(title), WmQuiz::getTitle, title)
|
|
|
+ .eq(state != null, WmQuiz::getState, state)
|
|
|
+ .eq(WmQuiz::getEnterpriseId, SecurityUtils.getUser().getDeptId())
|
|
|
+ .orderByDesc(WmQuiz::getCreateTime);
|
|
|
+
|
|
|
+ if (ArrayUtil.isNotEmpty(createTime)) {
|
|
|
+ LocalDateTime end;
|
|
|
+ if (createTime.length == 1) {
|
|
|
+ end = LocalDateTime.now();
|
|
|
+ } else {
|
|
|
+ end = createTime[1];
|
|
|
+ }
|
|
|
+ queryWrapper.between(WmQuiz::getCreateTime, createTime[0], end);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ Page<WmQuiz> pages = quizService.page(new Page<>(current, size), queryWrapper);
|
|
|
+
|
|
|
+ return R.ok(pages);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取可用的试卷
|
|
|
+ *
|
|
|
+ * @return 可用试卷列表
|
|
|
+ */
|
|
|
+ @GetMapping(value = "/quiz/avail/list")
|
|
|
+ public R<List<WmQuiz>> listQuizzes() {
|
|
|
+
|
|
|
+ List<WmQuiz> quizzes = quizService.list(Wrappers.<WmQuiz>lambdaQuery().eq(WmQuiz::getEnterpriseId, SecurityUtils.getUser().getDeptId()).eq(WmQuiz::getState, UpmsState.QuizState.RELEASE));
|
|
|
+
|
|
|
+ return R.ok(quizzes);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 发布试卷
|
|
|
+ *
|
|
|
+ * @param resource 发布试卷
|
|
|
+ * @return 发布结果
|
|
|
+ */
|
|
|
+ @SysLog("发布试卷")
|
|
|
+ @PostMapping(value = "/quiz/state/release")
|
|
|
+ public R<Boolean> releaseQuiz(@Valid @RequestBody WmQuizDTO.OnQuizState resource) {
|
|
|
+
|
|
|
+ if (!UpmsState.QuizState.RELEASE.equals(resource.getState())) {
|
|
|
+ log.error("发布请求参数封装错误");
|
|
|
+ throw new BizException("发布请求参数封装错误");
|
|
|
+ }
|
|
|
+
|
|
|
+ Boolean succ = quizService.releaseQuiz(resource.getQuizId(), SecurityUtils.getUser());
|
|
|
+ return succ ? R.ok(true, "发布试卷成功") : R.failed(false, "发布试卷失败");
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 创建试卷
|
|
|
+ *
|
|
|
+ * @param resource 试卷信息
|
|
|
+ * @return 创建结果
|
|
|
+ */
|
|
|
+ @SysLog(value = "创建试卷")
|
|
|
+ @PostMapping(value = "/quiz/create")
|
|
|
+ public R<String> createQuiz(@Valid @RequestBody WmQuizDTO.OnQuizCreate resource) {
|
|
|
+ String sn = quizService.createQuiz(resource, SecurityUtils.getUser());
|
|
|
+ return StrUtil.isNotBlank(sn) ? R.ok(sn, "创建试卷成功") : R.failed("", "创建试卷失败");
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 更新试卷
|
|
|
+ *
|
|
|
+ * @param resource 试卷信息
|
|
|
+ * @return 创建结果
|
|
|
+ */
|
|
|
+ @SysLog("更新试卷")
|
|
|
+ @PostMapping(value = "/quiz/update")
|
|
|
+ public R<Boolean> updateQuiz(@Valid @RequestBody WmQuizDTO.OnQuizUpdate resource) {
|
|
|
+
|
|
|
+ return R.ok();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 中止试卷
|
|
|
+ *
|
|
|
+ * @param resource 试卷信息
|
|
|
+ * @return 中止结果
|
|
|
+ */
|
|
|
+ @SysLog("中止试卷")
|
|
|
+ @PostMapping(value = "/quiz/state/stop")
|
|
|
+ public R<Boolean> stopQuiz(@Valid @RequestBody WmQuizDTO.OnQuizState resource) {
|
|
|
+
|
|
|
+ if (!UpmsState.QuizState.STOP.equals(resource.getState())) {
|
|
|
+ log.error("中止请求参数封装错误");
|
|
|
+ throw new BizException("中止请求参数封装错误");
|
|
|
+ }
|
|
|
+
|
|
|
+ Boolean succ = quizService.stopQuiz(resource.getQuizId(), SecurityUtils.getUser());
|
|
|
+ return succ ? R.ok(true, "发布试卷成功") : R.failed(false, "发布试卷失败");
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
// ~ QUIZ ITEM =========
|
|
|
|