package main import ( "context" "dashoo.cn/micro/app/handler" "dashoo.cn/micro/app/service" "dashoo.cn/opms_libary/micro_srv" "dashoo.cn/opms_libary/myerrors" "github.com/gogf/gf/frame/g" "github.com/gogf/gf/net/ghttp" "github.com/smallnest/rpcx/protocol" "strings" ) func main() { srvAddr := g.Config().GetString("setting.bind-addr") basePath := g.Config().GetString("setting.srv-name") // 创建总服务包 s := micro_srv.CreateAndInitService(basePath) // 注册服务对象 s.RegisterName("Dict", new(handler.DictHandler), "") s.RegisterName("Auth", new(handler.AuthHandler), "") s.RegisterName("User", new(handler.UserHandler), "") s.RegisterName("Menu", new(handler.MenuHandler), "") s.RegisterName("Dept", new(handler.DeptHandler), "") s.RegisterName("Role", new(handler.RoleHandler), "") s.RegisterName("Post", new(handler.PostHandler), "") s.RegisterName("Group", new(handler.GroupHandler), "") s.RegisterName("LoginLog", new(handler.LoginLogHandler), "") s.RegisterName("Config", new(handler.ConfigHandler), "") s.RegisterName("Message", new(handler.MessageHandler), "") s.RegisterName("BaseProductAuth", new(handler.BaseProductAuthHandler), "") s.RegisterName("BaseRegionAuth", new(handler.BaseRegionAuthHandler), "") s.RegisterName("SystemMessage", new(handler.SystemMessageHandler), "") // 注册文件处理Service对象 //dynamic.BeanFactory.BeanRegister(service.NewRoleService()) // 注册auth处理 s.AuthFunc = handleAuth // 错误拦截 s.Plugins.Add(&myerrors.HandleErrorPlugin{}) // 启动websocket服务 go websocketStart() // 运行服务 if err := s.Serve("tcp", srvAddr); err != nil { g.Log().Fatal(err) } } // AuthExcludePaths 设定不需要认证的路径 var AuthExcludePaths = []string{ "/Auth/Login", "/Auth/ValidToken", "/Role/GetRoleList", "/Common/GetCaptchaImg", "/Model/*", "/Organize/GetOrgTreeList", "/User/SendResetPasswordEmail", "/User/ResetPasswordFromEmail", "/SystemMessage/Create", } // 处理Auth func handleAuth(ctx context.Context, req *protocol.Message, token string) error { ctx = context.WithValue(ctx, "NotAuthSrv", true) // token拦截器 err := micro_srv.HandleAuth(ctx, req, token, AuthExcludePaths) return err } // 启动websocket服务 func websocketStart() { flag := g.Config().GetBool("setting.websocket-start", true) if !flag { return } s := g.Server() s.BindHandler("/ws", func(r *ghttp.Request) { link := r.GetString("uid") if link != "" { userId := strings.Split(link, "-")[0] service.CreateConnection(userId, link, r) } }) go service.CheckRun() // 配置文件获取参数 s.SetAddr(g.Config().GetString("setting.websocket-addr", "127.0.0.1:8899")) s.Run() }