123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- package service
- import (
- "encoding/json"
- "fmt"
- "log"
- "time"
- "github.com/robfig/cron"
- "kpt.notice/middleware/notice"
- )
- func JobInit() {
- c := cron.New()
- // 公众号消息
- c.AddFunc("30 * * * * *", SendInstantMsg)
- c.AddFunc("00 30 09 * * *", SendDelayMsg)
- c.AddFunc("00 30 09 * * *", SendPeriodMsg)
- // c.Start()
- }
- // period message sending to wx
- func SendPeriodMsg() {
- fmt.Printf("send period msg\n")
- //query messages from db
- msgs, err := svc.getMsgByType(3)
- //read message list
- for _, val := range msgs {
- fmt.Printf("message++++++++%#v\n", val)
- data := make(map[string]interface{})
- json.Unmarshal([]byte(val.MsgContent), &data)
- targets := make([]string, 10)
- json.Unmarshal([]byte(val.Target), &targets)
- // fmt.Printf("data1=%v", data)
- // sli := strings.Split(val.Target, ",")
- log.Default().Printf("%#v\n", targets)
- // users, err := svc.QueryOpenid(targets)
- if err != nil {
- panic(err)
- }
- for _, openid := range targets {
- data["touser"] = openid
- log.Default().Printf("data2++++++++++%v\n", data)
- jsonstr, _ := json.Marshal(data)
- log.Default().Printf("jsonstr++++++++\n%v", string(jsonstr))
- resp, tmperr := notice.MsgTemplate(jsonstr)
- log.Default().Printf("wxresp=========%#v\n", string(resp))
- if tmperr != nil {
- log.Default().Printf("wxresp=========%#v\n", string(resp))
- }
- }
- }
- }
- // send delay message
- func SendDelayMsg() {
- fmt.Printf("send delay msg\n")
- msgs, err := svc.getMsgByType(2)
- if err != nil {
- }
- for _, val := range msgs {
- fmt.Printf("message++++++++%#v\n", val)
- data := make(map[string]interface{})
- json.Unmarshal([]byte(val.MsgContent), &data)
- targets := make([]string, 10)
- json.Unmarshal([]byte(val.Target), &targets)
- log.Default().Printf("%#v\n", targets)
- // users, err := svc.QueryOpenid(targets)
- if err != nil {
- panic(err)
- }
- for _, openid := range targets {
- data["touser"] = openid
- jsonstr, _ := json.Marshal(data)
- resp, tmperr := notice.MsgTemplate(jsonstr)
- log.Default().Printf("wxresp=========%#v\n", string(resp))
- if tmperr == nil {
- m := map[string]interface{}{
- "update_at": time.Now(),
- "push_count": val.PushCount + 1,
- }
- if val.PushCount+1 == val.PushLimit {
- m["status"] = 1
- }
- svc.UpdateMessage(val.RemindTypeID, val.ID, m)
- }
- }
- }
- }
- //instant message sending to wx
- func SendInstantMsg() {
- fmt.Printf("send instant msg\n")
- //query messages from db
- msgs, err := svc.getMsgByType(1)
- if err != nil {
- }
- //read message list
- for _, val := range msgs {
- fmt.Printf("message++++++++%#v\n", val)
- data := make(map[string]interface{})
- json.Unmarshal([]byte(val.MsgContent), &data)
- targets := make([]string, 10)
- json.Unmarshal([]byte(val.Target), &targets)
- // fmt.Printf("data1=%v", data)
- // sli := strings.Split(val.Target, ",")
- log.Default().Printf("%#v\n", targets)
- // users, err := svc.QueryOpenid(targets)
- if err != nil {
- panic(err)
- }
- for _, openid := range targets {
- data["touser"] = openid
- log.Default().Printf("data2++++++++++%v\n", data)
- jsonstr, _ := json.Marshal(data)
- log.Default().Printf("jsonstr++++++++\n%v", string(jsonstr))
- resp, tmperr := notice.MsgTemplate(jsonstr)
- log.Default().Printf("wxresp=========%#v\n", string(resp))
- if tmperr == nil {
- svc.UpdateMessage(val.RemindTypeID, val.ID, map[string]interface{}{
- "update_at": time.Now(),
- })
- }
- }
- }
- }
|