From 33fdb033e0a6b5ef6b2f8ac5fc67ad8222e564e5 Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期五, 17 五月 2024 14:49:12 +0800
Subject: [PATCH] 下载文件接口,bug修改

---
 src/main/java/com/mindskip/xzs/configuration/spring/security/SecurityConfigurer.java |    3 -
 src/main/java/com/mindskip/xzs/controller/student/SelfPracticeController.java        |   11 -----
 src/main/java/com/mindskip/xzs/controller/common/UploadController.java               |   40 ++++++++++++++++++-
 src/main/java/com/mindskip/xzs/service/impl/SelfPracticeServiceImpl.java             |    8 ---
 src/main/resources/mapper/QuestionSubjectMapper.xml                                  |   14 +++++--
 src/main/java/com/mindskip/xzs/service/SelfPracticeService.java                      |    7 ---
 src/main/resources/application.yml                                                   |    9 ++--
 src/main/java/com/mindskip/xzs/repository/QuestionSubjectMapper.java                 |    2 
 8 files changed, 54 insertions(+), 40 deletions(-)

diff --git a/src/main/java/com/mindskip/xzs/configuration/spring/security/SecurityConfigurer.java b/src/main/java/com/mindskip/xzs/configuration/spring/security/SecurityConfigurer.java
index da5b491..1ac3145 100644
--- a/src/main/java/com/mindskip/xzs/configuration/spring/security/SecurityConfigurer.java
+++ b/src/main/java/com/mindskip/xzs/configuration/spring/security/SecurityConfigurer.java
@@ -85,8 +85,7 @@
                             "/api/admin/user/conversion",
                             "/api/admin/examPaperGrade/updates",
                             "/api/admin/question/download/question/import/temp",
-                            "/api/admin/question/question/import",
-                            "/api/upload/**"
+                            "/api/admin/question/question/import"
                     ).permitAll()
                     .antMatchers("/files/**").permitAll()
                     // 闈欐�佽祫婧愶紝鍙尶鍚嶈闂�
diff --git a/src/main/java/com/mindskip/xzs/controller/common/UploadController.java b/src/main/java/com/mindskip/xzs/controller/common/UploadController.java
index 4c1f474..70e5a9e 100644
--- a/src/main/java/com/mindskip/xzs/controller/common/UploadController.java
+++ b/src/main/java/com/mindskip/xzs/controller/common/UploadController.java
@@ -3,14 +3,20 @@
 import com.mindskip.xzs.base.RestResponse;
 import com.mindskip.xzs.configuration.RuoYiConfig;
 import lombok.RequiredArgsConstructor;
+import org.springframework.core.io.FileSystemResource;
+import org.springframework.core.io.Resource;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.MediaType;
 import org.springframework.util.StringUtils;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
+import javax.servlet.http.HttpServletResponse;
 import java.io.File;
+import java.io.FileInputStream;
 import java.io.IOException;
+import java.io.OutputStream;
+import java.nio.file.Files;
 import java.util.HashMap;
 import java.util.UUID;
 
@@ -63,4 +69,32 @@
         }
     }
 
+    /**
+     * 涓嬭浇鏂囦欢锛堝崟涓級
+     */
+    @GetMapping("/download")
+    public void download(@RequestParam String url, @RequestParam String fileName, HttpServletResponse response) throws Exception
+    {
+        // 鎻愬彇鏂囦欢璺緞
+        String filePath = ruoYiConfig.getUrl() + File.separator + url;
+
+        File file = new File(filePath);
+
+        // 妫�鏌ユ枃浠舵槸鍚﹀瓨鍦�
+        if (!file.exists()) {
+            throw new RuntimeException("鏂囦欢涓嶅瓨鍦�");
+        }
+
+        // 璇诲彇鏂囦欢鍐呭
+        byte[] fileContent = Files.readAllBytes(file.toPath());
+
+        // 璁剧疆鍝嶅簲澶�
+        response.setHeader("Content-Disposition", "attachment; filename=" + fileName);
+        response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
+
+        // 灏嗘枃浠跺唴瀹瑰啓鍏ュ搷搴旇緭鍑烘祦
+        response.getOutputStream().write(fileContent);
+        response.getOutputStream().flush();
+    }
+
 }
diff --git a/src/main/java/com/mindskip/xzs/controller/student/SelfPracticeController.java b/src/main/java/com/mindskip/xzs/controller/student/SelfPracticeController.java
index 3116847..270edaa 100644
--- a/src/main/java/com/mindskip/xzs/controller/student/SelfPracticeController.java
+++ b/src/main/java/com/mindskip/xzs/controller/student/SelfPracticeController.java
@@ -31,17 +31,6 @@
         return selfPracticeService.page(vo);
     }
 
-    /**
-     * 鑾峰彇鎵�閫夎鐩笅鐨勯鐩暟閲�
-     *
-     * @param subjectIds
-     * @return
-     */
-    @PostMapping("/subject/questionNum")
-    public RestResponse subjectQuestionNum(@RequestBody List<Integer> subjectIds) {
-        return selfPracticeService.subjectQuestionNum(subjectIds);
-    }
-
     @PostMapping("/remove")
     public RestResponse remove(@RequestBody @NotEmpty(message = "璇烽�夋嫨瑕佸垹闄ょ殑鏁版嵁") List<Integer> ids) {
         return selfPracticeService.remove(ids);
diff --git a/src/main/java/com/mindskip/xzs/repository/QuestionSubjectMapper.java b/src/main/java/com/mindskip/xzs/repository/QuestionSubjectMapper.java
index 3d4a8a2..c77a9c6 100644
--- a/src/main/java/com/mindskip/xzs/repository/QuestionSubjectMapper.java
+++ b/src/main/java/com/mindskip/xzs/repository/QuestionSubjectMapper.java
@@ -32,7 +32,7 @@
     List<QuestionSubject> getSubject(Integer id);
 
     /** 缁熻璇剧洰鐨勯鐩暟 */
-    Integer countQuestionNum(@Param("subjects") List<Integer> subjects);
+    Integer countQuestionNum(@Param("subjects") List<Integer> subjects, @Param("questionType") Integer questionType);
 
     /** 闅忔満棰樼洰 */
     List<QuestionVO> getRandomQuestionId(@Param("subjectIds") List<Integer> subjectIds, @Param("questionType") Integer questionType, @Param("questionNum") Integer questionNum);
diff --git a/src/main/java/com/mindskip/xzs/service/SelfPracticeService.java b/src/main/java/com/mindskip/xzs/service/SelfPracticeService.java
index 37a8746..f666a66 100644
--- a/src/main/java/com/mindskip/xzs/service/SelfPracticeService.java
+++ b/src/main/java/com/mindskip/xzs/service/SelfPracticeService.java
@@ -46,13 +46,6 @@
      */
     RestResponse startPractice(Integer id);
 
-    /**
-     * 鏌ヨ璇剧洰涓嬬殑棰樼洰鏁伴噺
-     *
-     * @param subjectIds
-     * @return
-     */
-    RestResponse subjectQuestionNum(List<Integer> subjectIds);
 
     /**
      * 闅忔満涓�閬撻
diff --git a/src/main/java/com/mindskip/xzs/service/impl/SelfPracticeServiceImpl.java b/src/main/java/com/mindskip/xzs/service/impl/SelfPracticeServiceImpl.java
index 1968c85..d137530 100644
--- a/src/main/java/com/mindskip/xzs/service/impl/SelfPracticeServiceImpl.java
+++ b/src/main/java/com/mindskip/xzs/service/impl/SelfPracticeServiceImpl.java
@@ -74,7 +74,7 @@
             if (! CollectionUtils.isEmpty(subjectNames)) {
                 item.setSubjectNames(subjectNames.stream().collect(Collectors.joining("銆�")));
             }
-            item.setTotalQuestionNum(questionSubjectMapper.countQuestionNum(subjects));
+            item.setTotalQuestionNum(questionSubjectMapper.countQuestionNum(subjects, PracticeQuestionTypeEnum.getDataBaseValueByValue(item.getQuestionType())));
             // 鏌ヨ宸茬粡鍋氫簡澶氬皯
             PracticeQuestionCondition practiceQuestionCondition = practiceQuestionConditionMapper.selectByPracticeId(item.getId());
             if (Objects.nonNull(practiceQuestionCondition)) {
@@ -151,12 +151,6 @@
             return RestResponse.ok(questionVO);
         }
         return RestResponse.ok();
-    }
-
-    @Override
-    public RestResponse subjectQuestionNum(List<Integer> subjectIds) {
-        Integer num = questionSubjectMapper.countQuestionNum(subjectIds);
-        return RestResponse.ok(num);
     }
 
     @Override
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 6eb471e..506527c 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -61,11 +61,10 @@
     hikari:
       idle-timeout: 600000  #10 min
       max-lifetime: 180000000 #30 min
-  mvc:
-    servlet:
-      multipart:
-        max-file-size: 50MB
-        max-request-size: 500MB
+  servlet:
+    multipart:
+      max-file-size: 1024MB
+      max-request-size: 1024MB
   #runningtime environment
   profiles:
     active: dev
diff --git a/src/main/resources/mapper/QuestionSubjectMapper.xml b/src/main/resources/mapper/QuestionSubjectMapper.xml
index 7f134aa..69f5979 100644
--- a/src/main/resources/mapper/QuestionSubjectMapper.xml
+++ b/src/main/resources/mapper/QuestionSubjectMapper.xml
@@ -57,11 +57,13 @@
 
     <select id="countQuestionNum" resultType="integer">
         SELECT
-               count(distinct id)
+               count(distinct tqs.question_id)
         FROM
-             t_question_subject
+             t_question_subject tqs
+                INNER JOIN t_question tq ON tq.id = tqs.question_id <if test="questionType != -99">AND tq.question_type = #{questionType}</if>
         WHERE
-              subject_id IN <foreach collection="subjects" open="(" separator="," close=")" item="subjectId">#{subjectId}</foreach>
+            tqs.subject_id IN <foreach collection="subjects" open="(" separator="," close=")" item="subjectId">#{subjectId}</foreach>
+
     </select>
 
     <select id="getRandomQuestionId" resultType="com.mindskip.xzs.domain.vo.QuestionVO">
@@ -74,7 +76,11 @@
             tq.correct
         FROM
              t_question_subject tqs
-                 INNER JOIN t_question tq ON tqs.question_id = tq.id AND tq.deleted = 0 AND tqs.subject_id IN <foreach collection="subjectIds" open="(" separator="," close=")" item="subjectId">#{subjectId}</foreach>
+                 INNER JOIN t_question tq ON tqs.question_id = tq.id AND tq.deleted = 0
+                                                 <if test="questionType != null and questionType != -99">
+                                                     AND tq.question_type = #{questionType}
+                                                 </if>
+                                                 AND tqs.subject_id IN <foreach collection="subjectIds" open="(" separator="," close=")" item="subjectId">#{subjectId}</foreach>
                  INNER JOIN t_text_content ttc ON tq.info_text_content_id = ttc.id
         ORDER BY
              RAND() LIMIT #{questionNum}

--
Gitblit v1.8.0