package mynode import ( "admin/internal/context" "admin/internal/db" "admin/internal/global" "admin/lib/node" "admin/lib/web" "admin/lib/xlog" "admin/ui" "github.com/gin-gonic/gin" "net/http" ) func New() *node.Node { nd := node.NewNode() nd.ApplyOptions(node.WithNodeExBootFlags(global.GLOB_BOOT_FLAGS)) nd.AddInitTask("初始化全局api监听服务", func() error { global.GLOB_API_ENGINE = web.New(context.NewWebContext) global.GLOB_API_ENGINE.GetRawEngine().Use(ui.Serve("/", ui.EmbedFolder(ui.UI, "static"))) global.GLOB_API_ENGINE.GetRawEngine().NoRoute(func(c *gin.Context) { data, err := ui.UI.ReadFile("static/index.html") if err != nil { c.AbortWithError(http.StatusInternalServerError, err) return } c.Data(http.StatusOK, "text/html; charset=utf-8", data) }) return nil }) nd.AddInitTask("初始化数据库", func() error { flags := global.GLOB_BOOT_FLAGS _, err := db.NewDB(flags.DBType, flags.DBAddr, flags.DBName, flags.DBUser, flags.DBPass) return err }) nd.AddPostTask("启动全局api监听服务", func() error { go func() { err := global.GLOB_API_ENGINE.Run(":" + global.GLOB_BOOT_FLAGS.ApiPort) if err != nil { xlog.Errorf("start api server on %v error: %v", global.GLOB_BOOT_FLAGS, err) } }() return nil }) return nd }