// 项目顶层路由注册模块
// 秒寻科技
// zt 2024-01-04

package router

import (
	"ipsomc/core/company/companyrouter"
	"ipsomc/core/dbtable/dbtablerouter"
	"ipsomc/core/user/userrouter"
	"ipsomc/core/wxminilogin/wxminiloginrouter"
	"ipsomc/module/bparam/bparamrouter"
	"ipsomc/module/project/projectrouter"
	"ipsomc/module/uploadfile/uploadfilerouter"

	"github.com/gin-gonic/gin"
)

// 配置路由
// runMode:gin框架运行模式
// sysWorkMode:系统工作模式，0：开发模式，1：生产模式
func SetRouter(runMode string, sysWorkMode uint32) *gin.Engine {
	var r *gin.Engine
	gin.SetMode(runMode) //设置运行模式

	//配置系统工作模式
	if sysWorkMode == 0 {
		r = gin.Default() //打开调试记录
	} else {
		r = gin.New()         // 使用gin.New()代替gin.Default()，不包含Logger中间件
		r.Use(gin.Recovery()) // 手动添加Recovery中间件（处理 panic）
	}

	/******************************以下是PC端业务模块路由注册*****************************/
	groupRouter := r.Group("/pcapi")
	//核心模块路由
	dbtablerouter.SetRouter(groupRouter) //创建数据库表
	companyrouter.SetRouter(groupRouter) //公司管理路由
	userrouter.SetRouter(groupRouter)    //用户管理路由

	//业务模块路由
	projectrouter.SetRouter(groupRouter)    //项目模块路由
	bparamrouter.SetRouter(groupRouter)     //基站参数路由
	uploadfilerouter.SetRouter(groupRouter) //文件上传模块路由

	/******************************以下是移动端业务模块路由注册***************************/
	mobileGroupRouter := r.Group("/msapi") //设置移动端路由分组
	wxminiloginrouter.SetRouter(mobileGroupRouter)
	bparamrouter.SetRouterMobile(mobileGroupRouter)

	return r
}
