Browse Source

dfs-api 包名修改为 oss-api

reghao 2 years ago
parent
commit
eda64a1cae
50 changed files with 297 additions and 128 deletions
  1. 2 2
      dfs-store/pom.xml
  2. 6 2
      dfs-store/src/main/java/cn/reghao/dfs/store/config/web/PutMessageConverter.java
  3. 2 1
      dfs-store/src/main/java/cn/reghao/dfs/store/controller/ObjectUploadController.java
  4. 3 3
      dfs-store/src/main/java/cn/reghao/dfs/store/db/mapper/FileMetaMapper.java
  5. 1 1
      dfs-store/src/main/java/cn/reghao/dfs/store/db/mapper/ImageFileMapper.java
  6. 1 1
      dfs-store/src/main/java/cn/reghao/dfs/store/db/mapper/VideoUrlMapper.java
  7. 5 2
      dfs-store/src/main/java/cn/reghao/dfs/store/db/repository/ObjectRepository.java
  8. 24 18
      dfs-store/src/main/java/cn/reghao/dfs/store/inerceptor/AccessLogInterceptor.java
  9. 12 2
      dfs-store/src/main/java/cn/reghao/dfs/store/inerceptor/JwtTokenFilter.java
  10. 8 0
      dfs-store/src/main/java/cn/reghao/dfs/store/model/constant/UploadChannel.java
  11. 4 3
      dfs-store/src/main/java/cn/reghao/dfs/store/model/po/FileMeta.java
  12. 1 1
      dfs-store/src/main/java/cn/reghao/dfs/store/model/po/VideoFile.java
  13. 31 0
      dfs-store/src/main/java/cn/reghao/dfs/store/rpc/ChannelServiceImpl.java
  14. 9 3
      dfs-store/src/main/java/cn/reghao/dfs/store/rpc/MediaUrlServiceImpl.java
  15. 2 2
      dfs-store/src/main/java/cn/reghao/dfs/store/rpc/ObjectServiceImpl.java
  16. 36 0
      dfs-store/src/main/java/cn/reghao/dfs/store/rpc/PermissionServiceImpl.java
  17. 3 11
      dfs-store/src/main/java/cn/reghao/dfs/store/rpc/disk/DiskServiceImpl.java
  18. 4 4
      dfs-store/src/main/java/cn/reghao/dfs/store/rpc/disk/FileServiceImpl.java
  19. 3 11
      dfs-store/src/main/java/cn/reghao/dfs/store/rpc/disk/TrashServiceImpl.java
  20. 1 1
      dfs-store/src/main/java/cn/reghao/dfs/store/service/FileStoreService.java
  21. 1 1
      dfs-store/src/main/java/cn/reghao/dfs/store/service/GetObjectService.java
  22. 1 1
      dfs-store/src/main/java/cn/reghao/dfs/store/task/ConvertTask.java
  23. 1 1
      dfs-store/src/main/java/cn/reghao/dfs/store/task/ImageFileService.java
  24. 3 3
      dfs-store/src/main/java/cn/reghao/dfs/store/task/VideoFileProcessor.java
  25. 22 0
      dfs-store/src/main/java/cn/reghao/dfs/store/util/UserContext.java
  26. 7 7
      dfs-store/src/main/resources/mapper/FileMetaMapper.xml
  27. 1 1
      dfs-store/src/main/resources/mapper/ImageFileMapper.xml
  28. 1 1
      dfs-store/src/main/resources/mapper/VideoUrlMapper.xml
  29. 1 1
      dfs-store/src/test/java/RedisTest.java
  30. 2 2
      oss-api/pom.xml
  31. 20 0
      oss-api/src/main/java/cn/reghao/oss/api/dto/ChannelDto.java
  32. 1 1
      oss-api/src/main/java/cn/reghao/oss/api/dto/DeleteFile.java
  33. 1 1
      oss-api/src/main/java/cn/reghao/oss/api/dto/DirProp.java
  34. 1 1
      oss-api/src/main/java/cn/reghao/oss/api/dto/FileInfo.java
  35. 1 1
      oss-api/src/main/java/cn/reghao/oss/api/dto/FileProp.java
  36. 1 1
      oss-api/src/main/java/cn/reghao/oss/api/dto/ImageFileRet.java
  37. 1 1
      oss-api/src/main/java/cn/reghao/oss/api/dto/ImageUrl.java
  38. 1 1
      oss-api/src/main/java/cn/reghao/oss/api/dto/ObjectMeta.java
  39. 1 1
      oss-api/src/main/java/cn/reghao/oss/api/dto/VideoInfo.java
  40. 1 1
      oss-api/src/main/java/cn/reghao/oss/api/dto/VideoUrlDto.java
  41. 1 1
      oss-api/src/main/java/cn/reghao/oss/api/dto/VideoUrlType.java
  42. 13 0
      oss-api/src/main/java/cn/reghao/oss/api/iface/ChannelService.java
  43. 5 3
      oss-api/src/main/java/cn/reghao/oss/api/iface/MediaUrlService.java
  44. 2 2
      oss-api/src/main/java/cn/reghao/oss/api/iface/ObjectService.java
  45. 12 0
      oss-api/src/main/java/cn/reghao/oss/api/iface/PermissionService.java
  46. 2 2
      oss-api/src/main/java/cn/reghao/oss/api/iface/disk/DiskService.java
  47. 3 3
      oss-api/src/main/java/cn/reghao/oss/api/iface/disk/FileService.java
  48. 2 2
      oss-api/src/main/java/cn/reghao/oss/api/iface/disk/TrashService.java
  49. 18 18
      oss-sdk/src/main/java/cn/reghao/oss/sdk/ObjectUploadService.java
  50. 12 2
      oss-sdk/src/test/java/ObjectTest.java

+ 2 - 2
dfs-store/pom.xml

@@ -50,8 +50,8 @@
             <version>1.0.0-SNAPSHOT</version>
             <version>1.0.0-SNAPSHOT</version>
         </dependency>
         </dependency>
         <dependency>
         <dependency>
-            <groupId>cn.reghao.dfs</groupId>
-            <artifactId>dfs-api</artifactId>
+            <groupId>cn.reghao.oss</groupId>
+            <artifactId>oss-api</artifactId>
             <version>1.0.0-SNAPSHOT</version>
             <version>1.0.0-SNAPSHOT</version>
         </dependency>
         </dependency>
         <dependency>
         <dependency>

+ 6 - 2
dfs-store/src/main/java/cn/reghao/dfs/store/config/web/PutMessageConverter.java

@@ -9,6 +9,9 @@ import org.springframework.http.converter.HttpMessageNotReadableException;
 import org.springframework.http.converter.HttpMessageNotWritableException;
 import org.springframework.http.converter.HttpMessageNotWritableException;
 
 
 import java.io.*;
 import java.io.*;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.StandardCopyOption;
 import java.util.UUID;
 import java.util.UUID;
 
 
 /**
 /**
@@ -37,8 +40,9 @@ public class PutMessageConverter extends AbstractHttpMessageConverter<File> {
 
 
     private File saveStream(InputStream inputStream) throws IOException {
     private File saveStream(InputStream inputStream) throws IOException {
         String tmpPath = String.format("/opt/tmp/tomcat/%s.dat", UUID.randomUUID());
         String tmpPath = String.format("/opt/tmp/tomcat/%s.dat", UUID.randomUUID());
+        Files.copy(inputStream, Path.of(tmpPath), StandardCopyOption.REPLACE_EXISTING);
         File tmpFile = new File(tmpPath);
         File tmpFile = new File(tmpPath);
-        tmpFile.createNewFile();
+        /*tmpFile.createNewFile();
         FileOutputStream outputStream = new FileOutputStream(tmpFile);
         FileOutputStream outputStream = new FileOutputStream(tmpFile);
         byte[] buffer = new byte[1024];
         byte[] buffer = new byte[1024];
         int bytesRead;
         int bytesRead;
@@ -46,7 +50,7 @@ public class PutMessageConverter extends AbstractHttpMessageConverter<File> {
             outputStream.write(buffer, 0, bytesRead);
             outputStream.write(buffer, 0, bytesRead);
         }
         }
         outputStream.flush();
         outputStream.flush();
-        outputStream.close();
+        outputStream.close();*/
         return tmpFile;
         return tmpFile;
     }
     }
 
 

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

@@ -45,7 +45,7 @@ public class ObjectUploadController {
             String sha256sum1 = DigestUtil.sha256sum(fis);
             String sha256sum1 = DigestUtil.sha256sum(fis);
             if (!sha256sum.equals(sha256sum1)) {
             if (!sha256sum.equals(sha256sum1)) {
                 FileUtils.deleteQuietly(file);
                 FileUtils.deleteQuietly(file);
-                return WebResult.failWithMsg("sha256sum 不匹配");
+                return WebResult.failWithMsg("sha256sum not match");
             }
             }
 
 
             String objectName = ObjectUtil.getObjectName(channelId);
             String objectName = ObjectUtil.getObjectName(channelId);
@@ -55,6 +55,7 @@ public class ObjectUploadController {
             long size = file.length();
             long size = file.length();
             File savedFile = fileStoreService.saveFile(file.getAbsolutePath(), contentId, size);
             File savedFile = fileStoreService.saveFile(file.getAbsolutePath(), contentId, size);
             UploadFileRet uploadFileRet = putObjectService.putObject(pid, objectName, contentId, savedFile, originalFilename, sha256sum);
             UploadFileRet uploadFileRet = putObjectService.putObject(pid, objectName, contentId, savedFile, originalFilename, sha256sum);
+
             // TODO PutMessageConverter 中生成的文件需要显式删除
             // TODO PutMessageConverter 中生成的文件需要显式删除
             FileUtils.deleteQuietly(file);
             FileUtils.deleteQuietly(file);
             return WebResult.success(uploadFileRet);
             return WebResult.success(uploadFileRet);

+ 3 - 3
dfs-store/src/main/java/cn/reghao/dfs/store/db/mapper/FileMetaMapper.java

@@ -1,9 +1,9 @@
 package cn.reghao.dfs.store.db.mapper;
 package cn.reghao.dfs.store.db.mapper;
 
 
-import cn.reghao.dfs.api.dto.DeleteFile;
-import cn.reghao.dfs.api.dto.FileInfo;
+import cn.reghao.oss.api.dto.DeleteFile;
+import cn.reghao.oss.api.dto.FileInfo;
 import cn.reghao.dfs.store.model.po.FileMeta;
 import cn.reghao.dfs.store.model.po.FileMeta;
-import cn.reghao.dfs.api.dto.ObjectMeta;
+import cn.reghao.oss.api.dto.ObjectMeta;
 import cn.reghao.jutil.jdk.db.BaseMapper;
 import cn.reghao.jutil.jdk.db.BaseMapper;
 import cn.reghao.jutil.jdk.db.Page;
 import cn.reghao.jutil.jdk.db.Page;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Mapper;

+ 1 - 1
dfs-store/src/main/java/cn/reghao/dfs/store/db/mapper/ImageFileMapper.java

@@ -1,6 +1,6 @@
 package cn.reghao.dfs.store.db.mapper;
 package cn.reghao.dfs.store.db.mapper;
 
 
-import cn.reghao.dfs.api.dto.ImageUrl;
+import cn.reghao.oss.api.dto.ImageUrl;
 import cn.reghao.dfs.store.model.po.ImageFile;
 import cn.reghao.dfs.store.model.po.ImageFile;
 import cn.reghao.jutil.jdk.db.BaseMapper;
 import cn.reghao.jutil.jdk.db.BaseMapper;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Mapper;

+ 1 - 1
dfs-store/src/main/java/cn/reghao/dfs/store/db/mapper/VideoUrlMapper.java

@@ -1,6 +1,6 @@
 package cn.reghao.dfs.store.db.mapper;
 package cn.reghao.dfs.store.db.mapper;
 
 
-import cn.reghao.dfs.api.dto.VideoUrlDto;
+import cn.reghao.oss.api.dto.VideoUrlDto;
 import cn.reghao.dfs.store.model.po.VideoUrl;
 import cn.reghao.dfs.store.model.po.VideoUrl;
 import cn.reghao.jutil.jdk.db.BaseMapper;
 import cn.reghao.jutil.jdk.db.BaseMapper;
 import cn.reghao.jutil.jdk.db.Page;
 import cn.reghao.jutil.jdk.db.Page;

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

@@ -4,7 +4,7 @@ import cn.reghao.dfs.store.db.mapper.DataBlockMapper;
 import cn.reghao.dfs.store.db.mapper.FileMetaMapper;
 import cn.reghao.dfs.store.db.mapper.FileMetaMapper;
 import cn.reghao.dfs.store.model.po.DataBlock;
 import cn.reghao.dfs.store.model.po.DataBlock;
 import cn.reghao.dfs.store.model.po.FileMeta;
 import cn.reghao.dfs.store.model.po.FileMeta;
-import cn.reghao.dfs.api.dto.ObjectMeta;
+import cn.reghao.oss.api.dto.ObjectMeta;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.cache.annotation.CacheEvict;
 import org.springframework.cache.annotation.CacheEvict;
 import org.springframework.cache.annotation.CachePut;
 import org.springframework.cache.annotation.CachePut;
@@ -51,15 +51,18 @@ public class ObjectRepository {
     public void delete(FileMeta fileMeta) {
     public void delete(FileMeta fileMeta) {
     }
     }
 
 
+    @Cacheable(cacheNames = "fileMeta", key = "#objectName", unless = "#result == null")
     public FileMeta getByObjectName(String objectName) {
     public FileMeta getByObjectName(String objectName) {
+        log.info("查找 db");
         return fileMetaMapper.findByObjectName(objectName);
         return fileMetaMapper.findByObjectName(objectName);
     }
     }
 
 
+    @Cacheable(cacheNames = "fileMeta", key = "#sha256sum", unless = "#result == null")
     public FileMeta getBySha256sum(String sha256sum) {
     public FileMeta getBySha256sum(String sha256sum) {
         return fileMetaMapper.findBySha256sum(sha256sum);
         return fileMetaMapper.findBySha256sum(sha256sum);
     }
     }
 
 
-    @Cacheable(cacheNames = "objectMeta", key = "#objectName")
+    @Cacheable(cacheNames = "objectMeta", key = "#objectName", unless = "#result == null")
     public ObjectMeta getObjectMeta(String objectName) {
     public ObjectMeta getObjectMeta(String objectName) {
         log.info("查找 db");
         log.info("查找 db");
         ObjectMeta objectMeta = fileMetaMapper.findObjectMeta(objectName);
         ObjectMeta objectMeta = fileMetaMapper.findObjectMeta(objectName);

+ 24 - 18
dfs-store/src/main/java/cn/reghao/dfs/store/inerceptor/AccessLogInterceptor.java

@@ -1,8 +1,8 @@
 package cn.reghao.dfs.store.inerceptor;
 package cn.reghao.dfs.store.inerceptor;
 
 
-import cn.reghao.dfs.store.db.mapper.FileMetaMapper;
-import cn.reghao.dfs.store.model.constant.ObjectACL;
+import cn.reghao.dfs.store.db.repository.ObjectRepository;
 import cn.reghao.dfs.store.model.po.FileMeta;
 import cn.reghao.dfs.store.model.po.FileMeta;
+import cn.reghao.dfs.store.util.UserContext;
 import cn.reghao.tnb.account.api.dto.UserPermission;
 import cn.reghao.tnb.account.api.dto.UserPermission;
 import cn.reghao.tnb.account.api.iface.UserQuery;
 import cn.reghao.tnb.account.api.iface.UserQuery;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
@@ -28,10 +28,10 @@ import java.nio.charset.StandardCharsets;
 public class AccessLogInterceptor implements HandlerInterceptor {
 public class AccessLogInterceptor implements HandlerInterceptor {
     @DubboReference(check = false)
     @DubboReference(check = false)
     private UserQuery userQuery;
     private UserQuery userQuery;
-    private final FileMetaMapper fileMetaMapper;
+    private final ObjectRepository objectRepository;
 
 
-    public AccessLogInterceptor(FileMetaMapper fileMetaMapper) {
-        this.fileMetaMapper = fileMetaMapper;
+    public AccessLogInterceptor(ObjectRepository objectRepository) {
+        this.objectRepository = objectRepository;
     }
     }
 
 
     @Override
     @Override
@@ -43,12 +43,21 @@ public class AccessLogInterceptor implements HandlerInterceptor {
             return true;
             return true;
         }
         }
 
 
-        /*long userId = Long.parseLong(request.getHeader("x-user-id"));
-        UserPermission userPermission = userQuery.getUserPermission(userId);*/
+        //checkPermission(method, uri, response);
+        String userAgent = request.getHeader("user-agent");
+        String ipv4 = request.getRemoteAddr();
+        String referer = request.getHeader("referer");
+        String sign = request.getParameter("sign");
+        log.info("{} -> {}", method, uri);
+        return true;
+    }
 
 
-        /*if (method.equals("GET")) {
+    private boolean checkPermission(String method, String uri,  HttpServletResponse response) {
+        long userId = UserContext.getUser();
+        UserPermission userPermission = userQuery.getUserPermission(userId);
+        if (method.equals("GET") || method.equals("HEAD")) {
             String objectName = URLDecoder.decode(uri, StandardCharsets.UTF_8).replaceFirst("/", "");
             String objectName = URLDecoder.decode(uri, StandardCharsets.UTF_8).replaceFirst("/", "");
-            FileMeta fileMeta = fileMetaMapper.findByObjectName(objectName);
+            FileMeta fileMeta = objectRepository.getByObjectName(objectName);
             if (fileMeta == null) {
             if (fileMeta == null) {
                 return false;
                 return false;
             }
             }
@@ -58,13 +67,13 @@ public class AccessLogInterceptor implements HandlerInterceptor {
                 response.setStatus(HttpServletResponse.SC_FORBIDDEN);
                 response.setStatus(HttpServletResponse.SC_FORBIDDEN);
                 return false;
                 return false;
             }
             }
-        }*/
+        } else if (method.equals("PUT") || method.equals("POST")) {
+            if (userId == -1) {
+                response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
+                return false;
+            }
+        }
 
 
-        String userAgent = request.getHeader("user-agent");
-        String ipv4 = request.getRemoteAddr();
-        String referer = request.getHeader("referer");
-        String sign = request.getParameter("sign");
-        log.info("{} -> {}", method, uri);
         return true;
         return true;
     }
     }
 
 
@@ -77,8 +86,5 @@ public class AccessLogInterceptor implements HandlerInterceptor {
     @Override
     @Override
     public void afterCompletion(HttpServletRequest request, HttpServletResponse response,
     public void afterCompletion(HttpServletRequest request, HttpServletResponse response,
                                 Object handler, @Nullable Exception ex) throws Exception {
                                 Object handler, @Nullable Exception ex) throws Exception {
-        String uri = request.getRequestURI();
-        int statusCode = response.getStatus();
-        //log.info("{} -> {}", statusCode, uri);
     }
     }
 }
 }

+ 12 - 2
dfs-store/src/main/java/cn/reghao/dfs/store/inerceptor/JwtTokenFilter.java

@@ -1,5 +1,6 @@
 package cn.reghao.dfs.store.inerceptor;
 package cn.reghao.dfs.store.inerceptor;
 
 
+import cn.reghao.dfs.store.util.UserContext;
 import cn.reghao.jutil.tool.jwt.Jwt;
 import cn.reghao.jutil.tool.jwt.Jwt;
 import cn.reghao.jutil.tool.jwt.JwtPayload;
 import cn.reghao.jutil.tool.jwt.JwtPayload;
 import io.jsonwebtoken.ExpiredJwtException;
 import io.jsonwebtoken.ExpiredJwtException;
@@ -28,6 +29,7 @@ public class JwtTokenFilter implements Filter {
         HttpServletRequest httpServletRequest = (HttpServletRequest) request;
         HttpServletRequest httpServletRequest = (HttpServletRequest) request;
         MutableHttpServletRequest mutableHttpServletRequest = new MutableHttpServletRequest(httpServletRequest);
         MutableHttpServletRequest mutableHttpServletRequest = new MutableHttpServletRequest(httpServletRequest);
         String jwtToken = getJwtToken(httpServletRequest);
         String jwtToken = getJwtToken(httpServletRequest);
+        Long userId = null;
         if (jwtToken != null) {
         if (jwtToken != null) {
             /*try {
             /*try {
                 JwtPayload jwtPayload = Jwt.parse(jwtToken, "");
                 JwtPayload jwtPayload = Jwt.parse(jwtToken, "");
@@ -47,10 +49,18 @@ public class JwtTokenFilter implements Filter {
                 return;
                 return;
             }*/
             }*/
         } else {
         } else {
-            mutableHttpServletRequest.putHeader("x-user-id", "-1");
+            String userIdStr = httpServletRequest.getHeader("x-user-id");
+            if (userIdStr == null) {
+                userId = -1L;
+            } else {
+                userId = Long.parseLong(userIdStr);
+            }
+            //mutableHttpServletRequest.putHeader("x-user-id", "-1");
         }
         }
 
 
-        chain.doFilter(mutableHttpServletRequest, response);
+        try (UserContext context = new UserContext(userId)) {
+            chain.doFilter(mutableHttpServletRequest, response);
+        }
     }
     }
 
 
     private void writeResponse(HttpServletResponse response, String msg) throws IOException {
     private void writeResponse(HttpServletResponse response, String msg) throws IOException {

+ 8 - 0
dfs-store/src/main/java/cn/reghao/dfs/store/model/constant/UploadChannel.java

@@ -38,4 +38,12 @@ public enum UploadChannel {
     public static String getPrefix(int code) {
     public static String getPrefix(int code) {
         return map.get(code);
         return map.get(code);
     }
     }
+
+    public int getCode() {
+        return code;
+    }
+
+    public String getPrefix() {
+        return prefix;
+    }
 }
 }

+ 4 - 3
dfs-store/src/main/java/cn/reghao/dfs/store/model/po/FileMeta.java

@@ -1,5 +1,6 @@
 package cn.reghao.dfs.store.model.po;
 package cn.reghao.dfs.store.model.po;
 
 
+import cn.reghao.dfs.store.util.UserContext;
 import cn.reghao.jutil.jdk.db.BaseObject;
 import cn.reghao.jutil.jdk.db.BaseObject;
 import lombok.Getter;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.NoArgsConstructor;
@@ -39,7 +40,7 @@ public class FileMeta extends BaseObject<Integer> {
         this.contentType = "0";
         this.contentType = "0";
         this.sha256sum = "0";
         this.sha256sum = "0";
         this.pid = pid;
         this.pid = pid;
-        this.uploadBy = 10000L;
+        this.uploadBy = UserContext.getUser();
         this.diskFile = false;
         this.diskFile = false;
         this.acl = 1;
         this.acl = 1;
     }
     }
@@ -55,7 +56,7 @@ public class FileMeta extends BaseObject<Integer> {
         this.contentType = contentType;
         this.contentType = contentType;
         this.sha256sum = sha256sum;
         this.sha256sum = sha256sum;
         this.pid = pid;
         this.pid = pid;
-        this.uploadBy = 10000L;
+        this.uploadBy = UserContext.getUser();
         this.diskFile = false;
         this.diskFile = false;
         this.acl = 1;
         this.acl = 1;
     }
     }
@@ -70,7 +71,7 @@ public class FileMeta extends BaseObject<Integer> {
         this.contentType = fileMeta.getContentType();
         this.contentType = fileMeta.getContentType();
         this.sha256sum = fileMeta.getSha256sum();
         this.sha256sum = fileMeta.getSha256sum();
         this.pid = fileMeta.getPid();
         this.pid = fileMeta.getPid();
-        this.uploadBy = fileMeta.getUploadBy();
+        this.uploadBy = UserContext.getUser();
         this.diskFile = fileMeta.getDiskFile();
         this.diskFile = fileMeta.getDiskFile();
         this.acl = fileMeta.getAcl();
         this.acl = fileMeta.getAcl();
     }
     }

+ 1 - 1
dfs-store/src/main/java/cn/reghao/dfs/store/model/po/VideoFile.java

@@ -1,6 +1,6 @@
 package cn.reghao.dfs.store.model.po;
 package cn.reghao.dfs.store.model.po;
 
 
-import cn.reghao.dfs.api.dto.VideoInfo;
+import cn.reghao.oss.api.dto.VideoInfo;
 import cn.reghao.jutil.jdk.db.BaseObject;
 import cn.reghao.jutil.jdk.db.BaseObject;
 import lombok.Getter;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.NoArgsConstructor;

+ 31 - 0
dfs-store/src/main/java/cn/reghao/dfs/store/rpc/ChannelServiceImpl.java

@@ -0,0 +1,31 @@
+package cn.reghao.dfs.store.rpc;
+
+import cn.reghao.dfs.store.model.constant.UploadChannel;
+import cn.reghao.oss.api.dto.ChannelDto;
+import cn.reghao.oss.api.iface.ChannelService;
+import org.apache.dubbo.config.annotation.DubboService;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author reghao
+ * @date 2023-06-02 10:28:28
+ */
+@DubboService
+@Service
+public class ChannelServiceImpl implements ChannelService {
+    @Override
+    public List<ChannelDto> getChannels() {
+        List<ChannelDto> list = new ArrayList<>();
+        for (UploadChannel channel : UploadChannel.values()) {
+            int channelId = channel.getCode();
+            String channelPrefix = channel.getPrefix();
+            String channelName = channel.name();
+            list.add(new ChannelDto(channelPrefix, channelId, channelName));
+        }
+
+        return list;
+    }
+}

+ 9 - 3
dfs-store/src/main/java/cn/reghao/dfs/store/rpc/MediaUrlServiceImpl.java

@@ -1,8 +1,9 @@
 package cn.reghao.dfs.store.rpc;
 package cn.reghao.dfs.store.rpc;
 
 
-import cn.reghao.dfs.api.dto.ImageUrl;
-import cn.reghao.dfs.api.dto.VideoUrlDto;
-import cn.reghao.dfs.api.iface.MediaUrlService;
+import cn.reghao.oss.api.dto.ImageUrl;
+import cn.reghao.oss.api.dto.VideoInfo;
+import cn.reghao.oss.api.dto.VideoUrlDto;
+import cn.reghao.oss.api.iface.MediaUrlService;
 import cn.reghao.dfs.store.db.mapper.ImageFileMapper;
 import cn.reghao.dfs.store.db.mapper.ImageFileMapper;
 import cn.reghao.dfs.store.db.mapper.VideoUrlMapper;
 import cn.reghao.dfs.store.db.mapper.VideoUrlMapper;
 import org.apache.dubbo.config.annotation.DubboService;
 import org.apache.dubbo.config.annotation.DubboService;
@@ -30,6 +31,11 @@ public class MediaUrlServiceImpl implements MediaUrlService {
         return imageFileMapper.findImageUrl(imageFileId);
         return imageFileMapper.findImageUrl(imageFileId);
     }
     }
 
 
+    @Override
+    public VideoInfo getVideoInfo(String videoFileId) {
+        return null;
+    }
+
     @Override
     @Override
     public List<VideoUrlDto> getVideoUrls(String videoFileId, String urlType) {
     public List<VideoUrlDto> getVideoUrls(String videoFileId, String urlType) {
         return videoUrlMapper.findVideoUrls(videoFileId, urlType);
         return videoUrlMapper.findVideoUrls(videoFileId, urlType);

+ 2 - 2
dfs-store/src/main/java/cn/reghao/dfs/store/rpc/ObjectServiceImpl.java

@@ -1,7 +1,7 @@
 package cn.reghao.dfs.store.rpc;
 package cn.reghao.dfs.store.rpc;
 
 
-import cn.reghao.dfs.api.dto.ObjectMeta;
-import cn.reghao.dfs.api.iface.ObjectService;
+import cn.reghao.oss.api.dto.ObjectMeta;
+import cn.reghao.oss.api.iface.ObjectService;
 import cn.reghao.dfs.store.db.mapper.FileMetaMapper;
 import cn.reghao.dfs.store.db.mapper.FileMetaMapper;
 import org.apache.dubbo.config.annotation.DubboService;
 import org.apache.dubbo.config.annotation.DubboService;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;

+ 36 - 0
dfs-store/src/main/java/cn/reghao/dfs/store/rpc/PermissionServiceImpl.java

@@ -0,0 +1,36 @@
+package cn.reghao.dfs.store.rpc;
+
+import cn.reghao.dfs.store.model.constant.ObjectACL;
+import cn.reghao.oss.api.iface.PermissionService;
+import org.apache.dubbo.config.annotation.DubboService;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author reghao
+ * @date 2023-06-02 10:07:42
+ */
+@DubboService
+@Service
+public class PermissionServiceImpl implements PermissionService {
+    @Override
+    public void setDirPermission(String prefix, int acl) {
+
+    }
+
+    @Override
+    public void getDirPermission(String prefix) {
+        for (ObjectACL acl : ObjectACL.values()) {
+
+        }
+    }
+
+    @Override
+    public void setObjectPermission(String objectName, int acl) {
+
+    }
+
+    @Override
+    public void getObjectPermission(String objectName) {
+
+    }
+}

+ 3 - 11
dfs-store/src/main/java/cn/reghao/dfs/store/rpc/DiskServiceImpl.java → dfs-store/src/main/java/cn/reghao/dfs/store/rpc/disk/DiskServiceImpl.java

@@ -1,13 +1,8 @@
-package cn.reghao.dfs.store.rpc;
+package cn.reghao.dfs.store.rpc.disk;
 
 
-import cn.reghao.dfs.api.dto.DeleteFile;
-import cn.reghao.dfs.api.dto.DirProp;
-import cn.reghao.dfs.api.dto.FileInfo;
-import cn.reghao.dfs.api.dto.FileProp;
-import cn.reghao.dfs.api.iface.DiskService;
-import cn.reghao.dfs.api.iface.FileService;
+import cn.reghao.oss.api.dto.FileInfo;
+import cn.reghao.oss.api.iface.disk.DiskService;
 import cn.reghao.dfs.store.db.mapper.FileMetaMapper;
 import cn.reghao.dfs.store.db.mapper.FileMetaMapper;
-import cn.reghao.dfs.store.model.po.FileMeta;
 import cn.reghao.dfs.store.service.PutObjectService;
 import cn.reghao.dfs.store.service.PutObjectService;
 import cn.reghao.jutil.jdk.db.Page;
 import cn.reghao.jutil.jdk.db.Page;
 import cn.reghao.jutil.jdk.db.PageList;
 import cn.reghao.jutil.jdk.db.PageList;
@@ -15,10 +10,7 @@ import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboService;
 import org.apache.dubbo.config.annotation.DubboService;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
-import java.io.ByteArrayInputStream;
-import java.nio.charset.StandardCharsets;
 import java.util.List;
 import java.util.List;
-import java.util.UUID;
 
 
 /**
 /**
  * @author reghao
  * @author reghao

+ 4 - 4
dfs-store/src/main/java/cn/reghao/dfs/store/rpc/FileServiceImpl.java → dfs-store/src/main/java/cn/reghao/dfs/store/rpc/disk/FileServiceImpl.java

@@ -1,8 +1,8 @@
-package cn.reghao.dfs.store.rpc;
+package cn.reghao.dfs.store.rpc.disk;
 
 
-import cn.reghao.dfs.api.dto.DirProp;
-import cn.reghao.dfs.api.dto.FileProp;
-import cn.reghao.dfs.api.iface.FileService;
+import cn.reghao.oss.api.dto.DirProp;
+import cn.reghao.oss.api.dto.FileProp;
+import cn.reghao.oss.api.iface.disk.FileService;
 import cn.reghao.dfs.store.config.OssProperties;
 import cn.reghao.dfs.store.config.OssProperties;
 import cn.reghao.dfs.store.db.mapper.FileMetaMapper;
 import cn.reghao.dfs.store.db.mapper.FileMetaMapper;
 import cn.reghao.dfs.store.model.po.FileMeta;
 import cn.reghao.dfs.store.model.po.FileMeta;

+ 3 - 11
dfs-store/src/main/java/cn/reghao/dfs/store/rpc/TrashServiceImpl.java → dfs-store/src/main/java/cn/reghao/dfs/store/rpc/disk/TrashServiceImpl.java

@@ -1,13 +1,8 @@
-package cn.reghao.dfs.store.rpc;
+package cn.reghao.dfs.store.rpc.disk;
 
 
-import cn.reghao.dfs.api.dto.DeleteFile;
-import cn.reghao.dfs.api.dto.DirProp;
-import cn.reghao.dfs.api.dto.FileInfo;
-import cn.reghao.dfs.api.dto.FileProp;
-import cn.reghao.dfs.api.iface.FileService;
-import cn.reghao.dfs.api.iface.TrashService;
+import cn.reghao.oss.api.dto.DeleteFile;
+import cn.reghao.oss.api.iface.disk.TrashService;
 import cn.reghao.dfs.store.db.mapper.FileMetaMapper;
 import cn.reghao.dfs.store.db.mapper.FileMetaMapper;
-import cn.reghao.dfs.store.model.po.FileMeta;
 import cn.reghao.dfs.store.service.PutObjectService;
 import cn.reghao.dfs.store.service.PutObjectService;
 import cn.reghao.jutil.jdk.db.Page;
 import cn.reghao.jutil.jdk.db.Page;
 import cn.reghao.jutil.jdk.db.PageList;
 import cn.reghao.jutil.jdk.db.PageList;
@@ -15,10 +10,7 @@ import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboService;
 import org.apache.dubbo.config.annotation.DubboService;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
-import java.io.ByteArrayInputStream;
-import java.nio.charset.StandardCharsets;
 import java.util.List;
 import java.util.List;
-import java.util.UUID;
 
 
 /**
 /**
  * @author reghao
  * @author reghao

+ 1 - 1
dfs-store/src/main/java/cn/reghao/dfs/store/service/FileStoreService.java

@@ -79,7 +79,7 @@ public class FileStoreService {
             throw new IOException(absolutePath + " exist");
             throw new IOException(absolutePath + " exist");
         }
         }
 
 
-        Files.move(Path.of(absolutePath), Path.of(srcPath), StandardCopyOption.REPLACE_EXISTING);
+        Files.move(Path.of(srcPath), Path.of(absolutePath), StandardCopyOption.REPLACE_EXISTING);
         return file;
         return file;
     }
     }
 
 

+ 1 - 1
dfs-store/src/main/java/cn/reghao/dfs/store/service/GetObjectService.java

@@ -5,7 +5,7 @@ import cn.reghao.dfs.store.db.mapper.FileMetaMapper;
 import cn.reghao.dfs.store.db.repository.ObjectRepository;
 import cn.reghao.dfs.store.db.repository.ObjectRepository;
 import cn.reghao.dfs.store.model.dto.ContentRange;
 import cn.reghao.dfs.store.model.dto.ContentRange;
 import cn.reghao.dfs.store.model.po.FileMeta;
 import cn.reghao.dfs.store.model.po.FileMeta;
-import cn.reghao.dfs.api.dto.ObjectMeta;
+import cn.reghao.oss.api.dto.ObjectMeta;
 import cn.reghao.jutil.web.ServletUtil;
 import cn.reghao.jutil.web.ServletUtil;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;

+ 1 - 1
dfs-store/src/main/java/cn/reghao/dfs/store/task/ConvertTask.java

@@ -1,6 +1,6 @@
 package cn.reghao.dfs.store.task;
 package cn.reghao.dfs.store.task;
 
 
-import cn.reghao.dfs.api.dto.VideoUrlType;
+import cn.reghao.oss.api.dto.VideoUrlType;
 import cn.reghao.dfs.store.db.mapper.VideoUrlMapper;
 import cn.reghao.dfs.store.db.mapper.VideoUrlMapper;
 import cn.reghao.dfs.store.model.po.VideoUrl;
 import cn.reghao.dfs.store.model.po.VideoUrl;
 import cn.reghao.dfs.store.util.media.FFmpegWrapper;
 import cn.reghao.dfs.store.util.media.FFmpegWrapper;

+ 1 - 1
dfs-store/src/main/java/cn/reghao/dfs/store/task/ImageFileService.java

@@ -1,6 +1,6 @@
 package cn.reghao.dfs.store.task;
 package cn.reghao.dfs.store.task;
 
 
-import cn.reghao.dfs.api.dto.ImageFileRet;
+import cn.reghao.oss.api.dto.ImageFileRet;
 import cn.reghao.dfs.store.db.mapper.ImageFileMapper;
 import cn.reghao.dfs.store.db.mapper.ImageFileMapper;
 import cn.reghao.dfs.store.model.po.ImageFile;
 import cn.reghao.dfs.store.model.po.ImageFile;
 import cn.reghao.dfs.store.util.StringUtil;
 import cn.reghao.dfs.store.util.StringUtil;

+ 3 - 3
dfs-store/src/main/java/cn/reghao/dfs/store/task/VideoFileProcessor.java

@@ -1,8 +1,8 @@
 package cn.reghao.dfs.store.task;
 package cn.reghao.dfs.store.task;
 
 
-import cn.reghao.dfs.api.dto.VideoInfo;
-import cn.reghao.dfs.api.dto.VideoUrlDto;
-import cn.reghao.dfs.api.dto.VideoUrlType;
+import cn.reghao.oss.api.dto.VideoInfo;
+import cn.reghao.oss.api.dto.VideoUrlDto;
+import cn.reghao.oss.api.dto.VideoUrlType;
 import cn.reghao.dfs.store.config.OssProperties;
 import cn.reghao.dfs.store.config.OssProperties;
 import cn.reghao.dfs.store.db.mapper.VideoFileMapper;
 import cn.reghao.dfs.store.db.mapper.VideoFileMapper;
 import cn.reghao.dfs.store.db.mapper.VideoUrlMapper;
 import cn.reghao.dfs.store.db.mapper.VideoUrlMapper;

+ 22 - 0
dfs-store/src/main/java/cn/reghao/dfs/store/util/UserContext.java

@@ -0,0 +1,22 @@
+package cn.reghao.dfs.store.util;
+
+/**
+ * @author reghao
+ * @date 2023-06-02 10:48:59
+ */
+public class UserContext implements AutoCloseable {
+    static final ThreadLocal<Long> CURRENT = new ThreadLocal<>();
+
+    public UserContext(Long user) {
+        CURRENT.set(user);
+    }
+
+    public static long getUser() {
+        return CURRENT.get();
+    }
+
+    @Override
+    public void close() {
+        CURRENT.remove();
+    }
+}

+ 7 - 7
dfs-store/src/main/resources/mapper/FileMetaMapper.xml

@@ -85,7 +85,7 @@
         from file_meta
         from file_meta
         where object_id=#{objectId}
         where object_id=#{objectId}
     </select>
     </select>
-    <select id="findObjectMeta" resultType="cn.reghao.dfs.api.dto.ObjectMeta">
+    <select id="findObjectMeta" resultType="cn.reghao.oss.api.dto.ObjectMeta">
         select file_meta.size,file_meta.content_type,file_meta.object_name,file_meta.object_id,
         select file_meta.size,file_meta.content_type,file_meta.object_name,file_meta.object_id,
         data_block.absolute_path
         data_block.absolute_path
         from file_meta
         from file_meta
@@ -93,7 +93,7 @@
         on file_meta.content_id=data_block.content_id
         on file_meta.content_id=data_block.content_id
         and file_meta.object_name=#{objectName}
         and file_meta.object_name=#{objectName}
     </select>
     </select>
-    <select id="findObjectMetaByPage" resultType="cn.reghao.dfs.api.dto.ObjectMeta">
+    <select id="findObjectMetaByPage" resultType="cn.reghao.oss.api.dto.ObjectMeta">
         select file_meta.size,file_meta.content_type,file_meta.object_name,data_block.absolute_path
         select file_meta.size,file_meta.content_type,file_meta.object_name,data_block.absolute_path
         from file_meta
         from file_meta
         inner join data_block
         inner join data_block
@@ -122,14 +122,14 @@
         from file_meta
         from file_meta
         where pid=#{pid}
         where pid=#{pid}
     </select>
     </select>
-    <select id="findFileInfoByPage" resultType="cn.reghao.dfs.api.dto.FileInfo">
+    <select id="findFileInfoByPage" resultType="cn.reghao.oss.api.dto.FileInfo">
         select file_meta.object_id as file_id,file_meta.filename,file_meta.file_type as type,file_meta.size,file_meta.update_time,file_type.icon
         select file_meta.object_id as file_id,file_meta.filename,file_meta.file_type as type,file_meta.size,file_meta.update_time,file_type.icon
         from file_meta
         from file_meta
         inner join file_type
         inner join file_type
         on file_meta.deleted=0 and file_meta.file_type=file_type.id and file_meta.pid=#{pid}
         on file_meta.deleted=0 and file_meta.file_type=file_type.id and file_meta.pid=#{pid}
         order by file_type asc
         order by file_type asc
     </select>
     </select>
-    <select id="findFileInfo1ByPage" resultType="cn.reghao.dfs.api.dto.FileInfo">
+    <select id="findFileInfo1ByPage" resultType="cn.reghao.oss.api.dto.FileInfo">
         select file_meta.object_id as file_id,file_meta.filename,file_meta.file_type as type,file_meta.size,file_meta.update_time,file_type.icon_large as icon
         select file_meta.object_id as file_id,file_meta.filename,file_meta.file_type as type,file_meta.size,file_meta.update_time,file_type.icon_large as icon
         from file_meta
         from file_meta
         inner join file_type
         inner join file_type
@@ -142,7 +142,7 @@
         from file_meta
         from file_meta
         where deleted=1
         where deleted=1
     </select>
     </select>
-    <select id="findDeletedFileByPage" resultType="cn.reghao.dfs.api.dto.DeleteFile">
+    <select id="findDeletedFileByPage" resultType="cn.reghao.oss.api.dto.DeleteFile">
         select file_meta.object_id as file_id,file_meta.filename,file_meta.file_type as type,file_meta.size,file_meta.update_time,file_type.icon
         select file_meta.object_id as file_id,file_meta.filename,file_meta.file_type as type,file_meta.size,file_meta.update_time,file_type.icon
         from file_meta
         from file_meta
         inner join file_type
         inner join file_type
@@ -150,7 +150,7 @@
         order by file_type asc
         order by file_type asc
     </select>
     </select>
 
 
-    <select id="findDirectories" resultType="cn.reghao.dfs.api.dto.FileInfo">
+    <select id="findDirectories" resultType="cn.reghao.oss.api.dto.FileInfo">
         select file_meta.object_id as file_id,file_meta.filename,file_meta.file_type as type,file_meta.size,file_meta.update_time,file_type.icon
         select file_meta.object_id as file_id,file_meta.filename,file_meta.file_type as type,file_meta.size,file_meta.update_time,file_type.icon
         from file_meta
         from file_meta
         inner join file_type
         inner join file_type
@@ -181,7 +181,7 @@
         from file_meta
         from file_meta
         where filename like concat('%',#{keyword},'%')
         where filename like concat('%',#{keyword},'%')
     </select>
     </select>
-    <select id="findKeywordByPage" resultType="cn.reghao.dfs.api.dto.FileInfo">
+    <select id="findKeywordByPage" resultType="cn.reghao.oss.api.dto.FileInfo">
         select file_meta.object_id as file_id,file_meta.filename,file_meta.file_type as type,file_meta.size,file_meta.update_time,file_type.icon
         select file_meta.object_id as file_id,file_meta.filename,file_meta.file_type as type,file_meta.size,file_meta.update_time,file_type.icon
         from file_meta
         from file_meta
         inner join file_type
         inner join file_type

+ 1 - 1
dfs-store/src/main/resources/mapper/ImageFileMapper.xml

@@ -31,7 +31,7 @@
         select * from image_file
         select * from image_file
         where image_file_id=#{imageFileId}
         where image_file_id=#{imageFileId}
     </select>
     </select>
-    <select id="findImageUrl" resultType="cn.reghao.dfs.api.dto.ImageUrl">
+    <select id="findImageUrl" resultType="cn.reghao.oss.api.dto.ImageUrl">
         select original_url,webp_url,thumbnail_url
         select original_url,webp_url,thumbnail_url
         from image_file
         from image_file
         where image_file_id=#{imageFileId}
         where image_file_id=#{imageFileId}

+ 1 - 1
dfs-store/src/main/resources/mapper/VideoUrlMapper.xml

@@ -9,7 +9,7 @@
         (#{videoFileId},#{objectName},#{urlType},#{width},#{height},#{quality},#{url})
         (#{videoFileId},#{objectName},#{urlType},#{width},#{height},#{quality},#{url})
     </insert>
     </insert>
 
 
-    <select id="findVideoUrls" resultType="cn.reghao.dfs.api.dto.VideoUrlDto">
+    <select id="findVideoUrls" resultType="cn.reghao.oss.api.dto.VideoUrlDto">
         select url_type as type,url,width,height,quality
         select url_type as type,url,width,height,quality
         from video_url
         from video_url
         where video_file_id=#{videoFileId} and url_type=#{urlType}
         where video_file_id=#{videoFileId} and url_type=#{urlType}

+ 1 - 1
dfs-store/src/test/java/RedisTest.java

@@ -1,7 +1,7 @@
 import cn.reghao.dfs.store.DfsStoreApplication;
 import cn.reghao.dfs.store.DfsStoreApplication;
 import cn.reghao.dfs.store.db.mapper.FileMetaMapper;
 import cn.reghao.dfs.store.db.mapper.FileMetaMapper;
 import cn.reghao.dfs.store.model.po.FileMeta;
 import cn.reghao.dfs.store.model.po.FileMeta;
-import cn.reghao.dfs.api.dto.ObjectMeta;
+import cn.reghao.oss.api.dto.ObjectMeta;
 import cn.reghao.dfs.store.redis.ds.RedisStringObj;
 import cn.reghao.dfs.store.redis.ds.RedisStringObj;
 import cn.reghao.jutil.jdk.db.Page;
 import cn.reghao.jutil.jdk.db.Page;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;

+ 2 - 2
dfs-api/pom.xml → oss-api/pom.xml

@@ -4,8 +4,8 @@
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
     <modelVersion>4.0.0</modelVersion>
 
 
-    <groupId>cn.reghao.dfs</groupId>
-    <artifactId>dfs-api</artifactId>
+    <groupId>cn.reghao.oss</groupId>
+    <artifactId>oss-api</artifactId>
     <version>1.0.0-SNAPSHOT</version>
     <version>1.0.0-SNAPSHOT</version>
 
 
     <properties>
     <properties>

+ 20 - 0
oss-api/src/main/java/cn/reghao/oss/api/dto/ChannelDto.java

@@ -0,0 +1,20 @@
+package cn.reghao.oss.api.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+import java.io.Serializable;
+
+/**
+ * @author reghao
+ * @date 2023-06-02 14:38:47
+ */
+@AllArgsConstructor
+@Getter
+public class ChannelDto implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    private String channelPrefix;
+    private int channelId;
+    private String channelName;
+}

+ 1 - 1
dfs-api/src/main/java/cn/reghao/dfs/api/dto/DeleteFile.java → oss-api/src/main/java/cn/reghao/oss/api/dto/DeleteFile.java

@@ -1,4 +1,4 @@
-package cn.reghao.dfs.api.dto;
+package cn.reghao.oss.api.dto;
 
 
 import lombok.Getter;
 import lombok.Getter;
 import lombok.Setter;
 import lombok.Setter;

+ 1 - 1
dfs-api/src/main/java/cn/reghao/dfs/api/dto/DirProp.java → oss-api/src/main/java/cn/reghao/oss/api/dto/DirProp.java

@@ -1,4 +1,4 @@
-package cn.reghao.dfs.api.dto;
+package cn.reghao.oss.api.dto;
 
 
 import lombok.AllArgsConstructor;
 import lombok.AllArgsConstructor;
 import lombok.Getter;
 import lombok.Getter;

+ 1 - 1
dfs-api/src/main/java/cn/reghao/dfs/api/dto/FileInfo.java → oss-api/src/main/java/cn/reghao/oss/api/dto/FileInfo.java

@@ -1,4 +1,4 @@
-package cn.reghao.dfs.api.dto;
+package cn.reghao.oss.api.dto;
 
 
 import lombok.Getter;
 import lombok.Getter;
 import lombok.Setter;
 import lombok.Setter;

+ 1 - 1
dfs-api/src/main/java/cn/reghao/dfs/api/dto/FileProp.java → oss-api/src/main/java/cn/reghao/oss/api/dto/FileProp.java

@@ -1,4 +1,4 @@
-package cn.reghao.dfs.api.dto;
+package cn.reghao.oss.api.dto;
 
 
 import lombok.AllArgsConstructor;
 import lombok.AllArgsConstructor;
 import lombok.Getter;
 import lombok.Getter;

+ 1 - 1
dfs-api/src/main/java/cn/reghao/dfs/api/dto/ImageFileRet.java → oss-api/src/main/java/cn/reghao/oss/api/dto/ImageFileRet.java

@@ -1,4 +1,4 @@
-package cn.reghao.dfs.api.dto;
+package cn.reghao.oss.api.dto;
 
 
 import lombok.AllArgsConstructor;
 import lombok.AllArgsConstructor;
 import lombok.Getter;
 import lombok.Getter;

+ 1 - 1
dfs-api/src/main/java/cn/reghao/dfs/api/dto/ImageUrl.java → oss-api/src/main/java/cn/reghao/oss/api/dto/ImageUrl.java

@@ -1,4 +1,4 @@
-package cn.reghao.dfs.api.dto;
+package cn.reghao.oss.api.dto;
 
 
 import lombok.Getter;
 import lombok.Getter;
 import lombok.Setter;
 import lombok.Setter;

+ 1 - 1
dfs-api/src/main/java/cn/reghao/dfs/api/dto/ObjectMeta.java → oss-api/src/main/java/cn/reghao/oss/api/dto/ObjectMeta.java

@@ -1,4 +1,4 @@
-package cn.reghao.dfs.api.dto;
+package cn.reghao.oss.api.dto;
 
 
 import lombok.Getter;
 import lombok.Getter;
 import lombok.Setter;
 import lombok.Setter;

+ 1 - 1
dfs-api/src/main/java/cn/reghao/dfs/api/dto/VideoInfo.java → oss-api/src/main/java/cn/reghao/oss/api/dto/VideoInfo.java

@@ -1,4 +1,4 @@
-package cn.reghao.dfs.api.dto;
+package cn.reghao.oss.api.dto;
 
 
 import lombok.Getter;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.NoArgsConstructor;

+ 1 - 1
dfs-api/src/main/java/cn/reghao/dfs/api/dto/VideoUrlDto.java → oss-api/src/main/java/cn/reghao/oss/api/dto/VideoUrlDto.java

@@ -1,4 +1,4 @@
-package cn.reghao.dfs.api.dto;
+package cn.reghao.oss.api.dto;
 
 
 import lombok.Getter;
 import lombok.Getter;
 import lombok.Setter;
 import lombok.Setter;

+ 1 - 1
dfs-api/src/main/java/cn/reghao/dfs/api/dto/VideoUrlType.java → oss-api/src/main/java/cn/reghao/oss/api/dto/VideoUrlType.java

@@ -1,4 +1,4 @@
-package cn.reghao.dfs.api.dto;
+package cn.reghao.oss.api.dto;
 
 
 /**
 /**
  * 视频 URL 类型
  * 视频 URL 类型

+ 13 - 0
oss-api/src/main/java/cn/reghao/oss/api/iface/ChannelService.java

@@ -0,0 +1,13 @@
+package cn.reghao.oss.api.iface;
+
+import cn.reghao.oss.api.dto.ChannelDto;
+
+import java.util.List;
+
+/**
+ * @author reghao
+ * @date 2023-06-02 10:27:58
+ */
+public interface ChannelService {
+    List<ChannelDto> getChannels();
+}

+ 5 - 3
dfs-api/src/main/java/cn/reghao/dfs/api/iface/MediaUrlService.java → oss-api/src/main/java/cn/reghao/oss/api/iface/MediaUrlService.java

@@ -1,7 +1,8 @@
-package cn.reghao.dfs.api.iface;
+package cn.reghao.oss.api.iface;
 
 
-import cn.reghao.dfs.api.dto.ImageUrl;
-import cn.reghao.dfs.api.dto.VideoUrlDto;
+import cn.reghao.oss.api.dto.ImageUrl;
+import cn.reghao.oss.api.dto.VideoInfo;
+import cn.reghao.oss.api.dto.VideoUrlDto;
 
 
 import java.util.List;
 import java.util.List;
 
 
@@ -11,5 +12,6 @@ import java.util.List;
  */
  */
 public interface MediaUrlService {
 public interface MediaUrlService {
     ImageUrl getImageUrl(String imageFileId);
     ImageUrl getImageUrl(String imageFileId);
+    VideoInfo getVideoInfo(String videoFileId);
     List<VideoUrlDto> getVideoUrls(String videoFileId, String urlType);
     List<VideoUrlDto> getVideoUrls(String videoFileId, String urlType);
 }
 }

+ 2 - 2
dfs-api/src/main/java/cn/reghao/dfs/api/iface/ObjectService.java → oss-api/src/main/java/cn/reghao/oss/api/iface/ObjectService.java

@@ -1,6 +1,6 @@
-package cn.reghao.dfs.api.iface;
+package cn.reghao.oss.api.iface;
 
 
-import cn.reghao.dfs.api.dto.ObjectMeta;
+import cn.reghao.oss.api.dto.ObjectMeta;
 
 
 /**
 /**
  * @author reghao
  * @author reghao

+ 12 - 0
oss-api/src/main/java/cn/reghao/oss/api/iface/PermissionService.java

@@ -0,0 +1,12 @@
+package cn.reghao.oss.api.iface;
+
+/**
+ * @author reghao
+ * @date 2023-06-02 10:06:21
+ */
+public interface PermissionService {
+    void setDirPermission(String prefix, int acl);
+    void getDirPermission(String prefix);
+    void setObjectPermission(String objectName, int acl);
+    void getObjectPermission(String objectName);
+}

+ 2 - 2
dfs-api/src/main/java/cn/reghao/dfs/api/iface/DiskService.java → oss-api/src/main/java/cn/reghao/oss/api/iface/disk/DiskService.java

@@ -1,6 +1,6 @@
-package cn.reghao.dfs.api.iface;
+package cn.reghao.oss.api.iface.disk;
 
 
-import cn.reghao.dfs.api.dto.FileInfo;
+import cn.reghao.oss.api.dto.FileInfo;
 import cn.reghao.jutil.jdk.db.PageList;
 import cn.reghao.jutil.jdk.db.PageList;
 
 
 import java.util.List;
 import java.util.List;

+ 3 - 3
dfs-api/src/main/java/cn/reghao/dfs/api/iface/FileService.java → oss-api/src/main/java/cn/reghao/oss/api/iface/disk/FileService.java

@@ -1,7 +1,7 @@
-package cn.reghao.dfs.api.iface;
+package cn.reghao.oss.api.iface.disk;
 
 
-import cn.reghao.dfs.api.dto.DirProp;
-import cn.reghao.dfs.api.dto.FileProp;
+import cn.reghao.oss.api.dto.DirProp;
+import cn.reghao.oss.api.dto.FileProp;
 
 
 import java.util.List;
 import java.util.List;
 
 

+ 2 - 2
dfs-api/src/main/java/cn/reghao/dfs/api/iface/TrashService.java → oss-api/src/main/java/cn/reghao/oss/api/iface/disk/TrashService.java

@@ -1,6 +1,6 @@
-package cn.reghao.dfs.api.iface;
+package cn.reghao.oss.api.iface.disk;
 
 
-import cn.reghao.dfs.api.dto.DeleteFile;
+import cn.reghao.oss.api.dto.DeleteFile;
 import cn.reghao.jutil.jdk.db.PageList;
 import cn.reghao.jutil.jdk.db.PageList;
 
 
 /**
 /**

+ 18 - 18
oss-sdk/src/main/java/cn/reghao/oss/sdk/ObjectUploadService.java

@@ -33,11 +33,15 @@ public class ObjectUploadService {
         this.endpoint = endpoint;
         this.endpoint = endpoint;
     }
     }
 
 
-    public UploadFileRet putObject(String key, File file, Map<String, String> headers) {
+    public UploadFileRet putObject(File file, int channelId, long userId) {
         try {
         try {
-            String api = String.format("%s/%s", endpoint, key);
-            HttpRequest.Builder builder = HttpRequest.newBuilder(new URI(api)).version(HttpClient.Version.HTTP_1_1);
-            headers.forEach(builder::header);
+            String sha256sum = DigestUtil.sha256sum(file.getAbsolutePath());
+            String api = String.format("%s/", endpoint);
+            HttpRequest.Builder builder = HttpRequest.newBuilder(new URI(api))
+                    .version(HttpClient.Version.HTTP_1_1)
+                    .header("x-content-sha256sum", sha256sum)
+                    .header("x-channel-id", channelId+"")
+                    .header("x-user-id", userId+"");
 
 
             HttpRequest httpRequest = builder.PUT(HttpRequest.BodyPublishers.ofFile(Path.of(file.getAbsolutePath()))).build();
             HttpRequest httpRequest = builder.PUT(HttpRequest.BodyPublishers.ofFile(Path.of(file.getAbsolutePath()))).build();
             HttpResponse<String> httpResponse = httpClient.send(httpRequest, HttpResponse.BodyHandlers.ofString());
             HttpResponse<String> httpResponse = httpClient.send(httpRequest, HttpResponse.BodyHandlers.ofString());
@@ -49,20 +53,17 @@ public class ObjectUploadService {
         return null;
         return null;
     }
     }
 
 
-    public UploadFileRet putObject(String key, InputStream inputStream, Map<String, String> headers) {
+    public UploadFileRet putObject(InputStream inputStream, int channelId, int userId) {
         try {
         try {
-            String api = String.format("%s/%s", endpoint, key);
-            HttpRequest.Builder builder = HttpRequest.newBuilder(new URI(api)).version(HttpClient.Version.HTTP_1_1);
-            headers.forEach(builder::header);
+            String api = String.format("%s/", endpoint);
+            HttpRequest.Builder builder = HttpRequest.newBuilder(new URI(api))
+                    .version(HttpClient.Version.HTTP_1_1)
+                    .header("x-content-sha256sum", "1234567890")
+                    .header("x-channel-id", channelId+"")
+                    .header("x-user-id", userId+"");
 
 
             BufferedInputStream bis = new BufferedInputStream(inputStream);
             BufferedInputStream bis = new BufferedInputStream(inputStream);
-            Supplier<? extends InputStream> streamSupplier = new Supplier<BufferedInputStream>() {
-                @Override
-                public BufferedInputStream get() {
-                    return bis;
-                }
-            };
-
+            Supplier<? extends InputStream> streamSupplier = (Supplier<BufferedInputStream>) () -> bis;
             HttpRequest httpRequest = builder.PUT(HttpRequest.BodyPublishers.ofInputStream(streamSupplier)).build();
             HttpRequest httpRequest = builder.PUT(HttpRequest.BodyPublishers.ofInputStream(streamSupplier)).build();
             HttpResponse<String> httpResponse = httpClient.send(httpRequest, HttpResponse.BodyHandlers.ofString());
             HttpResponse<String> httpResponse = httpClient.send(httpRequest, HttpResponse.BodyHandlers.ofString());
             return getResult(httpResponse);
             return getResult(httpResponse);
@@ -73,8 +74,7 @@ public class ObjectUploadService {
         return null;
         return null;
     }
     }
 
 
-    public UploadFileRet postObject(File file, int channelId) {
-        String authToken = "5c34161755e3d8b44e5f165ce1b91ef9";
+    public UploadFileRet postObject(File file, int channelId, long userId) {
         try {
         try {
             String sha256sum = DigestUtil.sha256sum(file.getAbsolutePath());
             String sha256sum = DigestUtil.sha256sum(file.getAbsolutePath());
             MultiPartBodyPublisher publisher = new MultiPartBodyPublisher()
             MultiPartBodyPublisher publisher = new MultiPartBodyPublisher()
@@ -85,7 +85,7 @@ public class ObjectUploadService {
             String api = String.format("%s/", endpoint);
             String api = String.format("%s/", endpoint);
             HttpRequest httpRequest = HttpRequest.newBuilder(new URI(api))
             HttpRequest httpRequest = HttpRequest.newBuilder(new URI(api))
                     .version(HttpClient.Version.HTTP_1_1)
                     .version(HttpClient.Version.HTTP_1_1)
-                    .header("Authorization", authToken)
+                    .header("x-user-id", userId+"")
                     .header("Content-Type", "multipart/form-data; boundary=" + publisher.getBoundary())
                     .header("Content-Type", "multipart/form-data; boundary=" + publisher.getBoundary())
                     .POST(publisher.build())
                     .POST(publisher.build())
                     .build();
                     .build();

+ 12 - 2
oss-sdk/src/test/java/ObjectTest.java

@@ -15,7 +15,17 @@ public class ObjectTest {
     public static void main(String[] args) {
     public static void main(String[] args) {
         String filePath = "/home/reghao/Downloads/sxd.mp4";
         String filePath = "/home/reghao/Downloads/sxd.mp4";
         File file = new File(filePath);
         File file = new File(filePath);
-        UploadFileRet uploadFileRet = objectUploadService.postObject(file, 1);
-        log.info("{} -> {}", uploadFileRet.getUploadId(), uploadFileRet.getUrl());
+
+        long userId = 10020;
+        for (; userId < 10250; userId++) {
+            UploadFileRet uploadFileRet = objectUploadService.postObject(file, 1, userId);
+            //UploadFileRet uploadFileRet = objectUploadService.putObject(file, 1, userId);
+            if (uploadFileRet == null) {
+                log.error("文件上传失败");
+                break;
+            }
+
+            log.info("{} -> {}", uploadFileRet.getUploadId(), uploadFileRet.getUrl());
+        }
     }
     }
 }
 }