rts-sim-testing-service/init.go
2023-09-26 10:25:24 +08:00

62 lines
1.4 KiB
Go

package main
import (
"fmt"
"net/http"
"time"
"go.uber.org/zap"
"joylink.club/bj-rtsts-server/db/dbquery"
"joylink.club/bj-rtsts-server/dto"
"github.com/gin-contrib/cors"
ginzap "github.com/gin-contrib/zap"
"github.com/gin-gonic/gin"
"joylink.club/bj-rtsts-server/config"
"joylink.club/bj-rtsts-server/db"
"joylink.club/bj-rtsts-server/logger"
)
func InitServer() *gin.Engine {
config.LoadConfig()
fmt.Println("数据源配置为:", config.Config.Datasource.Dsn)
err := logger.InitLogger()
if err != nil {
panic(err)
}
err = db.InitDb()
if err != nil {
panic(err)
}
dbquery.SetDefault(db.DB)
engine := gin.New()
conf := cors.DefaultConfig()
conf.AllowHeaders = []string{"*"}
conf.AllowAllOrigins = true
engine.Use(cors.New(conf))
engine.Use(ginzap.Ginzap(zap.L(), time.DateTime, false))
// gin panic 异常处理,默认处理为 engine.Use(ginzap.RecoveryWithZap(zap.L(), true))
engine.Use(ginzap.CustomRecoveryWithZap(zap.L(), true, func(c *gin.Context, e interface{}) {
switch e := e.(type) {
case error:
c.JSON(http.StatusInternalServerError, &dto.ErrorDto{
Code: dto.LogicError,
Tip: dto.ErrorTipMap[dto.LogicError],
Message: e.Error(),
})
case dto.ErrorDto:
e.Tip = dto.ErrorTipMap[e.Code]
c.JSON(http.StatusInternalServerError, e)
default:
c.JSON(http.StatusInternalServerError, e)
}
c.Writer.WriteHeaderNow()
c.Abort()
}))
return engine
}