/// <summary> /// 添加模块信息信息 /// </summary> /// <param name="dto">要添加的模块信息DTO信息</param> /// <returns>业务操作结果</returns> public virtual async Task <OperationResult> CreateModule(TModuleInputDto dto) { dto.CheckNotNull("dto"); if (await ModuleRepository.CheckExistsAsync(m => m.Name == dto.Name)) { return(new OperationResult(OperationResultType.Error, "名称为“{0}”的模块已存在,不能重复添加".FormatWith(dto.Name))); } TModule module = dto.MapTo <TModule>(); if (dto.ParentId.HasValue) { TModule parent = await ModuleRepository.GetByKeyAsync(dto.ParentId.Value); if (parent == null) { return(new OperationResult(OperationResultType.Error, "编号为“{0}”的父模块信息不存在".FormatWith(dto.ParentId.Value))); } module.Parent = parent; } else { module.Parent = default(TModule); } module.TreePathString = module.GetTreePath(); await ModuleRepository.InsertAsync(module); return(OperationResult.Success); }
/// <summary> /// 添加模块信息信息 /// </summary> /// <param name="dto">要添加的模块信息DTO信息</param> /// <returns>业务操作结果</returns> public virtual async Task <OperationResult> CreateModule(TModuleInputDto dto) { dto.CheckNotNull("dto"); var exist = ModuleRepository.Entities.Where(m => m.Name == dto.Name && m.Parent != null && m.Parent.Id.Equals(dto.ParentId)) .Select(m => new { ParentName = m.Parent.Name }).FirstOrDefault(); if (exist != null) { return(new OperationResult(OperationResultType.Error, "模块“{0}”中已存在名称为“{1}”的子模块,不能重复添加".FormatWith(exist.ParentName, dto.Name))); } TModule entity = dto.MapTo <TModule>(); //排序码,不存在为1,否则同级最大+1 var peerModules = ModuleRepository.Entities.Where(m => m.Parent.Id.Equals(dto.ParentId)).Select(m => new { m.OrderCode }).ToArray(); if (peerModules.Length == 0) { entity.OrderCode = 1; } else { double maxCode = peerModules.Max(m => m.OrderCode); entity.OrderCode = maxCode + 1; } //父模块 if (!dto.ParentId.Equals(default(TModuleKey))) { TModule parent = await ModuleRepository.GetByKeyAsync(dto.ParentId); if (parent == null) { return(new OperationResult(OperationResultType.Error, "编号为“{0}”的父模块信息不存在".FormatWith(dto.ParentId))); } entity.Parent = parent; } else { entity.Parent = default(TModule); } ModuleRepository.UnitOfWork.BeginTransaction(); int count = await ModuleRepository.InsertAsync(entity); entity.TreePathString = entity.GetTreePath(); await ModuleRepository.UpdateAsync(entity); return(count > 0 ? new OperationResult(OperationResultType.Success, "模块“{0}”创建成功".FormatWith(dto.Name)) : OperationResult.NoChanged); }
/// <summary> /// 更新代码模块信息信息 /// </summary> /// <param name="dtos">包含更新信息的代码模块信息DTO信息</param> /// <returns>业务操作结果</returns> public async Task <OperationResult> UpdateCodeModules(params CodeModuleInputDto[] dtos) { List <string> names = new List <string>(); UnitOfWork.EnableTransaction(); foreach (var dto in dtos) { dto.Validate(); CodeProject project = await ProjectRepository.GetAsync(dto.ProjectId); if (project == null) { return(new OperationResult(OperationResultType.Error, $"编号为“{dto.ProjectId}”的项目信息不存在")); } if (await CheckCodeModuleExists(m => m.Name == dto.Name && m.ProjectId == dto.ProjectId, dto.Id)) { return(new OperationResult(OperationResultType.Error, $"项目“{project.Name}”中名称为“{dto.Name}”的模块信息已存在")); } if (dto.Order == 0) { dto.Order = ModuleRepository.Query(m => m.ProjectId == dto.ProjectId).Count() + 1; } int count; if (dto.Id == default) { CodeModule module = dto.MapTo <CodeModule>(); count = await ModuleRepository.InsertAsync(module); } else { CodeModule module = await ModuleRepository.GetAsync(dto.Id); module = dto.MapTo(module); count = await ModuleRepository.UpdateAsync(module); } if (count > 0) { names.Add(dto.Name); } } await UnitOfWork.CommitAsync(); return(names.Count > 0 ? new OperationResult(OperationResultType.Success, $"模块“{names.ExpandAndToString()}”保存成功") : OperationResult.NoChanged); }