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.
82 lines
3.3 KiB
82 lines
3.3 KiB
|
1 year ago
|
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)
|
||
|
|
}
|