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