mirror of
https://github.com/go-admin-team/go-admin.git
synced 2026-09-21 10:13:01 +00:00
The pinned core dated from April, before sdk stopped being a separate module, so the build resolved sdk packages from the old module and core packages from the new one. Dropping the separate requirement is what makes the two agree again. Most of the diff is renames that came with that: the tenant accessors gained a ByTenant suffix, GetDb now returns one database and GetAllDb the map, and casbin moved to v3. The change that matters is four call sites moving from GetMemoryQueue to GetQueuePrefix. GetMemoryQueue returns a queue fixed at construction, so the login log, the operate log and the api check ran in process no matter what the settings file selected — a second instance saw none of it. GetQueuePrefix returns whatever the configuration built, which is the point of being able to configure a queue at all. Verified against core at main: build and vet clean. The two file_store failures are unchanged from before this branch; they need cloud credentials.
92 lines
2.7 KiB
Go
92 lines
2.7 KiB
Go
package models
|
|
|
|
import (
|
|
"bytes"
|
|
"encoding/json"
|
|
"fmt"
|
|
"io/ioutil"
|
|
"regexp"
|
|
"strings"
|
|
|
|
"github.com/bitly/go-simplejson"
|
|
"github.com/go-admin-team/go-admin-core/sdk"
|
|
"github.com/go-admin-team/go-admin-core/sdk/runtime"
|
|
"github.com/go-admin-team/go-admin-core/storage"
|
|
|
|
"go-admin/common/models"
|
|
)
|
|
|
|
type SysApi struct {
|
|
Id int `json:"id" gorm:"primaryKey;autoIncrement;comment:主键编码"`
|
|
Handle string `json:"handle" gorm:"size:128;comment:handle"`
|
|
Title string `json:"title" gorm:"size:128;comment:标题"`
|
|
Path string `json:"path" gorm:"size:128;comment:地址"`
|
|
Action string `json:"action" gorm:"size:16;comment:请求类型"`
|
|
Type string `json:"type" gorm:"size:16;comment:接口类型"`
|
|
models.ModelTime
|
|
models.ControlBy
|
|
}
|
|
|
|
func (*SysApi) TableName() string {
|
|
return "sys_api"
|
|
}
|
|
|
|
func (e *SysApi) Generate() models.ActiveRecord {
|
|
o := *e
|
|
return &o
|
|
}
|
|
|
|
func (e *SysApi) GetId() interface{} {
|
|
return e.Id
|
|
}
|
|
|
|
func SaveSysApi(message storage.Messager) (err error) {
|
|
var rb []byte
|
|
rb, err = json.Marshal(message.GetValues())
|
|
if err != nil {
|
|
err = fmt.Errorf("json Marshal error, %v", err.Error())
|
|
return err
|
|
}
|
|
|
|
var l runtime.Routers
|
|
err = json.Unmarshal(rb, &l)
|
|
if err != nil {
|
|
err = fmt.Errorf("json Unmarshal error, %s", err.Error())
|
|
return err
|
|
}
|
|
dbList := sdk.Runtime.GetAllDb()
|
|
for _, d := range dbList {
|
|
for _, v := range l.List {
|
|
if v.HttpMethod != "HEAD" ||
|
|
strings.Contains(v.RelativePath, "/swagger/") ||
|
|
strings.Contains(v.RelativePath, "/static/") ||
|
|
strings.Contains(v.RelativePath, "/form-generator/") ||
|
|
strings.Contains(v.RelativePath, "/sys/tables") {
|
|
|
|
// 根据接口方法注释里的@Summary填充接口名称,适用于代码生成器
|
|
// 可在此处增加配置路径前缀的if判断,只对代码生成的自建应用进行定向的接口名称填充
|
|
jsonFile, _ := ioutil.ReadFile("docs/swagger.json")
|
|
jsonData, _ := simplejson.NewFromReader(bytes.NewReader(jsonFile))
|
|
urlPath := v.RelativePath
|
|
idPatten := "(.*)/:(\\w+)" // 正则替换,把:id换成{id}
|
|
reg, _ := regexp.Compile(idPatten)
|
|
if reg.MatchString(urlPath) {
|
|
urlPath = reg.ReplaceAllString(v.RelativePath, "${1}/{${2}}") // 把:id换成{id}
|
|
}
|
|
apiTitle, _ := jsonData.Get("paths").Get(urlPath).Get(strings.ToLower(v.HttpMethod)).Get("summary").String()
|
|
|
|
err := d.Debug().Where(SysApi{Path: v.RelativePath, Action: v.HttpMethod}).
|
|
Attrs(SysApi{Handle: v.Handler, Title: apiTitle}).
|
|
FirstOrCreate(&SysApi{}).
|
|
//Update("handle", v.Handler).
|
|
Error
|
|
if err != nil {
|
|
err := fmt.Errorf("Models SaveSysApi error: %s \r\n ", err.Error())
|
|
return err
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return nil
|
|
}
|