1、暂存

This commit is contained in:
2025-10-14 19:58:59 +08:00
parent 556a32cb7c
commit 643eab3496
60 changed files with 5244 additions and 657 deletions

View File

@ -5,7 +5,6 @@ import (
"go-admin/models"
"go-admin/pkg/httputils"
"go-admin/services/binanceservice"
"go-admin/services/futureservice"
log "github.com/go-admin-team/go-admin-core/logger"
"github.com/robfig/cron/v3"
@ -33,9 +32,6 @@ func FuturesInit() error {
}
log.Info("初始化24h行情-结束")
log.Info("订阅合约-开始")
go futureservice.StartBinanceProWs("normal")
//定时任务
RunJobs()
return nil

View File

@ -0,0 +1,144 @@
package serverinit
import (
"go-admin/config"
"go-admin/models"
"go-admin/pkg/httputils"
"go-admin/pkg/utility"
"go-admin/services/bitgetservice"
log "github.com/go-admin-team/go-admin-core/logger"
"github.com/robfig/cron/v3"
)
// BitgetInit 初始化Bitget交易所
func BitgetMarketInit() error {
// 设置代理(如果配置了的话)
httputils.InitProxy(config.ExtConfig.ProxyUrl)
log.Info("初始化Bitget交易对-开始")
spotData := make(map[string]models.TradeSet, 0)
futData := make(map[string]models.TradeSet, 0)
err := bitgetservice.GetAndReloadSymbols(&spotData, 1)
if err != nil {
log.Error("初始化Bitget交易对失败可能是网络问题将跳过初始化:", err)
// 不返回错误,允许程序继续运行
return nil
}
err = bitgetservice.GetAndReloadSymbols(&futData, 2)
if err != nil {
log.Error("初始化Bitget合约交易对失败可能是网络问题将跳过初始化:", err)
// 不返回错误,允许程序继续运行
return nil
}
log.Info("初始化Bitget交易对-结束")
log.Info("初始化Bitget 24h行情-开始")
_, err = bitgetservice.InitSymbolsTicker24h(&spotData, 1)
if err != nil {
log.Error("初始化Bitget 24h行情失败可能是网络问题将跳过初始化:", err)
// 不返回错误,允许程序继续运行
return nil
}
_, err = bitgetservice.InitSymbolsTicker24h(&futData, 2)
if err != nil {
log.Error("初始化Bitget合约24h行情失败可能是网络问题将跳过初始化:", err)
// 不返回错误,允许程序继续运行
return nil
}
log.Info("初始化Bitget 24h行情-结束")
//现货行情订阅
spotSymbols := []string{}
for k, _ := range spotData {
spotSymbols = append(spotSymbols, k)
}
spotMaps := utility.SplitSlice(spotSymbols, 50)
bitgetSpot := bitgetservice.BitgetMarketSpotClient{}
for _, v := range spotMaps {
if err := bitgetSpot.Subscribe(v); err != nil {
log.Error("订阅Bitget现货行情失败", err)
return err
}
}
//合约行情订阅
futSymbols := []string{}
for k, _ := range futData {
futSymbols = append(futSymbols, k)
}
futMaps := utility.SplitSlice(futSymbols, 50)
bitgetFut := bitgetservice.BitgetMarketFutureClient{}
for _, v := range futMaps {
if err := bitgetFut.Subscribe(v); err != nil {
log.Error("订阅Bitget合约行情失败", err)
return err
}
}
// 启动定时任务
runBitgetJobs()
return nil
}
// runBitgetJobs 启动Bitget相关的定时任务
func runBitgetJobs() {
cronJob := cron.New()
// 每小时更新一次交易对信息
_, err := cronJob.AddFunc("@every 1h", func() {
log.Info("执行Bitget交易对更新任务")
data := make(map[string]models.TradeSet, 0)
if err := bitgetservice.GetAndReloadSymbols(&data, 1); err != nil {
log.Error("更新Bitget交易对失败", err)
}
})
if err != nil {
log.Error("添加Bitget交易对更新任务失败", err)
} else {
log.Info("添加Bitget交易对更新任务成功")
}
// 启动定时任务
cronJob.Start()
log.Info("Bitget定时任务启动完成")
}
// CreateBitgetPrivateWebSocket 创建Bitget私有WebSocket连接的示例函数
func CreateBitgetPrivateWebSocket(apiKey, apiSecret, passphrase, proxyType, proxyAddress string) {
log.Info("创建Bitget私有WebSocket连接 key:", apiKey)
// 现货WebSocket (wsType=0)
spotManager := bitgetservice.GetOrCreateBitgetWebSocketManager(
0, apiKey, apiSecret, passphrase, proxyType, proxyAddress)
spotManager.Start()
// 合约WebSocket (wsType=1)
futuresManager := bitgetservice.GetOrCreateBitgetWebSocketManager(
1, apiKey, apiSecret, passphrase, proxyType, proxyAddress)
futuresManager.Start()
log.Info("Bitget私有WebSocket连接已创建")
}
// StopBitgetPrivateWebSocket 停止Bitget私有WebSocket连接的示例函数
func StopBitgetPrivateWebSocket(apiKey string) {
log.Info("停止Bitget私有WebSocket连接 key:", apiKey)
// 停止现货WebSocket
bitgetservice.StopBitgetWebSocketManager(0, apiKey)
// 停止合约WebSocket
bitgetservice.StopBitgetWebSocketManager(1, apiKey)
log.Info("Bitget私有WebSocket连接已停止")
}

View File

@ -8,7 +8,6 @@ import (
"go-admin/common/helper"
"go-admin/config"
"go-admin/pkg/httputils"
"go-admin/services/binanceservice"
"go-admin/services/cacheservice"
"go-admin/services/futureservice"
"go-admin/services/scriptservice"
@ -46,54 +45,34 @@ func BusinessInit(db *gorm.DB) {
os.Exit(-1)
}
//币安 现货交易对
SpotCurrencyInit()
//币安 合约交易对
FuturesInit()
//第一次初始化交易对价格
spotApi := binanceservice.SpotRestApi{}
futApi := binanceservice.FutRestApi{}
spotApi.Ticker()
futApi.Ticker()
//现货 订阅
SpotSubscribeInit("normal")
//合约订阅
futureservice.StartBinanceProWs("normal")
//定时任务
RunSpotJobs(db)
}
// 行情监听初始化
func BinanceMarketInit() error {
//币安 现货交易对仅数据初始化不启动WebSocket
SpotCurrencyInit()
//币安 合约交易对仅数据初始化不启动WebSocket
FuturesInit()
//现货 订阅
// SpotSubscribeInit("normal")
//合约订阅
futureservice.StartBinanceProWs("normal")
// log.Info("订阅合约-开始")
// go futureservice.StartBinanceProWs("normal")
return nil
}
// 开启现货ws监听
func SpotWsInit() {
//启动websocket服务
//go func() {
// err := wsservice.StartServer(":3333")
// if err != nil {
// log.Info("wsservice.StartServer", zap.Error(err))
//
// _, cancel := context.WithTimeout(context.Background(), 5*time.Second)
// cancel()
// }
//}()
}
// 定义任务
func RunSpotJobs(db *gorm.DB) {
cronJob := cron.New()
//添加任务 同步交易对行情
// spotApi := spotservice.SpotRestApi{}
// futApi := futureservice.FutRestApi{}
// _, err := cronJob.AddFunc("@every 10s", func() {
// //BuySellOrderNew(db)
// spotApi.Ticker()
// futApi.Ticker()
// })
// if err != nil {
// return
// }
//定时执行脚本任务
_, err := cronJob.AddFunc("@every 3s", func() {
order := scriptservice.PreOrder{}