/// <summary>
        /// 复制文件
        /// </summary>
        /// <param name="input"> </param>
        /// <returns> </returns>
        public async Task <SysFileListDto> CopyFile(SysFileEditDto input)
        {
            var entity = await _sysFileRepository.GetAsync(input.Id.Value);

            var rootFolder      = _appFolder.SysFileRootFolder;
            var currentFilePath = Path.Combine(rootFolder, entity.Path);//获取旧当前文件的绝对路径
            var uniqueFileName  = SequentialGuidGenerator.Instance.Create().ToString();
            var fileExt         = Path.GetExtension(currentFilePath);
            var newName         = uniqueFileName + fileExt; //copy文件后的新名称

            entity.Name = newName;
            var saveRPath   = Path.Combine(entity.DateDirctoryName, entity.Name); //将重命名的路径保存到数据库中
            var NewFilepath = Path.Combine(rootFolder, saveRPath);                //即将复制的路径

            saveRPath = saveRPath.Replace("\\", "/");

            entity.Path = saveRPath;
            File.Copy(currentFilePath, NewFilepath);

            var newEntity = entity;

            newEntity.Id = SequentialGuidGenerator.Instance.Create();
            newEntity    = await _sysFileManager.CreateAsync(newEntity);

            var dto = ObjectMapper.Map <SysFileListDto>(newEntity);

            return(dto);
        }
        //// custom codes



        /// <summary>
        /// 重命名文件
        /// </summary>
        /// <param name="input"> </param>
        /// <returns> </returns>
        public async Task ReFileName(SysFileEditDto input)
        {
            var entity = await _sysFileRepository.GetAsync(input.Id.Value);

            var rootFolder = _appFolder.SysFileRootFolder;

            entity.Name = input.Name;//新文件名
            await _sysFileManager.ValidateSysfileAsync(entity);

            var OldPath   = Path.Combine(rootFolder, entity.Path);              //获取旧当前文件的绝对路径
            var saveRPath = Path.Combine(entity.DateDirctoryName, entity.Name); //将重命名的路径保存到数据库中
            var NewPath   = Path.Combine(rootFolder, saveRPath);                //即将重命名的路径

            if (entity.Dir)
            {
                //文件夹重命名操作
                Directory.Move(OldPath, NewPath);
            }
            else
            {
                File.Move(OldPath, NewPath);//重命名操作
            }

            saveRPath = saveRPath.Replace("\\", "/");

            entity.Path = saveRPath;
            await _sysFileManager.UpdateAsync(entity);
        }
        public virtual async Task Update(SysFileEditDto input)
        {
            //TODO:更新前的逻辑判断,是否允许更新
            var entity = await _sysFileRepository.GetAsync(input.Id.Value);

            ObjectMapper.Map(input, entity);
            await _sysFileManager.UpdateAsync(entity);
        }
        public async Task <GetSysFileForEditOutput> GetForEdit(NullableIdDto <Guid> input)
        {
            var            output = new GetSysFileForEditOutput();
            SysFileEditDto editDto;

            if (input.Id.HasValue)
            {
                var entity = await _sysFileRepository.GetAsync(input.Id.Value);

                editDto = ObjectMapper.Map <SysFileEditDto>(entity);
            }
            else
            {
                editDto = new SysFileEditDto();
            }

            output.SysFile = editDto;
            return(output);
        }
        /// <summary>
        /// 创建文件夹
        /// </summary>
        /// <param name="input"> </param>
        /// <returns> </returns>
        public async Task <SysFileListDto> CreateDirectory(SysFileEditDto input)
        {
            input.Dir = true;
            var entity = ObjectMapper.Map <SysFile>(input);

            entity.IsImg = false;
            var rootFolder       = _appFolder.SysFileRootFolder;
            var dateDirctoryName = DateTime.Now.ToString("yyyy-MM-dd"); //2008-9-4
            var savePath         = Path.Combine(dateDirctoryName, entity.Name);
            var dirPath          = Path.Combine(rootFolder, savePath);

            DirectoryHelper.CreateIfNotExists(dirPath);
            savePath = savePath.Replace("\\", "/");
            entity.DateDirctoryName = dateDirctoryName;
            entity.Path             = savePath;
            entity.FileExt          = ".dir";

            entity = await _sysFileManager.CreateAsync(entity);

            var dto = ObjectMapper.Map <SysFileListDto>(entity);

            return(dto);
        }