Forráskód Böngészése

merge from release_v4.1.2

deason 3 éve
szülő
commit
0288039ff2
14 módosított fájl, 60 hozzáadás és 49 törlés
  1. 2 1
      examcloud-core-questions-api-provider/src/main/java/cn/com/qmth/examcloud/core/questions/api/controller/AudioTimeConfigController.java
  2. 3 2
      examcloud-core-questions-api-provider/src/main/java/cn/com/qmth/examcloud/core/questions/api/controller/ExtractConfigController.java
  3. 8 7
      examcloud-core-questions-api-provider/src/main/java/cn/com/qmth/examcloud/core/questions/api/controller/GenPaperController.java
  4. 3 2
      examcloud-core-questions-api-provider/src/main/java/cn/com/qmth/examcloud/core/questions/api/controller/ImportPaperController.java
  5. 6 5
      examcloud-core-questions-api-provider/src/main/java/cn/com/qmth/examcloud/core/questions/api/controller/PaperController.java
  6. 1 1
      examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/impl/CoursePropertyServiceImpl.java
  7. 3 2
      examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/impl/ExportPaperServiceImpl.java
  8. 2 12
      examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/impl/ExtractConfigProviderServiceImpl.java
  9. 6 5
      examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/impl/PaperDetailServiceImpl.java
  10. 10 3
      examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/impl/PaperDetailUnitServiceImpl.java
  11. 5 4
      examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/impl/PaperServiceImpl.java
  12. 9 5
      examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/impl/QuesServiceImpl.java
  13. 1 0
      examcloud-core-questions-starter/pom.xml
  14. 1 0
      examcloud-core-questions-starter/src/main/resources/log4j2.xml

+ 2 - 1
examcloud-core-questions-api-provider/src/main/java/cn/com/qmth/examcloud/core/questions/api/controller/AudioTimeConfigController.java

@@ -14,6 +14,7 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 
+import cn.com.qmth.examcloud.api.commons.enums.AdminOperateType;
 import cn.com.qmth.examcloud.api.commons.security.bean.User;
 import cn.com.qmth.examcloud.core.basic.api.CourseCloudService;
 import cn.com.qmth.examcloud.core.basic.api.request.GetCourseReq;
@@ -81,7 +82,7 @@ public class AudioTimeConfigController extends ControllerSupport {
                 extractConfigPaperCache.refresh(keys,subkeys);
             }
             if(hasAudioChange) {
-            	ReportsUtil.report(new AdminOperateReport(user.getRootOrgId(), user.getUserId(), "调卷规则-保存音频播放次数","课程ID:"+courseId+" 考试ID:"+examId));
+            	ReportsUtil.report(new AdminOperateReport(user.getRootOrgId(), user.getUserId(), AdminOperateType.TYPE22.getDesc(),"课程ID:"+courseId+" 考试ID:"+examId));
             }
             return new ResponseEntity<>(HttpStatus.OK);
         }

+ 3 - 2
examcloud-core-questions-api-provider/src/main/java/cn/com/qmth/examcloud/core/questions/api/controller/ExtractConfigController.java

@@ -23,6 +23,7 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 
+import cn.com.qmth.examcloud.api.commons.enums.AdminOperateType;
 import cn.com.qmth.examcloud.api.commons.enums.DataRuleType;
 import cn.com.qmth.examcloud.api.commons.security.bean.User;
 import cn.com.qmth.examcloud.api.commons.security.bean.UserDataRule;
@@ -100,10 +101,10 @@ public class ExtractConfigController extends ControllerSupport {
         //清除缓存
         extractConfigCache.remove(extractConfig.getExamId(), extractConfig.getCourseCode());
         if(extractConfig.getId()==null) {
-        	ReportsUtil.report(new AdminOperateReport(user.getRootOrgId(), user.getUserId(), "调卷规则-新增调卷规则","课程ID:"+extractConfig.getCourse().getId()+" 考试ID:"+extractConfig.getExamId()));
+        	ReportsUtil.report(new AdminOperateReport(user.getRootOrgId(), user.getUserId(), AdminOperateType.TYPE23.getDesc(),"课程ID:"+extractConfig.getCourse().getId()+" 考试ID:"+extractConfig.getExamId()));
         }else {
         	if(changeInfo!=null) {
-        		ReportsUtil.report(new AdminOperateReport(user.getRootOrgId(), user.getUserId(), "调卷规则-修改调卷规则","课程ID:"+extractConfig.getCourse().getId()+" 考试ID:"+extractConfig.getExamId()+changeInfo));
+        		ReportsUtil.report(new AdminOperateReport(user.getRootOrgId(), user.getUserId(), AdminOperateType.TYPE24.getDesc(),"课程ID:"+extractConfig.getCourse().getId()+" 考试ID:"+extractConfig.getExamId()+changeInfo));
         	}
         }
         return new ResponseEntity<>(HttpStatus.OK);

+ 8 - 7
examcloud-core-questions-api-provider/src/main/java/cn/com/qmth/examcloud/core/questions/api/controller/GenPaperController.java

@@ -1,5 +1,6 @@
 package cn.com.qmth.examcloud.core.questions.api.controller;
 
+import cn.com.qmth.examcloud.api.commons.enums.AdminOperateType;
 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.enums.RandomGenPaperPolicy;
@@ -76,7 +77,7 @@ public class GenPaperController extends ControllerSupport {
                 if (paperMap.get("msg").equals("success")) {
 	                StringBuilder paperInfo=new StringBuilder();
 	                paperInfo.append("课程:"+genPaperDto.getCourseName()+"("+genPaperDto.getCourseNo()+") 试卷名称:"+genPaperDto.getPaperName());
-	                ReportsUtil.report(new AdminOperateReport(user.getRootOrgId(), user.getUserId(), "考试试卷管理-简易组卷",paperInfo.toString()));
+	                ReportsUtil.report(new AdminOperateReport(user.getRootOrgId(), user.getUserId(), AdminOperateType.TYPE25.getDesc(),paperInfo.toString()));
                 }
             } else {
                 //如果是组多套试卷
@@ -93,7 +94,7 @@ public class GenPaperController extends ControllerSupport {
                     }
                     StringBuilder paperInfo=new StringBuilder();
                     paperInfo.append("课程:"+genPaperDto.getCourseName()+"("+genPaperDto.getCourseNo()+") 试卷名称:"+genPaperDto.getPaperName());
-                    ReportsUtil.report(new AdminOperateReport(user.getRootOrgId(), user.getUserId(), "考试试卷管理-简易组卷",paperInfo.toString()));
+                    ReportsUtil.report(new AdminOperateReport(user.getRootOrgId(), user.getUserId(), AdminOperateType.TYPE25.getDesc(),paperInfo.toString()));
                 }
             }
             if (!paperMap.get("msg").equals("success")) {
@@ -144,14 +145,14 @@ public class GenPaperController extends ControllerSupport {
                 }
                 StringBuilder paperInfo=new StringBuilder();
                 paperInfo.append("课程:"+genPaperDto.getCourseName()+"("+genPaperDto.getCourseNo()+") 试卷名称:"+genPaperDto.getPaperName());
-                ReportsUtil.report(new AdminOperateReport(user.getRootOrgId(), user.getUserId(), "考试试卷管理-精细组卷",paperInfo.toString()));
+                ReportsUtil.report(new AdminOperateReport(user.getRootOrgId(), user.getUserId(), AdminOperateType.TYPE26.getDesc(),paperInfo.toString()));
             }
         } else if (genPaperDto.getGenNumber() == 1) {
             paperMap = genPaperService.genPaper(genPaperDto);
             if (paperMap.get("msg").equals("success")) {
 	            StringBuilder paperInfo=new StringBuilder();
 	            paperInfo.append("课程:"+genPaperDto.getCourseName()+"("+genPaperDto.getCourseNo()+") 试卷名称:"+genPaperDto.getPaperName());
-	            ReportsUtil.report(new AdminOperateReport(user.getRootOrgId(), user.getUserId(), "考试试卷管理-精细组卷",paperInfo.toString()));
+	            ReportsUtil.report(new AdminOperateReport(user.getRootOrgId(), user.getUserId(), AdminOperateType.TYPE26.getDesc(),paperInfo.toString()));
             }
         }
         if (paperMap.get("msg").equals("success")) {
@@ -200,14 +201,14 @@ public class GenPaperController extends ControllerSupport {
                 }
 	            StringBuilder paperInfo=new StringBuilder();
 	            paperInfo.append("课程:"+genPaperDto.getCourseName()+"("+genPaperDto.getCourseNo()+") 试卷名称:"+genPaperDto.getPaperName());
-	            ReportsUtil.report(new AdminOperateReport(user.getRootOrgId(), user.getUserId(), "考试试卷管理-蓝图组卷",paperInfo.toString()));
+	            ReportsUtil.report(new AdminOperateReport(user.getRootOrgId(), user.getUserId(), AdminOperateType.TYPE27.getDesc(),paperInfo.toString()));
             }
         } else if (genPaperDto.getGenNumber() == 1) {
             paperMap = genPaperService.genBluePaper(genPaperDto);
             if (paperMap.get("msg").equals("success")) {
 	            StringBuilder paperInfo=new StringBuilder();
 	            paperInfo.append("课程:"+genPaperDto.getCourseName()+"("+genPaperDto.getCourseNo()+") 试卷名称:"+genPaperDto.getPaperName());
-	            ReportsUtil.report(new AdminOperateReport(user.getRootOrgId(), user.getUserId(), "考试试卷管理-蓝图组卷",paperInfo.toString()));
+	            ReportsUtil.report(new AdminOperateReport(user.getRootOrgId(), user.getUserId(), AdminOperateType.TYPE27.getDesc(),paperInfo.toString()));
             }
         }
         if (paperMap.get("msg").equals("success")) {
@@ -240,7 +241,7 @@ public class GenPaperController extends ControllerSupport {
         if (paperMap.get("msg").equals("success")) {
             StringBuilder paperInfo=new StringBuilder();
             paperInfo.append("课程:"+genPaperDto.getCourseName()+"("+genPaperDto.getCourseNo()+") 试卷名称:"+genPaperDto.getPaperName());
-            ReportsUtil.report(new AdminOperateReport(user.getRootOrgId(), user.getUserId(), "考试试卷管理-手动组卷",paperInfo.toString()));
+            ReportsUtil.report(new AdminOperateReport(user.getRootOrgId(), user.getUserId(), AdminOperateType.TYPE28.getDesc(),paperInfo.toString()));
         }
         if (paperMap.get("msg").equals("success")) {
             return new ResponseEntity<>(paperMap, HttpStatus.OK);

+ 3 - 2
examcloud-core-questions-api-provider/src/main/java/cn/com/qmth/examcloud/core/questions/api/controller/ImportPaperController.java

@@ -21,6 +21,7 @@ import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.multipart.MultipartFile;
 import org.springframework.web.multipart.commons.CommonsMultipartFile;
 
+import cn.com.qmth.examcloud.api.commons.enums.AdminOperateType;
 import cn.com.qmth.examcloud.api.commons.enums.DataRuleType;
 import cn.com.qmth.examcloud.api.commons.security.bean.User;
 import cn.com.qmth.examcloud.api.commons.security.bean.UserDataRule;
@@ -88,7 +89,7 @@ public class ImportPaperController extends ControllerSupport {
 			StringBuilder sb=new StringBuilder();
 			sb.append("课程:"+paper.getCourse().getName()+"("+paper.getCourse().getCode()+")");
 			sb.append(" 试卷名称:"+paper.getName());
-	        ReportsUtil.report(new AdminOperateReport(user.getRootOrgId(), user.getUserId(), "导入试卷管理-导入试卷",sb.toString()));
+	        ReportsUtil.report(new AdminOperateReport(user.getRootOrgId(), user.getUserId(), AdminOperateType.TYPE29.getDesc(),sb.toString()));
 			return new ResponseEntity<>(newPaper, HttpStatus.OK);
 		} catch (StatusException e) {
 			throw e;
@@ -138,7 +139,7 @@ public class ImportPaperController extends ControllerSupport {
 			sb.append(" 来源试卷名称:"+paper.getName());
 			sb.append(" 复制到课程:"+course.getName()+"("+course.getCode()+")");
 			sb.append(" 复制到试卷名称:"+paperName);
-			ReportsUtil.report(new AdminOperateReport(user.getRootOrgId(), user.getUserId(), "导入试卷管理-复制试卷",sb.toString()));
+			ReportsUtil.report(new AdminOperateReport(user.getRootOrgId(), user.getUserId(), AdminOperateType.TYPE30.getDesc(),sb.toString()));
 			map.put("msg", "success");
 			return new ResponseEntity<>(map, HttpStatus.OK);
 		} catch (PaperException e) {

+ 6 - 5
examcloud-core-questions-api-provider/src/main/java/cn/com/qmth/examcloud/core/questions/api/controller/PaperController.java

@@ -1,5 +1,6 @@
 package cn.com.qmth.examcloud.core.questions.api.controller;
 
+import cn.com.qmth.examcloud.api.commons.enums.AdminOperateType;
 import cn.com.qmth.examcloud.api.commons.enums.DataRuleType;
 import cn.com.qmth.examcloud.api.commons.security.bean.User;
 import cn.com.qmth.examcloud.api.commons.security.bean.UserDataRule;
@@ -109,7 +110,7 @@ public class PaperController extends ControllerSupport {
     	StringBuilder paperInfo=new StringBuilder();
 		paperInfo.append(" 课程:"+paper.getCourse().getName()+"("+paper.getCourse().getCode()+")");
 		paperInfo.append(" 试卷名称:"+paper.getName());
-    	ReportsUtil.report(new AdminOperateReport(user.getRootOrgId(), user.getUserId(), "考试试卷管理-试卷审核",paperInfo.toString()));
+    	ReportsUtil.report(new AdminOperateReport(user.getRootOrgId(), user.getUserId(), AdminOperateType.TYPE31.getDesc(),paperInfo.toString()));
     }
     
     /**
@@ -142,9 +143,9 @@ public class PaperController extends ControllerSupport {
         if ("success".equals(msgMap.get("msg"))) {
             if (changeInfo != null) {
                 if (PaperType.IMPORT.equals(paper.getPaperType())) {
-                    ReportsUtil.report(new AdminOperateReport(user.getRootOrgId(), user.getUserId(), "导入试卷管理-编辑试卷", changeInfo));
+                    ReportsUtil.report(new AdminOperateReport(user.getRootOrgId(), user.getUserId(), AdminOperateType.TYPE32.getDesc(), changeInfo));
                 } else {
-                    ReportsUtil.report(new AdminOperateReport(user.getRootOrgId(), user.getUserId(), "考试试卷管理-编辑试卷", changeInfo));
+                    ReportsUtil.report(new AdminOperateReport(user.getRootOrgId(), user.getUserId(), AdminOperateType.TYPE33.getDesc(), changeInfo));
                 }
             }
             return new ResponseEntity<>(msgMap, HttpStatus.OK);
@@ -726,7 +727,7 @@ public class PaperController extends ControllerSupport {
             }
             paperService.useBasePaper(paperIds, user.getDisplayName());
 
-            ReportsUtil.report(new AdminOperateReport(user.getRootOrgId(), user.getUserId(), "导入试卷管理-使用原卷", paperInfo.toString()));
+            ReportsUtil.report(new AdminOperateReport(user.getRootOrgId(), user.getUserId(), AdminOperateType.TYPE34.getDesc(), paperInfo.toString()));
             return new ResponseEntity<>(HttpStatus.OK);
         } catch (Exception e) {
             throw new StatusException("160537", e.getMessage());
@@ -895,7 +896,7 @@ public class PaperController extends ControllerSupport {
         StringBuilder paperInfo = new StringBuilder();
         paperInfo.append("课程:" + paper.getCourse().getName() + "(" + paper.getCourse().getCode() + ")");
         paperInfo.append(" 试卷名称:" + paper.getName());
-        ReportsUtil.report(new AdminOperateReport(user.getRootOrgId(), user.getUserId(), "导入试卷管理-试卷答案导入", paperInfo.toString()));
+        ReportsUtil.report(new AdminOperateReport(user.getRootOrgId(), user.getUserId(), AdminOperateType.TYPE35.getDesc(), paperInfo.toString()));
     }
 
     @ApiOperation(value = "下载答案模板", notes = "下载答案模板")

+ 1 - 1
examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/impl/CoursePropertyServiceImpl.java

@@ -141,7 +141,7 @@ public class CoursePropertyServiceImpl implements CoursePropertyService {
         }
 
         if (dto.getCourseId() != null) {
-            if (!userDataRule.getRefIds().contains(dto.getCourseId())) {
+            if (userDataRule.assertNeedQueryRefIds()&&!userDataRule.getRefIds().contains(dto.getCourseId())) {
                 return Page.empty();
             }
             query.addCriteria(Criteria.where("courseId").is(dto.getCourseId()));

+ 3 - 2
examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/impl/ExportPaperServiceImpl.java

@@ -36,6 +36,7 @@ import org.springframework.stereotype.Service;
 import com.google.common.collect.Lists;
 import com.google.gson.Gson;
 
+import cn.com.qmth.examcloud.api.commons.enums.AdminOperateType;
 import cn.com.qmth.examcloud.api.commons.security.bean.User;
 import cn.com.qmth.examcloud.commons.exception.StatusException;
 import cn.com.qmth.examcloud.core.questions.base.CommonUtils;
@@ -199,7 +200,7 @@ public class ExportPaperServiceImpl implements ExportPaperService {
 		paperInfo.append(" 试卷名称:"+paper.getName());
 		paperInfo.append(getContentName(exportContentList));
 		
-		ReportsUtil.report(new AdminOperateReport(user.getRootOrgId(), user.getUserId(), "考试试卷管理-下载",paperInfo.toString()));
+		ReportsUtil.report(new AdminOperateReport(user.getRootOrgId(), user.getUserId(), AdminOperateType.TYPE36.getDesc(),paperInfo.toString()));
     }
 
     private String getContentName(String exportContentList) {
@@ -635,7 +636,7 @@ public class ExportPaperServiceImpl implements ExportPaperService {
 		paperInfo.append("下载数量:"+paperIds.size());
 		paperInfo.append(getContentName(exportContentList));
 		
-		ReportsUtil.report(new AdminOperateReport(user.getRootOrgId(), user.getUserId(), "考试试卷管理-批量下载",paperInfo.toString()));
+		ReportsUtil.report(new AdminOperateReport(user.getRootOrgId(), user.getUserId(), AdminOperateType.TYPE37.getDesc(),paperInfo.toString()));
     
     }
 

+ 2 - 12
examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/impl/ExtractConfigProviderServiceImpl.java

@@ -646,12 +646,7 @@ public class ExtractConfigProviderServiceImpl implements ExtractConfigProviderSe
                 for (Question subQuestion : subList) {
                     if (subQuestion.getQuestionType() == QuesStructType.SINGLE_ANSWER_QUESTION || subQuestion.getQuestionType() == QuesStructType.MULTIPLE_ANSWER_QUESTION) {
                         String[] answers = QuestionAnswerConvert.parseQuestionOptionAnswers(subQuestion.getQuesOptions());
-                        for (int i = 0; i < answers.length; i++) {
-                            if (i == 0) {
-                                answer = answers[i];
-                            }
-                            answer = answer + "," + answers[i];
-                        }
+                        answer = StringUtils.join(answers, ",");
                     } else if (subQuestion.getQuestionType() == QuesStructType.BOOL_ANSWER_QUESTION) {
                         if (subQuestion.getQuesAnswer().endsWith("正确")) {
                             answer = "true";
@@ -668,12 +663,7 @@ public class ExtractConfigProviderServiceImpl implements ExtractConfigProviderSe
             String answer = "";
             if (question.getQuestionType() == QuesStructType.SINGLE_ANSWER_QUESTION || question.getQuestionType() == QuesStructType.MULTIPLE_ANSWER_QUESTION) {
                 String[] answers = QuestionAnswerConvert.parseQuestionOptionAnswers(question.getQuesOptions());
-                for (int i = 0; i < answers.length; i++) {
-                    if (i == 0) {
-                        answer = answers[i];
-                    }
-                    answer = answer + "," + answers[i];
-                }
+                answer = StringUtils.join(answers, ",");
             } else if (question.getQuestionType() == QuesStructType.BOOL_ANSWER_QUESTION) {
                 if (question.getQuesAnswer().endsWith("正确")) {
                     answer = "true";

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

@@ -13,6 +13,7 @@ import org.springframework.data.mongodb.core.query.Query;
 import org.springframework.data.mongodb.core.query.Update;
 import org.springframework.stereotype.Service;
 
+import cn.com.qmth.examcloud.api.commons.enums.AdminOperateType;
 import cn.com.qmth.examcloud.api.commons.security.bean.User;
 import cn.com.qmth.examcloud.commons.exception.StatusException;
 import cn.com.qmth.examcloud.core.questions.base.Model;
@@ -97,9 +98,9 @@ public class PaperDetailServiceImpl implements PaperDetailService {
         	paperInfo.append("课程:"+paper.getCourse().getName()+"("+paper.getCourse().getCode()+") 试卷名称:"+paper.getName());
             paperInfo.append("第"+paperDetail.getNumber()+"大题名称由改 "+oldpaperDetail.getName()+" 为 "+paperDetail.getName());
         	if(PaperType.IMPORT.equals(paper.getPaperType())) {
-	            ReportsUtil.report(new AdminOperateReport(user.getRootOrgId(), user.getUserId(), "导入试卷管理-修改大题名称",paperInfo.toString()));
+	            ReportsUtil.report(new AdminOperateReport(user.getRootOrgId(), user.getUserId(), AdminOperateType.TYPE38.getDesc(),paperInfo.toString()));
         	}else {
-	            ReportsUtil.report(new AdminOperateReport(user.getRootOrgId(), user.getUserId(), "考试试卷管理-修改大题名称",paperInfo.toString()));
+	            ReportsUtil.report(new AdminOperateReport(user.getRootOrgId(), user.getUserId(), AdminOperateType.TYPE39.getDesc(),paperInfo.toString()));
         
         	}
         }
@@ -125,9 +126,9 @@ public class PaperDetailServiceImpl implements PaperDetailService {
         Integer dc=paper.getPaperDetailCount();
         paperInfo.append(" 试卷大题数量变动("+dc+"变为"+(dc-1)+")");
     	if(PaperType.IMPORT.equals(paper.getPaperType())) {
-            ReportsUtil.report(new AdminOperateReport(user.getRootOrgId(), user.getUserId(), "导入试卷管理-删除大题",paperInfo.toString()));
+            ReportsUtil.report(new AdminOperateReport(user.getRootOrgId(), user.getUserId(), AdminOperateType.TYPE40.getDesc(),paperInfo.toString()));
     	}else {
-            ReportsUtil.report(new AdminOperateReport(user.getRootOrgId(), user.getUserId(), "考试试卷管理-删除大题",paperInfo.toString()));
+            ReportsUtil.report(new AdminOperateReport(user.getRootOrgId(), user.getUserId(), AdminOperateType.TYPE41.getDesc(),paperInfo.toString()));
     	}
     }
 
@@ -204,7 +205,7 @@ public class PaperDetailServiceImpl implements PaperDetailService {
         	paperInfo.append(" 下移");
         }
         paperInfo.append("第"+number+"大题");
-        ReportsUtil.report(new AdminOperateReport(user.getRootOrgId(), user.getUserId(), "考试试卷管理-移动大题",paperInfo.toString()));
+        ReportsUtil.report(new AdminOperateReport(user.getRootOrgId(), user.getUserId(), AdminOperateType.TYPE42.getDesc(),paperInfo.toString()));
 	}
 	
 	private void savePaperDetailNumber(List<PaperDetail> pds) {

+ 10 - 3
examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/impl/PaperDetailUnitServiceImpl.java

@@ -18,6 +18,7 @@ import org.springframework.data.mongodb.core.query.Query;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
 
+import cn.com.qmth.examcloud.api.commons.enums.AdminOperateType;
 import cn.com.qmth.examcloud.api.commons.security.bean.User;
 import cn.com.qmth.examcloud.commons.exception.StatusException;
 import cn.com.qmth.examcloud.core.questions.base.Model;
@@ -152,6 +153,9 @@ public class PaperDetailUnitServiceImpl implements PaperDetailUnitService {
                 quesService.saveQues(updateQuestion);
                 baseUnit.setQuestion(updateQuestion);
             } else {
+            	if(updateQuestion.getQuesOptions()!=null&&updateQuestion.getQuesOptions().size()>26) {
+            		throw new StatusException("选项数量不能超过26");
+            	}
                 List<Double> subScoreList = baseUnit.getSubScoreList();
                 int size = baseQuestion.getSubQuestions().size();
                 boolean match = false;
@@ -215,6 +219,9 @@ public class PaperDetailUnitServiceImpl implements PaperDetailUnitService {
                 baseUnit.setSubScoreList(subScoreList);
             }
         } else {
+        	if(updateQuestion.getQuesOptions()!=null&&updateQuestion.getQuesOptions().size()>26) {
+        		throw new StatusException("选项数量不能超过26");
+        	}
         	String changInfo=getQuestionChangeInfo(baseQuestion, updateQuestion);
         	if(changInfo!=null) {
         		sb.append("第"+baseUnit.getNumber()+"小题变动:"+changInfo);
@@ -243,9 +250,9 @@ public class PaperDetailUnitServiceImpl implements PaperDetailUnitService {
     		paperInfo.append(" 试卷名称:"+paper.getName());
     		sb.append(paperInfo);
     		if(PaperType.IMPORT.equals(paper.getPaperType())) {
-    			ReportsUtil.report(new AdminOperateReport(user.getRootOrgId(), user.getUserId(), "导入试卷管理-编辑小题",sb.toString()));
+    			ReportsUtil.report(new AdminOperateReport(user.getRootOrgId(), user.getUserId(), AdminOperateType.TYPE43.getDesc(),sb.toString()));
     		}else {
-    			ReportsUtil.report(new AdminOperateReport(user.getRootOrgId(), user.getUserId(), "考试试卷管理-编辑小题",sb.toString()));
+    			ReportsUtil.report(new AdminOperateReport(user.getRootOrgId(), user.getUserId(), AdminOperateType.TYPE44.getDesc(),sb.toString()));
     		}
     	}
         if (baseUnit.getQuestion() != null) {
@@ -364,7 +371,7 @@ public class PaperDetailUnitServiceImpl implements PaperDetailUnitService {
 			sb.append(" 试卷名称:"+detailUnit.getPaper().getName()); 
 			sb.append(" 第"+detailUnit.getNumber()+"小题 ");
 			sb.append(changInfo);
-        	ReportsUtil.report(new AdminOperateReport(user.getRootOrgId(), user.getUserId(), "考试试卷管理-删除小题",sb.toString()));
+        	ReportsUtil.report(new AdminOperateReport(user.getRootOrgId(), user.getUserId(), AdminOperateType.TYPE45.getDesc(),sb.toString()));
         }
     }
 

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

@@ -53,6 +53,7 @@ import org.springframework.web.multipart.MultipartFile;
 
 import com.google.gson.Gson;
 
+import cn.com.qmth.examcloud.api.commons.enums.AdminOperateType;
 import cn.com.qmth.examcloud.api.commons.security.bean.User;
 import cn.com.qmth.examcloud.api.commons.security.bean.UserDataRule;
 import cn.com.qmth.examcloud.commons.exception.StatusException;
@@ -625,9 +626,9 @@ public class PaperServiceImpl implements PaperService {
             paperInfo.append("课程:" + paper.getCourse().getName() + "(" + paper.getCourse().getCode() + ")");
             paperInfo.append(" 试卷名称:" + paper.getName());
             if (PaperType.IMPORT.equals(paper.getPaperType())) {
-                ReportsUtil.report(new AdminOperateReport(user.getRootOrgId(), user.getUserId(), "导入试卷管理-删除原卷", paperInfo.toString()));
+                ReportsUtil.report(new AdminOperateReport(user.getRootOrgId(), user.getUserId(), AdminOperateType.TYPE46.getDesc(), paperInfo.toString()));
             } else {
-                ReportsUtil.report(new AdminOperateReport(user.getRootOrgId(), user.getUserId(), "考试试卷管理-删除试卷", paperInfo.toString()));
+                ReportsUtil.report(new AdminOperateReport(user.getRootOrgId(), user.getUserId(), AdminOperateType.TYPE47.getDesc(), paperInfo.toString()));
 
             }
         }
@@ -1073,7 +1074,7 @@ public class PaperServiceImpl implements PaperService {
             sb.append(" 试卷名称:" + paperDetailUnit.getPaper().getName());
             sb.append(" 第" + paperDetailUnit.getNumber() + "小题 ");
             sb.append(changInfo);
-            ReportsUtil.report(new AdminOperateReport(user.getRootOrgId(), user.getUserId(), "导入试卷管理-删除小题", sb.toString()));
+            ReportsUtil.report(new AdminOperateReport(user.getRootOrgId(), user.getUserId(), AdminOperateType.TYPE48.getDesc(), sb.toString()));
         }
         return paperNames;
     }
@@ -1187,7 +1188,7 @@ public class PaperServiceImpl implements PaperService {
         if (changInfo != null) {
             paperInfo.append(changInfo);
         }
-        ReportsUtil.report(new AdminOperateReport(user.getRootOrgId(), user.getUserId(), "考试试卷管理-选题", paperInfo.toString()));
+        ReportsUtil.report(new AdminOperateReport(user.getRootOrgId(), user.getUserId(), AdminOperateType.TYPE49.getDesc(), paperInfo.toString()));
         return paper;
     }
 

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

@@ -151,6 +151,9 @@ public class QuesServiceImpl implements QuesService {
      * @param question
      */
     public Question saveQues(Question question) {
+    	if(question.getQuesOptions()!=null&&question.getQuesOptions().size()>26) {
+    		throw new StatusException("选项数量不能超过26");
+    	}
         if (question.getDifficultyDegree() > 0 && question.getDifficultyDegree() < 0.4) {
             question.setDifficulty("难");
         } else if (question.getDifficultyDegree() > 0.3 && question.getDifficultyDegree() < 0.8) {
@@ -799,7 +802,6 @@ public class QuesServiceImpl implements QuesService {
         Question question = optional.get();
         QuestionAnswerBean bean = new QuestionAnswerBean();
         List<String> answers = new ArrayList<>();
-        final String separator = "";// 默认分隔符
 
         if (QuesStructType.NESTED_ANSWER_QUESTION == question.getQuestionType()) {
             List<Question> subQuestions = question.getSubQuestions();
@@ -808,20 +810,22 @@ public class QuesServiceImpl implements QuesService {
                         || QuesStructType.MULTIPLE_ANSWER_QUESTION == subQuestion.getQuestionType()) {
                     List<String> values = QuestionAnswerConvert
                             .parseQuestionOptionAnswerList(subQuestion.getQuesOptions());
-                    answers.add(StringUtils.join(values, separator));
+                    // 选择题 - 转换为新答案格式
+                    answers.add(StringUtils.join(values, ""));
                 } else {
                     List<String> values = QuestionAnswerConvert.parseQuestionAnswerList(subQuestion);
-                    answers.add(StringUtils.join(values, separator));
+                    answers.add(StringUtils.join(values, ""));
                 }
             }
         } else {
             if (QuesStructType.SINGLE_ANSWER_QUESTION == question.getQuestionType()
                     || QuesStructType.MULTIPLE_ANSWER_QUESTION == question.getQuestionType()) {
                 List<String> values = QuestionAnswerConvert.parseQuestionOptionAnswerList(question.getQuesOptions());
-                answers.add(StringUtils.join(values, separator));
+                // 选择题 - 转换为新答案格式
+                answers.add(StringUtils.join(values, ""));
             } else {
                 List<String> values = QuestionAnswerConvert.parseQuestionAnswerList(question);
-                answers.add(StringUtils.join(values, separator));
+                answers.add(StringUtils.join(values, ""));
             }
         }
 

+ 1 - 0
examcloud-core-questions-starter/pom.xml

@@ -55,6 +55,7 @@
                 <artifactId>maven-assembly-plugin</artifactId>
                 <configuration>
                     <finalName>examcloud-core-questions</finalName>
+                    <skipAssembly>${skipAssembly}</skipAssembly>
                     <descriptors>
                         <descriptor>assembly.xml</descriptor>
                     </descriptors>

+ 1 - 0
examcloud-core-questions-starter/src/main/resources/log4j2.xml

@@ -36,6 +36,7 @@
 
     <Loggers>
         <logger name="springfox.documentation" level="WARN"/>
+        <logger name="org.mongodb.driver" level="WARN"/>
         <logger name="org.springframework" level="WARN"/>
         <logger name="org.hibernate" level="WARN"/>
         <logger name="org.apache" level="WARN"/>