package admin import ( "net/http" "runtime/debug" "sig-pub/internal/admin/service" "sig-pub/pkg/resp" "sig-pub/pkg/storage/persist" "sig-pub/pkg/zlog" "github.com/gin-gonic/gin" ) type SigServer struct { db *persist.DB engine *gin.Engine } func NewSigServer(db *persist.DB) *SigServer { return &SigServer{ db: db, } } func (s *SigServer) Init() (err error) { s.initGinServer() return } func (s *SigServer) initGinServer() { s.engine = gin.Default() s.engine.Use(func(c *gin.Context) { // global recover defer func() { if r := recover(); r != nil { zlog.Error("http server recover error:", r) debug.PrintStack() c.JSON(http.StatusInternalServerError, resp.Error("server error")) c.Abort() } }() c.Next() }) routerGroup := s.engine.Group("/api/sig") service.Init(routerGroup, s.db) } func (s *SigServer) Run(addr string) (err error) { return s.engine.Run(addr) }