Browse Source

调整配置-UpYunProperty

deason 5 years ago
parent
commit
c8e0ba2d46
14 changed files with 320 additions and 405 deletions
  1. 4 4
      examcloud-core-questions-api-provider/src/main/java/cn/com/qmth/examcloud/core/questions/api/QuestionAudioController.java
  2. 29 69
      examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/ImportPaperService.java
  3. 7 18
      examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/UpYunService.java
  4. 128 0
      examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/config/UpYunProperty.java
  5. 14 26
      examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/export/ExportPaperAbstractService.java
  6. 4 17
      examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/export/InitPaperExpService.java
  7. 13 21
      examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/impl/ExamFileServiceImpl.java
  8. 5 11
      examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/impl/ExportPaperServiceImpl.java
  9. 21 27
      examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/impl/ExportStructureServiceImpl.java
  10. 7 22
      examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/impl/ExtractConfigFileServiceImpl.java
  11. 4 4
      examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/impl/ExtractConfigProviderServiceImpl.java
  12. 26 58
      examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/impl/ExtractConfigServiceImpl.java
  13. 42 99
      examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/impl/PaperServiceImpl.java
  14. 16 29
      examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/impl/QuestionAudioServiceImpl.java

+ 4 - 4
examcloud-core-questions-api-provider/src/main/java/cn/com/qmth/examcloud/core/questions/api/QuestionAudioController.java

@@ -2,10 +2,10 @@ package cn.com.qmth.examcloud.core.questions.api;
 
 import cn.com.qmth.examcloud.core.questions.dao.entity.QuestionAudio;
 import cn.com.qmth.examcloud.core.questions.service.QuestionAudioService;
+import cn.com.qmth.examcloud.core.questions.service.config.UpYunProperty;
 import cn.com.qmth.examcloud.web.support.Naked;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -22,8 +22,8 @@ import org.springframework.web.bind.annotation.RestController;
 @RestController
 @RequestMapping("${api_cqb}/")
 public class QuestionAudioController {
-    @Value("${upyun.downloadUrl}")
-    private String downloadUrl;
+    @Autowired
+    private UpYunProperty upYunProperty;
 
     @Autowired
     private QuestionAudioService questionAudioService;
@@ -43,7 +43,7 @@ public class QuestionAudioController {
 
         if (questionAudio != null) {
             //补全路径
-            questionAudio.setFileUrl(downloadUrl + questionAudio.getFileUrl());
+            questionAudio.setFileUrl(upYunProperty.getDownloadUrl() + questionAudio.getFileUrl());
         }
 
         return new ResponseEntity<>(questionAudio, HttpStatus.OK);

+ 29 - 69
examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/ImportPaperService.java

@@ -1,32 +1,21 @@
 package cn.com.qmth.examcloud.core.questions.service;
 
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Random;
-import java.util.Set;
-import java.util.UUID;
-import java.util.regex.Pattern;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
-
+import cn.com.qmth.examcloud.api.commons.security.bean.User;
+import cn.com.qmth.examcloud.core.questions.base.BeanCopierUtil;
+import cn.com.qmth.examcloud.core.questions.base.CommonUtils;
 import cn.com.qmth.examcloud.core.questions.base.Model;
-import cn.com.qmth.examcloud.core.questions.dao.entity.Course;
-import cn.com.qmth.examcloud.core.questions.dao.CoursePropertyRepo;
-import cn.com.qmth.examcloud.core.questions.dao.PropertyRepo;
-import cn.com.qmth.examcloud.core.questions.dao.QuesPkgPathRepo;
-import cn.com.qmth.examcloud.core.questions.dao.entity.QuestionPkgPath;
+import cn.com.qmth.examcloud.core.questions.base.enums.PaperStatus;
+import cn.com.qmth.examcloud.core.questions.base.enums.PaperType;
+import cn.com.qmth.examcloud.core.questions.base.enums.QuesUnit;
+import cn.com.qmth.examcloud.core.questions.base.exception.PaperException;
+import cn.com.qmth.examcloud.core.questions.base.question.enums.QuesStructType;
+import cn.com.qmth.examcloud.core.questions.base.word.DocxProcessUtil;
+import cn.com.qmth.examcloud.core.questions.dao.*;
+import cn.com.qmth.examcloud.core.questions.dao.entity.*;
+import cn.com.qmth.examcloud.core.questions.service.config.UpYunProperty;
+import cn.com.qmth.examcloud.core.questions.service.impl.CourseService;
+import com.google.gson.Gson;
 import main.java.com.UpYun;
-
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang3.ArrayUtils;
@@ -36,40 +25,19 @@ import org.docx4j.wml.P;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
 import org.springframework.data.domain.Example;
 import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.commons.CommonsMultipartFile;
 
-import com.google.gson.Gson;
-
-import cn.com.qmth.examcloud.core.questions.dao.PaperDetailRepo;
-import cn.com.qmth.examcloud.core.questions.dao.PaperDetailUnitRepo;
-import cn.com.qmth.examcloud.core.questions.dao.PaperRepo;
-import cn.com.qmth.examcloud.core.questions.dao.entity.ImportPaperCheck;
-import cn.com.qmth.examcloud.core.questions.dao.entity.ImportPaperMsg;
-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.QuesRepo;
-import cn.com.qmth.examcloud.core.questions.dao.entity.CourseProperty;
-import cn.com.qmth.examcloud.core.questions.dao.entity.Property;
-import cn.com.qmth.examcloud.core.questions.dao.entity.QuesOption;
-import cn.com.qmth.examcloud.core.questions.dao.entity.QuesProperty;
-import cn.com.qmth.examcloud.core.questions.dao.entity.Question;
-import cn.com.qmth.examcloud.core.questions.dao.entity.QuestionAudio;
-import cn.com.qmth.examcloud.core.questions.dao.entity.QuestionType;
-import cn.com.qmth.examcloud.core.questions.service.QuesService;
-import cn.com.qmth.examcloud.core.questions.service.impl.CourseService;
-import cn.com.qmth.examcloud.core.questions.base.CommonUtils;
-import cn.com.qmth.examcloud.core.questions.base.enums.PaperStatus;
-import cn.com.qmth.examcloud.core.questions.base.enums.PaperType;
-import cn.com.qmth.examcloud.core.questions.base.enums.QuesUnit;
-import cn.com.qmth.examcloud.core.questions.base.exception.PaperException;
-import cn.com.qmth.examcloud.core.questions.base.word.DocxProcessUtil;
-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.base.BeanCopierUtil;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.math.BigDecimal;
+import java.util.*;
+import java.util.regex.Pattern;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 @Service
 public class ImportPaperService {
@@ -117,17 +85,8 @@ public class ImportPaperService {
     @Autowired
     QuestionAudioService questionAudioService;
 
-    @Value("${$upyun.site.2.bucketName}")
-    protected String bucketName;
-
-    @Value("${$upyun.site.2.userName}")
-    protected String userName;
-
-    @Value("${$upyun.site.2.password}")
-    protected String password;
-
-    @Value("${upyun.audio.uploadUrl}")
-    private String upyunRadioPath;
+    @Autowired
+    UpYunProperty upYunProperty;
 
     public static final String TEMP_FILE_EXP = "docxExport/";
 
@@ -1850,7 +1809,7 @@ public class ImportPaperService {
                     int randomNumber = random.nextInt(1000);
                     //定义文件下载名称,下载音频文件
                     String newAudioFileName = newQuestion.getId() + "_" + randomNumber + "_" + oldAudio.getFileName();
-                    UpYun upyun = new UpYun(bucketName, userName, password);
+                    UpYun upyun = new UpYun(upYunProperty.getBucketName(), upYunProperty.getUserName(), upYunProperty.getPassword());
                     //下载音频
                     File audioFile = new File(copyAudioPath + File.separator + newAudioFileName);
                     try {
@@ -1860,10 +1819,11 @@ public class ImportPaperService {
                         throw new RuntimeException("下载音频失败");
                     }
                     //重新上传新的音频文件
-                    upyun.writeFile(upyunRadioPath + newAudioFileName, audioFile, true);
+                    upyun.writeFile(upYunProperty.getRadioUploadPath() + newAudioFileName, audioFile, true);
                     audioFile.delete();
+
                     //拷贝旧对象
-                    QuestionAudio newAudio = new QuestionAudio(newQuestion.getId(), oldAudio.getFileName(), upyunRadioPath + newAudioFileName);
+                    QuestionAudio newAudio = new QuestionAudio(newQuestion.getId(), oldAudio.getFileName(), upYunProperty.getRadioUploadPath() + newAudioFileName);
                     newAudio.setCreateTime(new Date());
                     newAudio.setCreateUser(user.getDisplayName());
                     questionAudioService.saveQuestionAudio(newAudio, user);

+ 7 - 18
examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/UpYunService.java

@@ -1,16 +1,10 @@
-/*
- * *************************************************
- * Copyright (c) 2018 QMTH. All Rights Reserved.
- * Created by Deason on 2018-07-09 17:11:56.
- * *************************************************
- */
-
 package cn.com.qmth.examcloud.core.questions.service;
 
+import cn.com.qmth.examcloud.core.questions.service.config.UpYunProperty;
 import main.java.com.UpYun;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Value;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.UUID;
@@ -18,18 +12,13 @@ import java.util.UUID;
 @Service
 public class UpYunService {
     protected static final Logger log = LoggerFactory.getLogger(UpYunService.class);
-    @Value("${$upyun.site.2.bucketName}")
-    private String bucketName;
-    @Value("${$upyun.site.2.userName}")
-    private String userName;
-    @Value("${$upyun.site.2.password}")
-    private String password;
-    @Value("${upyun.audio.uploadUrl}")
-    private String upYunRadioPath;
     public static final String TEMP_FILE_EXP = "docxExport/";
 
+    @Autowired
+    private UpYunProperty upYunProperty;
+
     public UpYun getInstance() {
-        UpYun upyun = new UpYun(bucketName, userName, password);
+        UpYun upyun = new UpYun(upYunProperty.getBucketName(), upYunProperty.getUserName(), upYunProperty.getPassword());
         upyun.setDebug(true);
         upyun.setTimeout(15);
         upyun.setApiDomain(UpYun.ED_AUTO);
@@ -37,7 +26,7 @@ public class UpYunService {
     }
 
     public String getUpYunRadioPath() {
-        return upYunRadioPath;
+        return upYunProperty.getRadioUploadPath();
     }
 
     public String randomUUID() {

+ 128 - 0
examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/config/UpYunProperty.java

@@ -0,0 +1,128 @@
+package cn.com.qmth.examcloud.core.questions.service.config;
+
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+@Component
+public class UpYunProperty {
+    @Value("${$upyun.site.1.bucketName}")
+    protected String bucketName;
+
+    @Value("${$upyun.site.1.userName}")
+    protected String userName;
+
+    @Value("${$upyun.site.1.domain}")
+    protected String domain;
+
+    @Value("${$upyun.site.1.password}")
+    protected String password;
+
+    @Value("${upyun.downloadUrl}")
+    protected String downloadUrl;
+
+    @Value("${upyun.uploadUrl}")
+    private String uploadPath;
+
+    @Value("${upyun.audio.uploadUrl}")
+    private String radioUploadPath;
+
+    @Value("${upyun.radioType}")
+    private String radioType;
+
+    @Value("${upyun.audio.maxsize}")
+    private String audioMaxsize;
+
+    @Value("${upyun.downloadDirectory}")
+    private String downloadDirectory;
+
+    @Value("${upyun.zipDirectory}")
+    private String zipDirectory;
+
+    public String getBucketName() {
+        return bucketName;
+    }
+
+    public void setBucketName(String bucketName) {
+        this.bucketName = bucketName;
+    }
+
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
+    public String getDomain() {
+        return domain;
+    }
+
+    public void setDomain(String domain) {
+        this.domain = domain;
+    }
+
+    public String getPassword() {
+        return password;
+    }
+
+    public void setPassword(String password) {
+        this.password = password;
+    }
+
+    public String getDownloadUrl() {
+        return downloadUrl;
+    }
+
+    public void setDownloadUrl(String downloadUrl) {
+        this.downloadUrl = downloadUrl;
+    }
+
+    public String getUploadPath() {
+        return uploadPath;
+    }
+
+    public void setUploadPath(String uploadPath) {
+        this.uploadPath = uploadPath;
+    }
+
+    public String getRadioUploadPath() {
+        return radioUploadPath;
+    }
+
+    public void setRadioUploadPath(String radioUploadPath) {
+        this.radioUploadPath = radioUploadPath;
+    }
+
+    public String getRadioType() {
+        return radioType;
+    }
+
+    public void setRadioType(String radioType) {
+        this.radioType = radioType;
+    }
+
+    public String getAudioMaxsize() {
+        return audioMaxsize;
+    }
+
+    public void setAudioMaxsize(String audioMaxsize) {
+        this.audioMaxsize = audioMaxsize;
+    }
+
+    public String getDownloadDirectory() {
+        return downloadDirectory;
+    }
+
+    public void setDownloadDirectory(String downloadDirectory) {
+        this.downloadDirectory = downloadDirectory;
+    }
+
+    public String getZipDirectory() {
+        return zipDirectory;
+    }
+
+    public void setZipDirectory(String zipDirectory) {
+        this.zipDirectory = zipDirectory;
+    }
+}

+ 14 - 26
examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/export/ExportPaperAbstractService.java

@@ -17,6 +17,7 @@ import cn.com.qmth.examcloud.core.questions.service.PaperDetailService;
 import cn.com.qmth.examcloud.core.questions.service.PaperService;
 import cn.com.qmth.examcloud.core.questions.service.QuestionAudioService;
 import cn.com.qmth.examcloud.core.questions.service.bean.dto.*;
+import cn.com.qmth.examcloud.core.questions.service.config.UpYunProperty;
 import com.google.gson.Gson;
 import freemarker.template.Configuration;
 import freemarker.template.Template;
@@ -31,7 +32,6 @@ import org.docx4j.wml.*;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
 import org.springframework.data.domain.Example;
 
 import javax.xml.bind.JAXBElement;
@@ -92,6 +92,9 @@ public abstract class ExportPaperAbstractService {
     @Autowired
     protected QuesPkgPathRepo quesPkgPathRepo;
 
+    @Autowired
+    private UpYunProperty upYunProperty;
+
     public static final String FILL_BLANK_QUESTION_FLAG = "###";
 
     public static final String TEMP_FILE_EXP = "docxExport/";
@@ -213,21 +216,6 @@ public abstract class ExportPaperAbstractService {
     //原卷word A4 模板
     public static Template ORIGINAL_PAPER;
 
-    @Value("${$upyun.site.2.bucketName}")
-    protected String bucketName;
-
-    @Value("${$upyun.site.2.userName}")
-    protected String userName;
-
-    @Value("${$upyun.site.2.password}")
-    protected String password;
-
-    @Value("${upyun.uploadUrl}")
-    protected String uploadUrl;
-
-    @Value("${upyun.downloadUrl}")
-    protected String downloadUrl;
-
     public static Configuration CONFIGURATION;
 
     static {
@@ -890,8 +878,8 @@ public abstract class ExportPaperAbstractService {
             FileDisposeUtil.fileToZip(jsonDirectoryPath, "docxExport", jsonDirectoryName);
             //上传zip压缩包到又拍云
             File zipFile = new File(TEMP_FILE_EXP + jsonDirectoryName + ZIP_SUFFIX);
-            String zipUpyunFilePath = uploadUrl + extractConfig.getOrgId() + "/" + jsonDirectoryName + ZIP_SUFFIX;
-            UpYun upyun = new UpYun(bucketName, userName, password);
+            String zipUpyunFilePath = upYunProperty.getUploadPath() + extractConfig.getOrgId() + "/" + jsonDirectoryName + ZIP_SUFFIX;
+            UpYun upyun = new UpYun(upYunProperty.getBucketName(), upYunProperty.getUserName(), upYunProperty.getPassword());
             upyun.writeFile(zipUpyunFilePath, zipFile, true);
             //保存数据库记录
             ExamFile examFile = new ExamFile(computerTestPaper, extractConfig, zipUpyunFilePath, ExamFileType.COMPUTERTEST_PACKAGE, ZIP_SUFFIX);
@@ -991,7 +979,7 @@ public abstract class ExportPaperAbstractService {
                                     + "_2_" + option.getNumber() + oNum + "." + audio.getFileSuffixes();
                             oNum++;
                         }
-                        FileDisposeUtil.saveUrlAs(downloadUrl + audio.getFileUrl(), jsonDirectoryPath + File.separator + audioFileName);
+                        FileDisposeUtil.saveUrlAs(upYunProperty.getDownloadUrl() + audio.getFileUrl(), jsonDirectoryPath + File.separator + audioFileName);
                     }
                 }
             }
@@ -1008,8 +996,8 @@ public abstract class ExportPaperAbstractService {
             DocxProcessUtil.exportWord(paperExp, paperfileName, template);
             DocxProcessUtil.processImage(paperfileName, getPkgList(paperExp.getId()));
             File file = new File(TEMP_FILE_EXP + paperfileName);
-            String paperFilePath = uploadUrl + extractConfig.getOrgId() + "/" + paperfileName;
-            UpYun upyun = new UpYun(bucketName, userName, password);
+            String paperFilePath = upYunProperty.getUploadPath() + extractConfig.getOrgId() + "/" + paperfileName;
+            UpYun upyun = new UpYun(upYunProperty.getBucketName(), upYunProperty.getUserName(), upYunProperty.getPassword());
             upyun.writeFile(paperFilePath, file, true);
             ExamFile examFile = new ExamFile(paperExp.getId(), extractConfig, paperFilePath, examFileType, DOCX_SUFFIX);
             examFile.setGroupCode(examPaper.getGroupCode());
@@ -1058,8 +1046,8 @@ public abstract class ExportPaperAbstractService {
             File file = new File(TEMP_FILE_EXP + objectiveFilename);
             FileOutputStream out = new FileOutputStream(file);
             objectiveExcelExporter.write(objectiveFilename, objectiveQuestionStructureList, out);
-            String objectiveFilePath = uploadUrl + extractConfig.getOrgId() + "/" + objectiveFilename;
-            UpYun upyun = new UpYun(bucketName, userName, password);
+            String objectiveFilePath = upYunProperty.getUploadPath() + extractConfig.getOrgId() + "/" + objectiveFilename;
+            UpYun upyun = new UpYun(upYunProperty.getBucketName(), upYunProperty.getUserName(), upYunProperty.getPassword());
             upyun.writeFile(objectiveFilePath, file, true);
             ExamFile examFile = new ExamFile(paperExp.getId(), extractConfig, objectiveFilePath, ExamFileType.PAPER_STRUCTURE_OBJECTIVE, EXCEL_SUFFIX);
             examFile.setGroupCode(examPaper.getGroupCode());
@@ -1095,8 +1083,8 @@ public abstract class ExportPaperAbstractService {
             File file = new File(TEMP_FILE_EXP + subjectiveFileName);
             FileOutputStream out = new FileOutputStream(file);
             subjectiveExcelExporter.write(subjectiveFileName, subjectiveQuestionStructureList, out);
-            String subjectiveFilePath = uploadUrl + extractConfig.getOrgId() + "/" + subjectiveFileName;
-            UpYun upyun = new UpYun(bucketName, userName, password);
+            String subjectiveFilePath = upYunProperty.getUploadPath() + extractConfig.getOrgId() + "/" + subjectiveFileName;
+            UpYun upyun = new UpYun(upYunProperty.getBucketName(), upYunProperty.getUserName(), upYunProperty.getPassword());
             upyun.writeFile(subjectiveFilePath, file, true);
             ExamFile examFile = new ExamFile(paperExp.getId(), extractConfig, subjectiveFilePath, ExamFileType.PAPER_STRUCTURE_SUBJECTIVE, EXCEL_SUFFIX);
             examFile.setGroupCode(examPaper.getGroupCode());
@@ -1373,7 +1361,7 @@ public abstract class ExportPaperAbstractService {
     public void downloadAudio(PaperExp paperExp, String zipFileName) {
         //先判断是否是音频试卷
         if (paperExp.getHasAudio() != null && paperExp.getHasAudio() == true) {
-            UpYun upyun = new UpYun(bucketName, userName, password);
+            UpYun upyun = new UpYun(upYunProperty.getBucketName(), upYunProperty.getUserName(), upYunProperty.getPassword());
             //取到所有大题
             List<PaperDetailExp> paperDetailExps = paperExp.getPaperDetails();
             if (paperDetailExps != null && paperDetailExps.size() > 0) {

+ 4 - 17
examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/export/InitPaperExpService.java

@@ -16,6 +16,7 @@ import cn.com.qmth.examcloud.core.questions.service.QuestionAudioService;
 import cn.com.qmth.examcloud.core.questions.service.bean.dto.PaperDetailExp;
 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.service.config.UpYunProperty;
 import cn.com.qmth.examcloud.core.questions.service.impl.CourseService;
 import org.apache.commons.lang3.StringUtils;
 import org.docx4j.XmlUtils;
@@ -25,7 +26,6 @@ import org.docx4j.wml.P;
 import org.docx4j.wml.R;
 import org.docx4j.wml.Text;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
 import javax.xml.bind.JAXBElement;
@@ -38,7 +38,6 @@ import java.util.regex.Pattern;
  * @author weiwenhai
  * @describle 初始化导出对象service
  * @date 2017.10.17
- * @code 090
  */
 @Service("initPaperExpService")
 public class InitPaperExpService {
@@ -73,6 +72,9 @@ public class InitPaperExpService {
     @Autowired
     CourseService courseService;
 
+    @Autowired
+    private UpYunProperty upYunProperty;
+
     public static final String FILL_BLANK_QUESTION_FLAG = "###";
 
     public static final String TEMP_FILE_EXP = "docxExport/";
@@ -92,21 +94,6 @@ public class InitPaperExpService {
 
     public static final String ENCODING = "UTF-8";
 
-    @Value("${$upyun.site.2.bucketName}")
-    public String bucketName;
-
-    @Value("${$upyun.site.2.userName}")
-    public String userName;
-
-    @Value("${$upyun.site.2.password}")
-    public String password;
-
-    @Value("${upyun.uploadUrl}")
-    public String uploadUrl;
-
-    @Value("${upyun.downloadUrl}")
-    public String downloadUrl;
-
     /**
      * 根据paper得到导出试卷对象PaperExp
      */

+ 13 - 21
examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/impl/ExamFileServiceImpl.java

@@ -1,48 +1,40 @@
 package cn.com.qmth.examcloud.core.questions.service.impl;
 
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-
+import cn.com.qmth.examcloud.api.commons.security.bean.User;
+import cn.com.qmth.examcloud.core.questions.dao.ExamFileRepo;
+import cn.com.qmth.examcloud.core.questions.dao.entity.ExamFile;
+import cn.com.qmth.examcloud.core.questions.service.ExamFileService;
+import cn.com.qmth.examcloud.core.questions.service.bean.dto.ExportPaperInfoModel;
+import cn.com.qmth.examcloud.core.questions.service.config.UpYunProperty;
 import main.java.com.UpYun;
-
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
 import org.springframework.data.domain.Example;
 import org.springframework.data.mongodb.core.MongoTemplate;
 import org.springframework.data.mongodb.core.query.Criteria;
 import org.springframework.data.mongodb.core.query.Query;
 import org.springframework.stereotype.Service;
 
-import cn.com.qmth.examcloud.api.commons.security.bean.User;
-import cn.com.qmth.examcloud.core.questions.dao.ExamFileRepo;
-import cn.com.qmth.examcloud.core.questions.service.bean.dto.ExportPaperInfoModel;
-import cn.com.qmth.examcloud.core.questions.dao.entity.ExamFile;
-import cn.com.qmth.examcloud.core.questions.service.ExamFileService;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
 
 /**
  * @author chenken
  * @date 2017年7月13日 下午4:48:02
  * @company QMTH
- * @description ExamFileServiceImpl.java
  */
 @Service("examFileService")
 public class ExamFileServiceImpl implements ExamFileService {
 
     @Autowired
     private ExamFileRepo examFileRepo;
+
     @Autowired
     private MongoTemplate MongoTemplate;
 
-    @Value("${$upyun.site.2.bucketName}")
-    protected String bucketName;
-
-    @Value("${$upyun.site.2.userName}")
-    protected String userName;
-
-    @Value("${$upyun.site.2.password}")
-    protected String password;
+    @Autowired
+    private UpYunProperty upYunProperty;
 
     @Override
     public void saveExamFiles(List<ExamFile> examFileList, User accessUser) {
@@ -100,7 +92,7 @@ public class ExamFileServiceImpl implements ExamFileService {
         query.addCriteria(Criteria.where("examId").is(examFile.getExamId()));
         query.addCriteria(Criteria.where("courseId").is(examFile.getCourseId()));
         List<ExamFile> examFiles = MongoTemplate.find(query, ExamFile.class);
-        UpYun upyun = new UpYun(bucketName, userName, password);
+        UpYun upyun = new UpYun(upYunProperty.getBucketName(), upYunProperty.getUserName(), upYunProperty.getPassword());
         for (ExamFile examFile2 : examFiles) {
             //删除又拍云上的文件
             upyun.deleteFile(examFile2.getFilePath());

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

@@ -18,6 +18,7 @@ import cn.com.qmth.examcloud.core.questions.service.PaperService;
 import cn.com.qmth.examcloud.core.questions.service.PropertyService;
 import cn.com.qmth.examcloud.core.questions.service.bean.dto.PaperExp;
 import cn.com.qmth.examcloud.core.questions.service.bean.dto.QuestionDistributeDto;
+import cn.com.qmth.examcloud.core.questions.service.config.UpYunProperty;
 import cn.com.qmth.examcloud.core.questions.service.converter.PrintExamPaperService;
 import cn.com.qmth.examcloud.core.questions.service.export.ExportPaperAbstractService;
 import com.google.common.collect.Lists;
@@ -34,7 +35,6 @@ import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.docx4j.Docx4J;
 import org.docx4j.openpackaging.packages.WordprocessingMLPackage;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
 import org.springframework.data.mongodb.core.MongoTemplate;
 import org.springframework.data.mongodb.core.query.Criteria;
 import org.springframework.data.mongodb.core.query.Query;
@@ -89,14 +89,8 @@ public class ExportPaperServiceImpl implements ExportPaperService {
     @Autowired
     protected QuesPkgPathRepo quesPkgPathRepo;
 
-    @Value("${$upyun.site.2.bucketName}")
-    protected String bucketName;
-
-    @Value("${$upyun.site.2.userName}")
-    protected String userName;
-
-    @Value("${$upyun.site.2.password}")
-    protected String password;
+    @Autowired
+    private UpYunProperty upYunProperty;
 
     @Override
     public void exportPaperFile(String paperId, String serviceName, String exportContentList, HttpServletResponse response, String loginName, String examType, String psw) throws Exception {
@@ -210,7 +204,7 @@ public class ExportPaperServiceImpl implements ExportPaperService {
                                         String audioFileName = questionAudio.getId() + "_" +
                                                 detail.getNumber() + "_" + question.getNumber() +
                                                 "_1_" + bodyNum + "." + questionAudio.getFileSuffixes();
-                                        UpYun upyun = new UpYun(bucketName, userName, password);
+                                        UpYun upyun = new UpYun(upYunProperty.getBucketName(), upYunProperty.getUserName(), upYunProperty.getPassword());
                                         File file = new File(jsonDirectory + File.separator + audioFileName);
                                         upyun.readFile(questionAudio.getFileUrl(), file);
                                         bodyNum++;
@@ -237,7 +231,7 @@ public class ExportPaperServiceImpl implements ExportPaperService {
                                                     String audioFileName = questionAudio.getId() + "_" +
                                                             detail.getNumber() + "_" + question.getNumber() +
                                                             "_2_" + computerTestOption.getNumber() + "_" + optionNum + "." + questionAudio.getFileSuffixes();
-                                                    UpYun upyun = new UpYun(bucketName, userName, password);
+                                                    UpYun upyun = new UpYun(upYunProperty.getBucketName(), upYunProperty.getUserName(), upYunProperty.getPassword());
                                                     File file = new File(jsonDirectory + File.separator + audioFileName);
                                                     upyun.readFile(questionAudio.getFileUrl(), file);
                                                     optionNum++;

+ 21 - 27
examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/impl/ExportStructureServiceImpl.java

@@ -1,23 +1,8 @@
 package cn.com.qmth.examcloud.core.questions.service.impl;
 
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-
-import cn.com.qmth.examcloud.core.questions.base.Model;
-import main.java.com.UpYun;
-
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.data.domain.*;
-import org.springframework.data.mongodb.core.MongoTemplate;
-import org.springframework.data.mongodb.core.query.Criteria;
-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.security.bean.User;
+import cn.com.qmth.examcloud.core.questions.base.Model;
+import cn.com.qmth.examcloud.core.questions.base.enums.ExportType;
 import cn.com.qmth.examcloud.core.questions.dao.ExamFileRepo;
 import cn.com.qmth.examcloud.core.questions.dao.ExportStructureRepo;
 import cn.com.qmth.examcloud.core.questions.dao.ExtractConfigRepo;
@@ -27,7 +12,22 @@ import cn.com.qmth.examcloud.core.questions.dao.entity.ExtractConfig;
 import cn.com.qmth.examcloud.core.questions.dao.entity.QuestionTypeNum;
 import cn.com.qmth.examcloud.core.questions.service.ExamFileService;
 import cn.com.qmth.examcloud.core.questions.service.ExportStructureService;
-import cn.com.qmth.examcloud.core.questions.base.enums.ExportType;
+import cn.com.qmth.examcloud.core.questions.service.config.UpYunProperty;
+import main.java.com.UpYun;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageImpl;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.data.mongodb.core.MongoTemplate;
+import org.springframework.data.mongodb.core.query.Criteria;
+import org.springframework.data.mongodb.core.query.Query;
+import org.springframework.data.mongodb.core.query.Update;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
 
 /**
  * @author chenken
@@ -53,14 +53,8 @@ public class ExportStructureServiceImpl implements ExportStructureService {
     @Autowired
     private MongoTemplate mongoTemplate;
 
-    @Value("${$upyun.site.2.bucketName}")
-    protected String bucketName;
-
-    @Value("${$upyun.site.2.userName}")
-    protected String userName;
-
-    @Value("${$upyun.site.2.password}")
-    protected String password;
+    @Autowired
+    private UpYunProperty upYunProperty;
 
     @Override
     public void saveExportStructure(ExportStructure exportStructure, User user) {
@@ -153,7 +147,7 @@ public class ExportStructureServiceImpl implements ExportStructureService {
             List<ExamFile> list = examFileService.findExamFileListByExamFile(new ExamFile(exportStructure.getExamId(), exportStructure.getOrgId()));
             if (list.size() > 0) {
                 //根据 ExamFile 对象查询  filePath ,并删除又拍云上的文件 , 然后在删除表里面的数据
-                UpYun upyun = new UpYun(bucketName, userName, password);
+                UpYun upyun = new UpYun(upYunProperty.getBucketName(), upYunProperty.getUserName(), upYunProperty.getPassword());
                 for (int i = 0; i < list.size(); i++) {
                     upyun.deleteFile(list.get(i).getFilePath());
                 }

+ 7 - 22
examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/impl/ExtractConfigFileServiceImpl.java

@@ -18,6 +18,7 @@ import cn.com.qmth.examcloud.core.questions.dao.PaperRepo;
 import cn.com.qmth.examcloud.core.questions.dao.entity.*;
 import cn.com.qmth.examcloud.core.questions.service.*;
 import cn.com.qmth.examcloud.core.questions.service.bean.dto.*;
+import cn.com.qmth.examcloud.core.questions.service.config.UpYunProperty;
 import cn.com.qmth.examcloud.core.questions.service.converter.PrintExamPaperService;
 import cn.com.qmth.examcloud.core.questions.service.export.ExportPaperAbstractService;
 import cn.com.qmth.examcloud.core.questions.service.export.InitPaperExpService;
@@ -34,7 +35,6 @@ import org.docx4j.openpackaging.packages.WordprocessingMLPackage;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
 import javax.servlet.http.HttpServletResponse;
@@ -98,23 +98,8 @@ public class ExtractConfigFileServiceImpl implements ExtractConfigFileService {
     @Autowired
     private ExamCloudService examCloudService;
 
-    @Value("${upyun.downloadUrl}")
-    protected String downloadUrl;
-
-    @Value("${upyun.downloadDirectory}")
-    private String downloadDirectory;
-
-    @Value("${upyun.zipDirectory}")
-    private String zipDirectory;
-
-    @Value("${$upyun.site.2.bucketName}")
-    protected String bucketName;
-
-    @Value("${$upyun.site.2.userName}")
-    protected String userName;
-
-    @Value("${$upyun.site.2.password}")
-    protected String password;
+    @Autowired
+    private UpYunProperty upYunProperty;
 
     @Override
     public void saveExtractConfigAndBuildPaperFile(ExtractConfig extractConfig, Integer isbuildFile, User user) throws Exception {
@@ -199,8 +184,8 @@ public class ExtractConfigFileServiceImpl implements ExtractConfigFileService {
     @Override
     public void exportExamPaperInfo(ExportPaperInfoModel exportModel, HttpServletResponse response, String loginName, String orgName, String psw) throws Exception {
         String tempDir = loginName + System.currentTimeMillis();
-        String downloadDir = downloadDirectory + "/" + tempDir;
-        String downZipDir = zipDirectory + "/" + tempDir;
+        String downloadDir = upYunProperty.getDownloadDirectory() + "/" + tempDir;
+        String downZipDir = upYunProperty.getZipDirectory() + "/" + tempDir;
         //创建试卷和压缩文件 文件夹
         FileDisposeUtil.createDirectory(downloadDir);
         //创建压缩文件的文件夹
@@ -246,7 +231,7 @@ public class ExtractConfigFileServiceImpl implements ExtractConfigFileService {
         if (examFiles != null && examFiles.size() > 0) {
             for (int i = 0; i < examFiles.size(); i++) {
                 ExamFile examFile = examFiles.get(i);
-                UpYun upyun = new UpYun(bucketName, userName, password);
+                UpYun upyun = new UpYun(upYunProperty.getBucketName(), upYunProperty.getUserName(), upYunProperty.getPassword());
                 File file = new File(downloadDir + File.separator + examFile.getFileName());
                 upyun.readFile(examFile.getFilePath(), file);
 
@@ -319,7 +304,7 @@ public class ExtractConfigFileServiceImpl implements ExtractConfigFileService {
                             for (QuestionAudio audio : questionAudios) {
                                 String audioFileName = audio.getId() +
                                         "_" + exportPaperAbstractService.getAudioFileName(audio, unit, paperDetailExp);
-                                UpYun upyun = new UpYun(bucketName, userName, password);
+                                UpYun upyun = new UpYun(upYunProperty.getBucketName(), upYunProperty.getUserName(), upYunProperty.getPassword());
                                 File file = new File(downloadDir + File.separator + audioFileName);
                                 upyun.readFile(audio.getFileUrl(), file);
                             }

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

@@ -9,6 +9,7 @@ import cn.com.qmth.examcloud.core.questions.base.question.enums.QuesStructType;
 import cn.com.qmth.examcloud.core.questions.dao.*;
 import cn.com.qmth.examcloud.core.questions.dao.entity.*;
 import cn.com.qmth.examcloud.core.questions.service.*;
+import cn.com.qmth.examcloud.core.questions.service.config.UpYunProperty;
 import cn.com.qmth.examcloud.question.commons.core.paper.DefaultPaper;
 import cn.com.qmth.examcloud.question.commons.core.paper.DefaultQuestionGroup;
 import cn.com.qmth.examcloud.question.commons.core.paper.DefaultQuestionStructureWrapper;
@@ -18,7 +19,6 @@ import cn.com.qmth.examcloud.question.commons.core.question.*;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
 import org.springframework.data.domain.Example;
 import org.springframework.stereotype.Service;
 
@@ -66,8 +66,8 @@ public class ExtractConfigProviderServiceImpl implements ExtractConfigProviderSe
     @Autowired
     private PaperService paperService;
 
-    @Value("${upyun.downloadUrl}")
-    private String downloadUrl;
+    @Autowired
+    private UpYunProperty upYunProperty;
 
     @Override
     public Map<String, Object> getDefaultPaper(Long examId, String courseCode, String groupCode) {
@@ -537,7 +537,7 @@ public class ExtractConfigProviderServiceImpl implements ExtractConfigProviderSe
                     String questionAudioId = matchAudioName(containAStr, "a", "id");
                     QuestionAudio questionAudio = questionAudioService.findAudioById(questionAudioId);
                     if (questionAudio != null) {
-                        String url = downloadUrl + questionAudio.getFileUrl();
+                        String url = upYunProperty.getDownloadUrl() + questionAudio.getFileUrl();
                         if (playTime != null) {
                             containAStr += " question-audio url=\"" + url + "\" playTime=\"" + playTime + "\"" + "></a>";
                         } else {

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

@@ -1,26 +1,32 @@
 package cn.com.qmth.examcloud.core.questions.service.impl;
 
 
-import java.util.*;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-import java.util.stream.Collectors;
-
+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.BeanCopierUtil;
+import cn.com.qmth.examcloud.core.questions.base.CommonUtils;
 import cn.com.qmth.examcloud.core.questions.base.Model;
-import cn.com.qmth.examcloud.core.questions.service.bean.CouresInfo;
-import cn.com.qmth.examcloud.core.questions.service.bean.PaperDetailDtoAssembler;
-import cn.com.qmth.examcloud.core.questions.service.bean.PaperDetailUnitDtoAssembler;
-import cn.com.qmth.examcloud.core.questions.service.bean.PaperDtoAssembler;
-import cn.com.qmth.examcloud.core.questions.service.bean.SubQuestionDtoAssembler;
-import cn.com.qmth.examcloud.core.questions.dao.PaperDetailUnitNativeRepo;
-
+import cn.com.qmth.examcloud.core.questions.base.enums.PaperType;
+import cn.com.qmth.examcloud.core.questions.base.question.*;
+import cn.com.qmth.examcloud.core.questions.base.question.enums.QuesStructType;
+import cn.com.qmth.examcloud.core.questions.dao.*;
+import cn.com.qmth.examcloud.core.questions.dao.entity.*;
+import cn.com.qmth.examcloud.core.questions.service.*;
+import cn.com.qmth.examcloud.core.questions.service.bean.*;
+import cn.com.qmth.examcloud.core.questions.service.config.UpYunProperty;
+import cn.com.qmth.examcloud.examwork.api.ExamCloudService;
+import cn.com.qmth.examcloud.examwork.api.bean.ExamBean;
+import cn.com.qmth.examcloud.examwork.api.bean.ExamCourseRelationBean;
+import cn.com.qmth.examcloud.examwork.api.request.GetExamCourseListReq;
+import cn.com.qmth.examcloud.examwork.api.request.GetExamReq;
+import cn.com.qmth.examcloud.examwork.api.response.GetExamCourseListResp;
+import cn.com.qmth.examcloud.examwork.api.response.GetExamResp;
 import org.apache.commons.lang3.StringUtils;
 import org.nlpcn.commons.lang.util.StringUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
 import org.springframework.data.domain.Example;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageImpl;
@@ -33,48 +39,10 @@ import org.springframework.stereotype.Service;
 import org.springframework.util.Assert;
 import org.springframework.util.CollectionUtils;
 
-import cn.com.qmth.examcloud.core.questions.base.question.PaperDetailDto;
-import cn.com.qmth.examcloud.core.questions.base.question.PaperDetailUnitDto;
-import cn.com.qmth.examcloud.core.questions.base.question.PaperDto;
-import cn.com.qmth.examcloud.core.questions.base.question.QuesOptionDto;
-import cn.com.qmth.examcloud.core.questions.base.question.QuestionDto;
-import cn.com.qmth.examcloud.core.questions.base.question.SubQuestionDto;
-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.dao.entity.Course;
-import cn.com.qmth.examcloud.core.questions.dao.AudioTimeConfigRepo;
-import cn.com.qmth.examcloud.core.questions.dao.ExportServiceManageRepo;
-import cn.com.qmth.examcloud.core.questions.dao.ExtractConfigRepo;
-import cn.com.qmth.examcloud.core.questions.dao.PaperDetailRepo;
-import cn.com.qmth.examcloud.core.questions.dao.PaperDetailUnitRepo;
-import cn.com.qmth.examcloud.core.questions.dao.PaperRepo;
-import cn.com.qmth.examcloud.core.questions.dao.entity.AudioTimeConfig;
-import cn.com.qmth.examcloud.core.questions.dao.entity.ExamPaper;
-import cn.com.qmth.examcloud.core.questions.dao.entity.ExtractConfig;
-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.service.ExportStructureService;
-import cn.com.qmth.examcloud.core.questions.service.ExtractConfigService;
-import cn.com.qmth.examcloud.core.questions.service.PaperDetailUnitService;
-import cn.com.qmth.examcloud.core.questions.service.PaperService;
-import cn.com.qmth.examcloud.core.questions.dao.QuesRepo;
-import cn.com.qmth.examcloud.core.questions.dao.entity.QuesOption;
-import cn.com.qmth.examcloud.core.questions.dao.entity.Question;
-import cn.com.qmth.examcloud.core.questions.dao.entity.QuestionAudio;
-import cn.com.qmth.examcloud.core.questions.service.QuesService;
-import cn.com.qmth.examcloud.core.questions.service.QuestionAudioService;
-import cn.com.qmth.examcloud.core.questions.base.BeanCopierUtil;
-import cn.com.qmth.examcloud.core.questions.base.CommonUtils;
-import cn.com.qmth.examcloud.core.questions.base.enums.PaperType;
-import cn.com.qmth.examcloud.commons.exception.StatusException;
-import cn.com.qmth.examcloud.examwork.api.ExamCloudService;
-import cn.com.qmth.examcloud.examwork.api.bean.ExamBean;
-import cn.com.qmth.examcloud.examwork.api.bean.ExamCourseRelationBean;
-import cn.com.qmth.examcloud.examwork.api.request.GetExamCourseListReq;
-import cn.com.qmth.examcloud.examwork.api.request.GetExamReq;
-import cn.com.qmth.examcloud.examwork.api.response.GetExamCourseListResp;
-import cn.com.qmth.examcloud.examwork.api.response.GetExamResp;
+import java.util.*;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.stream.Collectors;
 
 /**
  * @author chenken
@@ -129,8 +97,8 @@ public class ExtractConfigServiceImpl implements ExtractConfigService {
     @Autowired
     private CourseService courseService;
 
-    @Value("${upyun.downloadUrl}")
-    private String downloadUrl;
+    @Autowired
+    private UpYunProperty upYunProperty;
 
     @Autowired
     private PaperDtoAssembler paperDtoAssembler;
@@ -893,7 +861,7 @@ public class ExtractConfigServiceImpl implements ExtractConfigService {
                     String questionAudioId = matchAudioName(containAStr, "a", "id");
                     QuestionAudio questionAudio = questionAudioService.findAudioById(questionAudioId);
                     if (questionAudio != null) {
-                        String url = downloadUrl + questionAudio.getFileUrl();
+                        String url = upYunProperty.getDownloadUrl() + questionAudio.getFileUrl();
                         if (questionDto.getPlayTime() != null) {
                             containAStr += " question-audio url=\"" + url + "\" playTime=\"" + questionDto.getPlayTime() + "\"" + "></a>";
                         } else {

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

@@ -1,26 +1,32 @@
 package cn.com.qmth.examcloud.core.questions.service.impl;
 
-import java.io.BufferedInputStream;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.math.BigDecimal;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Random;
-import java.util.Set;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
+import cn.com.qmth.examcloud.api.commons.security.bean.User;
+import cn.com.qmth.examcloud.commons.logging.ExamCloudLog;
+import cn.com.qmth.examcloud.commons.logging.ExamCloudLogFactory;
 import cn.com.qmth.examcloud.commons.util.JsonUtil;
+import cn.com.qmth.examcloud.core.print.api.CoursePaperCloudService;
+import cn.com.qmth.examcloud.core.print.api.bean.SyncCoursePaperBean;
+import cn.com.qmth.examcloud.core.print.api.request.SyncCoursePaperReq;
+import cn.com.qmth.examcloud.core.print.api.response.SyncCoursePaperResp;
+import cn.com.qmth.examcloud.core.questions.base.BeanCopierUtil;
+import cn.com.qmth.examcloud.core.questions.base.CommonUtils;
 import cn.com.qmth.examcloud.core.questions.base.Model;
+import cn.com.qmth.examcloud.core.questions.base.SpringContextUtils;
+import cn.com.qmth.examcloud.core.questions.base.enums.PaperStatus;
+import cn.com.qmth.examcloud.core.questions.base.enums.PaperType;
+import cn.com.qmth.examcloud.core.questions.base.exception.PaperException;
+import cn.com.qmth.examcloud.core.questions.base.question.enums.QuesStructType;
+import cn.com.qmth.examcloud.core.questions.base.word.DocxProcessUtil;
+import cn.com.qmth.examcloud.core.questions.dao.*;
+import cn.com.qmth.examcloud.core.questions.dao.entity.*;
+import cn.com.qmth.examcloud.core.questions.service.*;
+import cn.com.qmth.examcloud.core.questions.service.bean.dto.*;
+import cn.com.qmth.examcloud.core.questions.service.config.UpYunProperty;
+import cn.com.qmth.examcloud.core.questions.service.export.ExportPaperAbstractService;
+import cn.com.qmth.examcloud.core.questions.service.rpc.PrintCoursePaperClient;
+import cn.com.qmth.examcloud.web.redis.RedisClient;
+import com.google.gson.Gson;
 import main.java.com.UpYun;
-
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.docx4j.XmlUtils;
@@ -33,11 +39,7 @@ import org.nlpcn.commons.lang.util.StringUtil;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
-import org.springframework.data.domain.Example;
-import org.springframework.data.domain.Page;
-import org.springframework.data.domain.PageImpl;
-import org.springframework.data.domain.PageRequest;
-import org.springframework.data.domain.Sort;
+import org.springframework.data.domain.*;
 import org.springframework.data.domain.Sort.Direction;
 import org.springframework.data.domain.Sort.Order;
 import org.springframework.data.mongodb.core.MongoTemplate;
@@ -48,59 +50,15 @@ import org.springframework.stereotype.Service;
 import org.springframework.util.Assert;
 import org.springframework.web.multipart.MultipartFile;
 
-import cn.com.qmth.examcloud.core.print.api.CoursePaperCloudService;
-import cn.com.qmth.examcloud.core.print.api.bean.SyncCoursePaperBean;
-import cn.com.qmth.examcloud.core.print.api.request.SyncCoursePaperReq;
-import cn.com.qmth.examcloud.core.print.api.response.SyncCoursePaperResp;
-import cn.com.qmth.examcloud.core.questions.base.question.enums.QuesStructType;
-import cn.com.qmth.examcloud.core.questions.base.word.DocxProcessUtil;
-import cn.com.qmth.examcloud.commons.logging.ExamCloudLog;
-import cn.com.qmth.examcloud.commons.logging.ExamCloudLogFactory;
-import cn.com.qmth.examcloud.commons.util.JsonUtil;
-import cn.com.qmth.examcloud.web.redis.RedisClient;
-import cn.com.qmth.examcloud.api.commons.security.bean.User;
-
-import com.google.gson.Gson;
-import cn.com.qmth.examcloud.core.questions.dao.ExamPaperRepo;
-import cn.com.qmth.examcloud.core.questions.dao.ExportServiceManageRepo;
-import cn.com.qmth.examcloud.core.questions.dao.PaperDetailRepo;
-import cn.com.qmth.examcloud.core.questions.dao.PaperDetailUnitRepo;
-import cn.com.qmth.examcloud.core.questions.dao.PaperRepo;
-import cn.com.qmth.examcloud.core.questions.service.bean.dto.ObjectiveQuestionStructure;
-import cn.com.qmth.examcloud.core.questions.service.bean.dto.PaperDetailExp;
-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.service.bean.dto.PaperQuestionStructureInfo;
-import cn.com.qmth.examcloud.core.questions.service.bean.dto.SubjectiveQuestionStructure;
-import cn.com.qmth.examcloud.core.questions.dao.entity.Course;
-import cn.com.qmth.examcloud.core.questions.dao.entity.ExamPaper;
-import cn.com.qmth.examcloud.core.questions.dao.entity.ExportServiceManage;
-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.QuesProperty;
-import cn.com.qmth.examcloud.core.questions.service.rpc.PrintCoursePaperClient;
-import cn.com.qmth.examcloud.core.questions.service.ExtractConfigService;
-import cn.com.qmth.examcloud.core.questions.service.PaperDetailService;
-import cn.com.qmth.examcloud.core.questions.service.PaperDetailUnitService;
-import cn.com.qmth.examcloud.core.questions.service.PaperService;
-import cn.com.qmth.examcloud.core.questions.service.export.ExportPaperAbstractService;
-import cn.com.qmth.examcloud.core.questions.dao.QuesBakRepo;
-import cn.com.qmth.examcloud.core.questions.dao.QuesRepo;
-import cn.com.qmth.examcloud.core.questions.dao.QuestionAudioRepo;
-import cn.com.qmth.examcloud.core.questions.dao.entity.QuesOption;
-import cn.com.qmth.examcloud.core.questions.dao.entity.Question;
-import cn.com.qmth.examcloud.core.questions.dao.entity.QuestionAudio;
-import cn.com.qmth.examcloud.core.questions.dao.entity.QuestionBak;
-import cn.com.qmth.examcloud.core.questions.service.QuesService;
-import cn.com.qmth.examcloud.core.questions.service.impl.QuestionAudioServiceImpl;
-import cn.com.qmth.examcloud.core.questions.base.BeanCopierUtil;
-import cn.com.qmth.examcloud.core.questions.base.CommonUtils;
-import cn.com.qmth.examcloud.core.questions.base.SpringContextUtils;
-import cn.com.qmth.examcloud.core.questions.base.enums.PaperStatus;
-import cn.com.qmth.examcloud.core.questions.base.enums.PaperType;
-import cn.com.qmth.examcloud.core.questions.base.exception.PaperException;
+import java.io.BufferedInputStream;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.math.BigDecimal;
+import java.text.SimpleDateFormat;
+import java.util.*;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 /**
  * @author chenken
@@ -168,23 +126,8 @@ public class PaperServiceImpl implements PaperService {
     @Autowired
     private CoursePaperCloudService coursePaperCloudService1;
 
-    @Value("${upyun.radioType}")
-    private String radioType;
-
-    @Value("${upyun.audio.maxsize}")
-    private String audioMaxsize;
-
-    @Value("${upyun.audio.uploadUrl}")
-    private String upyunRadioPath;
-
-    @Value("${$upyun.site.2.bucketName}")
-    private String bucketName;
-
-    @Value("${$upyun.site.2.userName}")
-    private String userName;
-
-    @Value("${$upyun.site.2.password}")
-    private String password;
+    @Autowired
+    UpYunProperty upYunProperty;
 
     @Autowired
     RedisClient redisClient;
@@ -1092,8 +1035,8 @@ public class PaperServiceImpl implements PaperService {
         for (String fileName : filesName) {
             String[] fileNames = fileName.split("\\.");
             String fileType = fileNames[fileNames.length - 1];
-            if (radioType.indexOf(fileType) < 0) {
-                messageMap.put("errorMsg", fileName + ",文件格式不正确,当前支持格式:" + radioType);
+            if (upYunProperty.getRadioType().indexOf(fileType) < 0) {
+                messageMap.put("errorMsg", fileName + ",文件格式不正确,当前支持格式:" + upYunProperty.getRadioType());
                 return messageMap;
             }
             String pattern_01 = "\\d+_1_\\d{1,2}";                //题干正则
@@ -1192,7 +1135,7 @@ public class PaperServiceImpl implements PaperService {
         for (MultipartFile file : files) {
             //判断文件大小
             long fileSize = file.getSize();
-            int size = Integer.parseInt(audioMaxsize);
+            int size = Integer.parseInt(upYunProperty.getAudioMaxsize());
             if (fileSize > size * 1048576) {
                 throw new RuntimeException("音频文件大小超过5M,不能上传");
             }
@@ -1250,11 +1193,11 @@ public class PaperServiceImpl implements PaperService {
             outputStream.flush();
             outputStream.close();
             //上传到又拍云
-            UpYun upYun = new UpYun(bucketName, userName, password);
-            upYun.writeFile(upyunRadioPath + mp3FileNameString, mp3File, true);
+            UpYun upYun = new UpYun(upYunProperty.getBucketName(), upYunProperty.getUserName(), upYunProperty.getPassword());
+            upYun.writeFile(upYunProperty.getRadioUploadPath() + mp3FileNameString, mp3File, true);
             mp3File.delete();
             //保存记录
-            questionAudioService.saveQuestionAudio(new QuestionAudio(questionId, file.getOriginalFilename(), upyunRadioPath + mp3FileNameString), user);
+            questionAudioService.saveQuestionAudio(new QuestionAudio(questionId, file.getOriginalFilename(), upYunProperty.getRadioUploadPath() + mp3FileNameString), user);
         } catch (IOException e) {
             e.printStackTrace();
         }

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

@@ -1,30 +1,23 @@
 package cn.com.qmth.examcloud.core.questions.service.impl;
 
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.Iterator;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import cn.com.qmth.examcloud.core.questions.base.Model;
-import main.java.com.UpYun;
-
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Service;
-import org.springframework.util.Assert;
-
 import cn.com.qmth.examcloud.api.commons.security.bean.User;
+import cn.com.qmth.examcloud.core.questions.base.Model;
 import cn.com.qmth.examcloud.core.questions.dao.QuesRepo;
 import cn.com.qmth.examcloud.core.questions.dao.QuestionAudioRepo;
 import cn.com.qmth.examcloud.core.questions.dao.entity.QuesOption;
 import cn.com.qmth.examcloud.core.questions.dao.entity.Question;
 import cn.com.qmth.examcloud.core.questions.dao.entity.QuestionAudio;
 import cn.com.qmth.examcloud.core.questions.service.QuestionAudioService;
+import cn.com.qmth.examcloud.core.questions.service.config.UpYunProperty;
+import main.java.com.UpYun;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.Assert;
+
+import java.util.*;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 /**
  * @author chenken
@@ -41,21 +34,15 @@ public class QuestionAudioServiceImpl implements QuestionAudioService {
     @Autowired
     private QuesRepo quesRepo;
 
-    @Value("${$upyun.site.2.bucketName}")
-    protected String bucketName;
-
-    @Value("${$upyun.site.2.userName}")
-    protected String userName;
-
-    @Value("${$upyun.site.2.password}")
-    protected String password;
+    @Autowired
+    private UpYunProperty upYunProperty;
 
     @Override
     public void saveQuestionAudio(QuestionAudio questionAudio, User user) {
         QuestionAudio questionAudio2 = findByQuestionIdAndFileName(questionAudio.getQuestionId(), questionAudio.getFileName());
         if (questionAudio2 != null) {
             questionAudio.setId(questionAudio2.getId());
-            UpYun upYun = new UpYun(bucketName, userName, password);
+            UpYun upYun = new UpYun(upYunProperty.getBucketName(), upYunProperty.getUserName(), upYunProperty.getPassword());
             upYun.deleteFile(questionAudio2.getFileUrl());
             questionAudioRepo.delete(questionAudio2);
         }
@@ -94,7 +81,7 @@ public class QuestionAudioServiceImpl implements QuestionAudioService {
             while (audioIterator.hasNext()) {
                 QuestionAudio audio = audioIterator.next();
                 if (!questionBodyAndOptionStr.contains(audio.getFileName())) {
-                    UpYun upYun = new UpYun(bucketName, userName, password);
+                    UpYun upYun = new UpYun(upYunProperty.getBucketName(), upYunProperty.getUserName(), upYunProperty.getPassword());
                     upYun.deleteFile(audio.getFileUrl());
                     questionAudioRepo.delete(audio);
                 }
@@ -180,7 +167,7 @@ public class QuestionAudioServiceImpl implements QuestionAudioService {
         Iterator<QuestionAudio> audioIterator = questionAudios.iterator();
         while (audioIterator.hasNext()) {
             QuestionAudio audio = audioIterator.next();
-            UpYun upYun = new UpYun(bucketName, userName, password);
+            UpYun upYun = new UpYun(upYunProperty.getBucketName(), upYunProperty.getUserName(), upYunProperty.getPassword());
             upYun.deleteFile(audio.getFileUrl());
         }
         questionAudioRepo.deleteAll(questionAudios);