package models import ( "eta_gn/eta_api/global" "eta_gn/eta_api/utils" "fmt" "strings" "time" ) type CloudDiskMenu struct { MenuId int `gorm:"column:menu_id;primaryKey"` // `orm:"column(menu_id);pk" gorm:"primaryKey" description:"目录ID"` MenuName string `gorm:"column:menu_name"` //`description:"目录名称"` ParentId int `gorm:"column:parent_id"` //`description:"父级ID"` Size int64 `gorm:"column:size"` //`description:"目录大小"` AdminId int `gorm:"column:admin_id"` //`description:"创建人ID"` AdminName string `gorm:"column:admin_name"` //`description:"创建人名称"` CreateTime time.Time `grom:"column:create_time"` //`description:"创建时间"` ModifyTime time.Time `gorm:"column:modify_time"` //`description:"修改时间"` } func (m *CloudDiskMenu) TableName() string { return "cloud_disk_menu" } func (m *CloudDiskMenu) Create() (err error) { //o := orm.NewOrm() //id, err := o.Insert(m) //if err != nil { // return //} //m.MenuId = int(id) err = global.DEFAULT_DmSQL.Create(m).Error return } func (m *CloudDiskMenu) Update(cols []string) (err error) { //o := orm.NewOrm() //_, err = o.Update(m, cols...) err = global.DEFAULT_DmSQL.Select(cols).Updates(m).Error return } func (m *CloudDiskMenu) GetItemById(id int) (err error) { //o := orm.NewOrm() sql := `SELECT * FROM cloud_disk_menu WHERE menu_id = ? LIMIT 1` //err = o.Raw(sql, id).QueryRow(&m) err = global.DEFAULT_DmSQL.Raw(sql, id).First(&m).Error return } func (m *CloudDiskMenu) GetItemByCondition(condition string, pars []interface{}) (err error) { //o := orm.NewOrm() sql := `SELECT * FROM cloud_disk_menu WHERE 1=1 ` sql += condition sql += ` LIMIT 1` //err = o.Raw(sql, pars).QueryRow(&m) err = global.DEFAULT_DmSQL.Raw(sql, pars...).First(&m).Error return } func (m *CloudDiskMenu) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*CloudDiskMenu, err error) { //o := orm.NewOrm() 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 = o.Raw(sql, pars).QueryRows(&items) err = global.DEFAULT_DmSQL.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 } //o := orm.NewOrm() //tx, err := o.Begin() tx := global.DEFAULT_DmSQL.Begin() defer func() { if err != nil { _ = tx.Rollback() } else { _ = tx.Commit() } }() sql := `DELETE FROM cloud_disk_menu WHERE menu_id IN (` + utils.GetOrmInReplace(menuLens) + `)` //if _, err = tx.Raw(sql, menuIds).Exec(); err != nil { // return //} if err = tx.Exec(sql, menuIds).Error; err != nil { return } sql = `DELETE FROM cloud_disk_resource WHERE menu_id IN (` + utils.GetOrmInReplace(menuLens) + `)` //if _, err = tx.Raw(sql, menuIds).Exec(); err != nil { if err = tx.Exec(sql, menuIds).Error; err != nil { return } return } type CloudDiskMenuTree struct { *CloudDiskMenu Children []*CloudDiskMenuTree `gorm:"-"` }