提交
This commit is contained in:
223
modules/base/service/base_open.go
Normal file
223
modules/base/service/base_open.go
Normal file
@@ -0,0 +1,223 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
"github.com/cool-team-official/cool-admin-go/cool"
|
||||
"github.com/cool-team-official/cool-admin-go/modules/base/model"
|
||||
"github.com/gogf/gf/v2/encoding/gjson"
|
||||
"github.com/gogf/gf/v2/frame/g"
|
||||
"github.com/gogf/gf/v2/net/ghttp"
|
||||
"github.com/gogf/gf/v2/text/gstr"
|
||||
)
|
||||
|
||||
type BaseOpenService struct {
|
||||
*cool.Service
|
||||
}
|
||||
|
||||
func NewBaseOpenService() *BaseOpenService {
|
||||
return &BaseOpenService{
|
||||
&cool.Service{},
|
||||
}
|
||||
}
|
||||
|
||||
// AdminEPS 获取eps
|
||||
func (s *BaseOpenService) AdminEPS(ctx g.Ctx) (result *g.Var, err error) {
|
||||
c := cool.CacheEPS
|
||||
result, err = c.GetOrSetFunc(ctx, "adminEPS", func(ctx g.Ctx) (interface{}, error) {
|
||||
return s.creatAdminEPS(ctx)
|
||||
}, 0)
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// creatAdminEPS 创建eps
|
||||
func (s *BaseOpenService) creatAdminEPS(ctx g.Ctx) (adminEPS interface{}, err error) {
|
||||
var (
|
||||
baseEpsAdmin = model.NewBaseEpsAdmin()
|
||||
)
|
||||
|
||||
type Api struct {
|
||||
Module string `json:"module"` // 所属模块名称 例如:base
|
||||
Method string `json:"method"` // 请求方法 例如:GET
|
||||
Path string `json:"path"` // 请求路径 例如:/welcome
|
||||
Prefix string `json:"prefix"` // 路由前缀 例如:/admin/base/open
|
||||
Summary string `json:"summary"` // 描述 例如:欢迎页面
|
||||
Tag string `json:"tag"` // 标签 例如:base 好像暂时不用
|
||||
Dts string `json:"dts"` // 未知 例如:{} 好像暂时不用
|
||||
}
|
||||
// type Column struct {
|
||||
// }
|
||||
type Module struct {
|
||||
Api []*Api `json:"api"`
|
||||
Columns []*cool.ColumnInfo `json:"columns"`
|
||||
Module string `json:"module"`
|
||||
Prefix string `json:"prefix"`
|
||||
}
|
||||
admineps := make(map[string][]*Module)
|
||||
// 获取所有路由并更新到数据库表 base_eps_admin
|
||||
cool.DBM(baseEpsAdmin).Where("1=1").Delete()
|
||||
routers := g.Server().GetRoutes()
|
||||
for _, router := range routers {
|
||||
if router.Type == ghttp.HandlerTypeMiddleware || router.Type == ghttp.HandlerTypeHook {
|
||||
continue
|
||||
}
|
||||
if router.Method == "ALL" {
|
||||
continue
|
||||
}
|
||||
routeSplite := gstr.Split(router.Route, "/")
|
||||
if len(routeSplite) < 5 {
|
||||
continue
|
||||
}
|
||||
if routeSplite[1] != "admin" {
|
||||
continue
|
||||
}
|
||||
module := routeSplite[2]
|
||||
method := router.Method
|
||||
// 获取最后一个元素加前缀 / 为 path
|
||||
path := "/" + routeSplite[len(routeSplite)-1]
|
||||
// 获取前面的元素为prefix
|
||||
prefix := gstr.Join(routeSplite[0:len(routeSplite)-1], "/")
|
||||
// 获取最后一个元素为summary
|
||||
summary := routeSplite[len(routeSplite)-1]
|
||||
cool.DBM(baseEpsAdmin).Insert(&Api{
|
||||
Module: module,
|
||||
Method: method,
|
||||
Path: path,
|
||||
Prefix: prefix,
|
||||
Summary: summary,
|
||||
Tag: "",
|
||||
Dts: "",
|
||||
})
|
||||
}
|
||||
// 读取数据库表生成eps
|
||||
// var modules []*Module
|
||||
items, _ := cool.DBM(baseEpsAdmin).Fields("DISTINCT module,prefix").All()
|
||||
for _, item := range items {
|
||||
module := item["module"].String()
|
||||
prefix := item["prefix"].String()
|
||||
apis, _ := cool.DBM(baseEpsAdmin).Where("module=? AND prefix=?", module, prefix).All()
|
||||
var apiList []*Api
|
||||
for _, api := range apis {
|
||||
apiList = append(apiList, &Api{
|
||||
Module: api["module"].String(),
|
||||
Method: api["method"].String(),
|
||||
Path: api["path"].String(),
|
||||
Prefix: api["prefix"].String(),
|
||||
Summary: api["summary"].String(),
|
||||
Tag: api["tag"].String(),
|
||||
Dts: api["dts"].String(),
|
||||
})
|
||||
}
|
||||
admineps[module] = append(admineps[module], &Module{
|
||||
Api: apiList,
|
||||
Columns: cool.ModelInfo[prefix],
|
||||
Module: module,
|
||||
Prefix: prefix,
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
adminEPS = gjson.New(admineps)
|
||||
return
|
||||
|
||||
}
|
||||
|
||||
// AdminEPS 获取eps
|
||||
func (s *BaseOpenService) AppEPS(ctx g.Ctx) (result *g.Var, err error) {
|
||||
c := cool.CacheEPS
|
||||
result, err = c.GetOrSetFunc(ctx, "appEPS", func(ctx g.Ctx) (interface{}, error) {
|
||||
return s.creatAppEPS(ctx)
|
||||
}, 0)
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// creatAppEPS 创建app eps
|
||||
func (s *BaseOpenService) creatAppEPS(ctx g.Ctx) (appEPS interface{}, err error) {
|
||||
var (
|
||||
baseEpsApp = model.NewBaseEpsApp()
|
||||
)
|
||||
|
||||
type Api struct {
|
||||
Module string `json:"module"` // 所属模块名称 例如:base
|
||||
Method string `json:"method"` // 请求方法 例如:GET
|
||||
Path string `json:"path"` // 请求路径 例如:/welcome
|
||||
Prefix string `json:"prefix"` // 路由前缀 例如:/admin/base/open
|
||||
Summary string `json:"summary"` // 描述 例如:欢迎页面
|
||||
Tag string `json:"tag"` // 标签 例如:base 好像暂时不用
|
||||
Dts string `json:"dts"` // 未知 例如:{} 好像暂时不用
|
||||
}
|
||||
// type Column struct {
|
||||
// }
|
||||
type Module struct {
|
||||
Api []*Api `json:"api"`
|
||||
Columns []*cool.ColumnInfo `json:"columns"`
|
||||
Module string `json:"module"`
|
||||
Prefix string `json:"prefix"`
|
||||
}
|
||||
appeps := make(map[string][]*Module)
|
||||
// 获取所有路由并更新到数据库表 base_eps_admin
|
||||
cool.DBM(baseEpsApp).Where("1=1").Delete()
|
||||
routers := g.Server().GetRoutes()
|
||||
for _, router := range routers {
|
||||
if router.Type == ghttp.HandlerTypeMiddleware || router.Type == ghttp.HandlerTypeHook {
|
||||
continue
|
||||
}
|
||||
if router.Method == "ALL" {
|
||||
continue
|
||||
}
|
||||
routeSplite := gstr.Split(router.Route, "/")
|
||||
if len(routeSplite) < 5 {
|
||||
continue
|
||||
}
|
||||
if routeSplite[1] != "app" {
|
||||
continue
|
||||
}
|
||||
module := routeSplite[2]
|
||||
method := router.Method
|
||||
// 获取最后一个元素加前缀 / 为 path
|
||||
path := "/" + routeSplite[len(routeSplite)-1]
|
||||
// 获取前面的元素为prefix
|
||||
prefix := gstr.Join(routeSplite[0:len(routeSplite)-1], "/")
|
||||
// 获取最后一个元素为summary
|
||||
summary := routeSplite[len(routeSplite)-1]
|
||||
cool.DBM(baseEpsApp).Insert(&Api{
|
||||
Module: module,
|
||||
Method: method,
|
||||
Path: path,
|
||||
Prefix: prefix,
|
||||
Summary: summary,
|
||||
Tag: "",
|
||||
Dts: "",
|
||||
})
|
||||
}
|
||||
// 读取数据库表生成eps
|
||||
// var modules []*Module
|
||||
items, _ := cool.DBM(baseEpsApp).Fields("DISTINCT module,prefix").All()
|
||||
for _, item := range items {
|
||||
module := item["module"].String()
|
||||
prefix := item["prefix"].String()
|
||||
apis, _ := cool.DBM(baseEpsApp).Where("module=? AND prefix=?", module, prefix).All()
|
||||
var apiList []*Api
|
||||
for _, api := range apis {
|
||||
apiList = append(apiList, &Api{
|
||||
Module: api["module"].String(),
|
||||
Method: api["method"].String(),
|
||||
Path: api["path"].String(),
|
||||
Prefix: api["prefix"].String(),
|
||||
Summary: api["summary"].String(),
|
||||
Tag: api["tag"].String(),
|
||||
Dts: api["dts"].String(),
|
||||
})
|
||||
}
|
||||
appeps[module] = append(appeps[module], &Module{
|
||||
Api: apiList,
|
||||
Columns: cool.ModelInfo[prefix],
|
||||
Module: module,
|
||||
Prefix: prefix,
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
appEPS = gjson.New(appeps)
|
||||
return
|
||||
}
|
||||
Reference in New Issue
Block a user