You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1069 lines
41 KiB
1069 lines
41 KiB
2 months ago
|
package publicData
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"github.com/shopspring/decimal"
|
||
|
"matchmaking-system/internal/data/memory"
|
||
|
"matchmaking-system/internal/data/tradedeal/option"
|
||
|
"matchmaking-system/internal/pkg/flags"
|
||
|
"matchmaking-system/internal/pkg/setting"
|
||
|
)
|
||
|
|
||
|
// OrderSub
|
||
|
// @Description:
|
||
|
type OrderSub struct {
|
||
|
OrderId string // 订单ID
|
||
|
Price string // 市价
|
||
|
OpenPrice string // 开盘价
|
||
|
Count int64 // 订单总数
|
||
|
Status string // 订单状态
|
||
|
Symbol string // 订阅Key
|
||
|
Market string // 交易对
|
||
|
OrderNumber string // 仓位
|
||
|
TradeType int64 // 交易类型(1买涨,2买跌)
|
||
|
FaceValue string // 合约面值
|
||
|
Type int64 // 市场类型
|
||
|
TradingType int64 // 交易方式: 1-BUY,2-SELLS
|
||
|
ServiceCost string // 开仓手续费
|
||
|
UserId int64 // 用户ID
|
||
|
}
|
||
|
|
||
|
// OptionSum
|
||
|
// @Description:
|
||
|
type OptionSum struct {
|
||
|
Type string // 类型
|
||
|
Value string // 统计数据
|
||
|
}
|
||
|
|
||
|
// CheckSymbol
|
||
|
//
|
||
|
// @Description: 当前订阅订单交易对实时价格
|
||
|
// @param topIc
|
||
|
// @param symbol
|
||
|
// @return string
|
||
|
// @return error
|
||
|
func CheckSymbol(topIc, symbol string) (string, error) {
|
||
|
var err error
|
||
|
var price []byte
|
||
|
|
||
|
switch topIc {
|
||
|
case setting.SpotsSubscribe: // 用户现货订单订阅
|
||
|
price, err = memory.SpotsCache.Get(SymbolCache(flags.Xh, symbol, flags.TradeTypePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
case setting.ContractSubscribe: // 用户合约订单订阅
|
||
|
price, err = memory.GetContractCache(SymbolCache(flags.Hy, symbol, flags.TradeTypePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
case setting.SecondSubscribe: // 用户秒合约订单订阅
|
||
|
price, err = memory.GetSecondCache(SymbolCache(flags.Sd, symbol, flags.TradeTypePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
case setting.ShareUsSubscribe: // 用户美股订单订阅
|
||
|
price, err = memory.GetShareUsCache(SymbolCache(flags.Us, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareUsClosePrice.Get(SymbolCache(flags.Us, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case setting.ShareMysSubscribe: // 用户马股订单订阅
|
||
|
price, err = memory.GetShareMysCache(SymbolCache(flags.Mys, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareMysClosePrice.Get(SymbolCache(flags.Mys, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case setting.ShareThaSubscribe: // 用户泰股订单订阅
|
||
|
price, err = memory.GetShareThaCache(SymbolCache(flags.Tha, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareThaClosePrice.Get(SymbolCache(flags.Tha, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case setting.ShareIdnSubscribe: // 用户印尼股订单订阅
|
||
|
price, err = memory.GetShareIdnCache(SymbolCache(flags.Idn, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareIdnClosePrice.Get(SymbolCache(flags.Idn, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case setting.ShareInrSubscribe: // 用户印度股订单订阅
|
||
|
price, err = memory.GetShareInrCache(SymbolCache(flags.Inr, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareInrClosePrice.Get(SymbolCache(flags.Inr, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case setting.ShareSgdSubscribe: // 用户新加坡股订单订阅
|
||
|
price, err = memory.GetShareSgdCache(SymbolCache(flags.Sgd, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareSgdClosePrice.Get(SymbolCache(flags.Sgd, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case setting.ShareHkdSubscribe: // 用户港股订单订阅
|
||
|
price, err = memory.GetShareHkdCache(SymbolCache(flags.Hkd, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareHkdClosePrice.Get(SymbolCache(flags.Hkd, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case setting.ShareGbxSubscribe: // 用户英股订单订阅
|
||
|
price, err = memory.GetShareGbxCache(SymbolCache(flags.Gbx, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareGbxClosePrice.Get(SymbolCache(flags.Gbx, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case setting.ShareEurSubscribe: // 用户德股订单订阅
|
||
|
price, err = memory.GetShareEurCache(SymbolCache(flags.Eur, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareEurClosePrice.Get(SymbolCache(flags.Eur, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case setting.ShareFurSubscribe: // 用户法股订单订阅
|
||
|
price, err = memory.GetShareFurCache(SymbolCache(flags.Fur, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareFurClosePrice.Get(SymbolCache(flags.Fur, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case setting.ShareJpySubscribe: // 用户日股订单订阅
|
||
|
price, err = memory.GetShareJpyCache(SymbolCache(flags.Jpy, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareJpyClosePrice.Get(SymbolCache(flags.Jpy, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case setting.ShareBrlSubscribe: // 用户巴西股订单订阅
|
||
|
price, err = memory.GetShareBrlCache(SymbolCache(flags.Brl, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareBrlClosePrice.Get(SymbolCache(flags.Brl, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case setting.AdminContractSubscribe: // 管理员合约订单订阅
|
||
|
price, err = memory.GetContractCache(SymbolCache(flags.Hy, symbol, flags.TradeTypePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
case setting.AdminSecondSubscribe: // 管理员秒合约订单订阅
|
||
|
price, err = memory.GetSecondCache(SymbolCache(flags.Sd, symbol, flags.TradeTypePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
case setting.AdminShareUsSubscribe: // 管理员美股订单订阅
|
||
|
price, err = memory.GetShareUsCache(SymbolCache(flags.Us, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareUsClosePrice.Get(SymbolCache(flags.Us, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case setting.AdminShareMysSubscribe: // 管理员马股订单订阅
|
||
|
price, err = memory.GetShareMysCache(SymbolCache(flags.Mys, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareMysClosePrice.Get(SymbolCache(flags.Mys, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case setting.AdminShareThaSubscribe: // 管理员泰股订单订阅
|
||
|
price, err = memory.GetShareThaCache(SymbolCache(flags.Tha, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareThaClosePrice.Get(SymbolCache(flags.Tha, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case setting.AdminShareIdnSubscribe: // 管理员印尼股订单订阅
|
||
|
price, err = memory.GetShareIdnCache(SymbolCache(flags.Idn, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareIdnClosePrice.Get(SymbolCache(flags.Idn, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case setting.AdminShareInrSubscribe: // 管理员印度股订单订阅
|
||
|
price, err = memory.GetShareInrCache(SymbolCache(flags.Inr, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareInrClosePrice.Get(SymbolCache(flags.Inr, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case setting.AdminShareSgdSubscribe: // 管理员新加坡股订单订阅
|
||
|
price, err = memory.GetShareSgdCache(SymbolCache(flags.Sgd, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareSgdClosePrice.Get(SymbolCache(flags.Sgd, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case setting.AdminShareHkdSubscribe: // 管理员港股订单订阅
|
||
|
price, err = memory.GetShareHkdCache(SymbolCache(flags.Hkd, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareHkdClosePrice.Get(SymbolCache(flags.Hkd, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case setting.AdminShareGbxSubscribe: // 管理员英股订单订阅
|
||
|
price, err = memory.GetShareGbxCache(SymbolCache(flags.Gbx, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareGbxClosePrice.Get(SymbolCache(flags.Gbx, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case setting.AdminShareEurSubscribe: // 管理员德股订单订阅
|
||
|
price, err = memory.GetShareEurCache(SymbolCache(flags.Eur, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareEurClosePrice.Get(SymbolCache(flags.Eur, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case setting.AdminShareFurSubscribe: // 管理员法股订单订阅
|
||
|
price, err = memory.GetShareFurCache(SymbolCache(flags.Fur, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareFurClosePrice.Get(SymbolCache(flags.Fur, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case setting.AdminShareJpySubscribe: // 管理员日股订单订阅
|
||
|
price, err = memory.GetShareJpyCache(SymbolCache(flags.Jpy, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareJpyClosePrice.Get(SymbolCache(flags.Jpy, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case setting.AdminShareBrlSubscribe: // 管理员巴西股订单订阅
|
||
|
price, err = memory.GetShareBrlCache(SymbolCache(flags.Brl, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareBrlClosePrice.Get(SymbolCache(flags.Brl, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return string(price), nil
|
||
|
}
|
||
|
func CheckSymbolBak(topIc, symbol string) (string, error) {
|
||
|
var err error
|
||
|
var price []byte
|
||
|
|
||
|
switch topIc {
|
||
|
case setting.SpotsSubscribe: // 用户现货订单订阅
|
||
|
price, err = memory.SpotsCache.Get(SymbolCache(flags.Xh, symbol, flags.TradeTypePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
case setting.ContractSubscribe: // 用户合约订单订阅
|
||
|
price, err = memory.GetContractCache(SymbolCache(flags.Hy, symbol, flags.TradeTypePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
case setting.SecondSubscribe: // 用户秒合约订单订阅
|
||
|
price, err = memory.GetSecondCache(SymbolCache(flags.Sd, symbol, flags.TradeTypePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
case setting.ShareUsSubscribe: // 用户美股订单订阅
|
||
|
price, err = memory.GetShareUsCacheWs(SymbolCache(flags.Us, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareUsClosePrice.Get(SymbolCache(flags.Us, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case setting.ShareMysSubscribe: // 用户马股订单订阅
|
||
|
price, err = memory.GetShareMysCacheWs(SymbolCache(flags.Mys, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareMysClosePrice.Get(SymbolCache(flags.Mys, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case setting.ShareThaSubscribe: // 用户泰股订单订阅
|
||
|
price, err = memory.GetShareThaCacheWs(SymbolCache(flags.Tha, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareThaClosePrice.Get(SymbolCache(flags.Tha, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case setting.ShareIdnSubscribe: // 用户印尼股订单订阅
|
||
|
price, err = memory.GetShareIdnCacheWs(SymbolCache(flags.Idn, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareIdnClosePrice.Get(SymbolCache(flags.Idn, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case setting.ShareInrSubscribe: // 用户印度股订单订阅
|
||
|
price, err = memory.GetShareInrCacheWs(SymbolCache(flags.Inr, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareInrClosePrice.Get(SymbolCache(flags.Inr, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case setting.ShareSgdSubscribe: // 用户新加坡股订单订阅
|
||
|
price, err = memory.GetShareSgdCacheWs(SymbolCache(flags.Sgd, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareSgdClosePrice.Get(SymbolCache(flags.Sgd, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case setting.ShareHkdSubscribe: // 用户港股订单订阅
|
||
|
price, err = memory.GetShareHkdCacheWs(SymbolCache(flags.Hkd, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareHkdClosePrice.Get(SymbolCache(flags.Hkd, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case setting.ShareGbxSubscribe: // 用户英股订单订阅
|
||
|
price, err = memory.GetShareGbxCacheWs(SymbolCache(flags.Gbx, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareGbxClosePrice.Get(SymbolCache(flags.Gbx, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case setting.ShareEurSubscribe: // 用户德股订单订阅
|
||
|
price, err = memory.GetShareEurCacheWs(SymbolCache(flags.Eur, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareEurClosePrice.Get(SymbolCache(flags.Eur, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case setting.ShareFurSubscribe: // 用户法股订单订阅
|
||
|
price, err = memory.GetShareFurCacheWs(SymbolCache(flags.Fur, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareFurClosePrice.Get(SymbolCache(flags.Fur, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case setting.ShareJpySubscribe: // 用户日股订单订阅
|
||
|
price, err = memory.GetShareJpyCacheWs(SymbolCache(flags.Jpy, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareJpyClosePrice.Get(SymbolCache(flags.Jpy, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case setting.ShareBrlSubscribe: // 用户巴西股订单订阅
|
||
|
price, err = memory.GetShareBrlCacheWs(SymbolCache(flags.Brl, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareBrlClosePrice.Get(SymbolCache(flags.Brl, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case setting.AdminContractSubscribe: // 管理员合约订单订阅
|
||
|
price, err = memory.GetContractCache(SymbolCache(flags.Hy, symbol, flags.TradeTypePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
case setting.AdminSecondSubscribe: // 管理员秒合约订单订阅
|
||
|
price, err = memory.GetSecondCache(SymbolCache(flags.Sd, symbol, flags.TradeTypePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
case setting.AdminShareUsSubscribe: // 管理员美股订单订阅
|
||
|
price, err = memory.GetShareUsCacheWs(SymbolCache(flags.Us, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareUsClosePrice.Get(SymbolCache(flags.Us, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case setting.AdminShareMysSubscribe: // 管理员马股订单订阅
|
||
|
price, err = memory.GetShareMysCacheWs(SymbolCache(flags.Mys, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareMysClosePrice.Get(SymbolCache(flags.Mys, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case setting.AdminShareThaSubscribe: // 管理员泰股订单订阅
|
||
|
price, err = memory.GetShareThaCacheWs(SymbolCache(flags.Tha, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareThaClosePrice.Get(SymbolCache(flags.Tha, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case setting.AdminShareIdnSubscribe: // 管理员印尼股订单订阅
|
||
|
price, err = memory.GetShareIdnCacheWs(SymbolCache(flags.Idn, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareIdnClosePrice.Get(SymbolCache(flags.Idn, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case setting.AdminShareInrSubscribe: // 管理员印度股订单订阅
|
||
|
price, err = memory.GetShareInrCacheWs(SymbolCache(flags.Inr, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareInrClosePrice.Get(SymbolCache(flags.Inr, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case setting.AdminShareSgdSubscribe: // 管理员新加坡股订单订阅
|
||
|
price, err = memory.GetShareSgdCacheWs(SymbolCache(flags.Sgd, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareSgdClosePrice.Get(SymbolCache(flags.Sgd, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case setting.AdminShareHkdSubscribe: // 管理员港股订单订阅
|
||
|
price, err = memory.GetShareHkdCacheWs(SymbolCache(flags.Hkd, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareHkdClosePrice.Get(SymbolCache(flags.Hkd, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case setting.AdminShareGbxSubscribe: // 管理员英股订单订阅
|
||
|
price, err = memory.GetShareGbxCacheWs(SymbolCache(flags.Gbx, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareGbxClosePrice.Get(SymbolCache(flags.Gbx, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case setting.AdminShareEurSubscribe: // 管理员德股订单订阅
|
||
|
price, err = memory.GetShareEurCacheWs(SymbolCache(flags.Eur, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareEurClosePrice.Get(SymbolCache(flags.Eur, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case setting.AdminShareFurSubscribe: // 管理员法股订单订阅
|
||
|
price, err = memory.GetShareFurCacheWs(SymbolCache(flags.Fur, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareFurClosePrice.Get(SymbolCache(flags.Fur, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case setting.AdminShareJpySubscribe: // 管理员日股订单订阅
|
||
|
price, err = memory.GetShareJpyCacheWs(SymbolCache(flags.Jpy, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareJpyClosePrice.Get(SymbolCache(flags.Jpy, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case setting.AdminShareBrlSubscribe: // 管理员巴西股订单订阅
|
||
|
price, err = memory.GetShareBrlCacheWs(SymbolCache(flags.Brl, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareBrlClosePrice.Get(SymbolCache(flags.Brl, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return string(price), nil
|
||
|
}
|
||
|
|
||
|
// CheckForexSymbol
|
||
|
//
|
||
|
// @Description: 外汇交易对买一卖一最新报价
|
||
|
// @param topIc
|
||
|
// @param symbol
|
||
|
// @param tradeType
|
||
|
// @return string
|
||
|
// @return error
|
||
|
func CheckForexSymbol(topIc, symbol string, tradeType int64) (string, error) {
|
||
|
var err error
|
||
|
var priceNew []byte
|
||
|
switch tradeType {
|
||
|
case 1:
|
||
|
priceNew, err = memory.GetForexCache(SymbolCache(flags.Wh, symbol, flags.TradeTypeBuy))
|
||
|
case 2:
|
||
|
priceNew, err = memory.GetForexCache(SymbolCache(flags.Wh, symbol, flags.TradeTypeSell))
|
||
|
}
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
|
||
|
return string(priceNew), nil
|
||
|
}
|
||
|
|
||
|
// CheckForexImmediateSymbol
|
||
|
//
|
||
|
// @Description: 外汇交易即时报价
|
||
|
// @param topIc
|
||
|
// @param symbol
|
||
|
// @param tradeType
|
||
|
// @return string
|
||
|
// @return error
|
||
|
func CheckForexImmediateSymbol(topIc, symbol string, tradeType int64) (string, error) {
|
||
|
priceNew, err := memory.GetForexImmediateCache(SymbolCache(flags.Wh, symbol, flags.TradeTypePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
|
||
|
return string(priceNew), nil
|
||
|
}
|
||
|
|
||
|
// CheckMoneyImmediateSymbol
|
||
|
//
|
||
|
// @Description: 综合(现货|合约|外汇)交易即时报价
|
||
|
// @param topIc
|
||
|
// @param symbol
|
||
|
// @param typeStatus
|
||
|
// @return string
|
||
|
// @return
|
||
|
func CheckMoneyImmediateSymbol(topIc, symbol string, marketType int64) (string, error) {
|
||
|
var err error
|
||
|
var priceNew []byte
|
||
|
var keyType int
|
||
|
if flags.CheckEnvironment == flags.CheckAdmin {
|
||
|
keyType = flags.TradeTypeAdminPrice
|
||
|
} else {
|
||
|
keyType = flags.TradeTypePrice
|
||
|
}
|
||
|
|
||
|
switch marketType {
|
||
|
case flags.SpotsMarketType: // 现货
|
||
|
priceNew, err = memory.GetMoneySpotsCache(SymbolCache(flags.Xh, symbol, keyType))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
case flags.ContractMarketType: // 合约
|
||
|
priceNew, err = memory.GetMoneyContractCache(SymbolCache(flags.Hy, symbol, keyType))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
case flags.ForexMarketType: // 外汇
|
||
|
priceNew, err = memory.GetMoneyForexImmediateCache(SymbolCache(flags.Wh, symbol, keyType))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
default:
|
||
|
}
|
||
|
|
||
|
return string(priceNew), nil
|
||
|
}
|
||
|
|
||
|
// CheckSymbolBlock
|
||
|
//
|
||
|
// @Description: 大宗交易当前订阅订单交易队实时价格
|
||
|
// @param topIc
|
||
|
// @param symbol
|
||
|
// @param typeStatus
|
||
|
// @return string
|
||
|
// @return error
|
||
|
func CheckSymbolBlock(topIc, symbol string, typeStatus int64) (string, error) {
|
||
|
var err error
|
||
|
var price []byte
|
||
|
|
||
|
switch topIc {
|
||
|
case setting.ShareBlkSubscribe: // 用户大宗交易订单订阅
|
||
|
switch typeStatus {
|
||
|
case flags.ShareUsMarketType: // 美股
|
||
|
price, err = memory.GetShareUsCache(SymbolCache(flags.Us, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareUsClosePrice.Get(SymbolCache(flags.Us, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case flags.ShareThaMarketType: // 泰股
|
||
|
price, err = memory.GetShareThaCache(SymbolCache(flags.Tha, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareThaClosePrice.Get(SymbolCache(flags.Tha, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case flags.ShareMysMarketType: // 马股
|
||
|
price, err = memory.GetShareMysCache(SymbolCache(flags.Mys, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareMysClosePrice.Get(SymbolCache(flags.Mys, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case flags.ShareIdnMarketType: // 印尼股
|
||
|
price, err = memory.GetShareIdnCache(SymbolCache(flags.Idn, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareIdnClosePrice.Get(SymbolCache(flags.Idn, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case flags.ShareInrMarketType: // 印度股
|
||
|
price, err = memory.GetShareInrCache(SymbolCache(flags.Inr, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareInrClosePrice.Get(SymbolCache(flags.Inr, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case flags.ShareSgdMarketType: // 新加坡股
|
||
|
price, err = memory.GetShareSgdCache(SymbolCache(flags.Sgd, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareSgdClosePrice.Get(SymbolCache(flags.Sgd, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case flags.ShareHkdMarketType: // 港股
|
||
|
price, err = memory.GetShareHkdCache(SymbolCache(flags.Hkd, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareHkdClosePrice.Get(SymbolCache(flags.Hkd, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case flags.ShareGbxMarketType: // 英股
|
||
|
price, err = memory.GetShareGbxCache(SymbolCache(flags.Gbx, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareGbxClosePrice.Get(SymbolCache(flags.Gbx, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case flags.ShareEurMarketType: // 德股
|
||
|
price, err = memory.GetShareEurCache(SymbolCache(flags.Eur, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareEurClosePrice.Get(SymbolCache(flags.Eur, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case flags.ShareFurMarketType: // 法股
|
||
|
price, err = memory.GetShareFurCache(SymbolCache(flags.Fur, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareFurClosePrice.Get(SymbolCache(flags.Fur, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case flags.ShareJpyMarketType: // 日股
|
||
|
price, err = memory.GetShareJpyCache(SymbolCache(flags.Jpy, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareJpyClosePrice.Get(SymbolCache(flags.Jpy, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case flags.ShareBrlMarketType: // 巴西股
|
||
|
price, err = memory.GetShareBrlCache(SymbolCache(flags.Brl, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareBrlClosePrice.Get(SymbolCache(flags.Brl, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
case setting.AdminShareBlkSubscribe: // 管理员大宗交易股-订单订阅
|
||
|
switch typeStatus {
|
||
|
case flags.ShareUsMarketType: // 美股
|
||
|
price, err = memory.GetShareUsCache(SymbolCache(flags.Us, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareUsClosePrice.Get(SymbolCache(flags.Us, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case flags.ShareThaMarketType: // 泰股
|
||
|
price, err = memory.GetShareThaCache(SymbolCache(flags.Tha, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareThaClosePrice.Get(SymbolCache(flags.Tha, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case flags.ShareMysMarketType: // 马股
|
||
|
price, err = memory.GetShareMysCache(SymbolCache(flags.Mys, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareMysClosePrice.Get(SymbolCache(flags.Mys, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case flags.ShareIdnMarketType: // 印尼股
|
||
|
price, err = memory.GetShareIdnCache(SymbolCache(flags.Idn, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareIdnClosePrice.Get(SymbolCache(flags.Idn, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case flags.ShareInrMarketType: // 印度股
|
||
|
price, err = memory.GetShareInrCache(SymbolCache(flags.Inr, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareInrClosePrice.Get(SymbolCache(flags.Inr, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case flags.ShareSgdMarketType: // 新加坡股
|
||
|
price, err = memory.GetShareSgdCache(SymbolCache(flags.Sgd, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareSgdClosePrice.Get(SymbolCache(flags.Sgd, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case flags.ShareHkdMarketType: // 港股
|
||
|
price, err = memory.GetShareHkdCache(SymbolCache(flags.Hkd, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareHkdClosePrice.Get(SymbolCache(flags.Hkd, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case flags.ShareGbxMarketType: // 英股
|
||
|
price, err = memory.GetShareGbxCache(SymbolCache(flags.Gbx, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareGbxClosePrice.Get(SymbolCache(flags.Gbx, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case flags.ShareEurMarketType: // 德股
|
||
|
price, err = memory.GetShareEurCache(SymbolCache(flags.Eur, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareEurClosePrice.Get(SymbolCache(flags.Eur, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case flags.ShareFurMarketType: // 法股
|
||
|
price, err = memory.GetShareFurCache(SymbolCache(flags.Fur, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareFurClosePrice.Get(SymbolCache(flags.Fur, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case flags.ShareJpyMarketType: // 日股
|
||
|
price, err = memory.GetShareJpyCache(SymbolCache(flags.Jpy, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareJpyClosePrice.Get(SymbolCache(flags.Jpy, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case flags.ShareBrlMarketType: // 巴西股
|
||
|
price, err = memory.GetShareBrlCache(SymbolCache(flags.Brl, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareBrlClosePrice.Get(SymbolCache(flags.Brl, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return string(price), nil
|
||
|
}
|
||
|
func CheckSymbolBlockBak(topIc, symbol string, typeStatus int64) (string, error) {
|
||
|
var err error
|
||
|
var price []byte
|
||
|
|
||
|
switch topIc {
|
||
|
case setting.ShareBlkSubscribe: // 用户大宗交易订单订阅
|
||
|
switch typeStatus {
|
||
|
case flags.ShareUsMarketType: // 美股
|
||
|
price, err = memory.GetShareUsCacheWs(SymbolCache(flags.Us, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareUsClosePrice.Get(SymbolCache(flags.Us, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case flags.ShareThaMarketType: // 泰股
|
||
|
price, err = memory.GetShareThaCacheWs(SymbolCache(flags.Tha, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareThaClosePrice.Get(SymbolCache(flags.Tha, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case flags.ShareMysMarketType: // 马股
|
||
|
price, err = memory.GetShareMysCacheWs(SymbolCache(flags.Mys, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareMysClosePrice.Get(SymbolCache(flags.Mys, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case flags.ShareIdnMarketType: // 印尼股
|
||
|
price, err = memory.GetShareIdnCacheWs(SymbolCache(flags.Idn, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareIdnClosePrice.Get(SymbolCache(flags.Idn, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case flags.ShareInrMarketType: // 印度股
|
||
|
price, err = memory.GetShareInrCacheWs(SymbolCache(flags.Inr, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareInrClosePrice.Get(SymbolCache(flags.Inr, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case flags.ShareSgdMarketType: // 新加坡股
|
||
|
price, err = memory.GetShareSgdCacheWs(SymbolCache(flags.Sgd, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareSgdClosePrice.Get(SymbolCache(flags.Sgd, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case flags.ShareHkdMarketType: // 港股
|
||
|
price, err = memory.GetShareHkdCacheWs(SymbolCache(flags.Hkd, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareHkdClosePrice.Get(SymbolCache(flags.Hkd, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case flags.ShareGbxMarketType: // 英股
|
||
|
price, err = memory.GetShareGbxCacheWs(SymbolCache(flags.Gbx, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareGbxClosePrice.Get(SymbolCache(flags.Gbx, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case flags.ShareEurMarketType: // 德股
|
||
|
price, err = memory.GetShareEurCacheWs(SymbolCache(flags.Eur, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareEurClosePrice.Get(SymbolCache(flags.Eur, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case flags.ShareFurMarketType: // 法股
|
||
|
price, err = memory.GetShareFurCacheWs(SymbolCache(flags.Fur, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareFurClosePrice.Get(SymbolCache(flags.Fur, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case flags.ShareJpyMarketType: // 日股
|
||
|
price, err = memory.GetShareJpyCacheWs(SymbolCache(flags.Jpy, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareJpyClosePrice.Get(SymbolCache(flags.Jpy, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case flags.ShareBrlMarketType: // 巴西股
|
||
|
price, err = memory.GetShareBrlCacheWs(SymbolCache(flags.Brl, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareBrlClosePrice.Get(SymbolCache(flags.Brl, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
case setting.AdminShareBlkSubscribe: // 管理员大宗交易股-订单订阅
|
||
|
switch typeStatus {
|
||
|
case flags.ShareUsMarketType: // 美股
|
||
|
price, err = memory.GetShareUsCacheWs(SymbolCache(flags.Us, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareUsClosePrice.Get(SymbolCache(flags.Us, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case flags.ShareThaMarketType: // 泰股
|
||
|
price, err = memory.GetShareThaCacheWs(SymbolCache(flags.Tha, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareThaClosePrice.Get(SymbolCache(flags.Tha, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case flags.ShareMysMarketType: // 马股
|
||
|
price, err = memory.GetShareMysCacheWs(SymbolCache(flags.Mys, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareMysClosePrice.Get(SymbolCache(flags.Mys, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case flags.ShareIdnMarketType: // 印尼股
|
||
|
price, err = memory.GetShareIdnCacheWs(SymbolCache(flags.Idn, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareIdnClosePrice.Get(SymbolCache(flags.Idn, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case flags.ShareInrMarketType: // 印度股
|
||
|
price, err = memory.GetShareInrCacheWs(SymbolCache(flags.Inr, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareInrClosePrice.Get(SymbolCache(flags.Inr, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case flags.ShareSgdMarketType: // 新加坡股
|
||
|
price, err = memory.GetShareSgdCacheWs(SymbolCache(flags.Sgd, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareSgdClosePrice.Get(SymbolCache(flags.Sgd, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case flags.ShareHkdMarketType: // 港股
|
||
|
price, err = memory.GetShareHkdCacheWs(SymbolCache(flags.Hkd, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareHkdClosePrice.Get(SymbolCache(flags.Hkd, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case flags.ShareGbxMarketType: // 英股
|
||
|
price, err = memory.GetShareGbxCacheWs(SymbolCache(flags.Gbx, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareGbxClosePrice.Get(SymbolCache(flags.Gbx, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case flags.ShareEurMarketType: // 德股
|
||
|
price, err = memory.GetShareEurCacheWs(SymbolCache(flags.Eur, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareEurClosePrice.Get(SymbolCache(flags.Eur, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case flags.ShareFurMarketType: // 法股
|
||
|
price, err = memory.GetShareFurCacheWs(SymbolCache(flags.Fur, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareFurClosePrice.Get(SymbolCache(flags.Fur, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case flags.ShareJpyMarketType: // 日股
|
||
|
price, err = memory.GetShareJpyCacheWs(SymbolCache(flags.Jpy, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareJpyClosePrice.Get(SymbolCache(flags.Jpy, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
case flags.ShareBrlMarketType: // 法股
|
||
|
price, err = memory.GetShareBrlCacheWs(SymbolCache(flags.Brl, symbol, flags.TradeTypePrice))
|
||
|
if err != nil || len(price) == 0 {
|
||
|
price, err = memory.ShareBrlClosePrice.Get(SymbolCache(flags.Brl, symbol, flags.TradeTypeClosePrice))
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return string(price), nil
|
||
|
}
|
||
|
|
||
|
// CheckSymbolOption
|
||
|
//
|
||
|
// @Description: 期权数据浮动盈亏计算价格
|
||
|
// @param order
|
||
|
func CheckSymbolOption(order option.OptionInrTallyCache) (string, error) {
|
||
|
price := decimal.Zero
|
||
|
// 买一价格
|
||
|
bidKey := SymbolCache(flags.Opi, order.Order.StockCode, flags.OptionBid)
|
||
|
priceBid, err := memory.GetOptionInrBid(bidKey)
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
bid, _ := decimal.NewFromString(string(priceBid))
|
||
|
|
||
|
// 卖一价格
|
||
|
askKey := SymbolCache(flags.Opi, order.Order.StockCode, flags.OptionAsk)
|
||
|
priceAsk, err := memory.GetOptionInrAsk(askKey)
|
||
|
if err != nil {
|
||
|
return flags.SetNull, err
|
||
|
}
|
||
|
ask, _ := decimal.NewFromString(string(priceAsk))
|
||
|
|
||
|
// 浮动盈亏
|
||
|
// buy-call 和 buy-put bid买一价
|
||
|
// sell-call 和 sell-put aSK卖一价
|
||
|
switch order.Order.TradeType {
|
||
|
case flags.OptionCalls: // call
|
||
|
switch order.Order.TradingType {
|
||
|
case flags.OptionBuy: // call - buy
|
||
|
if !bid.IsZero() {
|
||
|
price = bid
|
||
|
}
|
||
|
case flags.OptionSell: // call - sell
|
||
|
if !ask.IsZero() {
|
||
|
price = ask
|
||
|
}
|
||
|
}
|
||
|
case flags.OptionPuts: // put
|
||
|
switch order.Order.TradingType {
|
||
|
case flags.OptionBuy: // put - buy
|
||
|
if !bid.IsZero() {
|
||
|
price = bid
|
||
|
}
|
||
|
case flags.OptionSell: // put - sell
|
||
|
if !ask.IsZero() {
|
||
|
price = ask
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if price.IsZero() {
|
||
|
return flags.SetNull, nil
|
||
|
}
|
||
|
|
||
|
return price.String(), nil
|
||
|
}
|
||
|
|
||
|
// SymbolCache
|
||
|
//
|
||
|
// @Description:
|
||
|
// @param mark
|
||
|
// @param symbol
|
||
|
// @param types
|
||
|
// @return string
|
||
|
func SymbolCache(mark, symbol string, types int) string {
|
||
|
return fmt.Sprintf("%v-%v-%v", mark, symbol, types)
|
||
|
}
|