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.
1023 lines
28 KiB
1023 lines
28 KiB
2 months ago
|
package socket
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
"encoding/json"
|
||
|
"matchmaking-system/internal/data"
|
||
|
"matchmaking-system/internal/data/memory"
|
||
|
"matchmaking-system/internal/data/socket/shareData"
|
||
|
"matchmaking-system/internal/data/tradedeal/share"
|
||
|
"matchmaking-system/internal/pkg/flags"
|
||
|
"matchmaking-system/internal/pkg/logging/applogger"
|
||
|
"matchmaking-system/internal/pkg/setting"
|
||
|
"time"
|
||
|
)
|
||
|
|
||
|
// orderSubAdminShareUsSubscribeByOrder
|
||
|
//
|
||
|
// @Description: 管理员美股|订单订阅|持仓订单订阅|持仓浮动盈亏订阅
|
||
|
// @receiver u
|
||
|
// @param psgMsg
|
||
|
func (u *Client) orderSubAdminShareUsSubscribeByOrder(psgMsg *SymbolMessage) {
|
||
|
for {
|
||
|
if psgMsg.Symbol == setting.AdminShareUsSubscribe {
|
||
|
var hashList []share.ShareUsTallyCache
|
||
|
for _, field := range psgMsg.Order {
|
||
|
fieldStr, err := data.Reds.HGet(context.Background(), setting.AdminShareUsSubscribe, field).Result()
|
||
|
if err != nil {
|
||
|
continue
|
||
|
}
|
||
|
var msg share.ShareUsTallyCache
|
||
|
if err = json.Unmarshal([]byte(fieldStr), &msg); err != nil {
|
||
|
time.Sleep(5 * time.Second)
|
||
|
continue
|
||
|
}
|
||
|
hashList = append(hashList, msg)
|
||
|
}
|
||
|
|
||
|
for _, value := range hashList {
|
||
|
orderModel := shareData.ShareUsOrderProcessing(setting.AdminShareUsSubscribe, value)
|
||
|
if orderModel != nil {
|
||
|
_, ok := u.symbol.Load(psgMsg.Symbol)
|
||
|
if ok {
|
||
|
// 清理[撤单|平仓]缓存队列
|
||
|
if orderModel.Status == flags.Cancel || orderModel.Status == flags.Close {
|
||
|
if err := data.Reds.HDel(context.Background(), setting.AdminShareUsSubscribe, orderModel.OrderId).Err(); err != nil {
|
||
|
applogger.Error("AdminSecondSubscribe.HDel:%v", err)
|
||
|
continue
|
||
|
}
|
||
|
}
|
||
|
orderStr, err := json.Marshal(orderModel)
|
||
|
if err != nil {
|
||
|
applogger.Error("Administrator's US stock subscription cache order error:%v", err)
|
||
|
time.Sleep(5 * time.Second)
|
||
|
continue
|
||
|
}
|
||
|
|
||
|
u.msg <- orderStr // 用户(挂单|持仓)订阅
|
||
|
} else {
|
||
|
applogger.Warn("Administrator cancels subscription to US stock orders.")
|
||
|
return
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
time.Sleep(600 * time.Millisecond)
|
||
|
}
|
||
|
}
|
||
|
func (u *Client) orderSubAdminShareUsSubscribeBySum(psgMsg *SymbolMessage) {
|
||
|
for {
|
||
|
if psgMsg.Symbol == setting.AdminShareUsSumSubscribe {
|
||
|
priceSum, err := memory.ShareUsFloating.Get(flags.FloatingUs)
|
||
|
if err != nil {
|
||
|
continue
|
||
|
}
|
||
|
|
||
|
result := &SymbolSumResult{
|
||
|
Symbol: psgMsg.Symbol,
|
||
|
Price: string(priceSum),
|
||
|
}
|
||
|
|
||
|
priceByte, err := json.Marshal(result)
|
||
|
if err != nil {
|
||
|
continue
|
||
|
}
|
||
|
|
||
|
_, ok := u.symbol.Load(psgMsg.Symbol)
|
||
|
if ok {
|
||
|
u.msg <- priceByte
|
||
|
} else {
|
||
|
applogger.Info("Administrator cancels subscription to US stock orders.")
|
||
|
return
|
||
|
}
|
||
|
}
|
||
|
|
||
|
time.Sleep(1 * time.Second)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// orderSubAdminShareMysSubscribeByOrder
|
||
|
//
|
||
|
// @Description: 管理员马股|订单订阅|持仓订单订阅|持仓浮动盈亏订阅
|
||
|
// @receiver u
|
||
|
// @param psgMsg
|
||
|
func (u *Client) orderSubAdminShareMysSubscribeByOrder(psgMsg *SymbolMessage) {
|
||
|
for {
|
||
|
if psgMsg.Symbol == setting.AdminShareMysSubscribe {
|
||
|
var hashList []share.ShareMysTallyCache
|
||
|
for _, field := range psgMsg.Order {
|
||
|
fieldStr, err := data.Reds.HGet(context.Background(), setting.AdminShareMysSubscribe, field).Result()
|
||
|
if err != nil {
|
||
|
continue
|
||
|
}
|
||
|
var msg share.ShareMysTallyCache
|
||
|
if err = json.Unmarshal([]byte(fieldStr), &msg); err != nil {
|
||
|
time.Sleep(5 * time.Second)
|
||
|
continue
|
||
|
}
|
||
|
hashList = append(hashList, msg)
|
||
|
}
|
||
|
|
||
|
for _, value := range hashList {
|
||
|
orderModel := shareData.ShareMysOrderProcessing(setting.AdminShareMysSubscribe, value)
|
||
|
if orderModel != nil {
|
||
|
_, ok := u.symbol.Load(psgMsg.Symbol)
|
||
|
if ok {
|
||
|
// 清理[撤单|平仓]缓存队列
|
||
|
if orderModel.Status == flags.Cancel || orderModel.Status == flags.Close {
|
||
|
if err := data.Reds.HDel(context.Background(), setting.AdminShareMysSubscribe, orderModel.OrderId).Err(); err != nil {
|
||
|
applogger.Error("AdminShareThaSubscribe.HDel:%v", err)
|
||
|
continue
|
||
|
}
|
||
|
}
|
||
|
orderStr, err := json.Marshal(orderModel)
|
||
|
if err != nil {
|
||
|
applogger.Error("Administrator's stock subscription cache order error:%v", err)
|
||
|
time.Sleep(5 * time.Second)
|
||
|
continue
|
||
|
}
|
||
|
|
||
|
u.msg <- orderStr // 用户(挂单|持仓)订阅
|
||
|
} else {
|
||
|
applogger.Info("Administrator cancels subscription to horse stock orders.")
|
||
|
return
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
time.Sleep(600 * time.Millisecond)
|
||
|
}
|
||
|
}
|
||
|
func (u *Client) orderSubAdminShareMysSubscribeBySum(psgMsg *SymbolMessage) {
|
||
|
for {
|
||
|
if psgMsg.Symbol == setting.AdminShareMysSumSubscribe {
|
||
|
priceSum, err := memory.ShareMysFloating.Get(flags.FloatingMys)
|
||
|
if err != nil {
|
||
|
continue
|
||
|
}
|
||
|
|
||
|
result := &SymbolSumResult{
|
||
|
Symbol: psgMsg.Symbol,
|
||
|
Price: string(priceSum),
|
||
|
}
|
||
|
|
||
|
priceByte, err := json.Marshal(result)
|
||
|
if err != nil {
|
||
|
continue
|
||
|
}
|
||
|
|
||
|
_, ok := u.symbol.Load(psgMsg.Symbol)
|
||
|
if ok {
|
||
|
u.msg <- priceByte
|
||
|
} else {
|
||
|
applogger.Info("Administrator cancels subscription to horse stock orders.")
|
||
|
return
|
||
|
}
|
||
|
}
|
||
|
|
||
|
time.Sleep(1 * time.Second)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// orderSubAdminShareThaSubscribeByOrder
|
||
|
//
|
||
|
// @Description: 管理员泰股|订单订阅|持仓订单订阅|持仓浮动盈亏订阅
|
||
|
// @receiver u
|
||
|
// @param psgMsg
|
||
|
func (u *Client) orderSubAdminShareThaSubscribeByOrder(psgMsg *SymbolMessage) {
|
||
|
for {
|
||
|
if psgMsg.Symbol == setting.AdminShareThaSubscribe {
|
||
|
var hashList []share.ShareThaTallyCache
|
||
|
for _, field := range psgMsg.Order {
|
||
|
fieldStr, err := data.Reds.HGet(context.Background(), setting.AdminShareThaSubscribe, field).Result()
|
||
|
if err != nil {
|
||
|
continue
|
||
|
}
|
||
|
var msg share.ShareThaTallyCache
|
||
|
if err = json.Unmarshal([]byte(fieldStr), &msg); err != nil {
|
||
|
time.Sleep(5 * time.Second)
|
||
|
continue
|
||
|
}
|
||
|
hashList = append(hashList, msg)
|
||
|
}
|
||
|
|
||
|
for _, value := range hashList {
|
||
|
orderModel := shareData.ShareThaOrderProcessing(setting.AdminShareThaSubscribe, value)
|
||
|
if orderModel != nil {
|
||
|
_, ok := u.symbol.Load(psgMsg.Symbol)
|
||
|
if ok {
|
||
|
// 清理[撤单|平仓]缓存队列
|
||
|
if orderModel.Status == flags.Cancel || orderModel.Status == flags.Close {
|
||
|
if err := data.Reds.HDel(context.Background(), setting.AdminShareThaSubscribe, orderModel.OrderId).Err(); err != nil {
|
||
|
applogger.Error("AdminShareThaSubscribe.HDel:%v", err)
|
||
|
continue
|
||
|
}
|
||
|
}
|
||
|
orderStr, err := json.Marshal(orderModel)
|
||
|
if err != nil {
|
||
|
applogger.Error("Administrator Tai Stock Subscription Cache Order Error:%v", err)
|
||
|
time.Sleep(5 * time.Second)
|
||
|
continue
|
||
|
}
|
||
|
|
||
|
u.msg <- orderStr // 用户(挂单|持仓)订阅
|
||
|
} else {
|
||
|
applogger.Info("Administrator cancels subscription to Thai stock orders.")
|
||
|
return
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
time.Sleep(600 * time.Millisecond)
|
||
|
}
|
||
|
}
|
||
|
func (u *Client) orderSubAdminShareThaSubscribeBySum(psgMsg *SymbolMessage) {
|
||
|
for {
|
||
|
if psgMsg.Symbol == setting.AdminShareThaSumSubscribe {
|
||
|
priceSum, err := memory.ShareThaFloating.Get(flags.FloatingTha)
|
||
|
if err != nil {
|
||
|
continue
|
||
|
}
|
||
|
|
||
|
result := &SymbolSumResult{
|
||
|
Symbol: psgMsg.Symbol,
|
||
|
Price: string(priceSum),
|
||
|
}
|
||
|
|
||
|
priceByte, err := json.Marshal(result)
|
||
|
if err != nil {
|
||
|
continue
|
||
|
}
|
||
|
|
||
|
_, ok := u.symbol.Load(psgMsg.Symbol)
|
||
|
if ok {
|
||
|
u.msg <- priceByte
|
||
|
} else {
|
||
|
applogger.Info("Administrator cancels subscription to Thai stock orders.")
|
||
|
return
|
||
|
}
|
||
|
}
|
||
|
|
||
|
time.Sleep(1 * time.Second)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// orderSubAdminShareIdnSubscribeByOrder
|
||
|
//
|
||
|
// @Description: 管理员印尼股|订单订阅|持仓订单订阅|持仓浮动盈亏订阅
|
||
|
// @receiver u
|
||
|
// @param psgMsg
|
||
|
func (u *Client) orderSubAdminShareIdnSubscribeByOrder(psgMsg *SymbolMessage) {
|
||
|
for {
|
||
|
if psgMsg.Symbol == setting.AdminShareIdnSubscribe {
|
||
|
var hashList []share.ShareIdnTallyCache
|
||
|
for _, field := range psgMsg.Order {
|
||
|
fieldStr, err := data.Reds.HGet(context.Background(), setting.AdminShareIdnSubscribe, field).Result()
|
||
|
if err != nil {
|
||
|
continue
|
||
|
}
|
||
|
var msg share.ShareIdnTallyCache
|
||
|
if err = json.Unmarshal([]byte(fieldStr), &msg); err != nil {
|
||
|
time.Sleep(5 * time.Second)
|
||
|
continue
|
||
|
}
|
||
|
hashList = append(hashList, msg)
|
||
|
}
|
||
|
|
||
|
for _, value := range hashList {
|
||
|
orderModel := shareData.ShareIdnOrderProcessing(setting.AdminShareIdnSubscribe, value)
|
||
|
if orderModel != nil {
|
||
|
_, ok := u.symbol.Load(psgMsg.Symbol)
|
||
|
if ok {
|
||
|
// 清理[撤单|平仓]缓存队列
|
||
|
if orderModel.Status == flags.Cancel || orderModel.Status == flags.Close {
|
||
|
if err := data.Reds.HDel(context.Background(), setting.AdminShareIdnSubscribe, orderModel.OrderId).Err(); err != nil {
|
||
|
applogger.Error("AdminShareIdnSubscribe.HDel:%v", err)
|
||
|
continue
|
||
|
}
|
||
|
}
|
||
|
orderStr, err := json.Marshal(orderModel)
|
||
|
if err != nil {
|
||
|
applogger.Error("Administrator Indonesia stock subscription cache order error:%v", err)
|
||
|
time.Sleep(5 * time.Second)
|
||
|
continue
|
||
|
}
|
||
|
|
||
|
u.msg <- orderStr // 用户(挂单|持仓)订阅
|
||
|
} else {
|
||
|
applogger.Info("Administrator cancels Indonesian order subscription.")
|
||
|
return
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
time.Sleep(600 * time.Millisecond)
|
||
|
}
|
||
|
}
|
||
|
func (u *Client) orderSubAdminShareIdnSubscribeBySum(psgMsg *SymbolMessage) {
|
||
|
for {
|
||
|
if psgMsg.Symbol == setting.AdminShareIdnSumSubscribe {
|
||
|
priceSum, err := memory.ShareIdnFloating.Get(flags.FloatingIdn)
|
||
|
if err != nil {
|
||
|
continue
|
||
|
}
|
||
|
|
||
|
result := &SymbolSumResult{
|
||
|
Symbol: psgMsg.Symbol,
|
||
|
Price: string(priceSum),
|
||
|
}
|
||
|
|
||
|
priceByte, err := json.Marshal(result)
|
||
|
if err != nil {
|
||
|
continue
|
||
|
}
|
||
|
|
||
|
_, ok := u.symbol.Load(psgMsg.Symbol)
|
||
|
if ok {
|
||
|
u.msg <- priceByte
|
||
|
} else {
|
||
|
applogger.Info("Administrator cancels Indonesian stock order subscription.")
|
||
|
return
|
||
|
}
|
||
|
}
|
||
|
|
||
|
time.Sleep(1 * time.Second)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// orderSubAdminShareInrSubscribeByOrder
|
||
|
//
|
||
|
// @Description: 管理员-印度股|订单订阅|持仓订单订阅|持仓浮动盈亏订阅
|
||
|
// @receiver u
|
||
|
// @param psgMsg
|
||
|
func (u *Client) orderSubAdminShareInrSubscribeByOrder(psgMsg *SymbolMessage) {
|
||
|
for {
|
||
|
if psgMsg.Symbol == setting.AdminShareInrSubscribe {
|
||
|
var hashList []share.ShareInrTallyCache
|
||
|
for _, field := range psgMsg.Order {
|
||
|
fieldStr, err := data.Reds.HGet(context.Background(), psgMsg.Symbol, field).Result()
|
||
|
if err != nil {
|
||
|
continue
|
||
|
}
|
||
|
var msg share.ShareInrTallyCache
|
||
|
if err = json.Unmarshal([]byte(fieldStr), &msg); err != nil {
|
||
|
time.Sleep(5 * time.Second)
|
||
|
continue
|
||
|
}
|
||
|
hashList = append(hashList, msg)
|
||
|
}
|
||
|
|
||
|
for _, value := range hashList {
|
||
|
orderModel := shareData.ShareInrOrderProcessing(psgMsg.Symbol, value)
|
||
|
if orderModel != nil {
|
||
|
_, ok := u.symbol.Load(psgMsg.Symbol)
|
||
|
if ok {
|
||
|
// 清理[撤单|平仓]缓存队列
|
||
|
if orderModel.Status == flags.Cancel || orderModel.Status == flags.Close {
|
||
|
if err := data.Reds.HDel(context.Background(), psgMsg.Symbol, orderModel.OrderId).Err(); err != nil {
|
||
|
applogger.Error("AdminShareInrSubscribe.HDel:%v", err)
|
||
|
continue
|
||
|
}
|
||
|
}
|
||
|
orderStr, err := json.Marshal(orderModel)
|
||
|
if err != nil {
|
||
|
applogger.Error("Administrator India stock subscription cache order error:%v", err)
|
||
|
time.Sleep(5 * time.Second)
|
||
|
continue
|
||
|
}
|
||
|
|
||
|
u.msg <- orderStr // 用户(挂单|持仓)订阅
|
||
|
} else {
|
||
|
applogger.Info("Administrator cancels India order subscription.")
|
||
|
return
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
time.Sleep(600 * time.Millisecond)
|
||
|
}
|
||
|
}
|
||
|
func (u *Client) orderSubAdminShareInrSubscribeBySum(psgMsg *SymbolMessage) {
|
||
|
for {
|
||
|
if psgMsg.Symbol == setting.AdminShareInrSumSubscribe {
|
||
|
priceSum, err := memory.ShareInrFloating.Get(flags.FloatingInr)
|
||
|
if err != nil {
|
||
|
continue
|
||
|
}
|
||
|
|
||
|
result := &SymbolSumResult{
|
||
|
Symbol: psgMsg.Symbol,
|
||
|
Price: string(priceSum),
|
||
|
}
|
||
|
|
||
|
priceByte, err := json.Marshal(result)
|
||
|
if err != nil {
|
||
|
continue
|
||
|
}
|
||
|
|
||
|
_, ok := u.symbol.Load(psgMsg.Symbol)
|
||
|
if ok {
|
||
|
u.msg <- priceByte
|
||
|
} else {
|
||
|
applogger.Info("Administrator cancels Indian stock order subscription.")
|
||
|
return
|
||
|
}
|
||
|
}
|
||
|
|
||
|
time.Sleep(1 * time.Second)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// orderSubAdminShareInrSubscribe
|
||
|
//
|
||
|
// @Description: 管理员-新加坡股|持仓订单订阅|持仓浮动盈亏订阅
|
||
|
// @receiver u
|
||
|
// @param psgMsg
|
||
|
func (u *Client) orderSubAdminShareSgdSubscribeByOrder(psgMsg *SymbolMessage) {
|
||
|
for {
|
||
|
if psgMsg.Symbol == setting.AdminShareSgdSubscribe {
|
||
|
var hashList []share.ShareSgdTallyCache
|
||
|
for _, field := range psgMsg.Order {
|
||
|
fieldStr, err := data.Reds.HGet(context.Background(), setting.AdminShareSgdSubscribe, field).Result()
|
||
|
if err != nil {
|
||
|
continue
|
||
|
}
|
||
|
var msg share.ShareSgdTallyCache
|
||
|
if err = json.Unmarshal([]byte(fieldStr), &msg); err != nil {
|
||
|
time.Sleep(5 * time.Second)
|
||
|
continue
|
||
|
}
|
||
|
hashList = append(hashList, msg)
|
||
|
}
|
||
|
|
||
|
for _, value := range hashList {
|
||
|
orderModel := shareData.ShareSgdOrderProcessing(setting.AdminShareSgdSubscribe, value)
|
||
|
if orderModel != nil {
|
||
|
_, ok := u.symbol.Load(psgMsg.Symbol)
|
||
|
if ok {
|
||
|
// 清理[撤单|平仓]缓存队列
|
||
|
if orderModel.Status == flags.Cancel || orderModel.Status == flags.Close {
|
||
|
if err := data.Reds.HDel(context.Background(), setting.AdminShareSgdSubscribe, orderModel.OrderId).Err(); err != nil {
|
||
|
applogger.Error("AdminShareSgdSubscribe.HDel:%v", err)
|
||
|
continue
|
||
|
}
|
||
|
}
|
||
|
orderStr, err := json.Marshal(orderModel)
|
||
|
if err != nil {
|
||
|
applogger.Error("Administrator Singapore stock subscription cache order error:%v", err)
|
||
|
time.Sleep(5 * time.Second)
|
||
|
continue
|
||
|
}
|
||
|
|
||
|
u.msg <- orderStr // 用户(挂单|持仓)订阅
|
||
|
} else {
|
||
|
applogger.Info("Administrator cancels Singapore order subscription.")
|
||
|
return
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
time.Sleep(600 * time.Millisecond)
|
||
|
}
|
||
|
}
|
||
|
func (u *Client) orderSubAdminShareSgdSubscribeBySum(psgMsg *SymbolMessage) {
|
||
|
for {
|
||
|
if psgMsg.Symbol == setting.AdminShareSgdSumSubscribe {
|
||
|
priceSum, err := memory.ShareSgdFloating.Get(flags.FloatingSgd)
|
||
|
if err != nil {
|
||
|
continue
|
||
|
}
|
||
|
|
||
|
result := &SymbolSumResult{
|
||
|
Symbol: psgMsg.Symbol,
|
||
|
Price: string(priceSum),
|
||
|
}
|
||
|
|
||
|
priceByte, err := json.Marshal(result)
|
||
|
if err != nil {
|
||
|
continue
|
||
|
}
|
||
|
|
||
|
_, ok := u.symbol.Load(psgMsg.Symbol)
|
||
|
if ok {
|
||
|
u.msg <- priceByte
|
||
|
} else {
|
||
|
applogger.Info("Administrator cancels Singapore stock order subscription.")
|
||
|
return
|
||
|
}
|
||
|
}
|
||
|
|
||
|
time.Sleep(1 * time.Second)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// orderSubAdminShareGbxSubscribeByOrder
|
||
|
//
|
||
|
// @Description: 管理员-英股|持仓订单订阅|持仓浮动盈亏订阅
|
||
|
// @receiver u
|
||
|
// @param psgMsg
|
||
|
func (u *Client) orderSubAdminShareGbxSubscribeByOrder(psgMsg *SymbolMessage) {
|
||
|
for {
|
||
|
if psgMsg.Symbol == setting.AdminShareGbxSubscribe {
|
||
|
var hashList []share.ShareGbxTallyCache
|
||
|
for _, field := range psgMsg.Order {
|
||
|
fieldStr, err := data.Reds.HGet(context.Background(), setting.AdminShareGbxSubscribe, field).Result()
|
||
|
if err != nil {
|
||
|
continue
|
||
|
}
|
||
|
var msg share.ShareGbxTallyCache
|
||
|
if err = json.Unmarshal([]byte(fieldStr), &msg); err != nil {
|
||
|
time.Sleep(5 * time.Second)
|
||
|
continue
|
||
|
}
|
||
|
hashList = append(hashList, msg)
|
||
|
}
|
||
|
|
||
|
for _, value := range hashList {
|
||
|
orderModel := shareData.ShareGbxOrderProcessing(setting.AdminShareGbxSubscribe, value)
|
||
|
if orderModel != nil {
|
||
|
_, ok := u.symbol.Load(psgMsg.Symbol)
|
||
|
if ok {
|
||
|
// 清理[撤单|平仓]缓存队列
|
||
|
if orderModel.Status == flags.Cancel || orderModel.Status == flags.Close {
|
||
|
if err := data.Reds.HDel(context.Background(), setting.AdminShareGbxSubscribe, orderModel.OrderId).Err(); err != nil {
|
||
|
applogger.Error("AdminShareGbxSubscribe.HDel:%v", err)
|
||
|
continue
|
||
|
}
|
||
|
}
|
||
|
orderStr, err := json.Marshal(orderModel)
|
||
|
if err != nil {
|
||
|
applogger.Error("Administrator UK stock subscription cache order error:%v", err)
|
||
|
time.Sleep(5 * time.Second)
|
||
|
continue
|
||
|
}
|
||
|
|
||
|
u.msg <- orderStr // 用户(挂单|持仓)订阅
|
||
|
} else {
|
||
|
applogger.Info("Administrator cancels UK order subscription.")
|
||
|
return
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
time.Sleep(600 * time.Millisecond)
|
||
|
}
|
||
|
}
|
||
|
func (u *Client) orderSubAdminShareGbxSubscribeBySum(psgMsg *SymbolMessage) {
|
||
|
for {
|
||
|
if psgMsg.Symbol == setting.AdminShareGbxSumSubscribe {
|
||
|
priceSum, err := memory.ShareGbxFloating.Get(flags.FloatingGbx)
|
||
|
if err != nil {
|
||
|
continue
|
||
|
}
|
||
|
|
||
|
result := &SymbolSumResult{
|
||
|
Symbol: psgMsg.Symbol,
|
||
|
Price: string(priceSum),
|
||
|
}
|
||
|
|
||
|
priceByte, err := json.Marshal(result)
|
||
|
if err != nil {
|
||
|
continue
|
||
|
}
|
||
|
|
||
|
_, ok := u.symbol.Load(psgMsg.Symbol)
|
||
|
if ok {
|
||
|
u.msg <- priceByte
|
||
|
} else {
|
||
|
applogger.Info("Administrator cancels UK stock order subscription.")
|
||
|
return
|
||
|
}
|
||
|
}
|
||
|
|
||
|
time.Sleep(1 * time.Second)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// orderSubAdminShareHkdSubscribeByOrder
|
||
|
//
|
||
|
// @Description: 管理员-港股|持仓订单订阅|持仓浮动盈亏订阅
|
||
|
// @receiver u
|
||
|
// @param psgMsg
|
||
|
func (u *Client) orderSubAdminShareHkdSubscribeByOrder(psgMsg *SymbolMessage) {
|
||
|
for {
|
||
|
if psgMsg.Symbol == setting.SubscribeAdminShareHkd {
|
||
|
var hashList []share.ShareHkdTallyCache
|
||
|
for _, field := range psgMsg.Order {
|
||
|
fieldStr, err := data.Reds.HGet(context.Background(), setting.AdminShareHkdSubscribe, field).Result()
|
||
|
if err != nil {
|
||
|
continue
|
||
|
}
|
||
|
var msg share.ShareHkdTallyCache
|
||
|
if err = json.Unmarshal([]byte(fieldStr), &msg); err != nil {
|
||
|
time.Sleep(5 * time.Second)
|
||
|
continue
|
||
|
}
|
||
|
hashList = append(hashList, msg)
|
||
|
}
|
||
|
|
||
|
for _, value := range hashList {
|
||
|
orderModel := shareData.ShareHkdOrderProcessing(setting.AdminShareHkdSubscribe, 1, value)
|
||
|
if orderModel != nil {
|
||
|
_, ok := u.symbol.Load(psgMsg.Symbol)
|
||
|
if ok {
|
||
|
// 清理[撤单|平仓]缓存队列
|
||
|
if orderModel.Status == flags.Cancel || orderModel.Status == flags.Close {
|
||
|
if err := data.Reds.HDel(context.Background(), setting.AdminShareHkdSubscribe, orderModel.OrderId).Err(); err != nil {
|
||
|
applogger.Error("AdminShareHkdSubscribe.HDel:%v", err)
|
||
|
continue
|
||
|
}
|
||
|
}
|
||
|
orderStr, err := json.Marshal(orderModel)
|
||
|
if err != nil {
|
||
|
applogger.Error("Administrator Hong Kong stock subscription cache order error:%v", err)
|
||
|
time.Sleep(5 * time.Second)
|
||
|
continue
|
||
|
}
|
||
|
|
||
|
u.msg <- orderStr // 用户(挂单|持仓)订阅
|
||
|
} else {
|
||
|
applogger.Info("Administrator cancels Singapore order subscription.")
|
||
|
return
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
time.Sleep(600 * time.Millisecond)
|
||
|
}
|
||
|
}
|
||
|
func (u *Client) orderSubAdminShareHkdSubscribeBySum(psgMsg *SymbolMessage) {
|
||
|
for {
|
||
|
if psgMsg.Symbol == setting.AdminShareHkdSumSubscribe {
|
||
|
priceSum, err := memory.ShareHkdFloating.Get(flags.FloatingHkd)
|
||
|
if err != nil {
|
||
|
continue
|
||
|
}
|
||
|
|
||
|
result := &SymbolSumResult{
|
||
|
Symbol: psgMsg.Symbol,
|
||
|
Price: string(priceSum),
|
||
|
}
|
||
|
|
||
|
priceByte, err := json.Marshal(result)
|
||
|
if err != nil {
|
||
|
continue
|
||
|
}
|
||
|
|
||
|
_, ok := u.symbol.Load(psgMsg.Symbol)
|
||
|
if ok {
|
||
|
u.msg <- priceByte
|
||
|
} else {
|
||
|
applogger.Info("Administrator cancels Hong Kong stock order subscription.")
|
||
|
return
|
||
|
}
|
||
|
}
|
||
|
|
||
|
time.Sleep(1 * time.Second)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// orderSubAdminShareEurSubscribeByOrder
|
||
|
//
|
||
|
// @Description: 管理员-德股|持仓订单订阅|持仓浮动盈亏订阅
|
||
|
// @receiver u
|
||
|
// @param psgMsg
|
||
|
func (u *Client) orderSubAdminShareEurSubscribeByOrder(psgMsg *SymbolMessage) {
|
||
|
for {
|
||
|
if psgMsg.Symbol == setting.AdminShareEurSubscribe {
|
||
|
var hashList []share.ShareEurTallyCache
|
||
|
for _, field := range psgMsg.Order {
|
||
|
fieldStr, err := data.Reds.HGet(context.Background(), setting.AdminShareEurSubscribe, field).Result()
|
||
|
if err != nil {
|
||
|
continue
|
||
|
}
|
||
|
var msg share.ShareEurTallyCache
|
||
|
if err = json.Unmarshal([]byte(fieldStr), &msg); err != nil {
|
||
|
time.Sleep(5 * time.Second)
|
||
|
continue
|
||
|
}
|
||
|
hashList = append(hashList, msg)
|
||
|
}
|
||
|
|
||
|
for _, value := range hashList {
|
||
|
orderModel := shareData.ShareEurOrderProcessing(setting.AdminShareEurSubscribe, value)
|
||
|
if orderModel != nil {
|
||
|
_, ok := u.symbol.Load(psgMsg.Symbol)
|
||
|
if ok {
|
||
|
// 清理[撤单|平仓]缓存队列
|
||
|
if orderModel.Status == flags.Cancel || orderModel.Status == flags.Close {
|
||
|
if err := data.Reds.HDel(context.Background(), setting.AdminShareEurSubscribe, orderModel.OrderId).Err(); err != nil {
|
||
|
applogger.Error("AdminShareEurSubscribe.HDel:%v", err)
|
||
|
continue
|
||
|
}
|
||
|
}
|
||
|
orderStr, err := json.Marshal(orderModel)
|
||
|
if err != nil {
|
||
|
applogger.Error("Administrator Eur stock subscription cache order error:%v", err)
|
||
|
time.Sleep(5 * time.Second)
|
||
|
continue
|
||
|
}
|
||
|
|
||
|
u.msg <- orderStr // 用户(挂单|持仓)订阅
|
||
|
} else {
|
||
|
applogger.Info("Administrator cancels Eur order subscription.")
|
||
|
return
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
time.Sleep(600 * time.Millisecond)
|
||
|
}
|
||
|
}
|
||
|
func (u *Client) orderSubAdminShareEurSubscribeBySum(psgMsg *SymbolMessage) {
|
||
|
for {
|
||
|
if psgMsg.Symbol == setting.AdminShareEurSumSubscribe {
|
||
|
priceSum, err := memory.ShareEurFloating.Get(flags.FloatingEur)
|
||
|
if err != nil {
|
||
|
continue
|
||
|
}
|
||
|
|
||
|
result := &SymbolSumResult{
|
||
|
Symbol: psgMsg.Symbol,
|
||
|
Price: string(priceSum),
|
||
|
}
|
||
|
|
||
|
priceByte, err := json.Marshal(result)
|
||
|
if err != nil {
|
||
|
continue
|
||
|
}
|
||
|
|
||
|
_, ok := u.symbol.Load(psgMsg.Symbol)
|
||
|
if ok {
|
||
|
u.msg <- priceByte
|
||
|
} else {
|
||
|
applogger.Info("Administrator cancels Eur stock order subscription.")
|
||
|
return
|
||
|
}
|
||
|
}
|
||
|
|
||
|
time.Sleep(1 * time.Second)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// orderSubAdminShareFurSubscribeByOrder
|
||
|
//
|
||
|
// @Description: 管理员-法股|持仓订单订阅|持仓浮动盈亏订阅
|
||
|
// @receiver u
|
||
|
// @param psgMsg
|
||
|
func (u *Client) orderSubAdminShareFurSubscribeByOrder(psgMsg *SymbolMessage) {
|
||
|
for {
|
||
|
if psgMsg.Symbol == setting.AdminShareFurSubscribe {
|
||
|
var hashList []share.ShareFurTallyCache
|
||
|
for _, field := range psgMsg.Order {
|
||
|
fieldStr, err := data.Reds.HGet(context.Background(), setting.AdminShareFurSubscribe, field).Result()
|
||
|
if err != nil {
|
||
|
continue
|
||
|
}
|
||
|
var msg share.ShareFurTallyCache
|
||
|
if err = json.Unmarshal([]byte(fieldStr), &msg); err != nil {
|
||
|
time.Sleep(5 * time.Second)
|
||
|
continue
|
||
|
}
|
||
|
hashList = append(hashList, msg)
|
||
|
}
|
||
|
|
||
|
for _, value := range hashList {
|
||
|
orderModel := shareData.ShareFurOrderProcessing(setting.AdminShareFurSubscribe, value)
|
||
|
if orderModel != nil {
|
||
|
_, ok := u.symbol.Load(psgMsg.Symbol)
|
||
|
if ok {
|
||
|
// 清理[撤单|平仓]缓存队列
|
||
|
if orderModel.Status == flags.Cancel || orderModel.Status == flags.Close {
|
||
|
if err := data.Reds.HDel(context.Background(), setting.AdminShareFurSubscribe, orderModel.OrderId).Err(); err != nil {
|
||
|
applogger.Error("AdminShareFurSubscribe.HDel:%v", err)
|
||
|
continue
|
||
|
}
|
||
|
}
|
||
|
orderStr, err := json.Marshal(orderModel)
|
||
|
if err != nil {
|
||
|
applogger.Error("Administrator Fur stock subscription cache order error:%v", err)
|
||
|
time.Sleep(5 * time.Second)
|
||
|
continue
|
||
|
}
|
||
|
|
||
|
u.msg <- orderStr // 用户(挂单|持仓)订阅
|
||
|
} else {
|
||
|
applogger.Info("Administrator cancels Fur order subscription.")
|
||
|
return
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
time.Sleep(600 * time.Millisecond)
|
||
|
}
|
||
|
}
|
||
|
func (u *Client) orderSubAdminShareFurSubscribeBySum(psgMsg *SymbolMessage) {
|
||
|
for {
|
||
|
if psgMsg.Symbol == setting.AdminShareFurSumSubscribe {
|
||
|
priceSum, err := memory.ShareFurFloating.Get(flags.FloatingFur)
|
||
|
if err != nil {
|
||
|
continue
|
||
|
}
|
||
|
|
||
|
result := &SymbolSumResult{
|
||
|
Symbol: psgMsg.Symbol,
|
||
|
Price: string(priceSum),
|
||
|
}
|
||
|
|
||
|
priceByte, err := json.Marshal(result)
|
||
|
if err != nil {
|
||
|
continue
|
||
|
}
|
||
|
|
||
|
_, ok := u.symbol.Load(psgMsg.Symbol)
|
||
|
if ok {
|
||
|
u.msg <- priceByte
|
||
|
} else {
|
||
|
applogger.Info("Administrator cancels Fur stock order subscription.")
|
||
|
return
|
||
|
}
|
||
|
}
|
||
|
|
||
|
time.Sleep(1 * time.Second)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// orderSubAdminShareJpySubscribeByOrder
|
||
|
//
|
||
|
// @Description: 管理员-日股|持仓订单订阅|持仓浮动盈亏订阅
|
||
|
// @receiver u
|
||
|
// @param psgMsg
|
||
|
func (u *Client) orderSubAdminShareJpySubscribeByOrder(psgMsg *SymbolMessage) {
|
||
|
for {
|
||
|
if psgMsg.Symbol == setting.AdminShareJpySubscribe {
|
||
|
var hashList []share.ShareJpyTallyCache
|
||
|
for _, field := range psgMsg.Order {
|
||
|
fieldStr, err := data.Reds.HGet(context.Background(), setting.AdminShareJpySubscribe, field).Result()
|
||
|
if err != nil {
|
||
|
continue
|
||
|
}
|
||
|
var msg share.ShareJpyTallyCache
|
||
|
if err = json.Unmarshal([]byte(fieldStr), &msg); err != nil {
|
||
|
time.Sleep(5 * time.Second)
|
||
|
continue
|
||
|
}
|
||
|
hashList = append(hashList, msg)
|
||
|
}
|
||
|
|
||
|
for _, value := range hashList {
|
||
|
orderModel := shareData.ShareJpyOrderProcessing(setting.AdminShareJpySubscribe, value)
|
||
|
if orderModel != nil {
|
||
|
_, ok := u.symbol.Load(psgMsg.Symbol)
|
||
|
if ok {
|
||
|
// 清理[撤单|平仓]缓存队列
|
||
|
if orderModel.Status == flags.Cancel || orderModel.Status == flags.Close {
|
||
|
if err := data.Reds.HDel(context.Background(), setting.AdminShareJpySubscribe, orderModel.OrderId).Err(); err != nil {
|
||
|
applogger.Error("AdminShareJpySubscribe.HDel:%v", err)
|
||
|
continue
|
||
|
}
|
||
|
}
|
||
|
orderStr, err := json.Marshal(orderModel)
|
||
|
if err != nil {
|
||
|
applogger.Error("Administrator Jpy stock subscription cache order error:%v", err)
|
||
|
time.Sleep(5 * time.Second)
|
||
|
continue
|
||
|
}
|
||
|
|
||
|
u.msg <- orderStr // 用户(挂单|持仓)订阅
|
||
|
} else {
|
||
|
applogger.Info("Administrator cancels Jpy order subscription.")
|
||
|
return
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
time.Sleep(600 * time.Millisecond)
|
||
|
}
|
||
|
}
|
||
|
func (u *Client) orderSubAdminShareJpySubscribeBySum(psgMsg *SymbolMessage) {
|
||
|
for {
|
||
|
if psgMsg.Symbol == setting.AdminShareJpySumSubscribe {
|
||
|
priceSum, err := memory.ShareJpyFloating.Get(flags.FloatingJpy)
|
||
|
if err != nil {
|
||
|
continue
|
||
|
}
|
||
|
|
||
|
result := &SymbolSumResult{
|
||
|
Symbol: psgMsg.Symbol,
|
||
|
Price: string(priceSum),
|
||
|
}
|
||
|
|
||
|
priceByte, err := json.Marshal(result)
|
||
|
if err != nil {
|
||
|
continue
|
||
|
}
|
||
|
|
||
|
_, ok := u.symbol.Load(psgMsg.Symbol)
|
||
|
if ok {
|
||
|
u.msg <- priceByte
|
||
|
} else {
|
||
|
applogger.Info("Administrator cancels Jpy stock order subscription.")
|
||
|
return
|
||
|
}
|
||
|
}
|
||
|
|
||
|
time.Sleep(1 * time.Second)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// orderSubAdminShareBrlSubscribeByOrder
|
||
|
//
|
||
|
// @Description: 管理员-巴西股|持仓订单订阅|持仓浮动盈亏订阅
|
||
|
// @receiver u
|
||
|
// @param psgMsg
|
||
|
func (u *Client) orderSubAdminShareBrlSubscribeByOrder(psgMsg *SymbolMessage) {
|
||
|
for {
|
||
|
if psgMsg.Symbol == setting.AdminShareBrlSubscribe {
|
||
|
var hashList []share.ShareBrlTallyCache
|
||
|
for _, field := range psgMsg.Order {
|
||
|
fieldStr, err := data.Reds.HGet(context.Background(), setting.AdminShareBrlSubscribe, field).Result()
|
||
|
if err != nil {
|
||
|
continue
|
||
|
}
|
||
|
var msg share.ShareBrlTallyCache
|
||
|
if err = json.Unmarshal([]byte(fieldStr), &msg); err != nil {
|
||
|
time.Sleep(5 * time.Second)
|
||
|
continue
|
||
|
}
|
||
|
hashList = append(hashList, msg)
|
||
|
}
|
||
|
|
||
|
for _, value := range hashList {
|
||
|
orderModel := shareData.ShareBrlOrderProcessing(setting.AdminShareBrlSubscribe, value)
|
||
|
if orderModel != nil {
|
||
|
_, ok := u.symbol.Load(psgMsg.Symbol)
|
||
|
if ok {
|
||
|
// 清理[撤单|平仓]缓存队列
|
||
|
if orderModel.Status == flags.Cancel || orderModel.Status == flags.Close {
|
||
|
if err := data.Reds.HDel(context.Background(), setting.AdminShareBrlSubscribe, orderModel.OrderId).Err(); err != nil {
|
||
|
applogger.Error("AdminShareBrlSubscribe.HDel:%v", err)
|
||
|
continue
|
||
|
}
|
||
|
}
|
||
|
orderStr, err := json.Marshal(orderModel)
|
||
|
if err != nil {
|
||
|
applogger.Error("Administrator Brl stock subscription cache order error:%v", err)
|
||
|
time.Sleep(5 * time.Second)
|
||
|
continue
|
||
|
}
|
||
|
|
||
|
u.msg <- orderStr // 用户(挂单|持仓)订阅
|
||
|
} else {
|
||
|
applogger.Info("Administrator cancels Brl order subscription.")
|
||
|
return
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
time.Sleep(600 * time.Millisecond)
|
||
|
}
|
||
|
}
|
||
|
func (u *Client) orderSubAdminShareBrlSubscribeBySum(psgMsg *SymbolMessage) {
|
||
|
for {
|
||
|
if psgMsg.Symbol == setting.AdminShareBrlSumSubscribe {
|
||
|
priceSum, err := memory.ShareBrlFloating.Get(flags.FloatingBrl)
|
||
|
if err != nil {
|
||
|
continue
|
||
|
}
|
||
|
|
||
|
result := &SymbolSumResult{
|
||
|
Symbol: psgMsg.Symbol,
|
||
|
Price: string(priceSum),
|
||
|
}
|
||
|
|
||
|
priceByte, err := json.Marshal(result)
|
||
|
if err != nil {
|
||
|
continue
|
||
|
}
|
||
|
|
||
|
_, ok := u.symbol.Load(psgMsg.Symbol)
|
||
|
if ok {
|
||
|
u.msg <- priceByte
|
||
|
} else {
|
||
|
applogger.Info("Administrator cancels Brl stock order subscription.")
|
||
|
return
|
||
|
}
|
||
|
}
|
||
|
|
||
|
time.Sleep(1 * time.Second)
|
||
|
}
|
||
|
}
|