sys_api.go 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. package model
  2. import (
  3. "gin-vue-admin/global"
  4. "github.com/jinzhu/gorm"
  5. "github.com/pkg/errors"
  6. )
  7. type SysApi struct {
  8. gorm.Model
  9. Path string `json:"path"`
  10. Description string `json:"description"`
  11. ApiGroup string `json:"apiGroup"`
  12. Method string `json:"method" gorm:"default:'POST'"`
  13. }
  14. type CreateApiParams struct {
  15. Path string `json:"path"`
  16. Description string `json:"description"`
  17. }
  18. type DeleteApiParams struct {
  19. ID uint `json:"id"`
  20. }
  21. // @title CreateApi
  22. // @description create base apis, 新增基础api
  23. // @auth (2020/04/05 20:22 )
  24. // @param FileMd5 string
  25. // @param FileName string
  26. // @param FilePath string
  27. // @return error
  28. func (a *SysApi) CreateApi() (err error) {
  29. findOne := global.GVA_DB.Where("path = ?", a.Path).Find(&SysApi{}).Error
  30. if findOne == nil {
  31. return errors.New("存在相同api")
  32. } else {
  33. err = global.GVA_DB.Create(a).Error
  34. }
  35. return err
  36. }
  37. // @title DeleteApi
  38. // @description delete base apis, 删除基础api
  39. // @auth (2020/04/05 20:22 )
  40. // @param FileMd5 string
  41. // @param FileName string
  42. // @param FilePath string
  43. // @return error
  44. func (a *SysApi) DeleteApi() (err error) {
  45. err = global.GVA_DB.Delete(a).Error
  46. new(CasbinModel).ClearCasbin(1, a.Path)
  47. return err
  48. }
  49. // @title UpdateApi
  50. // @description update a base api, update api
  51. // @auth (2020/04/05 20:22 )
  52. // @param FileMd5 string
  53. // @param FileName string
  54. // @param FilePath string
  55. // @return error
  56. func (a *SysApi) UpdateApi() (err error) {
  57. var oldA SysApi
  58. flag := global.GVA_DB.Where("path = ?", a.Path).Find(&SysApi{}).RecordNotFound()
  59. if !flag {
  60. return errors.New("存在相同api路径")
  61. }
  62. err = global.GVA_DB.Where("id = ?", a.ID).First(&oldA).Error
  63. if err != nil {
  64. return err
  65. } else {
  66. err = new(CasbinModel).UpdateCasbinApi(oldA.Path, a.Path)
  67. if err != nil {
  68. return err
  69. } else {
  70. err = global.GVA_DB.Save(a).Error
  71. }
  72. }
  73. return err
  74. }
  75. // @title GetApiById
  76. // @description get the apis of the selected user, 获取选中角色所拥有的api
  77. // @auth (2020/04/05 20:22 )
  78. // @param FileMd5 string
  79. // @param FileName string
  80. // @param FilePath string
  81. // @return error
  82. func (a *SysApi) GetApiById(id float64) (err error, api SysApi) {
  83. err = global.GVA_DB.Where("id = ?", id).First(&api).Error
  84. return
  85. }
  86. // @title GetAllApis
  87. // @description get all apis, 获取所有的api
  88. // @auth (2020/04/05 20:22 )
  89. // @param FileMd5 string
  90. // @param FileName string
  91. // @param FilePath string
  92. // @return error
  93. func (a *SysApi) GetAllApis() (err error, apis []SysApi) {
  94. err = global.GVA_DB.Find(&apis).Error
  95. return
  96. }
  97. // @title GetInfoList
  98. // @description get apis by pagination, 分页获取数据
  99. // @auth (2020/04/05 20:22 )
  100. // @param FileMd5 string
  101. // @param FileName string
  102. // @param FilePath string
  103. // @return error
  104. func (a *SysApi) GetInfoList(info PageInfo) (err error, list interface{}, total int) {
  105. limit := info.PageSize
  106. offset := info.PageSize * (info.Page - 1)
  107. db := global.GVA_DB
  108. if err != nil {
  109. return
  110. } else {
  111. var apiList []SysApi
  112. if a.Path != "" {
  113. db = db.Where("path LIKE ?", "%"+a.Path+"%")
  114. }
  115. if a.Description != "" {
  116. db = db.Where("description LIKE ?", "%"+a.Description+"%")
  117. }
  118. if a.Method != "" {
  119. db = db.Where("method = ?", a.Method)
  120. }
  121. err = db.Find(&apiList).Count(&total).Error
  122. if err != nil {
  123. return err, apiList, total
  124. } else {
  125. err = db.Limit(limit).Offset(offset).Order("api_group", true).Find(&apiList).Error
  126. }
  127. return err, apiList, total
  128. }
  129. }