job.go 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. package service
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "log"
  6. "time"
  7. "github.com/robfig/cron"
  8. "kpt.notice/middleware/notice"
  9. )
  10. func JobInit() {
  11. c := cron.New()
  12. // 公众号消息
  13. c.AddFunc("30 * * * * *", SendInstantMsg)
  14. c.AddFunc("00 30 09 * * *", SendDelayMsg)
  15. c.AddFunc("00 30 09 * * *", SendPeriodMsg)
  16. // c.Start()
  17. }
  18. // period message sending to wx
  19. func SendPeriodMsg() {
  20. fmt.Printf("send period msg\n")
  21. //query messages from db
  22. msgs, err := svc.getMsgByType(3)
  23. //read message list
  24. for _, val := range msgs {
  25. fmt.Printf("message++++++++%#v\n", val)
  26. data := make(map[string]interface{})
  27. json.Unmarshal([]byte(val.MsgContent), &data)
  28. targets := make([]string, 10)
  29. json.Unmarshal([]byte(val.Target), &targets)
  30. // fmt.Printf("data1=%v", data)
  31. // sli := strings.Split(val.Target, ",")
  32. log.Default().Printf("%#v\n", targets)
  33. // users, err := svc.QueryOpenid(targets)
  34. if err != nil {
  35. panic(err)
  36. }
  37. for _, openid := range targets {
  38. data["touser"] = openid
  39. log.Default().Printf("data2++++++++++%v\n", data)
  40. jsonstr, _ := json.Marshal(data)
  41. log.Default().Printf("jsonstr++++++++\n%v", string(jsonstr))
  42. resp, tmperr := notice.MsgTemplate(jsonstr)
  43. log.Default().Printf("wxresp=========%#v\n", string(resp))
  44. if tmperr != nil {
  45. log.Default().Printf("wxresp=========%#v\n", string(resp))
  46. }
  47. }
  48. }
  49. }
  50. // send delay message
  51. func SendDelayMsg() {
  52. fmt.Printf("send delay msg\n")
  53. msgs, err := svc.getMsgByType(2)
  54. if err != nil {
  55. }
  56. for _, val := range msgs {
  57. fmt.Printf("message++++++++%#v\n", val)
  58. data := make(map[string]interface{})
  59. json.Unmarshal([]byte(val.MsgContent), &data)
  60. targets := make([]string, 10)
  61. json.Unmarshal([]byte(val.Target), &targets)
  62. log.Default().Printf("%#v\n", targets)
  63. // users, err := svc.QueryOpenid(targets)
  64. if err != nil {
  65. panic(err)
  66. }
  67. for _, openid := range targets {
  68. data["touser"] = openid
  69. jsonstr, _ := json.Marshal(data)
  70. resp, tmperr := notice.MsgTemplate(jsonstr)
  71. log.Default().Printf("wxresp=========%#v\n", string(resp))
  72. if tmperr == nil {
  73. m := map[string]interface{}{
  74. "update_at": time.Now(),
  75. "push_count": val.PushCount + 1,
  76. }
  77. if val.PushCount+1 == val.PushLimit {
  78. m["status"] = 1
  79. }
  80. svc.UpdateMessage(val.RemindTypeID, val.ID, m)
  81. }
  82. }
  83. }
  84. }
  85. //instant message sending to wx
  86. func SendInstantMsg() {
  87. fmt.Printf("send instant msg\n")
  88. //query messages from db
  89. msgs, err := svc.getMsgByType(1)
  90. if err != nil {
  91. }
  92. //read message list
  93. for _, val := range msgs {
  94. fmt.Printf("message++++++++%#v\n", val)
  95. data := make(map[string]interface{})
  96. json.Unmarshal([]byte(val.MsgContent), &data)
  97. targets := make([]string, 10)
  98. json.Unmarshal([]byte(val.Target), &targets)
  99. // fmt.Printf("data1=%v", data)
  100. // sli := strings.Split(val.Target, ",")
  101. log.Default().Printf("%#v\n", targets)
  102. // users, err := svc.QueryOpenid(targets)
  103. if err != nil {
  104. panic(err)
  105. }
  106. for _, openid := range targets {
  107. data["touser"] = openid
  108. log.Default().Printf("data2++++++++++%v\n", data)
  109. jsonstr, _ := json.Marshal(data)
  110. log.Default().Printf("jsonstr++++++++\n%v", string(jsonstr))
  111. resp, tmperr := notice.MsgTemplate(jsonstr)
  112. log.Default().Printf("wxresp=========%#v\n", string(resp))
  113. if tmperr == nil {
  114. svc.UpdateMessage(val.RemindTypeID, val.ID, map[string]interface{}{
  115. "update_at": time.Now(),
  116. })
  117. }
  118. }
  119. }
  120. }