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.
140 lines
3.5 KiB
140 lines
3.5 KiB
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 |
|
}
|
|
|