印度包网
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

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)
}