| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- package models
- import (
- "IotAdmin/common/models"
- "IotAdmin/core/logger"
- "bytes"
- "encoding/json"
- "fmt"
- "os"
- "regexp"
- "strings"
- "IotAdmin/core/sdk"
- "IotAdmin/core/sdk/runtime"
- "IotAdmin/core/storage"
- "github.com/bitly/go-simplejson"
- )
- 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.ControlBy
- models.ModelTime
- }
- 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.Message) (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.GetDb()
- // 根据接口方法注释里的@Summary填充接口名称,适用于代码生成器
- // 可在此处增加配置路径前缀的if判断,只对代码生成的自建应用进行定向的接口名称填充
- jsonFile, _ := os.ReadFile("docs/admin/admin_swagger.json")
- jsonData, _ := simplejson.NewFromReader(bytes.NewReader(jsonFile))
- 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") {
- urlPath := v.RelativePath
- idPatten := "(.*)/:(\\w+)" // 正则替换,把:id换成{id}
- reg, _ := regexp.Compile(idPatten)
- if reg.MatchString(urlPath) {
- urlPath = reg.ReplaceAllString(v.RelativePath, "${1}/{${2}}") // 把:id换成{id}
- }
- temp := jsonData.Get("paths").Get(urlPath).Get(strings.ToLower(v.HttpMethod))
- apiTitle, _ := temp.Get("summary").String()
- if apiTitle == "" {
- logger.Debugf("ApiTitle is empty, urlPath: %s ", urlPath)
- continue
- }
- api := &SysApi{}
- err := d.Debug().Where(SysApi{Path: v.RelativePath, Action: v.HttpMethod}).
- Assign(SysApi{Handle: v.Handler}).
- FirstOrCreate(api).
- Error
- if err == nil && api.Title == "" {
- api.Title = apiTitle
- err = d.Debug().Model(api).Updates(api).Error
- }
- if err != nil {
- err := fmt.Errorf("Models SaveSysApi error: %s \r\n ", err.Error())
- return err
- }
- }
- }
- }
- return nil
- }
|