Răsfoiți Sursa

文件存储通用调用

xiatian 5 ani în urmă
părinte
comite
e58daba1d4

+ 5 - 3
examcloud-core-basic-api-provider/src/main/java/cn/com/qmth/examcloud/core/basic/api/controller/ResourceController.java

@@ -39,7 +39,7 @@ import cn.com.qmth.examcloud.core.basic.dao.ResourceRepo;
 import cn.com.qmth.examcloud.core.basic.dao.entity.ResourceEntity;
 import cn.com.qmth.examcloud.core.basic.service.ResourceService;
 import cn.com.qmth.examcloud.core.basic.service.bean.ResourceInfo;
-import cn.com.qmth.examcloud.web.bootstrap.PropertyHolder;
+import cn.com.qmth.examcloud.web.filestorage.FileStorageUtil;
 import cn.com.qmth.examcloud.web.support.ControllerSupport;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -93,12 +93,14 @@ public class ResourceController extends ControllerSupport {
 
 		List<ResourceDomain> resourceDomainList = Lists.newArrayList();
 
-		String upyunFileUrl = PropertyHolder.getString("$upyun.site.1.domain");
+//		String upyunFileUrl = PropertyHolder.getString("$upyun.site.1.domain");
 		while (iterator.hasNext()) {
 			ResourceEntity next = iterator.next();
 			ResourceDomain bean = new ResourceDomain();
 			BeanUtils.copyProperties(next, bean);
-			bean.setFileUrl(upyunFileUrl + bean.getFilePath());
+//			bean.setFileUrl(upyunFileUrl + bean.getFilePath());
+			//通用存储
+			bean.setFileUrl(FileStorageUtil.realPath(bean.getFilePath()));
 			resourceDomainList.add(bean);
 		}
 		PageInfo<ResourceDomain> ret = new PageInfo<ResourceDomain>();

+ 9 - 8
examcloud-core-basic-api-provider/src/main/java/cn/com/qmth/examcloud/core/basic/api/controller/StudentController.java

@@ -37,7 +37,6 @@ import cn.com.qmth.examcloud.api.commons.security.bean.User;
 import cn.com.qmth.examcloud.api.commons.security.enums.RoleMeta;
 import cn.com.qmth.examcloud.commons.exception.StatusException;
 import cn.com.qmth.examcloud.commons.helpers.poi.ExcelWriter;
-import cn.com.qmth.examcloud.commons.util.UrlUtil;
 import cn.com.qmth.examcloud.core.basic.api.controller.bean.StudentDomain;
 import cn.com.qmth.examcloud.core.basic.base.constants.BasicConsts;
 import cn.com.qmth.examcloud.core.basic.dao.OrgRepo;
@@ -58,8 +57,8 @@ import cn.com.qmth.examcloud.support.privilege.PrivilegeDefine.DataAccess.ExamWo
 import cn.com.qmth.examcloud.support.privilege.PrivilegeDefine.DataAccess.ExamWorkData.StudentInfoData.OrgStudentData;
 import cn.com.qmth.examcloud.support.privilege.PrivilegeManager;
 import cn.com.qmth.examcloud.task.api.DataSyncCloudService;
-import cn.com.qmth.examcloud.web.bootstrap.PropertyHolder;
 import cn.com.qmth.examcloud.web.config.SystemProperties;
+import cn.com.qmth.examcloud.web.filestorage.FileStorageUtil;
 import cn.com.qmth.examcloud.web.helpers.GlobalHelper;
 import cn.com.qmth.examcloud.web.support.ControllerSupport;
 import io.swagger.annotations.ApiOperation;
@@ -203,10 +202,10 @@ public class StudentController extends ControllerSupport {
 
 		List<StudentDomain> studentDomainList = Lists.newArrayList();
 
-		String upyunDomain = PropertyHolder.getString("$upyun.site.1.domain");
-		if (StringUtils.isBlank(upyunDomain)) {
-			throw new StatusException("560111", "property[$upyun.site.1.domain] is not configured");
-		}
+//		String upyunDomain = PropertyHolder.getString("$upyun.site.1.domain");
+//		if (StringUtils.isBlank(upyunDomain)) {
+//			throw new StatusException("560111", "property[$upyun.site.1.domain] is not configured");
+//		}
 
 		while (iterator.hasNext()) {
 			StudentEntity next = iterator.next();
@@ -228,8 +227,10 @@ public class StudentController extends ControllerSupport {
 
 			bean.setIdentityNumber(next.getIdentityNumber());
 			if (StringUtils.isNotBlank(next.getPhotoPath())) {
-				bean.setPhotoPath(
-						UrlUtil.joinUrl(upyunDomain, "student_base_photo", next.getPhotoPath()));
+//				bean.setPhotoPath(
+//						UrlUtil.joinUrl(upyunDomain, "student_base_photo", next.getPhotoPath()));
+				//通用存储
+				bean.setPhotoPath(FileStorageUtil.realPath(FileStorageUtil.getIntactPath("student_base_photo", next.getPhotoPath())));
 			}
 			bean.setPhoneNumber(next.getPhoneNumber());
 			bean.setSecurityPhone(next.getSecurityPhone());

+ 10 - 10
examcloud-core-basic-service/src/main/java/cn/com/qmth/examcloud/core/basic/service/cache/StudentCache.java

@@ -8,8 +8,6 @@ import org.springframework.stereotype.Service;
 
 import com.google.common.collect.Lists;
 
-import cn.com.qmth.examcloud.commons.exception.StatusException;
-import cn.com.qmth.examcloud.commons.util.UrlUtil;
 import cn.com.qmth.examcloud.core.basic.dao.StudentCodeRepo;
 import cn.com.qmth.examcloud.core.basic.dao.StudentFaceRepo;
 import cn.com.qmth.examcloud.core.basic.dao.StudentRepo;
@@ -17,8 +15,8 @@ import cn.com.qmth.examcloud.core.basic.dao.entity.StudentCodeEntity;
 import cn.com.qmth.examcloud.core.basic.dao.entity.StudentEntity;
 import cn.com.qmth.examcloud.core.basic.dao.entity.StudentFaceEntity;
 import cn.com.qmth.examcloud.support.cache.bean.StudentCacheBean;
-import cn.com.qmth.examcloud.web.bootstrap.PropertyHolder;
 import cn.com.qmth.examcloud.web.cache.RandomObjectRedisCache;
+import cn.com.qmth.examcloud.web.filestorage.FileStorageUtil;
 import cn.com.qmth.examcloud.web.helpers.GlobalHelper;
 
 @Service
@@ -52,13 +50,15 @@ public class StudentCache extends RandomObjectRedisCache<StudentCacheBean> {
 		b.setSecurityPhone(s.getSecurityPhone());
 
 		if (StringUtils.isNotBlank(s.getPhotoPath())) {
-			String upyunDomain = PropertyHolder.getString("$upyun.site.1.domain");
-			if (StringUtils.isBlank(upyunDomain)) {
-				throw new StatusException("560111",
-						"property[$upyun.site.1.domain] is not configured");
-			}
-			String path = UrlUtil.joinUrl(upyunDomain, "student_base_photo", s.getPhotoPath());
-			b.setPhotoPath(path);
+//			String upyunDomain = PropertyHolder.getString("$upyun.site.1.domain");
+//			if (StringUtils.isBlank(upyunDomain)) {
+//				throw new StatusException("560111",
+//						"property[$upyun.site.1.domain] is not configured");
+//			}
+//			String path = UrlUtil.joinUrl(upyunDomain, "student_base_photo", s.getPhotoPath());
+//			b.setPhotoPath(path);
+			//通用存储
+			b.setPhotoPath(FileStorageUtil.realPath(FileStorageUtil.getIntactPath("student_base_photo", s.getPhotoPath())));
 		}
 
 		List<StudentCodeEntity> studentCodeEntityList = studentCodeRepo.findByStudentId(s.getId());

+ 23 - 16
examcloud-core-basic-service/src/main/java/cn/com/qmth/examcloud/core/basic/service/impl/ResourceServiceImpl.java

@@ -1,9 +1,7 @@
 package cn.com.qmth.examcloud.core.basic.service.impl;
 
 import java.io.File;
-import java.util.ArrayList;
 import java.util.Date;
-import java.util.List;
 import java.util.Optional;
 
 import org.apache.commons.fileupload.disk.DiskFileItem;
@@ -12,14 +10,13 @@ import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
 import org.springframework.web.multipart.commons.CommonsMultipartFile;
 
-import cn.com.qmth.examcloud.api.commons.exchange.FormFilePart;
 import cn.com.qmth.examcloud.commons.exception.StatusException;
 import cn.com.qmth.examcloud.core.basic.dao.ResourceRepo;
 import cn.com.qmth.examcloud.core.basic.dao.entity.ResourceEntity;
 import cn.com.qmth.examcloud.core.basic.service.ResourceService;
 import cn.com.qmth.examcloud.core.basic.service.bean.ResourceInfo;
-import cn.com.qmth.examcloud.exchange.inner.api.UpyunCloudService;
-import cn.com.qmth.examcloud.exchange.inner.api.request.PutFileReq;
+import cn.com.qmth.examcloud.web.filestorage.FileStoragePathEnvInfo;
+import cn.com.qmth.examcloud.web.filestorage.FileStorageUtil;
 
 @Service
 public class ResourceServiceImpl implements ResourceService {
@@ -31,8 +28,8 @@ public class ResourceServiceImpl implements ResourceService {
 	@Autowired
 	ResourceRepo resourceRepo;
 
-	@Autowired
-	UpyunCloudService upyunCloudService;
+//	@Autowired
+//	UpyunCloudService upyunCloudService;
 
 	@Override
 	public void addDir(ResourceInfo info) {
@@ -89,21 +86,31 @@ public class ResourceServiceImpl implements ResourceService {
 		} else {
 			resourceRepo.save(e);
 		}
-		PutFileReq req = new PutFileReq();
-		List<FormFilePart> formFilePartList = new ArrayList<FormFilePart>();
 		CommonsMultipartFile cf = (CommonsMultipartFile) dataFile;
 		DiskFileItem fi = (DiskFileItem) cf.getFileItem();
 
 		File f = fi.getStoreLocation();
-		FormFilePart part = new FormFilePart("file", fileName, f);
-		formFilePartList.add(part);
+//		PutFileReq req = new PutFileReq();
+//		List<FormFilePart> formFilePartList = new ArrayList<FormFilePart>();
 
-		req.setFormFilePartList(formFilePartList);
-		req.setSiteId("resource");
-		req.setRootOrgId(rootOrgId);
+//		FormFilePart part = new FormFilePart("file", fileName, f);
+//		formFilePartList.add(part);
+//
+//		req.setFormFilePartList(formFilePartList);
+//		req.setSiteId("resource");
+//		req.setRootOrgId(rootOrgId);
+//		String relativePath = e.getFilePath().replaceFirst(FILE_ROOT_PATH, "")
+//				.replaceFirst(FILE_PATH_SEPARATE, "");
+//		req.setRelativePath(relativePath);
+//		upyunCloudService.putFile(req);
+		
+		//通用存储
+		FileStoragePathEnvInfo env=new FileStoragePathEnvInfo();
+		env.setRootOrgId(rootOrgId.toString());
 		String relativePath = e.getFilePath().replaceFirst(FILE_ROOT_PATH, "")
 				.replaceFirst(FILE_PATH_SEPARATE, "");
-		req.setRelativePath(relativePath);
-		upyunCloudService.putFile(req);
+		env.setRelativePath(relativePath);
+		FileStorageUtil.saveFile("resource", env, f,null);
+		
 	}
 }

+ 10 - 9
examcloud-core-basic-service/src/main/java/cn/com/qmth/examcloud/core/basic/service/impl/StudentServiceImpl.java

@@ -14,7 +14,6 @@ import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 
 import cn.com.qmth.examcloud.commons.exception.StatusException;
-import cn.com.qmth.examcloud.commons.util.UrlUtil;
 import cn.com.qmth.examcloud.core.basic.base.constants.BasicConsts;
 import cn.com.qmth.examcloud.core.basic.dao.OrgRepo;
 import cn.com.qmth.examcloud.core.basic.dao.StudentCodeRepo;
@@ -30,7 +29,7 @@ import cn.com.qmth.examcloud.core.basic.service.cache.OrgCache;
 import cn.com.qmth.examcloud.core.basic.service.cache.StudentCache;
 import cn.com.qmth.examcloud.task.api.DataSyncCloudService;
 import cn.com.qmth.examcloud.task.api.request.SyncStudentReq;
-import cn.com.qmth.examcloud.web.bootstrap.PropertyHolder;
+import cn.com.qmth.examcloud.web.filestorage.FileStorageUtil;
 import cn.com.qmth.examcloud.web.helpers.GlobalHelper;
 
 /**
@@ -318,13 +317,15 @@ public class StudentServiceImpl implements StudentService {
 		info.setPhoneNumber(s.getPhoneNumber());
 
 		if (StringUtils.isNotBlank(s.getPhotoPath())) {
-			String upyunDomain = PropertyHolder.getString("$upyun.site.1.domain");
-			if (StringUtils.isBlank(upyunDomain)) {
-				throw new StatusException("560111",
-						"property[$upyun.site.1.domain] is not configured");
-			}
-			String path = UrlUtil.joinUrl(upyunDomain, "student_base_photo", s.getPhotoPath());
-			info.setPhotoPath(path);
+//			String upyunDomain = PropertyHolder.getString("$upyun.site.1.domain");
+//			if (StringUtils.isBlank(upyunDomain)) {
+//				throw new StatusException("560111",
+//						"property[$upyun.site.1.domain] is not configured");
+//			}
+//			String path = UrlUtil.joinUrl(upyunDomain, "student_base_photo", s.getPhotoPath());
+//			info.setPhotoPath(path);
+			//通用存储
+			info.setPhotoPath(FileStorageUtil.realPath(FileStorageUtil.getIntactPath("student_base_photo", s.getPhotoPath())));
 		}
 
 		info.setRemark(s.getRemark());

+ 2 - 24
examcloud-core-basic-starter/src/main/resources/aliyun.xml

@@ -1,35 +1,13 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <sites>
 
-	<!-- <site>
-		ID
-		<id>studentBasePhoto</id>
-		名称
-		<name>考生照片</name>
-		又拍云账户ID标识
-		<upyunId>1</upyunId>
-		文件大小限制(IO流限制)
-		<maxSize>1M</maxSize>
-		又拍云存储路径
-		<path>/student_base_photo/${rootOrgId}/${userId}/${timeMillis}${fileSuffix}</path>
-	</site>
-
-	<site>
+ 	<site>
 		<id>resource</id>
 		<name>资源</name>
-		<upyunId>1</upyunId>
+		<aliyunId>1</aliyunId>
 		<maxSize>50M</maxSize>
 		<path>/resource/${relativePath}</path>
 	</site>
-
-	<site>
-		<id>capturePhoto</id>
-		<name>网考学生端抓拍照片</name>
-		<upyunId>1</upyunId>
-		<maxSize>1M</maxSize>
-		<path>/capture_photo/${rootOrgId}/${userId}/${timeMillis}${fileSuffix}</path>
-	</site>
- -->
 	<site>
 		<id>orgLogo</id>
 		<name>机构logo</name>

+ 1 - 23
examcloud-core-basic-starter/src/main/resources/upyun.xml

@@ -1,35 +1,13 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <sites>
 
-	<!-- <site>
-		ID
-		<id>studentBasePhoto</id>
-		名称
-		<name>考生照片</name>
-		又拍云账户ID标识
-		<upyunId>1</upyunId>
-		文件大小限制(IO流限制)
-		<maxSize>1M</maxSize>
-		又拍云存储路径
-		<path>/student_base_photo/${rootOrgId}/${userId}/${timeMillis}${fileSuffix}</path>
-	</site>
-
-	<site>
+ 	<site>
 		<id>resource</id>
 		<name>资源</name>
 		<upyunId>1</upyunId>
 		<maxSize>50M</maxSize>
 		<path>/resource/${relativePath}</path>
 	</site>
-
-	<site>
-		<id>capturePhoto</id>
-		<name>网考学生端抓拍照片</name>
-		<upyunId>1</upyunId>
-		<maxSize>1M</maxSize>
-		<path>/capture_photo/${rootOrgId}/${userId}/${timeMillis}${fileSuffix}</path>
-	</site>
- -->
 	<site>
 		<id>orgLogo</id>
 		<name>机构logo</name>