public ApiReturns Rename(int id, string newName) { var dir = _dirBll.QuerySingle(id); if (dir == null) { return(ApiReturns.BadRequest()); } if (string.IsNullOrEmpty(newName) || dir.DirName == newName) { return(ApiReturns.BadRequest()); } dir.DirName = newName; dir.LastModifyTime = DateTime.Now; // 检查是否重名 if (DirNameExists(dir)) { return(ApiReturns.Exists()); } // 更新 var success = UpdateDir(dir, Operation.Update); if (success) { return(ApiReturns.Created()); } return(ApiReturns.BadRequest()); }
public ApiReturns Post() { var request = HttpContext.Current.Request; var directoryId = request["dir"].ToInt32(); if (directoryId <= 0) { return(ApiReturns.BadRequest()); } var directory = _dirBll.QuerySingle(directoryId); if (directory == null) { return(ApiReturns.BadRequest()); } var files = request.Files; if (files.Count > 0) { var loginUser = LoginStatus.GetLoginUser(); var fileIsCommom = LoginStatus.IsSuperAdminLogin() && directory.IsCommon; var file = files[0]; var fileName = Path.GetFileNameWithoutExtension(file.FileName); var departFile = new DepartFiles { DepartmentId = LoginStatus.IsSuperAdminLogin() ? 0 : loginUser.DepartmentId.Value, FileDirectoryId = directoryId, FileName = fileName, IsCommon = fileIsCommom, SystemUserId = loginUser.Id, LastModifyTime = DateTime.Now }; #region 的文件已存在于服务器 // 对比哈希值,相同文件只保存一份副本 var hash = file.InputStream.GetMd5(); var dbFile = _fileInfoBll.QuerySingle(f => f.IsDeleted == false && f.HashCode == hash); if (dbFile != null) { departFile.FileInfoId = dbFile.Id; var addSuccess = _departFilesBll.ExecuteTranscation(() => { if (_departFilesBll.Add(departFile).Id > 0) { var log = new DbUpdateLog { OperateType = (int)Operation.Insert, TableName = nameof(DepartFiles), TargetId = departFile.Id, UpdateTime = DateTime.Now }; return(_dbUpdateLogBll.Add(log).Id > 0); } return(false); }); var res = _fileBll.QuerySingle(departFile.Id); if (addSuccess) { return(ApiReturns.Created(res)); } return(ApiReturns.BadRequest()); } #endregion #region 的文件未存在于服务器 // 路径 var d = DateTime.Now; var ext = Path.GetExtension(file.FileName); var dir = $"/docs/{d.Year}-{d.Month}-{d.Day}/"; var name = $"{Guid.NewGuid()}{ext}"; var path = $"{WebConfig.FileUploadDir}{dir}"; if (!Directory.Exists(path)) { lock (_lockObj) { Directory.CreateDirectory(path); } } // 保存文件到磁盘 file.SaveAs($"{path}{name}"); // 保存到数据库 var serverFileName = $"{dir}{name}"; dbFile = new Guoli.Fs.Model.FileInfo { Extension = ext, HashCode = hash, Path = serverFileName, Size = file.InputStream.Length, UploadTime = d }; var success = _fileInfoBll.ExecuteTranscation(() => { var s = _fileInfoBll.Add(dbFile).Id > 0; if (s) { departFile.FileInfoId = dbFile.Id; if (_departFilesBll.Add(departFile).Id > 0) { var log = new DbUpdateLog { OperateType = (int)Operation.Insert, TableName = nameof(DepartFiles), TargetId = departFile.Id, UpdateTime = DateTime.Now }; return(_dbUpdateLogBll.Add(log).Id > 0); } return(false); } return(false); }); if (success) { var data = _fileBll.QuerySingle(departFile.Id); return(ApiReturns.Created(data)); } return(ApiReturns.BadRequest()); #endregion } return(ApiReturns.BadRequest()); }