123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154 |
- 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, 0)
- 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
- } 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
- } 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,
- Date: dateTime,
- CreateTime: time.Now(),
- }
- //小于200条的时候,不插入数据库
- if len(tmpList) < 200 {
- tmpList = append(tmpList, item)
- continue
- }
- //大于200条的时候,才去插入数据库
- _ = models.AddMultiUserViewStatistics(tmpList)
- tmpList = make([]*models.UserViewStatistics, 0)
- }
- //最后出来后,如果还有数据未插入,那么再去批量插入数据库
- 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
- } 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
- } 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,
- Date: dateTime,
- CreateTime: time.Now(),
- }
- //小于200条的时候,不插入数据库
- if len(tmpList) < 200 {
- tmpList = append(tmpList, item)
- continue
- }
- //大于200条的时候,才去插入数据库
- _ = models.AddMultiUserViewStatistics(tmpList)
- tmpList = make([]*models.UserViewStatistics, 0)
- }
- //最后出来后,如果还有数据未插入,那么再去批量插入数据库
- if len(tmpList) > 0 {
- _ = models.AddMultiUserViewStatistics(tmpList)
- }
- }
- }
- return
- }
|