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.
98 lines
3.0 KiB
98 lines
3.0 KiB
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 |
|
}
|
|
|