123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541 |
- 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++
- // //}
- //
- //}
|