还原
This commit is contained in:
1 parent
280ccf4de8
commit
032f048a16
25 files changed
+2673
-718
No files matched your search
@@ -364,35 +364,29 @@ namespace CloudBuilder.Master.Service
|
||||
[PermissionOperate(name: MasterPermissionPolicy.DmsFile, operate: Operate.Delete)]
|
||||
[UnitOfWork]
|
||||
public void Delete(long key)
|
||||
{
|
||||
Delete(key, false);
|
||||
}
|
||||
|
||||
private void Delete(long key, bool hasCreateDmsFileDeleteLog)
|
||||
{
|
||||
DmsFileEntity dmsFile = repository.DetachedEntities.Where(x => x.FileId == key).FirstOrDefault()!;
|
||||
|
||||
if (dmsFile == null) return;
|
||||
|
||||
if (!hasCreateDmsFileDeleteLog) CreateDmsFileDeleteLog(dmsFile, null);
|
||||
|
||||
IRepository<DmsFileUploadEntity> repositoryUpload = repository.GetRepository<IRepository<DmsFileUploadEntity>>();
|
||||
IRepository<DmsFolderMapEntity> repositoryFolderMap = repository.GetRepository<IRepository<DmsFolderMapEntity>>();
|
||||
IRepository<DmsFolderEntity> repositoryFolder = repository.GetRepository<IRepository<DmsFolderEntity>>();
|
||||
|
||||
repository.DeleteNow(dmsFile);
|
||||
|
||||
IRepository<DmsFileDeleteLogEntity> repositoryDmsFileDeleteLog = repository.GetRepository<IRepository<DmsFileDeleteLogEntity>>();
|
||||
DmsFileDeleteLogEntity dmsFileDeleteLogEntity = new DmsFileDeleteLogEntity();
|
||||
ObjectCopyHelper.Copy(dmsFile, dmsFileDeleteLogEntity);
|
||||
repositoryDmsFileDeleteLog.InsertNow(dmsFileDeleteLogEntity);
|
||||
|
||||
DmsFileUploadEntity DmsFileUpload = repositoryUpload.DetachedEntities.Where(x => x.FileId == key).FirstOrDefault()!;
|
||||
|
||||
IRepository<DmsFileUploadDeleteLogEntity> repositoryDmsFileUploadDeleteLog = repository.GetRepository<IRepository<DmsFileUploadDeleteLogEntity>>();
|
||||
IRepository<DmsFolderDeleteLogEntity> repositoryDmsFolderDeleteLog = repository.GetRepository<IRepository<DmsFolderDeleteLogEntity>>();
|
||||
IRepository<DmsFolderMapDeleteLogEntity> repositoryDmsFolderMapDeleteLog = repository.GetRepository<IRepository<DmsFolderMapDeleteLogEntity>>();
|
||||
|
||||
if (DmsFileUpload != null)
|
||||
{
|
||||
repositoryUpload.DeleteNow(DmsFileUpload);
|
||||
|
||||
DmsFileUploadDeleteLogEntity DmsFileUploadDeleteLogEntity = new DmsFileUploadDeleteLogEntity();
|
||||
ObjectCopyHelper.Copy(DmsFileUpload, DmsFileUploadDeleteLogEntity);
|
||||
repositoryDmsFileUploadDeleteLog.InsertNow(DmsFileUploadDeleteLogEntity);
|
||||
}
|
||||
|
||||
if (dmsFile.IsDirectoryIndc == YesNoPolicy.YES)
|
||||
@@ -404,32 +398,21 @@ namespace CloudBuilder.Master.Service
|
||||
if (folder != null)
|
||||
{
|
||||
repositoryFolder.DeleteNow(folder);
|
||||
|
||||
DmsFolderDeleteLogEntity dfdLog = new DmsFolderDeleteLogEntity();
|
||||
ObjectCopyHelper.Copy(folder, dfdLog);
|
||||
repositoryDmsFolderDeleteLog.InsertNow(dfdLog);
|
||||
|
||||
}
|
||||
|
||||
DmsFolderMapEntity[] folderMaps = repositoryFolderMap.DetachedEntities.Where(x => x.FolderNameSon == dmsFile.FileName || x.FolderNameParent == dmsFile.FileName).ToArray();
|
||||
|
||||
DmsFolderMapDeleteLogEntity dmsFolderMapEntity;
|
||||
if (folderMaps != null && folderMaps.Length > 0)
|
||||
{
|
||||
foreach (var map in folderMaps)
|
||||
{
|
||||
repositoryFolderMap.DeleteNow(map);
|
||||
dmsFolderMapEntity = new DmsFolderMapDeleteLogEntity();
|
||||
ObjectCopyHelper.Copy(map, dmsFolderMapEntity);
|
||||
repositoryDmsFolderMapDeleteLog.InsertNow(dmsFolderMapEntity);
|
||||
|
||||
if (map.FolderNameSon == folder.FolderName) continue;
|
||||
//刪除dmsfoler下的所有內容
|
||||
DeleteFolder(map.FolderNameSon);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -438,12 +421,229 @@ namespace CloudBuilder.Master.Service
|
||||
if (folderMap != null)
|
||||
repositoryFolderMap.DeleteNow(folderMap);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
private void CreateDmsFileDeleteLogByDirectory(DmsFileEntity dmsFile, DmsFolderDeleteLogEntity folder)
|
||||
{
|
||||
IRepository<DmsFolderDeleteLogEntity> repositoryFolder = repository.GetRepository<IRepository<DmsFolderDeleteLogEntity>>();
|
||||
ISecurityGeneratorNumberService securityGeneratorNumberService = service.ServiceProvider.GetService<ISecurityGeneratorNumberService>()!;
|
||||
|
||||
string folderNameParent = folder.FolderName;
|
||||
|
||||
//创建当前目录
|
||||
folder = new DmsFolderDeleteLogEntity();
|
||||
folder.FolderName = securityGeneratorNumberService.GetNo(MasterPrefixPolicy.DMS_FOLDER_DELETE_LOG, MasterPrefixPolicy.DMS_FOLDER_DELETE_LOG_FOLDER_NAME, "DR", YesNoPolicy.NO, "00000000");
|
||||
folder.FolderLocalName = dmsFile.OrgFileName;//如果是目录,这个就是目录名称
|
||||
repositoryFolder.InsertNow(folder);
|
||||
//创建目录关系表
|
||||
DmsFolderMapDeleteLogEntity map = new DmsFolderMapDeleteLogEntity();
|
||||
IRepository<DmsFolderMapDeleteLogEntity> repositoryFolderMap = repository.GetRepository<IRepository<DmsFolderMapDeleteLogEntity>>();
|
||||
map.FolderNameParent = folderNameParent;
|
||||
map.FolderNameSon = folder.FolderName;
|
||||
repositoryFolderMap.InsertNow(map);
|
||||
|
||||
//创建Dms目录
|
||||
IRepository<DmsFileDeleteLogEntity> repositoryDmsFileDeleteLog = repository.GetRepository<IRepository<DmsFileDeleteLogEntity>>();
|
||||
DmsFileDeleteLogEntity entity = new DmsFileDeleteLogEntity();
|
||||
ObjectCopyHelper.Copy(dmsFile, entity);
|
||||
entity.OrderKey = entity.FileName = folder.FolderName;
|
||||
|
||||
entity.FileId = 0;
|
||||
entity.FilePath = folderNameParent;
|
||||
repositoryDmsFileDeleteLog.InsertNow(entity);
|
||||
|
||||
DmsFileUploadDeleteLogEntity upload = new DmsFileUploadDeleteLogEntity();
|
||||
upload.FileId = entity.FileId;
|
||||
upload.FileCategory = "MASTER";
|
||||
upload.UploadName = securityGeneratorNumberService.GetNo(MasterPrefixPolicy.UPLOAD_DMS_FILE_DELETE_LOG, MasterPrefixPolicy.UPLOAD_DMS_FILE_DELETE_LOG_UPLOAD_NAME, "DR", YesNoPolicy.NO, MasterPrefixPolicy.UPLOAD_DMS_FILE_DELETE_LOG_FORMAT);
|
||||
upload.OrgFileName = entity.OrgFileName;
|
||||
|
||||
IRepository<DmsFileUploadDeleteLogEntity> repositoryUpload = repository.GetRepository<IRepository<DmsFileUploadDeleteLogEntity>>();
|
||||
|
||||
repositoryUpload.InsertNow(upload);
|
||||
|
||||
//创建所有目录下的内容
|
||||
DmsFileEntity[] dmsFiles = repository.DetachedEntities.Where(x => x.FilePath == dmsFile.FileName).ToArray();
|
||||
if (dmsFiles == null || dmsFiles.Length == 0) return;
|
||||
|
||||
foreach (var dms in dmsFiles)
|
||||
{
|
||||
CreateDmsFileDeleteLog(dms, folder);
|
||||
}
|
||||
}
|
||||
|
||||
private void CreateDmsFileDeleteLog(DmsFileEntity dmsFile, DmsFolderDeleteLogEntity folderLog)
|
||||
{
|
||||
IRepository<DmsFileDeleteLogEntity> repositoryDmsFileDeleteLog = repository.GetRepository<IRepository<DmsFileDeleteLogEntity>>();
|
||||
IRepository<DmsFileUploadDeleteLogEntity> repositoryDmsFileUploadDeleteLog = repository.GetRepository<IRepository<DmsFileUploadDeleteLogEntity>>();
|
||||
IRepository<DmsFolderDeleteLogEntity> repositoryDmsFolderDeleteLog = repository.GetRepository<IRepository<DmsFolderDeleteLogEntity>>();
|
||||
IRepository<DmsFolderMapDeleteLogEntity> repositoryDmsFolderMapDeleteLog = repository.GetRepository<IRepository<DmsFolderMapDeleteLogEntity>>();
|
||||
|
||||
ISecurityGeneratorNumberService securityGeneratorNumberService = service.ServiceProvider.GetService<ISecurityGeneratorNumberService>()!;
|
||||
|
||||
//如果顶级目录不存在,创建顶级目录
|
||||
if (folderLog == null)
|
||||
folderLog = repositoryDmsFolderDeleteLog.DetachedEntities.Where(x => x.FolderLocalName == service.UserId).FirstOrDefault()!;
|
||||
|
||||
if (folderLog == null)
|
||||
{
|
||||
folderLog = new DmsFolderDeleteLogEntity();
|
||||
folderLog.FolderName = securityGeneratorNumberService.GetNo(MasterPrefixPolicy.DMS_FOLDER_DELETE_LOG, MasterPrefixPolicy.DMS_FOLDER_DELETE_LOG_FOLDER_NAME, null, YesNoPolicy.NO, "00000000");
|
||||
folderLog.FolderLocalName = service.UserId;
|
||||
repositoryDmsFolderDeleteLog.InsertNow(folderLog);
|
||||
}
|
||||
|
||||
string folderNameParent = folderLog.FolderName;
|
||||
|
||||
if (dmsFile.IsDirectoryIndc == YesNoPolicy.YES)
|
||||
{
|
||||
CreateDmsFileDeleteLogByDirectory(dmsFile, folderLog);
|
||||
return;
|
||||
}
|
||||
|
||||
DmsFileUploadDeleteLogEntity uploadLog = new DmsFileUploadDeleteLogEntity();
|
||||
|
||||
uploadLog.FileCategory = "MASTER";
|
||||
uploadLog.UploadName = securityGeneratorNumberService.GetNo(MasterPrefixPolicy.UPLOAD_DMS_FILE_DELETE_LOG, MasterPrefixPolicy.UPLOAD_DMS_FILE_DELETE_LOG_UPLOAD_NAME, "FL", YesNoPolicy.NO, MasterPrefixPolicy.UPLOAD_DMS_FILE_DELETE_LOG_FORMAT);
|
||||
uploadLog.OrgFileName = dmsFile.OrgFileName;
|
||||
|
||||
//创建Dms文件,需更新父目录
|
||||
DmsFileDeleteLogEntity entityLog = new DmsFileDeleteLogEntity();
|
||||
ObjectCopyHelper.Copy(dmsFile, entityLog);
|
||||
entityLog.FilePath = folderNameParent;
|
||||
entityLog.FileId = 0;
|
||||
repositoryDmsFileDeleteLog.InsertNow(entityLog);
|
||||
|
||||
uploadLog.FileId = entityLog.FileId;
|
||||
repositoryDmsFileUploadDeleteLog.InsertNow(uploadLog);
|
||||
|
||||
//创建目录关系表
|
||||
DmsFolderMapDeleteLogEntity mapLog = new DmsFolderMapDeleteLogEntity();
|
||||
mapLog.FolderNameParent = folderNameParent;
|
||||
mapLog.FolderNameSon = entityLog.FileName;
|
||||
repositoryDmsFolderMapDeleteLog.InsertNow(mapLog);
|
||||
}
|
||||
|
||||
|
||||
[PermissionOperate(name: MasterPermissionPolicy.DmsFile, operate: Operate.Insert)]
|
||||
[UnitOfWork]
|
||||
public void RestoreDmsFile(long key)
|
||||
{
|
||||
DeleteLog(key, true);
|
||||
}
|
||||
|
||||
|
||||
private void RestoreDmsFileByDirectory(DmsFileDeleteLogEntity dmsFile, DmsFolderEntity folder)
|
||||
{
|
||||
IRepository<DmsFolderEntity> repositoryFolder = repository.GetRepository<IRepository<DmsFolderEntity>>();
|
||||
ISecurityGeneratorNumberService securityGeneratorNumberService = service.ServiceProvider.GetService<ISecurityGeneratorNumberService>()!;
|
||||
|
||||
string folderNameParent = folder.FolderName;
|
||||
|
||||
//创建当前目录
|
||||
folder = new DmsFolderEntity();
|
||||
folder.FolderName = securityGeneratorNumberService.GetNo(MasterPrefixPolicy.DMS_FOLDER_DELETE_LOG, MasterPrefixPolicy.DMS_FOLDER_DELETE_LOG_FOLDER_NAME, "DR", YesNoPolicy.NO, "00000000");
|
||||
folder.FolderLocalName = dmsFile.OrgFileName;//如果是目录,这个就是目录名称
|
||||
repositoryFolder.InsertNow(folder);
|
||||
//创建目录关系表
|
||||
DmsFolderMapEntity map = new DmsFolderMapEntity();
|
||||
IRepository<DmsFolderMapEntity> repositoryFolderMap = repository.GetRepository<IRepository<DmsFolderMapEntity>>();
|
||||
map.FolderNameParent = folderNameParent;
|
||||
map.FolderNameSon = folder.FolderName;
|
||||
repositoryFolderMap.InsertNow(map);
|
||||
|
||||
//创建Dms目录,要更新目录名
|
||||
IRepository<DmsFileEntity> repositoryDmsFile = repository.GetRepository<IRepository<DmsFileEntity>>();
|
||||
DmsFileEntity entity = new DmsFileEntity();
|
||||
ObjectCopyHelper.Copy(dmsFile, entity);
|
||||
entity.OrderKey = entity.FileName = folder.FolderName;
|
||||
|
||||
entity.FileId = 0;
|
||||
entity.FilePath = folderNameParent;
|
||||
repositoryDmsFile.InsertNow(entity);
|
||||
|
||||
DmsFileUploadEntity upload = new DmsFileUploadEntity();
|
||||
upload.FileId = entity.FileId;
|
||||
upload.FileCategory = "MASTER";
|
||||
upload.UploadName = securityGeneratorNumberService.GetNo(MasterPrefixPolicy.UPLOAD_DMS_FILE_DELETE_LOG, MasterPrefixPolicy.UPLOAD_DMS_FILE_DELETE_LOG_UPLOAD_NAME, "DR", YesNoPolicy.NO, MasterPrefixPolicy.UPLOAD_DMS_FILE_DELETE_LOG_FORMAT);
|
||||
upload.OrgFileName = entity.OrgFileName;
|
||||
|
||||
IRepository<DmsFileUploadEntity> repositoryUpload = repository.GetRepository<IRepository<DmsFileUploadEntity>>();
|
||||
|
||||
repositoryUpload.InsertNow(upload);
|
||||
|
||||
IRepository<DmsFileDeleteLogEntity> repositoryDmsFileDeleteLog = repository.GetRepository<IRepository<DmsFileDeleteLogEntity>>();
|
||||
//创建所有目录下的内容
|
||||
DmsFileDeleteLogEntity[] dmsFiles = repositoryDmsFileDeleteLog.DetachedEntities.Where(x => x.FilePath == dmsFile.FileName).ToArray();
|
||||
if (dmsFiles == null || dmsFiles.Length == 0) return;
|
||||
|
||||
foreach (var dms in dmsFiles)
|
||||
{
|
||||
RestoreDmsFile(dms, folder);
|
||||
}
|
||||
}
|
||||
|
||||
private void RestoreDmsFile(DmsFileDeleteLogEntity dmsFile, DmsFolderEntity folder)
|
||||
{
|
||||
IRepository<DmsFileEntity> repositoryDmsFile = repository.GetRepository<IRepository<DmsFileEntity>>();
|
||||
IRepository<DmsFileUploadEntity> repositoryDmsFileUpload = repository.GetRepository<IRepository<DmsFileUploadEntity>>();
|
||||
IRepository<DmsFolderEntity> repositoryDmsFolder = repository.GetRepository<IRepository<DmsFolderEntity>>();
|
||||
IRepository<DmsFolderMapEntity> repositoryDmsFolderMap = repository.GetRepository<IRepository<DmsFolderMapEntity>>();
|
||||
|
||||
ISecurityGeneratorNumberService securityGeneratorNumberService = service.ServiceProvider.GetService<ISecurityGeneratorNumberService>()!;
|
||||
|
||||
//如果顶级目录不存在,创建顶级目录
|
||||
if (folder == null)
|
||||
folder = repositoryDmsFolder.DetachedEntities.Where(x => x.FolderLocalName == service.UserId).FirstOrDefault()!;
|
||||
|
||||
if (folder == null)
|
||||
{
|
||||
folder = new DmsFolderEntity();
|
||||
folder.FolderName = securityGeneratorNumberService.GetNo(MasterPrefixPolicy.DMS_FOLDER_DELETE_LOG, MasterPrefixPolicy.DMS_FOLDER_DELETE_LOG_FOLDER_NAME, null, YesNoPolicy.NO, "00000000");
|
||||
folder.FolderLocalName = service.UserId;
|
||||
repositoryDmsFolder.InsertNow(folder);
|
||||
}
|
||||
|
||||
string folderNameParent = folder.FolderName;
|
||||
|
||||
if (dmsFile.IsDirectoryIndc == YesNoPolicy.YES)
|
||||
{
|
||||
RestoreDmsFileByDirectory(dmsFile, folder);
|
||||
return;
|
||||
}
|
||||
|
||||
DmsFileUploadEntity uploadLog = new DmsFileUploadEntity();
|
||||
|
||||
uploadLog.FileCategory = "MASTER";
|
||||
uploadLog.UploadName = securityGeneratorNumberService.GetNo(MasterPrefixPolicy.UPLOAD_DMS_FILE_DELETE_LOG, MasterPrefixPolicy.UPLOAD_DMS_FILE_DELETE_LOG_UPLOAD_NAME, "FL", YesNoPolicy.NO, MasterPrefixPolicy.UPLOAD_DMS_FILE_DELETE_LOG_FORMAT);
|
||||
uploadLog.OrgFileName = dmsFile.OrgFileName;
|
||||
|
||||
//创建Dms文件,需更新父目录
|
||||
DmsFileEntity entityLog = new DmsFileEntity();
|
||||
ObjectCopyHelper.Copy(dmsFile, entityLog);
|
||||
entityLog.FilePath = folderNameParent;
|
||||
entityLog.FileId = 0;
|
||||
repositoryDmsFile.InsertNow(entityLog);
|
||||
|
||||
uploadLog.FileId = entityLog.FileId;
|
||||
repositoryDmsFileUpload.InsertNow(uploadLog);
|
||||
|
||||
//创建目录关系表
|
||||
DmsFolderMapEntity mapLog = new DmsFolderMapEntity();
|
||||
mapLog.FolderNameParent = folderNameParent;
|
||||
mapLog.FolderNameSon = entityLog.FileName;
|
||||
repositoryDmsFolderMap.InsertNow(mapLog);
|
||||
}
|
||||
|
||||
|
||||
[PermissionOperate(name: MasterPermissionPolicy.DmsFile, operate: Operate.Delete)]
|
||||
[UnitOfWork]
|
||||
public void DeleteLog(long key)
|
||||
{
|
||||
DeleteLog(key, false);
|
||||
}
|
||||
private void DeleteLog(long key, bool isRestore)
|
||||
{
|
||||
IRepository<DmsFileDeleteLogEntity> repositoryDmsFileDeleteLog = repository.GetRepository<IRepository<DmsFileDeleteLogEntity>>();
|
||||
|
||||
@@ -451,6 +651,8 @@ namespace CloudBuilder.Master.Service
|
||||
|
||||
if (dmsFile == null) return;
|
||||
|
||||
if (isRestore) RestoreDmsFile(dmsFile, null);
|
||||
|
||||
repositoryDmsFileDeleteLog.DeleteNow(dmsFile);
|
||||
|
||||
IRepository<DmsFileUploadDeleteLogEntity> repositoryDmsFileUploadDeleteLog = repository.GetRepository<IRepository<DmsFileUploadDeleteLogEntity>>();
|
||||
@@ -502,7 +704,7 @@ namespace CloudBuilder.Master.Service
|
||||
if (dmsFiles == null || dmsFiles.Length == 0) return;
|
||||
foreach (var dmsFile in dmsFiles)
|
||||
{
|
||||
DeleteLog(dmsFile.FileId);
|
||||
DeleteLog(dmsFile.FileId, false);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -512,7 +714,7 @@ namespace CloudBuilder.Master.Service
|
||||
if (dmsFiles == null || dmsFiles.Length == 0) return;
|
||||
foreach (var dmsFile in dmsFiles)
|
||||
{
|
||||
Delete(dmsFile.FileId);
|
||||
Delete(dmsFile.FileId, true);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user