|
|
@@ -1,5 +1,8 @@
|
|
|
package cn.reghao.oss.store.rpc;
|
|
|
|
|
|
+import cn.reghao.jutil.media.ImageOps;
|
|
|
+import cn.reghao.oss.api.constant.ObjectType;
|
|
|
+import cn.reghao.oss.api.dto.*;
|
|
|
import cn.reghao.oss.store.db.repository.ObjectRepository;
|
|
|
import cn.reghao.oss.store.model.po.FileMeta;
|
|
|
import cn.reghao.oss.store.service.ObjectNameService;
|
|
|
@@ -7,15 +10,13 @@ import cn.reghao.oss.store.util.JwtUtil;
|
|
|
import cn.reghao.oss.store.util.SignatureUtil;
|
|
|
import cn.reghao.oss.api.constant.ChannelAction;
|
|
|
import cn.reghao.oss.api.constant.UploadChannel;
|
|
|
-import cn.reghao.oss.api.dto.DownloadUrl;
|
|
|
-import cn.reghao.oss.api.dto.ObjectMeta;
|
|
|
-import cn.reghao.oss.api.dto.ObjectPrefix;
|
|
|
-import cn.reghao.oss.api.dto.OssPayload;
|
|
|
import cn.reghao.oss.api.iface.ObjectService;
|
|
|
import cn.reghao.oss.store.db.mapper.FileMetaMapper;
|
|
|
import org.apache.dubbo.config.annotation.DubboService;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
+import java.io.File;
|
|
|
+import java.io.IOException;
|
|
|
import java.util.List;
|
|
|
import java.util.UUID;
|
|
|
|
|
|
@@ -29,12 +30,14 @@ public class ObjectServiceImpl implements ObjectService {
|
|
|
private final FileMetaMapper fileMetaMapper;
|
|
|
private final ObjectNameService objectNameService;
|
|
|
private final ObjectRepository objectRepository;
|
|
|
+ private final SignService signService;
|
|
|
|
|
|
public ObjectServiceImpl(FileMetaMapper fileMetaMapper, ObjectNameService objectNameService,
|
|
|
- ObjectRepository objectRepository) {
|
|
|
+ ObjectRepository objectRepository, SignService signService) {
|
|
|
this.fileMetaMapper = fileMetaMapper;
|
|
|
this.objectNameService = objectNameService;
|
|
|
this.objectRepository = objectRepository;
|
|
|
+ this.signService = signService;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@@ -81,4 +84,46 @@ public class ObjectServiceImpl implements ObjectService {
|
|
|
String sign = SignatureUtil.sign(requestString, secretKey);
|
|
|
return String.format("%s?token=%s&t=%s&nonce=%s&sign=%s", url, token, timestamp, nonce, sign);
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public ObjectInfo getObjectInfo(String objectId) {
|
|
|
+ FileMeta fileMeta = fileMetaMapper.findByObjectId(objectId);
|
|
|
+ if (fileMeta == null) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ String objectName = fileMeta.getObjectName();
|
|
|
+ int fileType = fileMeta.getFileType();
|
|
|
+ String filename = fileMeta.getFilename();
|
|
|
+ long size = fileMeta.getSize();
|
|
|
+ ObjectInfo objectInfo = new ObjectInfo(objectId, objectName, fileType, filename, size);
|
|
|
+ if (fileType == 1001) {
|
|
|
+ ObjectMeta objectMeta = objectRepository.getObjectMetaById(objectId);
|
|
|
+ String absolutePath = objectMeta.getAbsolutePath();
|
|
|
+ try {
|
|
|
+ ImageOps.Size resolution = ImageOps.info(new File(absolutePath));
|
|
|
+ objectInfo.setWidth(resolution.getWidth());
|
|
|
+ objectInfo.setHeight(resolution.getHeight());
|
|
|
+ } catch (IOException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return objectInfo;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public ObjectUrl getObjectUrl(String objectId) {
|
|
|
+ FileMeta fileMeta = fileMetaMapper.findByObjectId(objectId);
|
|
|
+ if (fileMeta == null) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ String objectName = fileMeta.getObjectName();
|
|
|
+ String url = String.format("//oss.reghao.cn/%s", objectName);
|
|
|
+ int fileType = fileMeta.getFileType();
|
|
|
+ String signedUrl = signService.getSignedUrl(10001, url, ObjectType.Other.getCode(), 3600);
|
|
|
+ ObjectUrl objectUrl = new ObjectUrl(objectId, objectName, fileType, url, signedUrl);
|
|
|
+ return objectUrl;
|
|
|
+ }
|
|
|
}
|