|
@@ -2,13 +2,14 @@ package services
|
|
|
|
|
|
import (
|
|
|
"context"
|
|
|
+ "fmt"
|
|
|
"hongze/hongze_task/models"
|
|
|
"hongze/hongze_task/utils"
|
|
|
"time"
|
|
|
)
|
|
|
|
|
|
// StatisticsUserView 汇总统计表
|
|
|
-func StatisticsUserView(cont context.Context) (err error) {
|
|
|
+func StatisticsUserViewBak(cont context.Context) (err error) {
|
|
|
dateTime := time.Now().AddDate(0, 0, -1)
|
|
|
dateStr := dateTime.Format(utils.FormatDate)
|
|
|
count, err := models.GetUserViewStatisticsCount(dateStr)
|
|
@@ -150,5 +151,391 @@ func StatisticsUserView(cont context.Context) (err error) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ 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++
|
|
|
+// //}
|
|
|
+//
|
|
|
+//}
|