weiwenhai 7 anni fa
parent
commit
6bff9a79f9

+ 6 - 5
examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/impl/QuesServiceImpl.java

@@ -166,11 +166,7 @@ public class QuesServiceImpl implements QuesService{
         } else {
         	question.setUpdateTime(now);
         }
-        setSelectQuestionAnswer(question,"");
-        updateSubId(question);
-        updateQuesWord(question);
-        //更新QuesBody,把  下划线  转成  ##
-        updateQuesBody(question);
+        //跟新音频文件,以及音频文件排序
         if(question.getHasAudio()!=null&&question.getHasAudio()){
         	questionAudioService.deleteAudioNotInQuestion(question);
         	//给音频重新排序
@@ -181,6 +177,11 @@ public class QuesServiceImpl implements QuesService{
 				question.setHasAudio(false);
 			}
         }
+        setSelectQuestionAnswer(question,"");
+        updateSubId(question);
+        updateQuesWord(question);
+        //更新QuesBody,把  下划线  转成  ##
+        updateQuesBody(question);
         return quesRepo.save(question);
     }
 

+ 26 - 25
examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/impl/QuestionAudioServiceImpl.java

@@ -113,33 +113,20 @@ public class QuestionAudioServiceImpl implements QuestionAudioService{
 	@Override
 	public void sortAudio(Question question) {
 		if(question.getHasAudio()!=null&&question.getHasAudio()){
-			StringBuffer buffer = new StringBuffer();
-			buffer.append(question.getQuesBody());
+			//音频顺序改变后,更新bodyHtml
+			String newQusBody = getFileNames(question.getQuesBody(),question);
+			question.setQuesBody(newQusBody);
+			//跟新选项中的optionsHtml
 			if(question.getQuesOptions()!=null&&question.getQuesOptions().size()>0){
 				for(QuesOption option:question.getQuesOptions()){
-					buffer.append(option.getOptionBody());
+					String newOptionBody = getFileNames(option.getOptionBody(),question);
+					option.setOptionBody(newOptionBody);
 				}
 			}
-			String questionBodyAndOptionStr = buffer.toString();
-			//定义一个集合添加音频信息
-			Map<String, String> map = getFileNames(questionBodyAndOptionStr);
-			//循环替换
-			for(String key:map.keySet()){
-				questionBodyAndOptionStr = questionBodyAndOptionStr.replace(key, map.get(key));
-			}
-			//替换并更新数据
-			for(String key:map.keySet()){
-				String fileName = key;
-				questionBodyAndOptionStr = questionBodyAndOptionStr.replace(map.get(key), map.get(key).substring(0, map.get(key).indexOf("@")));
-				QuestionAudio questionAudio = questionAudioRepo.findByQuestionIdAndFileName(question.getId(),fileName);
-				questionAudio.setFileName(map.get(key).substring(0, map.get(key).indexOf("@")));
-				questionAudioRepo.save(questionAudio);
-			}
 		}
 	}
 	
-	private Map<String, String> getFileNames(String str){
-		StringBuffer buffer = new StringBuffer();
+	private String getFileNames(String str, Question question){
 		Map<String, String> map = new LinkedHashMap<String, String>();
 		Pattern p = Pattern.compile("<a\\s+[^<>]*\\s+name=\"([^<>\"]*)\"[^<>]*>"); 
 	    Matcher m = p.matcher(str);
@@ -147,23 +134,37 @@ public class QuestionAudioServiceImpl implements QuestionAudioService{
 	    int y = 1;
 	    while(m.find()) {
 		  String name = m.group(1);
+		  StringBuffer buffer = new StringBuffer();
 		  if(name.substring(0, name.indexOf("_")+1).contains("2")){
 			  buffer.append(name.substring(0,name.lastIndexOf("_")+1));
 			  buffer.append(i);
-			  buffer.append(name.substring(name.lastIndexOf(".")));
 			  buffer.append("@temp");
-		      map.put(m.group(1), buffer.toString());
+			  buffer.append(name.substring(name.lastIndexOf(".")));
+		      map.put(name, buffer.toString());
 		      i++;
 		  }else {
 			  buffer.append(name.substring(0,name.lastIndexOf("_")+1));
 			  buffer.append(y);
-			  buffer.append(name.substring(name.lastIndexOf(".")));
 			  buffer.append("@temp");
-		      map.put(m.group(1), buffer.toString());
+			  buffer.append(name.substring(name.lastIndexOf(".")));
+		      map.put(name, buffer.toString());
 		      y++;
 		  }
 	    }
-	    return map;
+	    //循环替换
+	    for(String key:map.keySet()){
+	    	str = str.replace(key, map.get(key));
+		}
+	    //替换并更新数据
+		for(String key:map.keySet()){
+			String fileName = key;
+			String value = map.get(key).replace("@temp", "");
+			str = str.replace(map.get(key), value);
+			QuestionAudio questionAudio = questionAudioRepo.findByQuestionIdAndFileName(question.getId(),fileName);
+			questionAudio.setFileName(value);
+			questionAudioRepo.save(questionAudio);
+		}
+	    return str;
 	}
 
 }

+ 1 - 0
examcloud-core-questions-starter/src/main/resources/security-exclusions.conf

@@ -5,4 +5,5 @@ regexp:.*/ecs_ques/extract/.*
 regexp:.*/extractQues/.*
 regexp:.*/ecs_ques/checkObjective/.*
 regexp:.*/batch_export/.*
+
 [${api_cqb}/][/paper/{paperId}][GET]