1、go接入gin(完成)

2、go接入gorm(完成)
3、环境yaml配置(完成)
4、多库支持(完成)
5、接入日志(完成)
6、接入redis(完成)
7、自定义路由(完成)
8、接入jwt(完成)
This commit is contained in:
TianJun
2021-04-28 15:03:48 +08:00
parent 6b21987033
commit 1a8707eee6
21 changed files with 1400 additions and 0 deletions
+115
View File
@@ -0,0 +1,115 @@
package middleware
import (
"fmt"
"github.com/gin-gonic/gin"
"lingye-gin/src/config"
"lingye-gin/src/rest"
"strings"
)
type GinRouter struct {
}
func (v GinRouter) Init(r *gin.Engine) {
config.Logger.Info("GinRouter Init")
// 一般路由映射关系
groupMap := make(map[string]*gin.RouterGroup)
// api路由映射关系
apiUrls := make([]rest.RequestApi, 0)
// api组名称
apiGroupName := "api"
for _, normalRa := range rest.Urls {
// 判断是否在某一组下
if strings.Compare(normalRa.GroupName, "") == 0 {
// 批量处理
if handle(normalRa, r) {
continue
}
} else {
// 分组名称
groupName := fmt.Sprintf("/%s", normalRa.GroupName)
// api组, 基于jwt验证
if strings.Compare(normalRa.GroupName, apiGroupName) == 0 {
apiUrls = append(apiUrls, normalRa)
continue
}
// 分组不存在
if groupMap[normalRa.GroupName] == nil {
if normalRa.GroupHandleFunction == nil {
// 不存在分组过滤器
groupMap[normalRa.GroupName] = r.Group(groupName)
} else {
groupMap[normalRa.GroupName] = r.Group(groupName, normalRa.GroupHandleFunction)
}
}
// 批量处理
if handleGroup(normalRa, groupMap[normalRa.GroupName]) {
continue
}
}
}
for _, apiRa := range apiUrls {
jwtR := r.Group(apiGroupName)
jwtR.Use(config.JwtHandle)
// 批量处理
if handleGroup(apiRa, jwtR) {
continue
}
}
config.Logger.Info("GinRouter Ok")
}
func handle(request rest.RequestApi, engine *gin.Engine) bool {
// get
if strings.Compare(request.Mode, "get") == 0 {
engine.GET(request.RelativePath, request.HandleFunction)
return true
}
// post
if strings.Compare(request.Mode, "post") == 0 {
engine.POST(request.RelativePath, request.HandleFunction)
return true
}
// delete
if strings.Compare(request.Mode, "delete") == 0 {
engine.DELETE(request.RelativePath, request.HandleFunction)
return true
}
// put
if strings.Compare(request.Mode, "put") == 0 {
engine.PUT(request.RelativePath, request.HandleFunction)
return true
}
return false
}
func handleGroup(request rest.RequestApi, group *gin.RouterGroup) bool {
// get
if strings.Compare(request.Mode, "get") == 0 {
group.GET(request.RelativePath, request.HandleFunction)
return true
}
// post
if strings.Compare(request.Mode, "post") == 0 {
group.POST(request.RelativePath, request.HandleFunction)
return true
}
// delete
if strings.Compare(request.Mode, "delete") == 0 {
group.DELETE(request.RelativePath, request.HandleFunction)
return true
}
// put
if strings.Compare(request.Mode, "put") == 0 {
group.PUT(request.RelativePath, request.HandleFunction)
return true
}
return false
}