Selaa lähdekoodia

1.将 userId 修改为 int 类型
2.不使用 FileMeta 中的 diskfile
3.更新 oss-web 中 UploadChannel 的相关接口
4.oss-store 中 ObjectGetController 返回 403 时携带 payload

reghao 2 vuotta sitten
vanhempi
commit
e12e8fb41a
37 muutettua tiedostoa jossa 112 lisäystä ja 89 poistoa
  1. 4 0
      oss-api/src/main/java/cn/reghao/oss/api/constant/ObjectType.java
  2. 1 1
      oss-api/src/main/java/cn/reghao/oss/api/dto/ObjectMeta.java
  3. 1 1
      oss-api/src/main/java/cn/reghao/oss/api/dto/OssPayload.java
  4. 1 1
      oss-api/src/main/java/cn/reghao/oss/api/iface/ObjectService.java
  5. 2 3
      oss-api/src/main/java/cn/reghao/oss/api/iface/OssServerService.java
  6. 1 1
      oss-api/src/main/java/cn/reghao/oss/api/iface/media/AudioFileService.java
  7. 1 1
      oss-api/src/main/java/cn/reghao/oss/api/iface/media/VideoFileService.java
  8. 9 9
      oss-sdk/src/main/java/cn/reghao/oss/sdk/OssConsoleClient.java
  9. 1 1
      oss-sdk/src/main/java/cn/reghao/oss/sdk/OssStoreClient.java
  10. 11 6
      oss-store/src/main/java/cn/reghao/oss/store/controller/ObjectGetController.java
  11. 1 1
      oss-store/src/main/java/cn/reghao/oss/store/controller/ObjectUploadController.java
  12. 1 1
      oss-store/src/main/java/cn/reghao/oss/store/inerceptor/TokenFilter.java
  13. 2 4
      oss-store/src/main/java/cn/reghao/oss/store/model/po/FileMeta.java
  14. 2 2
      oss-store/src/main/java/cn/reghao/oss/store/rpc/ObjectServiceImpl.java
  15. 2 3
      oss-store/src/main/java/cn/reghao/oss/store/rpc/OssServerServiceImpl.java
  16. 1 1
      oss-store/src/main/java/cn/reghao/oss/store/rpc/SignService.java
  17. 1 1
      oss-store/src/main/java/cn/reghao/oss/store/rpc/media/AudioFileServiceImpl.java
  18. 1 1
      oss-store/src/main/java/cn/reghao/oss/store/rpc/media/ImageFileServiceImpl.java
  19. 1 1
      oss-store/src/main/java/cn/reghao/oss/store/rpc/media/VideoFileServiceImpl.java
  20. 1 1
      oss-store/src/main/java/cn/reghao/oss/store/service/ChannelValidateService.java
  21. 12 0
      oss-store/src/main/java/cn/reghao/oss/store/service/GetObjectService.java
  22. 3 1
      oss-store/src/main/java/cn/reghao/oss/store/service/ObjectChannelService.java
  23. 0 1
      oss-store/src/main/java/cn/reghao/oss/store/service/PutObjectService.java
  24. 21 19
      oss-store/src/main/java/cn/reghao/oss/store/task/FileProcessor.java
  25. 1 1
      oss-store/src/main/java/cn/reghao/oss/store/util/JwtUtil.java
  26. 3 3
      oss-store/src/main/java/cn/reghao/oss/store/util/UserContext.java
  27. 4 4
      oss-store/src/main/resources/mapper/FileMetaMapper.xml
  28. 1 1
      oss-web/src/main/java/cn/reghao/oss/web/app/controller/ImageFileController.java
  29. 8 5
      oss-web/src/main/java/cn/reghao/oss/web/app/controller/OssController.java
  30. 1 1
      oss-web/src/main/java/cn/reghao/oss/web/app/controller/VideoFileController.java
  31. 1 1
      oss-web/src/main/java/cn/reghao/oss/web/app/db/repository/UploadChannelRepository.java
  32. 5 5
      oss-web/src/main/java/cn/reghao/oss/web/app/service/OssService.java
  33. 3 3
      oss-web/src/main/java/cn/reghao/oss/web/app/service/UserKeyService.java
  34. 1 1
      oss-web/src/main/java/cn/reghao/oss/web/app/service/media/AudioService.java
  35. 1 1
      oss-web/src/main/java/cn/reghao/oss/web/app/service/media/ImageService.java
  36. 1 1
      oss-web/src/main/java/cn/reghao/oss/web/app/service/media/VideoService.java
  37. 1 1
      oss-web/src/main/java/cn/reghao/oss/web/util/JwtUtil.java

+ 4 - 0
oss-api/src/main/java/cn/reghao/oss/api/constant/ObjectType.java

@@ -55,6 +55,10 @@ public enum ObjectType {
         return code;
     }
 
+    public String getDesc() {
+        return desc;
+    }
+
     public static String getDescByCode(int code) {
         return descMap.get(code);
     }

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

@@ -21,5 +21,5 @@ public class ObjectMeta implements Serializable {
     private long size;
     private String contentType;
     private int scope;
-    private long uploadBy;
+    private int uploadBy;
 }

+ 1 - 1
oss-api/src/main/java/cn/reghao/oss/api/dto/OssPayload.java

@@ -16,5 +16,5 @@ public class OssPayload implements Serializable {
 
     private String action;
     private int channelId;
-    private Long userId;
+    private int userId;
 }

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

@@ -12,7 +12,7 @@ public interface ObjectService {
     void putObjectPrefix(ObjectPrefix objectPrefix);
     List<String> getObjectPrefix();
     ObjectMeta getObject(String objectName);
-    DownloadUrl getDownloadUrl(String objectId, int channelId, long userId);
+    DownloadUrl getDownloadUrl(String objectId, int channelId, int userId);
     ObjectInfo getObjectInfo(String objectId);
     ObjectUrl getObjectUrl(String objectId);
 }

+ 2 - 3
oss-api/src/main/java/cn/reghao/oss/api/iface/OssServerService.java

@@ -6,8 +6,7 @@ import cn.reghao.oss.api.dto.ObjectChannel;
  * @author reghao
  * @date 2023-08-01 14:51:50
  */
-@Deprecated
 public interface OssServerService {
-    String getUploadToken(int channelId);
-    void createChannel(long userId, ObjectChannel channel);
+    String getUploadToken(int userId, int channelId);
+    void createChannel(int userId, ObjectChannel channel);
 }

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

@@ -11,5 +11,5 @@ import java.util.List;
  */
 public interface AudioFileService {
     AudioInfo getAudioInfo(String audioFileId);
-    List<AudioUrl> getAudioUrls(String audioFileId, long loginUser);
+    List<AudioUrl> getAudioUrls(String audioFileId, int loginUser);
 }

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

@@ -13,6 +13,6 @@ import java.util.List;
 public interface VideoFileService {
     void deleteVideoFile(String videoFileId);
     VideoInfo getVideoInfo(String videoFileId);
-    List<VideoUrlDto> getVideoUrls(String videoFileId, long loginUser);
+    List<VideoUrlDto> getVideoUrls(String videoFileId, int loginUser);
     LocalDateTime getCreateTime(String videoFileId);
 }

+ 9 - 9
oss-sdk/src/main/java/cn/reghao/oss/sdk/OssConsoleClient.java

@@ -114,8 +114,8 @@ public class OssConsoleClient {
         return webResult.getData();
     }
 
-    public List<ObjectChannel> getObjectChannels(String nodeAddr) throws Exception {
-        String api = String.format("%s/api/oss/channels?nodeAddr=%s", endpoint, nodeAddr);
+    public List<ObjectChannel> getObjectChannels(int createBy, String nodeAddr) throws Exception {
+        String api = String.format("%s/api/oss/channels?createBy=%s&nodeAddr=%s", endpoint, createBy, nodeAddr);
         HttpRequest httpRequest = HttpRequest.newBuilder(new URI(api))
                 .version(HttpClient.Version.HTTP_1_1)
                 .GET()
@@ -138,8 +138,8 @@ public class OssConsoleClient {
         return webResult.getData();
     }
 
-    public ObjectChannel getObjectChannel(String nodeAddr, int channelId) throws Exception {
-        String api = String.format("%s/api/oss/channel?nodeAddr=%s&channelId=%s", endpoint, nodeAddr, channelId);
+    public ObjectChannel getObjectChannel(int createBy, String nodeAddr, int channelId) throws Exception {
+        String api = String.format("%s/api/oss/channel?createBy=%s&nodeAddr=%s&channelId=%s", endpoint, createBy, nodeAddr, channelId);
         HttpRequest httpRequest = HttpRequest.newBuilder(new URI(api))
                 .version(HttpClient.Version.HTTP_1_1)
                 .GET()
@@ -187,7 +187,7 @@ public class OssConsoleClient {
         return webResult.getData();
     }
 
-    public DownloadUrl getDownloadUrl(String objectId, int channelId, long userId) throws Exception {
+    public DownloadUrl getDownloadUrl(String objectId, int channelId, int userId) throws Exception {
         String api = String.format("%s/api/oss/object/url?objectId=%s&channelId=%s&userId=%s", endpoint, objectId, channelId, userId);
         HttpRequest httpRequest = HttpRequest.newBuilder(new URI(api))
                 .header("authorization", "Bearer " + token)
@@ -410,7 +410,7 @@ public class OssConsoleClient {
         return webResult.getData();
     }
 
-    public List<AudioUrl> getAudioUrls(String audioFileId, long loginUser) throws Exception {
+    public List<AudioUrl> getAudioUrls(String audioFileId, int loginUser) throws Exception {
         String api = String.format("%s/api/oss/media/audio/url?audioFileId=%s&userId=%s", endpoint, audioFileId, loginUser);
         HttpRequest httpRequest = HttpRequest.newBuilder(new URI(api))
                 .header("authorization", "Bearer " + token)
@@ -509,7 +509,7 @@ public class OssConsoleClient {
         return webResult.getData();
     }
 
-    public ImageUrlDto getImageUrl(String imageFileId, long loginUser, int channelId) throws Exception {
+    public ImageUrlDto getImageUrl(String imageFileId, int loginUser, int channelId) throws Exception {
         String api = String.format("%s/api/oss/media/image/url?channelId=%s&imageFileId=%s&loginUser=%s", endpoint, channelId, imageFileId, loginUser);
         HttpRequest httpRequest = HttpRequest.newBuilder(new URI(api))
                 .header("authorization", "Bearer " + token)
@@ -559,7 +559,7 @@ public class OssConsoleClient {
         return webResult.getData();
     }
 
-    public String getSignedUrl(String url, long loginUser, int channelId) throws Exception {
+    public String getSignedUrl(String url, int loginUser, int channelId) throws Exception {
         String api = String.format("%s/api/oss/media/image/signedurl?channelId=%s&url=%s&loginUser=%s", endpoint, channelId, url, loginUser);
         HttpRequest httpRequest = HttpRequest.newBuilder(new URI(api))
                 .header("authorization", "Bearer " + token)
@@ -629,7 +629,7 @@ public class OssConsoleClient {
         return webResult.getData();
     }
 
-    public List<VideoUrlDto> getVideoUrls(String videoFileId, long loginUser) throws Exception {
+    public List<VideoUrlDto> getVideoUrls(String videoFileId, int loginUser) throws Exception {
         String api = String.format("%s/api/oss/media/video/url?videoFileId=%s&userId=%s", endpoint, videoFileId, loginUser);
         HttpRequest httpRequest = HttpRequest.newBuilder(new URI(api))
                 .header("authorization", "Bearer " + token)

+ 1 - 1
oss-sdk/src/main/java/cn/reghao/oss/sdk/OssStoreClient.java

@@ -41,7 +41,7 @@ public class OssStoreClient {
         this.endpoint = endpoint;
     }
 
-    public UploadFileRet putObject(File file, int channelId, long userId) throws Exception {
+    public UploadFileRet putObject(File file, int channelId, int userId) throws Exception {
         String sha256sum = DigestUtil.sha256sum(file.getAbsolutePath());
         String api = String.format("%s/", endpoint);
         HttpRequest.Builder builder = HttpRequest.newBuilder(new URI(api))

+ 11 - 6
oss-store/src/main/java/cn/reghao/oss/store/controller/ObjectGetController.java

@@ -69,13 +69,15 @@ public class ObjectGetController {
         String requestString = String.format("%s%s?%s", "GET", url, queryString);
         boolean valid = SignatureUtil.valid(requestString, ossProperties.getSecretKey(), sign);
         if (!valid) {
-            getObjectService.writeResponse(HttpServletResponse.SC_FORBIDDEN);
+            String payload = "sign invalid";
+            getObjectService.writeResponse(HttpServletResponse.SC_FORBIDDEN, payload);
             return;
         }
 
         long current = System.currentTimeMillis();
         if (current > timestamp) {
-            getObjectService.writeResponse(HttpServletResponse.SC_FORBIDDEN);
+            String payload = "timestamp invalid";
+            getObjectService.writeResponse(HttpServletResponse.SC_FORBIDDEN, payload);
             return;
         }
 
@@ -91,14 +93,16 @@ public class ObjectGetController {
         int channelId = ossPayload.getChannelId();
         ObjectChannel objectChannel = objectChannelService.getObjectChannel(channelId);
         if (objectChannel == null) {
-            getObjectService.writeResponse(HttpServletResponse.SC_FORBIDDEN);
+            String payload = String.format("channel_id %s not exist", channelId);
+            getObjectService.writeResponse(HttpServletResponse.SC_FORBIDDEN, payload);
             return;
         }
 
-        long userId = ossPayload.getUserId();
+        int userId = ossPayload.getUserId();
         String prefix = objectChannel.getPrefix();
         if (!objectName.startsWith(prefix)) {
-            getObjectService.writeResponse(HttpServletResponse.SC_FORBIDDEN);
+            String payload = String.format("channel prefix %s not matched", prefix);
+            getObjectService.writeResponse(HttpServletResponse.SC_FORBIDDEN, payload);
             return;
         }
 
@@ -108,7 +112,8 @@ public class ObjectGetController {
         } else if (ChannelAction.download.getName().equals(action)) {
             getObjectService.downloadObject(objectName);
         } else {
-            getObjectService.writeResponse(HttpServletResponse.SC_FORBIDDEN);
+            String payload = String.format("channel action %s not matched", action);
+            getObjectService.writeResponse(HttpServletResponse.SC_FORBIDDEN, payload);
         }
     }
 }

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

@@ -78,7 +78,7 @@ public class ObjectUploadController {
                     .body(WebResult.failWithMsg("channel not match in token"));
         }
 
-        long userId1 = ossPayload.getUserId();
+        int userId1 = ossPayload.getUserId();
         UserContext context = new UserContext(userId1);
 
         /* channel validate */

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

@@ -29,7 +29,7 @@ public class TokenFilter implements Filter {
     @Override
     public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
             throws IOException, ServletException {
-        long userId = -1L;
+        int userId = -1;
         String token = ServletUtil.getBearerToken(request);
         if (token != null) {
             OssPayload ossPayload = JwtUtil.getOssPayload(token, ossProperties.getSecretKey());

+ 2 - 4
oss-store/src/main/java/cn/reghao/oss/store/model/po/FileMeta.java

@@ -25,9 +25,8 @@ public class FileMeta extends BaseObject<Integer> {
     private Long size;
     private Integer fileType;
     private String contentType;
-    private int scope;
-    private Long uploadBy;
-    private Boolean diskFile;
+    private Integer scope;
+    private Integer uploadBy;
 
     // 目录对象
     public FileMeta(String objectName, String objectId, String filename, String pid, int scope) {
@@ -41,7 +40,6 @@ public class FileMeta extends BaseObject<Integer> {
         this.sha256sum = "0";
         this.pid = pid;
         this.uploadBy = UserContext.getUser();
-        this.diskFile = false;
         this.scope = scope;
     }
 

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

@@ -61,7 +61,7 @@ public class ObjectServiceImpl implements ObjectService {
     }
 
     @Override
-    public DownloadUrl getDownloadUrl(String objectId, int channelId, long userId) {
+    public DownloadUrl getDownloadUrl(String objectId, int channelId, int userId) {
         FileMeta fileMeta = objectRepository.getByObjectId(objectId);
         String objectName = fileMeta.getObjectName();
         String url = objectNameService.getObjectUrl(objectName);
@@ -69,7 +69,7 @@ public class ObjectServiceImpl implements ObjectService {
         return new DownloadUrl(signedUrl, "");
     }
 
-    private String getSignedUrl(String url, long loginUser) {
+    private String getSignedUrl(String url, int loginUser) {
         String secretId = loginUser+"";
         long timestamp = System.currentTimeMillis() + 3600*1000;
 

+ 2 - 3
oss-store/src/main/java/cn/reghao/oss/store/rpc/OssServerServiceImpl.java

@@ -28,8 +28,7 @@ public class OssServerServiceImpl implements OssServerService {
     }
 
     @Override
-    public String getUploadToken(int channelId) {
-        long userId = 1;
+    public String getUploadToken(int userId, int channelId) {
         String action = ChannelAction.upload.getName();
         long expireAt = System.currentTimeMillis() + 3600*1000;
         OssPayload ossPayload = new OssPayload(action, channelId, userId);
@@ -37,7 +36,7 @@ public class OssServerServiceImpl implements OssServerService {
     }
 
     @Override
-    public void createChannel(long userId, ObjectChannel channel) {
+    public void createChannel(int userId, ObjectChannel channel) {
         UserContext userContext = new UserContext(userId);
         String objectName = channel.getPrefix();
         objectNameService.createParentDirs(objectName, ObjectScope.PUBLIC.getCode());

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

@@ -23,7 +23,7 @@ public class SignService {
         this.secretKey = ossProperties.getSecretKey();
     }
 
-    public String getSignedUrl(long loginUser, String url, int channelId, long expire) {
+    public String getSignedUrl(int 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);

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

@@ -33,7 +33,7 @@ public class AudioFileServiceImpl implements AudioFileService {
     }
 
     @Override
-    public List<AudioUrl> getAudioUrls(String audioFileId, long loginUser) {
+    public List<AudioUrl> getAudioUrls(String audioFileId, int loginUser) {
         int channelId = UploadChannel.audio.getCode();
         List<AudioUrl> audioUrls = audioRepository.getAudioUrls(audioFileId);
         audioUrls.forEach(audioUrl -> {

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

@@ -53,7 +53,7 @@ public class ImageFileServiceImpl implements ImageFileService {
 
     @Override
     public String getSignedUrl(String url) {
-        long loginUser = 1;
+        int loginUser = 1;
         int channelId = 1;
         String signedUrl = signService.getSignedUrl(loginUser, url, channelId, 600);
         return signedUrl;

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

@@ -53,7 +53,7 @@ public class VideoFileServiceImpl implements VideoFileService {
     }
 
     @Override
-    public List<VideoUrlDto> getVideoUrls(String videoFileId, long loginUser) {
+    public List<VideoUrlDto> getVideoUrls(String videoFileId, int loginUser) {
         int channelId = UploadChannel.video.getCode();
         List<VideoUrlDto> list = videoRepository.findVideoUrls(videoFileId);
         list.forEach(videoUrlDto -> {

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

@@ -49,7 +49,7 @@ public class ChannelValidateService {
 
         String contentType = ObjectType.getDescByCode(fileType);
         String mediaType = FileType.getMediaType(file.getAbsolutePath());
-        if (!mediaType.startsWith(contentType)) {
+        if (!contentType.equals(ObjectType.Other.getDesc()) && !mediaType.startsWith(contentType)) {
             String errMsg = String.format("channel validate failed, the format of file is not %s", contentType);
             return Result.fail(errMsg);
         }

+ 12 - 0
oss-store/src/main/java/cn/reghao/oss/store/service/GetObjectService.java

@@ -116,6 +116,18 @@ public class GetObjectService {
         outputStream.close();
     }
 
+    public void writeResponse(int statusCode, String payload) throws IOException {
+        HttpServletResponse response = ServletUtil.getResponse();
+        response.setStatus(statusCode);
+        response.setContentType("text/html");
+        response.setHeader("Content-Length", ""+payload.length());
+
+        OutputStream outputStream = response.getOutputStream();
+        outputStream.write(payload.getBytes(StandardCharsets.UTF_8));
+        outputStream.flush();
+        outputStream.close();
+    }
+
     private ContentRange parseContentRange(String range, long len) {
         String rangeStr = StringUtils.trimAllWhitespace(range);
         String[] arr = rangeStr.replace("bytes=", "").split("-");

+ 3 - 1
oss-store/src/main/java/cn/reghao/oss/store/service/ObjectChannelService.java

@@ -3,6 +3,7 @@ package cn.reghao.oss.store.service;
 import cn.reghao.jutil.jdk.machine.id.MachineId;
 import cn.reghao.oss.api.dto.ObjectChannel;
 import cn.reghao.oss.sdk.OssConsoleClient;
+import cn.reghao.oss.store.util.UserContext;
 import org.springframework.stereotype.Service;
 
 /**
@@ -20,9 +21,10 @@ public class ObjectChannelService {
     }
 
     public ObjectChannel getObjectChannel(int channelId) {
+        int loginUser = UserContext.getUser();
         String nodeAddr = machineId.ipv4();
         try {
-            return ossConsoleClient.getObjectChannel(nodeAddr, channelId);
+            return ossConsoleClient.getObjectChannel(loginUser, nodeAddr, channelId);
         } catch (Exception e) {
             e.printStackTrace();
         }

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

@@ -78,7 +78,6 @@ public class PutObjectService {
         String suffix = StringUtil.getSuffix(fromObjectName);
         String filename = fileMeta.getFilename();
         String savedPath = "";
-        boolean diskFile = fileMeta.getDiskFile();
         int scope = fileMeta.getScope();
         String toObjectName = objectNameService.getObjectNameFromOriginal(fromObjectName, suffix);
         String toObjectId = UUID.randomUUID().toString().replace("-", "");

+ 21 - 19
oss-store/src/main/java/cn/reghao/oss/store/task/FileProcessor.java

@@ -9,7 +9,6 @@ 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.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;
@@ -41,35 +40,38 @@ public class FileProcessor {
 
     public UploadFileRet process(ObjectResult objectResult, int channelId) throws Exception {
         String objectName = objectResult.getObjectName();
-        int fileType = objectResult.getFileType();
-        ObjectType objectType = ObjectType.getByCode(fileType);
+        //int fileType = objectResult.getFileType();
+        //ObjectType objectType = ObjectType.getByCode(fileType);
         UploadFileRet uploadFileRet = null;
 
-        ObjectChannel channel1 = objectChannelService.getObjectChannel(channelId);
-        UploadChannel channel = UploadChannel.getUploadChannel(channelId);
-        switch (channel) {
-            case disk:
-                uploadFileRet = diskFileProcessor.process(objectResult);
-                //uploadFileRet = processFile(objectResult, channelId);
+        ObjectChannel channel = objectChannelService.getObjectChannel(channelId);
+        int fileType0 = channel.getFileType();
+        ObjectType objectType0 = ObjectType.getByCode(fileType0);
+        switch (objectType0) {
+            case Image:
+                uploadFileRet = imageFileProcessor.processImage(objectResult, channelId);
+                setUrl(channelId, uploadFileRet);
                 break;
-            case video:
+            case Video:
                 uploadFileRet = videoFileProcessor.process(objectResult);
+                //uploadFileRet = processFile(objectResult, channelId);
                 break;
-            case audio:
+            case Audio:
                 uploadFileRet = audioFileProcessor.process(objectResult);
                 break;
-            case avatar:
-            case image:
-            case img:
-                uploadFileRet = imageFileProcessor.processImage(objectResult, channelId);
-                setUrl(channelId, uploadFileRet);
+            case Text:
+            case Other:
+                uploadFileRet = diskFileProcessor.process(objectResult);
                 break;
+            default:
+                log.info("{} 类型的 {} 文件暂时无法处理", objectType0.name(), objectName);
+        }
+
+        /*switch (channel) {
             case photo:
                 uploadFileRet = imageFileProcessor.processImage(objectResult, channelId);
                 break;
-            default:
-                log.info("{} 类型的 {} 文件暂时无法处理", objectType.name(), objectName);
-        }
+        }*/
         return uploadFileRet;
     }
 

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

@@ -29,6 +29,6 @@ public class JwtUtil {
         String action = (String) claims.get("action");
         int channelId = (Integer) claims.get("channelId");
         String userIdStr = claims.getSubject();
-        return new OssPayload(action, channelId, Long.parseLong(userIdStr));
+        return new OssPayload(action, channelId, Integer.parseInt(userIdStr));
     }
 }

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

@@ -5,13 +5,13 @@ package cn.reghao.oss.store.util;
  * @date 2023-06-02 10:48:59
  */
 public class UserContext implements AutoCloseable {
-    static final ThreadLocal<Long> CURRENT = new ThreadLocal<>();
+    static final ThreadLocal<Integer> CURRENT = new ThreadLocal<>();
 
-    public UserContext(Long user) {
+    public UserContext(Integer user) {
         CURRENT.set(user);
     }
 
-    public static long getUser() {
+    public static int getUser() {
         return CURRENT.get();
     }
 

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

@@ -4,16 +4,16 @@
 <mapper namespace="cn.reghao.oss.store.db.mapper.FileMetaMapper">
     <insert id="save" useGeneratedKeys="true" keyProperty="id">
         insert into file_meta
-        (`id`,`deleted`,`create_time`,`update_time`,`object_name`,`object_id`,`content_id`,`pid`,`filename`,`size`,`file_type`,`content_type`,`sha256sum`,`upload_by`,`disk_file`,`scope`)
+        (`id`,`deleted`,`create_time`,`update_time`,`object_name`,`object_id`,`content_id`,`pid`,`filename`,`size`,`file_type`,`content_type`,`sha256sum`,`upload_by`,`scope`)
         values
-        (#{id},#{deleted},#{createTime},#{updateTime},#{objectName},#{objectId},#{contentId},#{pid},#{filename},#{size},#{fileType},#{contentType},#{sha256sum},#{uploadBy},#{diskFile},#{scope})
+        (#{id},#{deleted},#{createTime},#{updateTime},#{objectName},#{objectId},#{contentId},#{pid},#{filename},#{size},#{fileType},#{contentType},#{sha256sum},#{uploadBy},#{scope})
     </insert>
     <insert id="saveAll" useGeneratedKeys="true" keyProperty="id">
         insert into file_meta
-        (`id`,`deleted`,`create_time`,`update_time`,`object_name`,`object_id`,`content_id`,`pid`,`filename`,`size`,`file_type`,`content_type`,`sha256sum`,`upload_by`,`disk_file`,`scope`)
+        (`id`,`deleted`,`create_time`,`update_time`,`object_name`,`object_id`,`content_id`,`pid`,`filename`,`size`,`file_type`,`content_type`,`sha256sum`,`upload_by`,`scope`)
         values
         <foreach collection="list" item="item" index="index" separator=",">
-            (#{item.id},#{item.deleted},#{item.createTime},#{item.updateTime},#{item.objectName},#{item.objectId},#{item.contentId},#{item.pid},#{item.filename},#{item.size},#{item.fileType},#{item.contentType},#{item.sha256sum},#{item.uploadBy},#{item.diskFile},#{item.scope})
+            (#{item.id},#{item.deleted},#{item.createTime},#{item.updateTime},#{item.objectName},#{item.objectId},#{item.contentId},#{item.pid},#{item.filename},#{item.size},#{item.fileType},#{item.contentType},#{item.sha256sum},#{item.uploadBy},#{item.scope})
         </foreach>
     </insert>
 

+ 1 - 1
oss-web/src/main/java/cn/reghao/oss/web/app/controller/ImageFileController.java

@@ -58,7 +58,7 @@ public class ImageFileController {
     @GetMapping(value = "/signedurl", produces = MediaType.APPLICATION_JSON_VALUE)
     public String getImageSignedUrls(@RequestParam("channelId") int channelId,
                                      @RequestParam("url") String url,
-                                     @RequestParam(value = "loginUser") Long loginUser) {
+                                     @RequestParam(value = "loginUser") Integer loginUser) {
         String signedUrl = imageService.getSignedUrl(url, loginUser, channelId);
         return WebResult.success(signedUrl);
     }

+ 8 - 5
oss-web/src/main/java/cn/reghao/oss/web/app/controller/OssController.java

@@ -39,15 +39,18 @@ public class OssController {
 
     @ApiOperation(value = "获取所有的 UploadChannel")
     @GetMapping(value = "/channels", produces = MediaType.APPLICATION_JSON_VALUE)
-    public String getChannels(@RequestParam("nodeAddr") String nodeAddr) {
-        List<ObjectChannel> list = ossService.getObjectChannels(nodeAddr);
+    public String getChannels(@RequestParam("createBy") int createBy,
+                              @RequestParam("nodeAddr") String nodeAddr) {
+        List<ObjectChannel> list = ossService.getObjectChannels(createBy, nodeAddr);
         return WebResult.success(list);
     }
 
     @ApiOperation(value = "获取某个 UploadChannel")
     @GetMapping(value = "/channel", produces = MediaType.APPLICATION_JSON_VALUE)
-    public String getChannel(@RequestParam("nodeAddr") String nodeAddr, @RequestParam("channelId") int channelId) {
-        ObjectChannel objectChannel = ossService.getObjectChannel(nodeAddr, channelId);
+    public String getChannel(@RequestParam("createBy") Integer createBy,
+                             @RequestParam("nodeAddr") String nodeAddr,
+                             @RequestParam("channelId") int channelId) {
+        ObjectChannel objectChannel = ossService.getObjectChannel(createBy, nodeAddr, channelId);
         return WebResult.success(objectChannel);
     }
 
@@ -62,7 +65,7 @@ public class OssController {
     @GetMapping(value = "/object/url", produces = MediaType.APPLICATION_JSON_VALUE)
     public String getObjectUrl(@RequestParam("objectId") String objectId,
                                @RequestParam("channelId") Integer channelId,
-                               @RequestParam("userId") Long userId) {
+                               @RequestParam("userId") Integer userId) {
         DownloadUrl downloadUrl = ossService.getDownloadUrl(objectId, channelId, userId);
         return WebResult.success(downloadUrl);
     }

+ 1 - 1
oss-web/src/main/java/cn/reghao/oss/web/app/controller/VideoFileController.java

@@ -43,7 +43,7 @@ public class VideoFileController {
     @ApiOperation(value = "获取视频文件URL")
     @GetMapping(value = "/url", produces = MediaType.APPLICATION_JSON_VALUE)
     public String getVideoUrl(@RequestParam("videoFileId") String videoFileId,
-                              @RequestParam("userId") Long userId) {
+                              @RequestParam("userId") Integer userId) {
         List<VideoUrlDto> list = videoService.getVideoUrls(videoFileId, userId);
         return WebResult.success(list);
     }

+ 1 - 1
oss-web/src/main/java/cn/reghao/oss/web/app/db/repository/UploadChannelRepository.java

@@ -17,6 +17,6 @@ public interface UploadChannelRepository extends JpaRepository<UploadChannel, In
     UploadChannel findByChannelIdAndCreateBy(int channelId, int createBy);
     UploadChannel findByPrefixAndCreateBy(String prefix, int createBy);
     List<UploadChannel> findByBindDomain(String domain);
-    UploadChannel findByBindDomainAndChannelId(String domain, int channelId);
+    UploadChannel findByCreateByAndBindDomainAndChannelId(int createBy, String domain, int channelId);
     Page<UploadChannel> findByCreateBy(int createBy, Pageable pageable);
 }

+ 5 - 5
oss-web/src/main/java/cn/reghao/oss/web/app/service/OssService.java

@@ -50,11 +50,11 @@ public class OssService {
         int port = storeNode.getRpcPort();
         RemoteService<OssServerService> remoteService = new RemoteService<>();
         OssServerService ossServerService = remoteService.getService(host, port, OssServerService.class);
-        String token = ossServerService.getUploadToken(channelId);
+        String token = ossServerService.getUploadToken(userId, channelId);
         return new ServerInfo(ossUrl, channelId, maxSize, token);
     }
 
-    public List<ObjectChannel> getObjectChannels(String nodeAddr) {
+    public List<ObjectChannel> getObjectChannels(int createBy, String nodeAddr) {
         StoreNode storeNode = storeNodeRepository.findByIpv4Addr(nodeAddr);
         if (storeNode == null) {
             return Collections.emptyList();
@@ -66,14 +66,14 @@ public class OssService {
                 .collect(Collectors.toList());
     }
 
-    public ObjectChannel getObjectChannel(String nodeAddr, int channelId) {
+    public ObjectChannel getObjectChannel(int createBy, String nodeAddr, int channelId) {
         StoreNode storeNode = storeNodeRepository.findByIpv4Addr(nodeAddr);
         if (storeNode == null) {
             return null;
         }
 
         String domain = storeNode.getDomain();
-        UploadChannel uploadChannel = uploadChannelRepository.findByBindDomainAndChannelId(domain, channelId);
+        UploadChannel uploadChannel = uploadChannelRepository.findByCreateByAndBindDomainAndChannelId(createBy, domain, channelId);
         if (uploadChannel == null) {
             return null;
         }
@@ -98,7 +98,7 @@ public class OssService {
         return objectService.getObjectInfo(objectId);
     }
 
-    public DownloadUrl getDownloadUrl(String objectId, int channelId, long userId) {
+    public DownloadUrl getDownloadUrl(String objectId, int channelId, int userId) {
         RemoteService<ObjectService> remoteService = new RemoteService<>();
         String host = "";
         int port = -1;

+ 3 - 3
oss-web/src/main/java/cn/reghao/oss/web/app/service/UserKeyService.java

@@ -53,13 +53,13 @@ public class UserKeyService {
             return Result.fail("secret not matched");
         }
 
-        long loginUser = userKey.getUserId();
+        int loginUser = userKey.getUserId();
         String token = getToken(loginUser);
 
         return Result.success(token);
     }
 
-    public String getToken(long loginUser) {
+    public String getToken(int loginUser) {
         String secretKey = "ossconsole.reghao.cn";
         long timestamp = System.currentTimeMillis() + 3600*24*365;
         String action = ChannelAction.download.getName();
@@ -71,7 +71,7 @@ public class UserKeyService {
     public int getUserIdFromToken(String token) {
         String secretKey = "ossconsole.reghao.cn";
         OssPayload ossPayload = JwtUtil.getOssPayload(token, secretKey);
-        return ossPayload.getUserId().intValue();
+        return ossPayload.getUserId();
     }
 
     public void delete(String accessKeyId) {

+ 1 - 1
oss-web/src/main/java/cn/reghao/oss/web/app/service/media/AudioService.java

@@ -21,7 +21,7 @@ public class AudioService {
         return audioFileService.getAudioInfo(audioFileId);
     }
 
-    public List<AudioUrl> getAudioUrls(String audioFileId, long loginUser) {
+    public List<AudioUrl> getAudioUrls(String audioFileId, int loginUser) {
         return audioFileService.getAudioUrls(audioFileId, loginUser);
     }
 }

+ 1 - 1
oss-web/src/main/java/cn/reghao/oss/web/app/service/media/ImageService.java

@@ -34,7 +34,7 @@ public class ImageService {
         return imageFileService.getImageUrls(imageFileIds);
     }
 
-    public String getSignedUrl(String url, long loginUser, int channelId) {
+    public String getSignedUrl(String url, int loginUser, int channelId) {
         return imageFileService.getSignedUrl(url);
     }
 }

+ 1 - 1
oss-web/src/main/java/cn/reghao/oss/web/app/service/media/VideoService.java

@@ -26,7 +26,7 @@ public class VideoService {
         return videoFileService.getVideoInfo(videoFileId);
     }
 
-    public List<VideoUrlDto> getVideoUrls(String videoFileId, long loginUser) {
+    public List<VideoUrlDto> getVideoUrls(String videoFileId, int loginUser) {
         return videoFileService.getVideoUrls(videoFileId, loginUser);
     }
 

+ 1 - 1
oss-web/src/main/java/cn/reghao/oss/web/util/JwtUtil.java

@@ -29,6 +29,6 @@ public class JwtUtil {
         String action = (String) claims.get("action");
         int channelId = (Integer) claims.get("channelId");
         String userIdStr = claims.getSubject();
-        return new OssPayload(action, channelId, Long.parseLong(userIdStr));
+        return new OssPayload(action, channelId, Integer.parseInt(userIdStr));
     }
 }