Browse Source

add upload sign api

deason 1 year ago
parent
commit
b2b419dff1

+ 33 - 0
examcloud-core-oe-student-api-provider/src/main/java/cn/com/qmth/examcloud/core/oe/student/api/controller/client/ExamProcessController.java

@@ -19,6 +19,8 @@ import cn.com.qmth.examcloud.support.filestorage.FileStorageUtil;
 import cn.com.qmth.examcloud.support.filestorage.UploadResult;
 import cn.com.qmth.examcloud.support.handler.richtext2.RichTextConverter;
 import cn.com.qmth.examcloud.web.filestorage.FileStoragePathEnvInfo;
+import cn.com.qmth.examcloud.web.filestorage.FileStorageType;
+import cn.com.qmth.examcloud.web.filestorage.YunHttpRequest;
 import cn.com.qmth.examcloud.web.filestorage.YunPathInfo;
 import cn.com.qmth.examcloud.web.redis.RedisClient;
 import cn.com.qmth.examcloud.web.support.ControllerSupport;
@@ -173,6 +175,7 @@ public class ExamProcessController extends ControllerSupport {
         redisClient.set(cacheKey, reason, OeConstants.TIME_OUT_1_DAY);
     }
 
+    @Deprecated
     @ApiOperation(value = "文件上传")
     @PostMapping("/upload")
     public UploadResult upload(@RequestParam(required = false) String md5,
@@ -201,6 +204,36 @@ public class ExamProcessController extends ControllerSupport {
         return new UploadResult(file.getOriginalFilename(), result.getRelativePath(), result.getUrl());
     }
 
+    // @Naked
+    @ApiOperation(value = "文件上传签名信息")
+    @GetMapping("/upload/sign")
+    public GetYunSignDomain getUploadSign(GetYunSignDomainQuery query) {
+        User accessUser = this.getAccessUser();
+
+        if (StringUtils.isBlank(query.getFileSuffix())) {
+            throw new StatusException("4001", "文件后缀名不允许为空");
+        }
+
+        String fileSuffix = query.getFileSuffix().startsWith(".") ? query.getFileSuffix() : "." + query.getFileSuffix();
+
+        FileStoragePathEnvInfo pathEnv = new FileStoragePathEnvInfo();
+        pathEnv.setRootOrgId(String.valueOf(accessUser.getRootOrgId()));
+        pathEnv.setUserId(String.valueOf(accessUser.getUserId()));
+        pathEnv.setFileSuffix(fileSuffix);
+        YunHttpRequest uploadRequest = FileStorageUtil.getSignature(FileStorageType.ALIYUN, Constants.CAPTURE_PHOTO_UPYUN_SITEID, pathEnv, query.getFileMd5());
+
+        String signIdentifier = String.valueOf(System.currentTimeMillis());
+        // String signRedisKey = CacheConstants.CACHE_OE_UPYUN_IMAGE_SIGN + accessUser.getUserId() + "_" + signIdentifier;
+        // redisClient.set(signRedisKey, uploadRequest, 60);
+
+        GetAliyunSignDomain result = new GetAliyunSignDomain();
+        result.setAccessUrl(uploadRequest.getAccessUrl());
+        result.setFormUrl(uploadRequest.getFormUrl());
+        result.setFormParams(uploadRequest.getFormParams());
+        result.setSignIdentifier(signIdentifier);
+        return result;
+    }
+
     @ApiOperation(value = "保存人脸识别比对验证结果")
     @PostMapping("/saveFaceCompareResult")
     public void saveFaceCompareResult(@RequestBody FaceCompareResult req) {