| | |
| | | util.ResponseFormat(c, code.RequestParamError, "类型不能为空") |
| | | return |
| | | } |
| | | types := make([]*models.MiniDict, 0) |
| | | for _, value := range params.Values { |
| | | miniDicts, err := models.NewMiniDictSearch().SetType(params.Type).FindNotTotal() |
| | | if err != nil { |
| | | util.ResponseFormat(c, code.RequestParamError, err) |
| | | return |
| | | } |
| | | dicts := params.Values |
| | | add := make([]*models.MiniDict, 0) |
| | | del := make([]uint, 0) |
| | | update := make([]*models.MiniDict, 0) |
| | | for _, mini := range miniDicts { |
| | | flag := true |
| | | for i, value := range dicts { |
| | | var dict models.MiniDict |
| | | dict.Name = value.Name |
| | | dict.IsDefault = value.IsDefault |
| | | dict.Type = params.Type |
| | | if value.Id == 0 { |
| | | add = append(add, &dict) |
| | | flag = false |
| | | if i < len(dicts)-1 { |
| | | dicts = append(dicts[:i], dicts[i+1:]...) |
| | | } else { |
| | | dicts = dicts[:i] |
| | | } |
| | | break |
| | | } else if value.Id == mini.ID { |
| | | update = append(update, &dict) |
| | | flag = false |
| | | if i < len(dicts)-1 { |
| | | dicts = append(dicts[:i], dicts[i+1:]...) |
| | | } else { |
| | | dicts = dicts[:i] |
| | | } |
| | | break |
| | | } |
| | | } |
| | | if flag { |
| | | del = append(del, mini.ID) |
| | | } |
| | | } |
| | | //新增的 |
| | | for _, value := range dicts { |
| | | var dict models.MiniDict |
| | | dict.Name = value.Name |
| | | dict.IsDefault = value.IsDefault |
| | | dict.Type = params.Type |
| | | types = append(types, &dict) |
| | | add = append(add, &dict) |
| | | } |
| | | |
| | | err = models.WithTransaction(func(db *gorm.DB) error { |
| | | err = models.NewMiniDictSearch().SetOrm(db).SetType(params.Type).Delete() |
| | | if err != nil { |
| | | return err |
| | | if len(del) > 0 { |
| | | err = models.NewMiniDictSearch().SetOrm(db).SetIds(del).Delete() |
| | | if err != nil { |
| | | return err |
| | | } |
| | | } |
| | | err = models.NewMiniDictSearch().SetOrm(db).CreateBatch(types) |
| | | if err != nil { |
| | | return err |
| | | if len(update) > 0 { |
| | | err = models.NewMiniDictSearch().SetOrm(db).SaveBatch(update) |
| | | if err != nil { |
| | | return err |
| | | } |
| | | } |
| | | if len(add) > 0 { |
| | | err = models.NewMiniDictSearch().SetOrm(db).CreateBatch(add) |
| | | if err != nil { |
| | | return err |
| | | } |
| | | } |
| | | |
| | | return nil |
| | | }) |
| | | if err != nil { |