public virtual async Task <string> GetNextChildCodeAsync(long?parentId) { var lastChild = await GetLastChildOrNullAsync(parentId); if (lastChild == null) { var parentCode = parentId != null ? await GetCodeAsync(parentId.Value) : null; return(DataDictionay.AppendCode(parentCode, DataDictionay.CreateCode(1))); } return(DataDictionay.CalculateNextCode(lastChild.Code)); }
public virtual async Task MoveAsync(long id, long?parentId) { var dataDictionay = await DataDictionayRepository.GetAsync(id); if (dataDictionay.ParentId == parentId) { return; } var children = await FindChildrenAsync(id); var oldCode = dataDictionay.Code; dataDictionay.Code = await GetNextChildCodeAsync(parentId); dataDictionay.ParentId = parentId; await ValidateDataDictionayAsync(dataDictionay); //更新 foreach (var child in children) { child.Code = DataDictionay.AppendCode(dataDictionay.Code, DataDictionay.GetRelativeCode(child.Code, oldCode)); } }