package gmodel import ( "context" "gorm.io/gorm" ) func (ml *FsMapLibraryModel) GetAllEnabledList(ctx context.Context, fields ...string) (resp []FsMapLibrary, err error) { db := ml.db.WithContext(ctx).Model(&FsMapLibrary{}).Where("`status` = ?", 1) if len(fields) != 0 { db = db.Select(fields[0]) } err = db.Find(&resp).Error if err != nil { return nil, err } return } func (ml *FsMapLibraryModel) Create(ctx context.Context, data *FsMapLibrary) error { return ml.db.WithContext(ctx).Model(&FsMapLibrary{}).Create(data).Error } func (ml *FsMapLibraryModel) Update(ctx context.Context, id int64, data *FsMapLibrary) error { return ml.db.WithContext(ctx).Model(&FsMapLibrary{}).Where("`id` = ? ", id).Updates(data).Error } func (ml *FsMapLibraryModel) ChangeStatusByIds(ctx context.Context, ids []int64, status int64) error { if len(ids) == 0 { return nil } return ml.db.WithContext(ctx).Model(&FsMapLibrary{}).Where("`id` in (?) ", ids).Update("status", 0).Error } func (ml *FsMapLibraryModel) SaveMapLibraryWithTransaction(ctx context.Context, createList []FsMapLibrary, updateList []FsMapLibrary) error { return ml.db.WithContext(ctx).Transaction(func(tx *gorm.DB) error { //创建 for _, v := range createList { if err := tx.Model(&FsMapLibrary{}).Create(&v).Error; err != nil { return err } } if len(updateList) == 0 { return nil } //更新 notInIds := make([]int64, 0, len(updateList)) for _, v := range updateList { notInIds = append(notInIds, v.Id) if err := tx.Model(&FsMapLibrary{}).Where("`id` = ?", v.Id).Updates(&v).Error; err != nil { return err } } //删除 return tx.Model(&FsMapLibrary{}).Where("`id` not in (?) ", notInIds).Update("status", 0).Error }) }