package com.xcong.excoin.modules.gateApi; import com.xcong.excoin.modules.okxNewPrice.celue.CaoZuoService; import com.xcong.excoin.modules.okxNewPrice.okxWs.wanggeList.WangGeListService; import com.xcong.excoin.utils.RedisUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import javax.annotation.PostConstruct; import javax.annotation.PreDestroy; import java.math.BigDecimal; /** * 管理 Gate WebSocket 客户端和网格交易服务实例 */ @Slf4j @Component public class GateWebSocketClientManager { @Autowired private CaoZuoService caoZuoService; @Autowired private RedisUtils redisUtils; @Autowired private WangGeListService wangGeListService; private GateKlineWebSocketClient klinePriceClient; private GateGridTradeService gridTradeService; private static final String API_KEY = "d90ca272391992b8e74f8f92cedb21ec"; private static final String API_SECRET = "1861e4f52de4bb53369ea3208d9ede38ece4777368030f96c77d27934c46c274"; @PostConstruct public void init() { log.info("开始初始化GateWebSocketClientManager"); try { gridTradeService = new GateGridTradeService( API_KEY, API_SECRET, "XAUT_USDT", "100", "cross", "dual", new BigDecimal("0.0035"), new BigDecimal("0.5"), 3, new BigDecimal("7.5"), "10" ); gridTradeService.init(); klinePriceClient = new GateKlineWebSocketClient(caoZuoService, this, wangGeListService); klinePriceClient.setGridTradeService(gridTradeService); klinePriceClient.init(); log.info("已初始化GateKlineWebSocketClient"); gridTradeService.startGrid(); } catch (Exception e) { log.error("初始化GateWebSocketClientManager失败", e); } } @PreDestroy public void destroy() { log.info("开始销毁GateWebSocketClientManager"); if (gridTradeService != null) { gridTradeService.stopGrid(); } if (klinePriceClient != null) { try { klinePriceClient.destroy(); log.info("已销毁GateKlineWebSocketClient"); } catch (Exception e) { log.error("销毁GateKlineWebSocketClient失败", e); } } log.info("GateWebSocketClientManager销毁完成"); } public GateKlineWebSocketClient getKlineWebSocketClient() { return klinePriceClient; } public GateGridTradeService getGridTradeService() { return gridTradeService; } }