Browse Source

更新和 StoreNode model 相关的页面和接口

reghao 2 years ago
parent
commit
ebae44707b

+ 3 - 12
oss-console/src/main/java/cn/reghao/oss/console/app/controller/page/StoreNodeController.java

@@ -1,9 +1,8 @@
 package cn.reghao.oss.console.app.controller.page;
 
 import cn.reghao.jutil.jdk.result.Result;
-import cn.reghao.oss.console.app.model.dto.StoreNodeUpdateDto;
+import cn.reghao.oss.console.app.model.dto.NodeUpdateDto;
 import cn.reghao.jutil.jdk.result.WebResult;
-import cn.reghao.oss.console.app.model.po.StoreNode;
 import cn.reghao.oss.console.app.service.StoreNodeService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -27,12 +26,10 @@ public class StoreNodeController {
         this.storeNodeService = storeNodeService;
     }
 
-
-
     @ApiOperation(value = "设置存储节点的域名")
     @PostMapping(value = "/update", produces = MediaType.APPLICATION_JSON_VALUE)
-    public String updateStoreNodeDomain(@Validated StoreNodeUpdateDto storeNodeUpdateDto) {
-        Result result = storeNodeService.updateDomain(storeNodeUpdateDto);
+    public String updateStoreNodeDomain(@Validated NodeUpdateDto nodeUpdateDto) {
+        Result result = storeNodeService.updateDomain(nodeUpdateDto);
         return WebResult.result(result);
     }
 
@@ -42,10 +39,4 @@ public class StoreNodeController {
         Result result = storeNodeService.delete(nodeId);
         return WebResult.result(result);
     }
-
-    @ApiOperation(value = "设置存储节点状态")
-    @PostMapping(value = "/status/{id}", produces = MediaType.APPLICATION_JSON_VALUE)
-    public String setStatus(@PathVariable("id") Integer nodeId) {
-        return WebResult.success();
-    }
 }

+ 8 - 8
oss-console/src/main/java/cn/reghao/oss/console/app/controller/page/StoreNodePageController.java

@@ -1,7 +1,7 @@
 package cn.reghao.oss.console.app.controller.page;
 
-import cn.reghao.oss.console.app.db.repository.StoreNodeRepository;
 import cn.reghao.oss.console.app.model.po.StoreNode;
+import cn.reghao.oss.console.app.service.StoreNodeService;
 import cn.reghao.oss.console.util.DefaultSetting;
 import cn.reghao.oss.console.util.db.PageSort;
 import io.swagger.annotations.Api;
@@ -23,10 +23,10 @@ import java.util.*;
 @Controller
 @RequestMapping("/store/node")
 public class StoreNodePageController {
-    private final StoreNodeRepository storeNodeRepository;
+    private final StoreNodeService storeNodeService;
 
-    public StoreNodePageController(StoreNodeRepository storeNodeRepository) {
-        this.storeNodeRepository = storeNodeRepository;
+    public StoreNodePageController(StoreNodeService storeNodeService) {
+        this.storeNodeService = storeNodeService;
     }
 
     @ApiOperation(value = "存储节点列表页面")
@@ -58,7 +58,7 @@ public class StoreNodePageController {
         }
 
         PageRequest pageRequest = PageSort.pageRequest();
-        Page<StoreNode> page = storeNodeRepository.findAll(pageRequest);
+        Page<StoreNode> page = storeNodeService.getByPage(pageRequest);
 
         model.addAttribute("env", env);
         model.addAttribute("type", type);
@@ -69,8 +69,8 @@ public class StoreNodePageController {
 
     @ApiOperation(value = "存储节点域名设置页面")
     @GetMapping("/config/{id}")
-    public String editAppConfigPage(@PathVariable("id") Integer nodeId, Model model) {
-        StoreNode storeNode = storeNodeRepository.findById(nodeId).orElse(null);
+    public String editAppConfigPage(@PathVariable("id") Integer id, Model model) {
+        StoreNode storeNode = storeNodeService.getById(id);
         model.addAttribute("storeNode", storeNode);
         return "/node/edit";
     }
@@ -78,7 +78,7 @@ public class StoreNodePageController {
     @ApiOperation(value = "存储节点详情页面")
     @GetMapping("/detail/{id}")
     public String appConfigPage(@PathVariable("id") Integer id, Model model) {
-        StoreNode storeNode = storeNodeRepository.findById(id).orElse(null);
+        StoreNode storeNode = storeNodeService.getById(id);
         model.addAttribute("storeNode", storeNode);
         return "/node/detail";
     }

+ 5 - 3
oss-console/src/main/java/cn/reghao/oss/console/app/model/dto/StoreNodeUpdateDto.java → oss-console/src/main/java/cn/reghao/oss/console/app/model/dto/NodeUpdateDto.java

@@ -14,11 +14,13 @@ import javax.validation.constraints.NotNull;
 @NoArgsConstructor
 @Setter
 @Getter
-public class StoreNodeUpdateDto {
+public class NodeUpdateDto {
     @NotNull
     private Integer id;
     private String nodeAddr;
-    @NotBlank(message = "必须指定域名")
+    @NotBlank(message = "必须设置域名")
     private String domain;
-    private String location;
+    @NotBlank(message = "必须设置 SecretKey")
+    private String secretKey;
+    private String referer;
 }

+ 7 - 15
oss-console/src/main/java/cn/reghao/oss/console/app/rpc/OssService.java

@@ -1,12 +1,8 @@
 package cn.reghao.oss.console.app.rpc;
 
-import cn.reghao.oss.console.app.rpc.RemoteService;
 import cn.reghao.oss.console.app.service.UploadChannelService;
 import cn.reghao.oss.store.api.dto.*;
-import cn.reghao.oss.store.api.iface.ObjectService;
-import cn.reghao.oss.store.api.iface.OssServerService;
-import cn.reghao.oss.console.app.db.repository.StoreNodeRepository;
-import cn.reghao.oss.console.app.db.repository.UploadChannelRepository;
+import cn.reghao.oss.store.api.iface.StoreService;
 import cn.reghao.oss.console.app.model.po.StoreNode;
 import cn.reghao.oss.console.app.model.po.UploadChannel;
 import cn.reghao.oss.console.util.AuthKeyContext;
@@ -18,19 +14,15 @@ import org.springframework.stereotype.Service;
  */
 @Service
 public class OssService {
-    private final UploadChannelRepository uploadChannelRepository;
-    private final StoreNodeRepository storeNodeRepository;
-    private UploadChannelService uploadChannelService;
+    private final UploadChannelService uploadChannelService;
 
-    public OssService(UploadChannelRepository uploadChannelRepository, StoreNodeRepository storeNodeRepository, UploadChannelService uploadChannelService) {
-        this.uploadChannelRepository = uploadChannelRepository;
-        this.storeNodeRepository = storeNodeRepository;
+    public OssService(UploadChannelService uploadChannelService) {
         this.uploadChannelService = uploadChannelService;
     }
 
     public ServerInfo getServerInfo(int channelId) throws Exception {
         int userId = AuthKeyContext.getUser();
-        UploadChannel uploadChannel = uploadChannelRepository.findByChannelIdAndCreateBy(channelId, userId);
+        UploadChannel uploadChannel = uploadChannelService.getByChannelIdAndCreateBy(channelId, userId);
         if (uploadChannel == null) {
             String errMsg = String.format("channel_id %s not exist", channelId);
             throw new Exception(errMsg);
@@ -48,9 +40,9 @@ public class OssService {
 
         String host = storeNode.getNodeAddr();
         int port = storeNode.getRpcPort();
-        RemoteService<OssServerService> remoteService = new RemoteService<>();
-        OssServerService ossServerService = remoteService.getService(host, port, OssServerService.class);
-        String token = ossServerService.getUploadToken(userId, channelId);
+        RemoteService<StoreService> remoteService = new RemoteService<>();
+        StoreService storeService = remoteService.getService(host, port, StoreService.class);
+        String token = storeService.getUploadToken(userId, channelId);
         return new ServerInfo(ossUrl, channelId, maxSize, token);
     }
 }

+ 0 - 2
oss-console/src/main/java/cn/reghao/oss/console/app/rpc/RemoteService.java

@@ -1,6 +1,5 @@
 package cn.reghao.oss.console.app.rpc;
 
-import cn.reghao.oss.store.api.iface.media.VideoFileService;
 import org.apache.dubbo.config.ApplicationConfig;
 import org.apache.dubbo.config.ReferenceConfig;
 
@@ -11,7 +10,6 @@ import org.apache.dubbo.config.ReferenceConfig;
 public class RemoteService<T> {
     public T getService(String host, int port, Class<T> clazz) {
         String serviceName = "remote-service";
-        String interfaceName = VideoFileService.class.getName();
         String dubboUrl = String.format("dubbo://%s:%s/%s", host, port, clazz.getName());
 
         // 当前应用配置

+ 19 - 0
oss-console/src/main/java/cn/reghao/oss/console/app/rpc/RpcService.java

@@ -0,0 +1,19 @@
+package cn.reghao.oss.console.app.rpc;
+
+import cn.reghao.oss.console.app.model.po.StoreNode;
+import cn.reghao.oss.store.api.iface.StoreService;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author reghao
+ * @date 2024-03-04 18:01:22
+ */
+@Service
+public class RpcService {
+    public StoreService getStoreService(StoreNode storeNode) {
+        String host = storeNode.getNodeAddr();
+        int port = storeNode.getRpcPort();
+        RemoteService<StoreService> remoteService = new RemoteService<>();
+        return remoteService.getService(host, port, StoreService.class);
+    }
+}

+ 4 - 8
oss-console/src/main/java/cn/reghao/oss/console/app/service/OssStoreService.java

@@ -1,6 +1,5 @@
 package cn.reghao.oss.console.app.service;
 
-import cn.reghao.oss.console.app.db.repository.StoreNodeRepository;
 import cn.reghao.oss.console.app.db.repository.UploadChannelRepository;
 import cn.reghao.oss.console.app.model.po.StoreNode;
 import cn.reghao.oss.console.app.model.po.UploadChannel;
@@ -20,13 +19,10 @@ import java.util.stream.Collectors;
 @Service
 public class OssStoreService {
     private final StoreNodeService storeNodeService;
-    private final StoreNodeRepository storeNodeRepository;
     private final UploadChannelRepository uploadChannelRepository;
 
-    public OssStoreService(StoreNodeService storeNodeService, StoreNodeRepository storeNodeRepository,
-                           UploadChannelRepository uploadChannelRepository) {
+    public OssStoreService(StoreNodeService storeNodeService, UploadChannelRepository uploadChannelRepository) {
         this.storeNodeService = storeNodeService;
-        this.storeNodeRepository = storeNodeRepository;
         this.uploadChannelRepository = uploadChannelRepository;
 
     }
@@ -36,7 +32,7 @@ public class OssStoreService {
     }
 
     public List<ObjectChannel> getObjectChannels(String nodeAddr) {
-        StoreNode storeNode = storeNodeRepository.findByNodeAddr(nodeAddr);
+        StoreNode storeNode = storeNodeService.getByNodeAddr(nodeAddr);
         if (storeNode == null) {
             return Collections.emptyList();
         }
@@ -48,7 +44,7 @@ public class OssStoreService {
     }
 
     public ObjectChannel getObjectChannel(int createBy, String nodeAddr, int channelId) {
-        StoreNode storeNode = storeNodeRepository.findByNodeAddr(nodeAddr);
+        StoreNode storeNode = storeNodeService.getByNodeAddr(nodeAddr);
         if (storeNode == null) {
             return null;
         }
@@ -84,7 +80,7 @@ public class OssStoreService {
     }
 
     public StoreProperties getStoreProperties(String nodeAddr) {
-        StoreNode storeNode = storeNodeRepository.findByNodeAddr(nodeAddr);
+        StoreNode storeNode = storeNodeService.getByNodeAddr(nodeAddr);
         String domain = storeNode.getDomain();
         String referer = storeNode.getReferer();
         String secretKey = storeNode.getSecretKey();

+ 50 - 15
oss-console/src/main/java/cn/reghao/oss/console/app/service/StoreNodeService.java

@@ -2,12 +2,20 @@ package cn.reghao.oss.console.app.service;
 
 import cn.reghao.jutil.jdk.result.Result;
 import cn.reghao.oss.console.app.db.repository.StoreNodeRepository;
-import cn.reghao.oss.console.app.model.dto.StoreNodeUpdateDto;
+import cn.reghao.oss.console.app.model.dto.NodeUpdateDto;
+import cn.reghao.oss.console.app.model.po.StoreDisk;
 import cn.reghao.oss.console.app.model.po.StoreNode;
+import cn.reghao.oss.console.app.rpc.RpcService;
 import cn.reghao.oss.store.api.dto.StoreNodeDto;
+import cn.reghao.oss.store.api.dto.StoreProperties;
+import cn.reghao.oss.store.api.iface.StoreService;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageRequest;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * @author reghao
@@ -16,30 +24,37 @@ import java.util.List;
 @Service
 public class StoreNodeService {
     private final StoreNodeRepository storeNodeRepository;
+    private final RpcService rpcService;
 
-    public StoreNodeService(StoreNodeRepository storeNodeRepository) {
+    public StoreNodeService(StoreNodeRepository storeNodeRepository, RpcService rpcService) {
         this.storeNodeRepository = storeNodeRepository;
+        this.rpcService = rpcService;
     }
 
     public void add(StoreNodeDto storeNodeDto) {
         String nodeAddr = storeNodeDto.getNodeAddr();
-        StoreNode entity = storeNodeRepository.findByNodeAddr(nodeAddr);
-        if (entity == null) {
-            StoreNode storeNode = new StoreNode(storeNodeDto);
+        StoreNode storeNode = storeNodeRepository.findByNodeAddr(nodeAddr);
+        if (storeNode == null) {
+            storeNode = new StoreNode(storeNodeDto);
             storeNodeRepository.save(storeNode);
         } else {
-
+            List<StoreDisk> storeDisks = storeNodeDto.getDiskDtoList().stream()
+                    .map(StoreDisk::new)
+                    .collect(Collectors.toList());
+            storeNode.setStoreDisks(storeDisks);
+            storeNodeRepository.save(storeNode);
         }
     }
 
-    public Result updateDomain(StoreNodeUpdateDto storeNodeUpdateDto) {
-        int id = storeNodeUpdateDto.getId();
+    @Transactional(rollbackFor = Exception.class)
+    public Result updateDomain(NodeUpdateDto nodeUpdateDto) {
+        int id = nodeUpdateDto.getId();
         StoreNode storeNode = storeNodeRepository.findById(id).orElse(null);
         if (storeNode == null) {
             return Result.fail(String.format("id %s not exist", id));
         }
 
-        String domain = storeNodeUpdateDto.getDomain();
+        String domain = nodeUpdateDto.getDomain();
         StoreNode entity = storeNodeRepository.findByDomain(domain);
         if (entity != null) {
             return Result.fail(String.format("domain %s exist", domain));
@@ -49,8 +64,17 @@ public class StoreNodeService {
             return Result.success();
         }
 
+        String secretKey = nodeUpdateDto.getSecretKey();
+        String referer = nodeUpdateDto.getReferer();
         storeNode.setDomain(domain);
+        storeNode.setSecretKey(secretKey);
+        storeNode.setReferer(referer);
+        storeNode.setEnabled(true);
         storeNodeRepository.save(storeNode);
+
+        StoreProperties storeProperties = new StoreProperties(domain, secretKey, referer);
+        StoreService storeService = rpcService.getStoreService(storeNode);
+        storeService.updateStoreProperties(storeProperties);
         return Result.success();
     }
 
@@ -64,13 +88,24 @@ public class StoreNodeService {
         return Result.success("not implement");
     }
 
-    public StoreNode get() {
-        List<StoreNode> list = storeNodeRepository.findAll();
-        if (list.isEmpty()) {
-            return null;
-        }
+    public Page<StoreNode> getByPage(PageRequest pageRequest) {
+        return storeNodeRepository.findAll(pageRequest);
+    }
+
+    public List<StoreNode> getByDomains(List<String> list) {
+        return storeNodeRepository.findByDomainIn(list);
+    }
+
+    public StoreNode getByDomain(String domain) {
+        return storeNodeRepository.findByDomain(domain);
+    }
+
+    public StoreNode getByNodeAddr(String nodeAddr) {
+        return storeNodeRepository.findByNodeAddr(nodeAddr);
+    }
 
-        return list.get(0);
+    public StoreNode getById(int id) {
+        return storeNodeRepository.findById(id).orElse(null);
     }
 
     public List<StoreNode> getStoreNodes() {

+ 13 - 10
oss-console/src/main/java/cn/reghao/oss/console/app/service/UploadChannelService.java

@@ -6,9 +6,8 @@ import cn.reghao.jutil.jdk.result.Result;
 import cn.reghao.oss.console.app.rpc.RemoteService;
 import cn.reghao.oss.console.util.AuthKeyContext;
 import cn.reghao.oss.store.api.dto.ObjectChannel;
-import cn.reghao.oss.store.api.iface.OssServerService;
+import cn.reghao.oss.store.api.iface.StoreService;
 import cn.reghao.oss.console.account.service.UserContext;
-import cn.reghao.oss.console.app.db.repository.StoreNodeRepository;
 import cn.reghao.oss.console.app.db.repository.UploadChannelRepository;
 import cn.reghao.oss.console.app.model.dto.ChannelScopeDto;
 import cn.reghao.oss.console.app.model.dto.UploadChannelDto;
@@ -30,17 +29,17 @@ import java.util.stream.Collectors;
 @Service
 public class UploadChannelService {
     private final UploadChannelRepository uploadChannelRepository;
-    private final StoreNodeRepository storeNodeRepository;
+    private final StoreNodeService storeNodeService;
     private final ByteConverter byteConverter = new ByteConverter();
 
-    public UploadChannelService(UploadChannelRepository uploadChannelRepository, StoreNodeRepository storeNodeRepository) {
+    public UploadChannelService(UploadChannelRepository uploadChannelRepository, StoreNodeService storeNodeService) {
         this.uploadChannelRepository = uploadChannelRepository;
-        this.storeNodeRepository = storeNodeRepository;
+        this.storeNodeService = storeNodeService;
     }
 
     public synchronized Result add(UploadChannelDto uploadChannelDto) {
         String domain = uploadChannelDto.getDomain();
-        StoreNode storeNode = storeNodeRepository.findByDomain(domain);
+        StoreNode storeNode = storeNodeService.getByDomain(domain);
         if (storeNode == null) {
             return Result.fail(String.format("store_node with domain %s not exist", domain));
         }
@@ -70,9 +69,9 @@ public class UploadChannelService {
 
         String host = storeNode.getNodeAddr();
         int port = storeNode.getRpcPort();
-        RemoteService<OssServerService> remoteService = new RemoteService<>();
-        OssServerService ossServerService = remoteService.getService(host, port, OssServerService.class);
-        ossServerService.createChannel(createBy, channel);
+        RemoteService<StoreService> remoteService = new RemoteService<>();
+        StoreService storeService = remoteService.getService(host, port, StoreService.class);
+        storeService.createChannel(createBy, channel);
         return Result.success();
     }
 
@@ -115,6 +114,10 @@ public class UploadChannelService {
         return uploadChannelRepository.findById(id).orElse(null);
     }
 
+    public UploadChannel getByChannelIdAndCreateBy(int channelId, int createBy) {
+        return uploadChannelRepository.findByChannelIdAndCreateBy(channelId, createBy);
+    }
+
     public StoreNode getStoreNode(int channelId) throws Exception {
         int userId = AuthKeyContext.getUser();
         UploadChannel uploadChannel = uploadChannelRepository.findByChannelIdAndCreateBy(channelId, userId);
@@ -127,7 +130,7 @@ public class UploadChannelService {
         String ossUrl = String.format("https://%s", domain);
         long maxSize = uploadChannel.getMaxSize();
 
-        StoreNode storeNode = storeNodeRepository.findByDomain(domain);
+        StoreNode storeNode = storeNodeService.getByDomain(domain);
         if (storeNode == null) {
             String errMsg = String.format("store_node %s not exist", domain);
             throw new Exception(errMsg);

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

@@ -2,7 +2,6 @@ package cn.reghao.oss.console.app.service;
 
 import cn.reghao.jutil.jdk.result.Result;
 import cn.reghao.oss.console.account.service.UserContext;
-import cn.reghao.oss.console.app.db.repository.StoreNodeRepository;
 import cn.reghao.oss.console.app.db.repository.UserNodeRepository;
 import cn.reghao.oss.console.app.model.dto.UserNodeDto;
 import cn.reghao.oss.console.app.model.po.StoreNode;
@@ -20,11 +19,11 @@ import java.util.stream.Collectors;
 @Service
 public class UserNodeService {
     private final UserNodeRepository userNodeRepository;
-    private final StoreNodeRepository storeNodeRepository;
+    private final StoreNodeService storeNodeService;
 
-    public UserNodeService(UserNodeRepository userNodeRepository, StoreNodeRepository storeNodeRepository) {
+    public UserNodeService(UserNodeRepository userNodeRepository, StoreNodeService storeNodeService) {
         this.userNodeRepository = userNodeRepository;
-        this.storeNodeRepository = storeNodeRepository;
+        this.storeNodeService = storeNodeService;
     }
 
     public Result add(UserNodeDto userNodeDto) {
@@ -32,7 +31,7 @@ public class UserNodeService {
         Integer userId = UserContext.getUser().getId();
         UserNode userNode = userNodeRepository.findByDomainAndUserId(domain, userId);
         if (userNode == null) {
-            StoreNode storeNode = storeNodeRepository.findByDomain(userNodeDto.getDomain());
+            StoreNode storeNode = storeNodeService.getByDomain(userNodeDto.getDomain());
             if (storeNode != null) {
                 userNode = new UserNode(userNodeDto, userId);
                 userNodeRepository.save(userNode);
@@ -43,8 +42,8 @@ public class UserNodeService {
         return Result.fail("node exist");
     }
 
-    public void delete(Integer nodeId) {
-        StoreNode storeNode = storeNodeRepository.findById(nodeId).orElse(null);
+    public void delete(Integer id) {
+        StoreNode storeNode = storeNodeService.getById(id);
         if (storeNode != null) {
             String domain = storeNode.getDomain();
             int userId = UserContext.getUser().getId();
@@ -62,6 +61,6 @@ public class UserNodeService {
         }
 
         List<String> domains = list.stream().map(UserNode::getDomain).collect(Collectors.toList());
-        return storeNodeRepository.findByDomainIn(domains);
+        return storeNodeService.getByDomains(domains);
     }
 }

+ 1 - 1
oss-console/src/main/resources/templates/node/edit.html

@@ -4,7 +4,7 @@
 
 <body>
 <div class="layui-form timo-compile">
-    <form th:action="@{/api/oss/store/update}">
+    <form th:action="@{/api/store/node/update}">
         <input class="layui-input" type="hidden" name="id" readonly="readonly" th:value="${storeNode.id}">
         <table class="layui-table timo-detail-table">
             <tbody>

+ 1 - 1
oss-console/src/main/resources/templates/node/index.html

@@ -69,7 +69,7 @@
                         <a class="open-popup" data-title="存储节点详细信息" th:attr="data-url=@{'/store/node/detail/'+${item.id}}"
                            data-size="640,540" href="#">详细</a>
                         <a class="ajax-delete" th:attr="data-msg='确定要删除 '+ ${item.id}"
-                           th:href="@{'/api/oss/store/node/' + ${item.id}}">删除</a>
+                           th:href="@{'/api/store/node/' + ${item.id}}">删除</a>
                     </td>
                 </tr>
                 </tbody>

+ 12 - 5
oss-store/src/main/java/cn/reghao/oss/store/rpc/OssServerServiceImpl.java → oss-store/src/main/java/cn/reghao/oss/store/rpc/StoreServiceImpl.java

@@ -2,12 +2,13 @@ package cn.reghao.oss.store.rpc;
 
 import cn.reghao.oss.store.api.constant.ObjectScope;
 import cn.reghao.oss.store.api.dto.ObjectChannel;
+import cn.reghao.oss.store.api.dto.StoreProperties;
 import cn.reghao.oss.store.service.ObjectNameService;
 import cn.reghao.oss.store.service.StoreLocalCache;
 import cn.reghao.oss.store.util.JwtUtil;
 import cn.reghao.oss.store.api.constant.ChannelAction;
 import cn.reghao.oss.store.api.dto.OssPayload;
-import cn.reghao.oss.store.api.iface.OssServerService;
+import cn.reghao.oss.store.api.iface.StoreService;
 import cn.reghao.oss.store.util.UserContext;
 import org.apache.dubbo.config.annotation.DubboService;
 import org.springframework.stereotype.Service;
@@ -18,17 +19,18 @@ import org.springframework.stereotype.Service;
  */
 @DubboService
 @Service
-public class OssServerServiceImpl implements OssServerService {
-    private final String secretKey;
+public class StoreServiceImpl implements StoreService {
+    private final StoreLocalCache storeLocalCache;
     private final ObjectNameService objectNameService;
 
-    public OssServerServiceImpl(StoreLocalCache storeLocalCache, ObjectNameService objectNameService) {
-        this.secretKey = storeLocalCache.getSecretKey();
+    public StoreServiceImpl(StoreLocalCache storeLocalCache, ObjectNameService objectNameService) {
+        this.storeLocalCache = storeLocalCache;
         this.objectNameService = objectNameService;
     }
 
     @Override
     public String getUploadToken(int userId, int channelId) {
+        String secretKey = storeLocalCache.getSecretKey();
         String action = ChannelAction.upload.getName();
         long expireAt = System.currentTimeMillis() + 3600*1000;
         OssPayload ossPayload = new OssPayload(action, channelId, userId);
@@ -41,4 +43,9 @@ public class OssServerServiceImpl implements OssServerService {
         String objectName = channel.getPrefix();
         objectNameService.createParentDirs(objectName, ObjectScope.PUBLIC.getCode());
     }
+
+    @Override
+    public void updateStoreProperties(StoreProperties storeProperties) {
+        storeLocalCache.updateStoreProperties(storeProperties);
+    }
 }

+ 5 - 1
store-api/src/main/java/cn/reghao/oss/store/api/dto/StoreProperties.java

@@ -3,13 +3,17 @@ package cn.reghao.oss.store.api.dto;
 import lombok.AllArgsConstructor;
 import lombok.Getter;
 
+import java.io.Serializable;
+
 /**
  * @author reghao
  * @date 2024-03-01 09:22:17
  */
 @AllArgsConstructor
 @Getter
-public class StoreProperties {
+public class StoreProperties implements Serializable {
+    private static final long serialVersionUID = 1L;
+
     private String domain;
     private String referer;
     private String secretKey;

+ 3 - 1
store-api/src/main/java/cn/reghao/oss/store/api/iface/OssServerService.java → store-api/src/main/java/cn/reghao/oss/store/api/iface/StoreService.java

@@ -1,12 +1,14 @@
 package cn.reghao.oss.store.api.iface;
 
 import cn.reghao.oss.store.api.dto.ObjectChannel;
+import cn.reghao.oss.store.api.dto.StoreProperties;
 
 /**
  * @author reghao
  * @date 2023-08-01 14:51:50
  */
-public interface OssServerService {
+public interface StoreService {
     String getUploadToken(int userId, int channelId);
     void createChannel(int userId, ObjectChannel channel);
+    void updateStoreProperties(StoreProperties storeProperties);
 }