deason 5 anni fa
parent
commit
06f4241b21

+ 9 - 24
examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/PaperService.java

@@ -1,24 +1,19 @@
 package cn.com.qmth.examcloud.core.questions.service;
 
+import cn.com.qmth.examcloud.api.commons.security.bean.User;
+import cn.com.qmth.examcloud.core.questions.base.enums.PaperType;
+import cn.com.qmth.examcloud.core.questions.base.question.enums.QuesStructType;
+import cn.com.qmth.examcloud.core.questions.dao.entity.*;
+import cn.com.qmth.examcloud.core.questions.service.bean.dto.PaperDetailUnitExp;
+import cn.com.qmth.examcloud.core.questions.service.bean.dto.PaperExp;
+import org.springframework.data.domain.Page;
+import org.springframework.web.multipart.MultipartFile;
+
 import java.io.IOException;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
-import org.springframework.data.domain.Page;
-import org.springframework.web.multipart.MultipartFile;
-
-import cn.com.qmth.examcloud.core.questions.base.question.enums.QuesStructType;
-import cn.com.qmth.examcloud.api.commons.security.bean.User;
-import cn.com.qmth.examcloud.core.questions.service.bean.dto.PaperDetailUnitExp;
-import cn.com.qmth.examcloud.core.questions.service.bean.dto.PaperExp;
-import cn.com.qmth.examcloud.core.questions.dao.entity.Paper;
-import cn.com.qmth.examcloud.core.questions.dao.entity.PaperDetail;
-import cn.com.qmth.examcloud.core.questions.dao.entity.PaperDetailUnit;
-import cn.com.qmth.examcloud.core.questions.dao.entity.PaperSearchInfo;
-import cn.com.qmth.examcloud.core.questions.dao.entity.Question;
-import cn.com.qmth.examcloud.core.questions.base.enums.PaperType;
-
 
 /**
  * @author chenken
@@ -248,19 +243,10 @@ public interface PaperService {
      *
      * @param files
      * @param paperId
-     * @param accessUser
      * @throws IOException
      */
     public void uploadRadio(List<MultipartFile> files, String paperId, User user) throws IOException;
 
-    /**
-     * 音频文件插入到标签
-     *
-     * @param files
-     * @param paperId
-     */
-    public void appendAudioTag(String fileName, String questionId);
-
     /**
      * 计算试卷难度
      *
@@ -282,7 +268,6 @@ public interface PaperService {
      * pdf路径传至印刷平台
      *
      * @param paperId
-     * @param paperHtmlUrl
      */
     public String sendPrint(String paperId, String orgId, String examId);
 

+ 14 - 24
examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/impl/PaperServiceImpl.java

@@ -1143,33 +1143,31 @@ public class PaperServiceImpl implements PaperService {
     public void uploadRadio(List<MultipartFile> files, String paperId, User user) throws IOException {
         //根据试卷id,查询该试卷
         Paper paper = Model.of(paperRepo.findById(paperId));
+
         for (MultipartFile file : files) {
             //判断文件大小
             long fileSize = file.getSize();
             int size = Integer.parseInt(upYunProperty.getAudioMaxsize());
             if (fileSize > size * 1048576) {
-                throw new RuntimeException("音频文件大小超过5M,不能上传");
+                throw new IllegalArgumentException("音频文件大小超过5M,不能上传");
             }
+
             //根据试卷查询所有的小题,根据文件名匹配出当前小题ID
-            Question question = null;
             String numbers[] = file.getOriginalFilename().split("_");
-            /**
-             * 注释代码功能,查询试卷中某个试题
-             * 循环耗时,直接从数据查询对象
-             */
-        	/*List<PaperDetailUnit> paperDetailUnits = paperDetailUnitRepo.findByPaperOrderByNumber(paper);
-        	for(PaperDetailUnit paperDetailUnit:paperDetailUnits){
-        		if(paperDetailUnit.getNumber().toString().equals(numbers[0])){
-        			question = paperDetailUnit.getQuestion();
-        		}
-        	}*/
-            question = paperDetailUnitRepo.findByPaperAndNumber(paper, Integer.valueOf(numbers[0])).getQuestion();
+
+            PaperDetailUnit unit = paperDetailUnitRepo.findByPaperAndNumber(paper, Integer.valueOf(numbers[0]));
+            if (unit == null || unit.getQuestion() == null) {
+                throw new IllegalArgumentException("音频文件大小超过5M,不能上传");
+            }
+
+            Question question = unit.getQuestion();
             uploadAudioFile(paperId, question.getId(), file, user);
             appendAudioTag(file.getOriginalFilename(), question.getId());
 
             //清除缓存
             this.clearQuestionCache(question.getId());
         }
+
         //删除服务器文件夹
         String mp3DirectoryPath = TEMP_FILE_EXP + File.separator + paperId;
         File mp3Directory = new File(mp3DirectoryPath);
@@ -1178,10 +1176,6 @@ public class PaperServiceImpl implements PaperService {
 
     /**
      * 上传音频文件至又拍云
-     *
-     * @param paperId
-     * @param questionId
-     * @param file
      */
     private void uploadAudioFile(String paperId, String questionId, MultipartFile file, User user) {
         try {
@@ -1213,17 +1207,14 @@ public class PaperServiceImpl implements PaperService {
             //保存记录
             questionAudioService.saveQuestionAudio(new QuestionAudio(questionId, file.getOriginalFilename(), upYunProperty.getRadioUploadPath() + mp3FileNameString), user);
         } catch (IOException e) {
-            e.printStackTrace();
+            log.error(e.getMessage(), e);
         }
     }
 
     /**
      * 音频文件插入到标签
-     *
-     * @param fileName
-     * @param questionId
      */
-    public void appendAudioTag(String fileName, String questionId) {
+    private void appendAudioTag(String fileName, String questionId) {
         QuestionAudio questionAudio = questionAudioService.findByQuestionIdAndFileName(questionId, fileName);
         if (questionAudio != null) {
             String numbers[] = fileName.split("_");
@@ -1231,8 +1222,7 @@ public class PaperServiceImpl implements PaperService {
             if (numbers[1].equals("1")) {
                 String quesBody = question.getQuesBody();
                 if (!quesBody.contains(fileName)) {
-                    String quesBodyNew = quesBody.substring(0, quesBody.lastIndexOf("</p>"))
-                            + "<a id=\"" + questionAudio.getId() + "\" name=\"" + fileName + "\"></a></p>";
+                    String quesBodyNew = quesBody.substring(0, quesBody.lastIndexOf("</p>")) + "<a id=\"" + questionAudio.getId() + "\" name=\"" + fileName + "\"></a></p>";
                     question.setQuesBody(quesBodyNew);
                 }
             } else {