| | |
| | | |
| | | func (slf *PurchaseService) SavePurchaseType(list []*purchase.PurchaseType) (err error) { |
| | | ids := make([]uint, 0) |
| | | newRecords := make([]*purchase.PurchaseType, 0) |
| | | for _, item := range list { |
| | | if item.ID != 0 { |
| | | ids = append(ids, item.ID) |
| | | } else { |
| | | newRecords = append(newRecords, item) |
| | | item.ID = 0 |
| | | } |
| | | } |
| | | err = global.GVA_DB.Transaction(func(tx *gorm.DB) error { |
| | | err = tx.Where("id not in ?", ids).Delete(&purchase.PurchaseType{}).Error |
| | | err = tx.Where("id in (?)", ids).Delete(&purchase.PurchaseType{}).Error |
| | | if err != nil { |
| | | return err |
| | | } |
| | | if len(newRecords) > 0 { |
| | | err = tx.Create(newRecords).Error |
| | | if err != nil { |
| | | return err |
| | | } |
| | | } |
| | | |
| | | for _, item := range list { |
| | | if item.ID != 0 { |
| | | err = tx.Where("id = ?", item.ID).Updates(item).Error |
| | | if err != nil { |
| | | return err |
| | | } |
| | | } |
| | | err = tx.Create(list).Error |
| | | if err != nil { |
| | | return err |
| | | } |
| | | return nil |
| | | }) |