/// <summary> /// 单条记录更新 /// </summary> /// <param name="tableName">目标表格名称</param> /// <param name="id">当前更新这条记录的主键</param> /// <param name="updateType">更新类型枚举</param> public static bool SingleUpdate(string tableName, int id, DataUpdateType updateType) { var updateModel = new DbUpdateLog { TableName = tableName, TargetId = id, UpdateType = (int)updateType, UpdateTime = DateTime.Now }; return(UpdateBll.Insert(updateModel).Id > 0); }
/// <summary> /// 更新目录信息,并记录数据库更新记录 /// </summary> /// <param name="dir">待更新目录信息</param> /// <param name="operation">表示数据库操作类型(增删改)的枚举值</param> /// <returns>更新成功则返回<c>true</c>,否则返回<c>false</c></returns> private bool UpdateDir(FileDirectory dir, Operation operation) { return(_dirBll.ExecuteTranscation(() => { var success = _dirBll.Update(dir); if (success) { var d = new DbUpdateLog(nameof(FileDirectory), dir.Id, (int)operation); return _logBll.Add(d).Id > 0; } return false; })); }
/// <summary> /// 更新文件信息,并添加数据库更新记录 /// </summary> /// <param name="file">待更新的文件信息</param> /// <param name="operation">表示数据库操作类型(增删改)的枚举值</param> /// <returns>更新成功则返回<c>true</c>,否则返回<c>false</c></returns> private bool UpdateFile(DepartFiles file, Operation operation) { return(_departFilesBll.ExecuteTranscation(() => { var s = _departFilesBll.Update(file); if (s) { var d = new DbUpdateLog { OperateType = (int)operation, TableName = nameof(DepartFiles), TargetId = file.Id, UpdateTime = DateTime.Now }; return _dbUpdateLogBll.Add(d).Id > 0; } return false; })); }
public ApiReturns Post(FileDirectory model) { // 只有超级管理员才能添加顶级目录 if (model.ParentId == 0 && !LoginStatus.IsSuperAdminLogin()) { return(ApiReturns.Forbidden()); } if (DirNameExists(model)) { return(ApiReturns.Exists()); } model.CreateTime = DateTime.Now; model.LastModifyTime = DateTime.Now; model.CreatorId = LoginStatus.GetLoginUser().Id; // 插入数据库 var success = _dirBll.ExecuteTranscation(() => { var s = _dirBll.Add(model).Id > 0; if (s) { var d = new DbUpdateLog(nameof(FileDirectory), model.Id, (int)Operation.Insert); return(_logBll.Add(d).Id > 0); } return(false); }); if (success) { return(ApiReturns.Created(model)); } 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()); }