|
@@ -259,4 +259,560 @@ func SendReviewCategoryTemplateMsgAdmin(specialId int) (err error) {
|
|
|
return
|
|
|
}
|
|
|
return
|
|
|
-}
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+// 发送用户操作活动消息提醒
|
|
|
+func SendWxCategoryMsgWithActivityUserRemind(keyWord1, keyWord2, keyWord3, keyWord4 string, openIdList []*models.OpenIdList, activityId 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("发送用户操作活动消息提醒,文章ID:", activityId), 2)
|
|
|
+ utils.FileLog.Info("发送模版消息失败,Err:%s", err.Error())
|
|
|
+ }
|
|
|
+ }()
|
|
|
+ keyWord1 = utils.TruncateActivityNameString(keyWord1)
|
|
|
+ accessToken, err := models.GetWxAccessTokenByXzs()
|
|
|
+ if err != nil {
|
|
|
+ msg = "GetWxAccessToken Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if accessToken == "" {
|
|
|
+ msg = "accessToken is empty"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ openIdArr := make([]string, 0)
|
|
|
+ for _, v := range openIdList {
|
|
|
+ openIdArr = append(openIdArr, v.OpenId)
|
|
|
+ }
|
|
|
+ var keywords []string
|
|
|
+ keywords = append(keywords, keyWord1, keyWord2, keyWord3, keyWord4)
|
|
|
+
|
|
|
+ sendInfo := new(SendWxCategoryTemplate)
|
|
|
+ sendInfo.Keywords = keywords
|
|
|
+ sendInfo.TemplateId = utils.WxMsgCategoryTemplateIdActivityPublishApply
|
|
|
+ sendInfo.RedirectTarget = 4
|
|
|
+ sendInfo.SendType = utils.TEMPLATE_MSG_CYGX_APPLY
|
|
|
+ sendInfo.OpenIdArr = openIdArr
|
|
|
+ err = SendCategoryTemplateMsg(sendInfo)
|
|
|
+
|
|
|
+ //sendMap["miniprogram"] = map[string]interface{}{"appid": utils.WxAppId, "pagepath": "activityPages/activityDetail/activityDetail?id=" + strconv.Itoa(activityId)}
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+// 试用申请模板消息
|
|
|
+func SendPermissionApplyCategoryTemplateMsg(realName, companyName, mobile, applyMethod string, itemOpenid *models.OpenIdList, redirectUrl string) (err error) {
|
|
|
+
|
|
|
+ defer func() {
|
|
|
+ if err != nil {
|
|
|
+ go utils.SendAlarmMsg(fmt.Sprint("权限申请模板消息推送消息失败,手机号", mobile, "公司:", companyName, "手机号:", mobile, ";Err:"+err.Error()), 2)
|
|
|
+ }
|
|
|
+ }()
|
|
|
+ var keyword1 string
|
|
|
+ var keyword2 string
|
|
|
+ var keyword3 string
|
|
|
+ var keyword4 string
|
|
|
+ var keyword5 string
|
|
|
+
|
|
|
+ detail, e := models.GetCygxApplyRecordByMobile(mobile)
|
|
|
+ if e != nil {
|
|
|
+ err = errors.New("GetActivitySignupNomeetingCountList" + e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ //如果是潜在客户就推送可查看详情的模版消息
|
|
|
+ if utils.RunMode == "release" {
|
|
|
+ if detail.ApplyMethod == 2 {
|
|
|
+ redirectUrl = utils.WX_MSG_PATH_APPLY_DETAIL + strconv.Itoa(detail.ApplyRecordId)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ openIdArr := make([]string, 0)
|
|
|
+ openIdArr = append(openIdArr, itemOpenid.OpenId)
|
|
|
+ sendInfo := new(SendWxCategoryTemplate)
|
|
|
+
|
|
|
+ keyword1 = realName
|
|
|
+ keyword2 = companyName
|
|
|
+ keyword3 = "权限申请"
|
|
|
+ keyword4 = time.Now().Format(utils.FormatDateTimeMinute2)
|
|
|
+ keyword5 = applyMethod
|
|
|
+
|
|
|
+ sendInfo.Keywords = []string{keyword1, keyword2, keyword3, keyword4, keyword5}
|
|
|
+ sendInfo.TemplateId = utils.WxCategoryMsgTemplateIdApplyXzs
|
|
|
+ sendInfo.RedirectUrl = redirectUrl
|
|
|
+ sendInfo.RedirectTarget = 4
|
|
|
+ sendInfo.Resource = mobile
|
|
|
+ sendInfo.SendType = utils.TEMPLATE_MSG_CYGX_APPLY
|
|
|
+ sendInfo.OpenIdArr = openIdArr
|
|
|
+ err = SendCategoryTemplateMsg(sendInfo)
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+// 发送用户操作活动消息提醒
|
|
|
+func SendNeiRongZuActivitieSignCategoryTemplateMsg(user *models.WxUserItem, activityDetail *models.ActivityDetail) (err error) {
|
|
|
+ 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("发送用户操作活动消息提醒,文章ID:", activityDetail.ActivityId), 2)
|
|
|
+ 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
|
|
|
+ }
|
|
|
+ sellerItemQy, err := models.GetSellerByCompanyIdCheckFicc(user.CompanyId, 2)
|
|
|
+ if err != nil && err.Error() != utils.ErrNoRow() {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ configCode := utils.TPL_MSG_NEI_RONG_ZU
|
|
|
+ cnf, e := models.GetConfigByCode(configCode)
|
|
|
+ if e != nil {
|
|
|
+ err = errors.New("GetConfigByCode, Err: " + e.Error() + configCode)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ openIdList, e := models.GetUserRecordListByMobile(4, cnf.ConfigValue+","+sellerItemQy.Mobile+","+utils.MobileShenTao)
|
|
|
+ if e != nil && e.Error() != utils.ErrNoRow() {
|
|
|
+ err = errors.New("GetUserRecordListByMobile, Err: " + e.Error() + cnf.ConfigValue)
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ openIdArr := make([]string, 0)
|
|
|
+ for _, v := range openIdList {
|
|
|
+ openIdArr = append(openIdArr, v.OpenId)
|
|
|
+ }
|
|
|
+ var keywords []string
|
|
|
+ keywords = append(keywords, user.RealName, user.CompanyName,
|
|
|
+ sellerItemQy.RealName, time.Now().Format(utils.FormatDateTimeMinute2),
|
|
|
+ "报名:"+activityDetail.ActivityName)
|
|
|
+
|
|
|
+ //sendMap["miniprogram"] = map[string]interface{}{"appid": utils.WxAppId, "pagepath": "activityPages/activityDetail/activityDetail?id=" + strconv.Itoa(activityDetail.ActivityId)}
|
|
|
+ sendInfo := new(SendWxCategoryTemplate)
|
|
|
+ sendInfo.Keywords = keywords
|
|
|
+ sendInfo.TemplateId = utils.WxCategoryMsgTemplateIdApplyXzs
|
|
|
+ sendInfo.RedirectTarget = 4
|
|
|
+ sendInfo.SendType = utils.TEMPLATE_MSG_CYGX_APPLY
|
|
|
+ sendInfo.OpenIdArr = openIdArr
|
|
|
+ err = SendCategoryTemplateMsg(sendInfo)
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func SendActivitieCancelSignCategoryTemplateMsg(user *models.WxUserItem, activityDetail *models.ActivityDetail) (err error) {
|
|
|
+ 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("发送用户操作活动消息提醒,文章ID:", activityDetail.ActivityId), 2)
|
|
|
+ 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
|
|
|
+ }
|
|
|
+ sellerItemQy, err := models.GetSellerByCompanyIdCheckFicc(user.CompanyId, 2)
|
|
|
+ if err != nil && err.Error() != utils.ErrNoRow() {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ configCode := utils.TPL_MSG_NEI_RONG_ZU
|
|
|
+ cnf, e := models.GetConfigByCode(configCode)
|
|
|
+ if e != nil {
|
|
|
+ err = errors.New("GetConfigByCode, Err: " + e.Error() + configCode)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ openIdList, e := models.GetUserRecordListByMobile(4, cnf.ConfigValue+","+sellerItemQy.Mobile+","+utils.MobileShenTao)
|
|
|
+ if e != nil && e.Error() != utils.ErrNoRow() {
|
|
|
+ err = errors.New("GetUserRecordListByMobile, Err: " + e.Error() + cnf.ConfigValue)
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ openIdArr := make([]string, 0)
|
|
|
+ for _, v := range openIdList {
|
|
|
+ openIdArr = append(openIdArr, v.OpenId)
|
|
|
+ }
|
|
|
+
|
|
|
+ var keywords []string
|
|
|
+ keywords = append(keywords, user.RealName, user.CompanyName,
|
|
|
+ sellerItemQy.RealName, time.Now().Format(utils.FormatDateTimeMinute2),
|
|
|
+ "取消报名"+"【"+activityDetail.ActivityName+"】")
|
|
|
+
|
|
|
+ //sendMap["miniprogram"] = map[string]interface{}{"appid": utils.WxAppId}
|
|
|
+
|
|
|
+ sendInfo := new(SendWxCategoryTemplate)
|
|
|
+ sendInfo.WxAppId = utils.WxAppId
|
|
|
+ sendInfo.Keywords = keywords
|
|
|
+ sendInfo.TemplateId = utils.WxCategoryMsgTemplateIdApplyXzs
|
|
|
+ sendInfo.RedirectTarget = 4
|
|
|
+ sendInfo.SendType = utils.TEMPLATE_MSG_CYGX_APPLY
|
|
|
+ sendInfo.OpenIdArr = openIdArr
|
|
|
+ err = SendCategoryTemplateMsg(sendInfo)
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+// 发送用户留言提醒
|
|
|
+func SendCommentWxCategoryTemplateMsg(req models.AddCygxArticleCommentReq, user *models.WxUserItem, articleInfo *models.ArticleDetail, msgId int) (err error) {
|
|
|
+ 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("发送用户用户留言提醒失败,文章ID:", req.ArticleId), 2)
|
|
|
+ utils.FileLog.Info("发送类目模版消息失败,Err:%s", err.Error())
|
|
|
+ }
|
|
|
+ }()
|
|
|
+
|
|
|
+ companyItem, e := models.GetSellerDetailAllByCompanyId(user.CompanyId)
|
|
|
+ if e != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if companyItem == nil {
|
|
|
+ msg = "获取客户所属销售信息失败,UserID:" + strconv.Itoa(user.UserId)
|
|
|
+ }
|
|
|
+ var keyword1 string
|
|
|
+ var keyword2 string
|
|
|
+ var keyword3 string
|
|
|
+ var keyword4 string
|
|
|
+ var keyword5 string
|
|
|
+ var redirectUrl string
|
|
|
+ var mobile string
|
|
|
+
|
|
|
+ var keywords []string
|
|
|
+ keyword1 = user.RealName
|
|
|
+ keyword2 = companyItem.CompanyName
|
|
|
+ keyword3 = companyItem.SellerName
|
|
|
+ keyword4 = time.Now().Format(utils.FormatDateTimeMinute2)
|
|
|
+ keyword5 = "报告留言:" + req.Content
|
|
|
+ keyword5 = utils.TruncateActivityNameString(keyword5)
|
|
|
+ keywords = append(keywords, keyword1, keyword2, keyword3, keyword4, keyword5)
|
|
|
+
|
|
|
+ if articleInfo.ArticleTypeId > 0 {
|
|
|
+ //研选报告添加汪洋
|
|
|
+ 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())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ openIdArr := make([]string, 0)
|
|
|
+ for _, v := range openIdList {
|
|
|
+ openIdArr = append(openIdArr, v.OpenId)
|
|
|
+ }
|
|
|
+
|
|
|
+ redirectUrl = utils.WX_MSG_PATH_YX_COMMENT_DETAIL + strconv.Itoa(msgId) + "&type=文章"
|
|
|
+
|
|
|
+ sendInfo := new(SendWxCategoryTemplate)
|
|
|
+ sendInfo.Keywords = keywords
|
|
|
+ sendInfo.TemplateId = utils.WxCategoryMsgTemplateIdApplyXzs
|
|
|
+ sendInfo.RedirectTarget = 4
|
|
|
+ sendInfo.SendType = utils.TEMPLATE_MSG_CYGX_APPLY
|
|
|
+ sendInfo.OpenIdArr = openIdArr
|
|
|
+ sendInfo.RedirectUrl = redirectUrl
|
|
|
+ err = SendCategoryTemplateMsg(sendInfo)
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+// 发送活动提问消息提醒
|
|
|
+func SendWxCategoryMsgWithAsk(realName,companyName, sellerName, askMsg string, openIdList []*models.OpenIdList, askId 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:", askId), 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 = utils.TruncateActivityNameString(companyName)
|
|
|
+ keyword3 = sellerName
|
|
|
+ keyword4 = time.Now().Format(utils.FormatDateTimeMinute2)
|
|
|
+ keyword5 = "活动提问:" + 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(askId)
|
|
|
+ //redirectUrl := utils.WX_MSG_PATH_TEMPLATE_MSG + "SourceId=" + strconv.Itoa(askId) + "&SourceType=2"
|
|
|
+
|
|
|
+ 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)
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+// 线下调研活动扫码签到给对应销售发类目模班消息
|
|
|
+func SendActivitieSignCategoryTemplateMsg(user *models.WxUserItem, activityDetail *models.ActivityDetail) (err error) {
|
|
|
+ defer func() {
|
|
|
+ if err != nil {
|
|
|
+ go utils.SendAlarmMsg(fmt.Sprint("线下调研活动扫码签到给对应销售发模班消息推送失败Err:", err.Error(), "活动ID:", activityDetail.ActivityId, "手机号:", user.Mobile), 2)
|
|
|
+ }
|
|
|
+ }()
|
|
|
+ var mobiles []string
|
|
|
+ //获取销售信息
|
|
|
+ sellerItem, err := models.GetSellerByCompanyIdCheckFicc(user.CompanyId, 2)
|
|
|
+ if err != nil && err.Error() != utils.ErrNoRow() {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if sellerItem != nil {
|
|
|
+ mobiles = append(mobiles, sellerItem.Mobile, utils.MobileWuAngDi, utils.MobileDongHeng, utils.MobileShenTao)
|
|
|
+ }
|
|
|
+
|
|
|
+ var keyword1 string
|
|
|
+ var keyword2 string
|
|
|
+ var keyword3 string
|
|
|
+ var keyword4 string
|
|
|
+ var keyword5 string
|
|
|
+
|
|
|
+ var redirectUrl string
|
|
|
+
|
|
|
+ keyword1 = user.RealName
|
|
|
+ keyword2 = user.CompanyName
|
|
|
+ keyword3 = sellerItem.RealName
|
|
|
+ keyword4 = activityDetail.ActivityName
|
|
|
+ keyword5 = time.Now().Format(utils.FormatDateTimeMinute2)
|
|
|
+
|
|
|
+ openIdList, e := models.GetWxOpenIdByMobileSliceList(mobiles)
|
|
|
+ if e != nil {
|
|
|
+ err = errors.New("GetWxOpenIdByMobileList, Err: " + e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ openIdArr := make([]string, 0)
|
|
|
+ for _, v := range openIdList {
|
|
|
+ openIdArr = append(openIdArr, v.OpenId)
|
|
|
+ }
|
|
|
+
|
|
|
+ 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 = 4
|
|
|
+ sendInfo.SendType = utils.TEMPLATE_MSG_CYGX_ARTICLE_ADD
|
|
|
+ sendInfo.OpenIdArr = openIdArr
|
|
|
+ sendInfo.RedirectUrl = redirectUrl
|
|
|
+ err = SendCategoryTemplateMsg(sendInfo)
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+// 文章互动相关类目模版消息
|
|
|
+func SendWxCategoryMsgInteractive(user *models.WxUserItem, interactive string, articleId int) (err error) {
|
|
|
+ //30秒内阅读同一篇报告不做重复推送
|
|
|
+ key := "CYGX_" + utils.CYGX_OBJ_RESEARCHSUMMARY + "_READ" + strconv.Itoa(articleId) + "_" + strconv.Itoa(user.UserId)
|
|
|
+ if utils.Rc.IsExist(key) {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ utils.Rc.Put(key, 1, 30*time.Second)
|
|
|
+ defer func() {
|
|
|
+ if err != nil {
|
|
|
+ go utils.SendAlarmMsg(fmt.Sprint("文章互动相关,类目模板消息推送 ,SendWxCategoryMsgInteractive"+err.Error(), "userId:", user.UserId, "互动类型:", interactive), 2)
|
|
|
+ }
|
|
|
+ }()
|
|
|
+ countUser, err := models.GetUserRemind(user.UserId)
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ if countUser == 0 {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ var keyword1 string
|
|
|
+ var keyword2 string
|
|
|
+ var keyword3 string
|
|
|
+ var keyword4 string
|
|
|
+ //获取销售手机号
|
|
|
+ sellerItemQy, err := models.GetSellerByCompanyIdCheckFicc(user.CompanyId, 2)
|
|
|
+ if err != nil && err.Error() != utils.ErrNoRow() {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ if sellerItemQy != nil {
|
|
|
+ openIdList, e := models.GetWxOpenIdByMobileList(sellerItemQy.Mobile)
|
|
|
+ if e != nil {
|
|
|
+ err = errors.New("GetSellerByAdminId, Err: " + e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if len(openIdList) == 0 {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ detail, e := models.GetCygxResearchSummaryInfoById(articleId)
|
|
|
+ if e != nil {
|
|
|
+ err = errors.New("GetCygxProductInteriorDetail, Err: " + e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if detail == nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ keyword1 = user.RealName + "-" + user.CompanyName
|
|
|
+ keyword1 = utils.TruncateActivityNameString(keyword1)
|
|
|
+ keyword2 = fmt.Sprint("互动提醒:", interactive)
|
|
|
+ keyword3 = detail.Title
|
|
|
+ keyword4 = time.Now().Format(utils.FormatDateTimeMinute2)
|
|
|
+ openIdArr := make([]string, 0)
|
|
|
+ for _, v := range openIdList {
|
|
|
+ openIdArr = append(openIdArr, v.OpenId)
|
|
|
+ }
|
|
|
+
|
|
|
+ redirectUrl := ``
|
|
|
+ redirectUrl = utils.WX_MSG_PATH_YX_ARTICLE_DETAIL + strconv.Itoa(articleId)
|
|
|
+
|
|
|
+ keywords := []string{keyword1, keyword2, keyword3, keyword4}
|
|
|
+
|
|
|
+ sendInfo := new(SendWxCategoryTemplate)
|
|
|
+ sendInfo.Keywords = keywords
|
|
|
+ sendInfo.TemplateId = utils.WxMsgCategoryTemplateIdActivityPublishApply
|
|
|
+ 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
|
|
|
+}
|
|
|
+
|
|
|
+// 用户搜索操作操作行为,类目模板消息推送
|
|
|
+func SearchKeywordUserRmindCategoryMsg(user *models.WxUserItem, keyWord string) (err error) {
|
|
|
+ defer func() {
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println(err)
|
|
|
+ go utils.SendAlarmMsg(fmt.Sprint("用户搜索操作操作行为,类目模板消息推送失败"+err.Error(), "UserId:", user.UserId, "keyWord:", keyWord), 2)
|
|
|
+ }
|
|
|
+ }()
|
|
|
+ countUser, e := models.GetUserRemind(user.UserId)
|
|
|
+ if e != nil {
|
|
|
+ err = errors.New("GetUserRemind, Err: " + e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if countUser == 0 {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ var keyword1 string
|
|
|
+ var keyword2 string
|
|
|
+ var keyword3 string
|
|
|
+ var keyword4 string
|
|
|
+ //获取销售手机号
|
|
|
+ sellerItemQy, e := models.GetSellerByCompanyIdCheckFicc(user.CompanyId, 2)
|
|
|
+ if e != nil && e.Error() != utils.ErrNoRow() {
|
|
|
+ err = errors.New("GetSellerByCompanyIdCheckFicc, Err: " + e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if sellerItemQy != nil {
|
|
|
+ openIdList, e := models.GetWxOpenIdByMobileList(sellerItemQy.Mobile)
|
|
|
+ if e != nil {
|
|
|
+ err = errors.New("GetSellerByAdminId, Err: " + e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if len(openIdList) == 0 {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ keyword1 = user.RealName + "-" + user.CompanyName
|
|
|
+ keyword2 = fmt.Sprint("互动提醒:搜索")
|
|
|
+ keyword3 = keyWord
|
|
|
+ keyword4 = time.Now().Format(utils.FormatDateTimeMinute2)
|
|
|
+ openIdArr := make([]string, 0)
|
|
|
+ for _, v := range openIdList {
|
|
|
+ openIdArr = append(openIdArr, v.OpenId)
|
|
|
+ }
|
|
|
+ redirectUrl := ""
|
|
|
+ keywords := []string{keyword1, keyword2, keyword3, keyword4}
|
|
|
+
|
|
|
+ sendInfo := new(SendWxCategoryTemplate)
|
|
|
+ sendInfo.Keywords = keywords
|
|
|
+ sendInfo.TemplateId = utils.WxMsgCategoryTemplateIdCompanyApprovalMessageRai
|
|
|
+ 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
|
|
|
+}
|
|
|
+
|
|
|
+// 发送报告提问消息提醒
|
|
|
+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
|
|
|
+}
|
|
|
+
|