Преглед на файлове

StoreService 添加一个 setObjectUpload 方法, 根据 ObjectChannel 的 setCallback 字段来判断 object 上传后是否需要调用此方法.
1.若 setCallback 为 true, 则 object 上传后创建的 FileMeta 对象的 deleted 字段为 true, 需要调用 setObjectUpload 方法将 deleted 设置为 false 后才能访问
2.若 setCallback 为 false, 则 object 上传后创建的 FileMeta 对象的 deleted 字段为 false, 不需要调用 setObjectUpload 方法

reghao преди 4 месеца
родител
ревизия
3ef5a1090b

+ 8 - 8
oss-api/src/main/java/cn/reghao/oss/api/dto/ObjectChannel.java

@@ -14,14 +14,14 @@ import java.io.Serializable;
 public class ObjectChannel implements Serializable {
     private static final long serialVersionUID = 1L;
 
-    private Integer id;
-    private Integer channelCode;
+    private int id;
+    private int channelCode;
     private String prefix;
-    private Long maxSize;
-    private Integer fileType;
-    private Boolean setUrl;
-    private Boolean setCallback;
-    private Integer scope;
+    private long maxSize;
+    private int fileType;
+    private boolean setUrl;
+    private boolean setCallback;
+    private int scope;
     private String domain;
-    private Integer createBy;
+    private int createBy;
 }

+ 1 - 0
oss-api/src/main/java/cn/reghao/oss/api/iface/StoreService.java

@@ -24,6 +24,7 @@ public interface StoreService {
     void createChannel(int owner, String channelPrefix, int scope);
     int countChannelObjects(String channelPrefix, int owner);
 
+    void setObjectUpload(String objectId);
     void setObjectScope(String objectId, int scope);
     void deleteByObjectId(String objectId);
     void deleteByObjectName(String objectName, int owner);

+ 1 - 1
oss-store/src/main/java/cn/reghao/oss/store/controller/ObjectUploadController.java

@@ -116,7 +116,7 @@ public class ObjectUploadController {
         String domain = ServletUtil.getHeader("host");
         String objectUrl = String.format("//%s/%s", domain, objectResult.getObjectName());
         UploadFileRet uploadFileRet;
-        if (objectChannel.getSetUrl()) {
+        if (objectChannel.isSetUrl()) {
             uploadFileRet = new UploadFileRet(objectId, objectUrl);
         } else {
             uploadFileRet = new UploadFileRet(objectId);

+ 1 - 1
oss-store/src/main/java/cn/reghao/oss/store/db/mapper/FileMetaMapper.java

@@ -17,7 +17,7 @@ import java.util.List;
 @Mapper
 public interface FileMetaMapper extends BaseMapper<FileMeta> {
     void updateScopeByObjectName(@Param("scope") int scope, @Param("objectName") String objectName);
-    void updateSetDelete(String objectId);
+    void updateObjectDeleted(FileMeta fileMeta);
 
     FileMeta findBySha256sum(String sha256sum);
     FileMeta findByObjectName(@Param("objectName") String objectName, @Param("owner") int owner);

+ 2 - 2
oss-store/src/main/java/cn/reghao/oss/store/db/repository/ObjectRepository.java

@@ -64,8 +64,8 @@ public class ObjectRepository {
     }
 
     @CacheEvict(cacheNames = "oss:store:objectMeta", key = "#fileMeta.objectName")
-    public void updateSetDelete(FileMeta fileMeta) {
-        fileMetaMapper.updateSetDelete(fileMeta.getObjectId());
+    public void updateFileMetaDeleted(FileMeta fileMeta) {
+        fileMetaMapper.updateObjectDeleted(fileMeta);
     }
 
     @Transactional(rollbackFor = Exception.class)

+ 9 - 1
oss-store/src/main/java/cn/reghao/oss/store/model/po/FileMeta.java

@@ -44,7 +44,7 @@ public class FileMeta extends BaseObject<Integer> {
     }
 
     public FileMeta(String objectName, String objectId, String contentId, String filename, long size,
-                    int fileType, String contentType, String sha256sum, String pid, int scope) {
+                    int fileType, String contentType, String sha256sum, String pid, int scope, boolean deleted) {
         this.objectName = objectName;
         this.objectId = objectId;
         this.contentId = contentId;
@@ -56,8 +56,16 @@ public class FileMeta extends BaseObject<Integer> {
         this.pid = pid;
         this.uploadBy = AuthContext.getUserId();
         this.scope = scope;
+        this.deleted = deleted;
     }
 
+    /**
+     * 复制已存在的 object 时调用
+     *
+     * @param
+     * @return
+     * @date 2025-10-25 13:10:924
+     */
     public FileMeta(String objectName, String objectId, String filename, FileMeta fileMeta, String pid, int scope) {
         this.objectName = objectName;
         this.objectId = objectId;

+ 1 - 0
oss-store/src/main/java/cn/reghao/oss/store/model/vo/ObjectProp.java

@@ -13,4 +13,5 @@ public class ObjectProp {
     private String objectName;
     private int scope;
     private String pid;
+    private boolean setCallback;
 }

+ 9 - 2
oss-store/src/main/java/cn/reghao/oss/store/rpc/StoreServiceImpl.java

@@ -106,6 +106,13 @@ public class StoreServiceImpl implements StoreService {
         return total;
     }
 
+    @Override
+    public void setObjectUpload(String objectId) {
+        FileMeta fileMeta = objectRepository.getByObjectId(objectId);
+        fileMeta.setDeleted(false);
+        objectRepository.updateFileMetaDeleted(fileMeta);
+    }
+
     @Override
     public void setObjectScope(String objectId, int scope) {
         FileMeta fileMeta = objectRepository.getByObjectId(objectId);
@@ -116,7 +123,7 @@ public class StoreServiceImpl implements StoreService {
     public void deleteByObjectId(String objectId) {
         FileMeta fileMeta = objectRepository.getByObjectId(objectId);
         if (fileMeta != null) {
-            objectRepository.updateSetDelete(fileMeta);
+            objectRepository.updateFileMetaDeleted(fileMeta);
         }
         //objectRepository.deleteObject(fileMeta);
     }
@@ -125,7 +132,7 @@ public class StoreServiceImpl implements StoreService {
     public void deleteByObjectName(String objectName, int owner) {
         FileMeta fileMeta = objectRepository.getByObjectName(objectName, owner);
         if (fileMeta != null) {
-            objectRepository.updateSetDelete(fileMeta);
+            objectRepository.updateFileMetaDeleted(fileMeta);
         }
 //        objectRepository.deleteObject(fileMeta);
     }

+ 2 - 2
oss-store/src/main/java/cn/reghao/oss/store/service/ObjectNameService.java

@@ -40,7 +40,7 @@ public class ObjectNameService {
         }
 
         String pid = fileMeta.getObjectId();
-        return new ObjectProp(objectName, scope, pid);
+        return new ObjectProp(objectName, scope, pid, channel.isSetCallback());
     }
 
     public ObjectProp getObjectProp(String originalObjectName, String suffix) {
@@ -53,7 +53,7 @@ public class ObjectNameService {
         String pid = fileMeta.getPid();
 
         String objectName = prefix + UUID.randomUUID().toString().replace("-", "") + suffix;
-        return new ObjectProp(objectName, scope, pid);
+        return new ObjectProp(objectName, scope, pid, fileMeta.getDeleted());
     }
 
     public String getObjectNameFromOriginal(String originalObjectName, String suffix) {

+ 1 - 19
oss-store/src/main/java/cn/reghao/oss/store/service/PutObjectService.java

@@ -54,7 +54,7 @@ public class PutObjectService {
             int fileType = FileType.getFileType(contentType);
             int scope = objectProp.getScope();
             fileMeta = new FileMeta(objectName, objectId, contentId, originalFilename, size,
-                    fileType, contentType, sha256sum, pid, scope);
+                    fileType, contentType, sha256sum, pid, scope, objectProp.isSetCallback());
             String blockId = UUID.randomUUID().toString();
             List<DataBlock> list = List.of(new DataBlock(contentId, blockId, nodeAddress, savedPath, size));
             objectRepository.saveObject(fileMeta, list);
@@ -88,24 +88,6 @@ public class PutObjectService {
         return new ObjectResult(objectName, objectId, fileType, savedPath, dupObjectId);
     }
 
-    public ObjectResult copyFromObjectName(String fromObjectName) {
-        String domain = ServletUtil.getHeader("host");
-        int owner = consoleServiceWrapper.getNodeProperties(domain).getOwner();
-        FileMeta fileMeta = objectRepository.getByObjectName(fromObjectName, owner);
-        int fileType = fileMeta.getFileType();
-
-        String suffix = StringUtil.getSuffix(fromObjectName);
-        String filename = fileMeta.getFilename();
-        String savedPath = "";
-        int scope = fileMeta.getScope();
-        String toObjectName = objectNameService.getObjectNameFromOriginal(fromObjectName, suffix);
-        String toObjectId = UUID.randomUUID().toString().replace("-", "");
-        String pid = "0";
-        FileMeta fileMeta1 = new FileMeta(toObjectName, toObjectId, filename, fileMeta, pid, scope);
-        objectRepository.saveFileMeta(fileMeta1);
-        return new ObjectResult(toObjectName, toObjectId, fileType, savedPath);
-    }
-
     public ObjectResult copyFromObjectId(String fromObjectId) {
         FileMeta fileMeta = objectRepository.getByObjectId(fromObjectId);
         int fileType = fileMeta.getFileType();

+ 2 - 2
oss-store/src/main/resources/mapper/FileMetaMapper.xml

@@ -32,9 +32,9 @@
         set scope=#{scope}
         where object_name=#{objectName}
     </update>
-    <update id="updateSetDelete">
+    <update id="updateObjectDeleted">
         update file_meta
-        set deleted=1
+        set deleted=#{deleted}
         where object_id=#{objectId}
     </update>
     <update id="updateScopeByObjectNames">