package services import ( "encoding/json" "errors" "fmt" "hongze/hongze_clpt/models" "hongze/hongze_clpt/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 { 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 { 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 } // 研选专栏审核完成时,给提交人发送类目模板消息 func SendWxCategoryMsgSpecialAuthor(specialId, status int) (err error) { defer func() { if err != nil { go utils.SendAlarmMsg(fmt.Sprint("研选专栏审核完成时,给提交人发送模板消息", specialId, ", specialId", err.Error()), 2) } }() var keyword1 string var keyword2 string var keyword3 string var keyword4 string var redirectUrl string specialItem, e := models.GetYanxuanSpecialItemById(specialId) if e != nil { err = errors.New("GetYanxuanSpecialFollowUserById, Err: " + e.Error()) return } user, e := models.GetWxUserItemByUserId(specialItem.UserId) if e != nil { err = errors.New("GetWxUserItemByUserId, Err: " + e.Error()) return err } openIdList, err := models.GetMfyxUserRecordListByMobile(12, user.Mobile) if err != nil && err.Error() != utils.ErrNoRow() { return err } keyword1 = specialItem.Title keyword2 = specialItem.NickName if status == 1 { keyword3 = "文章已通过审核,点击查看详情" redirectUrl = utils.WX_MSG_PATH_YX_SPECIAL_DETAIL + strconv.Itoa(specialId) } else { keyword3 = "文章未通过审核,点击查看驳回原因" redirectUrl = utils.WX_MSG_PATH_YX_SPECIAL_CENTER } keyword4 = time.Now().Format(utils.FormatDateTimeMinute2) openIdArr := make([]string, 0) for _, v := range openIdList { openIdArr = append(openIdArr, v.OpenId) } 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 SendWxCategoryMsgSpecialFollow(specialId int) (err error) { defer func() { if err != nil { go utils.SendAlarmMsg(fmt.Sprint("研选专栏有新内容审核通过时,给关注此专栏的客户发送类目模板消息失败", specialId, ", specialId", err.Error()), 2) } }() var keyword1 string var keyword2 string var keyword3 string var keyword4 string followers, e := models.GetYanxuanSpecialFollowUserById(specialId) if e != nil { err = errors.New("GetYanxuanSpecialFollowUserById, Err: " + e.Error()) return } if len(followers) == 0 { return } specialItem, e := models.GetYanxuanSpecialItemById(specialId) if e != nil { err = errors.New("GetYanxuanSpecialFollowUserById, Err: " + e.Error()) return } var allInUserId string for _, v := range followers { allInUserId += strconv.Itoa(v) + "," } allInUserId = strings.TrimRight(allInUserId, ",") userList, err := models.GetWxUserListByUserIds(allInUserId) if err != nil && err.Error() != utils.ErrNoRow() { return err } mobile := `` for _, v := range userList { mobile += v.Mobile + "," } mobile = strings.TrimRight(mobile, ",") openIdList, e := models.GetMfyxWxOpenIdByMobileList(mobile) if e != nil { err = errors.New("GetSellerByAdminId, Err: " + e.Error()) return } if len(openIdList) == 0 { return } keyword1 = specialItem.SpecialName keyword2 = "发布了新报告" keyword3 = specialItem.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_SPECIAL_DETAIL + strconv.Itoa(specialId) 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 } // SendReviewCategoryTemplateMsgAdmin 提交审核时给王芳,汪洋发消息 func SendReviewCategoryTemplateMsgAdmin(specialId int) (err error) { defer func() { if err != nil { go utils.SendAlarmMsg(fmt.Sprint("处理试用申请给王芳,汪洋发消息失败, specialId:", specialId, "ErrMsg", err.Error()), 2) } }() //王芳、葛琳和沈涛 openIdList, e := models.GetMfyxUserRecordListByMobile(12, utils.WxMsgTemplateIdYXSpecialReview) if e != nil && e.Error() != utils.ErrNoRow() { err = errors.New("GetUserRecordListByMobile, Err: " + e.Error()) return err } specialItem, e := models.GetYanxuanSpecialItemById(specialId) if e != nil { err = errors.New("GetYanxuanSpecialFollowUserById, Err: " + e.Error()) return } user, e := models.GetWxUserItemByUserId(specialItem.UserId) if e != nil { err = errors.New("GetWxUserItemByUserId, Err: " + e.Error()) return err } var keyword1 string var keyword2 string var keyword3 string var keyword4 string var keyword5 string keyword1 = specialItem.NickName keyword2 = specialItem.RealName + "-" + user.CompanyName keyword2 = utils.TruncateActivityNameString(keyword2) keyword3 = specialItem.SpecialName keyword4 = time.Now().Format(utils.FormatDateTimeMinute2) keyword5 = "研选专栏提交了内容待审核" openIdArr := make([]string, 0) for _, v := range openIdList { openIdArr = append(openIdArr, v.OpenId) } redirectUrl := "" redirectUrl = utils.WX_MSG_PATH_YX_SPECIAL_ENABLE_DETAIL + strconv.Itoa(specialId) keywords := []string{keyword1, keyword2, keyword3, keyword4, keyword5} 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 }