// wechat // // Description: wechat service // // Schemes: http, https // Host: localhost:0 // BasePath: / // Version: 0.0.1 // SecurityDefinitions: // Token: // type: apiKey // name: Authorization // in: header // Security: // - Token: [] // Consumes: // - application/json // // Produces: // - application/json // // swagger:meta package main import ( "flag" "fmt" "github.com/zeromicro/go-zero/core/logx" "wechat-api/crontask" "wechat-api/internal/config" "wechat-api/internal/handler" "wechat-api/internal/service/MessageHandlers" "wechat-api/internal/svc" "github.com/robfig/cron/v3" "github.com/zeromicro/go-zero/core/conf" "github.com/zeromicro/go-zero/rest" ) var configFile = flag.String("f", "etc/wechat.yaml", "the config file") func main() { flag.Parse() var c config.Config conf.MustLoad(*configFile, &c, conf.UseEnv()) server := rest.MustNewServer(c.RestConf, rest.WithCors(c.CROSConf.Address)) defer server.Stop() ctx := svc.NewServiceContext(c) //注册路由 handler.RegisterHandlers(server, ctx) //注册wechat_ws 通道 wechatHandler := MessageHandlers.NewMessageHandler(ctx) //注册企业微信处理程序 wecomHandler := MessageHandlers.NewMessageHandler(ctx) wechatHandler.RegisterStrategies(MessageHandlers.GetWechatStrategies()) wecomHandler.RegisterStrategies(MessageHandlers.GetWecomStrategies()) //个微处理程序 没有彻底完成之前不能开,和cow重复了 if len(ctx.WechatWs) == 0 { fmt.Println("wechat ws is nil") } else if ctx.WechatWs["default"] != nil { //var ic channel.IChannel for _, ws := range ctx.WechatWs { ws.RegisterMessageHandler(MessageHandlers.NewChatroomPushNoticeHandler(ctx).Handler) ws.RegisterMessageHandler(MessageHandlers.NewTalkToFriendTaskResultNoticeHandler(ctx).Handler) ws.RegisterMessageHandler(wechatHandler.GetWrappedHandler()) } logx.Info("注册个微处理通道~") } if len(ctx.WecomWs) == 0 { fmt.Println("wecom ws is nil") } else if ctx.WecomWs["default"] != nil { //var ic channel.IChannel for _, ws := range ctx.WecomWs { ws.RegisterMessageHandler(MessageHandlers.NewTalkToFriendTaskResultNoticeHandler(ctx).Handler) ws.RegisterMessageHandler(wecomHandler.GetWrappedHandler()) } logx.Info("注册企微处理通道~") } //注册cron任务 cronCtx := cron.New(cron.WithChain( cron.SkipIfStillRunning(cron.DefaultLogger), cron.Recover(cron.DefaultLogger), )) crontask.ScheduleRun(cronCtx, ctx) go cronCtx.Start() defer cronCtx.Stop() fmt.Printf("Starting server at %s:%d...\n", c.Host, c.Port) server.Start() }