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 PlayData(c *gin.Context) { a := app.NewApp(c) defer func() { a.Response() }() req := new(values.PlayDataReq) if !a.S(req) { return } resp := values.PlayDataResp{} su, eu := utils.GetQueryUnix(req.Start, req.End) var newCount, oldCount int64 // 新用户数 newCount = models.GetNewPlayerCountBySql(req.Channel, su, eu) // 老用户数 oldCount = models.GetOldPlayerCountBySql(req.Channel, su, eu) // 活跃玩牌率 resp.ActivePlayPer = utils.GetPer(resp.Play, newCount+oldCount) // 新用户玩牌率 resp.NewPlayerPer = utils.GetPer(resp.NewPlay, newCount) resp.Map1 = getPlayDataMap1(su, eu, req.Channel, req.Games) resp.Map2 = getPlayDataMap2(su, eu, req.Channel, req.Games) resp.Map3 = getPlayDataMap3(su, eu, req.Channel) a.Data = resp } func getPlayDataMap1(s, e int64, channel *int, games *string) map[string]values.PlayDataMap1 { ret := map[string]values.PlayDataMap1{} // var oneDay int64 = 24 * 60 * 60 // s := util.GetZeroTime(time.Unix(int64(start), 0)).Unix() // e := util.GetZeroTime(time.Unix(int64(end), 0)).AddDate(0, 0, 1).Unix() return ret } func getPlayDataMap2(s, e int64, channel *int, games *string) map[string]values.PlayDataMap2 { ret := map[string]values.PlayDataMap2{} var oneDay int64 = 24 * 60 * 60 // s := util.GetZeroTime(time.Unix(int64(start), 0)).Unix() // e := util.GetZeroTime(time.Unix(int64(end), 0)).AddDate(0, 0, 1).Unix() // IsNew := true // flag := false // var gameId *int // if games != nil { // gId := common.GetGameIDByGames(*games) // gameId = &gId // } for i := s; i < e; i += oneDay { // j := i + oneDay t := time.Unix(i, 0).Format("20060102") one := values.PlayDataMap2{} // active := models.GetActive(&i, &j, false, false, channel) // play := models.GetPlayGameUserCount(&i, &j, gameId, nil, channel, &flag) // one.ActivePlayPer = utils.GetPer(play, active) // newUser := models.GetNewPlayerCountBySql(channel, i, j) // newPlay := models.GetPlayGameUserCount(&i, &j, gameId, nil, channel, &IsNew) // one.NewPlayPer = utils.GetPer(newPlay, newUser) ret[t] = one } return ret } func getPlayDataMap3(s, e int64, channel *int) map[int]int64 { ret := map[int]int64{} // for _, v := range common.Games { // gameId := common.GetGameIDByGames(v) // ret[common.GetGameIDByGames(v)] = models.GetPlayGameUserCount(&s, &e, &gameId, nil, channel, nil) // } return ret }