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.
98 lines
2.0 KiB
98 lines
2.0 KiB
|
1 year ago
|
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
|
||
|
|
}
|