Initial commit
This commit is contained in:
+111
@@ -0,0 +1,111 @@
|
||||
package router
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"net/http"
|
||||
"stat/common/enum/consts"
|
||||
"stat/middleware/auth"
|
||||
"stat/middleware/cors"
|
||||
"stat/statg"
|
||||
"strconv"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
|
||||
_ "stat/docs"
|
||||
|
||||
swaggerFiles "github.com/swaggo/files"
|
||||
ginSwagger "github.com/swaggo/gin-swagger"
|
||||
)
|
||||
|
||||
var (
|
||||
modMap = map[consts.RunMod]string{
|
||||
consts.RunModeDev: gin.DebugMode,
|
||||
consts.RunModeTest: gin.TestMode,
|
||||
consts.RunModRelease: gin.ReleaseMode,
|
||||
}
|
||||
)
|
||||
|
||||
var (
|
||||
apiNot = errors.New("ApiNotFound")
|
||||
methodNot = errors.New("MethodNotFound")
|
||||
)
|
||||
|
||||
// SetupGin 初始化gin router
|
||||
func SetupGin() *gin.Engine {
|
||||
ginMod()
|
||||
router := ginEngine()
|
||||
registerMiddleware(router)
|
||||
registerRouter(router)
|
||||
if statg.Conf.RunMod != consts.RunModRelease {
|
||||
setGinSwagger(router)
|
||||
}
|
||||
return router
|
||||
}
|
||||
|
||||
func ginMod() {
|
||||
mod := modMap[statg.Conf.RunMod]
|
||||
if mod == "" {
|
||||
mod = "debug"
|
||||
}
|
||||
gin.SetMode(mod)
|
||||
}
|
||||
|
||||
func ginEngine() *gin.Engine {
|
||||
router := gin.Default()
|
||||
router.HandleMethodNotAllowed = true
|
||||
router.MaxMultipartMemory = 60 << 20
|
||||
|
||||
//pprof.Register(router, "/1D35BBAB35F3/pprof")
|
||||
|
||||
router.Use(cors.Cors(&cors.Options{
|
||||
Origin: nil,
|
||||
Methods: []string{http.MethodGet, http.MethodPost, http.MethodPut, http.MethodHead, http.MethodDelete},
|
||||
AllowedHeaders: []string{"Content-Length", "Content-Type", "Authorization", "X-User-Agent", "User-Agent"},
|
||||
ExposedHeaders: []string{"Content-Disposition", "Refresh-Authorization", "Cur-Ver"},
|
||||
OptionsSuccessStatus: http.StatusOK,
|
||||
}))
|
||||
|
||||
router.NoMethod(func(c *gin.Context) {
|
||||
c.JSON(http.StatusMethodNotAllowed, methodNot)
|
||||
})
|
||||
|
||||
router.NoRoute(func(c *gin.Context) {
|
||||
c.JSON(http.StatusNotFound, apiNot)
|
||||
})
|
||||
|
||||
return router
|
||||
}
|
||||
|
||||
func registerMiddleware(router *gin.Engine) {
|
||||
// router.Use(limit.Limit())
|
||||
router.Use(auth.Auth)
|
||||
}
|
||||
|
||||
func registerRouter(router *gin.Engine) {
|
||||
rootRouter := router.Group("/api/stat")
|
||||
{
|
||||
adminRouter(rootRouter) // 管理员管理及登陆
|
||||
authorityRouter(rootRouter) // 角色权限管理
|
||||
appInfoRouter(rootRouter) // App及落地页管理
|
||||
channelRouter(rootRouter) // 渠道扣量结算等管理及统计
|
||||
agentRouter(rootRouter) // 代理管理及统计模块
|
||||
statRouter(rootRouter) // 数据统计
|
||||
fileRouter(rootRouter) // 文件上传
|
||||
opLogRouter(rootRouter) // 操作日志管理
|
||||
adsRouter(rootRouter) // 广告管理
|
||||
versionRouter(rootRouter) // 版本落地页
|
||||
announceRouter(rootRouter) // 公告管理
|
||||
activityRouter(rootRouter) // 活动抽奖
|
||||
statadvertiseRouter(rootRouter) // 广告统计
|
||||
innerRouter(rootRouter) // 服务器同步
|
||||
applicationRouter(rootRouter) // 配置app应用
|
||||
appcategoryRouter(rootRouter) // app分类
|
||||
userInviteRouter(rootRouter) // 兼容
|
||||
}
|
||||
}
|
||||
|
||||
func setGinSwagger(router *gin.Engine) {
|
||||
url := ginSwagger.URL(fmt.Sprintf("http://%s:%s/swagger/doc.json", statg.Conf.Host, strconv.Itoa(statg.Conf.Port)))
|
||||
router.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler, url))
|
||||
}
|
||||
Reference in New Issue
Block a user