package data

import (
	"context"
)

// InitAdminContract
//
//	@Description: 管理员合约订阅
//	@param data
func InitAdminContract(data *Data) {
	go SubscribeQuotesContract(context.Background(), data, contract) // 合约下单交易对行情订阅
	go InitSubscribeQuotesContract(contract)                         // 检查交易订单订阅标识状态机
	go OrderSubAdminContractSubscribeBySum(data)                     // 合约浮动盈亏计算
}

// InitAdminForex
//
//	@Description: 管理员外汇订阅
//	@param data
func InitAdminForex(data *Data) {
	go SubscribeQuotesForex(context.Background(), data, forexWh) // 外汇下单交易对行情订阅
	go InitSubscribeQuotesForex(forexWh)                         // 检查交易订单订阅标识状态机
	go OrderSubAdminForexSubscribeBySum(data)                    // 外汇浮动盈亏计算
}

// InitAdminMoney
//
//	@Description: 管理员综合(现货|合约|外汇)行情订阅
//	@param data
func InitAdminMoney(data *Data) {
	go InitSubscribeQuotesMoneySpots(moneyZh)                            // 综合-现货交易对订阅标识状态机
	go InitSubscribeQuotesMoneyContract(moneyZh)                         // 综合-合约交易对订阅标识状态机
	go InitSubscribeQuotesMoneyForex(moneyZh)                            // 综合-外汇交易对订阅标识状态机
	go SubscribeQuotesMoneySpots(context.Background(), data, moneyZh)    // 综合-现货下单交易对行情订阅
	go SubscribeQuotesMoneyContract(context.Background(), data, moneyZh) // 综合-合约下单交易对行情订阅
	go SubscribeQuotesMoneyForex(context.Background(), data, moneyZh)    // 综合-外汇下单交易对行情订阅
	go OrderSubAdminMoneySubscribeBySum(data)                            // 综合-(现货|合约|外汇)浮动盈亏计算
}

// InitAdminSecond
//
//	@Description: 管理员秒合约订阅
//	@param data
func InitAdminSecond(data *Data) {
	go SubscribeQuotesSecond(context.Background(), data, second) // 秒合约下单交易对行情订阅
	go InitSubscribeQuotesSecond()                               // 检查交易订单订阅标识状态机
}

// InitAdminShareUs
//
//	@Description: 管理员股票-美股订阅
//	@param data
func InitAdminShareUs(data *Data) {
	go InitCacheSymbolShareUs(context.Background(), data) // 初始化-美股股票代码
	go InitSubscribeShareUs(shareUs, false)               // 检查交易订单订阅标识状态机
	go OrderSubAdminShareUsSubscribeBySum(data)           // 美股浮动盈亏计算
	go InitShareUsCloseCachePrice(false)                  // 同步闭盘价
	go InitShareUsCloseNewPrice(false)                    // 同步实时行情
	go InitShareUsPriceSetUp(false)                       // 同步插针行情
}

// InitAdminShareMys
//
//	@Description: 管理员股票-马股订阅
//	@param data
func InitAdminShareMys(data *Data) {
	go InitCacheSymbolShareMys(context.Background(), data) // 初始化-马股股票代码
	go InitSubscribeShareMys(shareMys, false)              // 检查交易订单订阅标识状态机
	go OrderSubAdminShareMysSubscribeBySum(data)           // 马股浮动盈亏计算
	go InitShareMysCloseCachePrice(false)                  // 同步闭盘价
	go InitShareMysCloseNewPrice(false)                    // 同步实时行情
	go InitShareMysPriceSetUp(false)                       // 同步插针行情
}

// InitAdminShareTha
//
//	@Description: 管理员股票-泰股订阅
//	@param data
func InitAdminShareTha(data *Data) {
	go InitCacheSymbolShareTha(context.Background(), data) // 初始化-泰股股票代码
	go InitSubscribeShareTha(shareTha, false)              // 检查交易订单订阅标识状态机
	go OrderSubAdminShareThaSubscribeBySum(data)           // 泰股浮动盈亏计算
	go InitShareThaCloseCachePrice(false)                  // 同步闭盘价
	go InitShareThaCloseNewPrice(false)                    // 同步实时行情
	go InitShareThaPriceSetUp(false)                       // 同步插针行情
}

// InitAdminShareSgd
//
//	@Description: 管理员股票-新加坡股订阅
//	@param data
func InitAdminShareSgd(data *Data) {
	go InitCacheSymbolShareSgd(context.Background(), data) // 初始化-新加坡股票代码
	go InitSubscribeShareSgd(shareSgd, false)              // 检查交易订单订阅标识状态机
	go OrderSubAdminShareSgdSubscribeBySum(data)           // 新加坡股浮动盈亏计算
	go InitShareSgdCloseCachePrice(false)                  // 同步闭盘价
	go InitShareSgdCloseNewPrice(false)                    // 同步实时行情
	go InitShareSgdPriceSetUp(false)                       // 同步插针行情
}

// InitAdminShareIdn
//
//	@Description: 管理员股票-印尼股订阅
//	@param data
func InitAdminShareIdn(data *Data) {
	go InitCacheSymbolShareIdn(context.Background(), data) // 初始化-印尼股票代码
	go InitSubscribeShareIdn(shareIdn, false)              // 检查交易订单订阅标识状态机
	go OrderSubAdminShareIdnSubscribeBySum(data)           // 印尼股浮动盈亏计算
	go InitShareIdnCloseCachePrice(false)                  // 同步闭盘价
	go InitShareIdnCloseNewPrice(false)                    // 同步实时行情
	go InitShareIdnPriceSetUp(false)                       // 同步插针行情
}

// InitAdminShareInr
//
//	@Description: 管理员股票-印度股订阅
//	@param data
func InitAdminShareInr(data *Data) {
	go InitCacheSymbolShareInr(context.Background(), data) // 初始化-印度股票代码
	go InitSubscribeShareInr(shareInr, false)              // 检查交易订单订阅标识状态机
	go OrderSubAdminShareInrSubscribeBySum(data)           // 印度股浮动盈亏计算
	go InitShareInrCloseCachePrice(false)                  // 同步股闭盘价
	go InitShareInrCloseNewPrice(false)                    // 同步实时行情
	go InitShareInrPriceSetUp(false)                       // 同步插针行情
}

// InitAdminShareGbx
//
//	@Description: 管理员股票-英股订阅
//	@param data
func InitAdminShareGbx(data *Data) {
	go InitCacheSymbolShareGbx(context.Background(), data) // 初始化-英股股票代码
	go InitSubscribeShareGbx(shareGbx, false)              // 检查交易订单订阅标识状态机
	go OrderSubAdminShareGbxSubscribeBySum(data)           // 英股浮动盈亏计算
	go InitShareGbxCloseCachePrice(false)                  // 同步闭盘价
	go InitShareGbxCloseNewPrice(false)                    // 同步实时行情
	go InitShareGbxPriceSetUp(false)                       // 同步插针行情
}

// InitAdminShareEur
//
//	@Description: 管理员股票-德股订阅
//	@param data
func InitAdminShareEur(data *Data) {
	go InitCacheSymbolShareEur(context.Background(), data) // 初始化-德股股票代码
	go InitSubscribeShareEur(shareEur, false)              // 检查交易订单订阅标识状态机
	go OrderSubAdminShareEurSubscribeBySum(data)           // 德股浮动盈亏计算
	go InitShareEurCloseCachePrice(false)                  // 同步闭盘价
	go InitShareEurCloseNewPrice(false)                    // 同步实时行情
	go InitShareEurPriceSetUp(false)                       // 同步插针行情
}

// InitAdminShareFur
//
//	@Description: 管理员股票-法股订阅
//	@param data
func InitAdminShareFur(data *Data) {
	go InitCacheSymbolShareFur(context.Background(), data) // 初始化-法股股票代码
	go InitSubscribeShareFur(shareFur, false)              // 检查交易订单订阅标识状态机
	go OrderSubAdminShareFurSubscribeBySum(data)           // 法股浮动盈亏计算
	go InitShareFurCloseCachePrice(false)                  // 同步闭盘价
	go InitShareFurCloseNewPrice(false)                    // 同步实时行情
	go InitShareFurPriceSetUp(false)                       // 同步插针行情
}

// InitAdminShareJpy
//
//	@Description: 管理员股票-日股订阅
//	@param data
func InitAdminShareJpy(data *Data) {
	go InitCacheSymbolShareJpy(context.Background(), data) // 初始化-日股票代码
	go InitSubscribeShareJpy(shareJpy, false)              // 检查交易订单订阅标识状态机
	go OrderSubAdminShareJpySubscribeBySum(data)           // 日股浮动盈亏计算
	go InitShareJpyCloseCachePrice(false)                  // 同步闭盘价
	go InitShareJpyCloseNewPrice(false)                    // 同步实时行情
	go InitShareJpyPriceSetUp(false)                       // 同步插针行情
}

// InitAdminShareBrl
//
//	@Description: 管理员股票-巴西股订阅
//	@param data
func InitAdminShareBrl(data *Data) {
	go InitCacheSymbolShareBrl(context.Background(), data) // 初始化-巴西股股票代码
	go InitSubscribeShareBrl(shareBrl, false)              // 检查交易订单订阅标识状态机
	go OrderSubAdminShareBrlSubscribeBySum(data)           // 巴西股浮动盈亏计算
	go InitShareBrlCloseCachePrice(false)                  // 同步闭盘价
	go InitShareBrlCloseNewPrice(false)                    // 同步实时行情
	go InitShareBrlPriceSetUp(false)                       // 同步插针行情
}

// InitAdminShareHkd
//
//	@Description: 管理员股票-港股订阅
//	@param data
func InitAdminShareHkd(data *Data) {
	go InitCacheSymbolShareHkd(context.Background(), data) // 初始化-港股股票代码
	go InitSubscribeShareHkd(shareHkd, false)              // 检查交易订单订阅标识状态机
	go OrderSubAdminShareHkdSubscribeBySum(data)           // 港股浮动盈亏计算
	go InitShareHkdCloseCachePrice(false)                  // 同步闭盘价
	go InitShareHkdCloseNewPrice(false)                    // 同步实时行情
	go InitShareHkdPriceSetUp(false)                       // 同步插针行情
}

// InitAdminShareBlk
//
//	@Description: 管理员股票-大宗股交易订阅
//	@param data
func InitAdminShareBlk(data *Data) {
	go InitCacheSymbolShareBlk(context.Background(), data)                                                                                       // 初始化-大宗交易股票代码
	go OrderSubAdminShareBlkSubscribeBySum()                                                                                                     // 大宗交易股浮动盈亏计算
	SubscribeShareBlk()                                                                                                                          // 大宗(美股|泰股|马股|印尼股|印度股|新加坡股|港股|英股)下单交易对行情订阅
	InitSubscribeShareBlk(shareUs, shareTha, shareMys, shareIdn, shareInr, shareSgd, shareHkd, shareGbx, shareEur, shareFur, shareBrl, shareJpy) // 检查交易订单订阅标识状态机
	InitShareBlkCloseCachePrice()                                                                                                                // 闭盘价处理
	InitShareBlkSetUpPrice()                                                                                                                     // 插针价
}

// InitAdminOptionInr
//
//	@Description: 管理员股票-期权-印度股订阅
//	@param data
func InitAdminOptionInr(data *Data) {
	go InitCacheSymbolOptionInr(context.Background(), data)      // 初始化-期权(印度)股票代码
	go SubscribeOptionInr(context.Background(), data, optionInr) // 印度期权股下单交易对行情订阅
	go InitSubscribeOptionInr(optionInr)                         // 检查交易订单订阅标识状态机
	go OrderSubAdminOptionInrSubscribeBySum(data)                // 印度期权浮动盈亏计算
	go SubscriptionDataInformation(context.Background())
}