Files
2022-03-17 15:59:24 +08:00

126 lines
3.2 KiB
Go

package http
import (
"github.com/gin-gonic/gin"
"github.com/inconshreveable/log15"
swaggerFiles "github.com/swaggo/files"
ginSwagger "github.com/swaggo/gin-swagger"
"gitlab.33.cn/chat/dtalk/pkg/api"
"gitlab.33.cn/chat/dtalk/service/backend/config"
_ "gitlab.33.cn/chat/dtalk/service/backend/docs"
"gitlab.33.cn/chat/dtalk/service/backend/midware"
"gitlab.33.cn/chat/dtalk/service/backend/service"
"net/http"
)
var (
svc *service.Service
log = log15.New("module", "backend/http")
)
func Init(s *service.Service) *http.Server {
addr := s.Config().Server.Addr
if s.Config().Env != "debug" {
gin.SetMode(gin.ReleaseMode)
}
engine := Default()
InitService(s)
SetupEngine(engine)
if s.Config().CdkMod {
setCdkRoute(engine)
}
srv := &http.Server{
Addr: addr,
Handler: engine,
}
go func() {
// service connections
if err := srv.ListenAndServe(); err != nil && err != http.ErrServerClosed {
log.Error("engineInner.Start() error(%v)", err)
panic(err)
}
}()
return srv
}
// Default returns an Engine instance with the Logger and Recovery middleware already attached.
func Default() *gin.Engine {
router := gin.New()
// LoggerWithFormatter middleware will write the logs to gin.DefaultWriter
// By default gin.DefaultWriter = os.Stdout
router.Use(gin.LoggerWithFormatter(api.Chat33GinLogFormatter))
router.Use(gin.Recovery())
return router
}
func InitService(s *service.Service) {
svc = s
}
func SetupEngine(e *gin.Engine) *gin.Engine {
{
app := e.Group("/app", api.RespMiddleWare())
version := app.Group("/version")
//获取服务器列表
version.Use(api.HeaderMiddleWare())
{
version.POST("/check", CheckAndUpdateVersion)
}
}
{
backend := e.Group("/backend", api.RespMiddleWare())
token := backend.Group("/user")
{
token.POST("/login", GetToken)
}
version := backend.Group("/version")
version.Use(midware.JWTAuthMiddleWare(config.Conf.Debug.Flag, config.Conf.Release.Key))
{
version.POST("/create", CreateVersion)
version.PUT("/update", UpdateVersion)
version.PUT("/change-status", ChangeVersionStatus)
version.GET("/list", GetVersionList)
}
}
// swagger 文档接口
e.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
return e
}
func setCdkRoute(e *gin.Engine) *gin.Engine {
{
app := e.Group("/app", api.RespMiddleWare())
// cdk app
appCkd := app.Group("/cdk")
appCkd.Use(api.AuthMiddleWare())
{
appCkd.POST("get-cdks-by-user-id", GetCdksByUserIdHandler)
appCkd.POST("get-cdk-type-by-coin-name", GetCdkTypeByCoinNameHandler)
appCkd.POST("create-cdk-order", CreateCdkOrderHandler)
appCkd.POST("deal-cdk-order", DealCdkOrderHandler)
}
}
{
backend := e.Group("/backend", api.RespMiddleWare())
// cdk backend
bakCdk := backend.Group("/cdk")
bakCdk.POST("get-cdk-types", GetCdkTypesHandler)
bakCdk.POST("get-cdks", GetCdksHandler)
bakCdk.Use(midware.JWTAuthMiddleWare(config.Conf.Debug.Flag, config.Conf.Release.Key))
{
bakCdk.POST("create-cdk-type", CreateCdkTypeHandler)
bakCdk.POST("create-cdks", CreateCdksHandler)
bakCdk.POST("delete-cdks", DeleteCdksHandler)
bakCdk.POST("delete-cdk-types", DeleteCdkTypesHandler)
bakCdk.POST("update-cdk-type", UpdateCdkTypeHandler)
bakCdk.POST("exchange-cdks", ExchangeCdksHandler)
}
}
return e
}