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
 | ||
| }
 |