| | |
| | | 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; |
| | |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.util.Collection; |
| | | |
| | | /** |
| | | * Station 管理接口 — 实例列表 / 启停 / 状态 / 事件查询 |
| | |
| | | @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 的策略") |