浏览代码

fix:每日阅读数据统计bug修复

Roc 3 年之前
父节点
当前提交
25db37d27e
共有 2 个文件被更改,包括 131 次插入1 次删除
  1. 10 0
      models/user_view_statistics.go
  2. 121 1
      services/user_view_statistics.go

+ 10 - 0
models/user_view_statistics.go

@@ -37,6 +37,16 @@ func GetUserViewStatisticsCount(dayStr string) (count int, err error) {
 	return
 }
 
+// DeleteUserViewStatisticsCount 获取某天的用户报告报告阅读数量统计记录数量
+func DeleteUserViewStatisticsCount(dayStr string) (err error) {
+	o := orm.NewOrm()
+	//产品权限
+	sql := `delete from user_view_statistics WHERE date = ?`
+
+	_, err = o.Raw(sql, dayStr).Exec()
+	return
+}
+
 // UserViewMobileTotalSlice 根据用户手机号字符串获取用户的浏览数
 type UserViewMobileTotalSlice struct {
 	Mobile      string `description:"用户手机号"`

+ 121 - 1
services/user_view_statistics.go

@@ -9,7 +9,7 @@ import (
 
 // StatisticsUserView 汇总统计表
 func StatisticsUserView(cont context.Context) (err error) {
-	dateTime := time.Now().AddDate(0, 0, 0)
+	dateTime := time.Now().AddDate(0, 0, -1)
 	dateStr := dateTime.Format(utils.FormatDate)
 	count, err := models.GetUserViewStatisticsCount(dateStr)
 	if err != nil {
@@ -152,3 +152,123 @@ func StatisticsUserView(cont context.Context) (err error) {
 
 	return
 }
+
+// FixStatisticsUserView 数据修复
+func FixStatisticsUserView(dateStr string) (err error) {
+	//dateTime := time.Now().AddDate(0, 0, 0)
+	//dateStr := dateTime.Format(utils.FormatDate)
+	dateTime, _ := time.Parse(utils.FormatDate, dateStr)
+
+	err = models.DeleteUserViewStatisticsCount(dateStr)
+	if err != nil {
+		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
+			}
+		}
+
+	}
+
+	return
+}