package src import ( "fmt" "be.ems/src/framework/config" "be.ems/src/framework/errorcatch" "be.ems/src/framework/middleware" "be.ems/src/framework/middleware/security" "be.ems/src/modules/auth" "be.ems/src/modules/chart" "be.ems/src/modules/common" "be.ems/src/modules/core" "be.ems/src/modules/crontask" "be.ems/src/modules/monitor" networkdata "be.ems/src/modules/network_data" networkelement "be.ems/src/modules/network_element" networklink "be.ems/src/modules/network_link" "be.ems/src/modules/oauth2" "be.ems/src/modules/system" "be.ems/src/modules/tool" "be.ems/src/modules/trace" "be.ems/src/modules/ws" "github.com/gin-gonic/gin" ) // 初始应用引擎 func AppEngine() *gin.Engine { var app *gin.Engine // 禁止控制台日志输出的颜色 gin.DisableConsoleColor() // 根据运行环境注册引擎 if config.Env() == "prod" { gin.SetMode(gin.ReleaseMode) app = gin.New() app.Use(gin.Recovery()) } else { app = gin.Default() } app.ForwardedByClientIP = true return app } // 初始全局默认 func DefeatConfig(app *gin.Engine) { // 全局中间件 if config.Env() == "local" { app.Use(middleware.Report()) } app.Use(errorcatch.ErrorCatch(), middleware.Cors(), security.Security()) // 静态目录-静态资源 if v := config.Get("staticFile.default"); v != nil { fsMap := v.(map[string]any) prefix, dir := fsMap["prefix"], fsMap["dir"] if prefix != nil && dir != nil { app.StaticFS(prefix.(string), gin.Dir(dir.(string), true)) } } // 静态目录-上传资源 if v := config.Get("staticFile.upload"); v != nil { fsMap := v.(map[string]any) prefix, dir := fsMap["prefix"], fsMap["dir"] if prefix != nil && dir != nil { app.StaticFS(prefix.(string), gin.Dir(dir.(string), true)) } } // 路由未找到时 app.NoRoute(func(c *gin.Context) { c.JSON(404, gin.H{ "code": 404, "msg": fmt.Sprintf("Not Found %s", c.Request.RequestURI), }) }) } // 初始模块路由 func ModulesRoute(app *gin.Engine) { // 系统模块 system.Setup(app) // 认证模块 auth.Setup(app) // 开放客户端模块 oauth2.Setup(app) // 通用模块 common.Setup(app) // 核心网模块 core.Setup(app) // 网元功能模块 networkelement.Setup(app) // 网元数据模块 networkdata.Setup(app) // 网元直连模块 networklink.Setup(app) // 跟踪模块 trace.Setup(app) // 图表模块 chart.Setup(app) // 工具模块 tool.Setup(app) // ws 模块 ws.Setup(app) // 调度任务模块--暂无接口 crontask.Setup(app) // 监控模块 - 含调度处理加入队列,放最后 monitor.Setup(app) }