activity.go 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. package services
  2. import (
  3. "context"
  4. "fmt"
  5. "hongze/hongze_task/models"
  6. "hongze/hongze_task/models/yb"
  7. "hongze/hongze_task/utils"
  8. "time"
  9. )
  10. // YbTelRemind 研报电话会提醒
  11. func YbTelRemind(cont context.Context) (err error) {
  12. defer func() {
  13. if err != nil {
  14. //fmt.Println(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "发送消息至同花顺失败 ErrMsg:"+err.Error(), utils.EmailSendToUsers)
  15. go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "发送电话会提醒失败 ErrMsg:"+err.Error(), utils.EmailSendToUsers)
  16. }
  17. }()
  18. condition := ""
  19. pars := make([]interface{}, 0)
  20. startTime := time.Now().Add(time.Second * 60 * 15).Format(utils.FormatDateTime) //15分钟后就要开始的会议
  21. condition += ` and publish_status = 1 and is_send_wx_msg = 0 and is_delete = 0 and start_time <= ? and end_time >= now() `
  22. pars = append(pars, startTime)
  23. condition += ` and first_activity_type_id in (1,3) `
  24. _, list, err := yb.GetList(condition, pars, 0, 1000)
  25. for _, activityInfo := range list {
  26. activityInfo.IsSendWxMsg = 1
  27. activityInfo.Update([]string{"IsSendWxMsg"})
  28. go sendWxMsg(activityInfo, "会议提醒")
  29. }
  30. return
  31. }
  32. // YbSalonRemind 研报沙龙提醒
  33. func YbSalonRemind(cont context.Context) (err error) {
  34. defer func() {
  35. if err != nil {
  36. //fmt.Println(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "发送消息至同花顺失败 ErrMsg:"+err.Error(), utils.EmailSendToUsers)
  37. go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "发送电话会提醒失败 ErrMsg:"+err.Error(), utils.EmailSendToUsers)
  38. }
  39. }()
  40. condition := ""
  41. pars := make([]interface{}, 0)
  42. startTime := time.Now().Add(time.Second * 60 * 60).Format(utils.FormatDateTime) //1小时后就要开始的沙龙
  43. condition += ` and publish_status = 1 and is_send_salon_wx_msg = 0 and is_delete = 0 and start_time <= ? and end_time >= now() `
  44. pars = append(pars, startTime)
  45. condition += ` and first_activity_type_id =3 `
  46. _, list, err := yb.GetList(condition, pars, 0, 1000)
  47. for _, activityInfo := range list {
  48. activityInfo.IsSendSalonWxMsg = 1
  49. activityInfo.Update([]string{"IsSendSalonWxMsg"})
  50. go sendWxMsg(activityInfo, "沙龙提醒")
  51. }
  52. return
  53. }
  54. func sendWxMsg(activityInfo *yb.Activity, remindType string) (err error) {
  55. defer func() {
  56. if err != nil {
  57. fmt.Println(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "发送电话会提醒失败 ErrMsg:"+err.Error())
  58. utils.FileLog.Info(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "发送电话会提醒失败 ErrMsg:"+err.Error())
  59. //go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "发送电话会提醒失败 ErrMsg:"+err.Error(), utils.EmailSendToUsers)
  60. }
  61. }()
  62. keyword4 := "- -"
  63. //您有一场【橡胶双周报】将在15分钟后开始
  64. timeStr := ``
  65. userIdList := make([]string, 0) //提醒用户列表
  66. if remindType == "会议提醒" {
  67. timeStr = `15分钟`
  68. list, tmpErr := yb.GetAllActivityRemindListByActivityId(activityInfo.ActivityId)
  69. if tmpErr != nil {
  70. err = tmpErr
  71. return
  72. }
  73. for _, v := range list {
  74. userIdList = append(userIdList, fmt.Sprint(v.UserId))
  75. }
  76. } else {
  77. timeStr = `1小时`
  78. list, tmpErr := yb.GetAllActivityRegisterListByActivityId(activityInfo.ActivityId)
  79. if tmpErr != nil {
  80. err = tmpErr
  81. return
  82. }
  83. for _, v := range list {
  84. userIdList = append(userIdList, fmt.Sprint(v.UserId))
  85. }
  86. keyword4 = activityInfo.Address
  87. }
  88. if len(userIdList) <= 0 {
  89. return
  90. }
  91. first := `您有一场【` + activityInfo.ActivityTypeName + `】将在` + timeStr + `后开始`
  92. keyword1 := activityInfo.ActivityName
  93. keyword2 := "- -"
  94. //keyword3 := `2021-10-18 16:30-17:00 星期一`
  95. keyword3 := formatActivityTimeStr(activityInfo.StartTime, activityInfo.EndTime)
  96. remark := `点击查看活动详情`
  97. //获取所有用户的openid列表
  98. openidList, err := models.GetUserOpenidListByUserIds(userIdList)
  99. if err != nil {
  100. return
  101. }
  102. //小程序跳转地址
  103. wxAppPath := `pages-activity/detail?id=` + fmt.Sprint(activityInfo.ActivityId)
  104. //由于测试环境小程序没有发布,模板消息设置了小程序跳转地址,会导致模板消息发送失败
  105. if utils.RunMode == `debug` {
  106. wxAppPath = ``
  107. }
  108. err = SendWxMsgWithActivityAppointmentRemind(first, keyword1, keyword2, keyword3, keyword4, remark, wxAppPath, openidList)
  109. return
  110. }
  111. // formatActivityTimeStr 格式化活动的开始结束时间
  112. func formatActivityTimeStr(startTime, endTime time.Time) string {
  113. startStr := startTime.Format("2006-01-02 15:04")
  114. endStr := endTime.Format("15:04")
  115. weekStr := ``
  116. weekInt := startTime.Weekday()
  117. switch weekInt {
  118. case 0:
  119. weekStr = `星期日`
  120. case 1:
  121. weekStr = `星期一`
  122. case 2:
  123. weekStr = `星期二`
  124. case 3:
  125. weekStr = `星期三`
  126. case 4:
  127. weekStr = `星期四`
  128. case 5:
  129. weekStr = `星期五`
  130. case 6:
  131. weekStr = `星期六`
  132. }
  133. return startStr + `-` + endStr + ` ` + weekStr
  134. }