reghao 1 年之前
父節點
當前提交
806bf42063
共有 76 個文件被更改,包括 0 次插入3852 次删除
  1. 0 62
      oss-api/src/main/java/cn/reghao/oss/api/constant/UploadChannel.java
  2. 0 20
      oss-api/src/main/java/cn/reghao/oss/api/dto/ChannelDto.java
  3. 0 28
      oss-api/src/main/java/cn/reghao/oss/api/dto/DeleteFile.java
  4. 0 20
      oss-api/src/main/java/cn/reghao/oss/api/dto/DirProp.java
  5. 0 23
      oss-api/src/main/java/cn/reghao/oss/api/dto/FileProp.java
  6. 0 21
      oss-api/src/main/java/cn/reghao/oss/api/dto/ObjectPrefix.java
  7. 0 22
      oss-api/src/main/java/cn/reghao/oss/api/dto/ObjectUrl.java
  8. 0 13
      oss-api/src/main/java/cn/reghao/oss/api/iface/ChannelService.java
  9. 0 18
      oss-api/src/main/java/cn/reghao/oss/api/iface/ObjectService.java
  10. 0 11
      oss-api/src/main/java/cn/reghao/oss/api/iface/OssServerService.java
  11. 0 15
      oss-api/src/main/java/cn/reghao/oss/api/iface/PermissionService.java
  12. 0 17
      oss-api/src/main/java/cn/reghao/oss/api/iface/disk/DiskService.java
  13. 0 22
      oss-api/src/main/java/cn/reghao/oss/api/iface/disk/FileService.java
  14. 0 12
      oss-api/src/main/java/cn/reghao/oss/api/iface/disk/TrashService.java
  15. 0 15
      oss-api/src/main/java/cn/reghao/oss/api/iface/media/AudioFileService.java
  16. 0 12
      oss-api/src/main/java/cn/reghao/oss/api/iface/media/ConvertService.java
  17. 0 19
      oss-api/src/main/java/cn/reghao/oss/api/iface/media/ImageFileService.java
  18. 0 19
      oss-api/src/main/java/cn/reghao/oss/api/iface/media/MediaScopeService.java
  19. 0 18
      oss-api/src/main/java/cn/reghao/oss/api/iface/media/VideoFileService.java
  20. 0 39
      oss-common/pom.xml
  21. 0 34
      oss-common/src/main/java/cn/reghao/oss/common/UploadFilePart.java
  22. 0 30
      oss-common/src/main/java/cn/reghao/oss/common/UploadFileRet.java
  23. 0 27
      oss-common/src/main/java/cn/reghao/oss/common/UploadPrepare.java
  24. 0 21
      oss-common/src/main/java/cn/reghao/oss/common/UploadPrepareRet.java
  25. 0 22
      oss-common/src/main/java/cn/reghao/oss/common/UploadedPart.java
  26. 0 49
      oss-common/src/main/java/cn/reghao/oss/common/constant/UploadChannel.java
  27. 0 145
      oss-sdk/src/main/java/cn/reghao/oss/sdk/ObjectGetService.java
  28. 0 138
      oss-sdk/src/main/java/cn/reghao/oss/sdk/ObjectUploadService.java
  29. 0 43
      oss-sdk/src/test/java/ObjectTest.java
  30. 0 23
      oss-store/src/main/java/cn/reghao/oss/store/config/OssProperties.java
  31. 0 68
      oss-store/src/main/java/cn/reghao/oss/store/config/mysql/DataSourceConfig.java
  32. 0 83
      oss-store/src/main/java/cn/reghao/oss/store/config/mysql/PageListInterceptor.java
  33. 0 77
      oss-store/src/main/java/cn/reghao/oss/store/config/spring/FileLifecycle.java
  34. 0 20
      oss-store/src/main/java/cn/reghao/oss/store/db/mapper/AudioFileMapper.java
  35. 0 13
      oss-store/src/main/java/cn/reghao/oss/store/db/mapper/FileTypeMapper.java
  36. 0 23
      oss-store/src/main/java/cn/reghao/oss/store/db/mapper/ImageFileMapper.java
  37. 0 22
      oss-store/src/main/java/cn/reghao/oss/store/db/mapper/VideoFileMapper.java
  38. 0 40
      oss-store/src/main/java/cn/reghao/oss/store/db/repository/AudioRepository.java
  39. 0 96
      oss-store/src/main/java/cn/reghao/oss/store/db/repository/ImageRepository.java
  40. 0 63
      oss-store/src/main/java/cn/reghao/oss/store/db/repository/VideoRepository.java
  41. 0 62
      oss-store/src/main/java/cn/reghao/oss/store/exception/ControllerExceptionHandler.java
  42. 0 43
      oss-store/src/main/java/cn/reghao/oss/store/exception/FilterExceptionHandler.java
  43. 0 69
      oss-store/src/main/java/cn/reghao/oss/store/inerceptor/AccessLogInterceptor.java
  44. 0 40
      oss-store/src/main/java/cn/reghao/oss/store/inerceptor/MutableHttpServletRequest.java
  45. 0 47
      oss-store/src/main/java/cn/reghao/oss/store/inerceptor/TokenFilter.java
  46. 0 35
      oss-store/src/main/java/cn/reghao/oss/store/model/po/AudioFile.java
  47. 0 20
      oss-store/src/main/java/cn/reghao/oss/store/model/po/FileType.java
  48. 0 46
      oss-store/src/main/java/cn/reghao/oss/store/model/po/ImageFile.java
  49. 0 66
      oss-store/src/main/java/cn/reghao/oss/store/model/po/VideoFile.java
  50. 0 31
      oss-store/src/main/java/cn/reghao/oss/store/rpc/ChannelServiceImpl.java
  51. 0 123
      oss-store/src/main/java/cn/reghao/oss/store/rpc/ObjectServiceImpl.java
  52. 0 37
      oss-store/src/main/java/cn/reghao/oss/store/rpc/OssServerServiceImpl.java
  53. 0 79
      oss-store/src/main/java/cn/reghao/oss/store/rpc/PermissionServiceImpl.java
  54. 0 38
      oss-store/src/main/java/cn/reghao/oss/store/rpc/SignService.java
  55. 0 64
      oss-store/src/main/java/cn/reghao/oss/store/rpc/disk/DiskServiceImpl.java
  56. 0 125
      oss-store/src/main/java/cn/reghao/oss/store/rpc/disk/FileServiceImpl.java
  57. 0 40
      oss-store/src/main/java/cn/reghao/oss/store/rpc/disk/TrashServiceImpl.java
  58. 0 46
      oss-store/src/main/java/cn/reghao/oss/store/rpc/media/AudioFileServiceImpl.java
  59. 0 30
      oss-store/src/main/java/cn/reghao/oss/store/rpc/media/ConvertServiceImpl.java
  60. 0 69
      oss-store/src/main/java/cn/reghao/oss/store/rpc/media/ImageFileServiceImpl.java
  61. 0 112
      oss-store/src/main/java/cn/reghao/oss/store/rpc/media/MediaScopeServiceImpl.java
  62. 0 87
      oss-store/src/main/java/cn/reghao/oss/store/rpc/media/VideoFileServiceImpl.java
  63. 0 98
      oss-store/src/main/java/cn/reghao/oss/store/task/FileProcessor.java
  64. 0 41
      oss-store/src/main/java/cn/reghao/oss/store/task/FileTask.java
  65. 0 156
      oss-store/src/main/java/cn/reghao/oss/store/task/MediaConverter.java
  66. 0 141
      oss-store/src/main/java/cn/reghao/oss/store/task/processor/AudioFileProcessor.java
  67. 0 26
      oss-store/src/main/java/cn/reghao/oss/store/task/processor/DiskFileProcessor.java
  68. 0 180
      oss-store/src/main/java/cn/reghao/oss/store/task/processor/ImageFileProcessor.java
  69. 0 113
      oss-store/src/main/java/cn/reghao/oss/store/task/processor/VideoFileProcessor.java
  70. 0 34
      oss-store/src/main/java/cn/reghao/oss/store/util/JwtUtil.java
  71. 0 22
      oss-store/src/main/java/cn/reghao/oss/store/util/UserContext.java
  72. 0 37
      oss-store/src/main/resources/mapper/AudioFileMapper.xml
  73. 0 15
      oss-store/src/main/resources/mapper/FileTypeMapper.xml
  74. 0 52
      oss-store/src/main/resources/mapper/ImageFileMapper.xml
  75. 0 42
      oss-store/src/main/resources/mapper/VideoFileMapper.xml
  76. 0 123
      oss-store/src/test/java/LocalFileTest.java

+ 0 - 62
oss-api/src/main/java/cn/reghao/oss/api/constant/UploadChannel.java

@@ -1,62 +0,0 @@
-package cn.reghao.oss.api.constant;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * @author reghao
- * @date 2023-05-23 10:43:25
- */
-public enum UploadChannel {
-    // 网盘上传(单个文件最大 20GiB)
-    disk(1, "file/", 1024L*1024*1024*20),
-    // 视频上传(单个文件最大 10GiB)
-    video(2, "video/playback/", 1024L*1024*1024*10),
-    // 音频上传(单个文件最大 1GiB)
-    audio(3, "audio/playback/", 1024L*1024*1024),
-    // 用户头像上传(单个文件最大 2MiB)
-    avatar(4, "image/a/", 1024L*1024*2),
-    // 图片上传(单个文件最大 10MiB)
-    image(5, "image/i/", 1024L*1024*10),
-    // 用户状态照片上传(单个文件最大 100MiB)
-    photo(6, "image/p/", 1024L*1024*100),
-    img(7, "img/", 1024L*1024*10);
-
-    private final int code;
-    private final String prefix;
-    private final long maxSize;
-    UploadChannel(int code, String prefix, long maxSize) {
-        this.code = code;
-        this.prefix = prefix;
-        this.maxSize = maxSize;
-    }
-
-    private static Map<Integer, UploadChannel> map = new HashMap<>();
-    private static Map<String, UploadChannel> map1 = new HashMap<>();
-    static {
-        for (UploadChannel channel : UploadChannel.values()) {
-            map.put(channel.code, channel);
-            map1.put(channel.prefix, channel);
-        }
-    }
-
-    public static UploadChannel getUploadChannel(int code) {
-        return map.get(code);
-    }
-
-    public static UploadChannel getUploadChannel(String prefix) {
-        return map1.get(prefix);
-    }
-
-    public int getCode() {
-        return code;
-    }
-
-    public String getPrefix() {
-        return prefix;
-    }
-
-    public long getMaxSize() {
-        return maxSize;
-    }
-}

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

@@ -1,20 +0,0 @@
-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;
-}

+ 0 - 28
oss-api/src/main/java/cn/reghao/oss/api/dto/DeleteFile.java

@@ -1,28 +0,0 @@
-package cn.reghao.oss.api.dto;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import java.io.Serializable;
-
-/**
- * @author reghao
- * @date 2023-05-15 17:06:54
- */
-@Setter
-@Getter
-public class DeleteFile implements Serializable {
-    private static final long serialVersionUID = 1L;
-
-    private String fileId;
-    private String filename;
-    private int type;
-    private String icon;
-    private long size;
-    private String updateTime;
-    private int leftDays;
-
-    public DeleteFile() {
-        this.leftDays = 10;
-    }
-}

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

@@ -1,20 +0,0 @@
-package cn.reghao.oss.api.dto;
-
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-
-import java.io.Serializable;
-
-/**
- * @author reghao
- * @date 2023-05-19 11:36:50
- */
-@AllArgsConstructor
-@Getter
-public class DirProp implements Serializable {
-    private static final long serialVersionUID = 1L;
-
-    private long totalSubDirs;
-    private long totalFiles;
-    private long totalSize;
-}

+ 0 - 23
oss-api/src/main/java/cn/reghao/oss/api/dto/FileProp.java

@@ -1,23 +0,0 @@
-package cn.reghao.oss.api.dto;
-
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-
-import java.io.Serializable;
-
-/**
- * @author reghao
- * @date 2023-05-19 10:46:23
- */
-@AllArgsConstructor
-@Getter
-public class FileProp implements Serializable {
-    private static final long serialVersionUID = 1L;
-
-    private String path;
-    private String filename;
-    private Long size;
-    private String contentType;
-    private String sha256sum;
-    private String url;
-}

+ 0 - 21
oss-api/src/main/java/cn/reghao/oss/api/dto/ObjectPrefix.java

@@ -1,21 +0,0 @@
-package cn.reghao.oss.api.dto;
-
-import lombok.Getter;
-
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotNull;
-import java.io.Serializable;
-
-/**
- * @author reghao
- * @date 2023-06-02 17:37:49
- */
-@Getter
-public class ObjectPrefix implements Serializable {
-    private static final long serialVersionUID = 1L;
-
-    @NotBlank
-    private String prefix;
-    @NotNull
-    private Integer scope;
-}

+ 0 - 22
oss-api/src/main/java/cn/reghao/oss/api/dto/ObjectUrl.java

@@ -1,22 +0,0 @@
-package cn.reghao.oss.api.dto;
-
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-
-import java.io.Serializable;
-
-/**
- * @author reghao
- * @date 2023-11-29 16:58:06
- */
-@AllArgsConstructor
-@Getter
-public class ObjectUrl implements Serializable {
-    private static final long serialVersionUID = 1L;
-
-    private String objectId;
-    private String objectName;
-    private int fileType;
-    private String url;
-    private String signedUrl;
-}

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

@@ -1,13 +0,0 @@
-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();
-}

+ 0 - 18
oss-api/src/main/java/cn/reghao/oss/api/iface/ObjectService.java

@@ -1,18 +0,0 @@
-package cn.reghao.oss.api.iface;
-
-import cn.reghao.oss.api.dto.*;
-
-import java.util.List;
-
-/**
- * @author reghao
- * @date 2023-05-28 23:25:06
- */
-public interface ObjectService {
-    void putObjectPrefix(ObjectPrefix objectPrefix);
-    List<String> getObjectPrefix();
-    ObjectMeta getObject(String objectName);
-    DownloadUrl getDownloadUrl(String objectId, int channelId, long userId);
-    ObjectInfo getObjectInfo(String objectId);
-    ObjectUrl getObjectUrl(String objectId);
-}

+ 0 - 11
oss-api/src/main/java/cn/reghao/oss/api/iface/OssServerService.java

@@ -1,11 +0,0 @@
-package cn.reghao.oss.api.iface;
-
-import cn.reghao.oss.api.dto.ServerInfo;
-
-/**
- * @author reghao
- * @date 2023-08-01 14:51:50
- */
-public interface OssServerService {
-    ServerInfo getServerInfo(long userId, int channelId);
-}

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

@@ -1,15 +0,0 @@
-package cn.reghao.oss.api.iface;
-
-import java.util.Set;
-
-/**
- * @author reghao
- * @date 2023-06-02 10:06:21
- */
-public interface PermissionService {
-    void setDirPermission(String prefix, int scope);
-    void getDirPermission(String prefix);
-    void setVideoPermission(String videoFileId, int scope);
-    void setAudioPermission(String audioFileId, int scope);
-    void setImagesPermission(Set<String> imageFileIds, int scope);
-}

+ 0 - 17
oss-api/src/main/java/cn/reghao/oss/api/iface/disk/DiskService.java

@@ -1,17 +0,0 @@
-package cn.reghao.oss.api.iface.disk;
-
-import cn.reghao.oss.api.dto.FileInfo;
-import cn.reghao.jutil.jdk.db.PageList;
-
-import java.util.List;
-
-/**
- * @author reghao
- * @date 2023-05-22 15:57:51
- */
-public interface DiskService {
-    PageList<FileInfo> getFileList(String pid, int pageNumber);
-    PageList<FileInfo> getFileCard(String pid, int pageNumber);
-    List<FileInfo> getDirectories(String pid);
-    PageList<FileInfo> search(String keyword, int pageNumber);
-}

+ 0 - 22
oss-api/src/main/java/cn/reghao/oss/api/iface/disk/FileService.java

@@ -1,22 +0,0 @@
-package cn.reghao.oss.api.iface.disk;
-
-import cn.reghao.oss.api.dto.DirProp;
-import cn.reghao.oss.api.dto.FileProp;
-
-import java.util.List;
-
-/**
- * @author reghao
- * @date 2023-05-18 19:23:07
- */
-public interface FileService {
-    String checkFilename(String pid, String filename);
-    void createDirectory(String pid, String filename);
-    String createFile(String pid, String filename, String content);
-    void copyFile(List<String> fileIds, String toPid);
-    void moveFile(List<String> fileIds, String toPid);
-    void renameFile(String fileId, String newFilename);
-    void deleteFiles(List<String> fileIds);
-    FileProp getFileProp(String fileId);
-    DirProp getDirProp(String fileId);
-}

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

@@ -1,12 +0,0 @@
-package cn.reghao.oss.api.iface.disk;
-
-import cn.reghao.oss.api.dto.DeleteFile;
-import cn.reghao.jutil.jdk.db.PageList;
-
-/**
- * @author reghao
- * @date 2023-05-22 15:57:57
- */
-public interface TrashService {
-    PageList<DeleteFile> getTrashList(int pageNumber, int pageSize);
-}

+ 0 - 15
oss-api/src/main/java/cn/reghao/oss/api/iface/media/AudioFileService.java

@@ -1,15 +0,0 @@
-package cn.reghao.oss.api.iface.media;
-
-import cn.reghao.oss.api.dto.media.AudioInfo;
-import cn.reghao.oss.api.dto.media.AudioUrl;
-
-import java.util.List;
-
-/**
- * @author reghao
- * @date 2023-08-28 17:00:38
- */
-public interface AudioFileService {
-    AudioInfo getAudioInfo(String audioFileId);
-    List<AudioUrl> getAudioUrls(String audioFileId, long loginUser);
-}

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

@@ -1,12 +0,0 @@
-package cn.reghao.oss.api.iface.media;
-
-/**
- * 音视频转码服务
- *
- * @author reghao
- * @date 2023-10-08 16:53:33
- */
-public interface ConvertService {
-    void convertVideo(String videoFileId);
-    void convertAudio(String audioFileId);
-}

+ 0 - 19
oss-api/src/main/java/cn/reghao/oss/api/iface/media/ImageFileService.java

@@ -1,19 +0,0 @@
-package cn.reghao.oss.api.iface.media;
-
-import cn.reghao.oss.api.dto.media.ImageUrlDto;
-
-import java.util.List;
-import java.util.Set;
-
-/**
- * @author reghao
- * @date 2023-08-28 15:47:43
- */
-public interface ImageFileService {
-    void deleteByObjectNames(List<String> objectNames);
-    void deleteByImageFileIds(List<String> imageFileIds);
-    ImageUrlDto getImageUrl(int channelId, String imageFileId);
-    ImageUrlDto getImageUrl(String imageFileId, long loginUser, int channelId);
-    List<ImageUrlDto> getImageUrls(Set<String> imageFileIds);
-    String getSignedUrl(String url, long loginUser, int channelId);
-}

+ 0 - 19
oss-api/src/main/java/cn/reghao/oss/api/iface/media/MediaScopeService.java

@@ -1,19 +0,0 @@
-package cn.reghao.oss.api.iface.media;
-
-import java.util.List;
-import java.util.Set;
-
-/**
- * @author reghao
- * @date 2023-10-12 15:06:21
- */
-public interface MediaScopeService {
-    @Deprecated
-    void setVideoScope(String videoFileId, int scope);
-    @Deprecated
-    void setAudioScope(String audioFileId, int scope);
-    @Deprecated
-    void setImagesScope(Set<String> imageFileIds, int scope);
-    void setObjectScope(int scope, String objectId, int contentType);
-    void setObjectsScope(int scope, List<String> objectIds, int contentType);
-}

+ 0 - 18
oss-api/src/main/java/cn/reghao/oss/api/iface/media/VideoFileService.java

@@ -1,18 +0,0 @@
-package cn.reghao.oss.api.iface.media;
-
-import cn.reghao.oss.api.dto.media.VideoInfo;
-import cn.reghao.oss.api.dto.media.VideoUrlDto;
-
-import java.time.LocalDateTime;
-import java.util.List;
-
-/**
- * @author reghao
- * @date 2023-08-28 15:46:17
- */
-public interface VideoFileService {
-    void deleteVideoFile(String videoFileId);
-    VideoInfo getVideoInfo(String videoFileId);
-    List<VideoUrlDto> getVideoUrls(String videoFileId, long loginUser);
-    LocalDateTime getCreateTime(String videoFileId);
-}

+ 0 - 39
oss-common/pom.xml

@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         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>
-
-    <groupId>cn.reghao.oss</groupId>
-    <artifactId>oss-common</artifactId>
-    <version>1.0.0-SNAPSHOT</version>
-
-    <properties>
-        <maven.compiler.source>11</maven.compiler.source>
-        <maven.compiler.target>11</maven.compiler.target>
-        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
-    </properties>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.projectlombok</groupId>
-            <artifactId>lombok</artifactId>
-            <version>1.18.6</version>
-            <optional>true</optional>
-        </dependency>
-
-        <dependency>
-            <groupId>javax.validation</groupId>
-            <artifactId>validation-api</artifactId>
-            <version>2.0.1.Final</version>
-        </dependency>
-    </dependencies>
-
-    <distributionManagement>
-        <repository>
-            <id>maven-local-hosted</id>
-            <url>http://nexus.reghao.cn/repository/maven-local-hosted/</url>
-        </repository>
-    </distributionManagement>
-</project>

+ 0 - 34
oss-common/src/main/java/cn/reghao/oss/common/UploadFilePart.java

@@ -1,34 +0,0 @@
-package cn.reghao.oss.common;
-
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-import lombok.Setter;
-
-import java.io.Serializable;
-
-/**
- * @author reghao
- * @date 2022-04-25 10:42:38
- */
-@AllArgsConstructor
-@Getter
-@Setter
-public class UploadFilePart implements Serializable {
-    private static final long serialVersionUID = 1L;
-
-    private int channelId;
-    // 文件标识
-    private String identifier;
-    private String filename;
-    private String relativePath;
-    // 文件大小
-    private Long totalSize;
-    // 分片文件大小
-    private Integer chunkSize;
-    // 分片文件数量
-    private Long totalChunks;
-    // 当前分片文件索引
-    private Long chunkNumber;
-    // 当前分片文件大小
-    private Integer currentChunkSize;
-}

+ 0 - 30
oss-common/src/main/java/cn/reghao/oss/common/UploadFileRet.java

@@ -1,30 +0,0 @@
-package cn.reghao.oss.common;
-
-import lombok.Getter;
-
-import java.io.Serializable;
-
-/**
- * @author reghao
- * @date 2023-05-23 11:11:32
- */
-@Getter
-public class UploadFileRet implements Serializable {
-    private static final long serialVersionUID = 1L;
-
-    private final String uploadId;
-    private final String url;
-    private final boolean merged;
-
-    public UploadFileRet(String uploadId) {
-        this.uploadId = uploadId;
-        this.url = null;
-        this.merged = false;
-    }
-
-    public UploadFileRet(String uploadId, String url) {
-        this.uploadId = uploadId;
-        this.url = url;
-        this.merged = true;
-    }
-}

+ 0 - 27
oss-common/src/main/java/cn/reghao/oss/common/UploadPrepare.java

@@ -1,27 +0,0 @@
-package cn.reghao.oss.common;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotNull;
-import java.io.Serializable;
-
-/**
- * 分片文件
- *
- * @author reghao
- * @date 2021-11-23 10:23:00
- */
-@Setter
-@Getter
-public class UploadPrepare implements Serializable {
-    private static final long serialVersionUID = 1L;
-
-    @NotBlank
-    private String filename;
-    @NotNull
-    private Long size;
-    @NotBlank
-    private String sha256sum;
-}

+ 0 - 21
oss-common/src/main/java/cn/reghao/oss/common/UploadPrepareRet.java

@@ -1,21 +0,0 @@
-package cn.reghao.oss.common;
-
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-
-import java.io.Serializable;
-
-/**
- * @author reghao
- * @date 2022-04-21 09:27:55
- */
-@AllArgsConstructor
-@Getter
-public class UploadPrepareRet implements Serializable {
-    private static final long serialVersionUID = 1L;
-
-    private String uploadId;
-    private long splitSize;
-    private boolean exist;
-    private String url;
-}

+ 0 - 22
oss-common/src/main/java/cn/reghao/oss/common/UploadedPart.java

@@ -1,22 +0,0 @@
-package cn.reghao.oss.common;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import java.io.Serializable;
-import java.util.List;
-
-/**
- * @author reghao
- * @date 2023-05-24 09:23:25
- */
-@Setter
-@Getter
-public class UploadedPart implements Serializable {
-    private static final long serialVersionUID = 1L;
-
-    private boolean skipUpload;
-    private boolean needMerge;
-    private List<String> uploaded;
-    private String url;
-}

+ 0 - 49
oss-common/src/main/java/cn/reghao/oss/common/constant/UploadChannel.java

@@ -1,49 +0,0 @@
-package cn.reghao.oss.common.constant;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * @author reghao
- * @date 2023-05-23 10:43:25
- */
-public enum UploadChannel {
-    // 网盘上传
-    disk(1, "file/"),
-    // 视频上传
-    video(2, "video/playback/"),
-    // 视频封面上传
-    cover(3, "image/cover/"),
-    // 用户头像上传
-    avatar(4, "image/avatar/"),
-    // 用户状态照片上传
-    photo(5, "image/photo/"),
-    // 音频上传
-    audio(6, "audio/playback/");
-
-    private final int code;
-    private final String prefix;
-    UploadChannel(int code, String prefix) {
-        this.code = code;
-        this.prefix = prefix;
-    }
-
-    private static Map<Integer, String> map = new HashMap<>();
-    static {
-        for (UploadChannel channel : UploadChannel.values()) {
-            map.put(channel.code, channel.prefix);
-        }
-    }
-
-    public static String getPrefix(int code) {
-        return map.get(code);
-    }
-
-    public int getCode() {
-        return code;
-    }
-
-    public String getPrefix() {
-        return prefix;
-    }
-}

+ 0 - 145
oss-sdk/src/main/java/cn/reghao/oss/sdk/ObjectGetService.java

@@ -1,145 +0,0 @@
-package cn.reghao.oss.sdk;
-
-import cn.reghao.jutil.jdk.result.WebResult;
-import cn.reghao.jutil.jdk.serializer.JsonConverter;
-import cn.reghao.oss.api.rest.UploadFileRet;
-import com.google.gson.reflect.TypeToken;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.io.FileUtils;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.InputStream;
-import java.lang.reflect.Type;
-import java.net.URI;
-import java.net.http.HttpClient;
-import java.net.http.HttpRequest;
-import java.net.http.HttpResponse;
-
-/**
- * @author reghao
- * @date 2022-11-21 17:19:04
- */
-@Slf4j
-public class ObjectGetService {
-    private final String endpoint;
-    private final HttpClient httpClient = HttpClient.newBuilder().build();
-    private final String baseDir = "/opt/tmp/";
-
-    public ObjectGetService(String endpoint) {
-        this.endpoint = endpoint;
-    }
-
-    public void headObject(String objectName) {
-        try {
-            String api = String.format("%s/%s", endpoint, objectName);
-            HttpRequest httpRequest = HttpRequest.newBuilder(new URI(api))
-                    .version(HttpClient.Version.HTTP_1_1)
-                    .method("HEAD", HttpRequest.BodyPublishers.noBody())
-                    .build();
-
-            HttpResponse<String> httpResponse = httpClient.send(httpRequest, HttpResponse.BodyHandlers.ofString());
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-    public boolean headObject1(String sha256sum) {
-        try {
-            String api = String.format("%s?sha256sum=%s", endpoint, sha256sum);
-            HttpRequest httpRequest = HttpRequest.newBuilder(new URI(api))
-                    .version(HttpClient.Version.HTTP_1_1)
-                    .method("HEAD", HttpRequest.BodyPublishers.noBody())
-                    .build();
-
-            HttpResponse<String> httpResponse = httpClient.send(httpRequest, HttpResponse.BodyHandlers.ofString());
-            int statusCode = httpResponse.statusCode();
-            if (statusCode == 200) {
-                return true;
-            } else if (statusCode == 404) {
-                return false;
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-
-        return false;
-    }
-
-    public void getObject(String objectName) {
-        try {
-            String version = "1.0.0";
-            String api = String.format("%s/%s?client=%s", endpoint, objectName, version);
-            HttpRequest httpRequest = HttpRequest.newBuilder(new URI(api))
-                    .version(HttpClient.Version.HTTP_1_1)
-                    .GET()
-                    .build();
-
-            HttpResponse<InputStream> httpResponse = httpClient.send(httpRequest, HttpResponse.BodyHandlers.ofInputStream());
-            int statusCode = httpResponse.statusCode();
-            if (statusCode == 200) {
-                String localPath = saveFile(httpResponse.body(), objectName);
-                log.info("saved to {}", localPath);
-            } else {
-                log.error("{}", statusCode);
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-    private UploadFileRet getResult(HttpResponse<String> httpResponse) {
-        int statusCode = httpResponse.statusCode();
-        String body = httpResponse.body();
-        if (statusCode != 200) {
-            log.error("{} -> {}", statusCode, body);
-            return null;
-        }
-
-        Type type = new TypeToken<WebResult<UploadFileRet>>(){}.getType();
-        WebResult<UploadFileRet> webResult = JsonConverter.jsonToObject(body, type);
-        if (webResult.getCode() != 0) {
-            log.error("{}", webResult.getMsg());
-            return null;
-        }
-
-        return webResult.getData();
-    }
-
-    public String saveFile(InputStream in, String objectName) {
-        String filePath = baseDir + objectName;
-        File file = new File(filePath);
-        File parentDir = file.getParentFile();
-        try {
-            if (!parentDir.exists()) {
-                FileUtils.forceMkdir(parentDir);
-            }
-
-            FileOutputStream fos = new FileOutputStream(file);
-            // 1MiB
-            int len = 1024*1024*5;
-            byte[] buf = new byte[len];
-            int readLen;
-            while ((readLen = in.read(buf, 0, len)) != -1) {
-                fos.write(buf, 0, readLen);
-            }
-            fos.close();
-            return filePath;
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-
-        return null;
-    }
-
-    public static void main(String[] args) {
-        String endpoint = "";
-        ObjectGetService objectGetService = new ObjectGetService(endpoint);
-
-        String objectName = "video/playback/28d0fd95e224499c9f2cf1d98b4551a5.flv";
-        objectGetService.getObject(objectName);
-
-        /*String sha256sum = "1234567890";
-        objectGetService.headObject1(sha256sum);*/
-    }
-}

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

@@ -1,138 +0,0 @@
-package cn.reghao.oss.sdk;
-
-import cn.reghao.jutil.jdk.http.UploadParam;
-import cn.reghao.jutil.jdk.http.WebRequest;
-import cn.reghao.jutil.jdk.http.WebResponse;
-import cn.reghao.jutil.jdk.result.WebResult;
-import cn.reghao.jutil.jdk.security.DigestUtil;
-import cn.reghao.jutil.jdk.serializer.JsonConverter;
-import cn.reghao.jutil.tool.http.DefaultWebRequest;
-import cn.reghao.oss.api.rest.UploadFileRet;
-import com.google.gson.reflect.TypeToken;
-import lombok.extern.slf4j.Slf4j;
-
-import java.io.BufferedInputStream;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.lang.reflect.Type;
-import java.net.URI;
-import java.net.http.HttpClient;
-import java.net.http.HttpRequest;
-import java.net.http.HttpResponse;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.security.NoSuchAlgorithmException;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.function.Supplier;
-
-/**
- * @author reghao
- * @date 2023-06-02 16:19:04
- */
-@Slf4j
-public class ObjectUploadService {
-    private final String endpoint;
-    private final HttpClient httpClient = HttpClient.newBuilder().build();
-    private final DefaultWebRequest webRequest = new DefaultWebRequest();
-
-    public ObjectUploadService(String endpoint) {
-        this.endpoint = endpoint;
-    }
-
-    public UploadFileRet putObject(File file, int channelId, long userId) throws Exception {
-        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();
-        HttpResponse<String> httpResponse = httpClient.send(httpRequest, HttpResponse.BodyHandlers.ofString());
-        return getResult(httpResponse);
-    }
-
-    public UploadFileRet putObjectWithJdkHttp(InputStream inputStream, int channelId, int userId) throws Exception {
-        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);
-        Supplier<? extends InputStream> streamSupplier = (Supplier<BufferedInputStream>) () -> bis;
-        HttpRequest httpRequest = builder.PUT(HttpRequest.BodyPublishers.ofInputStream(streamSupplier)).build();
-        HttpResponse<String> httpResponse = httpClient.send(httpRequest, HttpResponse.BodyHandlers.ofString());
-        return getResult(httpResponse);
-    }
-
-    public UploadFileRet postObjectWithJdkHttp(File file, int channelId, long userId) throws Exception {
-        String sha256sum = DigestUtil.sha256sum(file.getAbsolutePath());
-        MultiPartBodyPublisher publisher = new MultiPartBodyPublisher()
-                .addPart("file", Paths.get(file.getAbsolutePath()))
-                .addPart("channelId", ""+channelId)
-                .addPart("client", "client")
-                .addPart("sha256sum", sha256sum);
-
-        String api = String.format("%s/", endpoint);
-        HttpRequest httpRequest = HttpRequest.newBuilder(new URI(api))
-                .version(HttpClient.Version.HTTP_1_1)
-                .header("x-user-id", userId+"")
-                //.header("authorization", "Bearer 0123456789")
-                .header("content-type", "multipart/form-data; boundary=" + publisher.getBoundary())
-                .POST(publisher.build())
-                .build();
-
-        HttpResponse<String> httpResponse = httpClient.send(httpRequest, HttpResponse.BodyHandlers.ofString());
-        return getResult(httpResponse);
-    }
-
-    public UploadFileRet postObject(File file, int channelId, long userId) throws Exception {
-        String sha256sum = DigestUtil.sha256sum(file.getAbsolutePath());
-        Map<String, String> map = new HashMap<>();
-        map.put("channelId", ""+channelId);
-        map.put("client", "client");
-        map.put("userId", ""+userId);
-        map.put("sha256sum", sha256sum);
-        UploadParam uploadParam = new UploadParam(file, map);
-
-        String api = String.format("%s/", endpoint);
-        WebResponse webResponse = webRequest.upload(api, uploadParam);
-        int statusCode = webResponse.getStatusCode();
-        String body = webResponse.getBody();
-        if (statusCode != 200) {
-            String errMsg = String.format("%s -> %s", statusCode, body);
-            throw new Exception(errMsg);
-        }
-
-        Type type = new TypeToken<WebResult<UploadFileRet>>(){}.getType();
-        WebResult<UploadFileRet> webResult = JsonConverter.jsonToObject(body, type);
-        if (webResult.getCode() != 0) {
-            throw new Exception(webResult.getMsg());
-        }
-
-        return webResult.getData();
-    }
-
-    private UploadFileRet getResult(HttpResponse<String> httpResponse) throws Exception {
-        int statusCode = httpResponse.statusCode();
-        String body = httpResponse.body();
-        if (statusCode != 200) {
-            String errMsg = String.format("%s -> %s", statusCode, body);
-            throw new Exception(errMsg);
-        }
-
-        Type type = new TypeToken<WebResult<UploadFileRet>>(){}.getType();
-        WebResult<UploadFileRet> webResult = JsonConverter.jsonToObject(body, type);
-        if (webResult.getCode() != 0) {
-            String errMsg = String.format("%s - %s", webResult.getCode(), webResult.getMsg());
-            throw new Exception(errMsg);
-        }
-
-        return webResult.getData();
-    }
-}

+ 0 - 43
oss-sdk/src/test/java/ObjectTest.java

@@ -1,43 +0,0 @@
-import cn.reghao.oss.api.constant.UploadChannel;
-import cn.reghao.oss.api.rest.UploadFileRet;
-import cn.reghao.oss.sdk.ObjectMultipartUploadService;
-import cn.reghao.oss.sdk.ObjectUploadService;
-import lombok.extern.slf4j.Slf4j;
-
-import java.io.*;
-
-/**
- * @author reghao
- * @date 2023-06-02 16:19:04
- */
-@Slf4j
-public class ObjectTest {
-    static final String endpoint = "";
-    static ObjectUploadService objectUploadService = new ObjectUploadService(endpoint);
-
-    static void upload(File file) throws Exception {
-        long userId = 10001;
-        UploadFileRet uploadFileRet = objectUploadService.postObject(file, UploadChannel.video.getCode(), userId);
-        //UploadFileRet uploadFileRet = objectUploadService.putObject(file, 1, userId);
-        if (uploadFileRet == null) {
-            log.info("文件上传失败");
-        } else {
-            log.info("{} -> {}", uploadFileRet.getUploadId(), uploadFileRet.getUrl());
-        }
-    }
-
-    static void multipartUpload() throws Exception {
-        ObjectMultipartUploadService multipartUploadService = new ObjectMultipartUploadService(endpoint);
-        String filePath = "";
-        int channelId = 1;
-        multipartUploadService.upload(new File(filePath), channelId);
-        //multipartUploadService.create();
-        //multipartUploadService.get();
-    }
-
-    public static void main(String[] args) throws Exception {
-        String filePath = "";
-        File file = new File(filePath);
-        objectUploadService.postObjectWithJdkHttp(file, UploadChannel.image.getCode(), 10000);
-    }
-}

+ 0 - 23
oss-store/src/main/java/cn/reghao/oss/store/config/OssProperties.java

@@ -1,23 +0,0 @@
-package cn.reghao.oss.store.config;
-
-import lombok.Getter;
-import lombok.Setter;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.stereotype.Component;
-
-import java.util.List;
-
-/**
- * @author reghao
- * @date 2021-12-30 11:01:46
- */
-@Getter
-@Setter
-@Component
-@ConfigurationProperties(prefix = "oss")
-public class OssProperties {
-    private String domain;
-    private List<String> diskDirs;
-    private String secretKey;
-    private String referer;
-}

+ 0 - 68
oss-store/src/main/java/cn/reghao/oss/store/config/mysql/DataSourceConfig.java

@@ -1,68 +0,0 @@
-package cn.reghao.oss.store.config.mysql;
-
-import org.apache.ibatis.plugin.Interceptor;
-import org.apache.ibatis.session.SqlSessionFactory;
-import org.mybatis.spring.SqlSessionFactoryBean;
-import org.mybatis.spring.SqlSessionTemplate;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
-import org.springframework.jdbc.datasource.DataSourceTransactionManager;
-import org.springframework.transaction.PlatformTransactionManager;
-
-import javax.sql.DataSource;
-
-/**
- * MyBatis 初始化配置
- * 若配置了多数据源,则不启用此配置
- *
- * @author reghao
- * @date 2021-04-26 17:48:29
- */
-@Configuration
-public class DataSourceConfig {
-    private final DataSource dataSource;
-
-    public DataSourceConfig(DataSource dataSource) {
-        this.dataSource = dataSource;
-    }
-
-    @Bean
-    public SqlSessionFactory sqlSessionFactory() throws Exception {
-        SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
-        factoryBean.setDataSource(dataSource);
-        factoryBean.setPlugins(new Interceptor[]{pageListInterceptor()});
-
-        org.apache.ibatis.session.Configuration configuration = new org.apache.ibatis.session.Configuration();
-        configuration.setMapUnderscoreToCamelCase(true);
-        configuration.setDefaultFetchSize(100);
-        configuration.setDefaultStatementTimeout(300);
-        factoryBean.setConfiguration(configuration);
-
-        String location = "classpath*:mapper/**.xml";
-        factoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(location));
-        return factoryBean.getObject();
-    }
-
-    /**
-     * 配置 mybatis 的分页拦截器
-     *
-     * @param
-     * @return
-     * @date 2021-12-21 下午5:23
-     */
-    @Bean
-    public PageListInterceptor pageListInterceptor() {
-        return new PageListInterceptor();
-    }
-
-    @Bean(value = "sqlSession")
-    public SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory sqlSessionFactory) {
-        return new SqlSessionTemplate(sqlSessionFactory);
-    }
-
-    @Bean(value = "transactionManager")
-    public PlatformTransactionManager annotationDrivenTransactionManager() {
-        return new DataSourceTransactionManager(dataSource);
-    }
-}

+ 0 - 83
oss-store/src/main/java/cn/reghao/oss/store/config/mysql/PageListInterceptor.java

@@ -1,83 +0,0 @@
-package cn.reghao.oss.store.config.mysql;
-
-import cn.reghao.jutil.jdk.db.Page;
-import org.apache.ibatis.binding.MapperMethod;
-import org.apache.ibatis.executor.parameter.ParameterHandler;
-import org.apache.ibatis.executor.statement.StatementHandler;
-import org.apache.ibatis.mapping.MappedStatement;
-import org.apache.ibatis.plugin.*;
-import org.apache.ibatis.reflection.MetaObject;
-import org.apache.ibatis.reflection.SystemMetaObject;
-
-import java.sql.Connection;
-import java.util.Properties;
-
-/**
- * MyBatis 分页拦截器
- *
- * @author reghao
- * @date 2021-04-26 17:40:32
- */
-@Intercepts({@Signature(type=StatementHandler.class,method="prepare",args={Connection.class,Integer.class})})
-public class PageListInterceptor implements Interceptor {
-    private final String methodSuffix = "ByPage";
-    @Deprecated
-    private int page;
-    @Deprecated
-    private int size;
-    private String dbType;
-
-    @Override
-    public Object intercept(Invocation invocation) throws Throwable {
-        StatementHandler statementHandler = (StatementHandler)invocation.getTarget();
-        MetaObject metaObject = SystemMetaObject.forObject(statementHandler);
-        while(metaObject.hasGetter("h")){
-            Object object = metaObject.getValue("h");
-            metaObject = SystemMetaObject.forObject(object);
-        }
-
-        while(metaObject.hasGetter("target")){
-            Object object = metaObject.getValue("target");
-            metaObject = SystemMetaObject.forObject(object);
-        }
-
-        MappedStatement mappedStatement = (MappedStatement)metaObject.getValue("delegate.mappedStatement");
-        String mapId = mappedStatement.getId();
-        if (mapId.matches(String.format(".+%s$", methodSuffix))){
-            ParameterHandler parameterHandler = (ParameterHandler)metaObject.getValue("delegate.parameterHandler");
-            Object object = parameterHandler.getParameterObject();
-            Page page;
-            if (object instanceof Page) {
-                page = (Page) object;
-            } else if (object instanceof MapperMethod.ParamMap) {
-                MapperMethod.ParamMap paramMap = (MapperMethod.ParamMap) object;
-                Object param1 = paramMap.get("param1");
-                if (param1 instanceof Page) {
-                    page = (Page) param1;
-                } else {
-                    throw new Exception("byPage 方法的第一个参数不是 Page 类型");
-                }
-            } else {
-                throw new Exception("没有 Page 类型的参数");
-            }
-
-            String sql = (String) metaObject.getValue("delegate.boundSql.sql");
-            //sql += " limit "+(page-1)*size +","+size;
-            sql += String.format(" limit %s,%s", (page.getPage()-1)*page.getSize(), page.getSize());
-            metaObject.setValue("delegate.boundSql.sql", sql);
-        }
-        return invocation.proceed();
-    }
-
-    @Override
-    public Object plugin(Object target) {
-        return Plugin.wrap(target, this);
-    }
-
-    @Override
-    public void setProperties(Properties properties) {
-        String limit = properties.getProperty("limit","10");
-        this.page = Integer.parseInt(limit);
-        this.dbType = properties.getProperty("dbType", "mysql");
-    }
-}

+ 0 - 77
oss-store/src/main/java/cn/reghao/oss/store/config/spring/FileLifecycle.java

@@ -1,77 +0,0 @@
-package cn.reghao.oss.store.config.spring;
-
-import cn.reghao.jutil.jdk.store.LocalStores;
-import cn.reghao.jutil.jdk.store.SubDirCount;
-import cn.reghao.oss.store.config.OssProperties;
-import cn.reghao.oss.store.db.mapper.DataBlockMapper;
-import cn.reghao.oss.store.task.FileTask;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.DisposableBean;
-import org.springframework.boot.ApplicationArguments;
-import org.springframework.boot.ApplicationRunner;
-import org.springframework.stereotype.Component;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * @author reghao
- * @date 2022-03-23 09:22:01
- */
-@Slf4j
-@Component
-public class FileLifecycle implements ApplicationRunner, DisposableBean {
-    private final OssProperties ossProperties;
-    private final DataBlockMapper dataBlockMapper;
-    private final FileTask fileTask;
-
-    public FileLifecycle(OssProperties ossProperties, DataBlockMapper dataBlockMapper, FileTask fileTask) {
-        this.ossProperties = ossProperties;
-        this.dataBlockMapper = dataBlockMapper;
-        this.fileTask = fileTask;
-    }
-
-    @Override
-    public void run(ApplicationArguments args) throws Exception {
-        initLocalStore();
-
-        log.info("执行文件任务...");
-        fileTask.exec();
-        log.info("文件任务执行完成...");
-    }
-
-    private void initLocalStore() throws IOException {
-        log.info("初始化本地磁盘...");
-        List<String> diskDirs = ossProperties.getDiskDirs();
-        for (String diskDir : diskDirs) {
-            File dir = new File(diskDir);
-            if (!dir.exists()) {
-                dir.mkdirs();
-            }
-        }
-        LocalStores.init(diskDirs);
-
-        for (String diskDir : diskDirs) {
-            List<SubDirCount> list = dataBlockMapper.findSubDirCount("");
-            Map<String, Integer> map = new HashMap<>();
-            list.forEach(subDirCount -> {
-                String relativeDir = subDirCount.getRelativeDir();
-                String storeDir = diskDir + relativeDir;
-                File file = new File(storeDir);
-
-                int total = subDirCount.getTotal();
-                map.put(file.getAbsolutePath(), total);
-            });
-
-            LocalStores.initStoreDirs(diskDir, map);
-        }
-        log.info("本地磁盘数据初始化完成...");
-    }
-
-    @Override
-    public void destroy() {
-    }
-}

+ 0 - 20
oss-store/src/main/java/cn/reghao/oss/store/db/mapper/AudioFileMapper.java

@@ -1,20 +0,0 @@
-package cn.reghao.oss.store.db.mapper;
-
-import cn.reghao.oss.store.model.po.AudioFile;
-import cn.reghao.jutil.jdk.db.BaseMapper;
-import cn.reghao.oss.api.dto.media.AudioInfo;
-import cn.reghao.oss.api.dto.media.AudioUrl;
-import org.apache.ibatis.annotations.Mapper;
-
-import java.util.List;
-
-/**
- * @author reghao
- * @date 2023-07-05 16:47:46
- */
-@Mapper
-public interface AudioFileMapper extends BaseMapper<AudioFile> {
-    List<AudioFile> findByAudioFileId(String audioFileId);
-    List<AudioInfo> findAudioInfo(String audioFileId);
-    List<AudioUrl> findAudioUrl(String audioFileId);
-}

+ 0 - 13
oss-store/src/main/java/cn/reghao/oss/store/db/mapper/FileTypeMapper.java

@@ -1,13 +0,0 @@
-package cn.reghao.oss.store.db.mapper;
-
-import cn.reghao.oss.store.model.po.FileType;
-import cn.reghao.jutil.jdk.db.BaseMapper;
-import org.apache.ibatis.annotations.Mapper;
-
-/**
- * @author reghao
- * @date 2022-12-27 16:59:15
- */
-@Mapper
-public interface FileTypeMapper extends BaseMapper<FileType> {
-}

+ 0 - 23
oss-store/src/main/java/cn/reghao/oss/store/db/mapper/ImageFileMapper.java

@@ -1,23 +0,0 @@
-package cn.reghao.oss.store.db.mapper;
-
-import cn.reghao.oss.store.model.po.ImageFile;
-import cn.reghao.oss.store.model.vo.ImageObject;
-import cn.reghao.jutil.jdk.db.BaseMapper;
-import org.apache.ibatis.annotations.Mapper;
-
-import java.util.List;
-import java.util.Set;
-
-/**
- * @author reghao
- * @date 2021-12-08 14:41:35
- */
-@Mapper
-public interface ImageFileMapper extends BaseMapper<ImageFile> {
-    void deleteByImageFileId(String imageFileId);
-    void deleteByImageFileIds(List<String> list);
-
-    List<ImageFile> findByImageFileId(String imageFileId);
-    List<ImageFile> findByImageFileIds(Set<String> list);
-    List<ImageObject> findAll1();
-}

+ 0 - 22
oss-store/src/main/java/cn/reghao/oss/store/db/mapper/VideoFileMapper.java

@@ -1,22 +0,0 @@
-package cn.reghao.oss.store.db.mapper;
-
-import cn.reghao.oss.store.model.po.VideoFile;
-import cn.reghao.jutil.jdk.db.BaseMapper;
-import cn.reghao.oss.api.dto.media.VideoInfo;
-import cn.reghao.oss.api.dto.media.VideoUrlDto;
-import org.apache.ibatis.annotations.Mapper;
-
-import java.util.List;
-
-/**
- * @author reghao
- * @date 2023-10-13 15:59:11
- */
-@Mapper
-public interface VideoFileMapper extends BaseMapper<VideoFile> {
-    void deleteByVideoFileId(String videoFileId);
-
-    List<VideoUrlDto> findVideoUrls(String videoFileId);
-    List<VideoFile> findByVideoFileId(String videoFileId);
-    List<VideoInfo> findVideoInfo(String videoFileId);
-}

+ 0 - 40
oss-store/src/main/java/cn/reghao/oss/store/db/repository/AudioRepository.java

@@ -1,40 +0,0 @@
-package cn.reghao.oss.store.db.repository;
-
-import cn.reghao.oss.store.db.mapper.*;
-import cn.reghao.oss.store.model.po.*;
-import cn.reghao.oss.api.dto.media.AudioInfo;
-import cn.reghao.oss.api.dto.media.AudioUrl;
-import cn.reghao.oss.store.db.mapper.AudioFileMapper;
-import cn.reghao.oss.store.model.po.AudioFile;
-import org.springframework.stereotype.Repository;
-
-import java.util.List;
-
-/**
- * @author reghao
- * @date 2023-08-28 15:00:43
- */
-@Repository
-public class AudioRepository {
-    private final AudioFileMapper audioFileMapper;
-
-    public AudioRepository(AudioFileMapper audioFileMapper) {
-        this.audioFileMapper = audioFileMapper;
-    }
-
-    public void saveAudioFiles(List<AudioFile> audioFiles) {
-        audioFileMapper.saveAll(audioFiles);
-    }
-
-    public List<AudioFile> findAudioFiles(String audioFileId) {
-        return audioFileMapper.findByAudioFileId(audioFileId);
-    }
-
-    public List<AudioInfo> getAudioInfo(String audioFileId) {
-        return audioFileMapper.findAudioInfo(audioFileId);
-    }
-
-    public List<AudioUrl> getAudioUrls(String audioFileId) {
-        return audioFileMapper.findAudioUrl(audioFileId);
-    }
-}

+ 0 - 96
oss-store/src/main/java/cn/reghao/oss/store/db/repository/ImageRepository.java

@@ -1,96 +0,0 @@
-package cn.reghao.oss.store.db.repository;
-
-import cn.reghao.oss.api.constant.UploadChannel;
-import cn.reghao.oss.api.dto.media.ImageUrlDto;
-import cn.reghao.oss.store.db.mapper.ImageFileMapper;
-import cn.reghao.oss.store.model.po.FileMeta;
-import cn.reghao.oss.store.model.po.ImageFile;
-import org.springframework.stereotype.Repository;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Set;
-import java.util.stream.Collectors;
-
-/**
- * @author reghao
- * @date 2023-08-28 15:00:43
- */
-@Repository
-public class ImageRepository {
-    private final ImageFileMapper imageFileMapper;
-    private final ObjectRepository objectRepository;
-
-    public ImageRepository(ImageFileMapper imageFileMapper, ObjectRepository objectRepository) {
-        this.imageFileMapper = imageFileMapper;
-        this.objectRepository = objectRepository;
-    }
-
-    @Transactional(rollbackFor = Exception.class)
-    public void saveImageFiles(List<ImageFile> imageFiles) {
-        imageFileMapper.saveAll(imageFiles);
-    }
-
-    public void deleteByImageFileIds(List<String> imageFileIds) {
-        imageFileIds.forEach(this::deleteImageFile);
-    }
-
-    public void deleteImageFile(String imageFileId) {
-        List<String> objectIds = imageFileMapper.findByImageFileId(imageFileId).stream()
-                .map(ImageFile::getObjectId)
-                .collect(Collectors.toList());
-        deleteImageFile0(imageFileId, objectIds);
-    }
-
-    public void deleteByObjectNames(List<String> imageObjectNames) {
-        List<FileMeta> fileMetas = objectRepository.getByObjectNames(imageObjectNames);
-        fileMetas.forEach(fileMeta -> {
-            String objectId = fileMeta.getObjectId();
-            deleteImageFile(objectId);
-        });
-    }
-
-    @Transactional(rollbackFor = Exception.class)
-    public void deleteImageFile0(String imageFileId, List<String> objectIds) {
-        imageFileMapper.deleteByImageFileId(imageFileId);
-        objectRepository.deleteByObjectIds(objectIds);
-    }
-
-    public List<ImageFile> findImageFiles(String imageFileId) {
-        return imageFileMapper.findByImageFileId(imageFileId);
-    }
-
-    public List<ImageUrlDto> getImageUrls(int channelId, Set<String> imageFileIds) {
-        List<ImageUrlDto> list = new ArrayList<>();
-        for (String imageFileId : imageFileIds) {
-            ImageUrlDto imageUrlDto = getImageUrl(channelId, imageFileId);
-            if (imageUrlDto != null) {
-                list.add(imageUrlDto);
-            }
-        }
-
-        return list;
-    }
-
-    public ImageUrlDto getImageUrl(int channelId, String imageFileId) {
-        List<ImageFile> list = imageFileMapper.findByImageFileId(imageFileId);
-        if (list.isEmpty()) {
-            return null;
-        }
-
-        ImageUrlDto imageUrlDto = new ImageUrlDto(imageFileId);
-        if (channelId == UploadChannel.photo.getCode() || channelId == UploadChannel.disk.getCode()) {
-            ImageFile original = list.get(0);
-            imageUrlDto.setOriginalUrl(original.getUrl());
-            ImageFile thumbnail = list.get(1);
-            imageUrlDto.setThumbnailUrl(thumbnail.getUrl());
-        } else {
-            ImageFile original = list.get(0);
-            imageUrlDto.setOriginalUrl(original.getUrl());
-            imageUrlDto.setThumbnailUrl(original.getUrl());
-        }
-
-        return imageUrlDto;
-    }
-}

+ 0 - 63
oss-store/src/main/java/cn/reghao/oss/store/db/repository/VideoRepository.java

@@ -1,63 +0,0 @@
-package cn.reghao.oss.store.db.repository;
-
-import cn.reghao.oss.store.db.mapper.*;
-import cn.reghao.oss.store.model.po.*;
-import cn.reghao.oss.api.dto.media.VideoInfo;
-import cn.reghao.oss.api.dto.media.VideoUrlDto;
-import cn.reghao.oss.store.db.mapper.VideoFileMapper;
-import cn.reghao.oss.store.model.po.VideoFile;
-import org.springframework.stereotype.Repository;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.util.List;
-import java.util.stream.Collectors;
-
-/**
- * @author reghao
- * @date 2023-08-28 15:00:43
- */
-@Repository
-public class VideoRepository {
-    private final VideoFileMapper videoFileMapper;
-
-    public VideoRepository(VideoFileMapper videoFileMapper) {
-        this.videoFileMapper = videoFileMapper;
-    }
-
-    @Transactional(rollbackFor = Exception.class)
-    public void saveVideoFiles(List<VideoFile> videoFiles) {
-        videoFileMapper.saveAll(videoFiles);
-    }
-
-    public List<String> deleteVideoFile(String videoFileId) {
-        List<String> objectIds = videoFileMapper.findByVideoFileId(videoFileId).stream()
-                .map(VideoFile::getObjectId)
-                .collect(Collectors.toList());
-        deleteVideoFile0(videoFileId);
-        return objectIds;
-    }
-
-    @Transactional(rollbackFor = Exception.class)
-    public void deleteVideoFile0(String videoFileId) {
-        videoFileMapper.deleteByVideoFileId(videoFileId);
-    }
-
-    public List<VideoInfo> getVideoInfos(String videoFileId) {
-        return videoFileMapper.findVideoInfo(videoFileId);
-    }
-
-    public VideoFile getOriginalVideoFile(String videoFileId) {
-        List<VideoFile> list = videoFileMapper.findByVideoFileId(videoFileId);
-        return list.isEmpty() ? null : list.get(0);
-    }
-
-    public List<VideoFile> getVideoFiles(String videoFileId) {
-        List<VideoFile> list = videoFileMapper.findByVideoFileId(videoFileId);
-        return list;
-    }
-
-    //@Cacheable(cacheNames = "oss:store:videoUrls", key = "#videoFileId", unless = "#result.empty")
-    public List<VideoUrlDto> findVideoUrls(String videoFileId) {
-        return videoFileMapper.findVideoUrls(videoFileId);
-    }
-}

+ 0 - 62
oss-store/src/main/java/cn/reghao/oss/store/exception/ControllerExceptionHandler.java

@@ -1,62 +0,0 @@
-package cn.reghao.oss.store.exception;
-
-import cn.reghao.jutil.jdk.exception.ExceptionUtil;
-import cn.reghao.jutil.jdk.result.WebResult;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.MethodArgumentNotValidException;
-import org.springframework.web.bind.annotation.ControllerAdvice;
-import org.springframework.web.bind.annotation.ExceptionHandler;
-import org.springframework.web.bind.annotation.ResponseBody;
-
-import javax.servlet.http.HttpServletRequest;
-import java.util.stream.Collectors;
-
-/**
- * 全局异常处理类,处理 controller 抛出的异常
- *
- * @author reghao
- * @date 2019/03/21 10:25:49
- */
-@Slf4j
-@ControllerAdvice
-public class ControllerExceptionHandler {
-    /**
-     * 处理所有 controller 上抛出的异常
-     *
-     * @date 2019-09-28 上午11:01
-     */
-    @ExceptionHandler({Exception.class})
-    @ResponseBody
-    public ResponseEntity<String> error(Exception e, HttpServletRequest request) {
-        String uri = request.getRequestURI();
-        String msg;
-        if (e instanceof NullPointerException) {
-            msg = ExceptionUtil.stackTrace(e);
-        } else {
-            msg = ExceptionUtil.errorMsg(e);
-        }
-        log.error("{} 接口抛出异常: {}", uri, msg);
-
-        String body = WebResult.errorWithMsg(msg);
-        int status = HttpStatus.INTERNAL_SERVER_ERROR.value();
-        int status1 = HttpStatus.INSUFFICIENT_STORAGE.value();
-        if (e instanceof MethodArgumentNotValidException) {
-            // 参数校验失败
-            MethodArgumentNotValidException exception = (MethodArgumentNotValidException) e;
-            String errMsg = exception.getBindingResult().getAllErrors().stream()
-                    .map(objectError -> {
-                        String message = objectError.getDefaultMessage();
-                        return message + "\n";
-                    }).collect(Collectors.joining());
-            body = WebResult.errorWithMsg(errMsg);
-        } else if (e instanceof IllegalStateException) {
-            IllegalStateException exception = (IllegalStateException) e;
-            Throwable throwable = exception.getCause();
-            body = WebResult.errorWithMsg(throwable.getMessage());
-        }
-
-        return ResponseEntity.status(status).body(body);
-    }
-}

+ 0 - 43
oss-store/src/main/java/cn/reghao/oss/store/exception/FilterExceptionHandler.java

@@ -1,43 +0,0 @@
-package cn.reghao.oss.store.exception;
-
-import cn.reghao.jutil.jdk.converter.DateTimeConverter;
-import org.springframework.boot.autoconfigure.web.ErrorProperties;
-import org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController;
-import org.springframework.boot.web.servlet.error.DefaultErrorAttributes;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.MediaType;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import javax.servlet.http.HttpServletRequest;
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * 处理 filter 中抛出的异常
- * 需要配置 server.error.path=/error
- *
- * @author reghao
- * @date 2020-06-19 13:34:19
- */
-@RestController
-public class FilterExceptionHandler extends BasicErrorController {
-    public FilterExceptionHandler() {
-        super(new DefaultErrorAttributes(), new ErrorProperties());
-    }
-
-    @Override
-    @RequestMapping(produces = {MediaType.APPLICATION_JSON_VALUE})
-    public ResponseEntity<Map<String, Object>> error(HttpServletRequest request) {
-        Map<String, Object> body = getErrorAttributes(request, isIncludeStackTrace(request, MediaType.ALL));
-        HttpStatus status = getStatus(request);
-
-        Map<String,Object> map = new HashMap<>();
-        map.put("code",body.get("status"));
-        map.put("msg",body.get("message"));
-        map.put("timestamp", DateTimeConverter.format(System.currentTimeMillis()));
-        map.put("data",body.get("data"));
-        return ResponseEntity.status(status).body(map);
-    }
-}

+ 0 - 69
oss-store/src/main/java/cn/reghao/oss/store/inerceptor/AccessLogInterceptor.java

@@ -1,69 +0,0 @@
-package cn.reghao.oss.store.inerceptor;
-
-import cn.reghao.jutil.web.ServletUtil;
-import cn.reghao.oss.api.constant.UploadChannel;
-import cn.reghao.oss.store.config.OssProperties;
-import cn.reghao.oss.store.util.ObjectUtil;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.lang.Nullable;
-import org.springframework.stereotype.Component;
-import org.springframework.web.servlet.HandlerInterceptor;
-import org.springframework.web.servlet.ModelAndView;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.util.List;
-
-/**
- * 访问日志拦截器
- *
- * @author reghao
- * @date 2021-12-30 12:19:07
- */
-@Slf4j
-@Component
-public class AccessLogInterceptor implements HandlerInterceptor {
-    private final String referFrom;
-
-    public AccessLogInterceptor(OssProperties ossProperties) {
-        this.referFrom = ossProperties.getReferer();
-    }
-
-    @Override
-    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
-        String uri = request.getRequestURI();
-        String method = request.getMethod();
-        if (method.equalsIgnoreCase("HEAD")) {
-            return true;
-        }
-
-        String userAgent = request.getHeader("user-agent");
-        String ipv4 = request.getRemoteAddr();
-        String referer = request.getHeader("referer");
-        String client = ServletUtil.getRequestParam("client", "");
-        if (!client.isBlank()) {
-            return true;
-        }
-
-        String objectName = uri.replaceFirst("/", "");
-        if (objectName.startsWith(UploadChannel.img.getPrefix())) {
-            return true;
-        } else if (referer == null || !referer.contains(referFrom)) {
-            log.error("request object {} from {} has been blocked", uri, referer);
-            response.setStatus(403);
-            return false;
-        }
-
-        return true;
-    }
-
-    @Override
-    public void postHandle(HttpServletRequest request, HttpServletResponse response,
-                           Object handler, @Nullable ModelAndView modelAndView) throws Exception {
-    }
-
-    @Override
-    public void afterCompletion(HttpServletRequest request, HttpServletResponse response,
-                                Object handler, @Nullable Exception ex) throws Exception {
-    }
-}

+ 0 - 40
oss-store/src/main/java/cn/reghao/oss/store/inerceptor/MutableHttpServletRequest.java

@@ -1,40 +0,0 @@
-package cn.reghao.oss.store.inerceptor;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletRequestWrapper;
-import java.util.*;
-
-/**
- * @author reghao
- * @date 2022-08-25 21:45:31
- */
-public final class MutableHttpServletRequest extends HttpServletRequestWrapper {
-    private final Map<String, String> customHeaders;
-
-    public MutableHttpServletRequest(HttpServletRequest request) {
-        super(request);
-        this.customHeaders = new HashMap<>();
-    }
-
-    public void putHeader(String name, String value) {
-        customHeaders.put(name, value);
-    }
-
-    public String getHeader(String name) {
-        String value = customHeaders.get(name);
-        if (value != null) {
-            return value;
-        }
-
-        return ((HttpServletRequest) getRequest()).getHeader(name);
-    }
-
-    public Enumeration<String> getHeaderNames() {
-        Set<String> set = new HashSet<>(customHeaders.keySet());
-        Enumeration<String> e = ((HttpServletRequest) getRequest()).getHeaderNames();
-        while (e.hasMoreElements()) {
-            set.add(e.nextElement());
-        }
-        return Collections.enumeration(set);
-    }
-}

+ 0 - 47
oss-store/src/main/java/cn/reghao/oss/store/inerceptor/TokenFilter.java

@@ -1,47 +0,0 @@
-package cn.reghao.oss.store.inerceptor;
-
-import cn.reghao.oss.store.config.OssProperties;
-import cn.reghao.oss.store.util.JwtUtil;
-import cn.reghao.oss.store.util.UserContext;
-import cn.reghao.jutil.web.ServletUtil;
-import cn.reghao.oss.api.dto.OssPayload;
-import org.springframework.stereotype.Component;
-
-import javax.servlet.*;
-import java.io.IOException;
-
-/**
- * @author reghao
- * @date 2023-08-25 16:14:23
- */
-@Component
-public class TokenFilter implements Filter {
-    private final OssProperties ossProperties;
-
-    public TokenFilter(OssProperties ossProperties) {
-        this.ossProperties = ossProperties;
-    }
-
-    @Override
-    public void init(FilterConfig filterConfig) throws ServletException {
-    }
-
-    @Override
-    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
-            throws IOException, ServletException {
-        long userId = -1L;
-        String token = ServletUtil.getBearerToken(request);
-        if (token != null) {
-            OssPayload ossPayload = JwtUtil.getOssPayload(token, ossProperties.getSecretKey());
-            userId = ossPayload.getUserId();
-        }
-
-        try (UserContext context = new UserContext(userId)) {
-            chain.doFilter(request, response);
-        }
-    }
-
-    @Override
-    public void destroy() {
-    }
-}

+ 0 - 35
oss-store/src/main/java/cn/reghao/oss/store/model/po/AudioFile.java

@@ -1,35 +0,0 @@
-package cn.reghao.oss.store.model.po;
-
-import cn.reghao.jutil.jdk.db.BaseObject;
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.NoArgsConstructor;
-
-/**
- * 音频文件
- *
- * @author reghao
- * @date 2023-07-05 16:42:01
- */
-@AllArgsConstructor
-@NoArgsConstructor
-@EqualsAndHashCode(callSuper = true)
-@Data
-public class AudioFile extends BaseObject<Integer> {
-    private String audioFileId;
-    private String objectId;
-    private int duration;
-    private String codec;
-    private Long bitRate;
-    private String url;
-
-    public AudioFile(String audioFileId, String objectId, String url, AudioFile audioFile) {
-        this.audioFileId = audioFileId;
-        this.objectId = objectId;
-        this.duration = audioFile.getDuration();
-        this.codec = audioFile.getCodec();
-        this.bitRate = audioFile.getBitRate();
-        this.url = url;
-    }
-}

+ 0 - 20
oss-store/src/main/java/cn/reghao/oss/store/model/po/FileType.java

@@ -1,20 +0,0 @@
-package cn.reghao.oss.store.model.po;
-
-import cn.reghao.jutil.jdk.db.BaseObject;
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-import lombok.NoArgsConstructor;
-
-/**
- * @author reghao
- * @date 2022-12-27 16:55:26
- */
-@NoArgsConstructor
-@AllArgsConstructor
-@Getter
-public class FileType extends BaseObject<Integer> {
-    private String code;
-    private String name;
-    private String icon;
-    private String iconLarge;
-}

+ 0 - 46
oss-store/src/main/java/cn/reghao/oss/store/model/po/ImageFile.java

@@ -1,46 +0,0 @@
-package cn.reghao.oss.store.model.po;
-
-import cn.reghao.jutil.jdk.db.BaseObject;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.NoArgsConstructor;
-
-/**
- * 图像文件
- *
- * @author reghao
- * @date 2021-12-08 13:52:01
- */
-@NoArgsConstructor
-@EqualsAndHashCode(callSuper = true)
-@Data
-public class ImageFile extends BaseObject<Integer> {
-    // 原始文件的 objectId
-    private String imageFileId;
-    private String objectId;
-    private String format;
-    private String url;
-    private Integer width;
-    private Integer height;
-    private Boolean horizontal;
-
-    public ImageFile(String imageFileId, String objectId, String format, String url, Integer width, Integer height) {
-        this.imageFileId = imageFileId;
-        this.objectId = objectId;
-        this.format = format;
-        this.url = url;
-        this.width = width;
-        this.height = height;
-        this.horizontal = width > height;
-    }
-
-    public ImageFile(String imageFileId, String objectId, String url, ImageFile imageFile) {
-        this.imageFileId = imageFileId;
-        this.objectId = objectId;
-        this.format = imageFile.getFormat();
-        this.url = url;
-        this.width = imageFile.getWidth();
-        this.height = imageFile.getHeight();
-        this.horizontal = imageFile.getHorizontal();
-    }
-}

+ 0 - 66
oss-store/src/main/java/cn/reghao/oss/store/model/po/VideoFile.java

@@ -1,66 +0,0 @@
-package cn.reghao.oss.store.model.po;
-
-import cn.reghao.jutil.jdk.db.BaseObject;
-import lombok.Getter;
-import lombok.NoArgsConstructor;
-import lombok.Setter;
-
-/**
- * 视频文件
- *
- * @author reghao
- * @date 2021-11-22 10:21:15
- */
-@NoArgsConstructor
-@Setter
-@Getter
-public class VideoFile extends BaseObject<Integer> {
-    // 原始文件的 objectId
-    private String videoFileId;
-    private String objectId;
-    private String videoCodec;
-    private Long vbitRate;
-    private String audioCodec;
-    private Long abitRate;
-    private String urlType;
-    private String url;
-    private String quality;
-    private Integer width;
-    private Integer height;
-    private Boolean horizontal;
-    // 单位秒
-    private Integer duration;
-
-    public VideoFile(String videoFileId, String objectId, String videoCodec, long vbitRate, String audioCodec, long abitRate,
-                     String urlType, String url, String quality, int width, int height, int duration) {
-        this.videoFileId = videoFileId;
-        this.objectId = objectId;
-        this.videoCodec = videoCodec;
-        this.vbitRate = vbitRate;
-        this.audioCodec = audioCodec;
-        this.abitRate = abitRate;
-        this.urlType = urlType;
-        this.url = url;
-        this.quality = quality;
-        this.width = width;
-        this.height = height;
-        this.horizontal = width>height;
-        this.duration = duration;
-    }
-
-    public VideoFile(String videoFileId, String objectId, String url, VideoFile videoFile) {
-        this.videoFileId = videoFileId;
-        this.objectId = objectId;
-        this.videoCodec = videoFile.getVideoCodec();
-        this.vbitRate = videoFile.getVbitRate();
-        this.audioCodec = videoFile.getAudioCodec();
-        this.abitRate = videoFile.getAbitRate();
-        this.urlType = videoFile.getUrlType();
-        this.url = url;
-        this.quality = videoFile.getQuality();
-        this.width = videoFile.getWidth();
-        this.height = videoFile.getHeight();
-        this.horizontal = videoFile.getHorizontal();
-        this.duration = videoFile.getDuration();
-    }
-}

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

@@ -1,31 +0,0 @@
-package cn.reghao.oss.store.rpc;
-
-import cn.reghao.oss.api.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;
-    }
-}

+ 0 - 123
oss-store/src/main/java/cn/reghao/oss/store/rpc/ObjectServiceImpl.java

@@ -1,123 +0,0 @@
-package cn.reghao.oss.store.rpc;
-
-import cn.reghao.jutil.media.ImageOps;
-import cn.reghao.oss.api.dto.*;
-import cn.reghao.oss.store.config.OssProperties;
-import cn.reghao.oss.store.db.repository.ObjectRepository;
-import cn.reghao.oss.store.model.po.FileMeta;
-import cn.reghao.oss.store.service.ObjectNameService;
-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.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;
-
-/**
- * @author reghao
- * @date 2023-05-28 23:26:03
- */
-@DubboService
-@Service
-public class ObjectServiceImpl implements ObjectService {
-    private final FileMetaMapper fileMetaMapper;
-    private final ObjectNameService objectNameService;
-    private final ObjectRepository objectRepository;
-    private final String secretKey;
-
-    public ObjectServiceImpl(FileMetaMapper fileMetaMapper, ObjectNameService objectNameService,
-                             ObjectRepository objectRepository, OssProperties ossProperties) {
-        this.fileMetaMapper = fileMetaMapper;
-        this.objectNameService = objectNameService;
-        this.objectRepository = objectRepository;
-        this.secretKey = ossProperties.getSecretKey();
-    }
-
-    @Override
-    public void putObjectPrefix(ObjectPrefix objectPrefix) {
-        String prefix = objectPrefix.getPrefix();
-        int scope = objectPrefix.getScope();
-        FileMeta fileMeta = fileMetaMapper.findByObjectName(prefix);
-        if (fileMeta != null) {
-            return;
-        }
-        objectNameService.createParentDirs(prefix, scope);
-    }
-
-    @Override
-    public List<String> getObjectPrefix() {
-        return fileMetaMapper.findObjectPrefix();
-    }
-
-    @Override
-    public ObjectMeta getObject(String objectName) {
-        return objectRepository.getObjectMeta(objectName);
-    }
-
-    @Override
-    public DownloadUrl getDownloadUrl(String objectId, int channelId, long userId) {
-        FileMeta fileMeta = objectRepository.getByObjectId(objectId);
-        String objectName = fileMeta.getObjectName();
-        String url = objectNameService.getObjectUrl(objectName);
-        String signedUrl = getSignedUrl(url, userId);
-        return new DownloadUrl(signedUrl, "");
-    }
-
-    private String getSignedUrl(String url, long loginUser) {
-        String secretId = loginUser+"";
-        long timestamp = System.currentTimeMillis() + 3600*1000;
-
-        String action = ChannelAction.download.getName();
-        OssPayload ossPayload = new OssPayload(action, UploadChannel.video.getCode(), loginUser);
-        String token = JwtUtil.createToken(ossPayload, timestamp, secretKey);
-        String nonce = UUID.randomUUID().toString();
-        String queryString = String.format("token=%s&t=%s&nonce=%s", token, timestamp, nonce);
-        String requestString = String.format("%s%s?%s", "GET", url, queryString);
-        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;
-        }
-
-        return null;
-    }
-}

+ 0 - 37
oss-store/src/main/java/cn/reghao/oss/store/rpc/OssServerServiceImpl.java

@@ -1,37 +0,0 @@
-package cn.reghao.oss.store.rpc;
-
-import cn.reghao.oss.store.config.OssProperties;
-import cn.reghao.oss.store.util.JwtUtil;
-import cn.reghao.oss.api.constant.ChannelAction;
-import cn.reghao.oss.api.constant.UploadChannel;
-import cn.reghao.oss.api.dto.OssPayload;
-import cn.reghao.oss.api.dto.ServerInfo;
-import cn.reghao.oss.api.iface.OssServerService;
-import org.apache.dubbo.config.annotation.DubboService;
-import org.springframework.stereotype.Service;
-
-/**
- * @author reghao
- * @date 2023-08-01 14:54:23
- */
-@DubboService
-@Service
-public class OssServerServiceImpl implements OssServerService {
-    private final OssProperties ossProperties;
-
-    public OssServerServiceImpl(OssProperties ossProperties) {
-        this.ossProperties = ossProperties;
-    }
-
-    @Override
-    public ServerInfo getServerInfo(long userId, int channelId) {
-        String action = ChannelAction.upload.getName();
-        long expireAt = System.currentTimeMillis() + 3600*1000;
-        OssPayload ossPayload = new OssPayload(action, channelId, userId);
-        String token = JwtUtil.createToken(ossPayload, expireAt, ossProperties.getSecretKey());
-
-        String ossUrl = String.format("https://%s/", ossProperties.getDomain());
-        long maxSize = UploadChannel.getUploadChannel(channelId).getMaxSize();
-        return new ServerInfo(ossUrl, channelId, maxSize, token);
-    }
-}

+ 0 - 79
oss-store/src/main/java/cn/reghao/oss/store/rpc/PermissionServiceImpl.java

@@ -1,79 +0,0 @@
-package cn.reghao.oss.store.rpc;
-
-import cn.reghao.oss.store.db.mapper.*;
-import cn.reghao.oss.store.model.po.AudioFile;
-import cn.reghao.oss.store.model.po.ImageFile;
-import cn.reghao.oss.store.model.po.VideoFile;
-import cn.reghao.oss.api.constant.ObjectScope;
-import cn.reghao.oss.api.iface.PermissionService;
-import cn.reghao.oss.store.db.mapper.AudioFileMapper;
-import cn.reghao.oss.store.db.mapper.FileMetaMapper;
-import cn.reghao.oss.store.db.mapper.ImageFileMapper;
-import cn.reghao.oss.store.db.mapper.VideoFileMapper;
-import org.apache.dubbo.config.annotation.DubboService;
-import org.springframework.stereotype.Service;
-
-import java.util.List;
-import java.util.Set;
-import java.util.stream.Collectors;
-
-/**
- * @author reghao
- * @date 2023-06-02 10:07:42
- */
-@DubboService
-@Service
-public class PermissionServiceImpl implements PermissionService {
-    private final ImageFileMapper imageFileMapper;
-    private final AudioFileMapper audioFileMapper;
-    private final VideoFileMapper videoFileMapper;
-    private final FileMetaMapper fileMetaMapper;
-
-    public PermissionServiceImpl(ImageFileMapper imageFileMapper, AudioFileMapper audioFileMapper,
-                                 VideoFileMapper videoFileMapper, FileMetaMapper fileMetaMapper) {
-        this.imageFileMapper = imageFileMapper;
-        this.audioFileMapper = audioFileMapper;
-        this.videoFileMapper = videoFileMapper;
-        this.fileMetaMapper = fileMetaMapper;
-    }
-
-    @Override
-    public void setDirPermission(String prefix, int scope) {
-    }
-
-    @Override
-    public void getDirPermission(String prefix) {
-        for (ObjectScope scope : ObjectScope.values()) {
-        }
-    }
-
-    @Override
-    public void setVideoPermission(String videoFileId, int scope) {
-        List<String> objectIds = videoFileMapper.findByVideoFileId(videoFileId).stream()
-                .map(VideoFile::getObjectId)
-                .collect(Collectors.toList());
-        if (!objectIds.isEmpty()) {
-            fileMetaMapper.updateScopeByObjectIds(scope, objectIds);
-        }
-    }
-
-    @Override
-    public void setAudioPermission(String audioFileId, int scope) {
-        List<String> objectIds = audioFileMapper.findByAudioFileId(audioFileId).stream()
-                .map(AudioFile::getObjectId)
-                .collect(Collectors.toList());
-        if (!objectIds.isEmpty()) {
-            fileMetaMapper.updateScopeByObjectIds(scope, objectIds);
-        }
-    }
-
-    @Override
-    public void setImagesPermission(Set<String> imageFileIds, int scope) {
-        List<String> objectIds = imageFileMapper.findByImageFileIds(imageFileIds).stream()
-                .map(ImageFile::getObjectId)
-                .collect(Collectors.toList());
-        if (!objectIds.isEmpty()) {
-            fileMetaMapper.updateScopeByObjectIds(scope, objectIds);
-        }
-    }
-}

+ 0 - 38
oss-store/src/main/java/cn/reghao/oss/store/rpc/SignService.java

@@ -1,38 +0,0 @@
-package cn.reghao.oss.store.rpc;
-
-import cn.reghao.oss.store.config.OssProperties;
-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.dto.OssPayload;
-import org.springframework.stereotype.Service;
-
-import java.util.UUID;
-
-/**
- * url 签名服务
- *
- * @author reghao
- * @date 2023-10-18 14:16:01
- */
-@Service
-public class SignService {
-    private final String secretKey;
-
-    public SignService(OssProperties ossProperties) {
-        this.secretKey = ossProperties.getSecretKey();
-    }
-
-    public String getSignedUrl(long loginUser, String url, int channelId, long expire) {
-        long timestamp = System.currentTimeMillis() + expire*1000;
-        String action = ChannelAction.access.getName();
-        OssPayload ossPayload = new OssPayload(action, channelId, loginUser);
-
-        String token = JwtUtil.createToken(ossPayload, timestamp, secretKey);
-        String nonce = UUID.randomUUID().toString();
-        String queryString = String.format("token=%s&t=%s&nonce=%s", token, timestamp, nonce);
-        String requestString = String.format("%s%s?%s", "GET", url, queryString);
-        String sign = SignatureUtil.sign(requestString, secretKey);
-        return String.format("%s?token=%s&t=%s&nonce=%s&sign=%s", url, token, timestamp, nonce, sign);
-    }
-}

+ 0 - 64
oss-store/src/main/java/cn/reghao/oss/store/rpc/disk/DiskServiceImpl.java

@@ -1,64 +0,0 @@
-package cn.reghao.oss.store.rpc.disk;
-
-import cn.reghao.oss.api.dto.FileInfo;
-import cn.reghao.oss.api.iface.disk.DiskService;
-import cn.reghao.oss.store.db.mapper.FileMetaMapper;
-import cn.reghao.oss.store.service.PutObjectService;
-import cn.reghao.jutil.jdk.db.Page;
-import cn.reghao.jutil.jdk.db.PageList;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.dubbo.config.annotation.DubboService;
-import org.springframework.stereotype.Service;
-
-import java.util.List;
-
-/**
- * @author reghao
- * @date 2023-05-18 20:39:45
- */
-@Slf4j
-@DubboService
-@Service
-public class DiskServiceImpl implements DiskService {
-    private PutObjectService putObjectService;
-    private final FileMetaMapper fileMetaMapper;
-    private final int pageSize = 10;
-
-    public DiskServiceImpl(PutObjectService putObjectService, FileMetaMapper fileMetaMapper) {
-        this.fileMetaMapper = fileMetaMapper;
-        this.putObjectService = putObjectService;
-    }
-
-    @Override
-    public PageList<FileInfo> getFileList(String pid, int pageNumber) {
-        Page page = new Page(pageNumber, pageSize);
-        int total = fileMetaMapper.countByPid(pid);
-        List<FileInfo> list = fileMetaMapper.findFileInfoByPage(page, pid);
-        PageList<FileInfo> pageList = PageList.pageList(pageNumber, pageSize, total, list);
-        return pageList;
-    }
-
-    @Override
-    public PageList<FileInfo> getFileCard(String pid, int pageNumber) {
-        Page page = new Page(pageNumber, pageSize);
-        int total = fileMetaMapper.countByPid(pid);
-        List<FileInfo> list = fileMetaMapper.findFileInfo1ByPage(page, pid);
-        PageList<FileInfo> pageList = PageList.pageList(pageNumber, pageSize, total, list);
-        return pageList;
-    }
-
-    @Override
-    public List<FileInfo> getDirectories(String pid) {
-        List<FileInfo> list = fileMetaMapper.findDirectories(pid);
-        return list;
-    }
-
-    @Override
-    public PageList<FileInfo> search(String keyword, int pageNumber) {
-        Page page = new Page(pageNumber, pageSize);
-        int total = fileMetaMapper.countByKeyword(keyword);
-        List<FileInfo> list = fileMetaMapper.findKeywordByPage(page, keyword);
-        PageList<FileInfo> pageList = PageList.pageList(pageNumber, pageSize, total, list);
-        return pageList;
-    }
-}

+ 0 - 125
oss-store/src/main/java/cn/reghao/oss/store/rpc/disk/FileServiceImpl.java

@@ -1,125 +0,0 @@
-package cn.reghao.oss.store.rpc.disk;
-
-import cn.reghao.oss.api.constant.ObjectScope;
-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.oss.store.config.OssProperties;
-import cn.reghao.oss.store.db.mapper.FileMetaMapper;
-import cn.reghao.oss.store.model.po.FileMeta;
-import cn.reghao.oss.store.service.PutObjectService;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.dubbo.config.annotation.DubboService;
-import org.springframework.stereotype.Service;
-
-import java.nio.charset.StandardCharsets;
-import java.util.List;
-import java.util.UUID;
-
-/**
- * @author reghao
- * @date 2023-05-18 20:39:45
- */
-@Slf4j
-@DubboService
-@Service
-public class FileServiceImpl implements FileService {
-    private final PutObjectService putObjectService;
-    private final FileMetaMapper fileMetaMapper;
-    private final String domain;
-
-    public FileServiceImpl(PutObjectService putObjectService, FileMetaMapper fileMetaMapper, OssProperties ossProperties) {
-        this.fileMetaMapper = fileMetaMapper;
-        this.putObjectService = putObjectService;
-        this.domain = ossProperties.getDomain();
-    }
-
-    @Override
-    public String checkFilename(String pid, String filename) {
-        List<FileMeta> list = fileMetaMapper.findByFilename(pid, filename);
-        if (!list.isEmpty()) {
-            filename += list.size();
-        }
-        return filename;
-    }
-
-    @Override
-    public void createDirectory(String pid, String filename) {
-        String filename1 = checkFilename(pid, filename);
-        String fileId = UUID.randomUUID().toString().replace("-", "");
-        String objectName = String.format("disk/0/1/%s/", fileId);
-        FileMeta fileMeta = new FileMeta(objectName, fileId, filename1, pid, ObjectScope.PRIVATE.getCode());
-        fileMetaMapper.save(fileMeta);
-    }
-
-    @Override
-    public String createFile(String pid, String filename, String content) {
-        String fileId = UUID.randomUUID().toString().replace("-", "");
-        String objectName = "";
-        byte[] bytes = content.getBytes(StandardCharsets.UTF_8);
-        putObjectService.putObject(objectName, bytes);
-        return fileId;
-    }
-
-    @Override
-    public void copyFile(List<String> fileIds, String toPid) {
-        List<FileMeta> list = fileMetaMapper.findFileInfos(fileIds);
-    }
-
-    @Override
-    public void moveFile(List<String> fileIds, String toPid) {
-        List<FileMeta> list = fileMetaMapper.findFileInfos(fileIds);
-        list.forEach(fileInfo -> {
-            fileMetaMapper.updateParent(fileInfo.getObjectId(), toPid);
-        });
-    }
-
-    @Override
-    public void renameFile(String fileId, String newFilename) {
-        FileMeta fileMeta = fileMetaMapper.findByObjectId(fileId);
-        String pid = fileMeta.getPid();
-        String filename1 = checkFilename(pid, newFilename);
-        fileMetaMapper.updateFilename(fileId, filename1);
-    }
-
-    @Override
-    public void deleteFiles(List<String> fileIds) {
-    }
-
-    @Override
-    public FileProp getFileProp(String fileId) {
-        FileMeta fileMeta = fileMetaMapper.findByObjectId(fileId);
-        String pid = fileMeta.getPid();
-        String path = "";
-
-        String filename = fileMeta.getFilename();
-        long size = fileMeta.getSize();
-        String contentType = fileMeta.getContentType();
-        String sha256sum = fileMeta.getSha256sum();
-        String url = String.format("https://%s/%s", domain, fileMeta.getObjectName());
-        return new FileProp(path, filename, size, contentType, sha256sum, url);
-    }
-
-    @Override
-    public DirProp getDirProp(String fileId) {
-        // 当前目录下的文件和子目录
-        List<FileMeta> list = fileMetaMapper.findByPid(fileId);
-        DirProp dirProp = getDirProp(list);
-        return dirProp;
-    }
-
-    private DirProp getDirProp(List<FileMeta> list) {
-        long totalSize = 0;
-        long totalDirs = list.stream().filter(fileInfo -> fileInfo.getFileType() == 1000).count();
-        long totalFiles = list.stream().filter(fileInfo -> fileInfo.getFileType() != 1000).count();
-        for (FileMeta fileMeta : list) {
-            int fileType = fileMeta.getFileType();
-            if (fileType != 1000) {
-                totalSize += fileMeta.getSize();
-            } else {
-                // getDirProp(fileInfo.getFileId());
-            }
-        }
-        return new DirProp(totalDirs, totalFiles, totalSize);
-    }
-}

+ 0 - 40
oss-store/src/main/java/cn/reghao/oss/store/rpc/disk/TrashServiceImpl.java

@@ -1,40 +0,0 @@
-package cn.reghao.oss.store.rpc.disk;
-
-import cn.reghao.oss.api.dto.DeleteFile;
-import cn.reghao.oss.api.iface.disk.TrashService;
-import cn.reghao.oss.store.db.mapper.FileMetaMapper;
-import cn.reghao.oss.store.service.PutObjectService;
-import cn.reghao.jutil.jdk.db.Page;
-import cn.reghao.jutil.jdk.db.PageList;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.dubbo.config.annotation.DubboService;
-import org.springframework.stereotype.Service;
-
-import java.util.List;
-
-/**
- * @author reghao
- * @date 2023-05-18 20:39:45
- */
-@Slf4j
-@DubboService
-@Service
-public class TrashServiceImpl implements TrashService {
-    private PutObjectService putObjectService;
-    private final FileMetaMapper fileMetaMapper;
-    private final int pageSize = 10;
-
-    public TrashServiceImpl(PutObjectService putObjectService, FileMetaMapper fileMetaMapper) {
-        this.fileMetaMapper = fileMetaMapper;
-        this.putObjectService = putObjectService;
-    }
-
-    @Override
-    public PageList<DeleteFile> getTrashList(int pageNumber, int pageSize) {
-        int total = fileMetaMapper.countDeletedFiles();
-        Page page = new Page(pageNumber, pageSize);
-        List<DeleteFile> list = fileMetaMapper.findDeletedFileByPage(page);
-        PageList<DeleteFile> pageList = PageList.pageList(pageNumber, pageSize, total, list);
-        return pageList;
-    }
-}

+ 0 - 46
oss-store/src/main/java/cn/reghao/oss/store/rpc/media/AudioFileServiceImpl.java

@@ -1,46 +0,0 @@
-package cn.reghao.oss.store.rpc.media;
-
-import cn.reghao.oss.api.constant.UploadChannel;
-import cn.reghao.oss.store.db.repository.AudioRepository;
-import cn.reghao.oss.store.rpc.SignService;
-import cn.reghao.oss.api.dto.media.AudioInfo;
-import cn.reghao.oss.api.dto.media.AudioUrl;
-import cn.reghao.oss.api.iface.media.AudioFileService;
-import org.apache.dubbo.config.annotation.DubboService;
-import org.springframework.stereotype.Service;
-
-import java.util.List;
-
-/**
- * @author reghao
- * @date 2023-08-28 15:00:43
- */
-@DubboService
-@Service
-public class AudioFileServiceImpl implements AudioFileService {
-    private final AudioRepository audioRepository;
-    private final SignService signService;
-
-    public AudioFileServiceImpl(AudioRepository audioRepository, SignService signService) {
-        this.audioRepository = audioRepository;
-        this.signService = signService;
-    }
-
-    @Override
-    public AudioInfo getAudioInfo(String audioFileId) {
-        List<AudioInfo> list = audioRepository.getAudioInfo(audioFileId);
-        return list.isEmpty() ? null : list.get(0);
-    }
-
-    @Override
-    public List<AudioUrl> getAudioUrls(String audioFileId, long loginUser) {
-        int channelId = UploadChannel.audio.getCode();
-        List<AudioUrl> audioUrls = audioRepository.getAudioUrls(audioFileId);
-        audioUrls.forEach(audioUrl -> {
-            String url = audioUrl.getUrl();
-            String signedUrl = signService.getSignedUrl(loginUser, url, channelId, 3600);
-            audioUrl.setUrl(signedUrl);
-        });
-        return audioUrls;
-    }
-}

+ 0 - 30
oss-store/src/main/java/cn/reghao/oss/store/rpc/media/ConvertServiceImpl.java

@@ -1,30 +0,0 @@
-package cn.reghao.oss.store.rpc.media;
-
-import cn.reghao.oss.store.task.MediaConverter;
-import cn.reghao.oss.api.iface.media.ConvertService;
-import org.apache.dubbo.config.annotation.DubboService;
-import org.springframework.stereotype.Service;
-
-/**
- * @author reghao
- * @date 2023-10-08 16:54:25
- */
-@DubboService
-@Service
-public class ConvertServiceImpl implements ConvertService {
-    private final MediaConverter mediaConverter;
-
-    public ConvertServiceImpl(MediaConverter mediaConverter) {
-        this.mediaConverter = mediaConverter;
-    }
-
-    @Override
-    public void convertVideo(String videoFileId) {
-        mediaConverter.convertVideo(videoFileId);
-    }
-
-    @Override
-    public void convertAudio(String audioFileId) {
-        mediaConverter.convertAudio(audioFileId);
-    }
-}

+ 0 - 69
oss-store/src/main/java/cn/reghao/oss/store/rpc/media/ImageFileServiceImpl.java

@@ -1,69 +0,0 @@
-package cn.reghao.oss.store.rpc.media;
-
-import cn.reghao.oss.api.constant.UploadChannel;
-import cn.reghao.oss.store.db.repository.ImageRepository;
-import cn.reghao.oss.store.rpc.SignService;
-import cn.reghao.oss.api.dto.media.ImageUrlDto;
-import cn.reghao.oss.api.iface.media.ImageFileService;
-import org.apache.dubbo.config.annotation.DubboService;
-import org.springframework.stereotype.Service;
-
-import java.util.List;
-import java.util.Set;
-
-/**
- * @author reghao
- * @date 2023-08-28 15:00:43
- */
-@DubboService
-@Service
-public class ImageFileServiceImpl implements ImageFileService {
-    private final ImageRepository imageRepository;
-    private final SignService signService;
-
-    public ImageFileServiceImpl(ImageRepository imageRepository, SignService signService) {
-        this.imageRepository = imageRepository;
-        this.signService = signService;
-    }
-
-    @Override
-    public void deleteByImageFileIds(List<String> imageFileIds) {
-        imageRepository.deleteByImageFileIds(imageFileIds);
-    }
-
-    @Override
-    public void deleteByObjectNames(List<String> objectNames) {
-        imageRepository.deleteByObjectNames(objectNames);
-    }
-
-    @Override
-    public ImageUrlDto getImageUrl(int channelId, String imageFileId) {
-        ImageUrlDto imageUrlDto = imageRepository.getImageUrl(channelId, imageFileId);
-        String originalUrl = imageUrlDto.getOriginalUrl();
-        String thumbnailUrl = imageUrlDto.getThumbnailUrl();
-        return imageUrlDto;
-    }
-
-    @Override
-    public ImageUrlDto getImageUrl(String imageFileId, long loginUser, int channelId) {
-        ImageUrlDto imageUrlDto = imageRepository.getImageUrl(channelId, imageFileId);
-        String originalUrl = getSignedUrl(imageUrlDto.getOriginalUrl(), loginUser, channelId);
-        imageUrlDto.setOriginalUrl(originalUrl);
-        String thumbnailUrl = getSignedUrl(imageUrlDto.getThumbnailUrl(), loginUser, channelId);
-        imageUrlDto.setThumbnailUrl(thumbnailUrl);
-        return imageUrlDto;
-    }
-
-    @Override
-    public List<ImageUrlDto> getImageUrls(Set<String> imageFileIds) {
-        int channelId = UploadChannel.photo.getCode();
-        List<ImageUrlDto> list = imageRepository.getImageUrls(channelId, imageFileIds);
-        return list;
-    }
-
-    @Override
-    public String getSignedUrl(String url, long loginUser, int channelId) {
-        String signedUrl = signService.getSignedUrl(loginUser, url, channelId, 600);
-        return signedUrl;
-    }
-}

+ 0 - 112
oss-store/src/main/java/cn/reghao/oss/store/rpc/media/MediaScopeServiceImpl.java

@@ -1,112 +0,0 @@
-package cn.reghao.oss.store.rpc.media;
-
-import cn.reghao.oss.store.db.mapper.AudioFileMapper;
-import cn.reghao.oss.store.db.mapper.ImageFileMapper;
-import cn.reghao.oss.store.db.mapper.VideoFileMapper;
-import cn.reghao.oss.store.db.repository.ObjectRepository;
-import cn.reghao.oss.store.model.po.AudioFile;
-import cn.reghao.oss.store.model.po.ImageFile;
-import cn.reghao.oss.store.model.po.VideoFile;
-import cn.reghao.oss.api.constant.ObjectType;
-import cn.reghao.oss.api.iface.media.MediaScopeService;
-import org.apache.dubbo.config.annotation.DubboService;
-import org.springframework.stereotype.Service;
-
-import java.util.*;
-import java.util.stream.Collectors;
-
-/**
- * @author reghao
- * @date 2023-10-12 15:06:21
- */
-@DubboService
-@Service
-public class MediaScopeServiceImpl implements MediaScopeService {
-    private final ImageFileMapper imageFileMapper;
-    private final AudioFileMapper audioFileMapper;
-    private final VideoFileMapper videoFileMapper;
-    private final ObjectRepository objectRepository;
-
-    public MediaScopeServiceImpl(ImageFileMapper imageFileMapper, AudioFileMapper audioFileMapper,
-                                 VideoFileMapper videoFileMapper, ObjectRepository objectRepository) {
-        this.imageFileMapper = imageFileMapper;
-        this.audioFileMapper = audioFileMapper;
-        this.videoFileMapper = videoFileMapper;
-        this.objectRepository = objectRepository;
-    }
-
-    @Override
-    public void setVideoScope(String videoFileId, int scope) {
-        List<String> objectIds = videoFileMapper.findByVideoFileId(videoFileId).stream()
-                .map(VideoFile::getObjectId)
-                .collect(Collectors.toList());
-        if (!objectIds.isEmpty()) {
-            List<String> objectNames = objectRepository.getObjectNames(objectIds);
-            objectRepository.updateObjectScope1(scope, objectNames);
-        }
-    }
-
-    @Override
-    public void setAudioScope(String audioFileId, int scope) {
-        List<String> objectIds = audioFileMapper.findByAudioFileId(audioFileId).stream()
-                .map(AudioFile::getObjectId)
-                .collect(Collectors.toList());
-        if (!objectIds.isEmpty()) {
-            List<String> objectNames = objectRepository.getObjectNames(objectIds);
-            objectRepository.updateObjectScope1(scope, objectNames);
-        }
-    }
-
-    @Override
-    public void setImagesScope(Set<String> imageFileIds, int scope) {
-        List<String> objectIds = imageFileMapper.findByImageFileIds(imageFileIds).stream()
-                .map(ImageFile::getObjectId)
-                .collect(Collectors.toList());
-        if (!objectIds.isEmpty()) {
-            List<String> objectNames = objectRepository.getObjectNames(objectIds);
-            objectRepository.updateObjectScope1(scope, objectNames);
-        }
-    }
-
-    @Override
-    public void setObjectScope(int scope, String objectId, int contentType) {
-        List<String> objectIds;
-        if (contentType == ObjectType.Image.getCode()) {
-            objectIds = imageFileMapper.findByImageFileId(objectId).stream()
-                    .map(ImageFile::getObjectId)
-                    .collect(Collectors.toList());
-        } else  if (contentType == ObjectType.Video.getCode()) {
-            objectIds = videoFileMapper.findByVideoFileId(objectId).stream()
-                    .map(VideoFile::getObjectId)
-                    .collect(Collectors.toList());
-        } else if (contentType == ObjectType.Audio.getCode()) {
-            objectIds = audioFileMapper.findByAudioFileId(objectId).stream()
-                    .map(AudioFile::getObjectId)
-                    .collect(Collectors.toList());
-        } else if (contentType == ObjectType.Text.getCode()) {
-            objectIds = Collections.emptyList();
-        } else {
-            objectIds = Collections.emptyList();
-        }
-
-        if (!objectIds.isEmpty()) {
-            List<String> objectNames = objectRepository.getObjectNames(objectIds);
-            objectRepository.updateObjectScope1(scope, objectNames);
-        }
-    }
-
-    @Override
-    public void setObjectsScope(int scope, List<String> objectsId, int contentType) {
-        List<String> objectIds = new ArrayList<>();
-        if (contentType == ObjectType.Image.getCode()) {
-            objectIds = imageFileMapper.findByImageFileIds(new HashSet<>(objectsId)).stream()
-                    .map(ImageFile::getObjectId)
-                    .collect(Collectors.toList());
-        }
-
-        if (!objectIds.isEmpty()) {
-            List<String> objectNames = objectRepository.getObjectNames(objectIds);
-            objectRepository.updateObjectScope1(scope, objectNames);
-        }
-    }
-}

+ 0 - 87
oss-store/src/main/java/cn/reghao/oss/store/rpc/media/VideoFileServiceImpl.java

@@ -1,87 +0,0 @@
-package cn.reghao.oss.store.rpc.media;
-
-import cn.reghao.jutil.media.FFmpegWrapper;
-import cn.reghao.jutil.media.model.MediaProps;
-import cn.reghao.oss.api.constant.UploadChannel;
-import cn.reghao.oss.api.dto.ObjectMeta;
-import cn.reghao.oss.store.db.repository.ObjectRepository;
-import cn.reghao.oss.store.db.repository.VideoRepository;
-import cn.reghao.oss.store.model.po.VideoFile;
-import cn.reghao.oss.store.rpc.SignService;
-import cn.reghao.oss.api.dto.media.VideoInfo;
-import cn.reghao.oss.api.dto.media.VideoUrlDto;
-import cn.reghao.oss.api.iface.media.VideoFileService;
-import org.apache.dubbo.config.annotation.DubboService;
-import org.springframework.stereotype.Service;
-
-import java.time.LocalDateTime;
-import java.util.List;
-
-/**
- * @author reghao
- * @date 2023-08-28 15:00:43
- */
-@DubboService
-@Service
-public class VideoFileServiceImpl implements VideoFileService {
-    private final LocalDateTime epoch = LocalDateTime.parse("1970-01-01T08:00");
-    private final VideoRepository videoRepository;
-    private final ObjectRepository objectRepository;
-    private final SignService signService;
-
-    public VideoFileServiceImpl(VideoRepository videoRepository, ObjectRepository objectRepository, SignService signService) {
-        this.videoRepository = videoRepository;
-        this.objectRepository = objectRepository;
-        this.signService = signService;
-    }
-
-    @Override
-    public void deleteVideoFile(String videoFileId) {
-        List<String> objectIds = videoRepository.deleteVideoFile(videoFileId);
-        objectRepository.deleteByObjectIds(objectIds);
-    }
-
-    @Override
-    public VideoInfo getVideoInfo(String videoFileId) {
-        List<VideoInfo> list = videoRepository.getVideoInfos(videoFileId);
-        return list.isEmpty() ? null : list.get(0);
-    }
-
-    public List<VideoFile> getVideoFiles(String videoFileId) {
-        List<VideoFile> list = videoRepository.getVideoFiles(videoFileId);
-        return list;
-    }
-
-    @Override
-    public List<VideoUrlDto> getVideoUrls(String videoFileId, long loginUser) {
-        int channelId = UploadChannel.video.getCode();
-        List<VideoUrlDto> list = videoRepository.findVideoUrls(videoFileId);
-        list.forEach(videoUrlDto -> {
-            String url = videoUrlDto.getUrl();
-            String signedUrl = signService.getSignedUrl(loginUser, url, channelId, 3600);
-            videoUrlDto.setUrl(signedUrl);
-        });
-        return list;
-    }
-
-    @Override
-    public LocalDateTime getCreateTime(String videoFileId) {
-        ObjectMeta objectMeta = objectRepository.getObjectMetaById(videoFileId);
-        if (objectMeta == null) {
-            return null;
-        }
-
-        String absolutePath = objectMeta.getAbsolutePath();
-        MediaProps mediaProps = FFmpegWrapper.getMediaProps(absolutePath);
-        if (mediaProps == null) {
-            return null;
-        }
-
-        LocalDateTime localDateTime = mediaProps.getCreateTime();
-        if (localDateTime != null && !localDateTime.equals(epoch)) {
-            return localDateTime;
-        }
-
-        return null;
-    }
-}

+ 0 - 98
oss-store/src/main/java/cn/reghao/oss/store/task/FileProcessor.java

@@ -1,98 +0,0 @@
-package cn.reghao.oss.store.task;
-
-import cn.reghao.oss.store.db.repository.ImageRepository;
-import cn.reghao.oss.store.model.vo.ObjectResult;
-import cn.reghao.oss.store.task.processor.AudioFileProcessor;
-import cn.reghao.oss.store.task.processor.DiskFileProcessor;
-import cn.reghao.oss.store.task.processor.ImageFileProcessor;
-import cn.reghao.oss.store.task.processor.VideoFileProcessor;
-import cn.reghao.jutil.jdk.thread.ThreadPoolWrapper;
-import cn.reghao.oss.api.constant.ObjectType;
-import cn.reghao.oss.api.constant.UploadChannel;
-import cn.reghao.oss.api.rest.UploadFileRet;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Service;
-
-import java.util.concurrent.ExecutorService;
-
-/**
- * @author reghao
- * @date 2023-05-22 18:11:03
- */
-@Slf4j
-@Service
-public class FileProcessor {
-    private final ExecutorService threadPool = ThreadPoolWrapper.threadPool("file-processor", 10);
-    private final ImageFileProcessor imageFileProcessor;
-    private final VideoFileProcessor videoFileProcessor;
-    private final AudioFileProcessor audioFileProcessor;
-    private final DiskFileProcessor diskFileProcessor;
-    private final ImageRepository imageRepository;
-
-    public FileProcessor(ImageFileProcessor imageFileProcessor, VideoFileProcessor videoFileProcessor,
-                         AudioFileProcessor audioFileProcessor, DiskFileProcessor diskFileProcessor,
-                         ImageRepository imageRepository) {
-        this.imageFileProcessor = imageFileProcessor;
-        this.videoFileProcessor = videoFileProcessor;
-        this.audioFileProcessor = audioFileProcessor;
-        this.diskFileProcessor = diskFileProcessor;
-        this.imageRepository = imageRepository;
-    }
-
-    public UploadFileRet process(ObjectResult objectResult, int channelId) throws Exception {
-        String objectName = objectResult.getObjectName();
-        int fileType = objectResult.getFileType();
-        ObjectType objectType = ObjectType.getByCode(fileType);
-        UploadFileRet uploadFileRet = null;
-
-        UploadChannel channel = UploadChannel.getUploadChannel(channelId);
-        switch (channel) {
-            case disk:
-                uploadFileRet = diskFileProcessor.process(objectResult);
-                //uploadFileRet = processFile(objectResult, channelId);
-                break;
-            case video:
-                uploadFileRet = videoFileProcessor.process(objectResult);
-                break;
-            case audio:
-                uploadFileRet = audioFileProcessor.process(objectResult);
-                break;
-            case avatar:
-            case image:
-            case img:
-                uploadFileRet = imageFileProcessor.processImage(objectResult, channelId);
-                setUrl(channelId, uploadFileRet);
-                break;
-            case photo:
-                uploadFileRet = imageFileProcessor.processImage(objectResult, channelId);
-                break;
-            default:
-                log.info("{} 类型的 {} 文件暂时无法处理", objectType.name(), objectName);
-        }
-        return uploadFileRet;
-    }
-
-    private void setUrl(int channelId, UploadFileRet uploadFileRet) {
-        String uploadId = uploadFileRet.getUploadId();
-        String url = imageRepository.getImageUrl(channelId, uploadId).getOriginalUrl();
-        uploadFileRet.setUrl(url);
-    }
-
-    private UploadFileRet processFile(ObjectResult objectResult, int channelId) throws Exception {
-        int fileType = objectResult.getFileType();
-        UploadFileRet uploadFileRet;
-        if (fileType == ObjectType.Image.getCode()) {
-            uploadFileRet = imageFileProcessor.processImage(objectResult, channelId);
-        } else if (fileType == ObjectType.Video.getCode()) {
-            uploadFileRet = videoFileProcessor.process(objectResult);
-        } else if (fileType == ObjectType.Audio.getCode()) {
-            uploadFileRet = audioFileProcessor.process(objectResult);
-        } else if (fileType == ObjectType.Text.getCode()) {
-            uploadFileRet = diskFileProcessor.process(objectResult);
-        } else {
-            uploadFileRet = diskFileProcessor.process(objectResult);
-        }
-
-        return uploadFileRet;
-    }
-}

+ 0 - 41
oss-store/src/main/java/cn/reghao/oss/store/task/FileTask.java

@@ -1,41 +0,0 @@
-package cn.reghao.oss.store.task;
-
-import cn.reghao.oss.store.db.repository.ObjectRepository;
-import cn.reghao.oss.store.model.vo.ObjectResult;
-import cn.reghao.oss.store.task.processor.AudioFileProcessor;
-import cn.reghao.oss.api.dto.ObjectMeta;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import java.util.List;
-
-/**
- * @author reghao
- * @date 2023-08-29 18:03:39
- */
-@Service
-@Deprecated
-public class FileTask {
-    @Autowired
-    ObjectRepository objectRepository;
-    @Autowired
-    AudioFileProcessor audioFileProcessor;
-
-    public void exec() {
-    }
-
-    private void execTask() throws Exception {
-        List<String> objectNames = List.of(
-                "audio/playback/vJPA6ZGzV2.mp3"
-        );
-
-        for (String objectName : objectNames) {
-            ObjectMeta objectMeta = objectRepository.getObjectMeta(objectName);
-            String objectId = objectMeta.getObjectId();
-            int fileType = 1003;
-            String absolutePath = objectMeta.getAbsolutePath();
-            ObjectResult objectResult = new ObjectResult(objectName, objectId, fileType, absolutePath);
-            audioFileProcessor.process(objectResult);
-        }
-    }
-}

+ 0 - 156
oss-store/src/main/java/cn/reghao/oss/store/task/MediaConverter.java

@@ -1,156 +0,0 @@
-package cn.reghao.oss.store.task;
-
-import cn.reghao.oss.store.db.repository.AudioRepository;
-import cn.reghao.oss.store.db.repository.ObjectRepository;
-import cn.reghao.oss.store.db.repository.VideoRepository;
-import cn.reghao.oss.store.model.po.VideoFile;
-import cn.reghao.oss.store.model.vo.ObjectProp;
-import cn.reghao.oss.store.model.vo.ObjectResult;
-import cn.reghao.oss.store.service.FileStoreService;
-import cn.reghao.oss.store.service.ObjectNameService;
-import cn.reghao.oss.store.service.PutObjectService;
-import cn.reghao.oss.store.util.FileType;
-import cn.reghao.oss.store.util.UserContext;
-import cn.reghao.jutil.jdk.security.DigestUtil;
-import cn.reghao.jutil.jdk.thread.ThreadPoolWrapper;
-import cn.reghao.jutil.media.FFmpegWrapper;
-import cn.reghao.jutil.media.model.AudioProps;
-import cn.reghao.jutil.media.model.MediaProps;
-import cn.reghao.jutil.media.MediaQuality;
-import cn.reghao.jutil.media.MediaResolution;
-import cn.reghao.jutil.media.model.VideoProps;
-import cn.reghao.oss.api.dto.ObjectMeta;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Service;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.List;
-import java.util.UUID;
-import java.util.concurrent.ExecutorService;
-
-/**
- * @author reghao
- * @date 2023-10-08 13:46:28
- */
-@Slf4j
-@Service
-public class MediaConverter {
-    private final ExecutorService threadPool = ThreadPoolWrapper.threadPool("converter-pool", 10);
-    private final ObjectRepository objectRepository;
-    private final VideoRepository videoRepository;
-    private final AudioRepository audioRepository;
-    private final ObjectNameService objectNameService;
-    private final FileStoreService fileStoreService;
-    private final PutObjectService putObjectService;
-
-    public MediaConverter(ObjectRepository objectRepository, VideoRepository videoRepository,
-                          AudioRepository audioRepository, ObjectNameService objectNameService,
-                          FileStoreService fileStoreService, PutObjectService putObjectService) {
-        this.objectRepository = objectRepository;
-        this.videoRepository = videoRepository;
-        this.audioRepository = audioRepository;
-        this.objectNameService = objectNameService;
-        this.fileStoreService = fileStoreService;
-        this.putObjectService = putObjectService;
-    }
-
-    public void convertVideo(String videoFileId) {
-        threadPool.submit(new ConvertVideoTask(videoFileId));
-    }
-
-    public void convertAudio(String audioFileId) {
-        threadPool.submit(new ConvertAudioTask(audioFileId));
-    }
-
-    class ConvertVideoTask implements Runnable {
-        private final String videoFileId;
-
-        public ConvertVideoTask(String videoFileId) {
-            this.videoFileId = videoFileId;
-        }
-
-        public void run() {
-            log.info("convert video file {}", videoFileId);
-            VideoFile videoFile = videoRepository.getOriginalVideoFile(videoFileId);
-            int width = videoFile.getWidth();
-            int height = videoFile.getHeight();
-
-            ObjectMeta objectMeta = objectRepository.getObjectMetaById(videoFileId);
-            UserContext userContext = new UserContext(objectMeta.getUploadBy());
-            String originalObjectName = objectMeta.getObjectName();
-            String srcPath = objectMeta.getAbsolutePath();
-            File srcFile = new File(srcPath);
-
-            String contentId = UUID.randomUUID().toString().replace("-", "");
-            String suffix = ".mp4";
-            String destPath = fileStoreService.genFilePath(contentId, srcFile.length(), suffix);
-            try {
-                File savedFile = new File(destPath);
-                if (savedFile.exists()) {
-                    throw new IOException(destPath + " exist");
-                }
-
-                String format = suffix.replace(".", "");
-                int ret = FFmpegWrapper.formatCovert(srcFile.getAbsolutePath(), destPath, format);
-                if (ret != 0) {
-                    throw new Exception("视频转码失败");
-                }
-                String sha256sum = DigestUtil.sha256sum(destPath);
-
-                ObjectProp objectProp = objectNameService.getObjectProp(originalObjectName, suffix);
-                String originalFilename = "converted_video";
-                ObjectResult objectResult = putObjectService.putObject(objectProp, contentId, savedFile, originalFilename, sha256sum);
-
-                String objectId = objectResult.getObjectId();
-                String url = objectNameService.getObjectUrl(objectResult.getObjectName());
-                String urlType = FileType.getVideoUrlType(destPath);
-
-                MediaProps mediaProps = FFmpegWrapper.getMediaProps(destPath);
-                if (mediaProps == null) {
-                    log.error("{} 的 FFmpeg 媒体信息为 null", destPath);
-                    return;
-                }
-
-                VideoProps videoProps = mediaProps.getVideoProps();
-                if (videoProps == null) {
-                    log.error("{} 的 FFmpeg 视频信息为 null", destPath);
-                    return;
-                }
-
-                String videoCodec = videoProps.getCodecName();
-                long vbitRate = videoProps.getBitRate();
-
-                String audioCodec = null;
-                long abitRate = 0;
-                AudioProps audioProps1 = mediaProps.getAudioProps();
-                if (audioProps1 != null) {
-                    audioCodec = audioProps1.getCodecName();
-                    abitRate = audioProps1.getBitRate();
-                }
-
-                int duration = videoFile.getDuration();
-                MediaResolution mediaResolution = MediaQuality.getQuality(width, height);
-                String quality = mediaResolution.getQualityStr();
-                VideoFile videoFile1 = new VideoFile(videoFileId, objectId, videoCodec, vbitRate, audioCodec, abitRate,
-                        urlType, url, quality, width, height, duration);
-                videoRepository.saveVideoFiles(List.of(videoFile1));
-            } catch (Exception e) {
-                e.printStackTrace();
-            }
-        }
-    }
-
-    class ConvertAudioTask implements Runnable {
-        private final String audioFileId;
-
-        public ConvertAudioTask(String audioFileId) {
-            this.audioFileId = audioFileId;
-        }
-
-        @Override
-        public void run() {
-            log.info("convert audio file {}", audioFileId);
-        }
-    }
-}

+ 0 - 141
oss-store/src/main/java/cn/reghao/oss/store/task/processor/AudioFileProcessor.java

@@ -1,141 +0,0 @@
-package cn.reghao.oss.store.task.processor;
-
-import cn.reghao.oss.store.db.repository.AudioRepository;
-import cn.reghao.oss.store.model.po.AudioFile;
-import cn.reghao.oss.store.model.vo.ObjectProp;
-import cn.reghao.oss.store.model.vo.ObjectResult;
-import cn.reghao.oss.store.service.FileStoreService;
-import cn.reghao.oss.store.service.ObjectNameService;
-import cn.reghao.oss.store.service.PutObjectService;
-import cn.reghao.jutil.jdk.security.DigestUtil;
-import cn.reghao.jutil.media.FFmpegWrapper;
-import cn.reghao.jutil.media.model.AudioProps;
-import cn.reghao.jutil.media.model.MediaProps;
-import cn.reghao.oss.api.constant.SupportedMedia;
-import cn.reghao.oss.api.rest.UploadFileRet;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Service;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.UUID;
-
-/**
- * @author reghao
- * @date 2023-07-05 09:12:17
- */
-@Slf4j
-@Service
-public class AudioFileProcessor {
-    private final AudioRepository audioRepository;
-    private final PutObjectService putObjectService;
-    private final ObjectNameService objectNameService;
-    private final FileStoreService fileStoreService;
-
-    public AudioFileProcessor(AudioRepository audioRepository, PutObjectService putObjectService,
-                              ObjectNameService objectNameService, FileStoreService fileStoreService) {
-        this.audioRepository = audioRepository;
-        this.putObjectService = putObjectService;
-        this.objectNameService = objectNameService;
-        this.fileStoreService = fileStoreService;
-    }
-
-    public UploadFileRet process(ObjectResult objectResult) throws Exception {
-        String objectName = objectResult.getObjectName();
-        String objectId = objectResult.getObjectId();
-        String audioFileId = objectId;
-        String objectUrl = objectNameService.getObjectUrl(objectName);
-        boolean duplicate = objectResult.isDuplicate();
-        if (duplicate) {
-            String dupObjectId = objectResult.getDupObjectId();
-            List<AudioFile> audioFiles = audioRepository.findAudioFiles(dupObjectId);
-            AudioFile audioFile = audioFiles.get(0);
-            AudioFile audioFile1 = new AudioFile(audioFileId, objectId, objectUrl, audioFile);
-            List<AudioFile> list = new ArrayList<>();
-            list.add(audioFile1);
-
-            if (audioFiles.size() > 1) {
-                for (int i = 1; i < audioFiles.size(); i++) {
-                    AudioFile audioFile2 = audioFiles.get(i);
-                    ObjectResult objectResult1 = putObjectService.copyFromObjectId(audioFile2.getObjectId());
-                    String objectId1 = objectResult1.getObjectId();
-                    String objectUrl1 = objectNameService.getObjectUrl(objectResult1.getObjectName());
-                    list.add(new AudioFile(audioFileId, objectId1, objectUrl1, audioFile2));
-                }
-            }
-
-            audioRepository.saveAudioFiles(list);
-            return new UploadFileRet(objectId, null);
-        }
-
-        String absolutePath = objectResult.getAbsolutePath();
-        MediaProps mediaProps = FFmpegWrapper.getMediaProps(absolutePath);
-        if (mediaProps == null || mediaProps.getAudioProps() == null) {
-            String errMsg = String.format("%s 的 FFmpeg 音频信息为 null", objectName);
-            throw new Exception(errMsg);
-        }
-
-        AudioProps audioProps = mediaProps.getAudioProps();
-        String audioCodec = audioProps.getCodecName();
-        int duration = audioProps.getDuration().intValue();
-        long bitRate = audioProps.getBitRate();
-
-        List<AudioFile> list = new ArrayList<>();
-        AudioFile audioFile = new AudioFile(audioFileId, objectId, duration, audioCodec, bitRate, objectUrl);
-        list.add(audioFile);
-
-        if (!SupportedMedia.audioCodecs.contains(audioCodec)) {
-            File file = new File(objectResult.getAbsolutePath());
-            AudioFile audioFile1 = getConvertedAudioFile(audioFileId, file, objectName, ".m4a");
-            if (audioFile1 != null) {
-                list.add(audioFile1);
-            } else {
-                log.error("{} 对象转换为 aac 编码失败", objectName);
-            }
-        }
-
-        audioRepository.saveAudioFiles(list);
-        return new UploadFileRet(audioFileId, null);
-    }
-
-    private AudioFile getConvertedAudioFile(String audioFileId, File file, String originalObjectName, String suffix) {
-        String contentId = UUID.randomUUID().toString().replace("-", "");
-        String destPath = fileStoreService.genFilePath(contentId, file.length(), suffix);
-        try {
-            File savedFile = new File(destPath);
-            if (savedFile.exists()) {
-                throw new IOException(destPath + " exist");
-            }
-
-            int ret = FFmpegWrapper.convertAudio(file.getAbsolutePath(), destPath);
-            if (ret != 0) {
-                throw new Exception("音频转码失败");
-            }
-            String sha256sum = DigestUtil.sha256sum(destPath);
-            MediaProps mediaProps = FFmpegWrapper.getMediaProps(destPath);
-            if (mediaProps == null || mediaProps.getAudioProps() == null) {
-                log.error("转码后的 {} 文件 FFmpeg 音频信息为 null", destPath);
-                throw new Exception("音频编码信息获取失败");
-            }
-
-            AudioProps audioProps = mediaProps.getAudioProps();
-            String audioCodec = audioProps.getCodecName();
-            int duration = audioProps.getDuration().intValue();
-            long bitRate = audioProps.getBitRate();
-
-            ObjectProp objectProp = objectNameService.getObjectProp(originalObjectName, suffix);
-            String originalFilename = "";
-            ObjectResult objectResult = putObjectService.putObject(objectProp, contentId, savedFile, originalFilename, sha256sum);
-            String objectId = objectResult.getObjectId();
-            String url = objectNameService.getObjectUrl(objectResult.getObjectName());
-            String codec = "aac";
-            return new AudioFile(audioFileId, objectId, duration, codec, bitRate, url);
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-
-        return null;
-    }
-}

+ 0 - 26
oss-store/src/main/java/cn/reghao/oss/store/task/processor/DiskFileProcessor.java

@@ -1,26 +0,0 @@
-package cn.reghao.oss.store.task.processor;
-
-import cn.reghao.oss.store.model.vo.ObjectResult;
-import cn.reghao.oss.store.service.ObjectNameService;
-import cn.reghao.oss.api.rest.UploadFileRet;
-import org.springframework.stereotype.Service;
-
-/**
- * @author reghao
- * @date 2023-07-12 15:45:02
- */
-@Service
-public class DiskFileProcessor {
-    private final ObjectNameService objectNameService;
-
-    public DiskFileProcessor(ObjectNameService objectNameService) {
-        this.objectNameService = objectNameService;
-    }
-
-    public UploadFileRet process(ObjectResult objectResult) {
-        String objectName = objectResult.getObjectName();
-        String objectId = objectResult.getObjectId();
-        String objectUrl = objectNameService.getObjectUrl(objectName);
-        return new UploadFileRet(objectId, objectUrl);
-    }
-}

+ 0 - 180
oss-store/src/main/java/cn/reghao/oss/store/task/processor/ImageFileProcessor.java

@@ -1,180 +0,0 @@
-package cn.reghao.oss.store.task.processor;
-
-import cn.reghao.oss.store.db.repository.ImageRepository;
-import cn.reghao.oss.store.model.vo.ObjectProp;
-import cn.reghao.oss.store.model.vo.ObjectResult;
-import cn.reghao.oss.store.service.FileStoreService;
-import cn.reghao.oss.store.service.ObjectNameService;
-import cn.reghao.oss.store.service.PutObjectService;
-import cn.reghao.jutil.jdk.security.DigestUtil;
-import cn.reghao.oss.store.model.po.ImageFile;
-import cn.reghao.jutil.media.ImageOps;
-import cn.reghao.oss.api.constant.SupportedMedia;
-import cn.reghao.oss.api.constant.UploadChannel;
-import cn.reghao.oss.api.rest.UploadFileRet;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Service;
-
-import java.io.*;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.UUID;
-
-/**
- * @author reghao
- * @date 2023-06-11 01:29:47
- */
-@Slf4j
-@Service
-public class ImageFileProcessor {
-    private final ImageRepository imageRepository;
-    private final FileStoreService fileStoreService;
-    private final ObjectNameService objectNameService;
-    private final PutObjectService putObjectService;
-
-    public ImageFileProcessor(ImageRepository imageRepository, FileStoreService fileStoreService,
-                              ObjectNameService objectNameService, PutObjectService putObjectService) {
-        this.imageRepository = imageRepository;
-        this.fileStoreService = fileStoreService;
-        this.objectNameService = objectNameService;
-        this.putObjectService = putObjectService;
-    }
-
-    public UploadFileRet processImage(ObjectResult objectResult, int channelId) throws Exception {
-        String objectName = objectResult.getObjectName();
-        String objectId = objectResult.getObjectId();
-        String imageFileId = objectId;
-        String objectUrl = objectNameService.getObjectUrl(objectName);
-        boolean duplicate = objectResult.isDuplicate();
-        if (duplicate) {
-            return processDuplicate(objectResult,channelId);
-        }
-
-        String absolutePath = objectResult.getAbsolutePath();
-        File file = new File(absolutePath);
-        String format = ImageOps.getFormat(file);
-        if (!SupportedMedia.imageFormats.contains(format)) {
-            // 在 ChannelValidateService#validateImage 中已做过判断, 理论上不会执行这行代码
-            log.error("不支持 {} 图片格式", format);
-            return null;
-        }
-
-        ImageOps.Size size = ImageOps.info(new File(absolutePath));
-        int width = size.getWidth();
-        int height = size.getHeight();
-        List<ImageFile> list = new ArrayList<>();
-        list.add(new ImageFile(imageFileId, objectId, format, objectUrl, width, height));
-        if (channelId == UploadChannel.photo.getCode() || channelId == UploadChannel.disk.getCode()) {
-            ImageFile imageFile = getConvertedImageFile(objectResult, "webp", width, height);
-            list.add(imageFile);
-        }
-
-        imageRepository.saveImageFiles(list);
-        return new UploadFileRet(objectId, null);
-    }
-
-    private UploadFileRet processDuplicate(ObjectResult objectResult, int channelId) throws Exception {
-        String objectName = objectResult.getObjectName();
-        String objectId = objectResult.getObjectId();
-        String imageFileId = objectId;
-        String objectUrl = objectNameService.getObjectUrl(objectName);
-        String dupObjectId = objectResult.getDupObjectId();
-        List<ImageFile> imageFiles = imageRepository.findImageFiles(dupObjectId);
-        ImageFile imageFile = imageFiles.get(0);
-        ImageFile imageFile1 = new ImageFile(imageFileId, objectId, objectUrl, imageFile);
-        List<ImageFile> list = new ArrayList<>();
-        list.add(imageFile1);
-
-        if (channelId == UploadChannel.photo.getCode() || channelId == UploadChannel.disk.getCode()) {
-            if (imageFiles.size() > 1) {
-                for (int i = 1; i < imageFiles.size(); i++) {
-                    ImageFile imageFile2 = imageFiles.get(i);
-                    ObjectResult objectResult1 = putObjectService.copyFromObjectId(imageFile2.getObjectId());
-                    String objectId1 = objectResult1.getObjectId();
-                    String objectUrl1 = objectNameService.getObjectUrl(objectResult1.getObjectName());
-                    list.add(new ImageFile(imageFileId, objectId1, objectUrl1, imageFile2));
-                }
-            } else {
-                int width = imageFile.getWidth();
-                int height = imageFile.getHeight();
-                ImageFile imageFile2 = getConvertedImageFile(objectResult, "webp", width, height);
-                list.add(imageFile2);
-            }
-        }
-
-        imageRepository.saveImageFiles(list);
-        return new UploadFileRet(objectId, null);
-    }
-
-    private ImageFile getConvertedImageFile(ObjectResult objectResult, String format, int width, int height) throws Exception {
-        String imageFileId = objectResult.getObjectId();
-        String originalObjectName = objectResult.getObjectName();
-        String absolutePath = objectResult.getAbsolutePath();
-        File srcFile = new File(absolutePath);
-        String contentId = UUID.randomUUID().toString().replace("-", "");
-        String destPath = fileStoreService.genFilePath(contentId, srcFile.length(), "."+format);
-        File destFile = new File(destPath);
-
-        String srcFormat = ImageOps.getFormat(srcFile);
-        if (srcFormat.equals("png")) {
-            if ("jpeg".equals(format) || "webp".equals(format)) {
-                ImageOps.convertPng(srcFile, destFile, format);
-            } else {
-                ImageOps.convert2thumbnail(srcFile, destFile, width, height);
-            }
-        } else {
-            if ("jpeg".equals(format)) {
-                ImageOps.convert2jpeg(srcFile, destFile);
-            } else if ("webp".equals(format)) {
-                ImageOps.convert2webp(srcFile, destFile);
-            } else {
-                ImageOps.convert2thumbnail(srcFile, destFile, width, height);
-            }
-        }
-
-        if (destFile.exists()) {
-            ObjectResult objectResult1 = saveImage(originalObjectName, contentId, "."+format, destFile);
-            String objectName1 = objectResult1.getObjectName();
-            String objectId1 = objectResult1.getObjectId();
-            String objectUrl1 = objectNameService.getObjectUrl(objectName1);
-            return new ImageFile(imageFileId, objectId1, format, objectUrl1, width, height);
-        } else {
-            throw new Exception("image conversion failed");
-        }
-    }
-
-    private ImageFile getThumbnailFile(ObjectResult objectResult, int width, int height) {
-        String imageFileId = objectResult.getObjectId();
-        String originalObjectName = objectResult.getObjectName();
-        String absolutePath = objectResult.getAbsolutePath();
-        File srcFile = new File(absolutePath);
-
-        //int width = 480;
-        //int height = 360;
-        String format = "jpeg";
-        String contentId = UUID.randomUUID().toString().replace("-", "");
-        String destPath = fileStoreService.genFilePath(contentId, srcFile.length(), "."+format);
-        File destFile = new File(destPath);
-        try {
-            ImageOps.convert2thumbnail(srcFile, destFile, width, height);
-            if (destFile.exists()) {
-                ObjectResult objectResult1 = saveImage(originalObjectName, contentId, "."+format, destFile);
-                String objectName1 = objectResult1.getObjectName();
-                String objectId1 = objectResult1.getObjectId();
-                String objectUrl1 = objectNameService.getObjectUrl(objectName1);
-                return new ImageFile(imageFileId, objectId1, format, objectUrl1, width, height);
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-
-        return null;
-    }
-
-    private ObjectResult saveImage(String originalObjectName, String contentId, String suffix, File savedFile)
-            throws Exception {
-        ObjectProp objectProp = objectNameService.getObjectProp(originalObjectName, suffix);
-        String sha256sum = DigestUtil.sha256sum(savedFile.getAbsolutePath());
-        return putObjectService.putObject(objectProp, contentId, savedFile, "", sha256sum);
-    }
-}

+ 0 - 113
oss-store/src/main/java/cn/reghao/oss/store/task/processor/VideoFileProcessor.java

@@ -1,113 +0,0 @@
-package cn.reghao.oss.store.task.processor;
-
-import cn.reghao.oss.store.db.repository.VideoRepository;
-import cn.reghao.oss.store.service.PutObjectService;
-import cn.reghao.jutil.media.model.AudioProps;
-import cn.reghao.jutil.media.model.MediaProps;
-import cn.reghao.jutil.media.model.VideoProps;
-import cn.reghao.oss.store.model.vo.ObjectResult;
-import cn.reghao.oss.store.util.FileType;
-import cn.reghao.oss.store.service.ObjectNameService;
-import cn.reghao.oss.store.model.po.VideoFile;
-import cn.reghao.jutil.media.FFmpegWrapper;
-import cn.reghao.jutil.media.MediaQuality;
-import cn.reghao.jutil.media.MediaResolution;
-import cn.reghao.oss.api.rest.UploadFileRet;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Service;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * @author reghao
- * @date 2023-01-11 10:40:17
- */
-@Slf4j
-@Service
-public class VideoFileProcessor {
-    private final VideoRepository videoRepository;
-    private final ObjectNameService objectNameService;
-    private final PutObjectService putObjectService;
-
-    public VideoFileProcessor(VideoRepository videoRepository, ObjectNameService objectNameService,
-                              PutObjectService putObjectService) {
-        this.videoRepository = videoRepository;
-        this.objectNameService = objectNameService;
-        this.putObjectService = putObjectService;
-    }
-
-    public UploadFileRet process(ObjectResult objectResult) throws Exception {
-        String objectName = objectResult.getObjectName();
-        String objectId = objectResult.getObjectId();
-        String videoFileId = objectId;
-        String objectUrl = objectNameService.getObjectUrl(objectName);
-        boolean duplicate = objectResult.isDuplicate();
-        if (duplicate) {
-            String dupObjectId = objectResult.getDupObjectId();
-            List<VideoFile> videoFiles = videoRepository.getVideoFiles(dupObjectId);
-            VideoFile videoFile = videoFiles.get(0);
-            VideoFile videoFile1 = new VideoFile(videoFileId, objectId, objectUrl, videoFile);
-            List<VideoFile> list = new ArrayList<>();
-            list.add(videoFile1);
-
-            if (videoFiles.size() > 1) {
-                for (int i = 1; i < videoFiles.size(); i++) {
-                    VideoFile videoFile2 = videoFiles.get(i);
-                    ObjectResult objectResult1 = putObjectService.copyFromObjectId(videoFile2.getObjectId());
-                    String objectId1 = objectResult1.getObjectId();
-                    String objectUrl1 = objectNameService.getObjectUrl(objectResult1.getObjectName());
-                    list.add(new VideoFile(videoFileId, objectId1, objectUrl1, videoFile2));
-                }
-            }
-
-            videoRepository.saveVideoFiles(list);
-            return new UploadFileRet(videoFileId, null);
-        }
-
-        String absolutePath = objectResult.getAbsolutePath();
-        MediaProps mediaProps = FFmpegWrapper.getMediaProps(absolutePath);
-        if (mediaProps == null) {
-            String errMsg = String.format("%s 的 FFmpeg 媒体信息为 null", objectName);
-            throw new Exception(errMsg);
-        }
-
-        VideoProps videoProps = mediaProps.getVideoProps();
-        if (videoProps == null) {
-            String errMsg = String.format("%s 的 FFmpeg 视频信息为 null", objectName);
-            throw new Exception(errMsg);
-        }
-
-        String videoCodec = videoProps.getCodecName();
-        long vbitRate = videoProps.getBitRate();
-
-        String audioCodec = null;
-        long abitRate = 0;
-        AudioProps audioProps1 = mediaProps.getAudioProps();
-        if (audioProps1 != null) {
-            audioCodec = audioProps1.getCodecName();
-            abitRate = audioProps1.getBitRate();
-        }
-
-        /*if (videoCodecs.contains(videoCodec)) {
-            AudioProps audioProps = mediaProps.getAudioProps();
-            if (audioProps != null && !audioCodecs.contains(audioProps.getCodecName())) {
-                log.error("{} 对象的音频非 aac&mp3 编码, 暂不处理", objectName);
-                return null;
-            }
-        } else {
-            log.error("{} 对象的视频非 h264 编码, 暂不处理", objectName);
-            return null;
-        }*/
-        int width = videoProps.getCodedWidth().intValue();
-        int height = videoProps.getCodedHeight().intValue();
-        int duration = videoProps.getDuration().intValue();
-        MediaResolution mediaResolution = MediaQuality.getQuality(width, height);
-        String quality = mediaResolution.getQualityStr();
-        String urlType = FileType.getVideoUrlType(absolutePath);
-        VideoFile videoFile = new VideoFile(videoFileId, objectId, videoCodec, vbitRate, audioCodec, abitRate,
-                urlType, objectUrl, quality, width, height, duration);
-        videoRepository.saveVideoFiles(List.of(videoFile));
-        return new UploadFileRet(videoFileId, null);
-    }
-}

+ 0 - 34
oss-store/src/main/java/cn/reghao/oss/store/util/JwtUtil.java

@@ -1,34 +0,0 @@
-package cn.reghao.oss.store.util;
-
-import cn.reghao.oss.api.dto.OssPayload;
-import io.jsonwebtoken.Claims;
-import io.jsonwebtoken.Jwts;
-import io.jsonwebtoken.SignatureAlgorithm;
-
-import java.util.Date;
-
-/**
- * JWT 令牌
- *
- * @author reghao
- * @date 2023-08-23 09:10:58
- */
-public class JwtUtil {
-    public static String createToken(OssPayload ossPayload, long expireAt, String signKey) {
-        return Jwts.builder()
-                .claim("action", ossPayload.getAction())
-                .claim("channelId", ossPayload.getChannelId())
-                .setSubject(String.valueOf(ossPayload.getUserId()))
-                .setExpiration(new Date(expireAt))
-                .signWith(SignatureAlgorithm.HS256, signKey)
-                .compact();
-    }
-
-    public static OssPayload getOssPayload(String token, String signKey) {
-        Claims claims = Jwts.parser().setSigningKey(signKey).parseClaimsJws(token).getBody();
-        String action = (String) claims.get("action");
-        int channelId = (Integer) claims.get("channelId");
-        String userIdStr = claims.getSubject();
-        return new OssPayload(action, channelId, Long.parseLong(userIdStr));
-    }
-}

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

@@ -1,22 +0,0 @@
-package cn.reghao.oss.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();
-    }
-}

+ 0 - 37
oss-store/src/main/resources/mapper/AudioFileMapper.xml

@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-
-<mapper namespace="cn.reghao.oss.store.db.mapper.AudioFileMapper">
-    <insert id="save" useGeneratedKeys="true" keyProperty="id">
-        insert into audio_file
-        (`audio_file_id`,`object_id`,`duration`,`codec`,`bit_rate`,`url`)
-        values
-        (#{audioFileId},#{objectId},#{duration},#{codec},#{bitRate},#{url})
-    </insert>
-    <insert id="saveAll" useGeneratedKeys="true" keyProperty="id">
-        insert into audio_file
-        (`audio_file_id`,`object_id`,`duration`,`codec`,`bit_rate`,`url`)
-        values
-        <foreach collection="list" item="item" index="index" separator=",">
-            (#{item.audioFileId},#{item.objectId},#{item.duration},#{item.codec},#{item.bitRate},#{item.url})
-        </foreach>
-    </insert>
-
-    <select id="findByAudioFileId" resultType="cn.reghao.oss.store.model.po.AudioFile">
-        select *
-        from audio_file
-        where audio_file_id=#{audioFileId}
-    </select>
-    <select id="findAudioInfo" resultType="cn.reghao.oss.api.dto.media.AudioInfo">
-        select audio_file_id,duration,codec,url
-        from audio_file
-        where audio_file_id=#{audioFileId}
-        order by id desc
-    </select>
-    <select id="findAudioUrl" resultType="cn.reghao.oss.api.dto.media.AudioUrl">
-        select audio_file_id,bit_rate,codec,url
-        from audio_file
-        where audio_file_id=#{audioFileId}
-        order by id desc
-    </select>
-</mapper>

+ 0 - 15
oss-store/src/main/resources/mapper/FileTypeMapper.xml

@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-
-<mapper namespace="cn.reghao.oss.store.db.mapper.FileTypeMapper">
-    <insert id="save" useGeneratedKeys="true" keyProperty="id">
-        insert into file_type
-        (`id`,`code`,`name`,`icon`,`icon_large`)
-        values
-        (#{id},#{code},#{name},#{icon},#{iconLarge})
-    </insert>
-
-    <select id="findAll" resultType="cn.reghao.oss.store.model.po.FileType">
-        select * from file_type
-    </select>
-</mapper>

+ 0 - 52
oss-store/src/main/resources/mapper/ImageFileMapper.xml

@@ -1,52 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-
-<mapper namespace="cn.reghao.oss.store.db.mapper.ImageFileMapper">
-    <insert id="save" useGeneratedKeys="true" keyProperty="id">
-        insert into image_file
-        (`image_file_id`,`object_id`,`format`,`url`,`width`,`height`,`horizontal`)
-        values 
-        (#{imageFileId},#{objectId},#{format},#{url},#{width},#{height},#{horizontal})
-    </insert>
-    <insert id="saveAll" useGeneratedKeys="true" keyProperty="id">
-        insert into image_file
-        (`image_file_id`,`object_id`,`format`,`url`,`width`,`height`,`horizontal`)
-        values
-        <foreach collection="list" item="item" index="index" separator=",">
-            (#{item.imageFileId},#{item.objectId},#{item.format},#{item.url},#{item.width},#{item.height},#{item.horizontal})
-        </foreach>
-    </insert>
-
-    <delete id="deleteByImageFileId">
-        delete from image_file
-        where image_file_id=#{imageFileId}
-    </delete>
-    <delete id="deleteByImageFileIds">
-        delete from image_file
-        where image_file_id in
-        <foreach collection="list" item="id" index="index" open="(" close=")" separator=",">
-            #{id}
-        </foreach>
-    </delete>
-
-    <select id="findAll" resultType="cn.reghao.oss.store.model.po.ImageFile">
-        select * from image_file
-    </select>
-    <select id="findByImageFileId" resultType="cn.reghao.oss.store.model.po.ImageFile">
-        select *
-        from image_file
-        where image_file_id=#{imageFileId}
-    </select>
-    <select id="findByImageFileIds" resultType="cn.reghao.oss.store.model.po.ImageFile">
-        select *
-        from image_file
-        where image_file_id in
-        <foreach collection="collection" item="item" separator="," open="(" close=")">
-            #{item}
-        </foreach>
-    </select>
-    <select id="findAll1" resultType="cn.reghao.oss.store.model.vo.ImageObject">
-        select image_file_id
-        from image_file
-    </select>
-</mapper>

+ 0 - 42
oss-store/src/main/resources/mapper/VideoFileMapper.xml

@@ -1,42 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-
-<mapper namespace="cn.reghao.oss.store.db.mapper.VideoFileMapper">
-    <insert id="save" useGeneratedKeys="true" keyProperty="id">
-        insert into video_file
-        (`video_file_id`,`object_id`,`video_codec`,`vbit_rate`,`audio_codec`,`abit_rate`,`url_type`,`url`,`quality`,`width`,`height`,`horizontal`,`duration`)
-        values 
-        (#{videoFileId},#{objectId},#{videoCodec},#{vbitRate},#{audioCodec},#{abitRate},#{urlType},#{url},#{quality},#{width},#{height},#{horizontal},#{duration})
-    </insert>
-    <insert id="saveAll" useGeneratedKeys="true" keyProperty="id">
-        insert into video_file
-        (`video_file_id`,`object_id`,`video_codec`,`vbit_rate`,`audio_codec`,`abit_rate`,`url_type`,`url`,`quality`,`width`,`height`,`horizontal`,`duration`)
-        values
-        <foreach collection="list" item="item" index="index" separator=",">
-            (#{item.videoFileId},#{item.objectId},#{item.videoCodec},#{item.vbitRate},#{item.audioCodec},#{item.abitRate},#{item.urlType},#{item.url},#{item.quality},#{item.width},#{item.height},#{item.horizontal},#{item.duration})
-        </foreach>
-    </insert>
-
-    <delete id="deleteByVideoFileId">
-        delete from video_file
-        where video_file_id=#{videoFileId}
-    </delete>
-
-    <select id="findAll" resultType="cn.reghao.oss.store.model.po.VideoFile">
-        select * from video_file
-    </select>
-    <select id="findVideoInfo" resultType="cn.reghao.oss.api.dto.media.VideoInfo">
-        select video_file_id,duration,horizontal,quality,video_codec,audio_codec,url_type,url
-        from video_file
-        where video_file_id=#{videoFileId}
-    </select>
-    <select id="findByVideoFileId" resultType="cn.reghao.oss.store.model.po.VideoFile">
-        select * from video_file
-        where video_file_id=#{videoFileId}
-    </select>
-    <select id="findVideoUrls" resultType="cn.reghao.oss.api.dto.media.VideoUrlDto">
-        select url_type as type,url,width,height,quality
-        from video_file
-        where video_file_id=#{videoFileId}
-    </select>
-</mapper>

+ 0 - 123
oss-store/src/test/java/LocalFileTest.java

@@ -1,123 +0,0 @@
-import cn.reghao.oss.store.util.FileType;
-import cn.reghao.jutil.media.FFmpegWrapper;
-import cn.reghao.jutil.media.MediaQuality;
-import cn.reghao.jutil.media.MediaResolution;
-import cn.reghao.jutil.media.model.AudioProps;
-import cn.reghao.jutil.media.model.MediaProps;
-import cn.reghao.jutil.media.model.VideoProps;
-import cn.reghao.jutil.jdk.security.DigestUtil;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.io.FileUtils;
-import org.junit.Test;
-
-import java.io.File;
-import java.io.IOException;
-import java.nio.file.FileVisitResult;
-import java.nio.file.FileVisitor;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.attribute.BasicFileAttributes;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * @author reghao
- * @date 2023-03-22 16:19:12
- */
-@Slf4j
-public class LocalFileTest {
-    public void walkDir(Path path) throws IOException {
-        Files.walkFileTree(path, new FileVisitor<>() {
-            @Override
-            public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException {
-                return FileVisitResult.CONTINUE;
-            }
-
-            @Override
-            public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
-                String absolutePath = file.toString();
-                process(absolutePath);
-                return FileVisitResult.CONTINUE;
-            }
-
-            @Override
-            public FileVisitResult visitFileFailed(Path file, IOException exc) throws IOException {
-                return FileVisitResult.CONTINUE;
-            }
-
-            @Override
-            public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException {
-                return FileVisitResult.CONTINUE;
-            }
-        });
-    }
-
-    private void process(String absolutePath) {
-        String mediaType = FileType.getMediaType(absolutePath);
-        if (mediaType.startsWith("text")) {
-            FileUtils.deleteQuietly(new File(absolutePath));
-        }
-    }
-
-    private void getMediaInfo(String absolutePath) {
-        MediaProps mediaProps = FFmpegWrapper.getMediaProps(absolutePath);
-        if (mediaProps == null) {
-            log.error("{} 没有媒体信息", absolutePath);
-            return;
-        }
-
-        AudioProps audioProps = mediaProps.getAudioProps();
-        if (audioProps == null) {
-            log.error("{} 没有音频信息", absolutePath);
-            return;
-        }
-
-        VideoProps videoProps = mediaProps.getVideoProps();
-        if (videoProps == null) {
-            log.error("{} 没有视频信息", absolutePath);
-            return;
-        }
-
-        String audioCodec = audioProps.getCodecName();
-        String videoCodec = videoProps.getCodecName();
-        int width = videoProps.getCodedWidth().intValue();
-        int height = videoProps.getCodedHeight().intValue();
-        if ("aac".equals(audioCodec) && "h264".equals(videoCodec)) {
-            MediaResolution mediaResolution = MediaQuality.getQuality(width, height);
-        } else {
-            log.error("{} 不是 aac&h264", absolutePath);
-        }
-    }
-
-    Map<String, String> map = new HashMap<>();
-    List<String> list = new ArrayList<>();
-    private void unique(String absolutePath) {
-        try {
-            String sha256sum = DigestUtil.sha256sum(absolutePath);
-            String filePath = map.get(sha256sum);
-            if (filePath == null) {
-                map.put(sha256sum, filePath);
-            } else {
-                log.info("{} 已存在", filePath);
-                list.add(filePath);
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-    @Test
-    public void test22() throws IOException {
-        String baseDir = "";
-        Path path = Path.of(baseDir);
-        walkDir(path);
-
-        /*String filePath = "";
-        String filePath1 = "";
-        String mediaType = FileType.getMediaType(filePath);
-        MediaProps mediaProps = FFmpegWrapper.getMediaProps(filePath);
-        FFmpegWrapper.convertAudio(filePath, filePath1);*/
-    }
-}