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", "/Message/SendMail", "/Dict/GetDictDataByType", "/User/GetDataScope", } // 处理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() }