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.

100 lines
3.2 KiB

package data
import (
"context"
"encoding/json"
"fmt"
"github.com/go-xorm/xorm"
"matchmaking-system/internal/data/tradedeal/share"
"matchmaking-system/internal/pkg/flags"
"matchmaking-system/internal/pkg/logging/applogger"
"matchmaking-system/internal/pkg/logging/common"
models "matchmaking-system/internal/pkg/model"
"matchmaking-system/internal/pkg/setting"
)
// UpdateBotStockBlockTrade
//
// @Description: 更新大宗交易订单(美股|泰股|马股|印尼股|印度股|新加坡股|港股|英股|法股|德股)
// @param session
// @param code
// @param codeOld
// @return error
func (uo *userOrderRepo) UpdateBotStockBlockTrade(session *xorm.Session, code, codeOld string) error {
var userStockBlkTrade []models.BotStockBlockTrade
if err := session.Table(flags.BotStockBlockTrade).Where("stock_id =?", codeOld).Find(&userStockBlkTrade); err != nil {
return err
}
for _, value := range userStockBlkTrade {
value.StockId = code
// 1、更新订单信息
inCheck, err := session.Table(flags.BotStockBlockTrade).Where("trade_id =?", value.TradeId).Update(&value)
if err != nil || inCheck <= 0 {
continue
}
// 2、处理缓存订单
orderMap, err := Reds.HGet(context.Background(), setting.AdminShareBlkSubscribe, value.OrderId).Result()
if err != nil {
continue
}
var entrustJson share.ShareBlkTallyCache
if err = json.Unmarshal([]byte(orderMap), &entrustJson); err != nil {
continue
}
var entrust *share.ShareBlkTallyCache
entrust = &entrustJson
if entrust == nil {
continue
}
entrust.Symbol = code
entrust.Order.StockId = code
// 3、处理挂单|持仓|用户订阅|管理员订阅缓存数据
switch value.Status {
case 0: // 挂单
if err = share.ShareBklHashUserOrder(Reds, setting.MarketShareBlkEntrust, entrust); err != nil {
continue
}
case 1: // 持仓
if err = share.ShareBklHashUserOrder(Reds, setting.MarketShareBlkPosition, entrust); err != nil {
continue
}
default:
continue
}
// 更新用户订阅缓存
cacheKey := fmt.Sprintf("%v-%v", setting.ShareBlkSubscribe, entrust.UserId)
if err = share.ShareBklHashUserOrder(Reds, cacheKey, entrust); err != nil {
continue
}
// 更新管理员订阅缓存
if err = share.ShareBklHashUserOrder(Reds, setting.AdminShareBlkSubscribe, entrust); err != nil {
continue
}
}
return nil
}
// UpdateBotUserStockBlockLog
//
// @Description: 更新大宗交易日志表(美股|泰股|马股|印尼股|印度股|新加坡股|港股|英股|法股|德股)
// @param session
// @param code
// @param codeOld
// @return error
func (uo *userOrderRepo) UpdateBotUserStockBlockLog(session *xorm.Session, code, codeOld string) error {
var userStockBlkLog []models.BotUserStockBlockLog
if err := session.Table(flags.BotUserStockBlockLog).Where("stock_id =?", codeOld).Find(&userStockBlkLog); err != nil {
return err
}
for _, value := range userStockBlkLog {
value.StockId = code
inCheck, err := session.Table(flags.BotUserStockBlockLog).Where("id =?", value.Id).Update(&value)
if err != nil || inCheck <= 0 {
applogger.Error("%v UpdateBotUserStockBlockLog BotUserStockBlockLog err:%v", common.ErrSharePre, err)
continue
}
}
return nil
}