ow
This commit is contained in:
1 parent
7f5bf3c68d
commit
816209fc35
37 files changed
+3236
-4515
No files matched your search
@@ -82,7 +82,7 @@ namespace CloudBuilder.Master.Service
|
||||
|
||||
var webRootPath = service.Configuration[ServiceSettingsPolicy.RequestPath];
|
||||
var phy = service.Configuration[ServiceSettingsPolicy.PhysicalFileDirectory];
|
||||
var scale = service.Configuration[ServiceSettingsPolicy.DmsFileScaleDirectory].Replace(phy, "");
|
||||
var scale = ServiceSettingsPolicy.GetDmsFileScaleDirectory(service).Replace(phy, "");
|
||||
List<string> prvs = new List<string>();
|
||||
//bool isAttached = Debugger.IsAttached;
|
||||
foreach (var item in list)
|
||||
@@ -150,7 +150,7 @@ namespace CloudBuilder.Master.Service
|
||||
|
||||
var webRootPath = service.Configuration[ServiceSettingsPolicy.RequestPath];
|
||||
var phy = service.Configuration[ServiceSettingsPolicy.PhysicalFileDirectory];
|
||||
var scale = service.Configuration[ServiceSettingsPolicy.DmsFileScaleDirectory].Replace(phy, "");
|
||||
var scale = ServiceSettingsPolicy.GetDmsFileScaleDirectory(service).Replace(phy, "");
|
||||
List<string> prvs = new List<string>();
|
||||
//bool isAttached = Debugger.IsAttached;
|
||||
foreach (var item in list)
|
||||
@@ -215,7 +215,7 @@ namespace CloudBuilder.Master.Service
|
||||
|
||||
var webRootPath = service.Configuration[ServiceSettingsPolicy.RequestPath];
|
||||
var phy = service.Configuration[ServiceSettingsPolicy.PhysicalFileDirectory];
|
||||
var scale = service.Configuration[ServiceSettingsPolicy.DmsFileScaleDirectory].Replace(phy, "");
|
||||
var scale = ServiceSettingsPolicy.GetDmsFileScaleDirectory(service).Replace(phy, "");
|
||||
|
||||
foreach (var item in list)
|
||||
{
|
||||
@@ -314,7 +314,7 @@ namespace CloudBuilder.Master.Service
|
||||
|
||||
var webRootPath = service.Configuration[ServiceSettingsPolicy.RequestPath];
|
||||
var phy = service.Configuration[ServiceSettingsPolicy.PhysicalFileDirectory];
|
||||
var scale = service.Configuration[ServiceSettingsPolicy.DmsFileScaleDirectory].Replace(phy, "");
|
||||
var scale = ServiceSettingsPolicy.GetDmsFileScaleDirectory(service).Replace(phy, "");
|
||||
|
||||
|
||||
foreach (var item in list)
|
||||
@@ -1140,7 +1140,109 @@ namespace CloudBuilder.Master.Service
|
||||
string filePath = null;
|
||||
if (httpContextAccessor.HttpContext.Request.Headers.ContainsKey("FilePath"))
|
||||
filePath = httpContextAccessor.HttpContext.Request.Headers["FilePath"].ToString();
|
||||
dmsFile = PackUploadFile(file, filePath);
|
||||
PackUploadFile(file, filePath);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void PackUploadFile(IFormFile file, string folderName)
|
||||
{
|
||||
var uploadFileRootPath = ServiceSettingsPolicy.GetUploadFileDirectory(service);
|
||||
|
||||
//文件后缀
|
||||
var fileExtension = Path.GetExtension(file.Name.Replace(" ", "")).ToLower();//获取文件格式,拓展名
|
||||
if (string.IsNullOrEmpty(fileExtension)) fileExtension = "ext";
|
||||
|
||||
var filePath = Path.Combine(folderName, fileExtension.Replace(".", ""), "");
|
||||
|
||||
//创建存储文件夹
|
||||
if (!Directory.Exists(Path.Combine(uploadFileRootPath, filePath)))
|
||||
{
|
||||
Directory.CreateDirectory(Path.Combine(uploadFileRootPath, filePath));
|
||||
}
|
||||
//判断文件大小
|
||||
var fileSize = file.Length;
|
||||
if (fileSize > 1024 * 1024 * 100) //100M TODO:(1mb=1024X1024b)
|
||||
{
|
||||
return;
|
||||
}
|
||||
//保存的文件名称
|
||||
string fullName = Path.Combine(uploadFileRootPath, filePath, file.FileName);
|
||||
if (File.Exists(fullName)) File.Delete(fullName);
|
||||
//文件保存
|
||||
using (var fs = System.IO.File.Create(fullName))
|
||||
{
|
||||
file.CopyTo(fs);
|
||||
fs.Flush();
|
||||
}
|
||||
//FileName上传Uid:xxxx-1-1.xxx
|
||||
string[] fns = file.FileName.Split('-');
|
||||
//如果上传的不是最后一个分片
|
||||
if (fns[fns.Length - 2] != fns[fns.Length - 1].Split('.')[0])
|
||||
{
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
string backupRootPath = ServiceSettingsPolicy.GetBackupFileDirectory(service);
|
||||
string backupFileName = Path.Combine(backupRootPath, filePath, file.FileName);
|
||||
if (!Directory.Exists(Path.Combine(backupRootPath, filePath)))
|
||||
{
|
||||
Directory.CreateDirectory(Path.Combine(backupRootPath, filePath));
|
||||
}
|
||||
|
||||
if (fns[fns.Length - 1].Split('.')[0] == "1")
|
||||
{
|
||||
if (File.Exists(backupFileName)) File.Delete(backupFileName);
|
||||
File.Copy(fullName, backupFileName, true);
|
||||
}
|
||||
else//合并文件
|
||||
{
|
||||
List<byte[]> all = new List<byte[]>();
|
||||
List<string> fileNames = new List<string>();
|
||||
//文件分片从1开始
|
||||
for (int i = 1; i <= Convert.ToInt32(fns[fns.Length - 1].Split('.')[0]); i++)
|
||||
{
|
||||
fns[fns.Length - 2] = i.ToString();
|
||||
|
||||
fileNames.Add(Path.Combine(uploadFileRootPath, filePath, fns.ToDelimiteredList('-')));
|
||||
}
|
||||
|
||||
if (File.Exists(backupFileName)) File.Delete(backupFileName);
|
||||
|
||||
using (FileStream outputFile = File.Create(backupFileName)) // 创建输出文件流
|
||||
{
|
||||
foreach (string fileName in fileNames)
|
||||
{
|
||||
byte[] buffer = File.ReadAllBytes(fileName); // 读取每个文件内容到字节数组
|
||||
outputFile.Write(buffer, 0, buffer.Length); // 将字节数组写入输出文件流
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
[PermissionOperate(name: MasterPermissionPolicy.DmsFile, operate: Operate.Insert)]
|
||||
[UnitOfWork]
|
||||
public void UploadDmsFile()
|
||||
{
|
||||
//采用分片上传文件(以及后面分片下载)
|
||||
DmsFileEntity dmsFile = null;
|
||||
|
||||
var files = httpContextAccessor.HttpContext.Request.Form.Files;
|
||||
|
||||
var currentDate = DateTime.Now;
|
||||
if (files.Any())
|
||||
{
|
||||
foreach (var file in files)
|
||||
{
|
||||
string filePath = null;
|
||||
if (httpContextAccessor.HttpContext.Request.Headers.ContainsKey("FilePath"))
|
||||
filePath = httpContextAccessor.HttpContext.Request.Headers["FilePath"].ToString();
|
||||
dmsFile = PackUploadDmsFile(file, filePath);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -1151,9 +1253,9 @@ namespace CloudBuilder.Master.Service
|
||||
}
|
||||
}
|
||||
|
||||
public DmsFileEntity PackUploadFile(IFormFile file, string folderName)
|
||||
public DmsFileEntity PackUploadDmsFile(IFormFile file, string folderName)
|
||||
{
|
||||
var webRootPath = service.Configuration[ServiceSettingsPolicy.DmsFileUploadDirectory];
|
||||
var webRootPath = ServiceSettingsPolicy.GetDmsFileUploadDirectory(service);
|
||||
DmsFileEntity dmsFile = new DmsFileEntity();
|
||||
dmsFile.OrgFileName = file.Name.Replace(" ", "");
|
||||
dmsFile.FilePath = folderName;
|
||||
@@ -1199,7 +1301,7 @@ namespace CloudBuilder.Master.Service
|
||||
dmsFile.OrderKey = file.FileName;
|
||||
dmsFile.FileName = file.FileName;
|
||||
dmsFile.FileSize = Convert.ToInt32(fileSize / 1024);
|
||||
var backupRootPath = service.Configuration[ServiceSettingsPolicy.DmsFileBackupDirectory];
|
||||
var backupRootPath = ServiceSettingsPolicy.GetDmsFileBackupDirectory(service);
|
||||
string backupName = Path.Combine(backupRootPath, filePath, dmsFile.FileName);
|
||||
if (!Directory.Exists(Path.Combine(backupRootPath, filePath)))
|
||||
{
|
||||
@@ -1225,7 +1327,7 @@ namespace CloudBuilder.Master.Service
|
||||
fileNames.Add(Path.Combine(webRootPath, filePath, fns.ToDelimiteredList('-')));
|
||||
}
|
||||
dmsFile.FileName = Path.GetFileName(fullName);
|
||||
var backupRootPath = service.Configuration[ServiceSettingsPolicy.DmsFileBackupDirectory];
|
||||
var backupRootPath = ServiceSettingsPolicy.GetDmsFileBackupDirectory(service);
|
||||
|
||||
fullName = Path.Combine(backupRootPath, filePath, dmsFile.FileName);
|
||||
if (!Directory.Exists(Path.Combine(backupRootPath, filePath)))
|
||||
@@ -1328,7 +1430,7 @@ namespace CloudBuilder.Master.Service
|
||||
// 仅修改这一行,替换硬编码反斜杠字符串拼接
|
||||
var filePath = Path.Combine(service.UserId, fileExtension.Replace(".", ""), "");
|
||||
// 这里同步改成Path.Combine,不要直接+字符串拼接
|
||||
string saveName = Path.Combine(service.Configuration[ServiceSettingsPolicy.DmsFileScaleDirectory], filePath, dmsFile.OrderKey);
|
||||
string saveName = Path.Combine(ServiceSettingsPolicy.GetDmsFileScaleDirectory(service), filePath, dmsFile.OrderKey);
|
||||
|
||||
if (!Directory.Exists(Path.GetDirectoryName(saveName)))
|
||||
{
|
||||
@@ -1518,7 +1620,7 @@ namespace CloudBuilder.Master.Service
|
||||
[PermissionOperate(name: MasterPermissionPolicy.DmsFile, operate: Operate.Find)]
|
||||
public dynamic DownloadFilePreview(DmsFileEntity dmsFile)
|
||||
{
|
||||
var webRootPath = service.Configuration[ServiceSettingsPolicy.DmsFileScaleDirectory];
|
||||
var webRootPath = ServiceSettingsPolicy.GetDmsFileScaleDirectory(service);
|
||||
var fileExtension = Path.GetExtension(dmsFile.OrderKey);
|
||||
|
||||
var filePath = Path.Combine(dmsFile.CreatedBy, fileExtension.Replace(".", ""), "");
|
||||
@@ -1538,7 +1640,7 @@ namespace CloudBuilder.Master.Service
|
||||
[PermissionOperate(name: MasterPermissionPolicy.DmsFile, operate: Operate.Find)]
|
||||
public dynamic DownloadFileCombine(string fileName)
|
||||
{
|
||||
var webRootPath = service.Configuration[ServiceSettingsPolicy.DmsFileUploadDirectory];
|
||||
var webRootPath = ServiceSettingsPolicy.GetDmsFileUploadDirectory(service);
|
||||
var fileExtension = Path.GetExtension(fileName);
|
||||
|
||||
var filePath = Path.Combine(service.UserId, fileExtension.Replace(".", ""), "");
|
||||
@@ -1615,7 +1717,7 @@ namespace CloudBuilder.Master.Service
|
||||
{
|
||||
IRepository<DmsFolderMapEntity> repositoryFolderMap = repository.GetRepository<IRepository<DmsFolderMapEntity>>();
|
||||
|
||||
return repositoryFolderMap.DetachedEntities.Where(x => x.FolderNameSon == folderName).Count();
|
||||
return repositoryFolderMap.DetachedEntities.Where(x => x.FolderNameParent == folderName).Count();
|
||||
}
|
||||
|
||||
[PermissionOperate(name: MasterPermissionPolicy.DmsFile, operate: Operate.Find)]
|
||||
|
||||
@@ -425,6 +425,8 @@ namespace CloudBuilder.Master.Service
|
||||
|
||||
if (familyGroupFolders == null || familyGroupFolders.Length == 0) return;
|
||||
|
||||
List<FamilyGroupPermissionEntity> manages = new List<FamilyGroupPermissionEntity>();
|
||||
FamilyGroupPermissionEntity familyGroupPermission;
|
||||
foreach (FamilyGroupFolderEntity dto in familyGroupFolders)
|
||||
{
|
||||
//原来不存在的插入
|
||||
@@ -445,7 +447,15 @@ namespace CloudBuilder.Master.Service
|
||||
repositoryFamilyGroupFolder.InsertNow(familyGroupFolderEntity);
|
||||
|
||||
dto.FolderName = familyGroupFolderEntity.FolderName;
|
||||
|
||||
|
||||
familyGroupPermission = new FamilyGroupPermissionEntity();
|
||||
familyGroupPermission.FamilyName = familyName;
|
||||
familyGroupPermission.FolderName = dto.FolderName;
|
||||
familyGroupPermission.UserName = service.UserId;
|
||||
manages.Add(familyGroupPermission);
|
||||
}
|
||||
InsertFamilyGroupPermission(manages.ToArray());
|
||||
|
||||
}
|
||||
|
||||
@@ -559,8 +569,9 @@ namespace CloudBuilder.Master.Service
|
||||
|
||||
repository.UpdateNow(familyGroup);
|
||||
|
||||
SaveFamilyGroupFolders(familyGroup.FamilyName, data.FamilyGroupFolders);
|
||||
//因为SavePermissions要在SaveFamilyGroupFolders之前,因为SaveFamilyGroupFolders要插入管理员的权限
|
||||
SavePermissions(familyGroup.FamilyName, data.FamilyGroupPermissions);
|
||||
SaveFamilyGroupFolders(familyGroup.FamilyName, data.FamilyGroupFolders);
|
||||
SaveFamilyGroupManagers(familyGroup.FamilyName, data.FamilyGroupManagers);
|
||||
|
||||
//创建群根目录
|
||||
|
||||
@@ -17,6 +17,9 @@ namespace CloudBuilder.Master.Service
|
||||
{
|
||||
public class FamilyPersonService : IFamilyPersonService
|
||||
{
|
||||
/// <summary>头像上传目录,与前端 FileUpload 的 file-path 保持一致</summary>
|
||||
private const string AVATAR_FOLDER_NAME = "FamilyPersonAvatar";
|
||||
|
||||
private readonly IApplicationService service;
|
||||
|
||||
private IRepository<FamilyPersonEntity> repository;
|
||||
@@ -43,6 +46,9 @@ namespace CloudBuilder.Master.Service
|
||||
if (fp == null) return data;
|
||||
|
||||
data.FamilyPerson = new FamilyPersonDisplayData(fp);
|
||||
// AvatarFilename 保存的是文件名(如 xxxx-3-3.jpg),AvatarUrl 才是带路径的访问地址
|
||||
|
||||
data.FamilyPerson.AvatarUrl = FileTypePolicy.PackAvatarUrl(service, AVATAR_FOLDER_NAME, data.FamilyPerson.AvatarFilename);
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ using CloudBuilder.Master.Policy;
|
||||
using CloudBuilder.Master.SearchCriteria;
|
||||
using CloudBuilder.Security.Data;
|
||||
using CloudBuilder.Security.Entity;
|
||||
using CloudBuilder.Security.Policy;
|
||||
using CloudBuilder.Security.Service;
|
||||
using CloudBuilder.Security.Utility;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
@@ -18,6 +19,9 @@ namespace CloudBuilder.Master.Service
|
||||
{
|
||||
public class FamilyTreeService : IFamilyTreeService
|
||||
{
|
||||
/// <summary>头像上传目录,与前端 FileUpload 的 file-path 保持一致</summary>
|
||||
private const string AVATAR_FOLDER_NAME = "FamilyPersonAvatar";
|
||||
|
||||
private readonly IApplicationService service;
|
||||
|
||||
private IRepository<FamilyTreeEntity> repository;
|
||||
@@ -27,6 +31,23 @@ namespace CloudBuilder.Master.Service
|
||||
repository = service.GetRepository<IRepository<FamilyTreeEntity>>();
|
||||
}
|
||||
|
||||
/// <summary>把 AvatarFilename 拼装成可访问的 AvatarUrl,供谱系图卡片显示头像</summary>
|
||||
private void FillAvatarUrl(FamilyPersonDisplayData person)
|
||||
{
|
||||
if (person == null) return;
|
||||
person.AvatarUrl = FileTypePolicy.PackAvatarUrl(service, AVATAR_FOLDER_NAME, person.AvatarFilename);
|
||||
}
|
||||
|
||||
/// <summary>批量填充头像访问地址</summary>
|
||||
private void FillAvatarUrl(FamilyPersonDisplayData[] persons)
|
||||
{
|
||||
if (persons == null || persons.Length == 0) return;
|
||||
foreach (FamilyPersonDisplayData person in persons)
|
||||
{
|
||||
FillAvatarUrl(person);
|
||||
}
|
||||
}
|
||||
|
||||
[PermissionOperate(name: MasterPermissionPolicy.FamilyTree, operate: Operate.Find)]
|
||||
public FamilyTreeData FindAllByTreeId(string treeId)
|
||||
{
|
||||
@@ -46,6 +67,8 @@ namespace CloudBuilder.Master.Service
|
||||
|
||||
data.CurrentPerson.FamilyPerson = new FamilyPersonDisplayData(repositoryFamilyPerson.DetachedEntities.Where(x => x.PersonId == currentPerson).FirstOrDefault()!);
|
||||
|
||||
FillAvatarUrl(data.CurrentPerson.FamilyPerson);
|
||||
|
||||
data.FamilyTree.AncestorPersonGenealogyName = data.CurrentPerson.FamilyPerson.GenealogyName;
|
||||
|
||||
IRepository<FamilyTreeChildrenMapViewEntity> repositoryChildrenMap = repository.GetRepository<IRepository<FamilyTreeChildrenMapViewEntity>>();
|
||||
@@ -72,6 +95,7 @@ namespace CloudBuilder.Master.Service
|
||||
if (families != null && families.Length > 0)
|
||||
{
|
||||
data.CurrentPerson.FamilyTreePersons = families.Select(x => new FamilyPersonDisplayData(x)).ToArray();
|
||||
FillAvatarUrl(data.CurrentPerson.FamilyTreePersons);
|
||||
}
|
||||
|
||||
return data;
|
||||
@@ -116,6 +140,8 @@ namespace CloudBuilder.Master.Service
|
||||
data.CurrentPerson.FamilyPerson = new FamilyPersonDisplayData(repositoryFamilyPerson.DetachedEntities.Where(x => x.PersonId == personId).FirstOrDefault()!);
|
||||
}
|
||||
|
||||
FillAvatarUrl(data.CurrentPerson.FamilyPerson);
|
||||
|
||||
IRepository<FamilyTreeChildrenMapViewEntity> repositoryChildrenMap = repository.GetRepository<IRepository<FamilyTreeChildrenMapViewEntity>>();
|
||||
|
||||
IRepository<FamilyTreeSpouseMapViewEntity> repositorySpouseMap = repository.GetRepository<IRepository<FamilyTreeSpouseMapViewEntity>>();
|
||||
@@ -125,6 +151,26 @@ namespace CloudBuilder.Master.Service
|
||||
//data.CurrentPerson.FamilyTreeParentMaps = repositoryChildrenMap.GetRepository<IRepository<FamilyTreeChildrenMapViewEntity>>().DetachedEntities.Where(x => x.ChildrenId == key).OrderBy(x => x.Orderby).ToArray();
|
||||
data.CurrentPerson.FamilyTreeChildrenMaps = repositoryChildrenMap.GetRepository<IRepository<FamilyTreeChildrenMapViewEntity>>().DetachedEntities.Where(x => x.PersonId == currentPerson).OrderBy(x => x.Orderby).ToArray();
|
||||
|
||||
// 补充当前人员及其配偶、子女的人员信息(含头像地址),供谱系图卡片显示头像
|
||||
List<string> ps = new List<string>();
|
||||
if (!string.IsNullOrEmpty(currentPerson)) ps.Add(currentPerson);
|
||||
if (data.CurrentPerson.FamilyTreeSpouseMaps != null)
|
||||
{
|
||||
ps.AddRange(data.CurrentPerson.FamilyTreeSpouseMaps.Select(x => x.SpouseId).ToArray());
|
||||
}
|
||||
if (data.CurrentPerson.FamilyTreeChildrenMaps != null)
|
||||
{
|
||||
ps.AddRange(data.CurrentPerson.FamilyTreeChildrenMaps.Select(x => x.ChildrenId).ToArray());
|
||||
}
|
||||
|
||||
ps = ps.Where(x => !string.IsNullOrEmpty(x)).Distinct().ToList();
|
||||
FamilyPersonEntity[] families = repositoryFamilyPerson.DetachedEntities.Where(x => ps.AsQueryable().Contains(x.PersonId)).ToArray();
|
||||
if (families != null && families.Length > 0)
|
||||
{
|
||||
data.CurrentPerson.FamilyTreePersons = families.Select(x => new FamilyPersonDisplayData(x)).ToArray();
|
||||
FillAvatarUrl(data.CurrentPerson.FamilyTreePersons);
|
||||
}
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
|
||||
@@ -421,7 +421,7 @@ namespace CloudBuilder.Master.Service
|
||||
|
||||
var webRootPath = service.Configuration[ServiceSettingsPolicy.RequestPath];
|
||||
var phy = service.Configuration[ServiceSettingsPolicy.PhysicalFileDirectory];
|
||||
var backup = service.Configuration[ServiceSettingsPolicy.DmsFileBackupDirectory].Replace(phy, "").Substring(1);
|
||||
var backup = ServiceSettingsPolicy.GetDmsFileBackupDirectory(service).Replace(phy, "").Substring(1);
|
||||
|
||||
var fileExtension = Path.GetExtension(dmsFile.OrderKey);
|
||||
var filePathRel = Path.Combine(webRootPath.Substring(1), backup, dmsFile.CreatedBy, fileExtension.Replace(".", ""), "");
|
||||
|
||||
@@ -78,7 +78,7 @@ namespace CloudBuilder.Master.Service
|
||||
{
|
||||
var webRootPath = service.Configuration[ServiceSettingsPolicy.RequestPath];
|
||||
var phy = service.Configuration[ServiceSettingsPolicy.PhysicalFileDirectory];
|
||||
var scale = service.Configuration[ServiceSettingsPolicy.DmsFileScaleDirectory].Replace(phy, "");
|
||||
var scale = ServiceSettingsPolicy.GetDmsFileScaleDirectory(service).Replace(phy, "");
|
||||
|
||||
IRepository<DmsFileEntity> repositoryDmsFile = repository.GetRepository<IRepository<DmsFileEntity>>();
|
||||
|
||||
@@ -86,7 +86,7 @@ namespace CloudBuilder.Master.Service
|
||||
{
|
||||
if (!string.IsNullOrEmpty(item.Url) && FileTypePolicy.GetType(item.Url!) == FileTypePolicy.VIDEO)
|
||||
{
|
||||
var upload = service.Configuration[ServiceSettingsPolicy.DmsFileUploadDirectory].Replace(phy, "");
|
||||
var upload = ServiceSettingsPolicy.GetDmsFileUploadDirectory(service).Replace(phy, "");
|
||||
|
||||
var filePathRel = Path.Combine(upload, item.CreatedBy, "m3u8", "");
|
||||
var filePath = filePathRel.Replace(Path.DirectorySeparatorChar, '/');
|
||||
|
||||
Reference in new issue
Block a user