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