Browse Source

Merge branch 'master' of http://8.136.199.33:3000/hongze/hongze_cygx into cygx_10.5

xingzai 1 year ago
parent
commit
e46d780105

+ 12 - 13
controllers/activity.go

@@ -1480,7 +1480,7 @@ func (this *ActivityCoAntroller) AskAdd() {
 	item.Mobile = user.Mobile
 	item.Email = user.Email
 	item.Content = content
-	_, err = models.AddActivityHelpAsk(item)
+	msgId, err := models.AddActivityHelpAsk(item)
 	if err != nil {
 		br.Msg = "提交失败"
 		br.ErrMsg = "提交带问失败,Err:" + err.Error()
@@ -1511,6 +1511,7 @@ func (this *ActivityCoAntroller) AskAdd() {
 				sendMobile = v.Mobile
 			}
 		}
+		//如果是研选的就推送给汪洋
 		if activityInfo.ChartPermissionId == 31 {
 			sendMobile = utils.ActSendMsgMobile
 		}
@@ -1527,8 +1528,7 @@ func (this *ActivityCoAntroller) AskAdd() {
 			openIpItem, _ := models.GetUserRecordByMobile(4, sendMobile)
 			if openIpItem != nil && openIpItem.OpenId != "" {
 				if sellerItem != nil {
-					//services.SendActivityAskApplyTemplateMsg(user.RealName+"——"+user.CompanyName+"(所属销售:"+sellerItem.RealName+")", time.Now().Format(utils.FormatDateTime), req.Content, activityInfo.ActivityName, activityInfo.ActivityId, openIpItem)
-					services.SendActivityAskApplyTemplateMsgV2(user.RealName+"——"+user.CompanyName+"("+sellerItem.RealName+")", "留言:"+activityInfo.ActivityName, time.Now().Format(utils.FormatDateTime), req.Content, activityInfo.ActivityName, openIpItem, activityInfo)
+					services.SendActivityAskApplyTemplateMsgV2(user.RealName+"——"+user.CompanyName+"("+sellerItem.RealName+")", "留言:"+activityInfo.ActivityName, time.Now().Format(utils.FormatDateTime), req.Content, activityInfo.ActivityName, openIpItem, activityInfo, int(msgId))
 				}
 			}
 		}
@@ -1536,8 +1536,7 @@ func (this *ActivityCoAntroller) AskAdd() {
 		if sellerItem != nil {
 			openIpItem, _ := models.GetUserRecordByMobile(4, sellerItem.Mobile)
 			if openIpItem != nil && openIpItem.OpenId != "" {
-				//services.SendActivityAskApplyTemplateMsgV2(user.RealName+"——"+user.CompanyName, "所属销售:"+sellerItem.RealName, time.Now().Format(utils.FormatDateTime), req.Content, activityInfo.ActivityName, openIpItem, activityInfo)
-				services.SendActivityAskApplyTemplateMsgV2(user.RealName+"——"+user.CompanyName+"("+sellerItem.RealName+")", "留言:"+activityInfo.ActivityName, time.Now().Format(utils.FormatDateTime), req.Content, activityInfo.ActivityName, openIpItem, activityInfo)
+				services.SendActivityAskApplyTemplateMsgV2(user.RealName+"——"+user.CompanyName+"("+sellerItem.RealName+")", "留言:"+activityInfo.ActivityName, time.Now().Format(utils.FormatDateTime), req.Content, activityInfo.ActivityName, openIpItem, activityInfo, int(msgId))
 			}
 		}
 	}
@@ -3068,14 +3067,14 @@ func (this *ActivityCoAntroller) SpecialSignupAdd() {
 			resp.PopupMsg = "感谢反馈"
 			resp.PopupMsg2 = "此调研具体行程尚未确认,待预报名人数满10人后弘则会确定行程并推送给您活动日期,只有在确认行程中再次报名才完成占位。"
 			//给所属销售发送消息
-			if sellerItem.Mobile != "" {
-				openIpItem, _ := models.GetUserRecordByMobile(4, sellerItem.Mobile)
-				if openIpItem != nil && openIpItem.OpenId != "" {
-					if sellerItem != nil {
-						go services.SendSpecialTemplateMsg(user.RealName+"【"+user.CompanyName+"】", time.Now().Format(utils.FormatDateTime), user.Mobile, activityInfo.ResearchTheme, "sale", openIpItem)
-					}
-				}
-			}
+			//if sellerItem.Mobile != "" {
+			//	openIpItem, _ := models.GetUserRecordByMobile(4, sellerItem.Mobile)
+			//	if openIpItem != nil && openIpItem.OpenId != "" {
+			//		if sellerItem != nil {
+			//			go services.SendSpecialTemplateMsg(user.RealName+"【"+user.CompanyName+"】", time.Now().Format(utils.FormatDateTime), user.Mobile, activityInfo.ResearchTheme, "sale", openIpItem)
+			//		}
+			//	}
+			//}
 			// 给芳姐发消息
 			//cnf, _ := models.GetConfigByCode("tpl_msg")
 			actList, _ := models.GetActivityListSpecialByActivityId(activityId)

+ 80 - 8
controllers/micro_roadshow.go

@@ -345,9 +345,9 @@ func (this *MicroRoadShowController) CommentAdd() {
 		br.ErrMsg = "参数解析失败,Err:" + err.Error()
 		return
 	}
-
+	var isResearch bool // 是否属于研选
 	sourceType := req.SourceType
-
+	title := req.Title
 	if sourceType == 0 {
 		sourceType = 1
 	}
@@ -362,7 +362,8 @@ func (this *MicroRoadShowController) CommentAdd() {
 		Content:     req.Content,
 		Title:       req.Title,
 	}
-	var resourceId int
+
+	//var resourceId int
 	if sourceType == 1 {
 		activityVoiceInfo, _ := models.GetCygxActivityVoiceByActivityId(req.Id)
 		if activityVoiceInfo == nil {
@@ -372,7 +373,7 @@ func (this *MicroRoadShowController) CommentAdd() {
 		}
 		item.ActivityId = req.Id
 		item.ActivityVoiceId = activityVoiceInfo.ActivityVoiceId
-		resourceId = activityVoiceInfo.ActivityId
+		//resourceId = activityVoiceInfo.ActivityId
 	} else if sourceType == 2 {
 		activityInfo, _ := models.GetCygxActivityVideoByActivityId(req.Id)
 		if activityInfo == nil {
@@ -382,7 +383,7 @@ func (this *MicroRoadShowController) CommentAdd() {
 		}
 		item.VideoId = activityInfo.VideoId
 		item.ActivityId = req.Id
-		resourceId = activityInfo.ActivityId
+		//resourceId = activityInfo.ActivityId
 	} else if sourceType == 3 {
 		item.VideoId = req.Id
 		microVideo, e := models.GetMicroRoadshowVideoById(req.Id)
@@ -392,15 +393,28 @@ func (this *MicroRoadShowController) CommentAdd() {
 			return
 		}
 		item.IndustryId = microVideo.IndustryId
-		resourceId = microVideo.IndustryId
+		//resourceId = microVideo.IndustryId
+	}
+
+	if sourceType == 2 || sourceType == 3 {
+		detail, err := models.GetAddActivityInfoById(req.Id)
+		if err != nil {
+			br.Msg = "操作失败"
+			br.ErrMsg = "活动ID错误,不存在activityId:" + strconv.Itoa(req.Id)
+			return
+		}
+		if strings.Contains(detail.ChartPermissionName, utils.CHART_PERMISSION_NAME_YANXUAN) {
+			isResearch = true
+		}
 	}
-	_, err = models.AddArticleComment(&item)
+
+	msgId, err := models.AddArticleComment(&item)
 	if err != nil {
 		br.Msg = "提交失败"
 		br.ErrMsg = "提交留言失败,Err:" + err.Error()
 		return
 	}
-	services.SendWxMsgWithMicroRoadshowAsk(req, user, resourceId)
+	services.SendWxMsgWithMicroRoadshowAsk(req, user, sourceType, int(msgId), title, isResearch)
 	br.Ret = 200
 	br.Success = true
 	br.Msg = "操作成功"
@@ -779,3 +793,61 @@ func (this *MicroRoadShowController) Mycollect() {
 	br.Msg = "获取成功"
 	br.Data = resp
 }
+
+// @Title 模版消息留言详情
+// @Description 模版消息留言详情接口
+// @Param   SourceId		query	int		true	"资源ID"
+// @Param   SourceType	query	int		true	"留言类型,1:文章、2:活动、3:微路演视频、4:活动视频、5:活动音频"
+// @Success Ret=200 {object} models.CygxArticleCommentWxResp
+// @router /comment/detail [get]
+func (this *MicroRoadShowController) CommentDetail() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	user := this.User
+	if user == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,用户信息为空"
+		br.Ret = 408
+		return
+	}
+	sourceId, _ := this.GetInt("SourceId")
+	sourceType, _ := this.GetInt("SourceType")
+	resp := new(models.CygxArticleCommentWxResp)
+	if sourceType == 1 || sourceType == 3 || sourceType == 4 || sourceType == 5 {
+		detail, err := models.GetArticleCommentById(sourceId)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取用户权限失败, Err: " + err.Error()
+			return
+		}
+		resp.Content = detail.Content
+		if sourceType == 1 {
+			resp.SourceId = detail.ArticleId
+			resp.RedirectType = 1
+		} else if sourceType == 3 {
+			resp.SourceId = detail.IndustryId
+			resp.RedirectType = 3
+		} else {
+			resp.SourceId = detail.ActivityId
+			resp.RedirectType = 2
+		}
+	} else {
+		detail, err := models.GetCygxActivityHelpAskById(sourceId)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取用户权限失败, Err: " + err.Error()
+			return
+		}
+		resp.Content = detail.Content
+		resp.SourceId = detail.ActivityId
+		resp.RedirectType = 2
+	}
+	br.Ret = 200
+	br.Success = true
+	br.Data = resp
+	br.Msg = "操作成功"
+	return
+}

+ 2 - 36
controllers/report.go

@@ -3586,48 +3586,14 @@ func (this *ReportController) CommentAdd() {
 		Content:     content,
 		Title:       articleInfo.Title,
 	}
-	_, err = models.AddArticleComment(&item)
+	msgId, err := models.AddArticleComment(&item)
 	if err != nil {
 		br.Msg = "提交失败"
 		br.ErrMsg = "提交留言失败,Err:" + err.Error()
 		return
 	}
 
-	//获取销售信息
-	//sellerItem, err := models.GetSellerByCompanyIdCheckFicc(user.CompanyId, 2)
-	//if err != nil && err.Error() != utils.ErrNoRow() {
-	//	br.Msg = "提交失败"
-	//	br.ErrMsg = "获取销售信息失败,Err:" + err.Error()
-	//	return
-	//}
-	//// 给所属销售发送消息
-	//var openIdList []*models.OpenIdList
-	//if sellerItem != nil {
-	//	list, _ := models.GetWxOpenIdByMobileList(sellerItem.Mobile)
-	//	for _, idList := range list {
-	//		openIdList = append(openIdList, idList)
-	//	}
-	//	if openIdList != nil {
-	//		// 给芳姐发消息
-	//		cnf, _ := models.GetConfigByCode("tpl_msg")
-	//		if cnf != nil {
-	//			list, _ := models.GetWxOpenIdByMobileList(cnf.ConfigValue)
-	//			for _, idList := range list {
-	//				openIdList = append(openIdList, idList)
-	//			}
-	//		}
-	//		if articleId > 1000000 {
-	//			//发给汪洋
-	//			list, _ := models.GetWxOpenIdByMobileList(utils.ActSendMsgMobile)
-	//			for _, idList := range list {
-	//				openIdList = append(openIdList, idList)
-	//			}
-	//		}
-	//		services.SendCommentWxTemplateMsg(articleInfo.Title, user.CompanyName, user.RealName, sellerItem.RealName, item.CreateTime.Format(utils.FormatDateTime), req.Content, openIdList, req.ArticleId)
-	//	}
-	//}
-
-	services.SendCommentWxTemplateMsg(req, user, articleInfo)
+	services.SendCommentWxTemplateMsg(req, user, articleInfo, int(msgId))
 	br.Ret = 200
 	br.Success = true
 	br.Msg = "提交成功"

+ 79 - 67
controllers/user.go

@@ -861,7 +861,7 @@ func (this *UserController) ApplyTryOut() {
 	var title string
 	tryType := req.TryType
 	detailId := req.DetailId
-
+	var isResearch bool // 是否属于研选
 	if tryType == "Article" {
 		detail, err := models.GetArticleDetailById(detailId)
 		if err != nil {
@@ -870,6 +870,9 @@ func (this *UserController) ApplyTryOut() {
 			return
 		}
 		title = detail.Title
+		if detail.ArticleTypeId > 0 {
+			isResearch = true
+		}
 	} else if tryType == "Activity" {
 		detail, err := models.GetAddActivityInfoById(detailId)
 		if err != nil {
@@ -878,6 +881,9 @@ func (this *UserController) ApplyTryOut() {
 			return
 		}
 		title = detail.ActivityName
+		if strings.Contains(detail.ChartPermissionName, utils.CHART_PERMISSION_NAME_YANXUAN) {
+			isResearch = true
+		}
 	} else if tryType == "MicroAudio" {
 		// 微路演音频
 		microAudio, e := models.GetCygxActivityVoiceById(detailId)
@@ -1033,91 +1039,97 @@ func (this *UserController) ApplyTryOut() {
 		br.ErrMsg = "获取销售信息失败,Err:" + err.Error()
 		return
 	}
-	if sellerItem != nil {
-		sellerMobile = sellerItem.Mobile
-		//推送模板消息
-		mobile := user.Mobile
-		if mobile == "" {
-			mobile = user.Email
-		}
-	}
+
 	//用户状态,1:潜在客户 、2:现有客户 、3:FICC客户 、4:现有客户(正式,无对应权限) 、5:现有客户(试用,无对应权限)  、6:现有客户(试用暂停) 、7:现有客户(冻结) 、8:现有客户(流失)?
 	CompanyIdType := 1
 	applyMethod := ""
-	cnf, _ := models.GetConfigByCode("tpl_msg")
-	if cnf != nil {
-		if sellerItem != nil {
-			cnf.ConfigValue = sellerItem.Mobile
-			companyItem, err := models.GetCompanyDetailById(user.CompanyId)
+	if sellerItem != nil {
+		companyItem, err := models.GetCompanyDetailById(user.CompanyId)
+		if err != nil && err.Error() != utils.ErrNoRow() {
+			br.Msg = "获取信息失败"
+			br.ErrMsg = "获取客户信息失败,Err:" + err.Error()
+			return
+		}
+		if companyItem != nil && companyItem.CompanyId > 0 {
+			companyProduct, err := models.GetCompanyProductDetail(user.CompanyId, 2)
 			if err != nil && err.Error() != utils.ErrNoRow() {
 				br.Msg = "获取信息失败"
 				br.ErrMsg = "获取客户信息失败,Err:" + err.Error()
 				return
 			}
-			if companyItem != nil && companyItem.CompanyId > 0 {
-				companyProduct, err := models.GetCompanyProductDetail(user.CompanyId, 2)
-				if err != nil && err.Error() != utils.ErrNoRow() {
-					br.Msg = "获取信息失败"
-					br.ErrMsg = "获取客户信息失败,Err:" + err.Error()
-					return
+			if companyProduct != nil && companyProduct.IsSuspend == 1 {
+				CompanyIdType = 6
+			} else {
+				switch companyItem.Status {
+				case "正式":
+					CompanyIdType = 4
+				case "试用":
+					CompanyIdType = 5
+				case "冻结":
+					CompanyIdType = 7
+				case "流失":
+					CompanyIdType = 8
 				}
+			}
+			applyMethod = companyItem.Status + "客户申请"
+			if detailId > 0 {
 				if companyProduct != nil && companyProduct.IsSuspend == 1 {
-					CompanyIdType = 6
+					applyMethod = "试用暂停客户"
 				} else {
-					switch companyItem.Status {
-					case "正式":
-						CompanyIdType = 4
-					case "试用":
-						CompanyIdType = 5
-					case "冻结":
-						CompanyIdType = 7
-					case "流失":
-						CompanyIdType = 8
+					if companyItem.Status == "正式" || companyItem.Status == "试用" {
+						applyMethod = companyItem.Status + "客户申请,无对应权限"
+					} else if companyItem.Status == "冻结" || companyItem.Status == "流失" {
+						applyMethod = companyItem.Status + "客户"
 					}
 				}
-				applyMethod = companyItem.Status + "客户申请"
-				if detailId > 0 {
-					if companyProduct != nil && companyProduct.IsSuspend == 1 {
-						applyMethod = "试用暂停客户"
-					} else {
-						if companyItem.Status == "正式" || companyItem.Status == "试用" {
-							applyMethod = companyItem.Status + "客户申请,无对应权限"
-						} else if companyItem.Status == "冻结" || companyItem.Status == "流失" {
-							applyMethod = companyItem.Status + "客户"
-						}
-					}
-					applyMethod = applyMethod + "," + title
+				applyMethod = applyMethod + "," + title
+			}
+			openIpItem, _ := models.GetUserRecordByMobile(4, sellerItem.Mobile)
+			if openIpItem != nil && openIpItem.OpenId != "" {
+				if req.ApplyMethod != 2 {
+					req.RealName = user.RealName
+					req.CompanyName = user.CompanyName
 				}
+				go services.SendPermissionApplyTemplateMsg(req.RealName, req.CompanyName, mobile, applyMethod, openIpItem)
 			}
+		}
+	} else {
+		//获取销售信息
+		sellerItem, err := models.GetSellerByCompanyIdCheckFicc(user.CompanyId, 1)
+		if err != nil && err.Error() != utils.ErrNoRow() {
+			br.Msg = "申请失败"
+			br.ErrMsg = "获取销售信息失败,Err:" + err.Error()
+			return
+		}
+		if sellerItem != nil {
+			CompanyIdType = 3
+			applyMethod = "FICC客户"
 		} else {
-			//获取销售信息
-			sellerItem, err := models.GetSellerByCompanyIdCheckFicc(user.CompanyId, 1)
-			if err != nil && err.Error() != utils.ErrNoRow() {
-				br.Msg = "申请失败"
-				br.ErrMsg = "获取销售信息失败,Err:" + err.Error()
-				return
-			}
-			if sellerItem != nil {
-				CompanyIdType = 3
-				applyMethod = "FICC客户"
-			} else {
-				CompanyIdType = 1
-				applyMethod = "潜在客户"
-			}
-			if detailId > 0 {
-				applyMethod = applyMethod + "," + title
-			}
+			CompanyIdType = 1
+			applyMethod = "潜在客户"
 		}
-		openIpItem, _ := models.GetUserRecordByMobile(4, cnf.ConfigValue)
-		if openIpItem != nil && openIpItem.OpenId != "" {
-			if req.ApplyMethod != 2 {
-				req.RealName = user.RealName
-				req.CompanyName = user.CompanyName
-			}
-			utils.FileLog.Info("推送消息 %s %s,%s,%s,%s", req.RealName, req.CompanyName, mobile, openIpItem.OpenId, applyMethod)
-			go services.SendPermissionApplyTemplateMsg(req.RealName, req.CompanyName, mobile, applyMethod, openIpItem)
+		if detailId > 0 {
+			applyMethod = applyMethod + "," + title
 		}
 	}
+	//var configCode string
+	////如果是研选的就推送给汪洋,否则就推送给王芳
+	//if isResearch {
+	//	configCode = "tpl_msg_wang_yang"
+	//} else {
+	//	configCode = "tpl_msg"
+	//}
+	//cnf, _ := models.GetConfigByCode(configCode)
+	//openIpItem, _ := models.GetUserRecordByMobile(4, cnf.ConfigValue)
+	//if openIpItem != nil && openIpItem.OpenId != "" {
+	//	if req.ApplyMethod != 2 {
+	//		req.RealName = user.RealName
+	//		req.CompanyName = user.CompanyName
+	//	}
+	//	go services.SendPermissionApplyTemplateMsg(req.RealName, req.CompanyName, mobile, applyMethod, openIpItem)
+	//}
+
+	go services.SendPermissionApplyTemplateMsgAdmin(req, mobile, applyMethod, isResearch)
 	err = models.AddApplyRecord(&req, user.Mobile, user.CompanyName, uid, user.CompanyId, CompanyIdType)
 	if err != nil {
 		br.Msg = "申请失败"

+ 1 - 0
models/activity.go

@@ -692,6 +692,7 @@ type SignupExportRep struct {
 }
 
 type ActivityMsgExportRep struct {
+	AskId       int    `description:"活动带问ID"`
 	UserId      int    `description:"用户ID"`
 	RealName    string `description:"姓名"`
 	CompanyName string `description:"公司名称"`

+ 10 - 3
models/activity_help_ask.go

@@ -17,7 +17,7 @@ type CygxActivityHelpAsk struct {
 	Content     string    `description:"内容"`
 }
 
-//添加优化建议
+// 添加优化建议
 func AddActivityHelpAsk(item *CygxActivityHelpAsk) (lastId int64, err error) {
 	o := orm.NewOrm()
 	lastId, err = o.Insert(item)
@@ -43,7 +43,7 @@ type CygxAskListResp struct {
 
 //report_or_activity_id
 
-//主题列表
+// 主题列表
 func GetActivityAskList(userId int) (items []*CygxAskList, err error) {
 	o := orm.NewOrm()
 	sql := `SELECT
@@ -60,7 +60,7 @@ func GetActivityAskList(userId int) (items []*CygxAskList, err error) {
 	return
 }
 
-//列表
+// 列表
 func GetArticleAskList(userId int) (items []*CygxAskList, err error) {
 	o := orm.NewOrm()
 	sql := `SELECT
@@ -76,3 +76,10 @@ func GetArticleAskList(userId int) (items []*CygxAskList, err error) {
 	_, err = o.Raw(sql, userId).QueryRows(&items)
 	return
 }
+
+// 通过ID获取详情
+func GetCygxActivityHelpAskById(id int) (item *CygxActivityHelpAsk, err error) {
+	sql := `SELECT * FROM cygx_activity_help_ask WHERE ask_id=? `
+	err = orm.NewOrm().Raw(sql, id).QueryRow(&item)
+	return
+}

+ 13 - 0
models/article_comment.go

@@ -70,3 +70,16 @@ type CygxArticleCommentResp struct {
 type CygxCommentListResp struct {
 	List []*CygxArticleCommentResp
 }
+
+// 通过ID获取详情
+func GetArticleCommentById(id int) (item *CygxArticleCommentResp, err error) {
+	sql := `SELECT * FROM cygx_article_comment WHERE id=? `
+	err = orm.NewOrm().Raw(sql, id).QueryRow(&item)
+	return
+}
+
+type CygxArticleCommentWxResp struct {
+	Content      string `description:"内容"`
+	SourceId     int    `description:"跳转ID"`
+	RedirectType int    `description:"跳转类型 1文章 2活动 3产业资源包"`
+}

+ 9 - 0
routers/commentsRouter.go

@@ -745,6 +745,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["hongze/hongze_cygx/controllers:MicroRoadShowController"] = append(beego.GlobalControllerRouter["hongze/hongze_cygx/controllers:MicroRoadShowController"],
+        beego.ControllerComments{
+            Method: "CommentDetail",
+            Router: `/comment/detail`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["hongze/hongze_cygx/controllers:MicroRoadShowController"] = append(beego.GlobalControllerRouter["hongze/hongze_cygx/controllers:MicroRoadShowController"],
         beego.ControllerComments{
             Method: "List",

+ 26 - 22
services/activity.go

@@ -67,7 +67,7 @@ func SendActivityBeginMsg(cont context.Context) (err error) {
 		//	reserveResults = "失败(爽约次数超限)"
 		//}
 		reserveResults = "--"
-		first = "您有一场【" + v.ActivityTypeName + "】将在1小时后开始"
+		first = "将在1小时后开始"
 		SendWxMsgWithFrequency(first, v.ActivityName, reserveResults, v.ActivityTimeText, v.Address, remark, openIdList, v.ActivityId)
 	}
 	if len(signupIds) == 0 {
@@ -112,7 +112,7 @@ func SendActivityBeginMsgMeeting(cont context.Context) (err error) {
 		openIdList := make([]*models.OpenIdList, 0)
 		openIdList = append(openIdList, openIdItem)
 		reserveResults = "--"
-		first = "您有一场【" + v.ActivityTypeName + "】将在15分钟后开始"
+		first = "将在15分钟后开始"
 		SendWxMsgWithFrequency(first, v.ActivityName, reserveResults, v.ActivityTimeText, "--", remark, openIdList, v.ActivityId)
 	}
 	if len(signupIds) == 0 {
@@ -1125,31 +1125,36 @@ func SendEmailFileForAskMsgResearch(cont context.Context) (err error) {
 		}
 
 		for _, v2 := range list {
-			user, err := models.GetWxUserItemByUserId(v2.UserId)
-			if err != nil && err.Error() != utils.ErrNoRow() {
+			user, e := models.GetWxUserItemByUserId(v2.UserId)
+			if e != nil && e.Error() != utils.ErrNoRow() {
+				err = errors.New("GetWxUserItemByUserId, Err: " + e.Error())
 				return err
 			}
 			//获取销售信息
-			sellerItem, err := models.GetSellerByCompanyIdCheckFicc(v2.CompanyId, 2)
-			if err != nil && err.Error() != utils.ErrNoRow() {
-				return err
+			sellerItem, e := models.GetSellerByCompanyIdCheckFicc(v2.CompanyId, 2)
+			if e != nil && e.Error() != utils.ErrNoRow() {
+				err = errors.New("GetSellerByCompanyIdCheckFicc, Err: " + e.Error())
+				return
+			}
+
+			//如果是研选的就推送给汪洋
+			cnf, e := models.GetConfigByCode(utils.TPL_MSG_WANG_YANG)
+			if e != nil {
+				err = errors.New("GetConfigByCode, Err: " + e.Error())
+				return
 			}
-			//给研究员推送消息
+			//给汪洋推送消息
 			if sellerItem != nil {
-				openIpItem, _ := models.GetUserRecordByMobile(4, utils.ActSendMsgMobile)
+				openIpItem, _ := models.GetUserRecordByMobile(4, cnf.ConfigValue)
 				if openIpItem != nil && openIpItem.OpenId != "" {
-					//SendActivityAskApplyTemplateMsg(user.RealName+"——"+user.CompanyName+"(所属销售:"+sellerItem.RealName+")", v2.CreateTime, v2.Content, activityInfo.ActivityName, activityInfo.ActivityId, openIpItem)
-					//SendActivityAskApplyTemplateMsgV2(user.RealName+"——"+user.CompanyName, "所属销售:"+sellerItem.RealName, time.Now().Format(utils.FormatDateTime), v2.Content, activityInfo.ActivityName, openIpItem, activityInfo)
-					SendActivityAskApplyTemplateMsgV2(user.RealName+"——"+user.CompanyName+"("+sellerItem.RealName+")", "留言:"+activityInfo.ActivityName, time.Now().Format(utils.FormatDateTime), v2.Content, activityInfo.ActivityName, openIpItem, activityInfo)
+					SendActivityAskApplyTemplateMsgV2(user.RealName+"——"+user.CompanyName+"("+sellerItem.RealName+")", "留言:"+activityInfo.ActivityName, time.Now().Format(utils.FormatDateTime), v2.Content, activityInfo.ActivityName, openIpItem, activityInfo, v2.AskId)
 				}
 			}
 			//给所属销售推送消息
 			if sellerItem != nil {
 				openIpItem, _ := models.GetUserRecordByMobile(4, sellerItem.Mobile)
 				if openIpItem != nil && openIpItem.OpenId != "" {
-					//SendActivityAskApplyTemplateMsg(user.RealName+"——"+user.CompanyName+"(所属销售:"+sellerItem.RealName+")", v2.CreateTime, v2.Content, activityInfo.ActivityName, activityInfo.ActivityId, openIpItem)
-					//SendActivityAskApplyTemplateMsgV2(user.RealName+"——"+user.CompanyName, "所属销售:"+sellerItem.RealName, time.Now().Format(utils.FormatDateTime), v2.Content, activityInfo.ActivityName, openIpItem, activityInfo)
-					SendActivityAskApplyTemplateMsgV2(user.RealName+"——"+user.CompanyName+"("+sellerItem.RealName+")", "留言:"+activityInfo.ActivityName, time.Now().Format(utils.FormatDateTime), v2.Content, activityInfo.ActivityName, openIpItem, activityInfo)
+					SendActivityAskApplyTemplateMsgV2(user.RealName+"——"+user.CompanyName+"("+sellerItem.RealName+")", "留言:"+activityInfo.ActivityName, time.Now().Format(utils.FormatDateTime), v2.Content, activityInfo.ActivityName, openIpItem, activityInfo, v2.AskId)
 				}
 			}
 		}
@@ -1232,7 +1237,7 @@ func SendEmailFileForAskMsg(cont context.Context) (err error) {
 				if openIpItem != nil && openIpItem.OpenId != "" {
 					//SendActivityAskApplyTemplateMsg(user.RealName+"——"+user.CompanyName+"(所属销售:"+sellerItem.RealName+")", v2.CreateTime, v2.Content, activityInfo.ActivityName, activityInfo.ActivityId, openIpItem)
 					//SendActivityAskApplyTemplateMsgV2(user.RealName+"——"+user.CompanyName, "所属销售:"+sellerItem.RealName, time.Now().Format(utils.FormatDateTime), v2.Content, activityInfo.ActivityName, openIpItem, activityInfo)
-					SendActivityAskApplyTemplateMsgV2(user.RealName+"——"+user.CompanyName+"("+sellerItem.RealName+")", "留言:"+activityInfo.ActivityName, time.Now().Format(utils.FormatDateTime), v2.Content, activityInfo.ActivityName, openIpItem, activityInfo)
+					SendActivityAskApplyTemplateMsgV2(user.RealName+"——"+user.CompanyName+"("+sellerItem.RealName+")", "留言:"+activityInfo.ActivityName, time.Now().Format(utils.FormatDateTime), v2.Content, activityInfo.ActivityName, openIpItem, activityInfo, v2.AskId)
 				}
 			}
 			//给销售推送模板消息
@@ -1241,7 +1246,7 @@ func SendEmailFileForAskMsg(cont context.Context) (err error) {
 				if openIpItem != nil && openIpItem.OpenId != "" {
 					//SendActivityAskApplyTemplateMsg(user.RealName+"——"+user.CompanyName+"(所属销售:"+sellerItem.RealName+")", v2.CreateTime, v2.Content, activityInfo.ActivityName, activityInfo.ActivityId, openIpItem)
 					//SendActivityAskApplyTemplateMsgV2(user.RealName+"——"+user.CompanyName, "所属销售:"+sellerItem.RealName, time.Now().Format(utils.FormatDateTime), v2.Content, activityInfo.ActivityName, openIpItem, activityInfo)
-					SendActivityAskApplyTemplateMsgV2(user.RealName+"——"+user.CompanyName+"("+sellerItem.RealName+")", "留言:"+activityInfo.ActivityName, time.Now().Format(utils.FormatDateTime), v2.Content, activityInfo.ActivityName, openIpItem, activityInfo)
+					SendActivityAskApplyTemplateMsgV2(user.RealName+"——"+user.CompanyName+"("+sellerItem.RealName+")", "留言:"+activityInfo.ActivityName, time.Now().Format(utils.FormatDateTime), v2.Content, activityInfo.ActivityName, openIpItem, activityInfo, v2.AskId)
 				}
 			}
 		}
@@ -1704,8 +1709,7 @@ func IsShowAppointmentByactivityInfo(item *models.ActivityDetail, chartPermissio
 func ArticleUserRemind(user *models.WxUserItem, articleDetail *models.ArticleDetail, source int) (err error) {
 	defer func() {
 		if err != nil {
-			go utils.SendAlarmMsg("同步策略平台阅读数据失败", 2)
-			go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "GetCeLueArticlePv ErrMsg:"+err.Error(), utils.EmailSendToUsers)
+			go utils.SendAlarmMsg(" 用户报告操作行为,模板消息推送失败"+fmt.Sprint("UserId:", user.UserId, "ArticleId:", articleDetail.ArticleId), 2)
 		}
 	}()
 	countUser, err := models.GetUserRemind(user.UserId)
@@ -2149,7 +2153,6 @@ func ActivityVideoUserRmind(user *models.WxUserItem, activityId, fileType int) (
 			err = errors.New("GetSellerByAdminId, Err: " + e.Error())
 			return
 		}
-
 		//TripStatus            int    `description:"行程进行状态 1:预报名,2:确定行程"`
 		if fileType == 1 {
 			activityInfo, e := models.GetCygxActivityVideoByActivityId(activityId)
@@ -2163,6 +2166,7 @@ func ActivityVideoUserRmind(user *models.WxUserItem, activityId, fileType int) (
 			keyword1 = activityInfo.VideoName
 			keyword2 = fmt.Sprint("互动:播放视频,", user.RealName, "--", user.CompanyName)
 			first = fmt.Sprint(user.RealName, "--", user.CompanyName, ",有新的互动:播放视频")
+
 		} else {
 			activityInfo, e := models.GetCygxActivityVoiceByActivityId(activityId)
 			if e != nil {
@@ -2177,8 +2181,8 @@ func ActivityVideoUserRmind(user *models.WxUserItem, activityId, fileType int) (
 			first = fmt.Sprint(user.RealName, "--", user.CompanyName, ",有新的互动:播放音频")
 		}
 
-		keyword2 = "__"
-		remark = "点击查看活动详情"
+		//keyword2 = "__"
+		//remark = "点击查看活动详情"
 		openIdArr := make([]string, 0)
 		for _, v := range openIdList {
 			openIdArr = append(openIdArr, v.OpenId)

+ 7 - 7
services/activity_special.go

@@ -1011,7 +1011,7 @@ func SendWxMsgActivitySpecial10(activityInfo *models.CygxActivitySpecialDetail)
 	first = "【" + activityInfo.ResearchTheme + "】已有10人预报名"
 	keyword3 = "-"
 	keyword2 = "-"
-	keyword4 = activityInfo.ResearchTheme
+	keyword4 = "【" + activityInfo.ResearchTheme + "】已有10人预报名"
 	openIdArr := make([]string, 0)
 	for _, v := range openIdList {
 		openIdArr = append(openIdArr, v.OpenId)
@@ -1090,9 +1090,9 @@ func SendWxMsgActivitySpecialTwoDays(cont context.Context) (err error) {
 			err = errors.New("GetSellerByAdminId, Err: " + e.Error())
 			return
 		}
-		first := "【" + v.ResearchTheme + "】专项调研将在两天后进行,如不能参加,请及时取消报名"
-		keyword1 := v.ResearchTheme
-		keyword2 := "报名"
+		first := ""
+		keyword1 := "专项调研【" + v.ResearchTheme + "】"
+		keyword2 := "将在两天后进行,如不能参加,请及时取消报名"
 		keyword3 := v.ActivityTimeTextByDay
 		keyword4 := "线上"
 		if v.SpecialType == 2 {
@@ -1132,9 +1132,9 @@ func SendWxMsgActivitySpecialTwoDays(cont context.Context) (err error) {
 					}
 				}
 			}
-			for k, vM := range mapSller {
-				first = "【" + v.ResearchTheme + "】专项调研将在两天后进行,请及时提醒您的报名客户"
-				keyword2 = vM
+			for k, _ := range mapSller {
+				keyword1 = "将在两天后进行,请及时提醒您的报名客户"
+				//keyword2 = vM
 				openIdList = make([]*models.OpenIdList, 0)
 				openIdList = append(openIdList, &models.OpenIdList{OpenId: mapSllerOpenid[k]})
 				SendWxMsgWithFrequencySpecial(first, keyword1, keyword2, keyword3, keyword4, remark, openIdList, v.ActivityId)

+ 0 - 1
services/activity_special_trip.go

@@ -181,7 +181,6 @@ func ActivitySpecialUserRmind(user *models.WxUserItem, activityId, TripStatus in
 			keyword2 = fmt.Sprint("互动:专项调研预报名,", user.RealName, "--", user.CompanyName)
 		} else {
 			keyword2 = fmt.Sprint("互动:活动报名,", user.RealName, "--", user.CompanyName)
-
 		}
 		keyword1 = activityInfo.ResearchTheme
 		//keyword2 = "__"

+ 10 - 0
services/product_interior.go

@@ -109,6 +109,11 @@ func GetProductInteriorUrlBody(body string) (itemResp []*models.ProductInteriorU
 }
 
 func AddCygxProductInteriorHistory(user *models.WxUserItem, articleId int) (err error) {
+	cacheKey := fmt.Sprint("ProductInterior:", user.UserId, "articleId:", articleId)
+	isExist := utils.Rc.IsExist(cacheKey)
+	if isExist {
+		return err
+	}
 	defer func() {
 		if err != nil {
 			go utils.SendAlarmMsg("产品内测用户浏览信息记录失败"+err.Error(), 2)
@@ -131,6 +136,11 @@ func AddCygxProductInteriorHistory(user *models.WxUserItem, articleId int) (err
 		historyRecord.SellerName = sellerItem.RealName
 	}
 	_, err = models.AddCygxProductInteriorHistory(historyRecord)
+	////10秒之内的阅读不重复记录
+	setNX := utils.Rc.SetNX(cacheKey, articleId, time.Second*10)
+	if !setNX {
+		go utils.SendAlarmMsg("记录用户搜索关键词失败,设置Redis Key 过期时间失败:key"+cacheKey, 3)
+	}
 	return
 }
 

+ 11 - 9
services/task.go

@@ -22,12 +22,6 @@ func Task() {
 		getArticleListByApi := task.NewTask("getArticleListByApi", "0 */5 * * * *", GetArticleListByApi) //通过三方接口获取策略平台上的文章
 		task.AddTask("getArticleListByApi", getArticleListByApi)
 
-		//会议提醒模板消息推送
-		sendActivityBeginMsg := task.NewTask("sendActivityBeginMsg", "0 */10 6-23 * * *", SendActivityBeginMsg) //会议前60分钟的提醒
-		task.AddTask("sendActivityBeginMsg", sendActivityBeginMsg)
-		sendActivityBeginMsgMeeting := task.NewTask("sendActivityBeginMsgMeeting", "0 */5 6-23 * * *", SendActivityBeginMsgMeeting) //会议前15分钟的提醒
-		task.AddTask("sendActivityBeginMsgMeeting", sendActivityBeginMsgMeeting)
-
 		//预约外呼名单,会前1小时自动发送邮件给专家组
 		sendEmailFileToExpert := task.NewTask("sendEmailFileToExpert", "0 */5 6-23 * * *", SendEmailFileToExpert) //预约外呼名单,会前1小时自动发送邮件给专家组
 		task.AddTask("sendEmailFileToExpert", sendEmailFileToExpert)
@@ -40,17 +34,25 @@ func Task() {
 
 		getChartListByApi := task.NewTask("getChartListByApi", "0 */10 * * * *", GetChartDetailByChartId) //同步图表
 		task.AddTask("getChartListByApi", getChartListByApi)
-	}
 
-	if utils.IsTask {
 		getYiDongActivity := task.NewTask("getYiDongActivity", "0 */10 * * * *", GetYiDongActivity) //同步易董的活动信息
 		task.AddTask("getYiDongActivity", getYiDongActivity)
 
-		getYiDongActivityMeeting := task.NewTask("getYiDongActivityMeeting", "0 */30 * * * *", GetYiDongActivityMeeting) //同步易董的活动信息
+		getYiDongActivityMeeting := task.NewTask("getYiDongActivityMeeting", "0 */60 * * * *", GetYiDongActivityMeeting) //同步易董的活动信息
 		task.AddTask("getYiDongActivityMeeting", getYiDongActivityMeeting)
 
 		yiDongSignAppointmentsForThird := task.NewTask("yiDongSignAppointmentsForThird", "0 */10 * * * *", YiDongSignAppointmentsForThird) //会前一小时将,报名信息同步到易董
 		task.AddTask("yiDongSignAppointmentsForThird", yiDongSignAppointmentsForThird)
+	}
+
+	if utils.IsTask {
+
+		//会议提醒模板消息推送
+		sendActivityBeginMsg := task.NewTask("sendActivityBeginMsg", "0 */10 6-23 * * *", SendActivityBeginMsg) //会议前60分钟的提醒
+		task.AddTask("sendActivityBeginMsg", sendActivityBeginMsg)
+
+		sendActivityBeginMsgMeeting := task.NewTask("sendActivityBeginMsgMeeting", "0 */5 6-23 * * *", SendActivityBeginMsgMeeting) //会议前15分钟的提醒
+		task.AddTask("sendActivityBeginMsgMeeting", sendActivityBeginMsgMeeting)
 
 		//修改任务状
 		updateActivitySattus := task.NewTask("syncTacticsListAddreport", "0 */1 6-23 * * *", UpdateActivitySattus)

+ 38 - 0
services/user.go

@@ -1072,3 +1072,41 @@ func UpdateCygxSubscribe(uid int, unionId string) (err error) {
 	}
 	return
 }
+
+// SendPermissionApplyTemplateMsgAdmin 处理试用申请给王芳,汪洋发消息
+func SendPermissionApplyTemplateMsgAdmin(req models.ApplyTryReq, usermobile, applyMethod string, isResearch bool) (err error) {
+	defer func() {
+		if err != nil {
+			go utils.SendAlarmMsg("处理试用申请给王芳,汪洋发消息失败, ErrMsg: "+err.Error(), 3)
+		}
+	}()
+	var configCode string
+	//如果是研选的就推送给汪洋跟王芳,否则就推送给王芳
+	if isResearch {
+		configCode = utils.TPL_MSG_WANG_FANG_WANG_YANG
+	} else {
+		configCode = utils.TPL_MSG
+	}
+	cnf, e := models.GetConfigByCode(configCode)
+	if e != nil {
+		err = errors.New("GetConfigByCode, Err: " + e.Error() + configCode)
+		return
+	}
+	openIdList, e := models.GetUserRecordListByMobile(4, cnf.ConfigValue)
+	if e != nil && e.Error() != utils.ErrNoRow() {
+		err = errors.New("GetUserRecordListByMobile, Err: " + e.Error() + cnf.ConfigValue)
+		return err
+	}
+
+	for _, v := range openIdList {
+		go SendPermissionApplyTemplateMsg(req.RealName, req.CompanyName, usermobile, applyMethod, v)
+	}
+
+	//openIpItem, e := models.GetUserRecordByMobile(4, cnf.ConfigValue)
+	//if e != nil {
+	//	err = errors.New("GetUserRecordByMobile, Err: " + e.Error() + cnf.ConfigValue)
+	//	return
+	//}
+
+	return
+}

+ 60 - 33
services/wechat_send_msg.go

@@ -115,40 +115,67 @@ func SendPermissionApplyTemplateMsg(realName, companyName, mobile, applyMethod s
 		}
 	}()
 
-	var accessToken string
-	accessToken, err = models.GetWxAccessTokenByXzs()
-	if err != nil {
-		msg = "GetWxAccessToken Err:" + err.Error()
-		return
-	}
-	if accessToken == "" {
-		msg = "accessToken is empty"
-		return
-	}
-	sendUrl := "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + accessToken
-
-	sendMap := make(map[string]interface{})
-	sendData := make(map[string]interface{})
+	//var accessToken string
+	//accessToken, err = models.GetWxAccessTokenByXzs()
+	//if err != nil {
+	//	msg = "GetWxAccessToken Err:" + err.Error()
+	//	return
+	//}
+	//if accessToken == "" {
+	//	msg = "accessToken is empty"
+	//	return
+	//}
+	//sendUrl := "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + accessToken
+	//
+	//sendMap := make(map[string]interface{})
+	//sendData := make(map[string]interface{})
+	//
+	//keyword1 := "权限申请:" + realName + "【" + companyName + "】"
+	//first := "查研观向有一条新的权限申请,请及时处理。"
+	//keyword2 := mobile
+	//keyword3 := time.Now().Format(utils.FormatDateTime)
+	//keyword4 := applyMethod
+	//fontColor := "#D9001B"
+	//sendData["first"] = map[string]interface{}{"value": first, "color": fontColor}
+	//sendData["keyword1"] = map[string]interface{}{"value": keyword1, "color": fontColor}
+	//sendData["keyword2"] = map[string]interface{}{"value": keyword2, "color": fontColor}
+	//sendData["keyword3"] = map[string]interface{}{"value": keyword3, "color": fontColor}
+	//sendData["keyword4"] = map[string]interface{}{"value": keyword4, "color": fontColor}
+	//if utils.RunMode == "release" {
+	//	sendMap["template_id"] = utils.WxMsgTemplateIdApplyXzs
+	//} else {
+	//	sendMap["template_id"] = utils.WxMsgTemplateIdApply
+	//}
+	//sendMap["data"] = sendData
+	//sendTemplateMsg(sendUrl, sendMap, itemOpenid, mobile, utils.TEMPLATE_MSG_CYGX_APPLY)
 
-	keyword1 := realName + "【" + companyName + "】"
-	first := "查研观向有一条新的权限申请,请及时处理。"
-	keyword2 := mobile
-	keyword3 := time.Now().Format(utils.FormatDateTime)
-	keyword4 := applyMethod
-	fontColor := "#D9001B"
-	sendData["first"] = map[string]interface{}{"value": first, "color": fontColor}
-	sendData["keyword1"] = map[string]interface{}{"value": keyword1, "color": fontColor}
-	sendData["keyword2"] = map[string]interface{}{"value": keyword2, "color": fontColor}
-	sendData["keyword3"] = map[string]interface{}{"value": keyword3, "color": fontColor}
-	sendData["keyword4"] = map[string]interface{}{"value": keyword4, "color": fontColor}
-	if utils.RunMode == "release" {
-		sendMap["template_id"] = utils.WxMsgTemplateIdApplyXzs
-	} else {
-		sendMap["template_id"] = utils.WxMsgTemplateIdApply
-	}
-	sendMap["data"] = sendData
-	sendTemplateMsg(sendUrl, sendMap, itemOpenid, mobile, utils.TEMPLATE_MSG_CYGX_APPLY)
-	fmt.Println("send end")
+	var first string
+	var keyword1 string
+	var keyword2 string
+	var keyword3 string
+	var keyword4 string
+	var remark string
+	var redirectUrl string
+	keyword1 = "权限申请:" + realName + "【" + companyName + "】"
+	keyword2 = mobile
+	keyword3 = time.Now().Format(utils.FormatDateTime)
+	keyword4 = applyMethod
+	openIdArr := make([]string, 0)
+	openIdArr = append(openIdArr, itemOpenid.OpenId)
+	sendInfo := new(SendWxTemplate)
+	sendInfo.First = first
+	sendInfo.Keyword1 = keyword1
+	sendInfo.Keyword2 = keyword2
+	sendInfo.Keyword3 = keyword3
+	sendInfo.Keyword4 = keyword4
+	sendInfo.Remark = remark
+	sendInfo.TemplateId = utils.WxMsgTemplateIdApplyXzs
+	sendInfo.RedirectUrl = redirectUrl
+	sendInfo.RedirectTarget = 3
+	sendInfo.Resource = mobile
+	sendInfo.SendType = utils.TEMPLATE_MSG_CYGX_APPLY
+	sendInfo.OpenIdArr = openIdArr
+	err = PublicSendTemplateMsg(sendInfo)
 	return
 }
 

+ 129 - 140
services/wx_template_msg.go

@@ -14,7 +14,7 @@ import (
 )
 
 // 活动预开始模版消息通知
-func SendWxMsgWithFrequency(first, activityName, reserveResults, activityTime, activityAddress, remark string, openIdList []*models.OpenIdList, activityId int) (err error) {
+func SendWxMsgWithFrequency(keyword2, activityName, reserveResults, activityTime, activityAddress, remark string, openIdList []*models.OpenIdList, activityId int) (err error) {
 	var msg string
 	defer func() {
 		if err != nil {
@@ -23,29 +23,24 @@ func SendWxMsgWithFrequency(first, activityName, reserveResults, activityTime, a
 		}
 		fmt.Println("line 21", err, msg)
 	}()
-	utils.FileLog.Info("%s", "services SendMsg")
-	accessToken, err := models.GetWxAccessTokenByXzs()
-	if err != nil {
-		msg = "GetWxAccessToken Err:" + err.Error()
-		return
-	}
-	if accessToken == "" {
-		msg = "accessToken is empty"
-		return
-	}
 
-	sendUrl := "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + accessToken
-	templateId := utils.WxMsgTemplateIdActivityApplyXzs
-	sendMap := make(map[string]interface{})
-	sendData := make(map[string]interface{})
-	sendMap["template_id"] = templateId
-	sendMap["miniprogram"] = map[string]interface{}{"appid": utils.WxAppId, "pagepath": utils.WX_MSG_PATH_ACTIVITY_DETAIL + strconv.Itoa(activityId)}
-	sendData["first"] = map[string]interface{}{"value": first, "color": "#173177"}
-	sendData["keyword1"] = map[string]interface{}{"value": activityName, "color": "#173177"}
-	sendData["keyword2"] = map[string]interface{}{"value": activityTime, "color": "#173177"}
-	sendData["remark"] = map[string]interface{}{"value": remark, "color": "#173177"}
-	sendMap["data"] = sendData
-	WxSendTemplateMsg(sendUrl, sendMap, openIdList, strconv.Itoa(activityId), utils.TEMPLATE_MSG_CYGX_ACTIVITY_ADD)
+	redirectUrl := utils.WX_MSG_PATH_ACTIVITY_DETAIL + strconv.Itoa(activityId)
+	sendInfo := new(SendWxTemplate)
+
+	sendInfo.Keyword1 = activityName
+	sendInfo.Keyword2 = keyword2
+	openIdArr := make([]string, 0)
+	for _, v := range openIdList {
+		openIdArr = append(openIdArr, v.OpenId)
+	}
+	sendInfo.Remark = remark
+	sendInfo.TemplateId = utils.WxMsgTemplateIdActivityChangeApplyXzs
+	sendInfo.RedirectUrl = redirectUrl
+	sendInfo.RedirectTarget = 3
+	sendInfo.Resource = strconv.Itoa(activityId)
+	sendInfo.SendType = utils.TEMPLATE_MSG_CYGX_ACTIVITY_ADD
+	sendInfo.OpenIdArr = openIdArr
+	err = PublicSendTemplateMsg(sendInfo)
 	return
 }
 
@@ -58,32 +53,58 @@ func SendWxMsgWithFrequencySpecial(first, activityName, reserveResults, activity
 			utils.FileLog.Info("发送模版消息失败,Err:%s", err.Error())
 		}
 	}()
-	accessToken, err := models.GetWxAccessTokenByXzs()
-	if err != nil {
-		msg = "GetWxAccessToken Err:" + err.Error()
-		return
-	}
-	if accessToken == "" {
-		msg = "accessToken is empty"
-		return
+	//accessToken, err := models.GetWxAccessTokenByXzs()
+	//if err != nil {
+	//	msg = "GetWxAccessToken Err:" + err.Error()
+	//	return
+	//}
+	//if accessToken == "" {
+	//	msg = "accessToken is empty"
+	//	return
+	//}
+	//
+	//sendUrl := "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + accessToken
+	//templateId := utils.WxMsgTemplateIdActivityApplyXzs
+	//sendMap := make(map[string]interface{})
+	//sendData := make(map[string]interface{})
+	//sendMap["template_id"] = templateId
+	//sendMap["miniprogram"] = map[string]interface{}{"appid": utils.WxAppId, "pagepath": utils.WX_MSG_PATH_ACTIVITY_SPECIAL_DETAIL + strconv.Itoa(activityId)}
+	//sendData["first"] = map[string]interface{}{"value": first, "color": "#173177"}
+	//sendData["keyword1"] = map[string]interface{}{"value": activityName, "color": "#173177"}
+	//sendData["keyword2"] = map[string]interface{}{"value": activityTime, "color": "#173177"}
+	//sendData["remark"] = map[string]interface{}{"value": remark, "color": "#173177"}
+	//sendMap["data"] = sendData
+	//WxSendTemplateMsg(sendUrl, sendMap, openIdList, strconv.Itoa(activityId), utils.TEMPLATE_MSG_CYGX_ACTIVITY_ADD)
+
+	//var first string
+	var keyword1 string
+	var keyword2 string
+	var keyword3 string
+	var keyword4 string
+
+	first = ""
+	keyword1 = activityName
+	keyword3 = activityTime
+	openIdArr := make([]string, 0)
+	for _, v := range openIdList {
+		openIdArr = append(openIdArr, v.OpenId)
 	}
+	redirectUrl := utils.WX_MSG_PATH_ACTIVITY_SPECIAL_DETAIL + strconv.Itoa(activityId)
+	sendInfo := new(SendWxTemplate)
+	sendInfo.First = first
+	sendInfo.Keyword1 = keyword1
+	sendInfo.Keyword2 = keyword2
+	sendInfo.Keyword3 = keyword3
+	sendInfo.Keyword4 = keyword4
+	sendInfo.Remark = remark
+	sendInfo.TemplateId = utils.WxMsgTemplateIdActivityApplyXzs
+	sendInfo.RedirectUrl = redirectUrl
+	sendInfo.RedirectTarget = 3
+	sendInfo.Resource = strconv.Itoa(activityId)
+	sendInfo.SendType = utils.TEMPLATE_MSG_CYGX_ACTIVITY_ADD
+	sendInfo.OpenIdArr = openIdArr
+	err = PublicSendTemplateMsg(sendInfo)
 
-	sendUrl := "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + accessToken
-	templateId := utils.WxMsgTemplateIdActivityApplyXzs
-	sendMap := make(map[string]interface{})
-	sendData := make(map[string]interface{})
-	sendMap["template_id"] = templateId
-	sendMap["miniprogram"] = map[string]interface{}{"appid": utils.WxAppId, "pagepath": utils.WX_MSG_PATH_ACTIVITY_SPECIAL_DETAIL + strconv.Itoa(activityId)}
-	sendData["first"] = map[string]interface{}{"value": first, "color": "#173177"}
-	sendData["keyword1"] = map[string]interface{}{"value": activityName, "color": "#173177"}
-	sendData["keyword2"] = map[string]interface{}{"value": activityTime, "color": "#173177"}
-	//sendData["activity_name"] = map[string]interface{}{"value": activityName, "color": "#173177"}
-	//sendData["reserve_results"] = map[string]interface{}{"value": reserveResults, "color": "#173177"}
-	//sendData["activity_time"] = map[string]interface{}{"value": activityTime, "color": "#173177"}
-	//sendData["activity_address"] = map[string]interface{}{"value": activityAddress, "color": "#173177"}
-	sendData["remark"] = map[string]interface{}{"value": remark, "color": "#173177"}
-	sendMap["data"] = sendData
-	WxSendTemplateMsg(sendUrl, sendMap, openIdList, strconv.Itoa(activityId), utils.TEMPLATE_MSG_CYGX_ACTIVITY_ADD)
 	return
 }
 
@@ -390,7 +411,7 @@ func SendActivityAskApplyTemplateMsg(applyName, applyTime, askContent, activityN
 }
 
 // 活动带问提醒
-func SendActivityAskApplyTemplateMsgV2(keyword1, keyword2, keyword3, keyword4, remark string, itemOpenid *models.OpenIdList, itemAct *models.ActivityDetail) (err error) {
+func SendActivityAskApplyTemplateMsgV2(keyword1, keyword2, keyword3, keyword4, remark string, itemOpenid *models.OpenIdList, itemAct *models.ActivityDetail, msgId int) (err error) {
 	var msg string
 	defer func() {
 		if err != nil {
@@ -402,59 +423,31 @@ func SendActivityAskApplyTemplateMsgV2(keyword1, keyword2, keyword3, keyword4, r
 		}
 	}()
 
-	var accessToken string
-	if utils.RunMode == "release" {
-		accessToken, err = models.GetWxAccessTokenByXzs()
-		if err != nil {
-			msg = "GetWxAccessToken Err:" + err.Error()
-			return
-		}
-		if accessToken == "" {
-			msg = "accessToken is empty"
-			return
-		}
-	} else {
-		accessToken, err = models.GetWxAccessToken()
-		if err != nil {
-			msg = "GetWxAccessToken Err:" + err.Error()
-			return
-		}
-		if accessToken == "" {
-			msg = "accessToken is empty"
-			return
-		}
-	}
 	activityId := itemAct.ActivityId
-	//fmt.Println("itemAct.Host", itemAct.Host)
-	//if itemAct.ChartPermissionId != utils.CHART_PERMISSION_ID_YANXUAN && itemAct.Host != "" {
-	//	keyword2 += ",会议主持人:" + itemAct.Host
-	//}
-	sendUrl := "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + accessToken
-	sendMap := make(map[string]interface{})
-	sendData := make(map[string]interface{})
+	var redirectUrl string
+	redirectUrl = utils.WX_MSG_PATH_ACTIVITY_DETAIL + strconv.Itoa(activityId)
+	openIdArr := make([]string, 0)
+	openIdArr = append(openIdArr, itemOpenid.OpenId)
+	sendInfo := new(SendWxTemplate)
+	sendInfo.Keyword1 = keyword1
+	sendInfo.Keyword2 = keyword2
+	sendInfo.Keyword3 = keyword3
+	sendInfo.Keyword4 = keyword4
+	sendInfo.Remark = remark
+	sendInfo.TemplateId = utils.WxMsgTemplateIdApplyXzs
+	sendInfo.RedirectUrl = redirectUrl
+	sendInfo.RedirectTarget = 3
+	sendInfo.Resource = strconv.Itoa(activityId)
 
-	first := "有新的客户提问"
-	//keyword1 := applyName
-	//keyword2 := "-"
-	//keyword3 := applyTime
-	//keyword4 := askContent
-	//remark := activityName
-	fontColor := "#D9001B"
-	sendData["first"] = map[string]interface{}{"value": first, "color": fontColor}
-	sendData["keyword1"] = map[string]interface{}{"value": keyword1, "color": fontColor}
-	sendData["keyword2"] = map[string]interface{}{"value": keyword2, "color": fontColor}
-	sendData["keyword3"] = map[string]interface{}{"value": keyword3, "color": fontColor}
-	sendData["keyword4"] = map[string]interface{}{"value": keyword4, "color": fontColor}
-	sendData["remark"] = map[string]interface{}{"value": remark, "color": fontColor}
-	if utils.RunMode == "release" {
-		sendMap["template_id"] = utils.WxMsgTemplateIdApplyXzs
+	//mapSource留言跳转类型,1:文章、2:活动、3:微路演视频、4:活动视频、5:活动音频
+	if utils.RunMode != "release" {
+		sendInfo.SendType = utils.TEMPLATE_MSG_CYGX_ACTIVITY_ADD
 	} else {
-		sendMap["template_id"] = utils.WxMsgTemplateIdApply
+		redirectUrl = utils.WX_MSG_PATH_TEMPLATE_MSG + "SourceId=" + strconv.Itoa(msgId) + "&SourceType=2"
 	}
-	sendMap["miniprogram"] = map[string]interface{}{"appid": utils.WxAppId, "pagepath": "activityPages/activityDetail/activityDetail?id=" + strconv.Itoa(activityId)}
-	sendMap["data"] = sendData
-	sendTemplateMsg(sendUrl, sendMap, itemOpenid, strconv.Itoa(activityId), utils.TEMPLATE_MSG_CYGX_ACTIVITY_ADD)
-	fmt.Println("send end")
+
+	sendInfo.OpenIdArr = openIdArr
+	err = PublicSendTemplateMsg(sendInfo)
 	return
 }
 
@@ -673,7 +666,7 @@ func SendActivityOnenIdWxTemplateMsg(first, keyWord1, keyWord2, keyWord3, keyWor
 
 // 发送用户留言提醒
 // func SendCommentWxTemplateMsg(title, companyName, userName, sellerName, createTime, content string, openIdList []*models.OpenIdList, articleId int) (err error) {
-func SendCommentWxTemplateMsg(req models.AddCygxArticleCommentReq, user *models.WxUserItem, articleInfo *models.ArticleDetail) (err error) {
+func SendCommentWxTemplateMsg(req models.AddCygxArticleCommentReq, user *models.WxUserItem, articleInfo *models.ArticleDetail, msgId int) (err error) {
 	var msg string
 	defer func() {
 		if err != nil {
@@ -701,11 +694,11 @@ func SendCommentWxTemplateMsg(req models.AddCygxArticleCommentReq, user *models.
 
 	first = "【" + articleInfo.Title + "】有新的留言,请及时处理"
 	keyword1 = user.CompanyName + "——" + user.RealName + "(" + companyItem.SellerName + ")"
-	keyword2 = "-"
+	keyword2 = "留言:" + articleInfo.Title
 	keyword3 = time.Now().Format(utils.FormatDateTime)
 	keyword4 = req.Content
 	remark = "点击查看报告详情"
-	if articleInfo.ArticleId >= utils.SummaryArticleId {
+	if articleInfo.ArticleTypeId > 0 {
 		//研选报告添加汪洋
 		mobile = companyItem.Mobile + "," + utils.WxMsgTemplateIdAskMsgMobilePublic + "," + utils.ActSendMsgMobile
 	} else {
@@ -720,7 +713,13 @@ func SendCommentWxTemplateMsg(req models.AddCygxArticleCommentReq, user *models.
 	for _, v := range openIdList {
 		openIdArr = append(openIdArr, v.OpenId)
 	}
-	redirectUrl = utils.WX_MSG_PATH_ARTICLE_DETAIL + strconv.Itoa(articleInfo.ArticleId)
+	//mapSource留言跳转类型,1:文章、2:活动、3:微路演视频、4:活动视频、5:活动音频
+	if utils.RunMode != "release" {
+		redirectUrl = utils.WX_MSG_PATH_ARTICLE_DETAIL + strconv.Itoa(articleInfo.ArticleId)
+	} else {
+		redirectUrl = utils.WX_MSG_PATH_TEMPLATE_MSG + "SourceId=" + strconv.Itoa(msgId) + "&SourceType=1"
+	}
+
 	sendInfo := new(SendWxTemplate)
 	sendInfo.First = first
 	sendInfo.Keyword1 = keyword1
@@ -738,40 +737,11 @@ func SendCommentWxTemplateMsg(req models.AddCygxArticleCommentReq, user *models.
 	if err != nil {
 		return
 	}
-
-	//accessToken, err := models.GetWxAccessTokenByXzs()
-	//if err != nil {
-	//	msg = "GetWxAccessToken Err:" + err.Error()
-	//	return
-	//}
-	//if accessToken == "" {
-	//	msg = "accessToken is empty"
-	//	return
-	//}
-	//var first string
-	//first = "【" + title + "】有新的留言,请及时处理"
-	//keyword1 := companyName + "--" + userName + "(" + sellerName + ")"
-	//keyword2 := "-"
-	//keyword3 := createTime
-	//keyword4 := content
-	//sendUrl := "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + accessToken
-	//templateId := utils.WxMsgTemplateIdAskMsgXzs
-	//sendMap := make(map[string]interface{})
-	//sendData := make(map[string]interface{})
-	//sendMap["template_id"] = templateId
-	//sendMap["miniprogram"] = map[string]interface{}{"appid": utils.WxAppId, "pagepath": utils.WX_MSG_PATH_ARTICLE_DETAIL + strconv.Itoa(articleId)}
-	//sendData["first"] = map[string]interface{}{"value": first, "color": "#173177"}
-	//sendData["keyword1"] = map[string]interface{}{"value": keyword1, "color": "#173177"}
-	//sendData["keyword2"] = map[string]interface{}{"value": keyword2, "color": "#173177"}
-	//sendData["keyword3"] = map[string]interface{}{"value": keyword3, "color": "#173177"}
-	//sendData["keyword4"] = map[string]interface{}{"value": keyword4, "color": "#173177"}
-	//sendMap["data"] = sendData
-	//WxSendTemplateMsg(sendUrl, sendMap, openIdList, strconv.Itoa(articleId), utils.TEMPLATE_MSG_CYGX_COMMENT)
 	return
 }
 
 // 微路演新增留言提问消息提醒
-func SendWxMsgWithMicroRoadshowAsk(req models.AddVideoCommnetReq, user *models.WxUserItem, resourceId int) (err error) {
+func SendWxMsgWithMicroRoadshowAsk(req models.AddVideoCommnetReq, user *models.WxUserItem, resourceId, msgId int, title string, isResearch bool) (err error) {
 	var msg string
 	defer func() {
 		if err != nil || msg != "" {
@@ -794,13 +764,18 @@ func SendWxMsgWithMicroRoadshowAsk(req models.AddVideoCommnetReq, user *models.W
 	var keyword3 string
 	var keyword4 string
 	var remark string
+	var mobile string
 	first = req.Title + "有新的留言,请及时处理"
 	keyword1 = user.CompanyName + "——" + user.RealName + "(" + companyItem.SellerName + ")"
 	keyword3 = time.Now().Format(utils.FormatDateTime)
-	keyword2 = ""
+	keyword2 = "留言:" + title
 	keyword4 = req.Content
-
-	mobile := companyItem.Mobile + "," + utils.WxMsgTemplateIdAskMsgMobilePublic
+	if isResearch {
+		//研选报告添加汪洋
+		mobile = companyItem.Mobile + "," + utils.WxMsgTemplateIdAskMsgMobilePublic + "," + utils.ActSendMsgMobile
+	} else {
+		mobile = companyItem.Mobile + "," + utils.WxMsgTemplateIdAskMsgMobilePublic
+	}
 	openIdList, e := models.GetWxOpenIdByMobileList(mobile)
 	if e != nil {
 		err = errors.New("GetWxOpenIdByMobileList, Err: " + e.Error())
@@ -810,15 +785,29 @@ func SendWxMsgWithMicroRoadshowAsk(req models.AddVideoCommnetReq, user *models.W
 	for _, v := range openIdList {
 		openIdArr = append(openIdArr, v.OpenId)
 	}
+	mapSource := make(map[int]string)
+	mapSource[1] = "5"
+	mapSource[2] = "4"
+	mapSource[3] = "3"
+
+	if mapSource[resourceId] == "" {
+		err = errors.New("留言消息类型错误, resourceId: " + strconv.Itoa(resourceId))
+		return
+	}
 
 	//SourceType int    `description:"视频来源: 1-音频; 2-活动视频; 3-微路演视频 (不传默认为1)"`
+	//mapSource留言跳转类型,1:文章、2:活动、3:微路演视频、4:活动视频、5:活动音频
 	redirectUrl := ""
-	if req.SourceType == 3 {
-		redirectUrl = utils.WX_MSG_PATH_ACTIVITY_INDUSTRYR_EPORT + strconv.Itoa(resourceId)
-		remark = "点击进入产业资源包详情页"
+	if utils.RunMode != "release" {
+		if req.SourceType == 3 {
+			redirectUrl = utils.WX_MSG_PATH_ACTIVITY_INDUSTRYR_EPORT + strconv.Itoa(resourceId)
+			remark = "点击进入产业资源包详情页"
+		} else {
+			redirectUrl = utils.WX_MSG_PATH_ACTIVITY_DETAIL + strconv.Itoa(resourceId)
+			remark = "点击查看活动详情"
+		}
 	} else {
-		redirectUrl = utils.WX_MSG_PATH_ACTIVITY_DETAIL + strconv.Itoa(resourceId)
-		remark = "点击查看活动详情"
+		redirectUrl = utils.WX_MSG_PATH_TEMPLATE_MSG + "SourceId=" + strconv.Itoa(msgId) + "&SourceType=" + mapSource[resourceId]
 	}
 	sendInfo := new(SendWxTemplate)
 	sendInfo.First = first
@@ -827,7 +816,7 @@ func SendWxMsgWithMicroRoadshowAsk(req models.AddVideoCommnetReq, user *models.W
 	sendInfo.Keyword3 = keyword3
 	sendInfo.Keyword4 = keyword4
 	sendInfo.Remark = remark
-	sendInfo.TemplateId = utils.WxMsgTemplateIdAskMsgXzs
+	sendInfo.TemplateId = utils.WxMsgTemplateIdApplyXzs
 	sendInfo.RedirectUrl = redirectUrl
 	sendInfo.RedirectTarget = 3
 	sendInfo.Resource = strconv.Itoa(req.Id)

+ 35 - 32
utils/config.go

@@ -27,22 +27,23 @@ var (
 	WxPublicIdXzs     string //查研观向小助手公众号
 	WxPublicSecretXzs string //查研观向小助手公众号
 
-	WxMsgTemplateIdApply                string //申请待处理
-	WxMsgTemplateIdApplyXzs             string //申请待处理(小助手)
-	WxMsgTemplateIdApplyCancel          string //预约取消提醒
-	WxMsgTemplateIdApplyCancelXzs       string //预约取消提醒(小助手)
-	WxMsgTemplateIdPermissionApply      string //预约取消提醒
-	WxMsgTemplateIdActivityApply        string //活动预约消息提醒
-	WxMsgTemplateIdActivityApplyXzs     string //活动预约消息提醒(小助手)
-	WxMsgTemplateIdActivityChange       string //活动预约变更提醒
-	WxMsgTemplateIdAskMsg               string //手机号用户【XXX】发送模板消息模板ID
-	WxMsgTemplateIdAskMsgXzs            string //手机号用户【XXX】发送模板消息模板ID(小助手)
-	WxMsgTemplateIdAskMsgMobile         string //手机号用户【XXX】发送模板消息
-	WxMsgTemplateIdAskMsgMobileAll      string //手机号用户【XXX】发送模板消rm --
-	WxMsgTemplateIdAskMsgMobilePublic   string //手机号用户【XXX】发送模板消rm --
-	TemplateIdByProductXzs              string //产品运行报告通知-模板ID(小助手)
-	WxMsgTemplateIdArticleUserRemind    string //用户阅读报告通知-模板ID
-	WxMsgTemplateIdArticleUserRemindXzs string //用户阅读报告通知-模板ID(小助手)
+	WxMsgTemplateIdApply                  string //申请待处理
+	WxMsgTemplateIdApplyXzs               string //申请待处理(小助手)
+	WxMsgTemplateIdApplyCancel            string //预约取消提醒
+	WxMsgTemplateIdApplyCancelXzs         string //预约取消提醒(小助手)
+	WxMsgTemplateIdPermissionApply        string //预约取消提醒
+	WxMsgTemplateIdActivityApply          string //活动预约消息提醒
+	WxMsgTemplateIdActivityApplyXzs       string //活动预约消息提醒(小助手)
+	WxMsgTemplateIdActivityChange         string //活动预约变更提醒
+	WxMsgTemplateIdAskMsg                 string //手机号用户【XXX】发送模板消息模板ID
+	WxMsgTemplateIdAskMsgXzs              string //手机号用户【XXX】发送模板消息模板ID(小助手)
+	WxMsgTemplateIdAskMsgMobile           string //手机号用户【XXX】发送模板消息
+	WxMsgTemplateIdAskMsgMobileAll        string //手机号用户【XXX】发送模板消rm --
+	WxMsgTemplateIdAskMsgMobilePublic     string //手机号用户【XXX】发送模板消rm --
+	TemplateIdByProductXzs                string //产品运行报告通知-模板ID(小助手)
+	WxMsgTemplateIdArticleUserRemind      string //用户阅读报告通知-模板ID
+	WxMsgTemplateIdArticleUserRemindXzs   string //用户阅读报告通知-模板ID(小助手)
+	WxMsgTemplateIdActivityChangeApplyXzs string //查研观向活动变更通知-模板ID(小助手)
 )
 
 // 微信公众号配置信息
@@ -72,7 +73,7 @@ var (
 	HtgjSalt                  string //海通加密使用的盐
 	HtgjName                  string //海通国际名称
 	HtgjPublicMobile          string //海通国际公共请求的手机号
-	ActSendMsgMobile          string //活动带问发送模板消息接收者的手机号 (汪洋手机号)
+	ActSendMsgMobile          string //研选活动带问发送模板消息接收者的手机号 (汪洋手机号)
 	StrategyPlatform          string //策略品台跳转链接地址
 	ArticleTaskClassMobile    string //策略平台报告自动归类消息通知对象
 	YiDongZhengTongYunUrl     string //易董 证通云请求域名
@@ -208,7 +209,7 @@ func init() {
 		EmaiWhiteUserList = "cxzhang@hzinsights.com"
 		WxMsgTemplateIdAskMsg = "qfNuops-sKrfIkbA7U97A7gSrX03mUpoEpJksRUdloo"
 		WxMsgTemplateIdAskMsgMobile = "15557270714,17634786714,18767183922,17516315016"
-		ActSendMsgMobile = "17634786714"
+		ActSendMsgMobile = "15557270714"
 		ArticleTaskClassMobile = "15557270714,18767183922,17706316791"
 
 		ShangHaiCrmApiLink = "http://106.15.192.100:8100/"
@@ -218,22 +219,24 @@ func init() {
 	//查研观向小助手
 	if RunMode != "release" {
 		//原有的模板ID
-		WxPublicIdXzs = "wx9b5d7291e581233a"                                            //查研观向小助手
-		WxPublicSecretXzs = "f4d52e34021eee262dce9682b31f8861"                          //查研观向小助手
-		WxMsgTemplateIdActivityApplyXzs = "U3su--7d6xsCDcP6Tya0N0wWpKn_uI0zO1cutRK52cc" //活动预约消息提醒(小助手)
-		WxMsgTemplateIdAskMsgXzs = "qfNuops-sKrfIkbA7U97A7gSrX03mUpoEpJksRUdloo"        //手机号用户【XXX】发送模板消息模板ID(小助手)
-		WxMsgTemplateIdApplyXzs = "qfNuops-sKrfIkbA7U97A7gSrX03mUpoEpJksRUdloo"         //申请待处理(小助手)
-		WxMsgTemplateIdApplyCancelXzs = "UU_d7ks0XZBnWg2xFzxL9Heilm4kisX39K7dr4SDdO8"   ////预约取消提醒(小助手)
-		TemplateIdByProductXzs = "-YjuPOB7Fqd-S3ilabYa6wvjDY9aXmeEfPN6DCiy-EY"          //产品运行报告通知-模板ID(小助手)
+		WxPublicIdXzs = "wx9b5d7291e581233a"                                                  //查研观向小助手
+		WxPublicSecretXzs = "f4d52e34021eee262dce9682b31f8861"                                //查研观向小助手
+		WxMsgTemplateIdActivityApplyXzs = "U3su--7d6xsCDcP6Tya0N0wWpKn_uI0zO1cutRK52cc"       //活动预约消息提醒(小助手)
+		WxMsgTemplateIdAskMsgXzs = "qfNuops-sKrfIkbA7U97A7gSrX03mUpoEpJksRUdloo"              //手机号用户【XXX】发送模板消息模板ID(小助手)
+		WxMsgTemplateIdApplyXzs = "qfNuops-sKrfIkbA7U97A7gSrX03mUpoEpJksRUdloo"               //申请待处理(小助手)
+		WxMsgTemplateIdApplyCancelXzs = "UU_d7ks0XZBnWg2xFzxL9Heilm4kisX39K7dr4SDdO8"         ////预约取消提醒(小助手)
+		TemplateIdByProductXzs = "-YjuPOB7Fqd-S3ilabYa6wvjDY9aXmeEfPN6DCiy-EY"                //产品运行报告通知-模板ID(小助手)
+		WxMsgTemplateIdActivityChangeApplyXzs = "CB7bOl7f3viMG4s1uhRo7WM0Jbx3WvodKuIZ8A_z8fM" //查研观向活动变更通知-模板ID(小助手)
 	} else {
 		//新的模板ID
-		WxPublicIdXzs = "wxb7cb8a15abad5b8e"                                            //查研观向小助手
-		WxPublicSecretXzs = "f425ba2863084249722af1e2a5cfffd3"                          //查研观向小助手
-		WxMsgTemplateIdActivityApplyXzs = "mItHdTF6swcunM4P36lOjnLknGbHaLqYdbOsRKscBq4" //活动预约消息提醒(小助手)
-		WxMsgTemplateIdAskMsgXzs = "IpS-yuNNQc8osCoy20jPHNkvBUyKRL1NGn7c0G9xmQA"        //手机号用户【XXX】发送模板消息模板ID(小助手)
-		WxMsgTemplateIdApplyXzs = "IpS-yuNNQc8osCoy20jPHNkvBUyKRL1NGn7c0G9xmQA"         //申请待处理(小助手)
-		WxMsgTemplateIdApplyCancelXzs = "gCSCAWNNhjkzE2V1cjbIV_Ex68R_8LM_u25qDlSKWyM"   ////预约取消提醒(小助手)
-		TemplateIdByProductXzs = "tNcCUiK_uUkuxaFF7M9NP2RwLkw8uHFjG-TDIxGUKxo"          //产品运行报告通知-模板ID(小助手)
+		WxPublicIdXzs = "wxb7cb8a15abad5b8e"                                                  //查研观向小助手
+		WxPublicSecretXzs = "f425ba2863084249722af1e2a5cfffd3"                                //查研观向小助手
+		WxMsgTemplateIdActivityApplyXzs = "mItHdTF6swcunM4P36lOjnLknGbHaLqYdbOsRKscBq4"       //活动预约消息提醒(小助手)
+		WxMsgTemplateIdAskMsgXzs = "IpS-yuNNQc8osCoy20jPHNkvBUyKRL1NGn7c0G9xmQA"              //手机号用户【XXX】发送模板消息模板ID(小助手)
+		WxMsgTemplateIdApplyXzs = "IpS-yuNNQc8osCoy20jPHNkvBUyKRL1NGn7c0G9xmQA"               //申请待处理(小助手)
+		WxMsgTemplateIdApplyCancelXzs = "gCSCAWNNhjkzE2V1cjbIV_Ex68R_8LM_u25qDlSKWyM"         ////预约取消提醒(小助手)
+		TemplateIdByProductXzs = "tNcCUiK_uUkuxaFF7M9NP2RwLkw8uHFjG-TDIxGUKxo"                //产品运行报告通知-模板ID(小助手)
+		WxMsgTemplateIdActivityChangeApplyXzs = "7qe3i4MrGxAIPhJeMgoqqw6j0A_foUB65DLSmxKe05s" //查研观向活动变更通知-模板ID(小助手)
 	}
 
 	//易董开放api配置

+ 11 - 0
utils/constants.go

@@ -192,3 +192,14 @@ const (
 const (
 	GAO_YI_ZI_CHAN_COMPANY_ID = 5285 // 高毅资产ID
 )
+
+// 模板消息地址路由2
+const (
+	WX_MSG_PATH_TEMPLATE_MSG = "/pages-message/templateMsg/templateMsg?" //留言带问模版消息地址详情
+)
+
+const (
+	TPL_MSG_WANG_YANG           = "tpl_msg_wang_yang"           //汪洋手机号地址参数
+	TPL_MSG_WANG_FANG_WANG_YANG = "tpl_msg_wang_fang_wang_yang" //权限模板消息接收人,王芳,汪洋
+	TPL_MSG                     = "tpl_msg"                     //王芳手机号地址参数
+)