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*common.DecimalDigits) 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) }