package routers

import (
	"github.com/gin-gonic/gin"

	"tower_api/controller"
	"tower_api/middleware"
	"tower_api/pkg/app"
	"tower_api/pkg/errcode"
	"tower_api/pkg/setting"
)

var (
	orderController  = controller.NewOrderController()
	playerController = controller.NewPlayerController()
	noticeController = controller.NewNoticeController()
)

func NewRouter() *gin.Engine {
	r := gin.New()
	//增加跨域中间件
	r.Use(middleware.Cors())
	r.Use(middleware.Recovery())
	if setting.Settings.Server.RunMode == "debug" {
		r.Use(gin.Logger())
	}

	//404路由
	r.NoRoute(func(c *gin.Context) {
		app.Failed(c, errcode.RouteNotFound)
	})

	r.POST("pay/callback/:channel", orderController.CallBack) //订单回调
	limit := r.Use(middleware.LimitMiddleware())
	{
		limit.GET("login", playerController.Login)                       //登录接口
		limit.GET("notice", noticeController.NewestNotice)               //公告
		limit.GET("server/onopen", playerController.ServerOnOpen)        //打开小游戏时候请求
		limit.GET("server/list", playerController.ServerList)            //选服列表接口
		limit.GET("server/appoint", playerController.SetAppointedServer) //选择指定服
		limit.POST("blacklist/:flag", playerController.BlackList)        //操作黑名单相关
		limit.POST("h5sign/:flag", playerController.H5Sign)              //生成h5的签名
		limit.GET("new/openid", playerController.NewOpenId)              //检验openid是否是新的
	}
	return r
}
