special_wx_msg.go 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585
  1. package cygx
  2. import (
  3. "errors"
  4. "fmt"
  5. "hongze/hz_crm_api/models/company"
  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. "strings"
  12. "time"
  13. )
  14. //预报名改为行程确定的活动时,通知预报名阶段感兴趣的客户
  15. // func init() {
  16. // DetermineTripCancel(55)
  17. // }
  18. func DetermineTripBeInterested(activityId int) (err error) {
  19. var msg string
  20. defer func() {
  21. if err != nil {
  22. fmt.Println(msg)
  23. fmt.Println(err)
  24. go alarm_msg.SendAlarmMsg("发送模版消息失败,Err:"+err.Error()+";msg:"+msg, 3)
  25. }
  26. }()
  27. activityInfo, e := cygx.GetAddActivityInfoSpecialById(activityId)
  28. if e != nil {
  29. err = e
  30. return
  31. }
  32. listSignup, e := cygx.GetCygxActivitySpecialSignupList(activityId)
  33. if e != nil {
  34. err = e
  35. fmt.Println(e)
  36. return
  37. }
  38. if len(listSignup) == 0 {
  39. return
  40. }
  41. var mobileArr []string
  42. for _, v := range listSignup {
  43. if v.Mobile != "" {
  44. mobileArr = append(mobileArr, v.Mobile)
  45. }
  46. }
  47. mobileLen := len(mobileArr)
  48. if mobileLen == 0 {
  49. return
  50. }
  51. //var condition string
  52. //var pars []interface{}
  53. //if mobileLen > 0 {
  54. // condition += ` AND u.mobile IN (` + utils.GetOrmInReplace(mobileLen) + `)`
  55. // pars = append(pars, mobileArr)
  56. //}
  57. openIdList, e := cygx.GetUserRecordListByMobileArr(mobileArr)
  58. if e != nil {
  59. fmt.Println(e)
  60. return
  61. }
  62. var openIdArr []string
  63. for _, v := range openIdList {
  64. openIdArr = append(openIdArr, v.OpenId)
  65. }
  66. if activityInfo.ChartPermissionId != utils.CHART_PERMISSION_ID_YANXUAN {
  67. //需求池 1043:深圳进门财经科技股份有限公司下所有的账号,所有活动的新增修改都做推送,所有的报告的新增修改都不做推送。
  68. jmcjOpenId := GetUserOpenidByComapnyIdRai(utils.JMCJ_COMPANY_ID)
  69. for _, v := range jmcjOpenId {
  70. if !utils.InArrayByStr(openIdArr, v) {
  71. openIdArr = append(openIdArr, v)
  72. }
  73. }
  74. }
  75. var first, keyword1, keyword2, keyword3, keyword4, remark, redirectUrl string
  76. keyword1 = "专项调研【" + activityInfo.ResearchTheme + "】"
  77. keyword2 = "已确定行程,请点击查看并报名以锁定席位"
  78. redirectUrl = utils.WX_MSG_PATH_ACTIVITY_SPECIAL_DETAIL + strconv.Itoa(activityId)
  79. sendInfo := new(services.SendWxTemplate)
  80. sendInfo.First = first
  81. sendInfo.Keyword1 = keyword1
  82. sendInfo.Keyword2 = keyword2
  83. sendInfo.Keyword3 = keyword3
  84. sendInfo.Keyword4 = keyword4
  85. sendInfo.Remark = remark
  86. sendInfo.TemplateId = utils.WxMsgTemplateIdActivityChangeApplyXzs
  87. sendInfo.RedirectUrl = redirectUrl
  88. sendInfo.RedirectTarget = 3
  89. sendInfo.Resource = strconv.Itoa(activityId)
  90. sendInfo.SendType = utils.TEMPLATE_MSG_CYGX_ACTIVITY_UPDATE
  91. sendInfo.OpenIdArr = openIdArr
  92. err = services.SendTemplateMsg(sendInfo)
  93. if err != nil {
  94. err = errors.New("SendTemplateMsg, Err: " + err.Error())
  95. return
  96. }
  97. return
  98. }
  99. // 取消发布
  100. func DetermineTripCancel(activityId int) (err error) {
  101. var msg string
  102. defer func() {
  103. if err != nil {
  104. fmt.Println(msg)
  105. fmt.Println(err)
  106. go alarm_msg.SendAlarmMsg("发送模版消息失败,Err:"+err.Error()+";msg:"+msg, 3)
  107. }
  108. }()
  109. activityInfo, e := cygx.GetAddActivityInfoSpecialById(activityId)
  110. if e != nil {
  111. err = e
  112. return
  113. }
  114. listSignup, e := cygx.GetCygxActivitySpecialTripListByActivityId(activityId)
  115. if e != nil {
  116. err = e
  117. return
  118. }
  119. var mobileArr []string
  120. for _, v := range listSignup {
  121. if v.Mobile != "" {
  122. mobileArr = append(mobileArr, v.Mobile)
  123. }
  124. }
  125. mobileLen := len(mobileArr)
  126. if mobileLen == 0 {
  127. return
  128. }
  129. openIdList, e := cygx.GetUserRecordListByMobileArr(mobileArr)
  130. if e != nil {
  131. fmt.Println(e)
  132. return
  133. }
  134. var openIdArr []string
  135. for _, v := range openIdList {
  136. openIdArr = append(openIdArr, v.OpenId)
  137. }
  138. if activityInfo.ChartPermissionId != utils.CHART_PERMISSION_ID_YANXUAN {
  139. //需求池 1043:深圳进门财经科技股份有限公司下所有的账号,所有活动的新增修改都做推送,所有的报告的新增修改都不做推送。
  140. jmcjOpenId := GetUserOpenidByComapnyIdRai(utils.JMCJ_COMPANY_ID)
  141. for _, v := range jmcjOpenId {
  142. if !utils.InArrayByStr(openIdArr, v) {
  143. openIdArr = append(openIdArr, v)
  144. }
  145. }
  146. }
  147. var first, keyword1, keyword2, keyword3, keyword4, remark, redirectUrl string
  148. keyword1 = "专项调研【" + activityInfo.ResearchTheme + "】"
  149. keyword2 = "因专家安排变动,本次调研活动延期举办,具体时间另行通知"
  150. redirectUrl = utils.WX_MSG_PATH_ACTIVITY_SPECIAL_DETAIL + strconv.Itoa(activityId)
  151. sendInfo := new(services.SendWxTemplate)
  152. sendInfo.First = first
  153. sendInfo.Keyword1 = keyword1
  154. sendInfo.Keyword2 = keyword2
  155. sendInfo.Keyword3 = keyword3
  156. sendInfo.Keyword4 = keyword4
  157. sendInfo.Remark = remark
  158. sendInfo.TemplateId = utils.WxMsgTemplateIdActivityChangeApplyXzs
  159. sendInfo.RedirectUrl = redirectUrl
  160. sendInfo.RedirectTarget = 3
  161. sendInfo.Resource = strconv.Itoa(activityId)
  162. sendInfo.SendType = utils.TEMPLATE_MSG_CYGX_ACTIVITY_UPDATE
  163. sendInfo.OpenIdArr = openIdArr
  164. err = services.SendTemplateMsg(sendInfo)
  165. if err != nil {
  166. err = errors.New("SendTemplateMsg, Err: " + err.Error())
  167. return
  168. }
  169. return
  170. }
  171. // 内容变更发布
  172. func DetermineTripChange(activityId int, changeType, changeMsg string) (err error) {
  173. var msg string
  174. defer func() {
  175. if err != nil {
  176. fmt.Println(msg)
  177. fmt.Println(err)
  178. go alarm_msg.SendAlarmMsg("发送模版消息失败,Err:"+err.Error()+";msg:"+msg, 3)
  179. }
  180. }()
  181. activityInfo, e := cygx.GetAddActivityInfoSpecialById(activityId)
  182. if e != nil {
  183. err = e
  184. return
  185. }
  186. listSignup, e := cygx.GetCygxActivitySpecialTripListByActivityId(activityId)
  187. if e != nil {
  188. err = e
  189. fmt.Println(e)
  190. return
  191. }
  192. var mobileArr []string
  193. for _, v := range listSignup {
  194. if v.Mobile != "" {
  195. mobileArr = append(mobileArr, v.Mobile)
  196. }
  197. }
  198. mobileLen := len(mobileArr)
  199. if mobileLen == 0 {
  200. return
  201. }
  202. openIdList, e := cygx.GetUserRecordListByMobileArr(mobileArr)
  203. if e != nil {
  204. fmt.Println(e)
  205. return
  206. }
  207. var openIdArr []string
  208. for _, v := range openIdList {
  209. openIdArr = append(openIdArr, v.OpenId)
  210. }
  211. if activityInfo.ChartPermissionId != utils.CHART_PERMISSION_ID_YANXUAN {
  212. //需求池 1043:深圳进门财经科技股份有限公司下所有的账号,所有活动的新增修改都做推送,所有的报告的新增修改都不做推送。
  213. jmcjOpenId := GetUserOpenidByComapnyIdRai(utils.JMCJ_COMPANY_ID)
  214. for _, v := range jmcjOpenId {
  215. if !utils.InArrayByStr(openIdArr, v) {
  216. openIdArr = append(openIdArr, v)
  217. }
  218. }
  219. }
  220. var first, keyword1, keyword2, keyword3, keyword4, remark, redirectUrl string
  221. if changeType == "City" {
  222. keyword1 = "【" + activityInfo.ResearchTheme + "】专项调研发生了城市变更"
  223. } else if changeType == "dateList" {
  224. keyword1 = "【" + activityInfo.ResearchTheme + "】专项调研发生了时间变更"
  225. } else {
  226. keyword1 = "【" + activityInfo.ResearchTheme + "】专项调研发生了调研形式变更"
  227. }
  228. keyword2 = changeMsg
  229. redirectUrl = utils.WX_MSG_PATH_ACTIVITY_SPECIAL_DETAIL + strconv.Itoa(activityId)
  230. sendInfo := new(services.SendWxTemplate)
  231. sendInfo.First = first
  232. sendInfo.Keyword1 = keyword1
  233. sendInfo.Keyword2 = keyword2
  234. sendInfo.Keyword3 = keyword3
  235. sendInfo.Keyword4 = keyword4
  236. sendInfo.Remark = remark
  237. sendInfo.TemplateId = utils.WxMsgTemplateIdActivityChangeApplyXzs
  238. sendInfo.RedirectUrl = redirectUrl
  239. sendInfo.RedirectTarget = 3
  240. sendInfo.Resource = strconv.Itoa(activityId)
  241. sendInfo.SendType = utils.TEMPLATE_MSG_CYGX_ACTIVITY_UPDATE
  242. sendInfo.OpenIdArr = openIdArr
  243. err = services.SendTemplateMsg(sendInfo)
  244. if err != nil {
  245. err = errors.New("SendTemplateMsg, Err: " + err.Error())
  246. return
  247. }
  248. return
  249. }
  250. //func init() {
  251. // SendWxMsgWithCygxActivitySpecialSubscribeNoInterested(7)
  252. //}
  253. // SendWxMsgWithCygxActivitySpecialSubscribeNoInterested 确定行程的活动通知,推送给订阅了调研活动通知且该场活动预报名阶段未点击感兴趣的客户和销售
  254. func SendWxMsgWithCygxActivitySpecialSubscribeNoInterested(activityId int) (err error) {
  255. var msg string
  256. defer func() {
  257. if err != nil {
  258. fmt.Println(err)
  259. go alarm_msg.SendAlarmMsg("发送模版消息失败,Err:"+err.Error()+";msg:"+msg, 3)
  260. utils.FileLogCygx.Info(fmt.Sprintf("发送模版消息失败,Err:%s,%s", err.Error(), msg))
  261. }
  262. }()
  263. activityInfo, err := cygx.GetAddActivityInfoSpecialById(activityId)
  264. if err != nil {
  265. msg = "GetReportInfo Err:" + err.Error()
  266. return
  267. }
  268. openIdList, err := cygx.GeFollowSpecialOpenIdList()
  269. if err != nil {
  270. msg = "get openIdList err:" + err.Error()
  271. return
  272. }
  273. listSignup, e := cygx.GetCygxActivitySpecialSignupList(activityId)
  274. if e != nil {
  275. err = e
  276. fmt.Println(e)
  277. return
  278. }
  279. var companyIds []int
  280. mapSignup := make(map[int]int)
  281. var arrOpenId []string
  282. for _, v := range listSignup {
  283. mapSignup[v.UserId] = v.UserId
  284. }
  285. for _, v := range openIdList {
  286. if _, ok := mapSignup[v.UserId]; !ok {
  287. arrOpenId = append(arrOpenId, v.OpenId)
  288. companyIds = append(companyIds, v.CompanyId)
  289. }
  290. }
  291. var condition string
  292. var pars []interface{}
  293. companyIdsLen := len(companyIds)
  294. condition = ` AND p.company_id IN (` + utils.GetOrmInReplace(companyIdsLen) + `) GROUP BY p.company_id `
  295. pars = append(pars, companyIds)
  296. listMobile, e := cygx.GetAdminMobileByCompany(condition, pars)
  297. if e != nil && e.Error() != utils.ErrNoRow() {
  298. err = errors.New("GetAdminOpendidByCompany, Err: " + e.Error())
  299. return
  300. }
  301. if len(listMobile) == 0 {
  302. return
  303. }
  304. var mobiles []string
  305. for _, vOpenid := range listMobile {
  306. mobiles = append(mobiles, vOpenid.Mobile)
  307. }
  308. listSeller, e := cygx.GetUserRecordListByMobileArr(mobiles)
  309. if e != nil && e.Error() != utils.ErrNoRow() {
  310. err = errors.New("GetUserRecordListByMobileArr, Err: " + e.Error())
  311. return
  312. }
  313. if len(listSeller) == 0 {
  314. return
  315. }
  316. for _, vOpenid := range listSeller {
  317. arrOpenId = append(arrOpenId, vOpenid.OpenId)
  318. }
  319. if len(arrOpenId) == 0 {
  320. return
  321. }
  322. mapOpenid := make(map[string]string)
  323. for _, v := range arrOpenId {
  324. mapOpenid[v] = v
  325. }
  326. var openIdArr []string
  327. for _, v := range mapOpenid {
  328. openIdArr = append(openIdArr, v)
  329. }
  330. //需求池 1043:深圳进门财经科技股份有限公司下所有的账号,所有活动的新增修改都做推送,所有的报告的新增修改都不做推送。
  331. jmcjOpenId := GetUserOpenidByComapnyIdRai(utils.JMCJ_COMPANY_ID)
  332. for _, v := range jmcjOpenId {
  333. if !utils.InArrayByStr(openIdArr, v) {
  334. openIdArr = append(openIdArr, v)
  335. }
  336. }
  337. var first string
  338. var keyword1 string
  339. var keyword2 string
  340. //keyword1 = activityInfo.ResearchTheme
  341. keyword1 = "【" + activityInfo.ResearchTheme + "】专项调研已确定行程"
  342. //keyword2 = "活动形式:"
  343. if activityInfo.SpecialType == 1 {
  344. keyword2 += "线上 开始时间:" + activityInfo.ActivityTimeTextByDay
  345. } else {
  346. keyword2 += "线下 " + "(" + activityInfo.City + ") 开始时间:" + activityInfo.ActivityTimeTextByDay
  347. }
  348. remark := "点击查看活动详情"
  349. redirectUrl := utils.WX_MSG_PATH_ACTIVITY_SPECIAL_DETAIL + strconv.Itoa(activityId)
  350. sendInfo := new(services.SendWxTemplate)
  351. sendInfo.First = first
  352. sendInfo.Keyword1 = keyword1
  353. sendInfo.Keyword2 = keyword2
  354. sendInfo.Remark = remark
  355. sendInfo.TemplateId = utils.WxMsgTemplateIdActivityChangeApplyXzs
  356. sendInfo.RedirectUrl = redirectUrl
  357. sendInfo.RedirectTarget = 3
  358. sendInfo.Resource = strconv.Itoa(activityId)
  359. sendInfo.SendType = utils.TEMPLATE_MSG_CYGX_ACTIVITY_UPDATE
  360. sendInfo.OpenIdArr = openIdArr
  361. err = services.SendTemplateMsg(sendInfo)
  362. return
  363. }
  364. //func init() {
  365. // SendWxMsgWithCygxActivitySpecialArticle(1000570)
  366. //}
  367. // 发布后,对7天内,相同产业名称的专项调研活动的报名和空降客户,推送模板消息
  368. func SendWxMsgWithCygxActivitySpecialArticle(articleId int) (err error) {
  369. var msg string
  370. defer func() {
  371. if err != nil {
  372. fmt.Println(err)
  373. go alarm_msg.SendAlarmMsg("发布后,对7天内,相同产业名称的专项调研活动的报名和空降客户,发送模版消息失败,Err:"+err.Error()+";msg:"+msg, 3)
  374. utils.FileLogCygx.Info(fmt.Sprintf("发送模版消息失败,Err:%s,%s", err.Error(), msg))
  375. }
  376. }()
  377. articleInfo, e := cygx.GetArticleIdInfoByArticleId(articleId)
  378. if e != nil {
  379. msg = "获取文章信息失败!articleId:" + strconv.Itoa(articleId)
  380. err = errors.New("GetArticleIdInfoByArticleId, Err: " + e.Error())
  381. return
  382. }
  383. industrialList, e := cygx.GetIndustrialArticleGroupManagementList(articleInfo.ArticleId)
  384. if e != nil && err.Error() != utils.ErrNoRow() {
  385. err = errors.New("获取活动关联的产业列表信息失败,GetIndustrialArticleGroupManagementList Err: " + e.Error())
  386. return
  387. }
  388. var industrialName string
  389. if len(industrialList) == 0 {
  390. for _, v := range industrialList {
  391. industrialName += v.IndustryName + ","
  392. }
  393. }
  394. industrialName = strings.TrimRight(industrialName, ",")
  395. //10分钟之内的二次编辑不重复推送
  396. cacheKey := fmt.Sprint("Source:ADMIN", "_ArticleId:", articleInfo.ArticleId)
  397. isExist := utils.Rc.IsExist(cacheKey)
  398. if isExist {
  399. return err
  400. }
  401. var condition string
  402. var pars []interface{}
  403. condition = ` AND category_id = ? AND sub_category_name = '专项调研' `
  404. pars = append(pars, articleInfo.CategoryId)
  405. charInfo, e := cygx.GetReportMappingDetail(condition, pars)
  406. if e != nil {
  407. err = errors.New("GetReportMappingDetail, Err: " + e.Error())
  408. return
  409. }
  410. //获取有权限的相关公司
  411. companyList, e := company.GetCompanyReportPermissionUpgradeByChartPermissionId(charInfo.ChartPermissionId)
  412. if e != nil {
  413. err = errors.New("GetCompanyReportPermissionUpgradeByChartPermissionId, Err: " + e.Error())
  414. return
  415. }
  416. if len(companyList) == 0 {
  417. return
  418. }
  419. var companyIdArr []int
  420. for _, v := range companyList {
  421. companyIdArr = append(companyIdArr, v.CompanyId)
  422. }
  423. pars = make([]interface{}, 0)
  424. condition = ` AND u.company_id IN (` + utils.GetOrmInReplace(len(companyIdArr)) + `)`
  425. pars = append(pars, companyIdArr)
  426. listMobile, e := cygx.GetAdminMobileByCompany(condition, pars)
  427. if e != nil {
  428. err = errors.New("GetWxOpenIdByMobileList, Err: " + e.Error())
  429. return
  430. }
  431. var mobiles []string
  432. for _, vOpenid := range listMobile {
  433. mobiles = append(mobiles, vOpenid.Mobile)
  434. }
  435. openIdList, e := cygx.GetUserRecordListByMobileArr(mobiles)
  436. if e != nil {
  437. err = errors.New("GetWxOpenIdByMobileList, Err: " + e.Error())
  438. return
  439. }
  440. var openIdArr []string
  441. for _, v := range openIdList {
  442. openIdArr = append(openIdArr, v.OpenId)
  443. }
  444. //需求池 1043:深圳进门财经科技股份有限公司下所有的账号,所有活动的新增修改都做推送,所有的报告的新增修改都不做推送。
  445. jmcjOpenId := GetUserOpenidByComapnyIdRai(utils.JMCJ_COMPANY_ID)
  446. for _, v := range jmcjOpenId {
  447. if !utils.InArrayByStr(openIdArr, v) {
  448. openIdArr = append(openIdArr, v)
  449. }
  450. }
  451. var keyword1 string
  452. first := ""
  453. if industrialName != "" {
  454. keyword1 = "【" + industrialName + "】有报告发布/更新"
  455. } else {
  456. keyword1 = articleInfo.Title + "已发布"
  457. }
  458. keyword2 := articleInfo.Title
  459. keyword3 := articleInfo.PublishDate.Format(utils.FormatDate)
  460. keyword4 := "--"
  461. remark := "点击查看报告详情"
  462. redirectUrl := utils.WX_MSG_PATH_ARTICLE_DETAIL + strconv.Itoa(articleInfo.ArticleId)
  463. sendInfo := new(services.SendWxTemplate)
  464. sendInfo.First = first
  465. sendInfo.Keyword1 = keyword1
  466. sendInfo.Keyword2 = keyword2
  467. sendInfo.Keyword3 = keyword3
  468. sendInfo.Keyword4 = keyword4
  469. sendInfo.Remark = remark
  470. sendInfo.TemplateId = utils.TemplateIdByProductXzs
  471. sendInfo.RedirectUrl = redirectUrl
  472. sendInfo.RedirectTarget = 3
  473. sendInfo.Resource = strconv.Itoa(articleInfo.ArticleId)
  474. sendInfo.SendType = utils.TEMPLATE_MSG_CYGX_ARTICLE_ADD
  475. sendInfo.OpenIdArr = openIdArr
  476. //fmt.Println(sendInfo)
  477. e = services.SendTemplateMsg(sendInfo)
  478. if e != nil {
  479. err = errors.New("SendTemplateMsg, Err: " + e.Error())
  480. return
  481. }
  482. setNX := utils.Rc.SetNX(cacheKey, articleInfo.ArticleId, time.Minute*10)
  483. if !setNX {
  484. go alarm_msg.SendAlarmMsg("发送模版消息失败,10分钟之内的活动二次编辑不重复推送,设置Redis Key 过期时间失败:key"+cacheKey, 3)
  485. return err
  486. }
  487. return
  488. }
  489. // 专项调研活动模板消息通知
  490. func SendWxMsgWithCygxActivitySpecial(activityId int) (err error) {
  491. var msg string
  492. defer func() {
  493. if err != nil {
  494. go alarm_msg.SendAlarmMsg("发送模版消息失败,Err:"+err.Error()+";msg:"+msg, 3)
  495. //go utils.SendEmail("发送模版消息失败"+time.Now().Format("2006-01-02 15:04:05"), msg+";Err:"+err.Error(), utils.EmailSendToUsers)
  496. utils.FileLogCygx.Info(fmt.Sprintf("发送模版消息失败,Err:%s,%s", err.Error(), msg))
  497. }
  498. }()
  499. activityInfo, err := cygx.GetAddActivityInfoSpecialById(activityId)
  500. if err != nil {
  501. msg = "GetReportInfo Err:" + err.Error()
  502. return
  503. }
  504. var openIdList []*cygx.OpenIdList
  505. openIdList, err = cygx.GetActivitySpecialOpenIdList()
  506. if err != nil {
  507. msg = "get openIdList err:" + err.Error()
  508. return
  509. }
  510. var openIdArr []string
  511. for _, v := range openIdList {
  512. openIdArr = append(openIdArr, v.OpenId)
  513. }
  514. if activityInfo.ChartPermissionId != utils.CHART_PERMISSION_ID_YANXUAN {
  515. //需求池 1043:深圳进门财经科技股份有限公司下所有的账号,所有活动的新增修改都做推送,所有的报告的新增修改都不做推送。
  516. jmcjOpenId := GetUserOpenidByComapnyIdRai(utils.JMCJ_COMPANY_ID)
  517. for _, v := range jmcjOpenId {
  518. if !utils.InArrayByStr(openIdArr, v) {
  519. openIdArr = append(openIdArr, v)
  520. }
  521. }
  522. }
  523. var first, keyword1, keyword2, keyword3, keyword4, remark, redirectUrl string
  524. keyword1 = "专项调研【" + activityInfo.ResearchTheme + "】"
  525. keyword2 = "已开启预报名"
  526. //if activityInfo.SpecialType == 1 {
  527. // keyword2 += "线上 预期时间:" + activityInfo.ActivityTimeText
  528. //} else {
  529. // keyword2 += "线下 " + "(" + activityInfo.City + ") 预期时间:" + activityInfo.ActivityTimeText
  530. //}
  531. redirectUrl = utils.WX_MSG_PATH_ACTIVITY_SPECIAL_DETAIL + strconv.Itoa(activityId)
  532. sendInfo := new(services.SendWxTemplate)
  533. sendInfo.First = first
  534. sendInfo.Keyword1 = keyword1
  535. sendInfo.Keyword2 = keyword2
  536. sendInfo.Keyword3 = keyword3
  537. sendInfo.Keyword4 = keyword4
  538. sendInfo.Remark = remark
  539. sendInfo.TemplateId = utils.WxMsgTemplateIdActivityChangeApplyXzs
  540. sendInfo.RedirectUrl = redirectUrl
  541. sendInfo.RedirectTarget = 3
  542. sendInfo.Resource = strconv.Itoa(activityId)
  543. sendInfo.SendType = utils.TEMPLATE_MSG_CYGX_ACTIVITY_UPDATE
  544. sendInfo.OpenIdArr = openIdArr
  545. err = services.SendTemplateMsg(sendInfo)
  546. if err != nil {
  547. err = errors.New("SendTemplateMsg, Err: " + err.Error())
  548. return
  549. }
  550. return
  551. }