package handler import ( "server/common" "server/db" "server/modules/backend/app" "server/modules/backend/bdb" "server/modules/backend/models" "server/modules/backend/values" "server/util" "time" utils "server/modules/backend/util" "github.com/gin-gonic/gin" "github.com/olivere/elastic/v7" ) func FirstPageRealData(c *gin.Context) { a := app.NewApp(c) defer func() { a.Response() }() resp := &values.FirstPageRealDataResp{} a.Data = resp cids := []*int{} if len(a.User.SChannels) > 0 { for i := range a.User.SChannels { cids = append(cids, &a.User.SChannels[i]) } } su := util.GetZeroTime(time.Now()).Unix() q := models.NewQ(&su, nil, cids...) q.Filter(elastic.NewTermQuery("GameID", 0)) one := common.ESNewOnline{} db.ES().QueryOne(common.ESIndexBackPlayerOnline, q, &one, "Time", false) resp.Online = int64(one.Total) resp.NewOnline = int64(one.New) resp.RechargeOnline = int64(one.Recharge) resp.RechargeAmount = models.GetAmountTotalBySQLs(su, su, cids...) } func FirstPageData(c *gin.Context) { a := app.NewApp(c) defer func() { a.Response() }() req := new(values.FirstPageDataReq) if !a.S(req) { return } resp := &values.FirstPageDataResp{} a.Data = resp su, eu := utils.GetQueryUnix(req.Date, req.Date) cids := []*int{} if len(a.User.SChannels) > 0 { for i := range a.User.SChannels { cids = append(cids, &a.User.SChannels[i]) } } data := &values.FirstPageData{Time: su} if len(cids) == 0 { bdb.BackDB.Get(data) tag := data.ID == 0 if tag || !data.Check { data = GetFirstPageData(su, eu) data.Check = true if su >= util.GetZeroTime(time.Now()).Unix() { data.Check = false } if tag { bdb.BackDB.Create(data) } else { bdb.BackDB.Update(&values.FirstPageData{Time: su}, data) } } } else { data = GetFirstPageData(su, eu, cids...) } resp.Data = data } func GetFirstPageData(start, end int64, channels ...*int) *values.FirstPageData { ret := &values.FirstPageData{} ret.Time = start ret.Date = time.Unix(start, 0).Format("20060102") // 完成注册数 ret.NewCount = models.GetNewPlayerCountBySqls(start, end, channels...) // 新增付费人数 ret.NewPayCount = models.GetNewPayCountBySqls(start, end, channels...) // 付费总额 ret.RechargeTotal = models.GetAmountTotalBySQLs(start, end, channels...) // 赠送总额 ret.WithdrawTotal = models.GetWithdrawAmountTotalBySQLs(start, end, common.CurrencyBrazil, channels...) // 发起充值订单数 ret.RechargeOrderCreate = models.GetOrderCount(start, end, common.StatusROrderCreate, 1, channels...) // 完成充值订单数 ret.RechargeOrderFinish = models.GetOrderCount(start, end, common.StatusROrderPay, 1, channels...) // 发起赠送订单数 ret.WithdrawOrderCreate = models.GetOrderCount(start, end, common.StatusROrderCreate, 2, channels...) // 完成赠送订单数 ret.WithdrawOrderFinish = models.GetOrderCount(start, end, common.StatusROrderFinish, 2, channels...) // 充值成功率 ret.RechargeSuccessPer = utils.GetPer(ret.RechargeOrderFinish, ret.RechargeOrderCreate) // 充值赠送比 ret.WithdrawPer = utils.GetPer(ret.WithdrawTotal, ret.RechargeTotal) // 平台下注 ret.Bet = models.GetGameInOut(start, end, 1, channels...) // 平台返奖 ret.Settle = models.GetGameInOut(start, end, 2, channels...) // 平台rtp ret.RTP = utils.GetPer(ret.Settle, ret.Bet) // 厂商下注 ret.ProviderBet = ret.Bet // 厂商返奖 ret.ProviderSettle = ret.Settle // 厂商rtp ret.ProviderRTP = utils.GetPer(ret.ProviderSettle, ret.ProviderBet) return ret }