瀏覽代碼

新增路演状态检测

longyu 3 年之前
父節點
當前提交
1f8bd450b8
共有 6 個文件被更改,包括 177 次插入172 次删除
  1. 5 0
      models/company_product.go
  2. 39 0
      models/roadshow/calendar.go
  3. 72 24
      models/user_view_statistics.go
  4. 28 0
      services/roadshow/calendar.go
  5. 5 0
      services/task.go
  6. 28 148
      services/user_view_statistics.go

+ 5 - 0
models/company_product.go

@@ -36,6 +36,11 @@ func CompanyFreeze(companyId, productId int) (companyReportPermissionList []*Com
 	freezeStartDate := time.Now().Format(utils.FormatDate)
 	freezeEndDate := time.Now().AddDate(0, 3, 0).Format(utils.FormatDate)
 
+	//FICC客户冻结期由三个月改为两个月
+	if productId == 1 {
+		freezeEndDate = time.Now().AddDate(0, 2, 0).Format(utils.FormatDate)
+	}
+
 	//客户产品 状态 变更
 	sql := `UPDATE company_product SET status='冻结',is_suspend=0,freeze_time=NOW(),modify_time=NOW(),start_date=?,end_date=?,freeze_start_date=?,freeze_end_date=? WHERE company_id=? AND product_id=? `
 	_, err = o.Raw(sql, freezeStartDate, freezeEndDate, freezeStartDate, freezeEndDate, companyId, productId).Exec()

+ 39 - 0
models/roadshow/calendar.go

@@ -0,0 +1,39 @@
+package roadshow
+
+import (
+	"time"
+	"github.com/rdlucklib/rdluck_tools/orm"
+)
+
+type RsCalendarResearcher struct {
+	RsCalendarResearcherId int    `orm:"column(rs_calendar_researcher_id);pk"`
+	RsCalendarId           int    `description:"日历活动id"`
+	ResearcherId           int    `description:"研究员id"`
+	ResearcherName         string `description:"研究员名称"`
+	StartDate              string `description:"开始日期"`
+	EndDate                string `description:"结束日期"`
+	StartTime              string `description:"开始时间"`
+	EndTime                string `description:"结束时间"`
+	StartWeek              string `description:"开始日期对应周"`
+	EndWeek                string `description:"结束日期对应周"`
+	CreateTime             time.Time
+	ModifyTime             time.Time
+	Status                 int       `description:"状态:1:待接受,2:已接受,3:已拒绝,4:已删除,5:已撤回,6:已结束"`
+	RefuseReason           string    `description:"拒绝理由"`
+	RefuseTime             time.Time `description:"拒绝时间"`
+	DeleteReason           string    `description:"删除理由"`
+}
+
+func GetRsCalendarResearcher(endDate, endTime string) (list []*RsCalendarResearcher, err error) {
+	sql := `SELECT * FROM rs_calendar_researcher WHERE status<>6 AND end_date=? AND end_time<=? `
+	o := orm.NewOrm()
+	_, err = o.Raw(sql, endDate, endTime).QueryRows(&list)
+	return
+}
+
+func ModifyRsCalendarResearcherStatus(rsCalendarResearcherId int) (err error) {
+	sql := ` UPDATE rs_calendar_researcher SET status=6,modify_time=NOW() WHERE rs_calendar_researcher_id=? `
+	o := orm.NewOrm()
+	_, err = o.Raw(sql, rsCalendarResearcherId).Exec()
+	return
+}

+ 72 - 24
models/user_view_statistics.go

@@ -7,14 +7,15 @@ import (
 
 // UserViewStatistics 用户报告报告阅读数量统计表
 type UserViewStatistics struct {
-	Id          int       `orm:"column(id)" description:"自增Id"`
-	Mobile      string    `description:"手机号"`
-	Email       string    `description:"手机号"`
-	RealName    string    `description:"联系人名称"`
-	CompanyName string    `description:"客户名称"`
-	ViewNum     int       `description:"阅读总数"`
-	Date        time.Time `description:"阅读日期"`
-	CreateTime  time.Time `description:"添加时间"`
+	Id           int       `orm:"column(id)" description:"自增Id"`
+	Mobile       string    `description:"手机号"`
+	Email        string    `description:"手机号"`
+	RealName     string    `description:"联系人名称"`
+	CompanyName  string    `description:"客户名称"`
+	ViewNum      int       `description:"阅读总数"`
+	LastViewTime time.Time `description:"最近一次阅读时间"`
+	Date         time.Time `description:"阅读日期"`
+	CreateTime   time.Time `description:"添加时间"`
 }
 
 // AddMultiUserViewStatistics 添加用户报告报告阅读数量统计记录
@@ -27,16 +28,38 @@ func AddMultiUserViewStatistics(list []*UserViewStatistics) (err error) {
 	return
 }
 
+// UpdateLastViewTimeByMobile 根据手机号修改最近阅读时间
+func UpdateLastViewTimeByMobile(mobile, date string, lastViewTime time.Time) (err error) {
+	o := orm.NewOrm()
+	sql := `update user_view_statistics set last_view_time =? WHERE mobile=? and date = ?`
+	_, err = o.Raw(sql, lastViewTime, mobile, date).Exec()
+	return
+}
+
+// UpdateLastViewTimeByEmail 根据邮箱修改最近阅读时间
+func UpdateLastViewTimeByEmail(mobile, date string, lastViewTime time.Time) (err error) {
+	o := orm.NewOrm()
+	sql := `update user_view_statistics set last_view_time =? WHERE mobile=? and date = ?`
+	_, err = o.Raw(sql, lastViewTime, mobile, date).Exec()
+	return
+}
+
 // GetUserViewStatisticsCount 获取某天的用户报告报告阅读数量统计记录数量
 func GetUserViewStatisticsCount(dayStr string) (count int, err error) {
 	o := orm.NewOrm()
-	//产品权限
 	sql := `SELECT count(1) count FROM user_view_statistics WHERE date = ?`
-
 	err = o.Raw(sql, dayStr).QueryRow(&count)
 	return
 }
 
+// GetUserViewStatisticsGroup 获取某天的用户报告报告阅读数量统计记录数量
+func GetUserViewStatisticsGroup() (list []*UserViewStatistics, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM user_view_statistics where last_view_time is null group by date order by date asc`
+	_, err = o.Raw(sql).QueryRows(&list)
+	return
+}
+
 // DeleteUserViewStatisticsCount 获取某天的用户报告报告阅读数量统计记录数量
 func DeleteUserViewStatisticsCount(dayStr string) (err error) {
 	o := orm.NewOrm()
@@ -49,30 +72,32 @@ func DeleteUserViewStatisticsCount(dayStr string) (err error) {
 
 // UserViewMobileTotalSlice 根据用户手机号字符串获取用户的浏览数
 type UserViewMobileTotalSlice struct {
-	Mobile      string `description:"用户手机号"`
-	CompanyName string `description:"客户名称"`
-	RealName    string `description:"用户名称"`
-	Total       int    `description:"总阅读数"`
+	Mobile      string    `description:"用户手机号"`
+	CompanyName string    `description:"客户名称"`
+	RealName    string    `description:"用户名称"`
+	Total       int       `description:"总阅读数"`
+	ViewTime    time.Time `description:"阅读时间"`
 }
 
 // UserViewEmailTotalSlice 根据用户邮箱字符串获取用户的浏览数
 type UserViewEmailTotalSlice struct {
-	Email       string `description:"用户邮箱"`
-	CompanyName string `description:"客户名称"`
-	RealName    string `description:"用户名称"`
-	Total       int    `description:"总阅读数"`
+	Email       string    `description:"用户邮箱"`
+	CompanyName string    `description:"客户名称"`
+	RealName    string    `description:"用户名称"`
+	Total       int       `description:"总阅读数"`
+	ViewTime    time.Time `description:"阅读时间"`
 }
 
 func GetCountUserViewHistoryByMobiles(date string) (items []*UserViewMobileTotalSlice, err error) {
 	o := orm.NewOrm()
-	sql := `SELECT count(1) total,mobile,company_name,real_name FROM user_view_history WHERE created_time >= ? and created_time <= ? and mobile != "" group by mobile`
+	sql := `SELECT count(1) total,mobile,company_name,real_name,max(created_time) view_time FROM user_view_history WHERE created_time >= ? and created_time <= ? and mobile != "" group by mobile`
 	_, err = o.Raw(sql, date+" 00:00:00", date+" 23:59:59").QueryRows(&items)
 	return
 }
 
 func GetCountUserViewHistoryByEmails(date string) (items []*UserViewEmailTotalSlice, err error) {
 	o := orm.NewOrm()
-	sql := `SELECT count(1) total,email,company_name,real_name FROM user_view_history WHERE created_time >= ? and created_time <= ? and email != ""  group by email`
+	sql := `SELECT count(1) total,email,company_name,real_name,max(created_time) view_time FROM user_view_history WHERE created_time >= ? and created_time <= ? and email != ""  group by email`
 	_, err = o.Raw(sql, date+" 00:00:00", date+" 23:59:59").QueryRows(&items)
 	return
 	//return items2,err
@@ -81,7 +106,7 @@ func GetCountUserViewHistoryByEmails(date string) (items []*UserViewEmailTotalSl
 func GetReportViewMaxTimeByMobiles(date string) (items []*UserViewMobileTotalSlice, err error) {
 	o := orm.NewOrm()
 	o.Using("rddp")
-	rddpSql := `SELECT mobile,company_name,real_name,COUNT(1) AS total FROM report_view_record WHERE create_time >= ? and create_time <= ? and mobile != ""  group by mobile`
+	rddpSql := `SELECT mobile,company_name,real_name,COUNT(1) AS total,max(create_time) view_time FROM report_view_record WHERE create_time >= ? and create_time <= ? and mobile != ""  group by mobile`
 	_, err = o.Raw(rddpSql, date+" 00:00:00", date+" 23:59:59").QueryRows(&items)
 	return
 }
@@ -89,7 +114,7 @@ func GetReportViewMaxTimeByMobiles(date string) (items []*UserViewMobileTotalSli
 func GetReportViewMaxTimeByEmails(date string) (items []*UserViewEmailTotalSlice, err error) {
 	o := orm.NewOrm()
 	o.Using("rddp")
-	rddpSql := `SELECT mobile,company_name,real_name,COUNT(1) AS total FROM report_view_record WHERE create_time >= ? and create_time <= ? and email != "" group by email`
+	rddpSql := `SELECT email,company_name,real_name,COUNT(1) AS total,max(create_time) view_time FROM report_view_record WHERE create_time >= ? and create_time <= ? and email != "" group by email`
 	_, err = o.Raw(rddpSql, date+" 00:00:00", date+" 23:59:59").QueryRows(&items)
 	return
 }
@@ -97,7 +122,7 @@ func GetReportViewMaxTimeByEmails(date string) (items []*UserViewEmailTotalSlice
 // GetAdvisoryCountUserViewHistoryByMobiles 每日资讯
 func GetAdvisoryCountUserViewHistoryByMobiles(date string) (items []*UserViewMobileTotalSlice, err error) {
 	o := orm.NewOrm()
-	sql := `SELECT count(1) total,mobile,company_name,real_name FROM advisory_user_chart_article_record WHERE create_time >= ? and create_time <= ? and mobile != ""  group by mobile`
+	sql := `SELECT count(1) total,mobile,company_name,real_name,max(create_time) view_time FROM advisory_user_chart_article_record WHERE create_time >= ? and create_time <= ? and mobile != ""  group by mobile`
 	_, err = o.Raw(sql, date+" 00:00:00", date+" 23:59:59").QueryRows(&items)
 	return
 }
@@ -105,8 +130,31 @@ func GetAdvisoryCountUserViewHistoryByMobiles(date string) (items []*UserViewMob
 // GetAdvisoryCountUserViewHistoryByEmails 每日资讯
 func GetAdvisoryCountUserViewHistoryByEmails(date string) (items []*UserViewEmailTotalSlice, err error) {
 	o := orm.NewOrm()
-	sql := `SELECT count(1) total,email,company_name,real_name as created_time FROM advisory_user_chart_article_record WHERE create_time >= ? and create_time <= ? and email != "" group by email`
+	sql := `SELECT count(1) total,email,company_name,real_name as created_time,max(create_time) view_time FROM advisory_user_chart_article_record WHERE create_time >= ? and create_time <= ? and email != "" group by email`
 	_, err = o.Raw(sql, date+" 00:00:00", date+" 23:59:59").QueryRows(&items)
 	return
 	//return items2,err
 }
+
+func GetMaxUserViewHistoryByMobiles() (items []*UserViewMobileTotalSlice, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT count(1) total,mobile,company_name,real_name,max(created_time) view_time FROM user_view_history WHERE  created_time <= "2022-02-15 00:00:00" and  mobile != "" group by mobile`
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}
+
+func GetMaxReportViewMaxTimeByMobiles() (items []*UserViewMobileTotalSlice, err error) {
+	o := orm.NewOrm()
+	o.Using("rddp")
+	rddpSql := `SELECT mobile,company_name,real_name,COUNT(1) AS total,max(create_time) view_time FROM report_view_record WHERE  create_time <= "2022-02-15 00:00:00" and  mobile != ""  group by mobile`
+	_, err = o.Raw(rddpSql).QueryRows(&items)
+	return
+}
+
+// GetAdvisoryCountUserViewHistoryByMobiles 每日资讯
+func GetMaxAdvisoryCountUserViewHistoryByMobiles() (items []*UserViewMobileTotalSlice, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT count(1) total,mobile,company_name,real_name,max(create_time) view_time FROM advisory_user_chart_article_record WHERE create_time <= "2022-02-15 00:00:00" and  mobile != ""  group by mobile`
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}

+ 28 - 0
services/roadshow/calendar.go

@@ -0,0 +1,28 @@
+package roadshow
+
+import (
+	"context"
+	"fmt"
+	"hongze/hongze_task/models/roadshow"
+	"hongze/hongze_task/utils"
+	"time"
+)
+
+func ModifyRsCalendarResearcherStatus(cont context.Context) (err error) {
+	nowDate := time.Now().Format(utils.FormatDate)
+	nowTime := time.Now().Format(utils.FormatTime)
+	fmt.Println(nowDate,nowTime)
+	list, err := roadshow.GetRsCalendarResearcher(nowDate, nowTime)
+	if err != nil {
+		fmt.Println("GetRsCalendarResearcher Err:" + err.Error())
+		return err
+	}
+	for _, v := range list {
+		err = roadshow.ModifyRsCalendarResearcherStatus(v.RsCalendarResearcherId)
+		if err != nil {
+			fmt.Println("GetRsCalendarResearcher Err:" + err.Error())
+			return err
+		}
+	}
+	return err
+}

+ 5 - 0
services/task.go

@@ -8,6 +8,7 @@ import (
 	"hongze/hongze_task/models"
 	"hongze/hongze_task/services/company_contract"
 	"hongze/hongze_task/services/data"
+	"hongze/hongze_task/services/roadshow"
 	"hongze/hongze_task/utils"
 	"strconv"
 	"strings"
@@ -80,6 +81,10 @@ func Task() {
 	//每日用户阅读数据统计
 	statisticsUserView := task.NewTask("statisticsUserView", "0 5 2 * * *", StatisticsUserView)
 	task.AddTask("每日用户阅读数据统计", statisticsUserView)
+
+	//路演-活动状态修改
+	modifyRsCalendarStatus := task.NewTask("modifyRsCalendarStatus", "0 */1 * * * * ", roadshow.ModifyRsCalendarResearcherStatus)
+	task.AddTask("modifyRsCalendarStatus", modifyRsCalendarStatus)
 	
 	task.StartTask()
 

+ 28 - 148
services/user_view_statistics.go

@@ -39,6 +39,9 @@ func StatisticsUserView(cont context.Context) (err error) {
 		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
 			}
@@ -52,6 +55,9 @@ func StatisticsUserView(cont context.Context) (err error) {
 		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
 			}
@@ -61,21 +67,15 @@ func StatisticsUserView(cont context.Context) (err error) {
 			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(),
+					Mobile:       mobile,
+					RealName:     userViewStatistics.RealName,
+					CompanyName:  userViewStatistics.CompanyName,
+					ViewNum:      userViewStatistics.Total,
+					LastViewTime: userViewStatistics.ViewTime,
+					Date:         dateTime,
+					CreateTime:   time.Now(),
 				}
-				//小于200条的时候,不插入数据库
-				if len(tmpList) < 200 {
-					tmpList = append(tmpList, item)
-					continue
-				}
-				//大于200条的时候,才去插入数据库
-				_ = models.AddMultiUserViewStatistics(tmpList)
-				tmpList = make([]*models.UserViewStatistics, 0)
+				tmpList = append(tmpList, item)
 			}
 			//最后出来后,如果还有数据未插入,那么再去批量插入数据库
 			if len(tmpList) > 0 {
@@ -105,6 +105,9 @@ func StatisticsUserView(cont context.Context) (err error) {
 		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
 			}
@@ -118,6 +121,9 @@ func StatisticsUserView(cont context.Context) (err error) {
 		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
 			}
@@ -127,100 +133,15 @@ func StatisticsUserView(cont context.Context) (err error) {
 			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
-}
-
-// 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
+					Email:        email,
+					RealName:     userViewStatistics.RealName,
+					CompanyName:  userViewStatistics.CompanyName,
+					ViewNum:      userViewStatistics.Total,
+					LastViewTime: userViewStatistics.ViewTime,
+					Date:         dateTime,
+					CreateTime:   time.Now(),
 				}
-				//大于200条的时候,才去插入数据库
-				_ = models.AddMultiUserViewStatistics(tmpList)
-				tmpList = make([]*models.UserViewStatistics, 0)
+				tmpList = append(tmpList, item)
 			}
 			//最后出来后,如果还有数据未插入,那么再去批量插入数据库
 			if len(tmpList) > 0 {
@@ -229,46 +150,5 @@ func FixStatisticsUserView(dateStr string) (err error) {
 		}
 	}
 
-	//邮箱
-	{
-		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
 }