Przeglądaj źródła

增加新增预约纪要接收模板消息推送功能

xingzai 2 lat temu
rodzic
commit
17754c4ebd

+ 40 - 0
models/activity_appointment.go

@@ -129,3 +129,43 @@ func CancelcygxActivityAppointment(item *CygxActivityAppointment) (lastId int64,
 	}
 	return
 }
+
+type CygxAppointmentAndActivity struct {
+	Mobile       string `description:"手机号"`
+	ActivityName string `description:"所属销售"`
+}
+
+//通过活动ID获取预约列表
+func GetAppointmentListByActivityId(activityIds string) (items []*CygxAppointmentAndActivity, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT
+			m.*,a.activity_name
+		FROM
+			cygx_activity_appointment AS m
+			INNER JOIN cygx_activity AS a ON a.activity_id = m.activity_id 
+		WHERE
+			a.activity_id IN ( ` + activityIds + ` ) 
+			AND a.activity_type_id IN ( 1, 2, 5 ) 
+			AND DATE_SUB( CURDATE(), INTERVAL 14 DAY ) <= date( a.activity_time ) 
+			AND a.active_state = 3`
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}
+
+//通过活动ID、手机号获取预约列表
+func GetAppointmentListByActivityIdAndMobile(activityIds, mobile string) (items []*CygxAppointmentAndActivity, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT
+			m.*,a.activity_name
+		FROM
+			cygx_activity_appointment AS m
+			INNER JOIN cygx_activity AS a ON a.activity_id = m.activity_id 
+		WHERE
+			a.activity_id IN ( ` + activityIds + ` ) 
+			AND a.activity_type_id IN ( 1, 2, 5 ) 
+			AND DATE_SUB( CURDATE(), INTERVAL 14 DAY ) <= date( a.activity_time ) 
+			AND a.active_state = 3
+			AND  m.mobile= ?`
+	_, err = o.Raw(sql, mobile).QueryRows(&items)
+	return
+}

+ 8 - 0
models/industrial_management.go

@@ -447,3 +447,11 @@ func ReportArticleClassificationEditNew(reportId int, industrialManagementIdStr
 	}
 	return
 }
+
+//通过标的名称获取相关联的活动ID
+func GetActivityIdListBySubjecName(subjectName string) (items []*ActivityIdRep, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT  * FROM cygx_industrial_activity_group_subject WHERE industrial_subject_id	 IN (SELECT industrial_subject_id FROM cygx_industrial_subject WHERE subject_name IN(` + subjectName + `) ) GROUP BY activity_id`
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}

+ 74 - 4
services/article.go

@@ -308,7 +308,7 @@ func GetArticleListByApi(cont context.Context) (err error) {
 			go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "GetArticleListByApi ErrMsg:"+err.Error(), utils.EmailSendToUsers)
 		}
 	}()
-	requestUrl := "https://vmp.hzinsights.com/v2api/articles/mp?take=100&skip=0&publish_status=2,4&order=publish_date&sort=DESC"
+	requestUrl := "https://vmp.hzinsights.com/v2api/articles/mp?take=10&skip=0&publish_status=2,4&order=publish_date&sort=DESC"
 	method := "GET"
 	client := &nhttp.Client{}
 	req, err := nhttp.NewRequest(method, requestUrl, nil)
@@ -591,6 +591,7 @@ func GetArticleListByApi(cont context.Context) (err error) {
 				fmt.Println("AddCygxArticle Err:", err.Error())
 				return err
 			}
+			//fmt.Println(newId)
 			//报告自动归类,以及推送相关模板消息
 			if v.ReportType == 2 {
 				var subjectStr string
@@ -619,7 +620,7 @@ func GetArticleListByApi(cont context.Context) (err error) {
 					if subjectStr != "" {
 						listIndustrial, err := models.GetIndustrialManagementForSubjecName(subjectStr, detailCategory.ChartPermissionId)
 						if err != nil {
-							fmt.Println("AddCygxArticle Err:", err.Error())
+							fmt.Println("GetIndustrialManagementForSubjecName Err:", err.Error())
 							return err
 						}
 						subjectStr = strings.Replace(subjectStr, "','", "】【", -1)
@@ -666,8 +667,77 @@ func GetArticleListByApi(cont context.Context) (err error) {
 				}
 			}
 
-			//类型ID 医药(医享会:28 、药调研:301)、消费【渠道新声:32】、科技【科技前言:79】、智造【匠心智造:84】
-			//如果是以上类型的报告做向相关参会的人
+			//类型ID 医药(医享会:28 、药调研:301)、消费【渠道新声:32】、科技【科技前言:79】、智造【匠心智造:84】或者是纪要做消息模板推送
+			fmt.Println(v.CategoryId)
+			if v.IsSummary == 1 || (v.CategoryId == 28 || v.CategoryId == 301 || v.CategoryId == 32 || v.CategoryId == 79 || v.CategoryId == 84) {
+				sliceSubjects := strings.Split(v.Stock, "/")
+				fmt.Println(sliceSubjects)
+				if len(sliceSubjects) > 0 {
+					var subjectStr string
+					for _, vSubject := range sliceSubjects {
+						sliceKuohao := strings.Split(vSubject, "(")           //过滤括号
+						sliceXiahuaxian := strings.Split(sliceKuohao[0], "-") //过滤下划线
+						subject := sliceXiahuaxian[0]
+						subjectStr += "'" + subject + "',"
+					}
+					if subjectStr != "" {
+						subjectStr = strings.TrimRight(subjectStr, ",")
+						activityIdList, err := models.GetActivityIdListBySubjecName(subjectStr)
+						if err != nil {
+							fmt.Println("GetActivityIdListBySubjecName Err:", err.Error())
+							return err
+						}
+						if len(activityIdList) > 0 {
+							var activityIdStr string
+							for _, vAct := range activityIdList {
+								activityIdStr += strconv.Itoa(vAct.ActivityId) + ","
+							}
+							activityIdStr = strings.TrimRight(activityIdStr, ",")
+							fmt.Println(activityIdStr)
+							if activityIdStr != "" {
+								appointmentList, err := models.GetAppointmentListByActivityId(activityIdStr)
+								if err != nil {
+									fmt.Println("GetAppointmentListByActivityId Err:", err.Error())
+									return err
+								}
+								fmt.Println("预约", appointmentList)
+								if len(appointmentList) > 0 {
+									for _, vApp := range appointmentList {
+
+										appointmentByMobileList, err := models.GetAppointmentListByActivityIdAndMobile(activityIdStr, vApp.Mobile)
+										if err != nil {
+											fmt.Println("GetAppointmentListByActivityId Err:", err.Error())
+											return err
+										}
+										var appointmentActivityName string
+										if len(appointmentByMobileList) > 0 {
+											for _, vAppM := range appointmentByMobileList {
+												appointmentActivityName += vAppM.ActivityName + ","
+											}
+										}
+										appointmentActivityName = strings.TrimRight(appointmentActivityName, ",")
+										if vApp.Mobile != "" {
+											openIdListByAppointment, err := models.GetUserRecordListByMobile(4, vApp.Mobile)
+											if err != nil {
+												fmt.Println(err)
+												return err
+											}
+
+											keyword1 := "您预约的调研,有关联的纪要发布/更新了"
+											keyword2 := appointmentActivityName
+											keyword3 := v.Title
+											keyword4 := v.PublishDate.Format(utils.FormatDateTime)
+											SendWxMsgWithArticleClassToAdmin(keyword1, keyword2, keyword3, keyword4, openIdListByAppointment, articleIdInt)
+											fmt.Println(openIdListByAppointment)
+										}
+									}
+								}
+							}
+						}
+					}
+				}
+
+			}
 		}
 	}
 	return