package services import ( "context" "hongze/hongze_task/models" "hongze/hongze_task/utils" "time" ) // StatisticsUserView 汇总统计表 func StatisticsUserView(cont context.Context) (err error) { dateTime := time.Now().AddDate(0, 0, -1) dateStr := dateTime.Format(utils.FormatDate) count, err := models.GetUserViewStatisticsCount(dateStr) if err != nil { return } if count > 0 { return } { mobileViewMap := make(map[string]*models.UserViewMobileTotalSlice) list, tmpErr := models.GetCountUserViewHistoryByMobiles(dateStr) if tmpErr != nil { err = tmpErr return } for _, v := range list { mobileViewMap[v.Mobile] = v } list, tmpErr = models.GetReportViewMaxTimeByMobiles(dateStr) if tmpErr != nil { err = tmpErr return } for _, v := range list { if userViewStatistics, ok := mobileViewMap[v.Mobile]; ok { userViewStatistics.Total += v.Total if v.ViewTime.After(userViewStatistics.ViewTime) { userViewStatistics.ViewTime = v.ViewTime } } else { mobileViewMap[v.Mobile] = v } } list, tmpErr = models.GetAdvisoryCountUserViewHistoryByMobiles(dateStr) if tmpErr != nil { err = tmpErr return } for _, v := range list { if userViewStatistics, ok := mobileViewMap[v.Mobile]; ok { userViewStatistics.Total += v.Total if v.ViewTime.After(userViewStatistics.ViewTime) { userViewStatistics.ViewTime = v.ViewTime } } else { mobileViewMap[v.Mobile] = v } } if len(mobileViewMap) > 0 { tmpList := make([]*models.UserViewStatistics, 0) for mobile, userViewStatistics := range mobileViewMap { item := &models.UserViewStatistics{ Mobile: mobile, RealName: userViewStatistics.RealName, CompanyName: userViewStatistics.CompanyName, ViewNum: userViewStatistics.Total, LastViewTime: userViewStatistics.ViewTime, Date: dateTime, CreateTime: time.Now(), } tmpList = append(tmpList, item) } //最后出来后,如果还有数据未插入,那么再去批量插入数据库 if len(tmpList) > 0 { _ = models.AddMultiUserViewStatistics(tmpList) } } } //邮箱 { emailViewMap := make(map[string]*models.UserViewEmailTotalSlice) list, tmpErr := models.GetCountUserViewHistoryByEmails(dateStr) if tmpErr != nil { err = tmpErr return } for _, v := range list { emailViewMap[v.Email] = v } list, tmpErr = models.GetReportViewMaxTimeByEmails(dateStr) if tmpErr != nil { err = tmpErr return } for _, v := range list { if userViewStatistics, ok := emailViewMap[v.Email]; ok { userViewStatistics.Total += v.Total if v.ViewTime.After(userViewStatistics.ViewTime) { userViewStatistics.ViewTime = v.ViewTime } } else { emailViewMap[v.Email] = v } } list, tmpErr = models.GetAdvisoryCountUserViewHistoryByEmails(dateStr) if tmpErr != nil { err = tmpErr return } for _, v := range list { if userViewStatistics, ok := emailViewMap[v.Email]; ok { userViewStatistics.Total += v.Total if v.ViewTime.After(userViewStatistics.ViewTime) { userViewStatistics.ViewTime = v.ViewTime } } else { emailViewMap[v.Email] = v } } if len(emailViewMap) > 0 { tmpList := make([]*models.UserViewStatistics, 0) for email, userViewStatistics := range emailViewMap { item := &models.UserViewStatistics{ Email: email, RealName: userViewStatistics.RealName, CompanyName: userViewStatistics.CompanyName, ViewNum: userViewStatistics.Total, LastViewTime: userViewStatistics.ViewTime, Date: dateTime, CreateTime: time.Now(), } tmpList = append(tmpList, item) } //最后出来后,如果还有数据未插入,那么再去批量插入数据库 if len(tmpList) > 0 { _ = models.AddMultiUserViewStatistics(tmpList) } } } return }