This commit is contained in:
itcsx committed 2026-09-15 20:44:09 +08:00
1 parent f2f5807372
commit 5d0b0c751a
16 files changed
+746 -10

No files matched your search

@@ -6,6 +6,7 @@ using CloudBuilder.Master.Data;
using CloudBuilder.Master.Entity;
using CloudBuilder.Master.Policy;
using CloudBuilder.Master.SearchCriteria;
using CloudBuilder.Master.Service.FamilyTreeUtility;
using CloudBuilder.Security.Data;
using CloudBuilder.Security.Entity;
using CloudBuilder.Security.Policy;
@@ -48,6 +49,8 @@ namespace CloudBuilder.Master.Service
data.FamilyPerson = new FamilyPersonDisplayData(fp);
// AvatarFilename 保存的是文件名(如 xxxx-3-3.jpg),AvatarUrl 才是带路径的访问地址
data.FamilyPerson.IsCanAmend = new FamilyTreePermissionHelper(service).HasPermission(data.FamilyPerson.TreeId, data.FamilyPerson.PersonId);
data.FamilyPerson.AvatarUrl = FileTypePolicy.PackAvatarUrl(service, AVATAR_FOLDER_NAME, data.FamilyPerson.AvatarFilename);
return data;
@@ -6,6 +6,7 @@ using CloudBuilder.Master.Data;
using CloudBuilder.Master.Entity;
using CloudBuilder.Master.Policy;
using CloudBuilder.Master.SearchCriteria;
using CloudBuilder.Master.Service.FamilyTreeUtility;
using CloudBuilder.Security.Data;
using CloudBuilder.Security.Entity;
using CloudBuilder.Security.Policy;
@@ -128,9 +129,11 @@ namespace CloudBuilder.Master.Service
if (data.FamilyTreePermissions.Any())
{
data.IsManager = data.FamilyTreePermissions.Where(x => x.UserName == service.UserId && x.ManagerIndc == YesNoPolicy.YES).Any();
if (data.IsManager) data.IsCanAmend = true;
}
if(!data.IsManager && data.FamilyTreePermissions.Any())
if (!data.IsManager && data.FamilyTreePermissions.Any())
{
data.FamilyTreePermissions = data.FamilyTreePermissions.Where(x => x.UserName == service.UserId && x.ValidIndc == YesNoPolicy.NO).ToArray();
}
@@ -186,6 +189,9 @@ namespace CloudBuilder.Master.Service
FillAvatarUrl(data.CurrentPerson.FamilyTreePersons);
}
if (!data.IsCanAmend)
data.IsCanAmend = new FamilyTreePermissionHelper(service).HasPermission(data.FamilyTree.TreeId, currentPerson);
return data;
}
@@ -0,0 +1,87 @@
using CloudBuilder.Core.DatabaseAccessor.Entity;
using CloudBuilder.Master.Entity;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CloudBuilder.Master.Service.FamilyTreeUtility
{
public class FamilyTreePermissionHelper
{
private readonly IApplicationService service;
public FamilyTreePermissionHelper(IApplicationService service)
{
this.service = service;
}
private FamilyTreeChildrenMapEntity[] childrens = null;
private FamilyTreeSpouseMapEntity[] spouses = null;
public bool HasPermission(string treeId, string personId)
{
return GetPersonId(treeId).Where(x => x == personId).Any();
}
public List<string> GetPersonId(string treeId)
{
List<string> ps = new List<string>();
IRepository<FamilyTreePermissionEntity> repositoryPermission = service.GetRepository<IRepository<FamilyTreePermissionEntity>>();
FamilyTreePermissionEntity[] permissions = repositoryPermission.DetachedEntities.Where(x => x.TreeId == treeId && x.UserName == service.UserId && x.ValidIndc == YesNoPolicy.YES).ToArray();
if (permissions == null || permissions.Length == 0) return ps;
IRepository<FamilyTreeChildrenMapEntity> repositoryChildrenMap = service.GetRepository<IRepository<FamilyTreeChildrenMapEntity>>();
if (childrens == null || childrens.Length == 0)
childrens = repositoryChildrenMap.DetachedEntities.Where(x => x.TreeId == treeId).ToArray();
IRepository<FamilyTreeSpouseMapEntity> repositorySpouseMap = service.GetRepository<IRepository<FamilyTreeSpouseMapEntity>>();
if (childrens == null || childrens.Length == 0)
spouses = repositorySpouseMap.DetachedEntities.Where(x => x.TreeId == treeId).ToArray();
foreach (var permission in permissions)
{
PackPersonIdByChildrenMaps(childrens, spouses, permission.PersonId, ps);
}
return ps;
}
public void PackPersonIdByChildrenMaps(FamilyTreeChildrenMapEntity[] childrens, FamilyTreeSpouseMapEntity[] spouses, string personId, List<string> ps)
{
if (!ps.Contains(personId))
ps.Add(personId);
//所有下级都有权限
if (childrens != null && childrens.Where(x => x.PersonId == personId).Any())
{
foreach (FamilyTreeChildrenMapEntity child in childrens.Where(x => x.PersonId == personId))
PackPersonIdByChildrenMaps(childrens, spouses, child.ChildrenId, ps);
}
//父亲ID也有权限
if (childrens != null && childrens.Where(x => x.ChildrenId == personId).Any())
{
var p = childrens.Where(x => x.ChildrenId == personId).Select(x => x.PersonId).FirstOrDefault();
if (!ps.Contains(p))
ps.Add(p);
}
//配偶都有权限
PackPersonIdBySpouseMaps(spouses, personId, ps);
}
public void PackPersonIdBySpouseMaps(FamilyTreeSpouseMapEntity[] spouses, string personId, List<string> ps)
{
if (spouses == null) return;
if (spouses.Where(x => x.PersonId == personId).Any())
{
foreach (FamilyTreeSpouseMapEntity s in spouses.Where(x => x.PersonId == personId))
{
if (!ps.Contains(s.SpouseId))
ps.Add(s.SpouseId);
}
}
}
}
}
@@ -25,5 +25,7 @@ namespace CloudBuilder.Master.Data
}
public string? AvatarUrl { get; set; }
public bool? IsCanAmend { get; set; } = false;
}
}
@@ -17,6 +17,8 @@ namespace CloudBuilder.Master.Data
public FamilyPersonData? CurrentPerson { get; set; }
public bool IsManager { get; set; } = false;
public bool IsCanAmend { get; set; } = false;
public FamilyTreePermissionUserViewEntity[]? FamilyTreePermissions { get; set; }
}
}
@@ -0,0 +1,164 @@
using CloudBuilder.Core.DependencyInjection.Request;
using CloudBuilder.Core.Request;
using CloudBuilder.Core.Service;
using Microsoft.Extensions.DependencyInjection;
using CloudBuilder.Master.Service;
using CloudBuilder.Core.DatabaseAccessor.Entity;
using Microsoft.AspNetCore.Http;
using CloudBuilder.Master.Entity;
using System;
using CloudBuilder.Master.Data;
using CloudBuilder.Master.SearchCriteria;
namespace CloudBuilder.Request.Master
{
public class DmsFileRequest : IRequest
{
private readonly IServiceRequest serviceRequest;
public DmsFileRequest(IServiceRequest serviceRequest)
{
this.serviceRequest = serviceRequest;
}
public DmsFileEntity FindByKey(Int64 key)
{
return Task.Run(() => serviceRequest.PostAsJsonAsync<DmsFileEntity>("/DmsFile/FindByKey?key=" + key.ToString())).GetAwaiter().GetResult(); }
public DmsFileResultData FindBySearchCriteria(DmsFileSearchCriteria criteria)
{
return Task.Run(() => serviceRequest.PostAsJsonAsync<DmsFileSearchCriteria,DmsFileResultData>("/DmsFile/FindBySearchCriteria" , criteria)).GetAwaiter().GetResult(); }
public DmsFileResultData FindDatasBySearchCriteria(DmsFileSearchCriteria criteria)
{
return Task.Run(() => serviceRequest.PostAsJsonAsync<DmsFileSearchCriteria,DmsFileResultData>("/DmsFile/FindDatasBySearchCriteria" , criteria)).GetAwaiter().GetResult(); }
public DmsFileResultData FindDeleteLogBySearchCriteria(DmsFileSearchCriteria criteria)
{
return Task.Run(() => serviceRequest.PostAsJsonAsync<DmsFileSearchCriteria,DmsFileResultData>("/DmsFile/FindDeleteLogBySearchCriteria" , criteria)).GetAwaiter().GetResult(); }
public DmsFileResultData FindFamilyBySearchCriteria(DmsFileSearchCriteria criteria)
{
return Task.Run(() => serviceRequest.PostAsJsonAsync<DmsFileSearchCriteria,DmsFileResultData>("/DmsFile/FindFamilyBySearchCriteria" , criteria)).GetAwaiter().GetResult(); }
public DmsFileDeleteLogEntity FindDmsFileDeleteLogByKey(Int64 key)
{
return Task.Run(() => serviceRequest.PostAsJsonAsync<DmsFileDeleteLogEntity>("/DmsFile/FindDmsFileDeleteLogByKey?key=" + key.ToString())).GetAwaiter().GetResult(); }
public dynamic PrintBySearchCriteria(DmsFileSearchCriteria criteria)
{
return Task.Run(() => serviceRequest.PostAsJsonAsync<DmsFileSearchCriteria,dynamic>("/DmsFile/PrintBySearchCriteria" , criteria)).GetAwaiter().GetResult(); }
public DmsFileEntity Insert(DmsFileEntity data)
{
return Task.Run(() => serviceRequest.PostAsJsonAsync<DmsFileEntity,DmsFileEntity>("/DmsFile/Insert" , data)).GetAwaiter().GetResult(); }
public DmsFileEntity Update(DmsFileEntity data)
{
return Task.Run(() => serviceRequest.PostAsJsonAsync<DmsFileEntity,DmsFileEntity>("/DmsFile/Update" , data)).GetAwaiter().GetResult(); }
public void Delete(Int64 key)
{
Task.Run(() => serviceRequest.PostAsync("/DmsFile/Delete?key=" + key.ToString())).GetAwaiter().GetResult(); }
public void RestoreDmsFile(Int64 key)
{
Task.Run(() => serviceRequest.PostAsync("/DmsFile/RestoreDmsFile?key=" + key.ToString())).GetAwaiter().GetResult(); }
public void DeleteLog(Int64 key)
{
Task.Run(() => serviceRequest.PostAsync("/DmsFile/DeleteLog?key=" + key.ToString())).GetAwaiter().GetResult(); }
public string CreateDmsFolder(DmsFileEntity dmsFile)
{
return Task.Run(() => serviceRequest.PostAsJsonAsync<DmsFileEntity,string>("/DmsFile/CreateDmsFolder" , dmsFile)).GetAwaiter().GetResult(); }
public void DeleteFamilyDmsFolder(FamilyDmsFileViewEntity familyDmsFile)
{
Task.Run(() => serviceRequest.PostAsJsonAsync<FamilyDmsFileViewEntity,dynamic>("/DmsFile/DeleteFamilyDmsFolder" , familyDmsFile)).GetAwaiter().GetResult(); }
public void CreateFamilyDmsFolder(FamilyDmsFileViewEntity familyDmsFile)
{
Task.Run(() => serviceRequest.PostAsJsonAsync<FamilyDmsFileViewEntity,dynamic>("/DmsFile/CreateFamilyDmsFolder" , familyDmsFile)).GetAwaiter().GetResult(); }
public void UpdateDmsFolder(DmsFileEntity dmsFile)
{
Task.Run(() => serviceRequest.PostAsJsonAsync<DmsFileEntity,dynamic>("/DmsFile/UpdateDmsFolder" , dmsFile)).GetAwaiter().GetResult(); }
public SelectOption[] FindDmsFolders()
{
return Task.Run(() => serviceRequest.PostAsJsonAsync<SelectOption[]> ("/DmsFile/FindDmsFolders")).GetAwaiter().GetResult(); }
public SelectOption[] FindDmsFolderDeleteLogs()
{
return Task.Run(() => serviceRequest.PostAsJsonAsync<SelectOption[]> ("/DmsFile/FindDmsFolderDeleteLogs")).GetAwaiter().GetResult(); }
public DmsFolderData FindDmsFolderData()
{
return Task.Run(() => serviceRequest.PostAsJsonAsync<DmsFolderData> ("/DmsFile/FindDmsFolderData")).GetAwaiter().GetResult(); }
public void MoveDmsFolder(DmsFileEntity dmsFile)
{
Task.Run(() => serviceRequest.PostAsJsonAsync<DmsFileEntity,dynamic>("/DmsFile/MoveDmsFolder" , dmsFile)).GetAwaiter().GetResult(); }
public void UploadFile()
{
Task.Run(() => serviceRequest.PostAsync("/DmsFile/UploadFile")).GetAwaiter().GetResult(); }
public void UploadDmsFile()
{
Task.Run(() => serviceRequest.PostAsync("/DmsFile/UploadDmsFile")).GetAwaiter().GetResult(); }
public string FindM3u8Path(Int64 fileId)
{
return Task.Run(() => serviceRequest.PostAsJsonAsync<string>("/DmsFile/FindM3u8Path?fileId=" + fileId.ToString())).GetAwaiter().GetResult(); }
public string FindSourceVideoPath(Int64 fileId)
{
return Task.Run(() => serviceRequest.PostAsJsonAsync<string>("/DmsFile/FindSourceVideoPath?fileId=" + fileId.ToString())).GetAwaiter().GetResult(); }
public string FindDeleteLogM3u8Path(Int64 fileId)
{
return Task.Run(() => serviceRequest.PostAsJsonAsync<string>("/DmsFile/FindDeleteLogM3u8Path?fileId=" + fileId.ToString())).GetAwaiter().GetResult(); }
public dynamic DownloadFile(Int64 fileId)
{
return Task.Run(() => serviceRequest.PostAsJsonAsync<dynamic>("/DmsFile/DownloadFile?fileId=" + fileId.ToString())).GetAwaiter().GetResult(); }
public dynamic DownloadFilePreview(DmsFileEntity dmsFile)
{
return Task.Run(() => serviceRequest.PostAsJsonAsync<DmsFileEntity,dynamic>("/DmsFile/DownloadFilePreview" , dmsFile)).GetAwaiter().GetResult(); }
public dynamic DownloadFileCombine(string fileName)
{
return Task.Run(() => serviceRequest.PostAsJsonAsync<dynamic>("/DmsFile/DownloadFileCombine?fileName=" + fileName.ToString())).GetAwaiter().GetResult(); }
public SelectOption[] FindFamilyDmsFolders()
{
return Task.Run(() => serviceRequest.PostAsJsonAsync<SelectOption[]> ("/DmsFile/FindFamilyDmsFolders")).GetAwaiter().GetResult(); }
public SelectOption[] FindFamilyDmsFoldersByFamilyName(string familyName)
{
return Task.Run(() => serviceRequest.PostAsJsonAsync<SelectOption[]>("/DmsFile/FindFamilyDmsFoldersByFamilyName?familyName=" + familyName.ToString())).GetAwaiter().GetResult(); }
public Int32 FindDmsFolderMapByFolderName(string folderName)
{
return Task.Run(() => serviceRequest.PostAsJsonAsync<Int32>("/DmsFile/FindDmsFolderMapByFolderName?folderName=" + folderName.ToString())).GetAwaiter().GetResult(); }
public string FindFolderNameParentByFolderName(string folderName)
{
return Task.Run(() => serviceRequest.PostAsJsonAsync<string>("/DmsFile/FindFolderNameParentByFolderName?folderName=" + folderName.ToString())).GetAwaiter().GetResult(); }
public void CreateFamilyGroupFolder(FamilyGroupFolderEntity[] familyGroupFolder)
{
Task.Run(() => serviceRequest.PostAsJsonAsync<FamilyGroupFolderEntity[],dynamic>("/DmsFile/CreateFamilyGroupFolder" , familyGroupFolder)).GetAwaiter().GetResult(); }
public void DeleteFamilyGroupFolder(FamilyGroupFolderEntity[] familyGroupFolder)
{
Task.Run(() => serviceRequest.PostAsJsonAsync<FamilyGroupFolderEntity[],dynamic>("/DmsFile/DeleteFamilyGroupFolder" , familyGroupFolder)).GetAwaiter().GetResult(); }
}
}
@@ -0,0 +1,88 @@
using CloudBuilder.Core.DependencyInjection.Request;
using CloudBuilder.Core.Request;
using CloudBuilder.Core.Service;
using Microsoft.Extensions.DependencyInjection;
using CloudBuilder.Master.Service;
using CloudBuilder.Core.DatabaseAccessor.Entity;
using Microsoft.AspNetCore.Http;
using CloudBuilder.Master.Entity;
using System;
using CloudBuilder.Master.Data;
using CloudBuilder.Master.SearchCriteria;
namespace CloudBuilder.Request.Master
{
public class FamilyGroupRequest : IRequest
{
private readonly IServiceRequest serviceRequest;
public FamilyGroupRequest(IServiceRequest serviceRequest)
{
this.serviceRequest = serviceRequest;
}
public FamilyGroupData FindByKey(string key)
{
return Task.Run(() => serviceRequest.PostAsJsonAsync<FamilyGroupData>("/FamilyGroup/FindByKey?key=" + key.ToString())).GetAwaiter().GetResult(); }
public FamilyGroupResultData FindBySearchCriteria(FamilyGroupSearchCriteria criteria)
{
return Task.Run(() => serviceRequest.PostAsJsonAsync<FamilyGroupSearchCriteria,FamilyGroupResultData>("/FamilyGroup/FindBySearchCriteria" , criteria)).GetAwaiter().GetResult(); }
public FamilyGroupResultData FindFamilyUserBySearchCriteria(FamilyGroupManagerUserSearchCriteria criteria)
{
return Task.Run(() => serviceRequest.PostAsJsonAsync<FamilyGroupManagerUserSearchCriteria,FamilyGroupResultData>("/FamilyGroup/FindFamilyUserBySearchCriteria" , criteria)).GetAwaiter().GetResult(); }
public FamilyGroupResultData FamilyFolderFavoriteBySearchCriteria(FamilyGroupManagerUserSearchCriteria criteria)
{
return Task.Run(() => serviceRequest.PostAsJsonAsync<FamilyGroupManagerUserSearchCriteria,FamilyGroupResultData>("/FamilyGroup/FamilyFolderFavoriteBySearchCriteria" , criteria)).GetAwaiter().GetResult(); }
public dynamic PrintBySearchCriteria(FamilyGroupSearchCriteria criteria)
{
return Task.Run(() => serviceRequest.PostAsJsonAsync<FamilyGroupSearchCriteria,dynamic>("/FamilyGroup/PrintBySearchCriteria" , criteria)).GetAwaiter().GetResult(); }
public FamilyGroupData Insert(FamilyGroupData data)
{
return Task.Run(() => serviceRequest.PostAsJsonAsync<FamilyGroupData,FamilyGroupData>("/FamilyGroup/Insert" , data)).GetAwaiter().GetResult(); }
public FamilyGroupData Update(FamilyGroupData data)
{
return Task.Run(() => serviceRequest.PostAsJsonAsync<FamilyGroupData,FamilyGroupData>("/FamilyGroup/Update" , data)).GetAwaiter().GetResult(); }
public void Delete(string key)
{
Task.Run(() => serviceRequest.PostAsync("/FamilyGroup/Delete?key=" + key.ToString())).GetAwaiter().GetResult(); }
public void InsertFamilyGroupManager(FamilyGroupManagerEntity manager)
{
Task.Run(() => serviceRequest.PostAsJsonAsync<FamilyGroupManagerEntity,dynamic>("/FamilyGroup/InsertFamilyGroupManager" , manager)).GetAwaiter().GetResult(); }
public void InsertFamilyGroupPermission(FamilyGroupPermissionEntity[] managers)
{
Task.Run(() => serviceRequest.PostAsJsonAsync<FamilyGroupPermissionEntity[],dynamic>("/FamilyGroup/InsertFamilyGroupPermission" , managers)).GetAwaiter().GetResult(); }
public void UpdateFamilyGroupManager(FamilyGroupManagerEntity manager)
{
Task.Run(() => serviceRequest.PostAsJsonAsync<FamilyGroupManagerEntity,dynamic>("/FamilyGroup/UpdateFamilyGroupManager" , manager)).GetAwaiter().GetResult(); }
public void DeleteFamilyGroupManager(FamilyGroupManagerEntity manager)
{
Task.Run(() => serviceRequest.PostAsJsonAsync<FamilyGroupManagerEntity,dynamic>("/FamilyGroup/DeleteFamilyGroupManager" , manager)).GetAwaiter().GetResult(); }
public void InsertFamilyFolderFavorite(string folderName)
{
Task.Run(() => serviceRequest.PostAsync("/FamilyGroup/InsertFamilyFolderFavorite?folderName=" + folderName.ToString())).GetAwaiter().GetResult(); }
public void DeleteFamilyFolderFavorite(string folderName)
{
Task.Run(() => serviceRequest.PostAsync("/FamilyGroup/DeleteFamilyFolderFavorite?folderName=" + folderName.ToString())).GetAwaiter().GetResult(); }
public void DeleteFamilyFolderFavorites(FamilyFolderFavoriteEntity[] familyFolderFavorites)
{
Task.Run(() => serviceRequest.PostAsJsonAsync<FamilyFolderFavoriteEntity[],dynamic>("/FamilyGroup/DeleteFamilyFolderFavorites" , familyFolderFavorites)).GetAwaiter().GetResult(); }
}
}
@@ -0,0 +1,60 @@
using CloudBuilder.Core.DependencyInjection.Request;
using CloudBuilder.Core.Request;
using CloudBuilder.Core.Service;
using Microsoft.Extensions.DependencyInjection;
using CloudBuilder.Master.Service;
using CloudBuilder.Core.DatabaseAccessor.Entity;
using Microsoft.AspNetCore.Http;
using CloudBuilder.Master.Entity;
using System;
using CloudBuilder.Master.Data;
using CloudBuilder.Master.SearchCriteria;
namespace CloudBuilder.Request.Master
{
public class FamilyPersonRequest : IRequest
{
private readonly IServiceRequest serviceRequest;
public FamilyPersonRequest(IServiceRequest serviceRequest)
{
this.serviceRequest = serviceRequest;
}
public FamilyPersonEntity[] FindAll()
{
return Task.Run(() => serviceRequest.PostAsJsonAsync<FamilyPersonEntity[]> ("/FamilyPerson/FindAll")).GetAwaiter().GetResult(); }
public FamilyPersonData FindByKey(string key)
{
return Task.Run(() => serviceRequest.PostAsJsonAsync<FamilyPersonData>("/FamilyPerson/FindByKey?key=" + key.ToString())).GetAwaiter().GetResult(); }
public FamilyPersonResultData FindBySearchCriteria(FamilyPersonSearchCriteria criteria)
{
return Task.Run(() => serviceRequest.PostAsJsonAsync<FamilyPersonSearchCriteria,FamilyPersonResultData>("/FamilyPerson/FindBySearchCriteria" , criteria)).GetAwaiter().GetResult(); }
public dynamic PrintBySearchCriteria(FamilyPersonSearchCriteria criteria)
{
return Task.Run(() => serviceRequest.PostAsJsonAsync<FamilyPersonSearchCriteria,dynamic>("/FamilyPerson/PrintBySearchCriteria" , criteria)).GetAwaiter().GetResult(); }
public FamilyPersonData Insert(FamilyPersonData data)
{
return Task.Run(() => serviceRequest.PostAsJsonAsync<FamilyPersonData,FamilyPersonData>("/FamilyPerson/Insert" , data)).GetAwaiter().GetResult(); }
public FamilyPersonData Update(FamilyPersonData data)
{
return Task.Run(() => serviceRequest.PostAsJsonAsync<FamilyPersonData,FamilyPersonData>("/FamilyPerson/Update" , data)).GetAwaiter().GetResult(); }
public void Delete(string key)
{
Task.Run(() => serviceRequest.PostAsync("/FamilyPerson/Delete?key=" + key.ToString())).GetAwaiter().GetResult(); }
public void Deletes(string[] keys)
{
Task.Run(() => serviceRequest.PostAsJsonAsync<string[],dynamic>("/FamilyPerson/Deletes" , keys)).GetAwaiter().GetResult(); }
}
}
@@ -0,0 +1,99 @@
using CloudBuilder.Core.DependencyInjection.Request;
using CloudBuilder.Core.Request;
using CloudBuilder.Core.Service;
using Microsoft.Extensions.DependencyInjection;
using CloudBuilder.Master.Service;
using CloudBuilder.Core.DatabaseAccessor.Entity;
using Microsoft.AspNetCore.Http;
using CloudBuilder.Master.Entity;
using System;
using CloudBuilder.Master.Data;
using CloudBuilder.Master.SearchCriteria;
namespace CloudBuilder.Request.Master
{
public class FamilyTreeRequest : IRequest
{
private readonly IServiceRequest serviceRequest;
public FamilyTreeRequest(IServiceRequest serviceRequest)
{
this.serviceRequest = serviceRequest;
}
public FamilyTreeData FindAllByTreeId(string treeId)
{
return Task.Run(() => serviceRequest.PostAsJsonAsync<FamilyTreeData>("/FamilyTree/FindAllByTreeId?treeId=" + treeId.ToString())).GetAwaiter().GetResult(); }
public FamilyTreeData FindByKey(string key)
{
return Task.Run(() => serviceRequest.PostAsJsonAsync<FamilyTreeData>("/FamilyTree/FindByKey?key=" + key.ToString())).GetAwaiter().GetResult(); }
public class FindByCurrentPersonCompositionData2 {
public string key { get; set; }
public string personId { get; set; }
}
public FamilyTreeData FindByCurrentPerson(string key, string personId)
{
var compositionData = new FindByCurrentPersonCompositionData2{ ␍key = key, ␍personId = personId }; ␍return Task.Run(() => serviceRequest.PostAsJsonAsync<FindByCurrentPersonCompositionData2, FamilyTreeData>("/FamilyTree/FindByCurrentPerson", compositionData)).GetAwaiter().GetResult(); }
public FamilyTreeResultData FindBySearchCriteria(FamilyTreeSearchCriteria criteria)
{
return Task.Run(() => serviceRequest.PostAsJsonAsync<FamilyTreeSearchCriteria,FamilyTreeResultData>("/FamilyTree/FindBySearchCriteria" , criteria)).GetAwaiter().GetResult(); }
public FamilyTreeData Insert(FamilyTreeData data)
{
return Task.Run(() => serviceRequest.PostAsJsonAsync<FamilyTreeData,FamilyTreeData>("/FamilyTree/Insert" , data)).GetAwaiter().GetResult(); }
public class RequestFamilyTreePermissionCompositionData2 {
public string treeId { get; set; }
public string currentPersonId { get; set; }
}
public void RequestFamilyTreePermission(string treeId, string currentPersonId)
{
var compositionData = new RequestFamilyTreePermissionCompositionData2{ ␍treeId = treeId, ␍currentPersonId = currentPersonId }; ␍ Task.Run(() => serviceRequest.PostAsJsonAsync<RequestFamilyTreePermissionCompositionData2, dynamic>("/FamilyTree/RequestFamilyTreePermission", compositionData)).GetAwaiter().GetResult(); }
public class ApproveFamilyTreePermissionCompositionData4 {
public string treeId { get; set; }
public string currentPersonId { get; set; }
public string userName { get; set; }
public string managerIndc { get; set; }
}
public void ApproveFamilyTreePermission(string treeId, string currentPersonId, string userName, string managerIndc)
{
var compositionData = new ApproveFamilyTreePermissionCompositionData4{ ␍treeId = treeId, ␍currentPersonId = currentPersonId, ␍userName = userName, ␍managerIndc = managerIndc }; ␍ Task.Run(() => serviceRequest.PostAsJsonAsync<ApproveFamilyTreePermissionCompositionData4, dynamic>("/FamilyTree/ApproveFamilyTreePermission", compositionData)).GetAwaiter().GetResult(); }
public class RejectFamilyTreePermissionCompositionData3 {
public string treeId { get; set; }
public string currentPersonId { get; set; }
public string userName { get; set; }
}
public void RejectFamilyTreePermission(string treeId, string currentPersonId, string userName)
{
var compositionData = new RejectFamilyTreePermissionCompositionData3{ ␍treeId = treeId, ␍currentPersonId = currentPersonId, ␍userName = userName }; ␍ Task.Run(() => serviceRequest.PostAsJsonAsync<RejectFamilyTreePermissionCompositionData3, dynamic>("/FamilyTree/RejectFamilyTreePermission", compositionData)).GetAwaiter().GetResult(); }
public FamilyTreeData Update(FamilyTreeData data)
{
return Task.Run(() => serviceRequest.PostAsJsonAsync<FamilyTreeData,FamilyTreeData>("/FamilyTree/Update" , data)).GetAwaiter().GetResult(); }
public void Delete(string key)
{
Task.Run(() => serviceRequest.PostAsync("/FamilyTree/Delete?key=" + key.ToString())).GetAwaiter().GetResult(); }
public void Deletes(string[] keys)
{
Task.Run(() => serviceRequest.PostAsJsonAsync<string[],dynamic>("/FamilyTree/Deletes" , keys)).GetAwaiter().GetResult(); }
}
}
@@ -0,0 +1,32 @@
using CloudBuilder.Core.DependencyInjection.Request;
using CloudBuilder.Core.Request;
using CloudBuilder.Core.Service;
using Microsoft.Extensions.DependencyInjection;
using CloudBuilder.Master.Service;
using CloudBuilder.Core.DatabaseAccessor.Entity;
using Microsoft.AspNetCore.Http;
using CloudBuilder.Master.Entity;
using System;
using CloudBuilder.Master.Data;
using CloudBuilder.Master.SearchCriteria;
namespace CloudBuilder.Request.Master
{
public class FileTypePolicyRequest : IRequest
{
private readonly IServiceRequest serviceRequest;
public FileTypePolicyRequest(IServiceRequest serviceRequest)
{
this.serviceRequest = serviceRequest;
}
public SelectOption[] FindSelectOption(bool blank)
{
return Task.Run(() => serviceRequest.PostAsJsonAsync<SelectOption[]>("/FileTypePolicy/FindSelectOption?blank=" + blank.ToString())).GetAwaiter().GetResult(); }
}
}
@@ -0,0 +1,60 @@
using CloudBuilder.Core.DependencyInjection.Request;
using CloudBuilder.Core.Request;
using CloudBuilder.Core.Service;
using Microsoft.Extensions.DependencyInjection;
using CloudBuilder.Master.Service;
using CloudBuilder.Core.DatabaseAccessor.Entity;
using Microsoft.AspNetCore.Http;
using CloudBuilder.Master.Entity;
using System;
using CloudBuilder.Master.Data;
using CloudBuilder.Master.SearchCriteria;
namespace CloudBuilder.Request.Master
{
public class PublishAudioRequest : IRequest
{
private readonly IServiceRequest serviceRequest;
public PublishAudioRequest(IServiceRequest serviceRequest)
{
this.serviceRequest = serviceRequest;
}
public PublishAudioData FindByKey(string key)
{
return Task.Run(() => serviceRequest.PostAsJsonAsync<PublishAudioData>("/PublishAudio/FindByKey?key=" + key.ToString())).GetAwaiter().GetResult(); }
public PublishAudioResultData FindBySearchCriteria(PublishAudioSearchCriteria criteria)
{
return Task.Run(() => serviceRequest.PostAsJsonAsync<PublishAudioSearchCriteria,PublishAudioResultData>("/PublishAudio/FindBySearchCriteria" , criteria)).GetAwaiter().GetResult(); }
public PublishAudioData FindPublishAudioDefault()
{
return Task.Run(() => serviceRequest.PostAsJsonAsync<PublishAudioData> ("/PublishAudio/FindPublishAudioDefault")).GetAwaiter().GetResult(); }
public dynamic PrintBySearchCriteria(PublishAudioSearchCriteria criteria)
{
return Task.Run(() => serviceRequest.PostAsJsonAsync<PublishAudioSearchCriteria,dynamic>("/PublishAudio/PrintBySearchCriteria" , criteria)).GetAwaiter().GetResult(); }
public PublishAudioData Insert(PublishAudioData data)
{
return Task.Run(() => serviceRequest.PostAsJsonAsync<PublishAudioData,PublishAudioData>("/PublishAudio/Insert" , data)).GetAwaiter().GetResult(); }
public PublishAudioData Update(PublishAudioData data)
{
return Task.Run(() => serviceRequest.PostAsJsonAsync<PublishAudioData,PublishAudioData>("/PublishAudio/Update" , data)).GetAwaiter().GetResult(); }
public void Delete(string key)
{
Task.Run(() => serviceRequest.PostAsync("/PublishAudio/Delete?key=" + key.ToString())).GetAwaiter().GetResult(); }
public void InsertPublishAudioDetail(PublishData publishData)
{
Task.Run(() => serviceRequest.PostAsJsonAsync<PublishData,dynamic>("/PublishAudio/InsertPublishAudioDetail" , publishData)).GetAwaiter().GetResult(); }
}
}
@@ -0,0 +1,68 @@
using CloudBuilder.Core.DependencyInjection.Request;
using CloudBuilder.Core.Request;
using CloudBuilder.Core.Service;
using Microsoft.Extensions.DependencyInjection;
using CloudBuilder.Master.Service;
using CloudBuilder.Core.DatabaseAccessor.Entity;
using Microsoft.AspNetCore.Http;
using CloudBuilder.Master.Entity;
using System;
using CloudBuilder.Master.Data;
using CloudBuilder.Master.SearchCriteria;
namespace CloudBuilder.Request.Master
{
public class PublishPhotoRequest : IRequest
{
private readonly IServiceRequest serviceRequest;
public PublishPhotoRequest(IServiceRequest serviceRequest)
{
this.serviceRequest = serviceRequest;
}
public PublishPhotoData FindByKey(string key)
{
return Task.Run(() => serviceRequest.PostAsJsonAsync<PublishPhotoData>("/PublishPhoto/FindByKey?key=" + key.ToString())).GetAwaiter().GetResult(); }
public PublishPhotoResultData FindBySearchCriteria(PublishPhotoSearchCriteria criteria)
{
return Task.Run(() => serviceRequest.PostAsJsonAsync<PublishPhotoSearchCriteria,PublishPhotoResultData>("/PublishPhoto/FindBySearchCriteria" , criteria)).GetAwaiter().GetResult(); }
public dynamic PrintBySearchCriteria(PublishPhotoSearchCriteria criteria)
{
return Task.Run(() => serviceRequest.PostAsJsonAsync<PublishPhotoSearchCriteria,dynamic>("/PublishPhoto/PrintBySearchCriteria" , criteria)).GetAwaiter().GetResult(); }
public PublishPhotoData Insert(PublishPhotoData data)
{
return Task.Run(() => serviceRequest.PostAsJsonAsync<PublishPhotoData,PublishPhotoData>("/PublishPhoto/Insert" , data)).GetAwaiter().GetResult(); }
public PublishPhotoData Update(PublishPhotoData data)
{
return Task.Run(() => serviceRequest.PostAsJsonAsync<PublishPhotoData,PublishPhotoData>("/PublishPhoto/Update" , data)).GetAwaiter().GetResult(); }
public void Delete(string key)
{
Task.Run(() => serviceRequest.PostAsync("/PublishPhoto/Delete?key=" + key.ToString())).GetAwaiter().GetResult(); }
public PublishPhotoDetailEntity[] FindPublishPhotoDetailByPublishName(string publishName)
{
return Task.Run(() => serviceRequest.PostAsJsonAsync<PublishPhotoDetailEntity[]>("/PublishPhoto/FindPublishPhotoDetailByPublishName?publishName=" + publishName.ToString())).GetAwaiter().GetResult(); }
public PublishPhotoDetailEntity[] FindPublishPhotoDetail()
{
return Task.Run(() => serviceRequest.PostAsJsonAsync<PublishPhotoDetailEntity[]> ("/PublishPhoto/FindPublishPhotoDetail")).GetAwaiter().GetResult(); }
public void InsertPublishPhotoDetail(PublishData publishData)
{
Task.Run(() => serviceRequest.PostAsJsonAsync<PublishData,dynamic>("/PublishPhoto/InsertPublishPhotoDetail" , publishData)).GetAwaiter().GetResult(); }
public void InsertPublishPhotoDetailByFamilyGroup(PublishData publishData)
{
Task.Run(() => serviceRequest.PostAsJsonAsync<PublishData,dynamic>("/PublishPhoto/InsertPublishPhotoDetailByFamilyGroup" , publishData)).GetAwaiter().GetResult(); }
}
}
@@ -0,0 +1,60 @@
using CloudBuilder.Core.DependencyInjection.Request;
using CloudBuilder.Core.Request;
using CloudBuilder.Core.Service;
using Microsoft.Extensions.DependencyInjection;
using CloudBuilder.Master.Service;
using CloudBuilder.Core.DatabaseAccessor.Entity;
using Microsoft.AspNetCore.Http;
using CloudBuilder.Master.Entity;
using System;
using CloudBuilder.Master.Data;
using CloudBuilder.Master.SearchCriteria;
namespace CloudBuilder.Request.Master
{
public class PublishVideoRequest : IRequest
{
private readonly IServiceRequest serviceRequest;
public PublishVideoRequest(IServiceRequest serviceRequest)
{
this.serviceRequest = serviceRequest;
}
public PublishVideoData FindByKey(string key)
{
return Task.Run(() => serviceRequest.PostAsJsonAsync<PublishVideoData>("/PublishVideo/FindByKey?key=" + key.ToString())).GetAwaiter().GetResult(); }
public PublishVideoResultData FindBySearchCriteria(PublishVideoSearchCriteria criteria)
{
return Task.Run(() => serviceRequest.PostAsJsonAsync<PublishVideoSearchCriteria,PublishVideoResultData>("/PublishVideo/FindBySearchCriteria" , criteria)).GetAwaiter().GetResult(); }
public PublishVideoData FindPublishVideoDefault()
{
return Task.Run(() => serviceRequest.PostAsJsonAsync<PublishVideoData> ("/PublishVideo/FindPublishVideoDefault")).GetAwaiter().GetResult(); }
public dynamic PrintBySearchCriteria(PublishVideoSearchCriteria criteria)
{
return Task.Run(() => serviceRequest.PostAsJsonAsync<PublishVideoSearchCriteria,dynamic>("/PublishVideo/PrintBySearchCriteria" , criteria)).GetAwaiter().GetResult(); }
public PublishVideoData Insert(PublishVideoData data)
{
return Task.Run(() => serviceRequest.PostAsJsonAsync<PublishVideoData,PublishVideoData>("/PublishVideo/Insert" , data)).GetAwaiter().GetResult(); }
public PublishVideoData Update(PublishVideoData data)
{
return Task.Run(() => serviceRequest.PostAsJsonAsync<PublishVideoData,PublishVideoData>("/PublishVideo/Update" , data)).GetAwaiter().GetResult(); }
public void Delete(string key)
{
Task.Run(() => serviceRequest.PostAsync("/PublishVideo/Delete?key=" + key.ToString())).GetAwaiter().GetResult(); }
public void InsertPublishVideoDetail(PublishData publishData)
{
Task.Run(() => serviceRequest.PostAsJsonAsync<PublishData,dynamic>("/PublishVideo/InsertPublishVideoDetail" , publishData)).GetAwaiter().GetResult(); }
}
}
@@ -123,7 +123,7 @@
</div>
</div>
<!-- 家庭与学业 -->
<div class="fp-card">
<div v-if="!readonlyBasicOnly" class="fp-card">
<div class="fp-card-title">家庭与学业</div>
<div class="fp-grid">
<div class="fp-field">
@@ -173,7 +173,7 @@
</div>
</div>
<!-- 任职与状态 -->
<div class="fp-card">
<div v-if="!readonlyBasicOnly" class="fp-card">
<div class="fp-card-title">任职与状态</div>
<div class="fp-grid">
<div class="fp-field">
@@ -232,7 +232,7 @@
</div>
</div>
<!-- 生平简介 -->
<div class="fp-card">
<div v-if="!readonlyBasicOnly" class="fp-card">
<div class="fp-card-title">生平简介</div>
<div class="fp-field">
<div class="fp-label">简介</div>
@@ -259,12 +259,12 @@
</a-row>
<a-row v-else :gutter="[16, 8]">
<a-space>
<a-button type="primary" v-if="canAmend" :icon="h(EditOutlined)" :disabled="!hasData"
@click.prevent="onAmend">修改</a-button>
<a-button type="primary" v-if="canAmend && data.FamilyPerson.IsCanAmend"
:icon="h(EditOutlined)" :disabled="!hasData" @click.prevent="onAmend">修改</a-button>
<a-popconfirm :disabled="!hasData" title="确定是否删除这条记录?" ok-text="是" cancel-text="否"
@confirm="onDelete">
<a-button type="primary" danger :icon="h(DeleteOutlined)" :disabled="!hasData"
v-if="canDelete && data.FamilyPerson && data.FamilyPerson.TreeId.length == 0">删除</a-button>
v-if="canDelete && data.FamilyPerson.IsCanAmend && data.FamilyPerson && data.FamilyPerson.TreeId.length == 0">删除</a-button>
</a-popconfirm>
</a-space>
</a-row>
@@ -359,6 +359,11 @@ const avatarUploadPercent = ref<number>(0);
*/
const avatarSrc = computed(() => data.value.FamilyPerson.AvatarUrl || "");
// 无修改权限且 Privacy=不公开(N) 时,只允许查看"基本资料"
const readonlyBasicOnly = computed(
() => !data.value.FamilyPerson.IsCanAmend && data.value.FamilyPerson.Privacy != "Y",
);
/** 释放本地上传产生的 blob 预览地址,避免内存泄漏 */
const revokeAvatarPreview = () => {
const url = data.value.FamilyPerson.AvatarUrl;
@@ -396,12 +396,12 @@
</a-row>
<a-row v-else :gutter="[16, 8]">
<a-space>
<a-button type="primary" v-if="canAmend" :icon="h(EditOutlined)" :disabled="!hasData"
@click.prevent="onAmend">修改</a-button>
<a-button type="primary" v-if="canAmend && data.IsCanAmend" :icon="h(EditOutlined)"
:disabled="!hasData" @click.prevent="onAmend">修改</a-button>
<a-popconfirm :disabled="!hasData" title="确定是否删除这条记录?" ok-text="是" cancel-text="否"
@confirm="onDelete">
<a-button type="primary" danger :icon="h(DeleteOutlined)" :disabled="!hasData"
v-if="canDelete">删除</a-button>
v-if="canDelete && data.IsCanAmend">删除</a-button>
</a-popconfirm>
</a-space>
</a-row>