cloud_disk_menu.go 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. package models
  2. import (
  3. "eta/eta_api/utils"
  4. "fmt"
  5. "github.com/beego/beego/v2/client/orm"
  6. "strings"
  7. "time"
  8. )
  9. type CloudDiskMenu struct {
  10. MenuId int `orm:"column(menu_id);pk" description:"目录ID"`
  11. MenuName string `description:"目录名称"`
  12. ParentId int `description:"父级ID"`
  13. Size int64 `description:"目录大小"`
  14. AdminId int `description:"创建人ID"`
  15. AdminName string `description:"创建人名称"`
  16. CreateTime time.Time `description:"创建时间"`
  17. ModifyTime time.Time `description:"修改时间"`
  18. }
  19. type MenuNode struct {
  20. MenuId int `json:"menuId"`
  21. ParentId int `json:"parentId"`
  22. MenuName string
  23. Level int
  24. Children []*MenuNode
  25. }
  26. func (m *CloudDiskMenu) TableName() string {
  27. return "cloud_disk_menu"
  28. }
  29. func (m *CloudDiskMenu) Create() (err error) {
  30. o := orm.NewOrm()
  31. id, err := o.Insert(m)
  32. if err != nil {
  33. return
  34. }
  35. m.MenuId = int(id)
  36. return
  37. }
  38. func (m *CloudDiskMenu) Update(cols []string) (err error) {
  39. o := orm.NewOrm()
  40. _, err = o.Update(m, cols...)
  41. return
  42. }
  43. func (m *CloudDiskMenu) GetItemById(id int) (err error) {
  44. o := orm.NewOrm()
  45. sql := `SELECT * FROM cloud_disk_menu WHERE menu_id = ? LIMIT 1`
  46. err = o.Raw(sql, id).QueryRow(&m)
  47. return
  48. }
  49. func (m *CloudDiskMenu) GetItemByCondition(condition string, pars []interface{}) (err error) {
  50. o := orm.NewOrm()
  51. sql := `SELECT * FROM cloud_disk_menu WHERE 1=1 `
  52. sql += condition
  53. sql += ` LIMIT 1`
  54. err = o.Raw(sql, pars).QueryRow(&m)
  55. return
  56. }
  57. func (m *CloudDiskMenu) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*CloudDiskMenu, err error) {
  58. o := orm.NewOrm()
  59. fields := strings.Join(fieldArr, ",")
  60. if len(fieldArr) == 0 {
  61. fields = `*`
  62. }
  63. order := ``
  64. if orderRule != "" {
  65. order = ` ORDER BY ` + orderRule
  66. }
  67. sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s`, fields, m.TableName(), condition, order)
  68. _, err = o.Raw(sql, pars).QueryRows(&items)
  69. return
  70. }
  71. type CloudDiskMenuCreateReq struct {
  72. MenuName string `description:"目录名称"`
  73. ParentId int `description:"父级ID"`
  74. }
  75. type CloudDiskMenuRenameReq struct {
  76. MenuId int `description:"目录ID"`
  77. MenuName string `description:"目录名称"`
  78. }
  79. type CloudDiskMenuModifyReq struct {
  80. MenuId int `description:"目录ID"`
  81. ParentId int `description:"父级ID"`
  82. MenuName string `description:"目录名称"`
  83. }
  84. type CloudDiskMenuDeleteReq struct {
  85. MenuId int `description:"目录ID"`
  86. }
  87. // DeleteCloudDiskMenuAndResourcesByMenuIds 根据目录IDs删除目录及文件
  88. func DeleteCloudDiskMenuAndResourcesByMenuIds(menuIds []int) (err error) {
  89. menuLens := len(menuIds)
  90. if menuLens == 0 {
  91. return
  92. }
  93. o := orm.NewOrm()
  94. tx, err := o.Begin()
  95. if err != nil {
  96. return
  97. }
  98. defer func() {
  99. if err != nil {
  100. _ = tx.Rollback()
  101. } else {
  102. _ = tx.Commit()
  103. }
  104. }()
  105. sql := `DELETE FROM cloud_disk_menu WHERE menu_id IN (` + utils.GetOrmInReplace(menuLens) + `)`
  106. if _, err = tx.Raw(sql, menuIds).Exec(); err != nil {
  107. return
  108. }
  109. sql = `DELETE FROM cloud_disk_resource WHERE menu_id IN (` + utils.GetOrmInReplace(menuLens) + `)`
  110. if _, err = tx.Raw(sql, menuIds).Exec(); err != nil {
  111. return
  112. }
  113. return
  114. }
  115. type CloudDiskMenuTree struct {
  116. *CloudDiskMenu
  117. Children []*CloudDiskMenuTree
  118. }