package com.xcong.excoin.modules.station.controller; import com.xcong.excoin.common.response.Result; import com.xcong.excoin.modules.station.registry.InstanceRegistry; import com.xcong.excoin.modules.station.service.StationService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; /** * Station 管理接口 — 实例列表 / 启停 / 状态 / 事件查询 */ @Slf4j @Api(value = "Gate 策略管理", tags = "Gate 策略管理") @RestController @RequestMapping("/api/gate/station") public class StationController { @Resource private InstanceRegistry instanceRegistry; @Resource private StationService stationService; @ApiOperation("获取所有在线 JAR 实例") @GetMapping("/list") public Result list() { return Result.ok(instanceRegistry.list()); } @ApiOperation("获取单个实例状态") @GetMapping("/status") public Result status(@RequestParam String apiKeyMd5) { return Result.ok(instanceRegistry.get(apiKeyMd5)); } @ApiOperation("启动指定 apiKeyMd5 的策略") @PostMapping("/start") public Result start(@RequestParam String apiKeyMd5) { stationService.startByMd5(apiKeyMd5); return Result.ok("指令已发送"); } @ApiOperation("停止指定 apiKeyMd5 的策略") @PostMapping("/stop") public Result stop(@RequestParam String apiKeyMd5) { stationService.stopByMd5(apiKeyMd5); return Result.ok("指令已发送"); } @ApiOperation("查询策略事件日志") @GetMapping("/events") public Result events(@RequestParam String apiKeyMd5) { return Result.ok(stationService.getEvents(apiKeyMd5)); } @ApiOperation("查询策略实时状态") @GetMapping("/strategy-status") public Result strategyStatus(@RequestParam String apiKeyMd5) { return Result.ok(stationService.getStrategyStatus(apiKeyMd5)); } @ApiOperation("更新策略参数(仅持久化,需手动启动生效)") @PostMapping("/config") public Result updateConfig(@RequestParam String apiKeyMd5, @RequestBody java.util.Map params) { stationService.updateConfig(apiKeyMd5, params); return Result.ok("参数已保存,请手动点击「启动」使新配置生效"); } }