Administrator
2026-08-14 57e5a8385de2d5ff2e43c72535b472e42d65ba91
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 的策略")