zwxi 9 months ago
parent
commit
1ec38d16e2
5 changed files with 409 additions and 5 deletions
  1. 25 0
      models/activity.go
  2. 9 0
      services/task.go
  3. 341 0
      services/wx_category_template_msg.go
  4. 26 1
      utils/config.go
  5. 8 4
      utils/constants.go

+ 25 - 0
models/activity.go

@@ -1302,3 +1302,28 @@ func UpdateActivityVmpRobotMeetingId(vmpRobotMeetingId, activityId int) (err err
 	_, err = o.Raw(sql, vmpRobotMeetingId, activityId).Exec()
 	return
 }
+
+func GetYxActivitySendMsgListAll(endDate string) (items []*WxMsgCygxActivityList, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT
+	s.id,
+	s.user_id,
+	s.fail_type,
+	cr.open_id,
+	a.*
+FROM
+	cygx_activity AS a
+	INNER JOIN cygx_activity_signup AS s ON s.activity_id = a.activity_id
+	INNER JOIN cygx_user_record AS cr ON cr.cygx_bind_account = s.mobile 
+WHERE
+	1 = 1 
+	AND s.is_send_wx_msg = 0 
+	AND s.do_fail_type = 0 
+	AND a.publish_status = 1
+	AND a.chart_permission_id = 31
+	AND a.activity_time <= ? AND a.activity_time >= NOW() 
+	AND s.is_cancel = 0
+	GROUP BY s.id`
+	_, err = o.Raw(sql, endDate).QueryRows(&items)
+	return
+}

+ 9 - 0
services/task.go

@@ -133,6 +133,15 @@ func Task() {
 
 		updateYanxuanSpecialAuthoMomentsImg := task.NewTask("updateYanxuanSpecialAuthoMomentsImg", "0 0 1 * * *", UpdateYanxuanSpecialAuthoMomentsImg)
 		task.AddTask(" 更新研选专栏作者朋友圈封面图片,并删除老的图片", updateYanxuanSpecialAuthoMomentsImg) // 更新研选专栏作者朋友圈封面图片,并删除老的图片
+
+		sendMfyxEmailFileForAskMsgResearch := task.NewTask("sendMfyxEmailFileForAskMsgResearch", "0 */5 6-23 * * *", SendMfyxEmailFileForAskMsgResearch) //研选系列专家电话会,会前1小时将问题列表发送给邮箱
+		task.AddTask("sendMfyxEmailFileForAskMsgResearch", sendMfyxEmailFileForAskMsgResearch)
+
+		sendMfyxActivityBeginMsgMeeting := task.NewTask("sendMfyxActivityBeginMsgMeeting", "0 */5 6-23 * * *", SendMfyxActivityBeginMsgMeeting) //会议前15分钟的提醒
+		task.AddTask("sendMfyxActivityBeginMsgMeeting", sendMfyxActivityBeginMsgMeeting)
+
+		sendMfyxActivityBeginMsg := task.NewTask("sendMfyxActivityBeginMsg", "0 */5 6-23 * * *", SendMfyxActivityBeginMsg) //会议前60分钟的提醒
+		task.AddTask("sendMfyxActivityBeginMsg", sendMfyxActivityBeginMsg)
 	}
 
 	//if utils.RunMode != "release" {

+ 341 - 0
services/wx_category_template_msg.go

@@ -0,0 +1,341 @@
+package services
+
+import (
+	"context"
+	"encoding/json"
+	"errors"
+	"fmt"
+	"hongze/hongze_cygx/models"
+	"hongze/hongze_cygx/utils"
+	"io/ioutil"
+	"net/http"
+	"strconv"
+	"strings"
+	"time"
+)
+
+type SendWxCategoryTemplate struct {
+	WxAppId        string   `description:"公众号appId"`
+	Keywords       []string `description:"模板消息keyword字段"`
+	TemplateId     string   `description:"模板id"`
+	RedirectUrl    string   `description:"跳转地址"`
+	RedirectTarget int      `description:"小程序跳转目标:1:弘则研报小程序,2:随手办公小程序,3:查研观向,4:买方研选"`
+	Resource       string   `description:"资源唯一标识"`
+	SendType       int      `description:"发送的消息类型:1:报告,2:指标更新提醒,3:审批通知,4:销售领取客户通知,5:活动取消通知,6活动更改时间通知,7:关注的作者发布报告通知,8:发送日报(周报、双周报、月报)模板消息,9:活动预约/报名时间通知"`
+	OpenIdArr      []string `description:"消息接收者openid"`
+}
+
+// 推送类目模板消息
+func SendCategoryTemplateMsg(sendInfo *SendWxCategoryTemplate) (err error) {
+	postData, err := json.Marshal(sendInfo)
+	if err != nil {
+		go utils.SendAlarmMsg("SendCategoryTemplateMsg json.Marshal Err:"+err.Error(), 1)
+		return err
+	}
+	body := ioutil.NopCloser(strings.NewReader(string(postData)))
+	client := &http.Client{}
+	req, err := http.NewRequest("POST", utils.SendWxCategoryTemplateMsgUrl, body)
+	if err != nil {
+		go utils.SendAlarmMsg("SendCategoryTemplateMsg http.NewRequest Err:"+err.Error(), 1)
+		return err
+	}
+	contentType := "application/json;charset=utf-8"
+	req.Header.Set("Content-Type", contentType)
+	req.Header.Set("Authorization", utils.SendTemplateMsgAuthorization)
+	resp, err := client.Do(req)
+	if err != nil {
+		fmt.Println("http client.Do Err:" + err.Error())
+		return err
+	}
+	defer resp.Body.Close()
+	b, err := ioutil.ReadAll(resp.Body)
+	if err != nil {
+		return err
+	}
+	result := new(models.BaseResponse)
+	err = json.Unmarshal(b, &result)
+	if err != nil {
+		return err
+	}
+	if result.Ret != 200 {
+		err = errors.New(string(b))
+		return err
+	}
+	return
+}
+
+
+// 帮我带问的问题,会前1小时发送
+func SendMfyxEmailFileForAskMsgResearch(cont context.Context) (err error) {
+	var msg string
+	//var touser string
+	defer func() {
+		if err != nil {
+			go utils.SendAlarmMsg("发送附件模版消息失败", 2)
+			go utils.SendEmail("发送附件模版消息失败"+"【"+utils.APPNAME+"】"+time.Now().Format(utils.FormatDateTime), msg+";Err:"+err.Error(), utils.EmailSendToUsers)
+		}
+		if msg != "" {
+			go utils.SendAlarmMsg(msg, 2)
+			utils.FileLog.Info("发送模版消息失败,msg:%s", msg)
+		}
+	}()
+	endDate := time.Now().Add(+time.Minute * 60).Format(utils.FormatDateTime)
+	condition := `AND  a.activity_type_id = 1 AND a.chart_permission_id = 31 `
+	total, err := models.GetCountActivityResearchToSendFile(condition, endDate)
+	if total == 0 {
+		fmt.Println("发送附件完成0")
+		return nil
+	}
+	if err != nil {
+		msg = "发送附件模版消息失败 Err:" + err.Error()
+		return
+	}
+	listActivity, err := models.GetActivityResearchToSendFile(condition, endDate)
+	if err != nil {
+		msg = "发送附件模版消息失败 Err:" + err.Error()
+		return
+	}
+	for _, v := range listActivity {
+		activityInfo, _ := models.GetAddActivityInfoById(v.ActivityId)
+		if activityInfo == nil {
+			msg = "活动不存在,Err:activityId:" + strconv.Itoa(v.ActivityId)
+			return
+		}
+		list, errFile := models.GetActivityMsgExport(v.ActivityId)
+		if errFile != nil {
+			msg = "获取失败,Err:" + errFile.Error()
+			return
+		}
+
+		for _, v2 := range list {
+			user, e := models.GetWxUserItemByUserId(v2.UserId)
+			if e != nil && e.Error() != utils.ErrNoRow() {
+				err = errors.New("GetWxUserItemByUserId, Err: " + e.Error())
+				return err
+			}
+			//获取销售信息
+			sellerItem, e := models.GetSellerByCompanyIdCheckFicc(v2.CompanyId, 2)
+			if e != nil && e.Error() != utils.ErrNoRow() {
+				err = errors.New("GetSellerByCompanyIdCheckFicc, Err: " + e.Error())
+				return
+			}
+
+			//给所属销售推送消息
+			if sellerItem != nil && user != nil {
+				openIpItem, _ := models.GetUserRecordByMobile(4, sellerItem.Mobile)
+				openIdList := make([]*models.OpenIdList,0)
+				openIdList = append(openIdList, openIpItem)
+				SendWxCategoryMsgWithActivityAsk(user.CompanyName, user.RealName, sellerItem.RealName, time.Now().Format(utils.FormatDateTimeMinute2), v2.Content, openIdList, v2.AskId)
+			}
+		}
+		errFile = models.UPdateActivityMsgToSendFile(v.ActivityId)
+		if errFile != nil {
+			msg = "获取失败,Err:" + errFile.Error()
+			return
+		}
+	}
+	return
+}
+
+// 发送报告提问消息提醒
+func SendWxCategoryMsgWithActivityAsk(companyName, realName, sellerName, askTime, askMsg string, openIdList []*models.OpenIdList, msgId int) (err error) {
+	if len(openIdList) == 0 {
+		return
+	}
+	var msg string
+	defer func() {
+		if err != nil {
+			go utils.SendEmail("发送类目模版消息失败"+"【"+utils.APPNAME+"】"+time.Now().Format("2006-01-02 15:04:05"), msg+";Err:"+err.Error(), utils.EmailSendToUsers)
+			go utils.SendAlarmMsg(fmt.Sprint("发送报告提问消息提醒类目模版消息失败,用户名", realName, "留言ID:", msgId), 2)
+			utils.FileLog.Info("发送类目模版消息失败,Err:%s", err.Error())
+		}
+		fmt.Println("line 21", err, msg)
+	}()
+	var keyword1 string
+	var keyword2 string
+	var keyword3 string
+	var keyword4 string
+	var keyword5 string
+
+	keyword1 = realName
+	keyword2 = companyName
+	keyword3 = sellerName
+	keyword4 = askTime
+	keyword5 = utils.TruncateActivityNameString("活动提问:" + askMsg)
+
+	keywords := []string{keyword1, keyword2, keyword3, keyword4, keyword5}
+
+	openIdArr := make([]string, 0)
+	for _, v := range openIdList {
+		openIdArr = append(openIdArr, v.OpenId)
+	}
+	redirectUrl := utils.WX_MSG_PATH_YX_ACTIVITY_DETAIL + strconv.Itoa(msgId)
+
+	sendInfo := new(SendWxCategoryTemplate)
+	sendInfo.Keywords = keywords
+	sendInfo.TemplateId = utils.WxCategoryMsgTemplateIdApplyXzs
+	sendInfo.RedirectTarget = 4
+	sendInfo.SendType = utils.TEMPLATE_MSG_CYGX_ARTICLE_ADD
+	sendInfo.OpenIdArr = openIdArr
+	sendInfo.RedirectUrl = redirectUrl
+	err = SendCategoryTemplateMsg(sendInfo)
+	if err != nil {
+		return
+	}
+	return
+}
+
+// 推送会议开始消息提醒60分钟前
+func SendMfyxActivityBeginMsg(cont context.Context) (err error) {
+	//func SendActivityBeginMsg() (err error) {
+	defer func() {
+		if err != nil {
+			go utils.SendAlarmMsg("60分钟会议消息提醒失败"+err.Error(), 2)
+			fmt.Println("发送失败,Err:", err.Error())
+		}
+	}()
+	endDate := time.Now().Add(+time.Minute * 60).Format(utils.FormatDateTime)
+	listActivity, err := models.GetYxActivitySendMsgListAll(endDate)
+	fmt.Println(len(listActivity))
+	if err != nil {
+		fmt.Println("GetActivitySendMsgListAll Err:", err.Error())
+		return
+	}
+	if len(listActivity) == 0 {
+		return
+	}
+	//var remark = "点击查看活动详情"
+	var signupIds string
+	for _, v := range listActivity {
+		signupIds += strconv.Itoa(v.Id) + ","
+		//var reserveResults string
+		//var first string
+		openIdItem := new(models.OpenIdList)
+		openIdItem.OpenId = v.OpenId
+		openIdItem.UserId = v.UserId
+		openIdList := make([]*models.OpenIdList, 0)
+		openIdList = append(openIdList, openIdItem)
+
+		openIdArr := make([]string, 0)
+		for _, v := range openIdList {
+			openIdArr = append(openIdArr, v.OpenId)
+		}
+		keywords := []string{v.ActivityName, v.ActivityTime}
+
+		sendInfo := new(SendWxCategoryTemplate)
+		sendInfo.Keywords = keywords
+		sendInfo.TemplateId = utils.WxMsgCategoryTemplateIdArticleUserRemind
+		sendInfo.RedirectTarget = 4
+		sendInfo.SendType = utils.TEMPLATE_MSG_CYGX_ARTICLE_ADD
+		sendInfo.OpenIdArr = openIdArr
+		sendInfo.RedirectUrl = utils.WX_MSG_PATH_YX_ACTIVITY_DETAIL + strconv.Itoa(v.ActivityId)
+		err = SendCategoryTemplateMsg(sendInfo)
+		if err != nil {
+			return
+		}
+	}
+	if len(signupIds) == 0 {
+		return
+	}
+	signupIds = strings.TrimRight(signupIds, ",")
+	err = models.UPdateSendedMsgStatus(signupIds)
+	if err != nil {
+		var msg string
+		go utils.SendEmail("发送模版消息失败"+"【"+utils.APPNAME+"】"+time.Now().Format(utils.FormatDateTime), msg+";Err:"+err.Error(), utils.EmailSendToUsers)
+		utils.FileLog.Info("发送模版消息失败,Err:%s", err.Error())
+	}
+	return
+}
+
+
+// 推送会议开始消息提醒15分钟前
+func SendMfyxActivityBeginMsgMeeting(cont context.Context) (err error) {
+	//func SendActivityBeginMsgMeeting() (err error) {
+	defer func() {
+		if err != nil {
+			go utils.SendAlarmMsg("15分钟会议消息提醒失败", 2)
+			fmt.Println("发送失败,Err:", err.Error())
+		}
+	}()
+	var condition string
+	var pars []interface{}
+	endDate := time.Now().Add(+time.Minute * 15).Format(utils.FormatDateTime)
+	condition = ` AND activity_time <= ? AND activity_time >= NOW()  AND  publish_status = 1 `
+	pars = append(pars, endDate)
+	listActivity, e := models.GetCygxActivityList(condition, pars, 0, 100000)
+	if e != nil && e.Error() != utils.ErrNoRow() {
+		err = errors.New("GetCygxActivityList, Err: " + e.Error())
+		return
+	}
+	if len(listActivity) == 0 {
+		return
+	}
+	//var signupIds string
+	//var remark = "点击查看活动详情"
+
+	var activityIds []int
+	//同一时间举办的活动不多所以这里循环查询
+	for _, v := range listActivity {
+		activityIds = append(activityIds, v.ActivityId)
+		var mobiles []string
+		pars = make([]interface{}, 0)
+		condition = ` AND activity_id = ?  AND is_send_wx_msg = 0 `
+		pars = append(pars, v.ActivityId)
+		//获取设置消息提醒的用户列表
+		listxReminder, e := models.GetCygxReminderListByUser(condition, pars)
+		if e != nil {
+			err = errors.New("GetCygxReminderListByUser, Err: " + e.Error())
+			return
+		}
+		for _, vReminder := range listxReminder {
+			mobiles = append(mobiles, vReminder.Mobile)
+		}
+
+		pars = make([]interface{}, 0)
+		condition = ` AND do_fail_type = 0 AND activity_id  = ? AND signup_type = 1  AND is_send_wx_msg = 0 `
+		pars = append(pars, v.ActivityId)
+		//获取设置预约外呼的用户列表
+		listSignup, e := models.GetActivitySignupList(condition, pars)
+		if e != nil && e.Error() != utils.ErrNoRow() {
+			err = errors.New("GetActivitySignupList, Err: " + e.Error())
+			return
+		}
+		for _, vSignup := range listSignup {
+			mobiles = append(mobiles, vSignup.Mobile)
+		}
+		//获取这些手机号对应的Openid
+		listOpenid, e := models.GetUserRecordListByMobileArr(mobiles)
+		if e != nil && e.Error() != utils.ErrNoRow() {
+			err = errors.New("GetUserRecordListByMobileArr, Err: " + e.Error())
+			return
+		}
+		openIdList := make([]*models.OpenIdList, 0)
+		for _, vOpenid := range listOpenid {
+			openIdItem := new(models.OpenIdList)
+			openIdItem.OpenId = vOpenid.OpenId
+			openIdItem.UserId = vOpenid.UserId
+			openIdList = append(openIdList, openIdItem)
+		}
+		openIdArr := make([]string, 0)
+		for _, v := range openIdList {
+			openIdArr = append(openIdArr, v.OpenId)
+		}
+		keywords := []string{v.ActivityName, v.ActivityTime}
+
+		sendInfo := new(SendWxCategoryTemplate)
+		sendInfo.Keywords = keywords
+		sendInfo.TemplateId = utils.WxMsgCategoryTemplateIdArticleUserRemind
+		sendInfo.RedirectTarget = 4
+		sendInfo.SendType = utils.TEMPLATE_MSG_CYGX_ARTICLE_ADD
+		sendInfo.OpenIdArr = openIdArr
+		//sendInfo.RedirectUrl = redirectUrl
+		err = SendCategoryTemplateMsg(sendInfo)
+		if err != nil {
+			return
+		}
+	}
+	err = models.UpdateSendedMsgMeetingSendWxMsg(activityIds)
+	return
+}
+
+

+ 26 - 1
utils/config.go

@@ -46,6 +46,13 @@ var (
 	WxMsgTemplateIdArticleUserRemindXzs   string //用户阅读报告通知-模板ID(小助手)
 	WxMsgTemplateIdActivityChangeApplyXzs string //查研观向活动即将开始时会前60/15分钟的通知-模板ID(小助手)
 	WxMsgTemplateIdActivitySign           string //查研观向活动签到通知-模板ID(小助手)
+
+	// 类目模板
+	WxCategoryMsgTemplateIdApplyXzs                  string //申请待处理(买方研选)
+	WxCategoryMsgTemplateIdActivitySign              string //买方研选活动签到通知-类目模板ID(买方研选)
+	WxMsgCategoryTemplateIdCompanyApprovalMessageRai string //权益销售签约成功通知买方研选类目模版消息通知-类目模板ID
+	WxMsgCategoryTemplateIdActivityPublishApply      string //买方研选关注的产业下,单个活动/研选报告发布通知-类目模板ID
+	WxMsgCategoryTemplateIdArticleUserRemind         string //用户阅读报告通知-类目模板ID
 )
 
 // 微信公众号配置信息
@@ -89,7 +96,8 @@ var (
 
 // 模板消息推送
 var (
-	SendWxTemplateMsgUrl string
+	SendWxTemplateMsgUrl         string
+	SendWxCategoryTemplateMsgUrl string
 )
 
 func init() {
@@ -185,6 +193,7 @@ func init() {
 
 		ShangHaiCrmApiLink = "https://crm.hzinsights.com/"
 		SendWxTemplateMsgUrl = "http://127.0.0.1:8086/v1/wechat/send_template_msg"
+		SendWxCategoryTemplateMsgUrl = "http://127.0.0.1:8086/v1/wechat/send_category_template_msg"
 	} else {
 		WxAppId = "wxcc32b61f96720d2f"
 		WxAppSecret = "06894933fafb24dafead7eaae09c08e0"
@@ -220,6 +229,8 @@ func init() {
 
 		ShangHaiCrmApiLink = "http://106.15.192.100:8100/"
 		SendWxTemplateMsgUrl = "http://127.0.0.1:8086/v1/wechat/send_template_msg"
+		//SendWxCategoryTemplateMsgUrl = "http://127.0.0.1:8086/v1/wechat/send_category_template_msg"
+		SendWxCategoryTemplateMsgUrl = "http://8.136.199.33:8086/v1/wechat/send_category_template_msg"
 	}
 
 	//查研观向小助手
@@ -234,6 +245,13 @@ func init() {
 		TemplateIdByProductXzs = "-YjuPOB7Fqd-S3ilabYa6wvjDY9aXmeEfPN6DCiy-EY"                //产品运行报告通知-模板ID(小助手)
 		WxMsgTemplateIdActivityChangeApplyXzs = "4fwzgJ-2xUiyQqNkFCPd8vsGpOnNWWE2inZO4BXjfio" //查研观向活动变更通知-模板ID(小助手)
 		WxMsgTemplateIdActivitySign = "3l5cxpqH6c9kkLe9ow7qzqd0uYEOdY3A_PB8wRWkiHk"           //查研观向活动签到通知-模板ID(小助手)
+
+		// 类目模版
+		WxCategoryMsgTemplateIdApplyXzs = "IemWOTzbnLBqJ2ozSiFqm13WjaotoC3V4uXaxTij08I"
+		WxCategoryMsgTemplateIdActivitySign = "aczgUYZASO97UJiCD_nDmD1eNWZAWudzw3JYcvjJ2x4"
+		WxMsgCategoryTemplateIdCompanyApprovalMessageRai = "wU4x_c5XruwuA44VZelyklRNOfq4XrU9ILckTtDs6hg" //权益销售签约成功通知买方研选类目模版消息通知-类目模板ID
+		WxMsgCategoryTemplateIdActivityPublishApply = "wLeV7tVK4ZJBoAvsmfXkHveVW8yefGAkwnVKQWRi8uQ"
+		WxMsgCategoryTemplateIdArticleUserRemind = "4fwzgJ-2xUiyQqNkFCPd8vsGpOnNWWE2inZO4BXjfio"
 	} else {
 		//新的模板ID
 		WxPublicIdXzs = "wxb7cb8a15abad5b8e"                                                  //查研观向小助手
@@ -245,6 +263,13 @@ func init() {
 		TemplateIdByProductXzs = "tNcCUiK_uUkuxaFF7M9NP2RwLkw8uHFjG-TDIxGUKxo"                //产品运行报告通知-模板ID(小助手)
 		WxMsgTemplateIdActivityChangeApplyXzs = "Q03y1p7epHx8jnz-mHTwm8O5XEfd-XnrQB01Goldmqo" //查研观向活动变更通知-模板ID(小助手)
 		WxMsgTemplateIdActivitySign = "GIcOqewJql4rQ_dvhUna2knWIVogKulaqRxtZKnWZeo"           //查研观向活动签到通知-模板ID(小助手)
+
+		// 类目模版
+		WxCategoryMsgTemplateIdApplyXzs = "HKD03oZfSv8LJgeoHz0pynai3G2Ls4h8zZ6BfOpZmIA"
+		WxCategoryMsgTemplateIdActivitySign = "11rITVC5Gl8qwetxl92NqY887Uk14kg3nPtEA_i_zLo"
+		WxMsgCategoryTemplateIdCompanyApprovalMessageRai = "t1CcxcOkoZkWZrDRs6zYUlceBGYMV3mhkBYUa8a6Mx0" //权益销售签约成功通知买方研选类目模版消息通知-类目模板ID
+		WxMsgCategoryTemplateIdActivityPublishApply = "IBMqiE61lVgUfFM4rsH0XCH57R_G3PbWvRbnzg9JHPI"
+		WxMsgCategoryTemplateIdArticleUserRemind = "4fwzgJ-YQndzH5OJWLkd0grvftgqhvP285t_oXUboi7DaaIhMI"
 	}
 
 	//易董开放api配置

+ 8 - 4
utils/constants.go

@@ -9,6 +9,7 @@ const (
 	FormatTime             = "15:04:05"                //时间格式
 	FormatDate             = "2006-01-02"              //日期格式
 	FormatDateTime         = "2006-01-02 15:04:05"     //完整时间格式
+	FormatDateTimeMinute2  = "2006-01-02 15:04"        //时间格式 年-月-日 时:分
 	HlbFormatDateTime      = "2006-01-02_15:04:05.999" //完整时间格式
 	FormatDateTimeNoSecond = "2006-01-02 15:04"        //完整时间格式
 	FormatDateTimeUnSpace  = "20060102150405"          //完整时间格式
@@ -188,10 +189,13 @@ const (
 	WX_MSG_PATH_APPLY_DETAIL             = "pages-message/applyFor/applyFor?id="                          //潜在用户试用权限申请
 	WX_MSG_PATH_YX_SURVEY_DETAIL         = "pages-purchaser/survey/surveyDetail?surveyId="                //用户提交研选调研需求
 	WX_MSG_PATH_APPLY_COLLECTION_DETAIL  = "reportPages/bulletinDetail/bulletinDetail?id="                //精选看板申请详情页
-	WX_MSG_PATH_YX_SPECIAL_DETAIL        = "pages-purchaser/noteAndViewpoint/noteAndViewpoint?id="        //研选专栏详情
-	WX_MSG_PATH_YX_SPECIAL_ENABLE_DETAIL = "pages-purchaser/toExamine/toExamine?isMessage=模板&id="         //研选专栏审核详情页面
-	WX_MSG_PATH_YX_SPECIAL_CENTER        = "pages-purchaser/contentAllPage/contentAllPage?Status=4"       //研选专栏内容中心
-)
+	WX_MSG_PATH_YX_SPECIAL_DETAIL        = "pages-purchaser/noteAndViewpoint/noteAndViewpoint?id="  //研选专栏详情
+	WX_MSG_PATH_YX_SPECIAL_ENABLE_DETAIL = "pages-purchaser/toExamine/toExamine?isMessage=模板&id="   //研选专栏审核详情页面
+	WX_MSG_PATH_YX_SPECIAL_CENTER        = "pages-purchaser/contentAllPage/contentAllPage?Status=4" //研选专栏内容中心
+	WX_MSG_PATH_YX_COMMENT_DETAIL        = "pages-activity/generationAsk/generationAsk?id="         //研选报告留言详情
+	WX_MSG_PATH_YX_ACTIVITY_DETAIL       = "pages-activity/activityDetail/activityDetail?id="       //研选活动详情
+	WX_MSG_PATH_YX_SIGNUP_DETAIL         = "pages-message/activityTemplate/activityTemplate?id="    //研选报名详情
+	WX_MSG_PATH_YX_ARTICLE_DETAIL        = "pages-user/reportDetail/reportDetail?id="               //研选纪要详情
 
 //2:文章详情  https://web.hzinsights.com/material/info/8436  小程序路径:/pageMy/reportDetail/reportDetail?id=
 //3:活动详情  https://web.hzinsights.com/activity/detail/2701  小程序路径:/activityPages/activityDetail/activityDetail?id=