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.
97 lines
2.0 KiB
97 lines
2.0 KiB
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 |
|
}
|
|
|