package data import ( "context" "encoding/json" "fmt" "matchmaking-system/internal/data/tradedeal/share" "matchmaking-system/internal/pkg/flags" "matchmaking-system/internal/pkg/logging/applogger" models "matchmaking-system/internal/pkg/model" "matchmaking-system/internal/pkg/setting" ) // TradeIPoInrByOrderNo // // @Description: // @param data func TradeIPoInrByOrderNo(data *Data) { //1、查询当前股票代码为:NSE:IEML.ST的订单 //2、循环生成: map[userId]string 用户和订单列表的map函数 //3、通过缓存key:shareInrSubscribe-userId 解析json找到对应的orderNo(处理为空的状况-即为不是IPO订单) //4、通过orderNo更新缓存key:USER:ARREAR:ORDER:OrderNo 的value值为OrderId inrMap := GetBotStockInrTrade(data) applogger.Error("数据展示:%v", inrMap) for key, _ := range inrMap { keyCache := fmt.Sprintf("%v-%v", setting.ShareInrSubscribe, key) orderCache, err := Reds.HGetAll(context.Background(), keyCache).Result() if err != nil { continue } for _, vue := range orderCache { var msg share.ShareInrTallyCache if err = json.Unmarshal([]byte(vue), &msg); err != nil { applogger.Error("TradeIPoInrByOrderNo err:%v", err) continue } // 处理IPO缓存订单 switch msg.Status { case flags.Position: // 持仓 if len(msg.Order.OrderNo) > 0 { // 非空 ipoCache := fmt.Sprintf("%v%v", flags.StockIpoList, msg.Order.OrderNo) checkInt, err := Reds.Exists(context.Background(), ipoCache).Result() if err != nil { applogger.Error("CreatBotUserUsPreStockOrder.Exists err:%v", err) continue } if checkInt > 0 { //applogger.Debug("有效--用户ID:%v,订单ID:%v,IPO订单号:%v", key, msg.OrderId, msg.Order.OrderNo) if err = Reds.Set(context.Background(), ipoCache, msg.OrderId, 0).Err(); err != nil { applogger.Error("CreatBotUserUsPreStockOrder.Set err:%v", err) continue } } } default: } } } } // GetBotStockInrTrade // // @Description: // @param data // @return map[int64][]string func GetBotStockInrTrade(data *Data) map[int64][]string { var inrList []models.BotStockInTrade if err := data.mysqlDB.Table(flags.BotStockInTrade). Where("stock_id = ?", "NSE:GODIGIT.ST"). //NSE:IEML.ST NSE:test123456 Where("status = 1"). Find(&inrList); err != nil { return nil } inrMap := make(map[int64][]string) for _, inr := range inrList { userId := int64(inr.UserId) inrMap[userId] = append(inrMap[userId], inr.OrderId) } return inrMap }