代码拉取完成,页面将自动刷新
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
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。