activity_wx_msg.go 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  1. package cygx
  2. import (
  3. "errors"
  4. "fmt"
  5. "hongze/hz_crm_api/models"
  6. "hongze/hz_crm_api/models/cygx"
  7. "hongze/hz_crm_api/services"
  8. "hongze/hz_crm_api/services/alarm_msg"
  9. "hongze/hz_crm_api/utils"
  10. "strconv"
  11. )
  12. // 修改活动人数限制之后,对于因为人数已满而失败的用户,推送模板消息
  13. func SendWxMsgWithCygxActivityUpdateLimitPeople(activityId int) (err error) {
  14. var msg string
  15. defer func() {
  16. if err != nil {
  17. fmt.Println(err)
  18. go alarm_msg.SendAlarmMsg("修改活动人数限制之后,对于因为人数已满而失败的用户,推送模板消息,发送模版消息失败,Err:"+err.Error()+";msg:"+msg, 3)
  19. utils.FileLogCygx.Info(fmt.Sprintf("发送模版消息失败,Err:%s,%s", err.Error(), msg))
  20. }
  21. }()
  22. activityInfo, e := cygx.GetAddActivityInfoById(activityId)
  23. if e != nil {
  24. err = errors.New("活动不存在, Err: " + e.Error())
  25. return
  26. }
  27. if activityInfo == nil {
  28. return
  29. }
  30. //已经推送过的不做二次推送
  31. listSendOpendId, err := models.GeUserTemplateRecordListBysendType(utils.TEMPLATE_MSG_CYGX_ACTIVITY_LIMIT_PEOPLE, strconv.Itoa(activityId))
  32. if err != nil && err.Error() != utils.ErrNoRow() {
  33. return err
  34. }
  35. mapSendOpenid := make(map[string]int)
  36. for _, v := range listSendOpendId {
  37. mapSendOpenid[v.OpenId] = v.UserId
  38. }
  39. var condition string
  40. var pars []interface{}
  41. condition = ` AND do_fail_type = 1 AND activity_id = ? `
  42. pars = append(pars, activityId)
  43. listSignup, e := cygx.GetActivitySignupList(condition, pars)
  44. if e != nil {
  45. err = errors.New("GetResourceDataList, Err: " + e.Error())
  46. return
  47. }
  48. var mobileArr []string
  49. for _, v := range listSignup {
  50. if v.Mobile != "" {
  51. mobileArr = append(mobileArr, v.Mobile)
  52. }
  53. }
  54. mobileLen := len(mobileArr)
  55. if mobileLen == 0 {
  56. return
  57. }
  58. condition = ""
  59. pars = make([]interface{}, 0)
  60. condition += ` AND u.mobile IN (` + utils.GetOrmInReplace(mobileLen) + `)`
  61. pars = append(pars, mobileArr)
  62. openIdList, e := cygx.GetWxOpenIdBList(condition, pars)
  63. if e != nil {
  64. err = errors.New("GetWxOpenIdBList, Err: " + e.Error())
  65. return
  66. }
  67. if len(openIdList) == 0 {
  68. return
  69. }
  70. openIdArr := make([]string, len(openIdList))
  71. for i, v := range openIdList {
  72. if mapSendOpenid[v.OpenId] > 0 {
  73. continue
  74. }
  75. openIdArr[i] = v.OpenId
  76. }
  77. first := "您好,本场活动已增加活动名额至" + activityInfo.LimitPeopleNum + "人,欢迎报名"
  78. keyword1 := activityInfo.ActivityName
  79. keyword2 := "已增加活动名额至" + activityInfo.LimitPeopleNum + "人,欢迎报名"
  80. keyword3 := ""
  81. keyword4 := ""
  82. remark := "点击查看活动详情"
  83. redirectUrl := utils.WX_MSG_PATH_ACTIVITY_DETAIL + strconv.Itoa(activityId)
  84. sendInfo := new(services.SendWxTemplate)
  85. sendInfo.First = first
  86. sendInfo.Keyword1 = keyword1
  87. sendInfo.Keyword2 = keyword2
  88. sendInfo.Keyword3 = keyword3
  89. sendInfo.Keyword4 = keyword4
  90. sendInfo.Remark = remark
  91. sendInfo.TemplateId = utils.WxMsgTemplateIdActivityChangeApplyXzs
  92. sendInfo.RedirectUrl = redirectUrl
  93. sendInfo.RedirectTarget = 3
  94. sendInfo.Resource = strconv.Itoa(activityId)
  95. sendInfo.SendType = utils.TEMPLATE_MSG_CYGX_ACTIVITY_LIMIT_PEOPLE
  96. sendInfo.OpenIdArr = openIdArr
  97. e = services.SendTemplateMsg(sendInfo)
  98. if e != nil {
  99. err = errors.New("SendTemplateMsg, Err: " + e.Error())
  100. return
  101. }
  102. return
  103. }
  104. // 销售或后台管理员给用户添加报名之后,进行模版消息推送
  105. func SendWxMsgWithCygxActivitySignUpBySell(items []*cygx.CygxSignupUser) (err error) {
  106. var msg string
  107. defer func() {
  108. if err != nil {
  109. fmt.Println(err)
  110. go alarm_msg.SendAlarmMsg("修改活动人数限制之后,对于因为人数已满而失败的用户,推送模板消息,发送模版消息失败,Err:"+err.Error()+";msg:"+msg, 3)
  111. utils.FileLogCygx.Info(fmt.Sprintf("发送模版消息失败,Err:%s,%s", err.Error(), msg))
  112. }
  113. }()
  114. if len(items) == 0 {
  115. return
  116. }
  117. var condition string
  118. var pars []interface{}
  119. for _, v := range items {
  120. activityId := v.ActivityId
  121. uid := v.UserId
  122. activityInfo, e := cygx.GetAddActivityInfoById(activityId)
  123. if e != nil {
  124. err = errors.New("活动不存在, Err: " + e.Error())
  125. return
  126. }
  127. if activityInfo == nil {
  128. return
  129. }
  130. wxUser, e := models.GetWxUserByUserId(uid)
  131. if e != nil {
  132. err = errors.New("查询用户信息失败, Err: " + e.Error())
  133. return
  134. }
  135. var mobileArr []string
  136. mobileArr = append(mobileArr, wxUser.Mobile)
  137. mobileLen := len(mobileArr)
  138. if mobileLen == 0 {
  139. return
  140. }
  141. condition = ""
  142. pars = make([]interface{}, 0)
  143. condition += ` AND u.mobile IN (` + utils.GetOrmInReplace(mobileLen) + `)`
  144. pars = append(pars, mobileArr)
  145. openIdList, e := cygx.GetWxOpenIdBList(condition, pars)
  146. if e != nil {
  147. err = errors.New("GetWxOpenIdBList, Err: " + e.Error())
  148. return
  149. }
  150. if len(openIdList) == 0 {
  151. return
  152. }
  153. openIdArr := make([]string, len(openIdList))
  154. for i, v := range openIdList {
  155. fmt.Println(v.OpenId)
  156. openIdArr[i] = v.OpenId
  157. }
  158. first := "对口销售已为您报名本场活动"
  159. keyword1 := "销售已为您报名:" + activityInfo.ActivityName
  160. keyword2 := activityInfo.ActivityTimeText
  161. keyword3 := ""
  162. keyword4 := ""
  163. remark := "点击查看活动详情"
  164. redirectUrl := utils.WX_MSG_PATH_ACTIVITY_DETAIL + strconv.Itoa(activityId)
  165. sendInfo := new(services.SendWxTemplate)
  166. sendInfo.First = first
  167. sendInfo.Keyword1 = keyword1
  168. sendInfo.Keyword2 = keyword2
  169. sendInfo.Keyword3 = keyword3
  170. sendInfo.Keyword4 = keyword4
  171. sendInfo.Remark = remark
  172. sendInfo.TemplateId = utils.WxMsgTemplateIdActivityApplyXzs
  173. sendInfo.RedirectUrl = redirectUrl
  174. sendInfo.RedirectTarget = 3
  175. sendInfo.Resource = strconv.Itoa(activityId)
  176. sendInfo.SendType = utils.TEMPLATE_MSG_ACTIVITY_APPOINTMENT
  177. sendInfo.OpenIdArr = openIdArr
  178. e = services.SendTemplateMsg(sendInfo)
  179. if e != nil {
  180. err = errors.New("SendTemplateMsg, Err: " + e.Error())
  181. return
  182. }
  183. }
  184. return
  185. }