127 lines
2.9 KiB
Go
127 lines
2.9 KiB
Go
package serverinit
|
||
|
||
import (
|
||
"fmt"
|
||
"go-admin/app/admin/models"
|
||
"go-admin/app/admin/service"
|
||
"go-admin/common/const/rediskey"
|
||
"go-admin/common/helper"
|
||
"go-admin/config"
|
||
"go-admin/pkg/httputils"
|
||
"go-admin/services/cacheservice"
|
||
"go-admin/services/futureservice"
|
||
"go-admin/services/scriptservice"
|
||
"os"
|
||
|
||
"github.com/bytedance/sonic"
|
||
"github.com/go-admin-team/go-admin-core/logger"
|
||
"github.com/go-admin-team/go-admin-core/sdk"
|
||
"github.com/robfig/cron/v3"
|
||
"gorm.io/gorm"
|
||
)
|
||
|
||
// 业务初始化
|
||
func BusinessInit(db *gorm.DB) {
|
||
httputils.InitProxy(config.ExtConfig.ProxyUrl)
|
||
|
||
if err := loadApiUser(db); err != nil { //加载api用户
|
||
os.Exit(-1)
|
||
}
|
||
|
||
//初始化参数配置
|
||
cacheservice.InitConfigCache(db)
|
||
//初始化可缓存价格交易对
|
||
symbolPriceService := service.LineSymbolPrice{}
|
||
symbolPriceService.Orm = db
|
||
symbolPriceService.Log = logger.NewHelper(sdk.Runtime.GetLogger()).WithFields(map[string]interface{}{})
|
||
symbolPriceService.InitCache()
|
||
|
||
//初始化订单配置
|
||
cacheservice.ResetSystemSetting(db)
|
||
lineApiUser := service.LineApiUser{}
|
||
lineApiUser.Orm = db
|
||
if err := lineApiUser.InitCache(); err != nil {
|
||
logger.Errorf("初始化api用户失败:%v", err)
|
||
os.Exit(-1)
|
||
}
|
||
|
||
//定时任务
|
||
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() {
|
||
}
|
||
|
||
// 定义任务
|
||
func RunSpotJobs(db *gorm.DB) {
|
||
cronJob := cron.New()
|
||
//定时执行脚本任务
|
||
_, err := cronJob.AddFunc("@every 3s", func() {
|
||
order := scriptservice.PreOrder{}
|
||
order.AddOrder(db)
|
||
})
|
||
if err != nil {
|
||
return
|
||
}
|
||
|
||
//启动
|
||
cronJob.Start()
|
||
}
|
||
|
||
/*
|
||
加载api user
|
||
*/
|
||
func loadApiUser(db *gorm.DB) error {
|
||
users := make([]models.LineApiUser, 0)
|
||
|
||
if err := db.Model(&models.LineApiUser{}).Where("open_status =1").Find(&users).Error; err != nil {
|
||
logger.Error("loadApiUser:", err)
|
||
return err
|
||
}
|
||
|
||
for _, user := range users {
|
||
key := fmt.Sprintf(rediskey.API_USER, user.Id)
|
||
val, _ := sonic.MarshalString(&user)
|
||
|
||
if val != "" {
|
||
if err := helper.DefaultRedis.SetString(key, val); err != nil {
|
||
logger.Error("loadApiUser 保存redis:", err)
|
||
}
|
||
}
|
||
}
|
||
|
||
groups := make([]models.LineApiGroup, 0)
|
||
|
||
if err := db.Model(&models.LineApiGroup{}).Find(&groups).Error; err != nil {
|
||
logger.Error("loadApiGroup:", err)
|
||
return err
|
||
}
|
||
|
||
apiGroupService := service.LineApiGroup{}
|
||
apiGroupService.Log = logger.NewHelper(sdk.Runtime.GetLogger()).WithFields(map[string]interface{}{})
|
||
|
||
for _, group := range groups {
|
||
service.SetApiGroupCache(group)
|
||
}
|
||
|
||
return nil
|
||
}
|