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(), }) } } } }