Jelajahi Sumber

update UploadChannelService

reghao 4 bulan lalu
induk
melakukan
8a7a4ba598

+ 2 - 1
file/file-api/src/main/java/cn/reghao/file/api/constant/UploadChannelType.java

@@ -12,7 +12,8 @@ public enum UploadChannelType {
     videoChannel(101, "video/playback/", ObjectType.Video.getCode(), ObjectSize.mb10.getSize(), ObjectScope.PUBLIC.getCode()),
     imageChannel(102, "image/i/", ObjectType.Image.getCode(), ObjectSize.mb100.getSize(), ObjectScope.PUBLIC.getCode()),
     photoChannel(103, "image/p/", ObjectType.Image.getCode(), ObjectSize.gb10.getSize(), ObjectScope.PUBLIC.getCode()),
-    fileChannel(104, "file/", ObjectType.Any.getCode(), ObjectSize.gb10.getSize(), ObjectScope.PRIVATE.getCode());
+    fileChannel(104, "file/", ObjectType.Any.getCode(), ObjectSize.gb10.getSize(), ObjectScope.PRIVATE.getCode()),
+    camChannel(105, "video/cam/", ObjectType.Video.getCode(), ObjectSize.gb10.getSize(), ObjectScope.PRIVATE.getCode());
 
     private final int channelCode;
     private final String channelPrefix;

+ 11 - 2
file/file-service/src/main/java/cn/reghao/tnb/file/app/service/StoreConfigService.java

@@ -2,6 +2,7 @@ package cn.reghao.tnb.file.app.service;
 
 import cn.reghao.tnb.account.api.iface.AccountQuery;
 import cn.reghao.tnb.common.auth.AccountRole;
+import cn.reghao.tnb.common.util.ConstantId;
 import org.apache.dubbo.config.annotation.DubboReference;
 import org.springframework.cache.annotation.Cacheable;
 import org.springframework.stereotype.Service;
@@ -15,9 +16,17 @@ public class StoreConfigService {
     @DubboReference(check = false, retries = 0, timeout = 60_000)
     private AccountQuery accountQuery;
 
-    @Cacheable(cacheNames = "tnb:file:oss_user", key = "'local_oss_user'", unless = "#result == null")
     public int getLocalOssUser() {
+        Integer ossUser = getOssUser();
+        return ossUser != null ? ossUser : (int) ConstantId.ANONYMOUS_USER_ID;
+    }
+
+    @Cacheable(cacheNames = "tnb:file:oss_user", key = "'local_oss_user'", unless = "#result == null")
+    public Integer getOssUser() {
         long ossUser = accountQuery.getByRole(AccountRole.oss.getValue());
-        return (int) ossUser;
+        if (ossUser != ConstantId.ANONYMOUS_USER_ID) {
+            return (int) ossUser;
+        }
+        return null;
     }
 }

+ 5 - 4
file/file-service/src/main/java/cn/reghao/tnb/file/app/service/StoreNodeService.java

@@ -51,11 +51,12 @@ public class StoreNodeService {
         String nodeAddr = storeNodeDto.getNodeAddr();
         StoreNode storeNode = storeNodeMapper.findByNodeAddr(nodeAddr);
         if (storeNode == null) {
-            int storeNodeId = storeRepository.saveStoreNode(storeNodeDto);
+            storeRepository.saveStoreNode(storeNodeDto);
 
-            int total = storeNodeMapper.findAll().size();
-            if (total == 1) {
-                userNodeService.initUserNode(storeNodeId);
+            // 没有 UserNode
+            int total = userNodeMapper.findAll().size();
+            if (total == 0) {
+                userNodeService.initUserNode();
             }
         } else {
             int storeNodeId = storeNode.getId();

+ 4 - 0
file/file-service/src/main/java/cn/reghao/tnb/file/app/service/UploadChannelService.java

@@ -73,6 +73,10 @@ public class UploadChannelService {
     public void initUploadChannel() throws Exception {
         int ossUser = storeConfigService.getLocalOssUser();
         List<UserNode> list = userNodeService.getUserNodes(ossUser);
+        if (list.isEmpty()) {
+            userNodeService.initUserNode();
+        }
+
         if (list.size() == 1 && uploadChannelMapper.findByCreateBy(ossUser).isEmpty()) {
             int userNodeId = list.get(0).getId();
             for (UploadChannelType uploadChannelType : UploadChannelType.values()) {

+ 10 - 1
file/file-service/src/main/java/cn/reghao/tnb/file/app/service/UserNodeService.java

@@ -62,13 +62,22 @@ public class UserNodeService {
      * @return
      * @date 2025-10-21 09:41:46
      */
-    public void initUserNode(int storeNodeId) {
+    public void initUserNode() {
+        userNodeMapper.findAll();
+
         int ossUser = storeConfigService.getLocalOssUser();
         if (ossUser == ConstantId.ANONYMOUS_USER_ID) {
             log.error("ossUser not exist, initUserNode failed...");
             return;
         }
 
+        StoreNode storeNode = storeNodeMapper.findFirstStore();
+        if (storeNode == null) {
+            log.error("StoreNode not exist, initUserNode failed...");
+            return;
+        }
+
+        int storeNodeId = storeNode.getId();
         String domain = ConstantId.OSS_DOMAIN;
         String secretKey = "";
         String referer = "";

+ 1 - 0
file/file-service/src/main/java/cn/reghao/tnb/file/app/zoss/db/mapper/StoreNodeMapper.java

@@ -12,4 +12,5 @@ import org.apache.ibatis.annotations.Mapper;
 public interface StoreNodeMapper extends BaseMapper<StoreNode> {
     StoreNode findByNodeAddr(String nodeAddr);
     StoreNode findById(int id);
+    StoreNode findFirstStore();
 }

+ 2 - 1
file/file-service/src/main/resources/mapper/oss/StoreNodeMapper.xml

@@ -9,9 +9,10 @@
         (#{nodeAddr},#{httpPort},#{rpcPort},#{enabled})
     </insert>
 
-    <select id="findAll" resultType="cn.reghao.tnb.file.app.zoss.model.po.StoreNode">
+    <select id="findFirstStore" resultType="cn.reghao.tnb.file.app.zoss.model.po.StoreNode">
         select *
         from file_store_node
+        limit 1
     </select>
     <select id="findByNodeAddr" resultType="cn.reghao.tnb.file.app.zoss.model.po.StoreNode">
         select *

+ 4 - 0
file/file-service/src/main/resources/mapper/oss/UserNodeMapper.xml

@@ -23,6 +23,10 @@
         where id=#{userNodeId}
     </update>
 
+    <select id="findAll" resultType="cn.reghao.tnb.file.app.zoss.model.po.UserNode">
+        select *
+        from file_user_node
+    </select>
     <select id="countByStoreNodeId" resultType="java.lang.Integer">
         select *
         from file_user_node