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 }