From 57e5a8385de2d5ff2e43c72535b472e42d65ba91 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Fri, 14 Aug 2026 11:13:44 +0800
Subject: [PATCH] feat(stations): 添加实例别名功能支持

---
 src/main/java/com/xcong/excoin/modules/station/controller/StationController.java |   23 +++++++++++++++++++++--
 1 files changed, 21 insertions(+), 2 deletions(-)

diff --git a/src/main/java/com/xcong/excoin/modules/station/controller/StationController.java b/src/main/java/com/xcong/excoin/modules/station/controller/StationController.java
index b6c2a9b..3902ce7 100644
--- a/src/main/java/com/xcong/excoin/modules/station/controller/StationController.java
+++ b/src/main/java/com/xcong/excoin/modules/station/controller/StationController.java
@@ -1,6 +1,7 @@
 package com.xcong.excoin.modules.station.controller;
 
 import com.xcong.excoin.common.response.Result;
+import com.xcong.excoin.modules.station.model.InstanceInfo;
 import com.xcong.excoin.modules.station.registry.InstanceRegistry;
 import com.xcong.excoin.modules.station.service.StationService;
 import io.swagger.annotations.Api;
@@ -9,6 +10,7 @@
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
+import java.util.Collection;
 
 /**
  * Station 管理接口 — 实例列表 / 启停 / 状态 / 事件查询
@@ -28,13 +30,30 @@
     @ApiOperation("获取所有在线 JAR 实例")
     @GetMapping("/list")
     public Result list() {
-        return Result.ok(instanceRegistry.list());
+        // 内存注册表只维护心跳信息,别名从 DB 合并(心跳重建实例对象时不会丢失)
+        Collection<InstanceInfo> instances = instanceRegistry.list();
+        for (InstanceInfo info : instances) {
+            info.setAliasName(stationService.getAlias(info.getApiKeyMd5()));
+        }
+        return Result.ok(instances);
     }
 
     @ApiOperation("获取单个实例状态")
     @GetMapping("/status")
     public Result status(@RequestParam String apiKeyMd5) {
-        return Result.ok(instanceRegistry.get(apiKeyMd5));
+        InstanceInfo info = instanceRegistry.get(apiKeyMd5);
+        if (info != null) {
+            info.setAliasName(stationService.getAlias(apiKeyMd5));
+        }
+        return Result.ok(info);
+    }
+
+    @ApiOperation("编辑实例别名(空白 = 清除别名)")
+    @PostMapping("/alias")
+    public Result saveAlias(@RequestParam String apiKeyMd5,
+                            @RequestParam(required = false) String alias) {
+        stationService.saveAlias(apiKeyMd5, alias);
+        return Result.ok("别名已保存");
     }
 
     @ApiOperation("启动指定 apiKeyMd5 的策略")

--
Gitblit v1.9.1