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 }