sys_api.go 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. package sysModel
  2. import (
  3. "gin-vue-admin/controller/servers"
  4. "gin-vue-admin/init/qmsql"
  5. "gin-vue-admin/model/modelInterface"
  6. "github.com/jinzhu/gorm"
  7. "github.com/pkg/errors"
  8. )
  9. type SysApi struct {
  10. gorm.Model
  11. Path string `json:"path"`
  12. Description string `json:"description"`
  13. Group string `json:"group"`
  14. Method string `json:"method" gorm:"default:'POST'"`
  15. }
  16. func (a *SysApi) CreateApi() (err error) {
  17. findOne := qmsql.DEFAULTDB.Where("path = ?", a.Path).Find(&SysMenu{}).Error
  18. if findOne == nil {
  19. return errors.New("存在相同api")
  20. } else {
  21. err = qmsql.DEFAULTDB.Create(a).Error
  22. }
  23. return err
  24. }
  25. func (a *SysApi) DeleteApi() (err error) {
  26. err = qmsql.DEFAULTDB.Delete(a).Error
  27. new(CasbinModel).clearCasbin(1, a.Path)
  28. return err
  29. }
  30. func (a *SysApi) UpdataApi() (err error) {
  31. var oldA SysApi
  32. err = qmsql.DEFAULTDB.Where("id = ?", a.ID).First(&oldA).Error
  33. if err != nil {
  34. return err
  35. } else {
  36. err = new(CasbinModel).CasbinApiUpdata(oldA.Path, a.Path)
  37. if err != nil {
  38. return err
  39. } else {
  40. err = qmsql.DEFAULTDB.Save(a).Error
  41. }
  42. }
  43. return err
  44. }
  45. func (a *SysApi) GetApiById(id float64) (err error, api SysApi) {
  46. err = qmsql.DEFAULTDB.Where("id = ?", id).First(&api).Error
  47. return
  48. }
  49. // 获取所有api信息
  50. func (a *SysApi) GetAllApis() (err error, apis []SysApi) {
  51. err = qmsql.DEFAULTDB.Find(&apis).Error
  52. return
  53. }
  54. // 分页获取数据 需要分页实现这个接口即可
  55. func (a *SysApi) GetInfoList(info modelInterface.PageInfo) (err error, list interface{}, total int) {
  56. // 封装分页方法 调用即可 传入 当前的结构体和分页信息
  57. err, db, total := servers.PagingServer(a, info)
  58. if err != nil {
  59. return
  60. } else {
  61. var apiList []SysApi
  62. err = db.Order("group", true).Where("path LIKE ?", "%"+a.Path+"%").Find(&apiList).Error
  63. return err, apiList, total
  64. }
  65. }