zwxi hai 11 meses
pai
achega
cf507a65f0
Modificáronse 4 ficheiros con 152 adicións e 30 borrados
  1. 1 1
      controllers/article.go
  2. 3 0
      services/task.go
  3. 141 26
      services/wx_category_template_msg.go
  4. 7 3
      utils/constants.go

+ 1 - 1
controllers/article.go

@@ -914,7 +914,7 @@ func (this *ArticleController) AskAdd() {
 	}
 	companyName := user.CompanyName + "-" + user.RealName + "(" + companyItem.SellerName + ")"
 	go services.SendWxMsgWithAsk(companyName, time.Now().Format(utils.FormatDateTime), content, detail.Title, openIdList, req.ArticleId)
-	go services.SendWxCategoryMsgWithAsk(user.CompanyName, user.RealName, companyItem.SellerName, time.Now().Format(utils.FormatDateTimeMinute2), content, openIdList, req.ArticleId)
+	//go services.SendWxCategoryMsgWithAsk(user.CompanyName, user.RealName, companyItem.SellerName, time.Now().Format(utils.FormatDateTimeMinute2), content, openIdList, req.ArticleId)
 	br.Ret = 200
 	br.Success = true
 	br.Msg = "提交成功"

+ 3 - 0
services/task.go

@@ -2,9 +2,12 @@ package services
 
 import (
 	"fmt"
+	"github.com/beego/beego/v2/task"
 )
 
 func Task() {
+	sendEmailFileForAskMsgResearch := task.NewTask("sendEmailFileForAskMsgResearch", "0 */5 6-23 * * *", SendEmailFileForAskMsgResearch) //研选系列专家电话会,会前1小时将问题列表发送给邮箱
+	task.AddTask("sendEmailFileForAskMsgResearch", sendEmailFileForAskMsgResearch)
 	fmt.Println("start")
 	fmt.Println("end")
 }

+ 141 - 26
services/wx_category_template_msg.go

@@ -1,6 +1,7 @@
 package services
 
 import (
+	"context"
 	"encoding/json"
 	"errors"
 	"fmt"
@@ -18,7 +19,7 @@ type SendWxCategoryTemplate struct {
 	Keywords       []string `description:"模板消息keyword字段"`
 	TemplateId     string   `description:"模板id"`
 	RedirectUrl    string   `description:"跳转地址"`
-	RedirectTarget int      `description:"小程序跳转目标:1:弘则研报小程序,2:随手办公小程序,3:查研观向"`
+	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"`
@@ -96,7 +97,7 @@ func SendWxCategoryMsgWithActivityUserRemind(keyWord1, keyWord2, keyWord3, keyWo
 	sendInfo := new(SendWxCategoryTemplate)
 	sendInfo.Keywords = keywords
 	sendInfo.TemplateId = utils.WxMsgCategoryTemplateIdActivityPublishApply
-	sendInfo.RedirectTarget = 3
+	sendInfo.RedirectTarget = 4
 	sendInfo.SendType = utils.TEMPLATE_MSG_CYGX_APPLY
 	sendInfo.OpenIdArr = openIdArr
 	err = SendCategoryTemplateMsg(sendInfo)
@@ -105,6 +106,7 @@ func SendWxCategoryMsgWithActivityUserRemind(keyWord1, keyWord2, keyWord3, keyWo
 	return
 }
 
+// 试用申请模板消息
 func SendPermissionApplyCategoryTemplateMsg(realName, companyName, mobile, applyMethod string, itemOpenid *models.OpenIdList) (err error) {
 
 	defer func() {
@@ -145,7 +147,7 @@ func SendPermissionApplyCategoryTemplateMsg(realName, companyName, mobile, apply
 	sendInfo.Keywords = []string{keyword1, keyword2, keyword3, keyword4, keyword5}
 	sendInfo.TemplateId = utils.WxCategoryMsgTemplateIdApplyXzs
 	sendInfo.RedirectUrl = redirectUrl
-	sendInfo.RedirectTarget = 3
+	sendInfo.RedirectTarget = 4
 	sendInfo.Resource = mobile
 	sendInfo.SendType = utils.TEMPLATE_MSG_CYGX_APPLY
 	sendInfo.OpenIdArr = openIdArr
@@ -201,7 +203,7 @@ func SendNeiRongZuActivitieSignCategoryTemplateMsg(user *models.WxUserItem, acti
 	sendInfo := new(SendWxCategoryTemplate)
 	sendInfo.Keywords = keywords
 	sendInfo.TemplateId = utils.WxCategoryMsgTemplateIdApplyXzs
-	sendInfo.RedirectTarget = 3
+	sendInfo.RedirectTarget = 4
 	sendInfo.SendType = utils.TEMPLATE_MSG_CYGX_APPLY
 	sendInfo.OpenIdArr = openIdArr
 	err = SendCategoryTemplateMsg(sendInfo)
@@ -258,7 +260,7 @@ func SendActivitieCancelSignCategoryTemplateMsg(user *models.WxUserItem, activit
 	sendInfo.WxAppId = utils.WxAppId
 	sendInfo.Keywords = keywords
 	sendInfo.TemplateId = utils.WxCategoryMsgTemplateIdApplyXzs
-	sendInfo.RedirectTarget = 3
+	sendInfo.RedirectTarget = 4
 	sendInfo.SendType = utils.TEMPLATE_MSG_CYGX_APPLY
 	sendInfo.OpenIdArr = openIdArr
 	err = SendCategoryTemplateMsg(sendInfo)
@@ -315,17 +317,13 @@ func SendCommentWxCategoryTemplateMsg(req models.AddCygxArticleCommentReq, user
 	for _, v := range openIdList {
 		openIdArr = append(openIdArr, v.OpenId)
 	}
-	//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"
-	}
+
+	redirectUrl = utils.WX_MSG_PATH_YX_COMMENT_DETAIL + "SourceId=" + strconv.Itoa(msgId) + "&SourceType=1"
 
 	sendInfo := new(SendWxCategoryTemplate)
 	sendInfo.Keywords = keywords
 	sendInfo.TemplateId = utils.WxCategoryMsgTemplateIdApplyXzs
-	sendInfo.RedirectTarget = 3
+	sendInfo.RedirectTarget = 4
 	sendInfo.SendType = utils.TEMPLATE_MSG_CYGX_APPLY
 	sendInfo.OpenIdArr = openIdArr
 	sendInfo.RedirectUrl = redirectUrl
@@ -370,7 +368,7 @@ func SendWxCategoryMsgWithAsk(companyName, realName, sellerName, askTime, askMsg
 	sendInfo := new(SendWxCategoryTemplate)
 	sendInfo.Keywords = keywords
 	sendInfo.TemplateId = utils.WxCategoryMsgTemplateIdApplyXzs
-	sendInfo.RedirectTarget = 3
+	sendInfo.RedirectTarget = 4
 	sendInfo.SendType = utils.TEMPLATE_MSG_CYGX_ARTICLE_ADD
 	sendInfo.OpenIdArr = openIdArr
 	sendInfo.RedirectUrl = redirectUrl
@@ -418,17 +416,14 @@ func SendActivitieSignCategoryTemplateMsg(user *models.WxUserItem, activityDetai
 	for _, v := range openIdList {
 		openIdArr = append(openIdArr, v.OpenId)
 	}
-	if utils.RunMode != "release" {
-		redirectUrl = utils.WX_MSG_PATH_ACTIVITY_DETAIL + strconv.Itoa(activityDetail.ActivityId)
-	} else {
-		redirectUrl = utils.WX_MSG_PATH_ACTIVITY_SIGN + strconv.Itoa(activityDetail.ActivityId)
-	}
+
+	redirectUrl = utils.WX_MSG_PATH_YX_SIGNUP_DETAIL + strconv.Itoa(activityDetail.ActivityId)
 
 	keywords := []string{keyword1, keyword2, keyword3, keyword4, keyword5}
 	sendInfo := new(SendWxCategoryTemplate)
 	sendInfo.Keywords = keywords
 	sendInfo.TemplateId = utils.WxCategoryMsgTemplateIdActivitySign
-	sendInfo.RedirectTarget = 3
+	sendInfo.RedirectTarget = 4
 	sendInfo.SendType = utils.TEMPLATE_MSG_CYGX_ARTICLE_ADD
 	sendInfo.OpenIdArr = openIdArr
 	sendInfo.RedirectUrl = redirectUrl
@@ -490,7 +485,7 @@ func SendReviewCategoryTemplateMsgAdmin(specialId int) (err error) {
 	sendInfo := new(SendWxCategoryTemplate)
 	sendInfo.Keywords = keywords
 	sendInfo.TemplateId = utils.WxCategoryMsgTemplateIdApplyXzs
-	sendInfo.RedirectTarget = 3
+	sendInfo.RedirectTarget = 4
 	sendInfo.SendType = utils.TEMPLATE_MSG_CYGX_ARTICLE_ADD
 	sendInfo.OpenIdArr = openIdArr
 	sendInfo.RedirectUrl = redirectUrl
@@ -550,7 +545,7 @@ func SendWxCategoryMsgSpecialAuthor(specialId, status int) (err error) {
 	sendInfo := new(SendWxCategoryTemplate)
 	sendInfo.Keywords = keywords
 	sendInfo.TemplateId = utils.WxMsgCategoryTemplateIdCompanyApprovalMessageRai
-	sendInfo.RedirectTarget = 3
+	sendInfo.RedirectTarget = 4
 	sendInfo.SendType = utils.TEMPLATE_MSG_CYGX_ARTICLE_ADD
 	sendInfo.OpenIdArr = openIdArr
 	sendInfo.RedirectUrl = redirectUrl
@@ -630,7 +625,7 @@ func SendWxCategoryMsgSpecialFollow(specialId int) (err error) {
 	sendInfo := new(SendWxCategoryTemplate)
 	sendInfo.Keywords = keywords
 	sendInfo.TemplateId = utils.WxMsgCategoryTemplateIdCompanyApprovalMessageRai
-	sendInfo.RedirectTarget = 3
+	sendInfo.RedirectTarget = 4
 	sendInfo.SendType = utils.TEMPLATE_MSG_CYGX_ARTICLE_ADD
 	sendInfo.OpenIdArr = openIdArr
 	sendInfo.RedirectUrl = redirectUrl
@@ -705,7 +700,7 @@ func SendWxCategoryMsgInteractive(user *models.WxUserItem, interactive string, a
 		sendInfo := new(SendWxCategoryTemplate)
 		sendInfo.Keywords = keywords
 		sendInfo.TemplateId = utils.WxMsgCategoryTemplateIdActivityPublishApply
-		sendInfo.RedirectTarget = 3
+		sendInfo.RedirectTarget = 4
 		sendInfo.SendType = utils.TEMPLATE_MSG_CYGX_ARTICLE_ADD
 		sendInfo.OpenIdArr = openIdArr
 		sendInfo.RedirectUrl = redirectUrl
@@ -752,8 +747,8 @@ func SearchKeywordUserRmindCategoryMsg(user *models.WxUserItem, keyWord string)
 		if len(openIdList) == 0 {
 			return
 		}
-		keyword1 = user.RealName+ "-"+ user.CompanyName
-		keyword2 = fmt.Sprint("互动提醒:搜索" )
+		keyword1 = user.RealName + "-" + user.CompanyName
+		keyword2 = fmt.Sprint("互动提醒:搜索")
 		keyword3 = keyWord
 		keyword4 = time.Now().Format(utils.FormatDateTimeMinute2)
 		openIdArr := make([]string, 0)
@@ -766,7 +761,7 @@ func SearchKeywordUserRmindCategoryMsg(user *models.WxUserItem, keyWord string)
 		sendInfo := new(SendWxCategoryTemplate)
 		sendInfo.Keywords = keywords
 		sendInfo.TemplateId = utils.WxMsgCategoryTemplateIdCompanyApprovalMessageRai
-		sendInfo.RedirectTarget = 3
+		sendInfo.RedirectTarget = 4
 		sendInfo.SendType = utils.TEMPLATE_MSG_CYGX_ARTICLE_ADD
 		sendInfo.OpenIdArr = openIdArr
 		sendInfo.RedirectUrl = redirectUrl
@@ -777,3 +772,123 @@ func SearchKeywordUserRmindCategoryMsg(user *models.WxUserItem, keyWord string)
 	}
 	return
 }
+
+// 帮我带问的问题,会前1小时发送
+func SendEmailFileForAskMsgResearch(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 {
+				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
+}

+ 7 - 3
utils/constants.go

@@ -186,9 +186,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=1000413&type=文章" //研选报告留言详情
+	WX_MSG_PATH_YX_ACTIVITY_DETAIL        = "pages-activity/activityDetail/activityDetail?id=" //研选报告留言详情
+	WX_MSG_PATH_YX_SIGNUP_DETAIL        = "pages-message/activityTemplate/activityTemplate?id=" //研选报名详情
 )
 
 //2:文章详情  https://web.hzinsights.com/material/info/8436  小程序路径:/pageMy/reportDetail/reportDetail?id=