package models import ( "eta/eta_api/global" "eta/eta_api/utils" "fmt" "strings" "time" ) type CloudDiskMenu struct { MenuId int `gorm:"column:menu_id;primaryKey;autoIncrement" description:"目录ID"` MenuName string `description:"目录名称"` ParentId int `description:"父级ID"` Size int64 `description:"目录大小"` AdminId int `description:"创建人ID"` AdminName string `description:"创建人名称"` CreateTime time.Time `description:"创建时间"` ModifyTime time.Time `description:"修改时间"` } func (m *CloudDiskMenu) TableName() string { return "cloud_disk_menu" } func (m *CloudDiskMenu) Create() (err error) { err = global.DEFAULT_DB.Create(m).Error return } func (m *CloudDiskMenu) Update(cols []string) (err error) { err = global.DEFAULT_DB.Select(cols).Updates(m).Error return } func (m *CloudDiskMenu) GetItemById(id int) (err error) { sql := `SELECT * FROM cloud_disk_menu WHERE menu_id = ? LIMIT 1` err = global.DEFAULT_DB.Raw(sql, id).Find(&m).Error return } func (m *CloudDiskMenu) GetItemByCondition(condition string, pars []interface{}) (err error) { sql := `SELECT * FROM cloud_disk_menu WHERE 1=1 ` sql += condition sql += ` LIMIT 1` err = global.DEFAULT_DB.Raw(sql, pars...).Find(&m).Error return } func (m *CloudDiskMenu) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*CloudDiskMenu, err error) { fields := strings.Join(fieldArr, ",") if len(fieldArr) == 0 { fields = `*` } order := `` if orderRule != "" { order = ` ORDER BY ` + orderRule } sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s`, fields, m.TableName(), condition, order) err = global.DEFAULT_DB.Raw(sql, pars...).Find(&items).Error return } type CloudDiskMenuCreateReq struct { MenuName string `description:"目录名称"` ParentId int `description:"父级ID"` } type CloudDiskMenuRenameReq struct { MenuId int `description:"目录ID"` MenuName string `description:"目录名称"` } type CloudDiskMenuDeleteReq struct { MenuId int `description:"目录ID"` } // DeleteCloudDiskMenuAndResourcesByMenuIds 根据目录IDs删除目录及文件 func DeleteCloudDiskMenuAndResourcesByMenuIds(menuIds []int) (err error) { menuLens := len(menuIds) if menuLens == 0 { return } tx := global.DEFAULT_DB.Begin() defer func() { if err != nil { _ = tx.Rollback() } else { _ = tx.Commit() } }() sql := `DELETE FROM cloud_disk_menu WHERE menu_id IN (` + utils.GetOrmInReplace(menuLens) + `)` err = tx.Exec(sql, menuIds).Error if err != nil { return } sql = `DELETE FROM cloud_disk_resource WHERE menu_id IN (` + utils.GetOrmInReplace(menuLens) + `)` err = tx.Exec(sql, menuIds).Error if err != nil { return } return } type CloudDiskMenuTree struct { *CloudDiskMenu Children []*CloudDiskMenuTree }