main.go 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. package main
  2. import (
  3. "context"
  4. "dashoo.cn/micro/app/handler"
  5. "dashoo.cn/micro/app/service"
  6. "dashoo.cn/opms_libary/micro_srv"
  7. "dashoo.cn/opms_libary/myerrors"
  8. "github.com/gogf/gf/frame/g"
  9. "github.com/gogf/gf/net/ghttp"
  10. "github.com/smallnest/rpcx/protocol"
  11. "strings"
  12. )
  13. func main() {
  14. srvAddr := g.Config().GetString("setting.bind-addr")
  15. basePath := g.Config().GetString("setting.srv-name")
  16. // 创建总服务包
  17. s := micro_srv.CreateAndInitService(basePath)
  18. // 注册服务对象
  19. s.RegisterName("Dict", new(handler.DictHandler), "")
  20. s.RegisterName("Auth", new(handler.AuthHandler), "")
  21. s.RegisterName("User", new(handler.UserHandler), "")
  22. s.RegisterName("Menu", new(handler.MenuHandler), "")
  23. s.RegisterName("Dept", new(handler.DeptHandler), "")
  24. s.RegisterName("Role", new(handler.RoleHandler), "")
  25. s.RegisterName("Post", new(handler.PostHandler), "")
  26. s.RegisterName("Group", new(handler.GroupHandler), "")
  27. s.RegisterName("LoginLog", new(handler.LoginLogHandler), "")
  28. s.RegisterName("Config", new(handler.ConfigHandler), "")
  29. s.RegisterName("Message", new(handler.MessageHandler), "")
  30. s.RegisterName("BaseProductAuth", new(handler.BaseProductAuthHandler), "")
  31. s.RegisterName("BaseRegionAuth", new(handler.BaseRegionAuthHandler), "")
  32. s.RegisterName("SystemMessage", new(handler.SystemMessageHandler), "")
  33. // 注册文件处理Service对象
  34. //dynamic.BeanFactory.BeanRegister(service.NewRoleService())
  35. // 注册auth处理
  36. s.AuthFunc = handleAuth
  37. // 错误拦截
  38. s.Plugins.Add(&myerrors.HandleErrorPlugin{})
  39. // 启动websocket服务
  40. go websocketStart()
  41. // 运行服务
  42. if err := s.Serve("tcp", srvAddr); err != nil {
  43. g.Log().Fatal(err)
  44. }
  45. }
  46. // AuthExcludePaths 设定不需要认证的路径
  47. var AuthExcludePaths = []string{
  48. "/Auth/Login",
  49. "/Auth/ValidToken",
  50. "/Role/GetRoleList",
  51. "/Common/GetCaptchaImg",
  52. "/Model/*",
  53. "/Organize/GetOrgTreeList",
  54. "/User/SendResetPasswordEmail",
  55. "/User/ResetPasswordFromEmail",
  56. "/SystemMessage/Create",
  57. "/Message/SendMail",
  58. "/Dict/GetDictDataByType",
  59. "/User/GetDataScope",
  60. }
  61. // 处理Auth
  62. func handleAuth(ctx context.Context, req *protocol.Message, token string) error {
  63. ctx = context.WithValue(ctx, "NotAuthSrv", true)
  64. // token拦截器
  65. err := micro_srv.HandleAuth(ctx, req, token, AuthExcludePaths)
  66. return err
  67. }
  68. // 启动websocket服务
  69. func websocketStart() {
  70. flag := g.Config().GetBool("setting.websocket-start", true)
  71. if !flag {
  72. return
  73. }
  74. s := g.Server()
  75. s.BindHandler("/ws", func(r *ghttp.Request) {
  76. link := r.GetString("uid")
  77. if link != "" {
  78. userId := strings.Split(link, "-")[0]
  79. service.CreateConnection(userId, link, r)
  80. }
  81. })
  82. go service.CheckRun()
  83. // 配置文件获取参数
  84. s.SetAddr(g.Config().GetString("setting.websocket-addr", "127.0.0.1:8899"))
  85. s.Run()
  86. }