70 lines
2.0 KiB
Go
70 lines
2.0 KiB
Go
package task
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"go.mongodb.org/mongo-driver/bson"
|
|
"mongo.games.com/game/common"
|
|
"mongo.games.com/goserver/core/logger"
|
|
mymongo "mongo.games.com/goserver/core/mongox"
|
|
mymysql "mongo.games.com/goserver/core/mysqlx"
|
|
)
|
|
|
|
// 场次破产率
|
|
|
|
// GameFreeIdBankruptcyTimes 场次破产次数
|
|
func GameFreeIdBankruptcyTimes(plt string, startTime, endTime string, gamefreeid int) (int, error) {
|
|
s, e := common.StrRFC3339TimeToTime(startTime), common.StrRFC3339TimeToTime(endTime)
|
|
db, err := mymysql.GetDatabase("count")
|
|
if err != nil {
|
|
return 0, err
|
|
}
|
|
|
|
var n int64
|
|
if err = db.Table("bankrupt_log").Where("bankrupt_time >= ? AND bankrupt_time < ? AND game_free_id = ?",
|
|
s.Unix(), e.Unix(), gamefreeid).Count(&n).Error; err != nil {
|
|
logger.Logger.Errorf("find bankrupt count get err: %v", err)
|
|
return 0, err
|
|
}
|
|
|
|
return int(n), nil
|
|
}
|
|
|
|
// GameFreeIdTotalTimes 场次总局数
|
|
func GameFreeIdTotalTimes(plt string, startTime, endTime string, gamefreeid int) (int, error) {
|
|
s, e := common.StrRFC3339TimeToTime(startTime), common.StrRFC3339TimeToTime(endTime)
|
|
c, err := mymongo.GetLogCollection(plt, "log_gamedetailed")
|
|
if err != nil {
|
|
return 0, err
|
|
}
|
|
|
|
n, err := c.CountDocuments(context.TODO(), bson.M{"time": bson.M{"$gte": s, "$lt": e}, "gamefreeid": gamefreeid})
|
|
if err != nil {
|
|
logger.Logger.Errorf("find game total times get err: %v", err)
|
|
return 0, err
|
|
}
|
|
|
|
return int(n), nil
|
|
}
|
|
|
|
// GameBankruptcyRate 场次破产率
|
|
// 返回 破产局数, 总局数, 错误
|
|
func GameBankruptcyRate(plt string, startTime, endTime string, gamefreeid int) (int, int, error) {
|
|
s, e := common.StrRFC3339TimeToTime(startTime), common.StrRFC3339TimeToTime(endTime)
|
|
if s.IsZero() || e.IsZero() {
|
|
return 0, 0, fmt.Errorf("time format error")
|
|
}
|
|
|
|
b, err := GameFreeIdBankruptcyTimes(plt, startTime, endTime, gamefreeid)
|
|
if err != nil {
|
|
return 0, 0, err
|
|
}
|
|
|
|
t, err := GameFreeIdTotalTimes(plt, startTime, endTime, gamefreeid)
|
|
if err != nil {
|
|
return 0, 0, err
|
|
}
|
|
|
|
return b, t, nil
|
|
}
|