Ai
2 Star 1 Fork 2

go-mao/mao

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
router.go 2.66 KB
一键复制 编辑 原始数据 按行查看 历史
haitgo 提交于 2023-02-23 18:07 +08:00 . 保存
package frame
import (
"github.com/gin-gonic/gin"
)
type HandlerFunc = func(*Webline)
type WebEngine struct {
RouterGroup
}
func (this *WebEngine) Engine() *gin.Engine {
return this.eg
}
type RouterGroup struct {
server *Server
eg *gin.Engine
grp *gin.RouterGroup
}
func (this *RouterGroup) route() gin.IRoutes {
if this.grp != nil {
return this.grp
}
return this.eg
}
// GET请求
func (this *RouterGroup) GET(relativePath string, handlers ...HandlerFunc) *Router {
r := &Router{server: this.server}
this.route().GET(relativePath, r.wareFunc(handlers)...)
return r
}
func (this *RouterGroup) POST(relativePath string, handlers ...HandlerFunc) *Router {
r := &Router{server: this.server}
this.route().POST(relativePath, r.wareFunc(handlers)...)
return r
}
func (this *RouterGroup) PUT(relativePath string, handlers ...HandlerFunc) *Router {
r := &Router{server: this.server}
this.route().PUT(relativePath, r.wareFunc(handlers)...)
return r
}
func (this *RouterGroup) DELETE(relativePath string, handlers ...HandlerFunc) *Router {
r := &Router{server: this.server}
this.route().DELETE(relativePath, r.wareFunc(handlers)...)
return r
}
func (this *RouterGroup) Any(relativePath string, handlers ...HandlerFunc) *Router {
r := &Router{server: this.server}
this.route().Any(relativePath, r.wareFunc(handlers)...)
return r
}
func (this *RouterGroup) Group(relativePath string, handlers ...HandlerFunc) *RouterGroup {
r := &Router{server: this.server}
var grp *gin.RouterGroup
if this.grp != nil {
grp = this.grp.Group(relativePath, r.wareFunc(handlers)...)
} else {
grp = this.eg.Group(relativePath, r.wareFunc(handlers)...)
}
return &RouterGroup{grp: grp, server: this.server}
}
// 权限配置使用
func (this *RouterGroup) Permission(code string, name string) *RouterGroup {
this.server.permission.add(code, name)
return this
}
func (this *RouterGroup) Use(middleware ...HandlerFunc) {
r := &Router{server: this.server}
this.route().Use(r.wareFunc(middleware)...)
}
type Router struct {
server *Server
handlers []HandlerFunc
permissionCode string
permissionName string
}
// 权限配置使用
func (this *Router) Permission(code string, name string) {
this.permissionCode = code
this.permissionName = name
this.server.permission.add(code, name)
}
func (this *Router) wareFunc(handlers []HandlerFunc) []gin.HandlerFunc {
fns := make([]gin.HandlerFunc, 0)
for _, handler := range handlers {
fns = append(fns, func(c *gin.Context) {
webline := newWebline(c, this.server)
if this.permissionCode != "" {
this.server.app.CheckPermission(webline, this.permissionCode, this.permissionName)
}
handler(webline)
})
}
return fns
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/go-mao/mao.git
git@gitee.com:go-mao/mao.git
go-mao
mao
mao
v1.0.9

搜索帮助