package services import ( "context" "fmt" "hongze/hongze_task/models" "hongze/hongze_task/utils" "time" ) // StatisticsUserView 汇总统计表 func StatisticsUserViewBak(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) } } } StatisticsCompanyView(dateTime) return } // StatisticsCompanyView 客户统计 func StatisticsCompanyViewBak(dateTime time.Time) (err error) { defer func() { if err != nil { fmt.Println("err:", err) } }() dateStr := dateTime.Format(utils.FormatDate) //fmt.Println(dateStr) count, err := models.GetCompanyViewStatisticsCount(dateStr) if err != nil { return } if count > 0 { return } companyViewMap := make(map[int]*models.CompanyViewTotalSlice) { list, tmpErr := models.GetCompanyViewMobileTotalList(dateStr) if tmpErr != nil { err = tmpErr return } for _, v := range list { companyViewMap[v.CompanyId] = v } } //fmt.Println(companyViewMap) //邮箱 { list, tmpErr := models.GetCompanyViewEmailTotalList(dateStr) if tmpErr != nil { err = tmpErr return } for _, v := range list { if userViewStatistics, ok := companyViewMap[v.CompanyId]; ok { userViewStatistics.Total += v.Total } else { companyViewMap[v.CompanyId] = v } } } if len(companyViewMap) > 0 { tmpList := make([]*models.CompanyViewStatistics, 0) for _, companyView := range companyViewMap { item := &models.CompanyViewStatistics{ CompanyId: companyView.CompanyId, ViewNum: companyView.Total, Date: dateTime, CreateTime: time.Now(), } tmpList = append(tmpList, item) } //最后出来后,如果还有数据未插入,那么再去批量插入数据库 if len(tmpList) > 0 { err = models.AddMultiCompanyViewStatistics(tmpList) } } fmt.Println(dateStr, "end") return } // StatisticsUserView 汇总统计表(每天统一汇总一次) func StatisticsUserView(cont context.Context) (err error) { dateTime := time.Now().AddDate(0, 0, -1) statisticsUserView1Hour(dateTime) return } // StatisticsCompanyView 客户统计 func StatisticsCompanyView(dateTime time.Time) (err error) { defer func() { if err != nil { fmt.Println("err:", err) } }() dateStr := dateTime.Format(utils.FormatDate) //fmt.Println(dateStr) count, err := models.GetCompanyViewStatisticsCount(dateStr) if err != nil { return } if count > 0 { return } companyViewMap := make(map[int]*models.CompanyViewTotalSlice) { list, tmpErr := models.GetCompanyViewMobileTotalList(dateStr) if tmpErr != nil { err = tmpErr return } for _, v := range list { companyViewMap[v.CompanyId] = v } } //fmt.Println(companyViewMap) //邮箱 { list, tmpErr := models.GetCompanyViewEmailTotalList(dateStr) if tmpErr != nil { err = tmpErr return } for _, v := range list { if userViewStatistics, ok := companyViewMap[v.CompanyId]; ok { userViewStatistics.Total += v.Total } else { companyViewMap[v.CompanyId] = v } } } if len(companyViewMap) > 0 { for _, companyView := range companyViewMap { tmpCompanyViewStatistics, tmpErr := models.GetCompanyViewStatisticsByCompanyId(companyView.CompanyId, dateStr) if tmpErr != nil { if tmpErr.Error() == utils.ErrNoRow() { item := &models.CompanyViewStatistics{ CompanyId: companyView.CompanyId, ViewNum: companyView.Total, Date: dateTime, CreateTime: time.Now(), } models.AddCompanyViewStatistics(item) } } else { tmpCompanyViewStatistics.ViewNum = companyView.Total tmpCompanyViewStatistics.Update([]string{"ViewNum"}) } } } fmt.Println(dateStr, "end") return } // StatisticsUserView1Hour 每个小时汇总统计表 func StatisticsUserView1Hour(cont context.Context) (err error) { //dateTime := time.Now().AddDate(0, 0, -1) dateTime := time.Now() statisticsUserView1Hour(dateTime) StatisticsCompanyView1Hour(dateTime) return } // statisticsUserView1Hour func statisticsUserView1Hour(dateTime time.Time) (err error) { //dateTime := time.Now().AddDate(0, 0, -1) dateStr := dateTime.Format(utils.FormatDate) { 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 { for mobile, userViewStatistics := range mobileViewMap { tmpUserViewStatistics, tmpErr := models.GetUserViewStatisticsByMobile(mobile, dateStr) if tmpErr != nil { if tmpErr.Error() == utils.ErrNoRow() { item := &models.UserViewStatistics{ Mobile: mobile, RealName: userViewStatistics.RealName, CompanyName: userViewStatistics.CompanyName, ViewNum: userViewStatistics.Total, LastViewTime: userViewStatistics.ViewTime, Date: dateTime, CreateTime: time.Now(), } models.AddUserViewStatistics(item) } } else { tmpUserViewStatistics.ViewNum = userViewStatistics.Total tmpUserViewStatistics.LastViewTime = userViewStatistics.ViewTime tmpUserViewStatistics.Update([]string{"ViewNum", "LastViewTime"}) } } } } //邮箱 { 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 { for email, userViewStatistics := range emailViewMap { tmpUserViewStatistics, tmpErr := models.GetUserViewStatisticsByEmail(email, dateStr) if tmpErr != nil { if tmpErr.Error() == utils.ErrNoRow() { item := &models.UserViewStatistics{ Email: email, RealName: userViewStatistics.RealName, CompanyName: userViewStatistics.CompanyName, ViewNum: userViewStatistics.Total, LastViewTime: userViewStatistics.ViewTime, Date: dateTime, CreateTime: time.Now(), } models.AddUserViewStatistics(item) } } else { tmpUserViewStatistics.ViewNum = userViewStatistics.Total tmpUserViewStatistics.LastViewTime = userViewStatistics.ViewTime tmpUserViewStatistics.Update([]string{"ViewNum", "LastViewTime"}) } } } } StatisticsCompanyView1Hour(dateTime) return } // StatisticsCompanyView1Hour 每个小时客户统计 func StatisticsCompanyView1Hour(dateTime time.Time) (err error) { defer func() { if err != nil { fmt.Println("err:", err) } }() dateStr := dateTime.Format(utils.FormatDate) //fmt.Println(dateStr) companyViewMap := make(map[int]*models.CompanyViewTotalSlice) { list, tmpErr := models.GetCompanyViewMobileTotalList(dateStr) if tmpErr != nil { err = tmpErr return } for _, v := range list { companyViewMap[v.CompanyId] = v } } //fmt.Println(companyViewMap) //邮箱 { list, tmpErr := models.GetCompanyViewEmailTotalList(dateStr) if tmpErr != nil { err = tmpErr return } for _, v := range list { if userViewStatistics, ok := companyViewMap[v.CompanyId]; ok { userViewStatistics.Total += v.Total } else { companyViewMap[v.CompanyId] = v } } } if len(companyViewMap) > 0 { for _, companyView := range companyViewMap { tmpCompanyViewStatistics, tmpErr := models.GetCompanyViewStatisticsByCompanyId(companyView.CompanyId, dateStr) if tmpErr != nil { if tmpErr.Error() == utils.ErrNoRow() { item := &models.CompanyViewStatistics{ CompanyId: companyView.CompanyId, ViewNum: companyView.Total, Date: dateTime, CreateTime: time.Now(), } models.AddCompanyViewStatistics(item) } } else { tmpCompanyViewStatistics.ViewNum = companyView.Total tmpCompanyViewStatistics.Update([]string{"ViewNum"}) } } } fmt.Println(dateStr, "end") return } //func Fix() { // StatisticsUserView1Hour(nil) // // //dateTime, _ := time.ParseInLocation(utils.FormatDate, "2021-03-04", time.Local) // //lastDateTime, _ := time.ParseInLocation(utils.FormatDate, "2022-04-08", time.Local) // //i := 0 // //for { // // tmpDateTime := dateTime.AddDate(0, 0, i) // // if tmpDateTime.After(lastDateTime) { //晚于昨天,那么就结束循环 // // break // // } // // StatisticsCompanyView(tmpDateTime) // // i++ // //} // //}