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.
81 lines
3.3 KiB
81 lines
3.3 KiB
package statistics |
|
|
|
import ( |
|
"server/common" |
|
"server/db" |
|
"server/modules/backend/app" |
|
"server/modules/backend/models" |
|
utils "server/modules/backend/util" |
|
"server/modules/backend/values" |
|
|
|
"github.com/gin-gonic/gin" |
|
"github.com/olivere/elastic/v7" |
|
) |
|
|
|
// 实时数据 |
|
func RealData(c *gin.Context) { |
|
a := app.NewApp(c) |
|
defer func() { |
|
a.Response() |
|
}() |
|
req := new(values.RealDataReq) |
|
if !a.S(req) { |
|
return |
|
} |
|
resp := &values.RealDataResp{} |
|
a.Data = resp |
|
su, eu := utils.GetQueryUnix(req.Start, req.End) |
|
|
|
// 实时激活 |
|
resp.Active = models.GetDownloadCount(&su, &eu, req.Channel) |
|
|
|
// 实时注册 |
|
resp.Regist = models.GetNewPlayerCountBySql(req.Channel, su, eu) |
|
|
|
// 实时在线 |
|
q := models.NewQ(&su, &eu, nil, req.Channel) |
|
q.Filter(elastic.NewTermQuery("GameID", 0)) |
|
one := common.ESNewOnline{} |
|
db.ES().QueryOne(common.ESIndexBackPlayerOnline, q, &one, "Time", false) |
|
resp.Online = one.Total |
|
|
|
// 发起充值订单数 |
|
resp.TotalRechargeOrder = models.GetOrderCount(su, eu, common.StatusROrderCreate, 1, req.Channel) |
|
resp.FinishRechargeOrder = models.GetOrderCount(su, eu, common.StatusROrderPay, 1, req.Channel) |
|
resp.RechargeSuccessPer = utils.GetPer(resp.FinishRechargeOrder, resp.TotalRechargeOrder) |
|
|
|
// 赠送订单 |
|
resp.TotalWithdrawOrder = models.GetOrderCount(su, eu, common.StatusROrderCreate, 2, req.Channel) |
|
resp.FinishWithdrawOrder = models.GetOrderCount(su, eu, common.StatusROrderFinish, 2, req.Channel) |
|
resp.WithdrawSuccessPer = utils.GetPer(resp.FinishWithdrawOrder, resp.TotalWithdrawOrder) |
|
|
|
// 充值统计 |
|
resp.TotalRechargeData.RechargePlayerNum = models.GetOrderSuccessPlayerCountBySql(req.Channel, su, eu) |
|
resp.TotalRechargeData.TotalRecharge = models.GetAmountTotalBySQL(su, eu, req.Channel) |
|
resp.TotalRechargeData.Arppu = utils.GetPoint(resp.TotalRechargeData.TotalRecharge, resp.TotalRechargeData.RechargePlayerNum) |
|
|
|
resp.NewRechargeData.RechargePlayerNum = models.GetOrderSuccessNewPlayerCountBySql(req.Channel, su, eu) |
|
resp.NewRechargeData.TotalRecharge = models.GetNewPayAmountBySql(req.Channel, su, eu) |
|
resp.NewRechargeData.Arppu = utils.GetPoint(resp.NewRechargeData.TotalRecharge, resp.NewRechargeData.RechargePlayerNum*common.DecimalDigits) |
|
|
|
resp.OldRechargeData.RechargePlayerNum = resp.TotalRechargeData.RechargePlayerNum - resp.NewRechargeData.RechargePlayerNum |
|
resp.OldRechargeData.TotalRecharge = resp.TotalRechargeData.TotalRecharge - resp.NewRechargeData.TotalRecharge |
|
resp.OldRechargeData.Arppu = utils.GetPoint(resp.OldRechargeData.TotalRecharge, resp.OldRechargeData.RechargePlayerNum*common.DecimalDigits) |
|
|
|
// 下注统计 |
|
resp.BetData.TotalBet = models.GetGameInOut(su, eu, 1, req.Channel) |
|
resp.BetData.RealBet = resp.BetData.TotalBet |
|
resp.BetData.RealSettle = models.GetGameInOut(su, eu, 2, req.Channel) |
|
resp.BetData.RealProfit = resp.BetData.RealSettle - resp.BetData.RealBet |
|
resp.BetData.BonusBet = resp.BetData.TotalBet |
|
resp.BetData.BonusSettle = resp.BetData.RealSettle |
|
resp.BetData.BonusProfit = resp.BetData.RealProfit |
|
|
|
// 前十游戏统计 |
|
resp.BetGameData = models.GetTopGames(su, eu, 1, 10, req.Channel) |
|
resp.WinGameData = models.GetTopGames(su, eu, 2, 10, req.Channel) |
|
resp.LoseGameData = models.GetTopGames(su, eu, 3, 10, req.Channel) |
|
|
|
// 活动统计 |
|
resp.ActivityData = models.GetActivityData(su, eu, req.Channel) |
|
}
|
|
|