package models import ( "server/db" "server/modules/backend/values" "github.com/liangdas/mqant/log" "github.com/olivere/elastic/v7" ) func NewQ(start, end *int64, channel ...*int) *elastic.BoolQuery { q := elastic.NewBoolQuery() if start != nil { q.Filter(elastic.NewRangeQuery("Time").Gte(*start)) } if end != nil { q.Filter(elastic.NewRangeQuery("Time").Lt(*end)) } getChannelQ(q, channel...) return q } func NewQt(start, end *int64, channel ...*int) *elastic.BoolQuery { q := elastic.NewBoolQuery() if start != nil { q.Filter(elastic.NewRangeQuery("time").Gte(*start)) } if end != nil { q.Filter(elastic.NewRangeQuery("time").Lt(*end)) } if len(channel) > 0 { var valueArr []interface{} for _, v := range channel { if v == nil { continue } valueArr = append(valueArr, *v) } if len(valueArr) > 0 { q.Must(elastic.NewTermsQuery("ChannelID", valueArr...)) } } return q } func getChannelQ(q *elastic.BoolQuery, channel ...*int) { if len(channel) == 0 { return } var arr []interface{} for _, v := range channel { if v == nil { continue } arr = append(arr, *v) } if len(arr) == 0 { return } q.Filter(elastic.NewTermsQuery("Channel", arr...)) } // 获取当前在线人数 func GetOnline() map[string]interface{} { res := make(map[string]interface{}) var OnlineData values.OnlineData err := db.Redis().HGetAll("online:Total", &OnlineData) if err != nil { log.Error(err.Error()) } res["Total"] = OnlineData return res } func GetOnlineByGameId(gameId int) map[string]values.OnlineData { data := make(map[string]values.OnlineData) return data } func GetOnlineTotal() values.OnlineData { var OnlineData values.OnlineData err := db.Redis().HGetAll("online:Total", &OnlineData) if err != nil { log.Error(err.Error()) } return OnlineData } func QueryOne(start, end *int64, channel *int, tableName string, table interface{}) error { q := NewQ(start, end, nil, channel) err := db.ES().QueryOne(tableName, q, table) if err != nil { return err } return nil }