zhangqian
2023-08-26 5193dcb9336e853502baf8a539d3f45efebe2f86
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
package initialize
 
import (
    "net/http"
    "srm/router/purchase"
 
    "github.com/gin-gonic/gin"
    ginSwagger "github.com/swaggo/gin-swagger"
    "github.com/swaggo/gin-swagger/swaggerFiles"
    "srm/docs"
    "srm/global"
    "srm/router"
)
 
// 初始化总路由
 
func Routers() *gin.Engine {
    Router := gin.Default()
    InstallPlugin(Router) // 安装插件
    systemRouter := router.RouterGroupApp.System
    exampleRouter := router.RouterGroupApp.Example
    // 如果想要不使用nginx代理前端网页,可以修改 web/.env.production 下的
    // VUE_APP_BASE_API = /
    // VUE_APP_BASE_PATH = http://localhost
    // 然后执行打包命令 npm run build。在打开下面3行注释
    // Router.Static("/favicon.ico", "./dist/favicon.ico")
    // Router.Static("/assets", "./dist/assets")   // dist里面的静态资源
    // Router.StaticFile("/", "./dist/index.html") // 前端网页入口页面
 
    Router.StaticFS(global.GVA_CONFIG.Local.StorePath, http.Dir(global.GVA_CONFIG.Local.StorePath)) // 为用户头像和文件提供静态地址
    // Router.Use(middleware.LoadTls())  // 如果需要使用https 请打开此中间件 然后前往 core/server.go 将启动模式 更变为 Router.RunTLS("端口","你的cre/pem文件","你的key文件")
    // 跨域,如需跨域可以打开下面的注释
    // Router.Use(middleware.Cors()) // 直接放行全部跨域请求
    // Router.Use(middleware.CorsByRules()) // 按照配置的规则放行跨域请求
    //global.GVA_LOG.Info("use middleware cors")
    docs.SwaggerInfo.BasePath = global.GVA_CONFIG.System.RouterPrefix
    Router.GET(global.GVA_CONFIG.System.RouterPrefix+"/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
    global.GVA_LOG.Info("register swagger handler")
    // 方便统一添加路由组前缀 多服务器上线使用
 
    PublicGroup := Router.Group(global.GVA_CONFIG.System.RouterPrefix)
    {
        // 健康监测
        PublicGroup.GET("/health", func(c *gin.Context) {
            c.JSON(http.StatusOK, "ok")
        })
    }
    {
        systemRouter.InitBaseRouter(PublicGroup) // 注册基础功能路由 不做鉴权
        systemRouter.InitInitRouter(PublicGroup) // 自动初始化相关
    }
    PrivateGroup := Router.Group(global.GVA_CONFIG.System.RouterPrefix)
    //PrivateGroup.Use(middleware.JWTAuth()).Use(middleware.CasbinHandler())
    //PrivateGroup.Use(middleware.CasbinHandler())
    {
        systemRouter.InitApiRouter(PrivateGroup, PublicGroup)    // 注册功能api路由
        systemRouter.InitJwtRouter(PrivateGroup)                 // jwt相关路由
        systemRouter.InitUserRouter(PrivateGroup)                // 注册用户路由
        systemRouter.InitMenuRouter(PrivateGroup)                // 注册menu路由
        systemRouter.InitSystemRouter(PrivateGroup)              // system相关路由
        systemRouter.InitCasbinRouter(PrivateGroup)              // 权限相关路由
        systemRouter.InitAutoCodeRouter(PrivateGroup)            // 创建自动化代码
        systemRouter.InitAuthorityRouter(PrivateGroup)           // 注册角色路由
        systemRouter.InitSysDictionaryRouter(PrivateGroup)       // 字典管理
        systemRouter.InitAutoCodeHistoryRouter(PrivateGroup)     // 自动化代码历史
        systemRouter.InitSysOperationRecordRouter(PrivateGroup)  // 操作记录
        systemRouter.InitSysDictionaryDetailRouter(PrivateGroup) // 字典详情管理
        systemRouter.InitAuthorityBtnRouterRouter(PrivateGroup)  // 字典详情管理
        systemRouter.InitChatGptRouter(PrivateGroup)             // chatGpt接口
 
        exampleRouter.InitCustomerRouter(PrivateGroup)              // 客户路由
        exampleRouter.InitFileUploadAndDownloadRouter(PrivateGroup) // 文件上传下载功能路由
 
        purchase.InitPurchaseRouter(PrivateGroup) //采购单路由
 
    }
    {
        testRouter := router.RouterGroupApp.Test
        testRouter.InitIndustryRouter(PrivateGroup)
        testRouter.InitSupplierTypeRouter(PrivateGroup)
        testRouter.InitSupplierRouter(PrivateGroup)
        testRouter.InitContractRouter(PrivateGroup)
        testRouter.InitProductRouter(PrivateGroup)
    }
 
    global.GVA_LOG.Info("router register success")
    return Router
}