wechat.go 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. // wechat
  2. //
  3. // Description: wechat service
  4. //
  5. // Schemes: http, https
  6. // Host: localhost:0
  7. // BasePath: /
  8. // Version: 0.0.1
  9. // SecurityDefinitions:
  10. // Token:
  11. // type: apiKey
  12. // name: Authorization
  13. // in: header
  14. // Security:
  15. // - Token: []
  16. // Consumes:
  17. // - application/json
  18. //
  19. // Produces:
  20. // - application/json
  21. //
  22. // swagger:meta
  23. package main
  24. import (
  25. "flag"
  26. "fmt"
  27. "github.com/zeromicro/go-zero/core/logx"
  28. "wechat-api/crontask"
  29. "wechat-api/internal/config"
  30. "wechat-api/internal/handler"
  31. "wechat-api/internal/service/MessageHandlers"
  32. "wechat-api/internal/svc"
  33. "github.com/robfig/cron/v3"
  34. "github.com/zeromicro/go-zero/core/conf"
  35. "github.com/zeromicro/go-zero/rest"
  36. )
  37. var configFile = flag.String("f", "etc/wechat.yaml", "the config file")
  38. func main() {
  39. flag.Parse()
  40. var c config.Config
  41. conf.MustLoad(*configFile, &c, conf.UseEnv())
  42. server := rest.MustNewServer(c.RestConf, rest.WithCors(c.CROSConf.Address))
  43. defer server.Stop()
  44. ctx := svc.NewServiceContext(c)
  45. //注册路由
  46. handler.RegisterHandlers(server, ctx)
  47. //注册wechat_ws 通道
  48. wechatHandler := MessageHandlers.NewMessageHandler(ctx)
  49. //注册企业微信处理程序
  50. wecomHandler := MessageHandlers.NewMessageHandler(ctx)
  51. wechatHandler.RegisterStrategies(MessageHandlers.GetWechatStrategies())
  52. wecomHandler.RegisterStrategies(MessageHandlers.GetWecomStrategies())
  53. //个微处理程序 没有彻底完成之前不能开,和cow重复了
  54. if len(ctx.WechatWs) == 0 {
  55. fmt.Println("wechat ws is nil")
  56. } else if ctx.WechatWs["default"] != nil {
  57. //var ic channel.IChannel
  58. for _, ws := range ctx.WechatWs {
  59. ws.RegisterMessageHandler(MessageHandlers.NewChatroomPushNoticeHandler(ctx).Handler)
  60. ws.RegisterMessageHandler(MessageHandlers.NewTalkToFriendTaskResultNoticeHandler(ctx).Handler)
  61. ws.RegisterMessageHandler(wechatHandler.GetWrappedHandler())
  62. }
  63. logx.Info("注册个微处理通道~")
  64. }
  65. if len(ctx.WecomWs) == 0 {
  66. fmt.Println("wecom ws is nil")
  67. } else if ctx.WecomWs["default"] != nil {
  68. //var ic channel.IChannel
  69. for _, ws := range ctx.WecomWs {
  70. ws.RegisterMessageHandler(MessageHandlers.NewTalkToFriendTaskResultNoticeHandler(ctx).Handler)
  71. ws.RegisterMessageHandler(wecomHandler.GetWrappedHandler())
  72. }
  73. logx.Info("注册企微处理通道~")
  74. }
  75. //注册cron任务
  76. cronCtx := cron.New(cron.WithChain(
  77. cron.SkipIfStillRunning(cron.DefaultLogger),
  78. cron.Recover(cron.DefaultLogger),
  79. ))
  80. crontask.ScheduleRun(cronCtx, ctx)
  81. go cronCtx.Start()
  82. defer cronCtx.Stop()
  83. fmt.Printf("Starting server at %s:%d...\n", c.Host, c.Port)
  84. server.Start()
  85. }