diff --git a/dao/id_sequence.go b/dao/id_sequence.go index b671c02ac84c935972eea38b89b8ca91a28482b6..22914845134b583d1d6013bce10f2a267fb3618c 100644 --- a/dao/id_sequence.go +++ b/dao/id_sequence.go @@ -23,9 +23,14 @@ func (d *idSequenceDao) SetModel(model *model.IdSequence) *idSequenceDao { return tx } -func (d *idSequenceDao) UpdateByCond(ctx context.Context, version int, update map[string]interface{}) (int64, error) { - db := d.Db.WithContext(ctx).Table(d.TableName).Where("version = (?)", version). - Updates(update) +func (d *idSequenceDao) UpdateByCond(ctx context.Context, cond map[string]interface{}, update map[string]interface{}) (int64, error) { + db := d.Db.WithContext(ctx).Table(d.TableName) + + for k, v := range cond { + db = db.Where(k+" = ?", v) + } + + db = db.Updates(update) if db.Error != nil { return 0, db.Error } diff --git a/logic/idsequence/sequence.go b/logic/idsequence/sequence.go index a15395ee4d3c41fe2a0ffce5b3ebd5c7e3f3ef39..61cd971704f1c45e68fed446b4fcd91d943e359f 100644 --- a/logic/idsequence/sequence.go +++ b/logic/idsequence/sequence.go @@ -147,7 +147,10 @@ func (is *IdSequence) getNewIdListSync(ctx context.Context, curMaxIdCh, newMaxId newMaxId := record.Value + is.idListLength version := record.Version + 1 - rowsEffect, err := idSequenceDao.UpdateByCond(ctx, record.Version, map[string]interface{}{ + rowsEffect, err := idSequenceDao.UpdateByCond(ctx, map[string]interface{}{ + "version": record.Version, + "biz": is.biz, + }, map[string]interface{}{ "value": newMaxId, "version": version, }) @@ -166,12 +169,14 @@ func (is *IdSequence) getNewIdListSync(ctx context.Context, curMaxIdCh, newMaxId errCh <- nil } +// saveLastId - save the last id when the process is being stopped func (is *IdSequence) saveLastId(ctx context.Context) { lastId, ok := <-is.ids if ok && lastId != 0 { - dao.NewIdSequenceDao().UpdateByCond(ctx, 0, map[string]interface{}{ - "value": lastId, - "version": 0, + dao.NewIdSequenceDao().UpdateByCond(ctx, map[string]interface{}{ + "biz": is.biz, + }, map[string]interface{}{ + "value": lastId, }) } }