remainData.go 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. package service
  2. import (
  3. "designs/global"
  4. "designs/model"
  5. "designs/utils"
  6. )
  7. func RemainDataBydDay(pf string, gid string, startTime string, endTime string) {
  8. //先计算出这个时间内 ,每天的注册用户数量
  9. var users []model.User
  10. err := global.App.DB.Table("user").
  11. Where("pf", pf).Where("gid", gid).
  12. Where("createdAt", ">=", startTime).
  13. Where("createdAt", "<=", endTime).
  14. Scan(&users).Error
  15. if err != nil {
  16. }
  17. var UsersId []int
  18. UsersBydDay := utils.GetTimeDayDate(startTime, endTime) //用户分别是在哪天注册的
  19. UserLoginBydDay := UsersBydDay
  20. for _, user := range users {
  21. UsersId = append(UsersId, user.UserId)
  22. UsersBydDay[user.CreatedAt.Format("20060102")] = append(UsersBydDay[user.CreatedAt.Format("20060102")], user.UserId)
  23. }
  24. users = nil //用完后清空内存
  25. //把每天的注册用户进行集合,查出后面所有天数的活跃情况
  26. var UserLogin []model.UserLogin
  27. err = global.App.DB.Table("user_login").
  28. Where("pf", pf).Where("gid", gid).
  29. WhereIn("userId", UsersId).
  30. Where("loginTime", ">=", startTime).
  31. Select("loginTime", "userId").
  32. Scan(&UserLogin).Error
  33. if err != nil {
  34. }
  35. //对这些数据进行整理
  36. for _, v := range UserLogin {
  37. //根据天进行分组,得出总共有多少
  38. times := v.LoginTime.Format("20060102")
  39. UserLoginBydDay[times] = append(UserLoginBydDay[times], v.UserId)
  40. }
  41. //逐天比较注册的数据和留存的数据,得出每天的活跃比例和人数
  42. }