package init_serve

import (
	"github.com/gin-gonic/gin"
	"github.com/swaggo/files"
	"github.com/swaggo/gin-swagger"
	_ "hongze/hongze_yb/docs"
	"hongze/hongze_yb/global"
	"hongze/hongze_yb/middleware"
	"hongze/hongze_yb/routers"
	"net/http"
)

// InitRouter 初始化路由
func InitRouter() (r *gin.Engine) {
	//设置
	gin.SetMode(global.CONFIG.Serve.RunMode)
	// 1.创建路由
	r = gin.Default()
	r.Use(middleware.Cors())
	//r.Use(gin.Recovery())
	r.Use(middleware.Recover())

	// 公共的中间件
	common := middleware.Common{}
	r.Use(common.RequestLog)
	r.Use(common.Page)

	//swagger界面访问地址
	r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))

	// 2.绑定路由规则，执行的函数
	// gin.Context，封装了request和response
	r.GET("/ping", func(c *gin.Context) {
		c.JSON(200, gin.H{
			"message": "pong",
		})
	})
	routers.InitTest(r)
	// 微信相关路由
	routers.InitWechat(r)
	// 活动相关路由
	routers.InitActivity(r)
	// 用户接口
	routers.InitUser(r)
	// 公共接口
	routers.InitPublic(r)
	// 报告接口
	routers.InitResearchReport(r)
	// 图库相关路由
	routers.InitChart(r)
	// 客户相关路由
	routers.InitCompany(r)
	// 已购页面相关路由
	routers.InitPurchase(r)
	// 研报相关路由
	routers.InitReport(r)
	// 问答社区相关路由
	routers.InitCommunity(r)
	// 设置静态文件夹件路径
	r.StaticFS("/static", http.Dir("./static"))
	//pc相关路由
	routers.InitPc(r)
	// 研报点赞相关路由
	routers.InitLike(r)
	// 研报留言相关路由
	routers.InitComment(r)
	// 研报消息相关路由
	routers.InitMessage(r)
	// 价格驱动相关路由
	routers.InitPriceDriven(r)
	//沙盘逻辑推演路由
	routers.InitSandbox(r)
	//语音播报
	routers.InitVoiceBroadcast(r)
	//线上路演
	routers.InitRoad(r)
	// 收藏路由
	routers.InitCollection(r)
	// 弹幕路由
	routers.InitBulletChat(r)
	// 我的图表
	routers.InitMyChart(r)
	// 持仓分析
	routers.InitTradeAnalysis(r)
	// 外汇日历
	routers.InitFeCalendar(r)
	// 指标信息
	routers.InitEdbInfo(r)
	// 基本配置信息
	routers.InitBaseConfig(r)
	return
}
