research_summary.go 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. package services
  2. import (
  3. "errors"
  4. "fmt"
  5. "hongze/hongze_cygx/models"
  6. "hongze/hongze_cygx/utils"
  7. "strconv"
  8. "time"
  9. )
  10. // 本周研究汇总用户阅读操作操作行为,模板消息推送
  11. func ResearchSummaryHistoryUserRmind(user *models.WxUserItem, articleId int) (err error) {
  12. //30秒内阅读同一篇报告不做重复推送
  13. key := "CYGX_" + utils.CYGX_OBJ_RESEARCHSUMMARY + "_READ" + strconv.Itoa(articleId) + "_" + strconv.Itoa(user.UserId)
  14. if utils.Rc.IsExist(key) {
  15. return
  16. }
  17. utils.Rc.Put(key, 1, 30*time.Second)
  18. defer func() {
  19. if err != nil {
  20. go utils.SendAlarmMsg(fmt.Sprint("本周研究汇总用户阅读操作操作行为,模板消息推送 ,ResearchSummaryHistoryUserRmind"+err.Error(), "userId:", user.UserId, "articleId:", articleId), 2)
  21. }
  22. }()
  23. countUser, err := models.GetUserRemind(user.UserId)
  24. if err != nil {
  25. return err
  26. }
  27. if countUser == 0 {
  28. return err
  29. }
  30. var first string
  31. var keyword1 string
  32. var keyword2 string
  33. var keyword3 string
  34. var keyword4 string
  35. var remark string
  36. //获取销售手机号
  37. sellerItemQy, err := models.GetSellerByCompanyIdCheckFicc(user.CompanyId, 2)
  38. if err != nil && err.Error() != utils.ErrNoRow() {
  39. return err
  40. }
  41. if sellerItemQy != nil {
  42. openIdList, e := models.GetWxOpenIdByMobileList(sellerItemQy.Mobile)
  43. if e != nil {
  44. err = errors.New("GetSellerByAdminId, Err: " + e.Error())
  45. return
  46. }
  47. if len(openIdList) == 0 {
  48. return
  49. }
  50. detail, e := models.GetCygxResearchSummaryInfoById(articleId)
  51. if e != nil {
  52. err = errors.New("GetCygxProductInteriorDetail, Err: " + e.Error())
  53. return
  54. }
  55. if detail == nil {
  56. return
  57. }
  58. keyword1 = detail.Title
  59. keyword2 = fmt.Sprint("互动:阅读报告,", user.RealName, "--", user.CompanyName)
  60. openIdArr := make([]string, 0)
  61. for _, v := range openIdList {
  62. openIdArr = append(openIdArr, v.OpenId)
  63. }
  64. redirectUrl := utils.WX_MSG_PATH_THIS_WEEK_DETAIL + strconv.Itoa(articleId)
  65. sendInfo := new(SendWxTemplate)
  66. sendInfo.First = first
  67. sendInfo.Keyword1 = keyword1
  68. sendInfo.Keyword2 = keyword2
  69. sendInfo.Keyword3 = keyword3
  70. sendInfo.Keyword4 = keyword4
  71. sendInfo.Remark = remark
  72. sendInfo.TemplateId = utils.WxMsgTemplateIdArticleUserRemind
  73. sendInfo.RedirectUrl = redirectUrl
  74. sendInfo.RedirectTarget = 3
  75. sendInfo.Resource = strconv.Itoa(articleId)
  76. sendInfo.SendType = utils.TEMPLATE_MSG_CYGX_ARTICLE_ADD
  77. sendInfo.OpenIdArr = openIdArr
  78. e = PublicSendTemplateMsg(sendInfo)
  79. if e != nil {
  80. err = errors.New("PublicSendTemplateMsg, Err: " + e.Error())
  81. return
  82. }
  83. }
  84. return
  85. }