cloud_disk_menu.go 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. package models
  2. import (
  3. "eta/eta_api/global"
  4. "eta/eta_api/utils"
  5. "fmt"
  6. "strings"
  7. "time"
  8. )
  9. type CloudDiskMenu struct {
  10. MenuId int `gorm:"column:menu_id;primaryKey;autoIncrement" 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. func (m *CloudDiskMenu) TableName() string {
  20. return "cloud_disk_menu"
  21. }
  22. func (m *CloudDiskMenu) Create() (err error) {
  23. err = global.DEFAULT_DB.Create(m).Error
  24. return
  25. }
  26. func (m *CloudDiskMenu) Update(cols []string) (err error) {
  27. err = global.DEFAULT_DB.Select(cols).Updates(m).Error
  28. return
  29. }
  30. func (m *CloudDiskMenu) GetItemById(id int) (err error) {
  31. sql := `SELECT * FROM cloud_disk_menu WHERE menu_id = ? LIMIT 1`
  32. err = global.DEFAULT_DB.Raw(sql, id).Find(&m).Error
  33. return
  34. }
  35. func (m *CloudDiskMenu) GetItemByCondition(condition string, pars []interface{}) (err error) {
  36. sql := `SELECT * FROM cloud_disk_menu WHERE 1=1 `
  37. sql += condition
  38. sql += ` LIMIT 1`
  39. err = global.DEFAULT_DB.Raw(sql, pars...).Find(&m).Error
  40. return
  41. }
  42. func (m *CloudDiskMenu) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*CloudDiskMenu, err error) {
  43. fields := strings.Join(fieldArr, ",")
  44. if len(fieldArr) == 0 {
  45. fields = `*`
  46. }
  47. order := ``
  48. if orderRule != "" {
  49. order = ` ORDER BY ` + orderRule
  50. }
  51. sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s`, fields, m.TableName(), condition, order)
  52. err = global.DEFAULT_DB.Raw(sql, pars...).Find(&items).Error
  53. return
  54. }
  55. type CloudDiskMenuCreateReq struct {
  56. MenuName string `description:"目录名称"`
  57. ParentId int `description:"父级ID"`
  58. }
  59. type CloudDiskMenuRenameReq struct {
  60. MenuId int `description:"目录ID"`
  61. MenuName string `description:"目录名称"`
  62. }
  63. type CloudDiskMenuDeleteReq struct {
  64. MenuId int `description:"目录ID"`
  65. }
  66. // DeleteCloudDiskMenuAndResourcesByMenuIds 根据目录IDs删除目录及文件
  67. func DeleteCloudDiskMenuAndResourcesByMenuIds(menuIds []int) (err error) {
  68. menuLens := len(menuIds)
  69. if menuLens == 0 {
  70. return
  71. }
  72. tx := global.DEFAULT_DB.Begin()
  73. defer func() {
  74. if err != nil {
  75. _ = tx.Rollback()
  76. } else {
  77. _ = tx.Commit()
  78. }
  79. }()
  80. sql := `DELETE FROM cloud_disk_menu WHERE menu_id IN (` + utils.GetOrmInReplace(menuLens) + `)`
  81. err = tx.Exec(sql, menuIds).Error
  82. if err != nil {
  83. return
  84. }
  85. sql = `DELETE FROM cloud_disk_resource WHERE menu_id IN (` + utils.GetOrmInReplace(menuLens) + `)`
  86. err = tx.Exec(sql, menuIds).Error
  87. if err != nil {
  88. return
  89. }
  90. return
  91. }
  92. type CloudDiskMenuTree struct {
  93. *CloudDiskMenu
  94. Children []*CloudDiskMenuTree
  95. }