From bee8b64f9fc52c3a01916c9f2d218759b1001252 Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期五, 07 十一月 2025 15:33:37 +0800
Subject: [PATCH] 小程序接口

---
 ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/QuestionnaireController.java |   89 +++++++++++++++++++++++++++++++++++---------
 1 files changed, 71 insertions(+), 18 deletions(-)

diff --git a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/QuestionnaireController.java b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/QuestionnaireController.java
index 377d0a8..c9aa699 100644
--- a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/QuestionnaireController.java
+++ b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/QuestionnaireController.java
@@ -5,24 +5,17 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.framework.web.service.TokenService;
-import com.ruoyi.system.model.TPartyBuilding;
-import com.ruoyi.system.model.TQuestionnaire;
-import com.ruoyi.system.model.TQuestionnaireStem;
-import com.ruoyi.system.model.TQuestionnaireStemOption;
+import com.ruoyi.system.dto.SaveTQuestionnaireDto;
+import com.ruoyi.system.model.*;
 import com.ruoyi.system.query.PartyBuildingListQuery;
-import com.ruoyi.system.service.TQuestionnaireService;
-import com.ruoyi.system.service.TQuestionnaireStemBriefAnswerService;
-import com.ruoyi.system.service.TQuestionnaireStemOptionService;
-import com.ruoyi.system.service.TQuestionnaireStemService;
+import com.ruoyi.system.service.*;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
+import java.util.stream.Collectors;
 
 @Slf4j
 @RestController
@@ -31,32 +24,92 @@
 public class QuestionnaireController {
 
     private final TQuestionnaireService questionnaireService;
-    private final TQuestionnaireStemService questionnaireStemService;
+    private final TQuestionnaireRecordService questionnaireRecordService;
     private final TokenService tokenService;
+    private final TQuestionnaireStemService questionnaireStemService;
     private final TQuestionnaireStemOptionService questionnaireStemOptionService;
     private final TQuestionnaireStemBriefAnswerService questionnaireStemBriefAnswerService;
 
-    public QuestionnaireController(TQuestionnaireService questionnaireService, TQuestionnaireStemService questionnaireStemService, TokenService tokenService, TQuestionnaireStemOptionService questionnaireStemOptionService, TQuestionnaireStemBriefAnswerService questionnaireStemBriefAnswerService) {
+    public QuestionnaireController(TQuestionnaireService questionnaireService, TQuestionnaireRecordService questionnaireRecordService, TokenService tokenService, TQuestionnaireStemService questionnaireStemService, TQuestionnaireStemOptionService questionnaireStemOptionService, TQuestionnaireStemBriefAnswerService questionnaireStemBriefAnswerService) {
         this.questionnaireService = questionnaireService;
-        this.questionnaireStemService = questionnaireStemService;
+        this.questionnaireRecordService = questionnaireRecordService;
         this.tokenService = tokenService;
+        this.questionnaireStemService = questionnaireStemService;
         this.questionnaireStemOptionService = questionnaireStemOptionService;
         this.questionnaireStemBriefAnswerService = questionnaireStemBriefAnswerService;
     }
 
 
     @ApiOperation(value = "问卷调查--列表", response = TQuestionnaire.class)
-    @PostMapping(value = "/getTQuestionnaireList")
+    @GetMapping(value = "/getTQuestionnaireList")
     public R<List<TQuestionnaire>> getTQuestionnaireList() {
-
         String userId = null;
         try {
             userId = tokenService.getLoginUserApplet().getUserId();
         } catch (Exception e) {
         }
         List<TQuestionnaire> list = questionnaireService.list(new LambdaQueryWrapper<TQuestionnaire>().eq(TQuestionnaire::getStatus, 2));
-
+        List<TQuestionnaireRecord> questionnaireRecordList = questionnaireRecordService.list();
+        for (TQuestionnaire tQuestionnaire : list) {
+            List<String> userIds = questionnaireRecordList.stream().filter(questionnaireRecord -> questionnaireRecord.getQuestionnaireId().equals(tQuestionnaire.getId())).map(TQuestionnaireRecord::getAppUserId).collect(Collectors.toList());
+            tQuestionnaire.setTotalNum(userIds.size());
+            if(userId!=null && userIds.contains(userId)){
+                tQuestionnaire.setState(2);
+            }
+        }
         return R.ok(list);
     }
 
+    @ApiOperation(value = "问卷调查--获取题干和选项", response = TQuestionnaireStem.class)
+    @GetMapping(value = "/getTQuestionnaireStemList/{id}")
+    public R<List<TQuestionnaireStem>> getTQuestionnaireStemList(@PathVariable String id) {
+        List<TQuestionnaireStem> list = questionnaireStemService.list(new LambdaQueryWrapper<TQuestionnaireStem>().eq(TQuestionnaireStem::getQuestionnaireId, id));
+        List<TQuestionnaireStemOption> questionnaireStemOptions = questionnaireStemOptionService.list(new LambdaQueryWrapper<TQuestionnaireStemOption>().in(TQuestionnaireStemOption::getStemId, list.stream().map(TQuestionnaireStem::getId).collect(Collectors.toList())));
+        for (TQuestionnaireStem tQuestionnaireStem : list) {
+            tQuestionnaireStem.setOptions(questionnaireStemOptions.stream().filter(questionnaireStemOption -> questionnaireStemOption.getStemId().equals(tQuestionnaireStem.getId())).collect(Collectors.toList()));
+        }
+        return R.ok(list);
+    }
+
+    @ApiOperation(value = "问卷调查--保存")
+    @PostMapping(value = "/saveTQuestionnaire")
+    public R<TQuestionnaire> saveTQuestionnaire(@RequestBody SaveTQuestionnaireDto dto) {
+        String userId = tokenService.getLoginUserApplet().getUserId();
+
+        TQuestionnaire questionnaire = questionnaireService.getById(dto.getQuestionnaireId());
+        if(questionnaire.getStatus()==3){
+            return R.fail("问卷已结束");
+        }
+        if(questionnaire.getStatus()==1){
+            return R.fail("问卷未开始");
+        }
+
+        long count = questionnaireRecordService.count(new LambdaQueryWrapper<TQuestionnaireRecord>().eq(TQuestionnaireRecord::getQuestionnaireId, dto.getQuestionnaireId()).eq(TQuestionnaireRecord::getAppUserId, userId));
+        if (count > 0) {
+            return R.fail("您已作答过此问卷");
+        }
+        List<String> tQuestionnaireStemOptionIds = dto.getTQuestionnaireStemOptionIds();
+        if(!tQuestionnaireStemOptionIds.isEmpty()){
+            List<TQuestionnaireStemOption> questionnaireStemOptions = questionnaireStemOptionService.listByIds(tQuestionnaireStemOptionIds);
+            for (TQuestionnaireStemOption questionnaireStemOption : questionnaireStemOptions) {
+                String answerValue = questionnaireStemOption.getAnswerValue();
+                answerValue = answerValue+","+userId;
+                questionnaireStemOption.setAnswerValue(answerValue);
+            }
+            questionnaireStemOptionService.updateBatchById(questionnaireStemOptions);
+        }
+
+        List<TQuestionnaireStemBriefAnswer> tQuestionnaireStemBriefAnswers = dto.getTQuestionnaireStemBriefAnswers();
+        if(!tQuestionnaireStemBriefAnswers.isEmpty()){
+            tQuestionnaireStemBriefAnswers.forEach(e->e.setAppUserId(userId));
+            questionnaireStemBriefAnswerService.saveBatch(tQuestionnaireStemBriefAnswers);
+        }
+
+        TQuestionnaireRecord tQuestionnaireRecord = new TQuestionnaireRecord();
+        tQuestionnaireRecord.setAppUserId(userId);
+        tQuestionnaireRecord.setQuestionnaireId(dto.getQuestionnaireId());
+        questionnaireRecordService.save(tQuestionnaireRecord);
+        return R.ok();
+    }
+
 }

--
Gitblit v1.7.1