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

99 lines
3.0 KiB

1 year ago
package statistics
import (
"server/modules/backend/app"
"server/modules/backend/models"
utils "server/modules/backend/util"
"server/modules/backend/values"
"time"
"github.com/gin-gonic/gin"
)
// 新增用户分析
func NewPlayerData(c *gin.Context) {
a := app.NewApp(c)
defer func() {
a.Response()
}()
req := new(values.NewPlayerDataReq)
if !a.S(req) {
return
}
resp := values.NewPlayerDataResp{}
su, eu := utils.GetQueryUnix(req.Start, req.End)
resp.New = models.GetNewPlayerCountBySql(req.Channel, su, eu)
resp.NewRechargeCount = models.GetNewPayCountBySql(req.Channel, su, eu)
resp.NewRechargePer = utils.GetPer(resp.NewRechargeCount, resp.New)
resp.NewRecharge = models.GetNewPayAmountBySql(req.Channel, su, eu)
resp.Map1 = getNewPlayerDataMap1(su, eu, req.Channel, req.Games)
resp.Map2 = getNewPlayerDataMap2(su, eu, req.Channel)
resp.Map3 = getNewPlayerDataMap3(su, eu, req.Channel, req.Games)
resp.Map4 = getNewPlayerDataMap4(su, eu, req.Channel)
a.Data = resp
}
func getNewPlayerDataMap1(s, e int64, channel *int, games *string) map[string]values.NewPlayerDataMap1 {
ret := map[string]values.NewPlayerDataMap1{}
var oneDay int64 = 24 * 60 * 60
for i := s; i < e; i += oneDay {
j := i + oneDay
t := time.Unix(i, 0).Format("20060102")
one := values.NewPlayerDataMap1{}
one.New = models.GetNewPlayerCountBySql(channel, i, j)
one.NewRechargeCount = models.GetRecharge(&i, &j, true, channel)
ret[t] = one
}
return ret
}
func getNewPlayerDataMap2(s, e int64, channel *int) map[string]values.NewPlayerDataMap2 {
ret := map[string]values.NewPlayerDataMap2{}
var oneDay int64 = 24 * 60 * 60
for i := s; i < e; i += oneDay {
j := i + oneDay
t := time.Unix(i, 0).Format("20060102")
one := values.NewPlayerDataMap2{}
one.Recharge = models.GetRechargeTotal(&i, &j, true, channel)
recharge := models.GetRecharge(&i, &j, true, channel)
one.ARPPU = utils.GetPoint(one.Recharge, recharge)
ret[t] = one
}
return ret
}
func getNewPlayerDataMap3(s, e int64, channel *int, games *string) map[string]values.NewPlayerDataMap3 {
ret := map[string]values.NewPlayerDataMap3{}
var oneDay int64 = 24 * 60 * 60
for i := s; i < e; i += oneDay {
j := i + oneDay
t := time.Unix(i, 0).Format("20060102")
one := values.NewPlayerDataMap3{}
recharge := models.GetRecharge(&i, &j, true, channel)
rechargeTotal := models.GetRecharge(&i, &j, false, channel)
one.NewRechargePer = utils.GetPer(recharge, rechargeTotal)
ret[t] = one
}
return ret
}
func getNewPlayerDataMap4(s, e int64, channel *int) map[string]values.NewPlayerDataMap4 {
ret := map[string]values.NewPlayerDataMap4{}
var oneDay int64 = 24 * 60 * 60
// isNew := true
for i := s; i < e; i += oneDay {
// j := i + oneDay
t := time.Unix(i, 0).Format("20060102")
one := values.NewPlayerDataMap4{}
// breakCount := models.GetBreak(&i, &j, &isNew, channel)
// active := models.GetActive(&i, &j, true, false, channel)
// one.BrekPer = utils.GetPer(breakCount, active)
ret[t] = one
}
return ret
}