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

141 lines
3.5 KiB

1 year ago
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
}