package servicemanager

import (
	"fmt"
	"github.com/gin-gonic/gin"
	"wss-pool/cmd/common"
	"wss-pool/cmd/marketwsscliert"
	"wss-pool/config"
	"wss-pool/internal/data"
	red "wss-pool/internal/redis"
	"wss-pool/logging/applogger"
)

// GatherUS
//
//	@Description: 美股采集
//	@param checkStr
//	@param ipServer
//	@param addrServer
func GatherUS(checkStr, ipServer, addrServer string) {
	// 初始化相同项目mongodb和redis的ip对应关系
	//data.MgoDbToRedisMap = common.GetMgoDbToRedisMap(config.Config.Mongodb.RedisToMongodb)
	// 初始化所有项目MongoDB
	//data.Mgo_initMap(config.Config.Mongodb, common.GetMongodbAddrList(config.Config.Mongodb.AddrList))
	// 初始化所有项目Redis
	red.RedisInitMapList(common.GetRedisAddrList(config.Config.Redis.AddrList))

	// Enable collaborative data collection
	go marketwsscliert.ShareMarketBak(checkStr)

	// Register Route
	router := gin.Default()
	addr := fmt.Sprintf("%v%v", ipServer, addrServer)
	applogger.Info("intService---addr:%v", addr)

	// Start Service
	if err := router.Run(addr); err != nil {
		applogger.Error("Failed to start Gin data collection service:%v", err)
	}
}

// GatherForex
//
//	@Description: 外汇采集
//	@param checkStr
//	@param ipServer
//	@param addrServer
func GatherForex(checkStr, ipServer, addrServer string) {
	data.Mgo_init(config.Config.Mongodb)
	// init Redis
	red.RedisInitMapList(common.GetRedisAddrList(config.Config.Redis.AddrList))

	// 外汇插针配置加载
	go marketwsscliert.GetModifyForex()
	// 外汇实时报价
	go marketwsscliert.ForexMarketBak(checkStr)
	// 外汇实时天报价
	go marketwsscliert.ForexMarketDayBak(checkStr)
	// 外汇买一卖一报价
	go marketwsscliert.ForexMarketQuoteBak(checkStr)
	// 外汇成交报价
	go marketwsscliert.ForexMarketTradeBak(checkStr)
	// 外汇成交报价存储
	go marketwsscliert.ForexMarketTradeBak2(checkStr)
	// 外汇成交报价清理
	go marketwsscliert.ForexMarketClearTradeBak2(checkStr)
	// 外汇交易对每天0点0分0秒更新数据
	go marketwsscliert.ForexUpdateClosePrice()

	// Register Route
	router := gin.Default()
	addr := fmt.Sprintf("%v%v", ipServer, addrServer)
	applogger.Info("intService---addr:%v", addr)

	// Start Service
	if err := router.Run(addr); err != nil {
		applogger.Error("Failed to start Gin data collection service:%v", err)
	}
}