Kaynağa Gözat

进门财经活动匹配规则修改

xingzai 3 yıl önce
ebeveyn
işleme
a3965fb2c8
3 değiştirilmiş dosya ile 89 ekleme ve 56 silme
  1. 10 0
      models/activity.go
  2. 26 22
      models/activity_attendance_detail.go
  3. 53 34
      services/activity.go

+ 10 - 0
models/activity.go

@@ -3,6 +3,7 @@ package models
 import (
 	"github.com/beego/beego/v2/client/orm"
 	"github.com/rdlucklib/rdluck_tools/paging"
+	"hongze/hongze_cygx/utils"
 	"time"
 )
 
@@ -118,6 +119,15 @@ func GetAddActivityInfoById(ActivityId int) (item *ActivityDetail, err error) {
 	return
 }
 
+//通过活动名称获取活动详情
+func GetAddActivityInfoByTitle(title, startDate, endDate string) (item *ActivityDetail, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM cygx_activity  WHERE  activity_time > '` + startDate + `' AND activity_time < '` + endDate + `' AND (activity_name LIKE '%` + title + `%' OR  jmcj_roadshow_title LIKE '%` + title + `%') LIMIT 1 `
+	utils.FileLog.Info("发送模版消息失败,msg:%s", sql)
+	err = o.Raw(sql).QueryRow(&item)
+	return
+}
+
 //通过纪要ID获取活动详情
 func GetAddActivityInfoByIdShow(uid, ActivityId int) (item *ActivityDetail, err error) {
 	o := orm.NewOrm()

+ 26 - 22
models/activity_attendance_detail.go

@@ -83,24 +83,24 @@ func AddCygxActivityAttendanceDetail(item *CygxActivityAttendanceDetail) (lastId
 }
 
 type RoadshowData struct {
-	Id                int       `orm:"column(id);pk;"description:"主键ID"`
-	Company           string    `description:"公司名称"`
-	UserName          string    `description:"用户名"`
-	UserPhone         string    `description:"手机号"`
-	UserinfoUource    string    `description:"用户来源"`
-	AuthInfo          string    `description:"用户参会鉴权"`
-	GuestUsername     string    `description:"嘉宾名称, 多个用,隔开"`
-	FirstWatchTime    string    `description:"首次观看时间"`
-	LastWatchTime     string    `description:"最后观看时间"`
-	RoadshowId        string    `description:"路演ID"`
-	RoadshowTitle     string    `description:"路演标题"`
-	RoadshowBeginTime time.Time `description:"路演开始时间"`
-	RoadshowEndTime   time.Time `description:"路演结束时间"`
-	JoinTime          int       `description:"参与时长"`
-	JoinType          int       `description:"参与方式, 1网络, 2电话"`
-	DataType          int       `description:"数据类型: 1直播, 2回放"`
-	Occupation        string    `description:"职位"`
-	UseridEntity      int       `description:"参会者身份. 1:主讲人, 2:主持人, 3:嘉宾, 4:普通参会者, 5:联席主讲人, 6:会议助理"`
+	Id                int    `orm:"column(id);pk;"description:"主键ID"`
+	Company           string `description:"公司名称"`
+	UserName          string `description:"用户名"`
+	UserPhone         string `description:"手机号"`
+	UserinfoUource    string `description:"用户来源"`
+	AuthInfo          string `description:"用户参会鉴权"`
+	GuestUsername     string `description:"嘉宾名称, 多个用,隔开"`
+	FirstWatchTime    string `description:"首次观看时间"`
+	LastWatchTime     string `description:"最后观看时间"`
+	RoadshowId        string `description:"路演ID"`
+	RoadshowTitle     string `description:"路演标题"`
+	RoadshowBeginTime string `description:"路演开始时间"`
+	RoadshowEndTime   string `description:"路演结束时间"`
+	JoinTime          int    `description:"参与时长"`
+	JoinType          int    `description:"参与方式, 1网络, 2电话"`
+	DataType          int    `description:"数据类型: 1直播, 2回放"`
+	Occupation        string `description:"职位"`
+	UseridEntity      int    `description:"参会者身份. 1:主讲人, 2:主持人, 3:嘉宾, 4:普通参会者, 5:联席主讲人, 6:会议助理"`
 }
 
 func AddAttendancDetail(items []*CygxActivityAttendanceDetail, activityId int, mobileStr string) (err error) {
@@ -141,14 +141,18 @@ func AddAttendancDetail(items []*CygxActivityAttendanceDetail, activityId int, m
 	return
 }
 
-//获取用户报名数量
-
+//获取用户参会列表
 func GetRoadshowDataList(title, findStartDate, findEndDate string) (list []*RoadshowData, err error) {
-	//o := orm.NewOrm()
 	o := orm.NewOrmUsingDB("comein_data")
-	//o.Using("comein_data")
 	sql := `SELECT * FROM roadshow_data WHERE roadshow_title LIKE '%` + title + `%' AND  roadshow_begin_time >= '` + findStartDate + `' AND roadshow_begin_time <= '` + findEndDate + `'`
+	_, err = o.Raw(sql).QueryRows(&list)
+	return
+}
 
+//获取这个时段内的进门财经参会活动
+func GetRoadshowDataListByDateTime(findStartDate, findEndDate string) (list []*RoadshowData, err error) {
+	o := orm.NewOrmUsingDB("comein_data")
+	sql := `SELECT * FROM roadshow_data WHERE   roadshow_begin_time >= '` + findStartDate + `' AND roadshow_begin_time <= '` + findEndDate + `'   GROUP BY roadshow_title `
 	_, err = o.Raw(sql).QueryRows(&list)
 	return
 }

+ 53 - 34
services/activity.go

@@ -600,54 +600,71 @@ func LabelStrV5(label string, isShowSubjectName int) (labelNew string) {
 func ActivityAttendanceDetail(cont context.Context) (err error) {
 	defer func() {
 		if err != nil {
-			fmt.Println("RefreshDataFromWind Err:" + err.Error())
-			go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "RefreshDataFromWind ErrMsg:"+err.Error(), utils.EmailSendToUsers)
+			fmt.Println("ActivityAttendanceDetail Err:" + err.Error())
+			go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "ActivityAttendanceDetail ErrMsg:"+err.Error(), utils.EmailSendToUsers)
 		}
 	}()
-
+	var activityIds string
 	fmt.Println("开始同步")
 	dateTime := time.Now().AddDate(0, 0, -14).Format(utils.FormatDate)
 	dateNow := time.Now().AddDate(0, 0, 0).Format(utils.FormatDate)
 	startDate := dateTime + " 00:00:00"
 	endDate := dateNow + " 23:59:59"
 	//获取需要处理的活动
-	listActivity, err := models.GetActivityListByDateTime(startDate, endDate)
+	//listActivity, err := models.GetActivityListByDateTime(startDate, endDate)
+	//if err != nil {
+	//	fmt.Println("GetTacticsList Err:", err.Error())
+	//	return err
+	//}
+	//获取进门财经需要处理的活动
+	listActivityRoadshow, err := models.GetRoadshowDataListByDateTime(startDate, endDate)
 	if err != nil {
-		fmt.Println("GetTacticsList Err:", err.Error())
+		fmt.Println("GetRoadshowDataListByDateTime Err:", err.Error())
 		return err
 	}
-	fmt.Println(listActivity)
 
-	for _, vAct := range listActivity {
-		doTime := utils.TimeRemoveHms2(vAct.ActivityTime)
+	//fmt.Println(listActivity)
+
+	for _, vAct := range listActivityRoadshow {
+		doTime := utils.TimeRemoveHms2(vAct.RoadshowBeginTime)
 		findStartDate := doTime + " 00:00:00"
 		findEndDate := doTime + " 23:59:59"
-		nameSlice := strings.Split(vAct.ActivityName, "】")
+		vAct.RoadshowTitle = strings.Replace(vAct.RoadshowTitle, "【", "", -1)
+		vAct.RoadshowTitle = strings.Replace(vAct.RoadshowTitle, "】", "", -1)
+		vAct.RoadshowTitle = strings.Replace(vAct.RoadshowTitle, " ", "", -1)
+		nameSlice := strings.Split(vAct.RoadshowTitle, "|")
 		//fmt.Println(timeSlice[0])
 		//对于手动匹配到的活动数据也要更新
 		var activityName string
-		if len(nameSlice) > 1 || vAct.JmcjRoadshowTitle != "" {
-			if vAct.JmcjRoadshowTitle != "" {
-				activityName = vAct.JmcjRoadshowTitle
-			} else {
-				activityName = nameSlice[len(nameSlice)-1]
-			}
+		if len(nameSlice) > 1 {
+			//if vAct.JmcjRoadshowTitle != "" {
+			//	activityName = vAct.JmcjRoadshowTitle
+			//} else {
+			//	activityName = nameSlice[len(nameSlice)-1]
+			//}
+			activityName = nameSlice[len(nameSlice)-1]
 			if activityName != "" {
+				//通过名称去找匹配的活动
+				activityDetail, _ := models.GetAddActivityInfoByTitle(activityName, findStartDate, findEndDate)
+				if activityDetail == nil {
+					continue
+				} else {
+					activityIds += strconv.Itoa(activityDetail.ActivityId) + ","
+				}
 				list, err := models.GetRoadshowDataList(activityName, findStartDate, findEndDate)
 				if err != nil {
 					fmt.Println("GetTacticsList Err:", err.Error())
 					return err
 				}
-
 				needAddAttendanc := make([]*models.CygxActivityAttendanceDetail, 0)
-				fmt.Println("原来的", vAct.ActivityName)
+				fmt.Println("原来的", vAct.RoadshowTitle)
 				fmt.Println("处理的", activityName)
 				var mobileStr string
 				if len(list) > 0 {
 					for _, v := range list {
 						if v.UserPhone != "" {
 							item := new(models.CygxActivityAttendanceDetail)
-							item.ActivityId = vAct.ActivityId
+							item.ActivityId = activityDetail.ActivityId
 							item.RealName = v.UserName
 							item.Mobile = v.UserPhone
 							item.CompanyName = v.Company
@@ -694,13 +711,13 @@ func ActivityAttendanceDetail(cont context.Context) (err error) {
 					}
 					//fmt.Println(mobileStr)
 					//参会记录
-					err = models.AddAttendancDetail(needAddAttendanc, vAct.ActivityId, mobileStr)
+					err = models.AddAttendancDetail(needAddAttendanc, activityDetail.ActivityId, mobileStr)
 					if err != nil {
 						fmt.Println("AddAttendancDetail Err:", err.Error())
 						return err
 					}
 					////处理是否限制报名
-					err = AddCygxActivityRestrictSignupByAdmin(vAct.ActivityId)
+					err = AddCygxActivityRestrictSignupByAdmin(activityDetail.ActivityId)
 					if err != nil {
 						fmt.Println("AddCygxActivityRestrictSignupByAdmin Err:", err.Error())
 						return err
@@ -716,22 +733,24 @@ func ActivityAttendanceDetail(cont context.Context) (err error) {
 			}
 		}
 	}
-	var activityIds string
-	for _, v := range listActivity {
-		activityIds += strconv.Itoa(v.ActivityId) + ","
-	}
+
+	//for _, v := range listActivity {
+	//	activityIds += strconv.Itoa(v.ActivityId) + ","
+	//}
 	activityIds = strings.TrimRight(activityIds, ",")
 
-	detailList, err := models.GetActivityAttendanceDetailList(activityIds)
-	if err != nil {
-		fmt.Println("GetActivityAttendanceDetailList Err:", err.Error())
-		return err
-	}
-	//添加报名日志 (下载使用)
-	err = models.AddCygxActivityMeetDetailLogOnlineByList(detailList, activityIds)
-	if err != nil {
-		fmt.Println("AddCygxActivityMeetDetailLogOnline Err:", err.Error())
-		return err
+	if activityIds != "" {
+		detailList, err := models.GetActivityAttendanceDetailList(activityIds)
+		if err != nil {
+			fmt.Println("GetActivityAttendanceDetailList Err:", err.Error())
+			return err
+		}
+		//添加报名日志 (下载使用)
+		err = models.AddCygxActivityMeetDetailLogOnlineByList(detailList, activityIds)
+		if err != nil {
+			fmt.Println("AddCygxActivityMeetDetailLogOnline Err:", err.Error())
+			return err
+		}
 	}
 	fmt.Println("结束路演同步")
 	return