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.
664 lines
20 KiB
664 lines
20 KiB
package data
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"matchmaking-system/internal/pkg/flags"
|
|
"matchmaking-system/internal/pkg/logging/applogger"
|
|
models "matchmaking-system/internal/pkg/model"
|
|
"matchmaking-system/internal/pkg/setting"
|
|
"time"
|
|
)
|
|
|
|
// UserList
|
|
//
|
|
// @Description: 查询userId
|
|
// @param data
|
|
func UserList(data *Data) []models.BotUsers {
|
|
var userList []models.BotUsers
|
|
if err := data.mysqlDB.Table(flags.BotUsers).Where("status = 1").Find(&userList); err != nil {
|
|
applogger.Debug("查询用户信息错误:%v", err)
|
|
return []models.BotUsers{}
|
|
}
|
|
|
|
return userList
|
|
}
|
|
|
|
// TradeListByUserId
|
|
//
|
|
// @Description: 根据UserId查询持仓订单信息
|
|
// @param data
|
|
// @param tableName
|
|
// @return map[string]string
|
|
func TradeListByUserId(data *Data, tableName string, userId int64) map[string]string {
|
|
orderMap := make(map[string]string)
|
|
switch tableName {
|
|
case flags.BotStockTrade:
|
|
var shareUsList []models.BotStockTrade
|
|
if err := data.mysqlDB.Table(tableName).
|
|
Where("status = 1 or status = 0").
|
|
Where("user_id = ?", userId).
|
|
Find(&shareUsList); err != nil {
|
|
return nil
|
|
}
|
|
for _, value := range shareUsList {
|
|
orderMap[value.OrderId] = value.OrderId
|
|
}
|
|
case flags.BotStockThaTrade:
|
|
var shareThaList []models.BotStockThaTrade
|
|
if err := data.mysqlDB.Table(tableName).
|
|
Where("status = 1 or status = 0").
|
|
Where("user_id = ?", userId).
|
|
Find(&shareThaList); err != nil {
|
|
return nil
|
|
}
|
|
for _, value := range shareThaList {
|
|
orderMap[value.OrderId] = value.OrderId
|
|
}
|
|
case flags.BotStockMysTrade:
|
|
var shareMysList []models.BotStockMysTrade
|
|
if err := data.mysqlDB.Table(tableName).
|
|
Where("status = 1 or status = 0").
|
|
Where("user_id = ?", userId).
|
|
Find(&shareMysList); err != nil {
|
|
return nil
|
|
}
|
|
for _, value := range shareMysList {
|
|
orderMap[value.OrderId] = value.OrderId
|
|
}
|
|
case flags.BotStockIdnTrade:
|
|
var shareIdnList []models.BotStockIdnTrade
|
|
if err := data.mysqlDB.Table(tableName).
|
|
Where("status = 1 or status = 0").
|
|
Where("user_id = ?", userId).
|
|
Find(&shareIdnList); err != nil {
|
|
return nil
|
|
}
|
|
for _, value := range shareIdnList {
|
|
orderMap[value.OrderId] = value.OrderId
|
|
}
|
|
case flags.BotStockInTrade:
|
|
var shareInrList []models.BotStockInTrade
|
|
if err := data.mysqlDB.Table(tableName).
|
|
Where("status = 1 or status = 0").
|
|
Where("user_id = ?", userId).
|
|
Find(&shareInrList); err != nil {
|
|
return nil
|
|
}
|
|
for _, value := range shareInrList {
|
|
orderMap[value.OrderId] = value.OrderId
|
|
}
|
|
case flags.BotStockSgdTrade:
|
|
var shareSgdList []models.BotStockSgdTrade
|
|
if err := data.mysqlDB.Table(tableName).
|
|
Where("status = 1 or status = 0").
|
|
Where("user_id = ?", userId).
|
|
Find(&shareSgdList); err != nil {
|
|
return nil
|
|
}
|
|
for _, value := range shareSgdList {
|
|
orderMap[value.OrderId] = value.OrderId
|
|
}
|
|
case flags.BotStockHkdTrade:
|
|
var shareHkdList []models.BotStockHkdTrade
|
|
if err := data.mysqlDB.Table(tableName).
|
|
Where("status = 1 or status = 0").
|
|
Where("user_id = ?", userId).
|
|
Find(&shareHkdList); err != nil {
|
|
return nil
|
|
}
|
|
for _, value := range shareHkdList {
|
|
orderMap[value.OrderId] = value.OrderId
|
|
}
|
|
default:
|
|
|
|
}
|
|
|
|
return orderMap
|
|
}
|
|
|
|
// TradeListByStatus
|
|
//
|
|
// @Description: 查询市场持仓订单Id
|
|
// @param data
|
|
// @param tableName
|
|
// @return map[string]string
|
|
func TradeListByStatus(data *Data, tableName string) map[string]string {
|
|
orderMap := make(map[string]string)
|
|
switch tableName {
|
|
case flags.BotStockTrade:
|
|
var shareUsList []models.BotStockTrade
|
|
if err := data.mysqlDB.Table(tableName).
|
|
Where("status = 1 or status = 0").
|
|
Find(&shareUsList); err != nil {
|
|
return nil
|
|
}
|
|
for _, value := range shareUsList {
|
|
orderMap[value.OrderId] = value.OrderId
|
|
}
|
|
case flags.BotStockThaTrade:
|
|
var shareThaList []models.BotStockThaTrade
|
|
if err := data.mysqlDB.Table(tableName).
|
|
Where("status = 1 or status = 0").
|
|
Find(&shareThaList); err != nil {
|
|
return nil
|
|
}
|
|
for _, value := range shareThaList {
|
|
orderMap[value.OrderId] = value.OrderId
|
|
}
|
|
case flags.BotStockMysTrade:
|
|
var shareMysList []models.BotStockMysTrade
|
|
if err := data.mysqlDB.Table(tableName).
|
|
Where("status = 1 or status = 0").
|
|
Find(&shareMysList); err != nil {
|
|
return nil
|
|
}
|
|
for _, value := range shareMysList {
|
|
orderMap[value.OrderId] = value.OrderId
|
|
}
|
|
case flags.BotStockIdnTrade:
|
|
var shareIdnList []models.BotStockIdnTrade
|
|
if err := data.mysqlDB.Table(tableName).
|
|
Where("status = 1 or status = 0").
|
|
Find(&shareIdnList); err != nil {
|
|
return nil
|
|
}
|
|
for _, value := range shareIdnList {
|
|
orderMap[value.OrderId] = value.OrderId
|
|
}
|
|
case flags.BotStockInTrade:
|
|
var shareInrList []models.BotStockInTrade
|
|
if err := data.mysqlDB.Table(tableName).
|
|
Where("status = 1 or status = 0").
|
|
Find(&shareInrList); err != nil {
|
|
return nil
|
|
}
|
|
for _, value := range shareInrList {
|
|
orderMap[value.OrderId] = value.OrderId
|
|
}
|
|
case flags.BotStockSgdTrade:
|
|
var shareSgdList []models.BotStockSgdTrade
|
|
if err := data.mysqlDB.Table(tableName).
|
|
Where("status = 1 or status = 0").
|
|
Find(&shareSgdList); err != nil {
|
|
return nil
|
|
}
|
|
for _, value := range shareSgdList {
|
|
orderMap[value.OrderId] = value.OrderId
|
|
}
|
|
case flags.BotStockHkdTrade:
|
|
var shareHkdList []models.BotStockHkdTrade
|
|
if err := data.mysqlDB.Table(tableName).
|
|
Where("status = 1 or status = 0").
|
|
Find(&shareHkdList); err != nil {
|
|
return nil
|
|
}
|
|
for _, value := range shareHkdList {
|
|
orderMap[value.OrderId] = value.OrderId
|
|
}
|
|
default:
|
|
|
|
}
|
|
|
|
return orderMap
|
|
}
|
|
|
|
// RestoreClearCacheShareUs
|
|
//
|
|
// @Description: 美股订单缓存清理
|
|
// @param data
|
|
func RestoreClearCacheShareUs(data *Data) {
|
|
//查询用户
|
|
userArray := UserList(data)
|
|
// 清理用户订阅订单缓存
|
|
for _, value := range userArray {
|
|
// 通过用户查询用户持仓订单
|
|
orderMap := TradeListByUserId(data, flags.BotStockTrade, value.UserId)
|
|
keyCache := fmt.Sprintf("%v-%v", setting.ShareUsSubscribe, value.UserId)
|
|
cacheMap, err := data.redisDB.HGetAll(context.Background(), keyCache).Result()
|
|
if err != nil {
|
|
applogger.Error("查询用户%v美股市场,用户订单订阅缓存错误:%v", value.UserId, err)
|
|
return
|
|
}
|
|
for key, _ := range cacheMap {
|
|
_, ok := orderMap[key]
|
|
if !ok {
|
|
_, err = data.redisDB.HDel(context.Background(), keyCache, key).Result()
|
|
if err != nil {
|
|
applogger.Error("清理用户订阅缓存错误:%v", err)
|
|
return
|
|
}
|
|
}
|
|
}
|
|
}
|
|
// 清理市场持仓订单缓存
|
|
allOrderMap := TradeListByStatus(data, flags.BotStockTrade)
|
|
positionKey := fmt.Sprintf("%v", setting.MarketShareUsPosition)
|
|
positionMap, err := data.redisDB.HGetAll(context.Background(), positionKey).Result()
|
|
if err != nil {
|
|
applogger.Error("查询美股市场持仓订单缓存失败:%v", err)
|
|
return
|
|
}
|
|
for key, _ := range positionMap {
|
|
_, ok := allOrderMap[key]
|
|
if !ok {
|
|
_, err = data.redisDB.HDel(context.Background(), positionKey, key).Result()
|
|
if err != nil {
|
|
applogger.Error("清理用户持仓订单缓存错误:%v", err)
|
|
return
|
|
}
|
|
}
|
|
}
|
|
// 清理管理员订单订阅缓存
|
|
adminKey := fmt.Sprintf("%v", setting.AdminShareUsSubscribe)
|
|
adminMap, err := data.redisDB.HGetAll(context.Background(), adminKey).Result()
|
|
if err != nil {
|
|
applogger.Error("查询美股市场持仓订单缓存失败:%v", err)
|
|
return
|
|
}
|
|
for key, _ := range adminMap {
|
|
_, ok := allOrderMap[key]
|
|
if !ok {
|
|
_, err = data.redisDB.HDel(context.Background(), adminKey, key).Result()
|
|
if err != nil {
|
|
applogger.Error("清理用户持仓订单缓存错误:%v", err)
|
|
return
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// RestoreClearCacheShareTha
|
|
//
|
|
// @Description: 泰股订单缓存清理
|
|
// @param data
|
|
func RestoreClearCacheShareTha(data *Data) {
|
|
//查询用户
|
|
userArray := UserList(data)
|
|
// 清理用户订阅订单缓存
|
|
for _, value := range userArray {
|
|
// 通过用户查询用户持仓订单
|
|
orderMap := TradeListByUserId(data, flags.BotStockThaTrade, value.UserId)
|
|
keyCache := fmt.Sprintf("%v-%v", setting.ShareThaSubscribe, value.UserId)
|
|
cacheMap, err := data.redisDB.HGetAll(context.Background(), keyCache).Result()
|
|
if err != nil {
|
|
applogger.Error("查询用户%v泰股市场,用户订单订阅缓存错误:%v", value.UserId, err)
|
|
return
|
|
}
|
|
for key, _ := range cacheMap {
|
|
_, ok := orderMap[key]
|
|
if !ok {
|
|
_, err = data.redisDB.HDel(context.Background(), keyCache, key).Result()
|
|
if err != nil {
|
|
applogger.Error("清理用户订阅缓存错误:%v", err)
|
|
return
|
|
}
|
|
}
|
|
}
|
|
}
|
|
// 清理市场持仓订单缓存
|
|
allOrderMap := TradeListByStatus(data, flags.BotStockThaTrade)
|
|
positionKey := fmt.Sprintf("%v", setting.MarketShareThaPosition)
|
|
positionMap, err := data.redisDB.HGetAll(context.Background(), positionKey).Result()
|
|
if err != nil {
|
|
applogger.Error("查询泰股市场持仓订单缓存失败:%v", err)
|
|
return
|
|
}
|
|
for key, _ := range positionMap {
|
|
_, ok := allOrderMap[key]
|
|
if !ok {
|
|
_, err = data.redisDB.HDel(context.Background(), positionKey, key).Result()
|
|
if err != nil {
|
|
applogger.Error("清理用户持仓订单缓存错误:%v", err)
|
|
return
|
|
}
|
|
}
|
|
}
|
|
// 清理管理员订单订阅缓存
|
|
adminKey := fmt.Sprintf("%v", setting.AdminShareThaSubscribe)
|
|
adminMap, err := data.redisDB.HGetAll(context.Background(), adminKey).Result()
|
|
if err != nil {
|
|
applogger.Error("查询泰股市场持仓订单缓存失败:%v", err)
|
|
return
|
|
}
|
|
for key, _ := range adminMap {
|
|
_, ok := allOrderMap[key]
|
|
if !ok {
|
|
_, err = data.redisDB.HDel(context.Background(), adminKey, key).Result()
|
|
if err != nil {
|
|
applogger.Error("清理用户持仓订单缓存错误:%v", err)
|
|
return
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// RestoreClearCacheShareMys
|
|
//
|
|
// @Description: 马股订单缓存清理
|
|
// @param data
|
|
func RestoreClearCacheShareMys(data *Data) {
|
|
//查询用户
|
|
userArray := UserList(data)
|
|
// 清理用户订阅订单缓存
|
|
for _, value := range userArray {
|
|
// 通过用户查询用户持仓订单
|
|
orderMap := TradeListByUserId(data, flags.BotStockMysTrade, value.UserId)
|
|
keyCache := fmt.Sprintf("%v-%v", setting.ShareMysSubscribe, value.UserId)
|
|
cacheMap, err := data.redisDB.HGetAll(context.Background(), keyCache).Result()
|
|
if err != nil {
|
|
applogger.Error("查询用户%v马股市场,用户订单订阅缓存错误:%v", value.UserId, err)
|
|
return
|
|
}
|
|
for key, _ := range cacheMap {
|
|
_, ok := orderMap[key]
|
|
if !ok {
|
|
_, err = data.redisDB.HDel(context.Background(), keyCache, key).Result()
|
|
if err != nil {
|
|
applogger.Error("清理用户订阅缓存错误:%v", err)
|
|
return
|
|
}
|
|
}
|
|
}
|
|
}
|
|
// 清理市场持仓订单缓存
|
|
allOrderMap := TradeListByStatus(data, flags.BotStockMysTrade)
|
|
positionKey := fmt.Sprintf("%v", setting.MarketShareMysPosition)
|
|
positionMap, err := data.redisDB.HGetAll(context.Background(), positionKey).Result()
|
|
if err != nil {
|
|
applogger.Error("查询马股市场持仓订单缓存失败:%v", err)
|
|
return
|
|
}
|
|
for key, _ := range positionMap {
|
|
_, ok := allOrderMap[key]
|
|
if !ok {
|
|
_, err = data.redisDB.HDel(context.Background(), positionKey, key).Result()
|
|
if err != nil {
|
|
applogger.Error("清理用户持仓订单缓存错误:%v", err)
|
|
return
|
|
}
|
|
}
|
|
}
|
|
// 清理管理员订单订阅缓存
|
|
adminKey := fmt.Sprintf("%v", setting.AdminShareMysSubscribe)
|
|
adminMap, err := data.redisDB.HGetAll(context.Background(), adminKey).Result()
|
|
if err != nil {
|
|
applogger.Error("查询马股市场持仓订单缓存失败:%v", err)
|
|
return
|
|
}
|
|
for key, _ := range adminMap {
|
|
_, ok := allOrderMap[key]
|
|
if !ok {
|
|
_, err = data.redisDB.HDel(context.Background(), adminKey, key).Result()
|
|
if err != nil {
|
|
applogger.Error("清理用户持仓订单缓存错误:%v", err)
|
|
return
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// RestoreClearCacheShareIdn
|
|
//
|
|
// @Description: 印尼股订单缓存清理
|
|
// @param data
|
|
func RestoreClearCacheShareIdn(data *Data) {
|
|
//查询用户
|
|
userArray := UserList(data)
|
|
// 清理用户订阅订单缓存
|
|
for _, value := range userArray {
|
|
// 通过用户查询用户持仓订单
|
|
orderMap := TradeListByUserId(data, flags.BotStockIdnTrade, value.UserId)
|
|
keyCache := fmt.Sprintf("%v-%v", setting.ShareIdnSubscribe, value.UserId)
|
|
cacheMap, err := data.redisDB.HGetAll(context.Background(), keyCache).Result()
|
|
if err != nil {
|
|
applogger.Error("查询用户%v印尼股市场,用户订单订阅缓存错误:%v", value.UserId, err)
|
|
return
|
|
}
|
|
for key, _ := range cacheMap {
|
|
_, ok := orderMap[key]
|
|
if !ok {
|
|
_, err = data.redisDB.HDel(context.Background(), keyCache, key).Result()
|
|
if err != nil {
|
|
applogger.Error("清理用户订阅缓存错误:%v", err)
|
|
return
|
|
}
|
|
}
|
|
}
|
|
}
|
|
// 清理市场持仓订单缓存
|
|
allOrderMap := TradeListByStatus(data, flags.BotStockIdnTrade)
|
|
positionKey := fmt.Sprintf("%v", setting.MarketShareIdnPosition)
|
|
positionMap, err := data.redisDB.HGetAll(context.Background(), positionKey).Result()
|
|
if err != nil {
|
|
applogger.Error("查询印尼股市场持仓订单缓存失败:%v", err)
|
|
return
|
|
}
|
|
for key, _ := range positionMap {
|
|
_, ok := allOrderMap[key]
|
|
if !ok {
|
|
_, err = data.redisDB.HDel(context.Background(), positionKey, key).Result()
|
|
if err != nil {
|
|
applogger.Error("清理用户持仓订单缓存错误:%v", err)
|
|
return
|
|
}
|
|
}
|
|
}
|
|
// 清理管理员订单订阅缓存
|
|
adminKey := fmt.Sprintf("%v", setting.AdminShareIdnSubscribe)
|
|
adminMap, err := data.redisDB.HGetAll(context.Background(), adminKey).Result()
|
|
if err != nil {
|
|
applogger.Error("查询印尼股市场持仓订单缓存失败:%v", err)
|
|
return
|
|
}
|
|
for key, _ := range adminMap {
|
|
_, ok := allOrderMap[key]
|
|
if !ok {
|
|
_, err = data.redisDB.HDel(context.Background(), adminKey, key).Result()
|
|
if err != nil {
|
|
applogger.Error("清理用户持仓订单缓存错误:%v", err)
|
|
return
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// RestoreClearCacheShareInr
|
|
//
|
|
// @Description: 印度股订单缓存清理
|
|
// @param data
|
|
func RestoreClearCacheShareInr(data *Data) {
|
|
//查询用户
|
|
userArray := UserList(data)
|
|
// 清理用户订阅订单缓存
|
|
for _, value := range userArray {
|
|
// 通过用户查询用户持仓订单
|
|
orderMap := TradeListByUserId(data, flags.BotStockInTrade, value.UserId)
|
|
keyCache := fmt.Sprintf("%v-%v", setting.ShareInrSubscribe, value.UserId)
|
|
cacheMap, err := data.redisDB.HGetAll(context.Background(), keyCache).Result()
|
|
if err != nil {
|
|
applogger.Error("查询用户%v印度股市场,用户订单订阅缓存错误:%v", value.UserId, err)
|
|
return
|
|
}
|
|
for key, _ := range cacheMap {
|
|
_, ok := orderMap[key]
|
|
if !ok {
|
|
applogger.Error("用户:%v订阅垃圾订单:%v", value.UserId, key)
|
|
_, err = data.redisDB.HDel(context.Background(), keyCache, key).Result()
|
|
if err != nil {
|
|
applogger.Error("清理用户订阅缓存错误:%v", err)
|
|
return
|
|
}
|
|
}
|
|
}
|
|
}
|
|
time.Sleep(1 * time.Minute)
|
|
// 清理市场持仓订单缓存
|
|
allOrderMap := TradeListByStatus(data, flags.BotStockInTrade)
|
|
positionKey := fmt.Sprintf("%v", setting.MarketShareInrPosition)
|
|
positionMap, err := data.redisDB.HGetAll(context.Background(), positionKey).Result()
|
|
if err != nil {
|
|
applogger.Error("查询印度股市场持仓订单缓存失败:%v", err)
|
|
return
|
|
}
|
|
for key, _ := range positionMap {
|
|
_, ok := allOrderMap[key]
|
|
if !ok {
|
|
applogger.Error("持仓垃圾订单:%v", key)
|
|
_, err = data.redisDB.HDel(context.Background(), positionKey, key).Result()
|
|
if err != nil {
|
|
applogger.Error("清理用户持仓订单缓存错误:%v", err)
|
|
return
|
|
}
|
|
}
|
|
}
|
|
time.Sleep(1 * time.Minute)
|
|
// 清理管理员订单订阅缓存
|
|
adminKey := fmt.Sprintf("%v", setting.AdminShareInrSubscribe)
|
|
adminMap, err := data.redisDB.HGetAll(context.Background(), adminKey).Result()
|
|
if err != nil {
|
|
applogger.Error("查询印度股市场持仓订单缓存失败:%v", err)
|
|
return
|
|
}
|
|
for key, _ := range adminMap {
|
|
_, ok := allOrderMap[key]
|
|
if !ok {
|
|
applogger.Error("管理员持仓垃圾订单:%v", key)
|
|
_, err = data.redisDB.HDel(context.Background(), adminKey, key).Result()
|
|
if err != nil {
|
|
applogger.Error("清理用户持仓订单缓存错误:%v", err)
|
|
return
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// RestoreClearCacheShareSgd
|
|
//
|
|
// @Description: 新加坡股订单缓存清理
|
|
// @param data
|
|
func RestoreClearCacheShareSgd(data *Data) {
|
|
//查询用户
|
|
userArray := UserList(data)
|
|
// 清理用户订阅订单缓存
|
|
for _, value := range userArray {
|
|
// 通过用户查询用户持仓订单
|
|
orderMap := TradeListByUserId(data, flags.BotStockSgdTrade, value.UserId)
|
|
keyCache := fmt.Sprintf("%v-%v", setting.ShareSgdSubscribe, value.UserId)
|
|
cacheMap, err := data.redisDB.HGetAll(context.Background(), keyCache).Result()
|
|
if err != nil {
|
|
applogger.Error("查询用户%v新加坡股市场,用户订单订阅缓存错误:%v", value.UserId, err)
|
|
return
|
|
}
|
|
for key, _ := range cacheMap {
|
|
_, ok := orderMap[key]
|
|
if !ok {
|
|
_, err = data.redisDB.HDel(context.Background(), keyCache, key).Result()
|
|
if err != nil {
|
|
applogger.Error("清理用户订阅缓存错误:%v", err)
|
|
return
|
|
}
|
|
}
|
|
}
|
|
}
|
|
// 清理市场持仓订单缓存
|
|
allOrderMap := TradeListByStatus(data, flags.BotStockSgdTrade)
|
|
positionKey := fmt.Sprintf("%v", setting.MarketShareSgdPosition)
|
|
positionMap, err := data.redisDB.HGetAll(context.Background(), positionKey).Result()
|
|
if err != nil {
|
|
applogger.Error("查询新加坡股市场持仓订单缓存失败:%v", err)
|
|
return
|
|
}
|
|
for key, _ := range positionMap {
|
|
_, ok := allOrderMap[key]
|
|
if !ok {
|
|
_, err = data.redisDB.HDel(context.Background(), positionKey, key).Result()
|
|
if err != nil {
|
|
applogger.Error("清理用户持仓订单缓存错误:%v", err)
|
|
return
|
|
}
|
|
}
|
|
}
|
|
// 清理管理员订单订阅缓存
|
|
adminKey := fmt.Sprintf("%v", setting.AdminShareSgdSubscribe)
|
|
adminMap, err := data.redisDB.HGetAll(context.Background(), adminKey).Result()
|
|
if err != nil {
|
|
applogger.Error("查询新加坡股市场持仓订单缓存失败:%v", err)
|
|
return
|
|
}
|
|
for key, _ := range adminMap {
|
|
_, ok := allOrderMap[key]
|
|
if !ok {
|
|
_, err = data.redisDB.HDel(context.Background(), adminKey, key).Result()
|
|
if err != nil {
|
|
applogger.Error("清理用户持仓订单缓存错误:%v", err)
|
|
return
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// RestoreClearCacheShareHkd
|
|
//
|
|
// @Description: 港股订单缓存清理
|
|
// @param data
|
|
func RestoreClearCacheShareHkd(data *Data) {
|
|
//查询用户
|
|
userArray := UserList(data)
|
|
// 清理用户订阅订单缓存
|
|
for _, value := range userArray {
|
|
// 通过用户查询用户持仓订单
|
|
orderMap := TradeListByUserId(data, flags.BotStockHkdTrade, value.UserId)
|
|
keyCache := fmt.Sprintf("%v-%v", setting.ShareHkdSubscribe, value.UserId)
|
|
cacheMap, err := data.redisDB.HGetAll(context.Background(), keyCache).Result()
|
|
if err != nil {
|
|
applogger.Error("查询用户%v港股市场,用户订单订阅缓存错误:%v", value.UserId, err)
|
|
return
|
|
}
|
|
for key, _ := range cacheMap {
|
|
_, ok := orderMap[key]
|
|
if !ok {
|
|
_, err = data.redisDB.HDel(context.Background(), keyCache, key).Result()
|
|
if err != nil {
|
|
applogger.Error("清理用户订阅缓存错误:%v", err)
|
|
return
|
|
}
|
|
}
|
|
}
|
|
}
|
|
// 清理市场持仓订单缓存
|
|
allOrderMap := TradeListByStatus(data, flags.BotStockHkdTrade)
|
|
positionKey := fmt.Sprintf("%v", setting.MarketShareHkdPosition)
|
|
positionMap, err := data.redisDB.HGetAll(context.Background(), positionKey).Result()
|
|
if err != nil {
|
|
applogger.Error("查询港股市场持仓订单缓存失败:%v", err)
|
|
return
|
|
}
|
|
for key, _ := range positionMap {
|
|
_, ok := allOrderMap[key]
|
|
if !ok {
|
|
_, err = data.redisDB.HDel(context.Background(), positionKey, key).Result()
|
|
if err != nil {
|
|
applogger.Error("清理用户持仓订单缓存错误:%v", err)
|
|
return
|
|
}
|
|
}
|
|
}
|
|
// 清理管理员订单订阅缓存
|
|
adminKey := fmt.Sprintf("%v", setting.AdminShareHkdSubscribe)
|
|
adminMap, err := data.redisDB.HGetAll(context.Background(), adminKey).Result()
|
|
if err != nil {
|
|
applogger.Error("查询港股市场持仓订单缓存失败:%v", err)
|
|
return
|
|
}
|
|
for key, _ := range adminMap {
|
|
_, ok := allOrderMap[key]
|
|
if !ok {
|
|
_, err = data.redisDB.HDel(context.Background(), adminKey, key).Result()
|
|
if err != nil {
|
|
applogger.Error("清理用户持仓订单缓存错误:%v", err)
|
|
return
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|