Pārlūkot izejas kodu

更新 deleteByObjectUrl 方法

reghao 2 gadi atpakaļ
vecāks
revīzija
b78847f8b1

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

@@ -13,7 +13,7 @@ import java.util.List;
  */
 public interface UploadChannelRepository extends JpaRepository<UploadChannel, Integer> {
     int countByCreateBy(int createBy);
-    UploadChannel findByNodeIdAndCreateBy(int nodeId, int createBy);
+    List<UploadChannel> findByNodeIdAndCreateBy(int nodeId, int createBy);
     UploadChannel findByChannelIdAndCreateBy(int channelId, int createBy);
     UploadChannel findByPrefixAndCreateByAndNodeId(String prefix, int createBy, int nodeId);
     UploadChannel findByPrefixAndNodeId(String prefix, int nodeId);

+ 18 - 4
oss-console/src/main/java/cn/reghao/oss/console/app/rpc/OssObjectService.java

@@ -2,6 +2,7 @@ package cn.reghao.oss.console.app.rpc;
 
 import cn.reghao.oss.console.app.model.dto.ObjectsScopeDto;
 import cn.reghao.oss.console.app.model.po.StoreNode;
+import cn.reghao.oss.console.app.model.po.UploadChannel;
 import cn.reghao.oss.console.app.service.UploadChannelService;
 import cn.reghao.oss.console.util.AuthKeyContext;
 import cn.reghao.oss.store.api.dto.ObjectInfo;
@@ -36,10 +37,23 @@ public class OssObjectService {
     }
 
     public void deleteByObjectUrl(String objectUrl) throws Exception {
-        String objectName = objectUrl.replace("//", "");
-        int channelId = 1;
-        ObjectService objectService = getObjectService(channelId);
-        objectService.deleteByObjectName(objectName);
+        int loginUser = AuthKeyContext.getUser();
+        String domain = objectUrl.replace("//", "").split("/")[0];
+        String objectName = objectUrl.replace("//" + domain + "/", "");
+        List<UploadChannel> uploadChannels = uploadChannelService.getByDomainAndCreateBy(domain, loginUser);
+        for (UploadChannel uploadChannel : uploadChannels) {
+            String prefix = uploadChannel.getPrefix();
+            // TODO get best match
+            if (objectName.startsWith(prefix)) {
+                int channelId = uploadChannel.getChannelId();
+                ObjectService objectService = getObjectService(channelId);
+                objectService.deleteByObjectName(objectName);
+                return;
+            }
+        }
+
+        String errMsg = String.format("%s not associate with any channels", objectUrl);
+        throw new Exception(errMsg);
     }
 
     public String getSignedUrl(int channelId, String objectId) throws Exception {

+ 7 - 1
oss-console/src/main/java/cn/reghao/oss/console/app/service/UploadChannelService.java

@@ -179,7 +179,13 @@ public class UploadChannelService {
         return storeNode;
     }
 
-    public UploadChannel getByNodeIdAndUserId(int nodeId, int userId) {
+    public List<UploadChannel> getByNodeIdAndUserId(int nodeId, int userId) {
         return uploadChannelRepository.findByNodeIdAndCreateBy(nodeId, userId);
     }
+
+    public List<UploadChannel> getByDomainAndCreateBy(String domain, int createBy) {
+        StoreNode storeNode = storeNodeService.getByDomain(domain);
+        int nodeId = storeNode.getId();
+        return getByNodeIdAndUserId(nodeId, createBy);
+    }
 }

+ 2 - 2
oss-console/src/main/java/cn/reghao/oss/console/app/service/UserNodeService.java

@@ -55,8 +55,8 @@ public class UserNodeService {
             int nodeId = userNode.getNodeId();
 
             int userId = UserContext.getUser().getId();
-            UploadChannel uploadChannel = uploadChannelService.getByNodeIdAndUserId(nodeId, userId);
-            if (uploadChannel != null) {
+            List<UploadChannel> uploadChannels = uploadChannelService.getByNodeIdAndUserId(nodeId, userId);
+            if (!uploadChannels.isEmpty()) {
                 return Result.fail("UploadChannel exists");
             }