소스 검색

upgrade fss api...

deason 11 달 전
부모
커밋
a5dea68a4a

+ 4 - 2
examcloud-core-oe-admin-api-provider/src/main/java/cn/com/qmth/examcloud/core/oe/admin/api/controller/ExamRecordController.java

@@ -29,7 +29,7 @@ import cn.com.qmth.examcloud.core.oe.admin.service.bean.examrecord.ExamStudentQu
 import cn.com.qmth.examcloud.core.oe.admin.service.util.AsyncExportConcurrentUtil;
 import cn.com.qmth.examcloud.reports.commons.bean.AdminOperateReport;
 import cn.com.qmth.examcloud.reports.commons.util.ReportsUtil;
-import cn.com.qmth.examcloud.support.filestorage.FileStorageUtil;
+import cn.com.qmth.examcloud.support.fss.FssHelper;
 import cn.com.qmth.examcloud.support.helper.IdentityNumberHelper;
 import cn.com.qmth.examcloud.web.security.DataRule;
 import cn.com.qmth.examcloud.web.support.ControllerSupport;
@@ -154,7 +154,9 @@ public class ExamRecordController extends ControllerSupport {
             ExamRecordFileAnswerInfo info = new ExamRecordFileAnswerInfo();
             info.setId(entity.getId());
             info.setExamRecordDataId(entity.getExamRecordDataId());
-            info.setOfflineFileUrl(FileStorageUtil.realPath(entity.getFileUrl()));
+
+            info.setOfflineFileUrl(FssHelper.finalFileUrl(entity.getFileUrl()));
+
             info.setOfflineFileName(entity.getFileName());
             info.setOriginalFileName(entity.getOriginalFileName());
             info.setFileType(entity.getFileType());

+ 4 - 2
examcloud-core-oe-admin-api-provider/src/main/java/cn/com/qmth/examcloud/core/oe/admin/api/provider/ExamRecordForMarkingCloudServiceProvider.java

@@ -10,6 +10,7 @@ import java.util.stream.Collectors;
 
 import javax.persistence.criteria.Predicate;
 
+import cn.com.qmth.examcloud.support.fss.FssHelper;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -55,7 +56,6 @@ import cn.com.qmth.examcloud.core.oe.admin.dao.entity.ExamRecordForMarkingEntity
 import cn.com.qmth.examcloud.core.oe.admin.dao.entity.ExamStudentEntity;
 import cn.com.qmth.examcloud.core.oe.admin.service.ExamRecordForMarkingService;
 import cn.com.qmth.examcloud.core.oe.admin.service.ExamRecordQuestionsService;
-import cn.com.qmth.examcloud.support.filestorage.FileStorageUtil;
 import cn.com.qmth.examcloud.web.helpers.GlobalHelper;
 import cn.com.qmth.examcloud.web.support.ControllerSupport;
 import io.swagger.annotations.Api;
@@ -142,7 +142,9 @@ public class ExamRecordForMarkingCloudServiceProvider extends ControllerSupport
 			ExamRecordFileAnswerBean bean = new ExamRecordFileAnswerBean();
 			bean.setId(entity.getId());
 			bean.setExamRecordDataId(entity.getExamRecordDataId());
-			bean.setOfflineFileUrl(FileStorageUtil.realPath(entity.getFileUrl()));
+
+			bean.setOfflineFileUrl(FssHelper.finalFileUrl(entity.getFileUrl()));
+
 			bean.setOfflineFileName(entity.getFileName());
 			bean.setOriginalFileName(entity.getOriginalFileName());
 			bean.setFileType(entity.getFileType());

+ 22 - 33
examcloud-core-oe-admin-service/src/main/java/cn/com/qmth/examcloud/core/oe/admin/service/impl/AsyncExportServiceImpl.java

@@ -14,6 +14,8 @@ import java.util.HashSet;
 import java.util.List;
 import java.util.UUID;
 
+import cn.com.qmth.examcloud.support.fss.FssFactory;
+import cn.com.qmth.examcloud.support.fss.model.FssFileInfo;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.io.FileUtils;
 import org.slf4j.Logger;
@@ -60,12 +62,9 @@ import cn.com.qmth.examcloud.support.cache.CacheHelper;
 import cn.com.qmth.examcloud.support.cache.bean.ExamSettingsCacheBean;
 import cn.com.qmth.examcloud.support.cache.bean.ExamStageCacheBean;
 import cn.com.qmth.examcloud.support.excel.ExcelExportUtil;
-import cn.com.qmth.examcloud.support.filestorage.FileStorageUtil;
 import cn.com.qmth.examcloud.support.helper.IdentityNumberHelper;
 import cn.com.qmth.examcloud.web.bootstrap.PropertyHolder;
 import cn.com.qmth.examcloud.web.config.SystemProperties;
-import cn.com.qmth.examcloud.web.filestorage.FileStoragePathEnvInfo;
-import cn.com.qmth.examcloud.web.filestorage.YunPathInfo;
 import cn.com.qmth.examcloud.web.security.ResourceManager;
 
 /**
@@ -76,8 +75,6 @@ public class AsyncExportServiceImpl implements AsyncExportService {
 
 	private static final Logger LOG = LoggerFactory.getLogger(AsyncExportServiceImpl.class);
 
-	private static final String TASK_EXPORT_DIR = "task_export";
-
 	@Autowired
 	private ExportTaskService exportTaskService;
 
@@ -153,7 +150,8 @@ public class AsyncExportServiceImpl implements AsyncExportService {
 		// 导出文件的存储路径
 		Long examId = examStudentInfoList.get(0).getExamId();
 		ExamSettingsCacheBean exam = CacheHelper.getExamSettings(examId);
-		final String filePath = String.format("/%s/%s/%s/%s/%s_考试进度详情.xlsx", TASK_EXPORT_DIR, req.getRootOrgId(),
+
+		final String filePath = String.format("/task_export/%s/%s/%s/%s_考试进度详情.xlsx",  req.getRootOrgId(),
 				dateDir(), randomUUID(), exam.getName());
 		String tempFilePath = systemConfig.getTempDataDir() + File.separator + filePath;
 		File tempFile = new File(tempFilePath);
@@ -170,13 +168,10 @@ public class AsyncExportServiceImpl implements AsyncExportService {
 			ExcelExportUtil.exportExcel(ExamStudentExcel.class, examRecords, out);
 
 			// 上传至文件服务器
-			FileStoragePathEnvInfo env = new FileStoragePathEnvInfo();
-			env.setRootOrgId(String.valueOf(req.getRootOrgId()));
-			env.setRelativePath(filePath);
-			YunPathInfo oss = FileStorageUtil.saveFile(TASK_EXPORT_DIR, env, tempFile, null);
+			FssFileInfo result = FssFactory.getInstance().writeFile(filePath, tempFile, null);
 
-			LOG.info("asyncExportExamScheduling finished... " + oss.getRelativePath());
-			exportTaskService.updateExportTaskStatus(taskId, ExportTaskStatus.SUCCESS, null, oss.getRelativePath());
+			LOG.info("asyncExportExamScheduling finished... " + result.getFilePath());
+			exportTaskService.updateExportTaskStatus(taskId, ExportTaskStatus.SUCCESS, null, result.getFilePath());
 		} catch (Exception e) {
 			LOG.error("asyncExportExamScheduling error... " + e);
 			exportTaskService.updateExportTaskStatus(taskId, ExportTaskStatus.ERROR, "上传至文件服务器异常");
@@ -253,7 +248,8 @@ public class AsyncExportServiceImpl implements AsyncExportService {
 		}
 		// 导出文件的存储路径
 		String examName = examRecords.get(0).getExamName();
-		final String filePath = String.format("/%s/%s/%s/%s/%s_考试明细.xlsx", TASK_EXPORT_DIR, req.getRootOrgId(),
+
+		final String filePath = String.format("/task_export/%s/%s/%s/%s_考试明细.xlsx", req.getRootOrgId(),
 				dateDir(), randomUUID(), examName);
 		String tempFilePath = systemConfig.getTempDataDir() + File.separator + filePath;
 		File tempFile = new File(tempFilePath);
@@ -270,13 +266,10 @@ public class AsyncExportServiceImpl implements AsyncExportService {
 			ExcelExportUtil.exportExcel(ExamRecordInfo.class, examRecords, out);
 
 			// 上传至文件服务器
-			FileStoragePathEnvInfo env = new FileStoragePathEnvInfo();
-			env.setRootOrgId(String.valueOf(req.getRootOrgId()));
-			env.setRelativePath(filePath);
-			YunPathInfo oss = FileStorageUtil.saveFile(TASK_EXPORT_DIR, env, tempFile, null);
+			FssFileInfo result = FssFactory.getInstance().writeFile(filePath, tempFile, null);
 
-			LOG.info("asyncExportExamRecordDetails finished... " + oss.getRelativePath());
-			exportTaskService.updateExportTaskStatus(taskId, ExportTaskStatus.SUCCESS, null, oss.getRelativePath());
+			LOG.info("asyncExportExamRecordDetails finished... " + result.getFilePath());
+			exportTaskService.updateExportTaskStatus(taskId, ExportTaskStatus.SUCCESS, null, result.getFilePath());
 		} catch (Exception e) {
 			LOG.info("asyncExportExamRecordDetails error... " + e.getMessage());
 			exportTaskService.updateExportTaskStatus(taskId, ExportTaskStatus.ERROR, "上传至文件服务器异常");
@@ -333,7 +326,8 @@ public class AsyncExportServiceImpl implements AsyncExportService {
 		}
 		// 导出文件的存储路径
 		String examName = examScores.get(0).getExamName();
-		final String filePath = String.format("/%s/%s/%s/%s/%s_成绩统计.xlsx", TASK_EXPORT_DIR, req.getRootOrgId(),
+
+		final String filePath = String.format("/task_export/%s/%s/%s/%s_成绩统计.xlsx", req.getRootOrgId(),
 				dateDir(), randomUUID(), examName);
 		String tempFilePath = systemConfig.getTempDataDir() + File.separator + filePath;
 		File tempFile = new File(tempFilePath);
@@ -349,13 +343,10 @@ public class AsyncExportServiceImpl implements AsyncExportService {
 			ExcelExportUtil.exportExcel(ExamScoreInfo.class, examScores, out);
 
 			// 上传至文件服务器
-			FileStoragePathEnvInfo env = new FileStoragePathEnvInfo();
-			env.setRootOrgId(String.valueOf(req.getRootOrgId()));
-			env.setRelativePath(filePath);
-			YunPathInfo oss = FileStorageUtil.saveFile(TASK_EXPORT_DIR, env, tempFile, null);
+			FssFileInfo result = FssFactory.getInstance().writeFile(filePath, tempFile, null);
 
-			LOG.info("asyncExportExamScoreStatistics finished... " + oss.getRelativePath());
-			exportTaskService.updateExportTaskStatus(taskId, ExportTaskStatus.SUCCESS, null, oss.getRelativePath());
+			LOG.info("asyncExportExamScoreStatistics finished... " + result.getFilePath());
+			exportTaskService.updateExportTaskStatus(taskId, ExportTaskStatus.SUCCESS, null, result.getFilePath());
 		} catch (Exception e) {
 			LOG.info("asyncExportExamScoreStatistics error... " + e.getMessage());
 			exportTaskService.updateExportTaskStatus(taskId, ExportTaskStatus.ERROR, "上传至文件服务器异常");
@@ -398,7 +389,8 @@ public class AsyncExportServiceImpl implements AsyncExportService {
 		}
 		// 导出文件的存储路径
 		String examName = auditInfos.get(0).getExamName();
-		final String filePath = String.format("/%s/%s/%s/%s/%s_监考已审.xlsx", TASK_EXPORT_DIR, req.getRootOrgId(),
+
+		final String filePath = String.format("/task_export/%s/%s/%s/%s_监考已审.xlsx", req.getRootOrgId(),
 				dateDir(), randomUUID(), examName);
 		String tempFilePath = systemConfig.getTempDataDir() + File.separator + filePath;
 		File tempFile = new File(tempFilePath);
@@ -415,13 +407,10 @@ public class AsyncExportServiceImpl implements AsyncExportService {
 			ExcelExportUtil.exportExcel(ExamAuditInfo.class, auditInfos, out);
 
 			// 上传至文件服务器
-			FileStoragePathEnvInfo env = new FileStoragePathEnvInfo();
-			env.setRootOrgId(String.valueOf(req.getRootOrgId()));
-			env.setRelativePath(filePath);
-			YunPathInfo oss = FileStorageUtil.saveFile(TASK_EXPORT_DIR, env, tempFile, null);
+			FssFileInfo result = FssFactory.getInstance().writeFile(filePath, tempFile, null);
 
-			LOG.info("asyncExportExamAuditList finished... " + oss.getRelativePath());
-			exportTaskService.updateExportTaskStatus(taskId, ExportTaskStatus.SUCCESS, null, oss.getRelativePath());
+			LOG.info("asyncExportExamAuditList finished... " + result.getFilePath());
+			exportTaskService.updateExportTaskStatus(taskId, ExportTaskStatus.SUCCESS, null, result.getFilePath());
 		} catch (Exception e) {
 			LOG.info("asyncExportExamAuditList error... " + e.getMessage());
 			exportTaskService.updateExportTaskStatus(taskId, ExportTaskStatus.ERROR, "上传至文件服务器异常");

+ 4 - 2
examcloud-core-oe-admin-service/src/main/java/cn/com/qmth/examcloud/core/oe/admin/service/impl/ExamStudentServiceImpl.java

@@ -47,7 +47,7 @@ import cn.com.qmth.examcloud.support.cache.CacheHelper;
 import cn.com.qmth.examcloud.support.cache.bean.*;
 import cn.com.qmth.examcloud.support.enums.ExamProperties;
 import cn.com.qmth.examcloud.support.examing.ExamBoss;
-import cn.com.qmth.examcloud.support.filestorage.FileStorageUtil;
+import cn.com.qmth.examcloud.support.fss.FssHelper;
 import cn.com.qmth.examcloud.support.helper.ExamCacheTransferHelper;
 import cn.com.qmth.examcloud.support.helper.FaceBiopsyHelper;
 import cn.com.qmth.examcloud.support.redis.RedisKeyHelper;
@@ -665,7 +665,9 @@ public class ExamStudentServiceImpl implements ExamStudentService {
             ExamRecordFileAnswerInfo info = new ExamRecordFileAnswerInfo();
             info.setId(entity.getId());
             info.setExamRecordDataId(entity.getExamRecordDataId());
-            info.setOfflineFileUrl(FileStorageUtil.realPath(entity.getFileUrl()));
+
+            info.setOfflineFileUrl(FssHelper.finalFileUrl(entity.getFileUrl()));
+
             info.setOfflineFileName(entity.getFileName());
             info.setOriginalFileName(entity.getOriginalFileName());
             info.setFileType(entity.getFileType());

+ 4 - 2
examcloud-core-oe-admin-service/src/main/java/cn/com/qmth/examcloud/core/oe/admin/service/impl/ExportTaskServiceImpl.java

@@ -17,6 +17,7 @@ import java.util.stream.Collectors;
 
 import javax.persistence.criteria.Predicate;
 
+import cn.com.qmth.examcloud.support.fss.FssHelper;
 import org.apache.commons.collections.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
@@ -47,7 +48,6 @@ import cn.com.qmth.examcloud.examwork.api.bean.ExamBean;
 import cn.com.qmth.examcloud.examwork.api.request.GetExamMapsReq;
 import cn.com.qmth.examcloud.examwork.api.response.GetExamMapsResp;
 import cn.com.qmth.examcloud.support.CacheConstants;
-import cn.com.qmth.examcloud.support.filestorage.FileStorageUtil;
 import cn.com.qmth.examcloud.web.helpers.GlobalHelper;
 import cn.com.qmth.examcloud.web.redis.RedisClient;
 
@@ -268,7 +268,9 @@ public class ExportTaskServiceImpl implements ExportTaskService {
             ExamBean exam = examMaps.get(entity.getExamId());
             info.setExamName(exam != null ? exam.getName() : "");
         }
-        info.setFilePath(FileStorageUtil.realPath(entity.getFilePath()));
+
+        info.setFilePath(FssHelper.finalFileUrl(entity.getFilePath()));
+
         info.setCreationTime(entity.getCreationTime());
         info.setUpdateTime(entity.getUpdateTime());
         info.setCreateName(createName);

+ 11 - 15
examcloud-core-oe-admin-service/src/main/java/cn/com/qmth/examcloud/core/oe/admin/service/impl/OfflineExamServiceImpl.java

@@ -30,10 +30,9 @@ import cn.com.qmth.examcloud.reports.commons.util.ReportsUtil;
 import cn.com.qmth.examcloud.support.cache.CacheHelper;
 import cn.com.qmth.examcloud.support.cache.bean.*;
 import cn.com.qmth.examcloud.support.enums.ExamProperties;
-import cn.com.qmth.examcloud.support.filestorage.FileStorageUtil;
+import cn.com.qmth.examcloud.support.fss.FssFactory;
+import cn.com.qmth.examcloud.support.fss.FssHelper;
 import cn.com.qmth.examcloud.support.helper.ExamCacheTransferHelper;
-import cn.com.qmth.examcloud.web.filestorage.FileStoragePathEnvInfo;
-import cn.com.qmth.examcloud.web.filestorage.YunPathInfo;
 import com.google.common.collect.Lists;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.ArrayUtils;
@@ -41,7 +40,6 @@ import org.apache.commons.lang3.StringUtils;
 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 org.springframework.transaction.annotation.Transactional;
 
@@ -88,9 +86,6 @@ public class OfflineExamServiceImpl implements OfflineExamService {
     @Autowired
     private ExamStudentService examStudentService;
 
-    @Value("${app.upyun.uploadUrl}")
-    private String upyunUploadUrl;
-
     @Override
     public List<OfflineExamCourseInfo> getOfflineCourse(Long studentId) {
         List<ExamStudentEntity> examStudents = examStudentRepo.findByStudentId(studentId);
@@ -164,7 +159,9 @@ public class OfflineExamServiceImpl implements OfflineExamService {
             ExamRecordFileAnswerInfo info = new ExamRecordFileAnswerInfo();
             info.setId(entity.getId());
             info.setExamRecordDataId(entity.getExamRecordDataId());
-            info.setOfflineFileUrl(FileStorageUtil.realPath(entity.getFileUrl()));
+
+            info.setOfflineFileUrl(FssHelper.finalFileUrl(entity.getFileUrl()));
+
             info.setOfflineFileName(entity.getFileName());
             info.setOriginalFileName(entity.getOriginalFileName());
             info.setFileType(entity.getFileType());
@@ -369,14 +366,11 @@ public class OfflineExamServiceImpl implements OfflineExamService {
             }
 
             String fileNewName = createOfflineFileName(bean) + fileInfo.getFileSuffix();
-            String relativePath = upyunUploadUrl + examRecordData.getExamId() + "/" + fileNewName;
+            String relativePath = "/offline-exam/prod/" + examRecordData.getExamId() + "/" + fileNewName;
 
-            FileStoragePathEnvInfo env = new FileStoragePathEnvInfo();
-            env.setRootOrgId(String.valueOf(examRecordData.getRootOrgId()));
-            env.setRelativePath(relativePath);
-            YunPathInfo uploadResult = FileStorageUtil.saveFile("offlineFile", env, fileInfo.getFileBytes(), false);
+            String resultPath = FssFactory.getInstance().writeFile(relativePath, fileInfo.getFileBytes(), null).getFilePath();
 
-            fileInfo.setFilePath(uploadResult.getRelativePath());
+            fileInfo.setFilePath(resultPath);
             fileInfo.setFileName(fileNewName);
             fileInfo.setFileType(fileType);
         }
@@ -386,7 +380,9 @@ public class OfflineExamServiceImpl implements OfflineExamService {
         if (CollectionUtils.isNotEmpty(fileAnswerList)) {
             for (ExamRecordFileAnswerEntity fileAnswer : fileAnswerList) {
                 examRecordFileAnswerRepo.delete(fileAnswer);
-                FileStorageUtil.deleteFile(fileAnswer.getFileUrl());
+
+                String filePath = FssHelper.fixFilePath(fileAnswer.getFileUrl());
+                FssFactory.getInstance().deleteFile(filePath);
             }
         }
 

+ 0 - 4
examcloud-core-oe-admin-starter/src/main/java/cn/com/qmth/examcloud/core/oe/admin/stater/OEAdminApp.java

@@ -1,7 +1,6 @@
 package cn.com.qmth.examcloud.core.oe.admin.stater;
 
 import cn.com.qmth.examcloud.core.oe.admin.dao.UniqueRuleHolder;
-import cn.com.qmth.examcloud.support.filestorage.FileStorageUtil;
 import cn.com.qmth.examcloud.web.jpa.DataIntegrityViolationTransverter;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
@@ -45,9 +44,6 @@ public class OEAdminApp {
     public static void main(String[] args) {
         // AppBootstrap.run(OEAdminApp.class, args);
         SpringApplication.run(OEAdminApp.class, args);
-
-        FileStorageUtil.initYunSite();
-        FileStorageUtil.initYunClient();
     }
 
     @Bean(name = "multipartResolver")