diff --git a/CloudBuilder/CloudBuilder.Master.Service/DependencyInjection/CloudBuilderSecurityServicePack.cs b/CloudBuilder/CloudBuilder.Master.Service/DependencyInjection/CloudBuilderMasterServicePack.cs similarity index 100% rename from CloudBuilder/CloudBuilder.Master.Service/DependencyInjection/CloudBuilderSecurityServicePack.cs rename to CloudBuilder/CloudBuilder.Master.Service/DependencyInjection/CloudBuilderMasterServicePack.cs diff --git a/CloudBuilder/CloudBuilder.Master.Service/FamilyPersonService.auto.cs b/CloudBuilder/CloudBuilder.Master.Service/FamilyPersonService.auto.cs index f14e3c2..b1df944 100644 --- a/CloudBuilder/CloudBuilder.Master.Service/FamilyPersonService.auto.cs +++ b/CloudBuilder/CloudBuilder.Master.Service/FamilyPersonService.auto.cs @@ -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; diff --git a/CloudBuilder/CloudBuilder.Master.Service/FamilyTreeService.auto.cs b/CloudBuilder/CloudBuilder.Master.Service/FamilyTreeService.auto.cs index fdcf409..eff6a63 100644 --- a/CloudBuilder/CloudBuilder.Master.Service/FamilyTreeService.auto.cs +++ b/CloudBuilder/CloudBuilder.Master.Service/FamilyTreeService.auto.cs @@ -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; } diff --git a/CloudBuilder/CloudBuilder.Master.Service/FamilyTreeUtility/FamilyTreePermissionHelper.cs b/CloudBuilder/CloudBuilder.Master.Service/FamilyTreeUtility/FamilyTreePermissionHelper.cs new file mode 100644 index 0000000..00bd5d2 --- /dev/null +++ b/CloudBuilder/CloudBuilder.Master.Service/FamilyTreeUtility/FamilyTreePermissionHelper.cs @@ -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 GetPersonId(string treeId) + { + List ps = new List(); + IRepository repositoryPermission = service.GetRepository>(); + 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 repositoryChildrenMap = service.GetRepository>(); + if (childrens == null || childrens.Length == 0) + childrens = repositoryChildrenMap.DetachedEntities.Where(x => x.TreeId == treeId).ToArray(); + + IRepository repositorySpouseMap = service.GetRepository>(); + + 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 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 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); + } + } + } + } +} diff --git a/CloudBuilder/CloudBuilder.Master/Data/FamilyPersonDisplayData.cs b/CloudBuilder/CloudBuilder.Master/Data/FamilyPersonDisplayData.cs index be21db3..3d75dfa 100644 --- a/CloudBuilder/CloudBuilder.Master/Data/FamilyPersonDisplayData.cs +++ b/CloudBuilder/CloudBuilder.Master/Data/FamilyPersonDisplayData.cs @@ -25,5 +25,7 @@ namespace CloudBuilder.Master.Data } public string? AvatarUrl { get; set; } + + public bool? IsCanAmend { get; set; } = false; } } diff --git a/CloudBuilder/CloudBuilder.Master/Data/FamilyTreeData.cs b/CloudBuilder/CloudBuilder.Master/Data/FamilyTreeData.cs index a922a14..4a914a6 100644 --- a/CloudBuilder/CloudBuilder.Master/Data/FamilyTreeData.cs +++ b/CloudBuilder/CloudBuilder.Master/Data/FamilyTreeData.cs @@ -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; } } } diff --git a/CloudBuilder/CloudBuilder.Request/Master/DmsFileRequest.auto.cs b/CloudBuilder/CloudBuilder.Request/Master/DmsFileRequest.auto.cs new file mode 100644 index 0000000..cc38f81 --- /dev/null +++ b/CloudBuilder/CloudBuilder.Request/Master/DmsFileRequest.auto.cs @@ -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("/DmsFile/FindByKey?key=" + key.ToString())).GetAwaiter().GetResult(); } + + public DmsFileResultData FindBySearchCriteria(DmsFileSearchCriteria criteria) + { +return Task.Run(() => serviceRequest.PostAsJsonAsync("/DmsFile/FindBySearchCriteria" , criteria)).GetAwaiter().GetResult(); } + + public DmsFileResultData FindDatasBySearchCriteria(DmsFileSearchCriteria criteria) + { +return Task.Run(() => serviceRequest.PostAsJsonAsync("/DmsFile/FindDatasBySearchCriteria" , criteria)).GetAwaiter().GetResult(); } + + public DmsFileResultData FindDeleteLogBySearchCriteria(DmsFileSearchCriteria criteria) + { +return Task.Run(() => serviceRequest.PostAsJsonAsync("/DmsFile/FindDeleteLogBySearchCriteria" , criteria)).GetAwaiter().GetResult(); } + + public DmsFileResultData FindFamilyBySearchCriteria(DmsFileSearchCriteria criteria) + { +return Task.Run(() => serviceRequest.PostAsJsonAsync("/DmsFile/FindFamilyBySearchCriteria" , criteria)).GetAwaiter().GetResult(); } + + public DmsFileDeleteLogEntity FindDmsFileDeleteLogByKey(Int64 key) + { +return Task.Run(() => serviceRequest.PostAsJsonAsync("/DmsFile/FindDmsFileDeleteLogByKey?key=" + key.ToString())).GetAwaiter().GetResult(); } + + public dynamic PrintBySearchCriteria(DmsFileSearchCriteria criteria) + { +return Task.Run(() => serviceRequest.PostAsJsonAsync("/DmsFile/PrintBySearchCriteria" , criteria)).GetAwaiter().GetResult(); } + + public DmsFileEntity Insert(DmsFileEntity data) + { +return Task.Run(() => serviceRequest.PostAsJsonAsync("/DmsFile/Insert" , data)).GetAwaiter().GetResult(); } + + public DmsFileEntity Update(DmsFileEntity data) + { +return Task.Run(() => serviceRequest.PostAsJsonAsync("/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("/DmsFile/CreateDmsFolder" , dmsFile)).GetAwaiter().GetResult(); } + + public void DeleteFamilyDmsFolder(FamilyDmsFileViewEntity familyDmsFile) + { + Task.Run(() => serviceRequest.PostAsJsonAsync("/DmsFile/DeleteFamilyDmsFolder" , familyDmsFile)).GetAwaiter().GetResult(); } + + public void CreateFamilyDmsFolder(FamilyDmsFileViewEntity familyDmsFile) + { + Task.Run(() => serviceRequest.PostAsJsonAsync("/DmsFile/CreateFamilyDmsFolder" , familyDmsFile)).GetAwaiter().GetResult(); } + + public void UpdateDmsFolder(DmsFileEntity dmsFile) + { + Task.Run(() => serviceRequest.PostAsJsonAsync("/DmsFile/UpdateDmsFolder" , dmsFile)).GetAwaiter().GetResult(); } + + public SelectOption[] FindDmsFolders() + { +return Task.Run(() => serviceRequest.PostAsJsonAsync ("/DmsFile/FindDmsFolders")).GetAwaiter().GetResult(); } + + public SelectOption[] FindDmsFolderDeleteLogs() + { +return Task.Run(() => serviceRequest.PostAsJsonAsync ("/DmsFile/FindDmsFolderDeleteLogs")).GetAwaiter().GetResult(); } + + public DmsFolderData FindDmsFolderData() + { +return Task.Run(() => serviceRequest.PostAsJsonAsync ("/DmsFile/FindDmsFolderData")).GetAwaiter().GetResult(); } + + public void MoveDmsFolder(DmsFileEntity dmsFile) + { + Task.Run(() => serviceRequest.PostAsJsonAsync("/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("/DmsFile/FindM3u8Path?fileId=" + fileId.ToString())).GetAwaiter().GetResult(); } + + public string FindSourceVideoPath(Int64 fileId) + { +return Task.Run(() => serviceRequest.PostAsJsonAsync("/DmsFile/FindSourceVideoPath?fileId=" + fileId.ToString())).GetAwaiter().GetResult(); } + + public string FindDeleteLogM3u8Path(Int64 fileId) + { +return Task.Run(() => serviceRequest.PostAsJsonAsync("/DmsFile/FindDeleteLogM3u8Path?fileId=" + fileId.ToString())).GetAwaiter().GetResult(); } + + public dynamic DownloadFile(Int64 fileId) + { +return Task.Run(() => serviceRequest.PostAsJsonAsync("/DmsFile/DownloadFile?fileId=" + fileId.ToString())).GetAwaiter().GetResult(); } + + public dynamic DownloadFilePreview(DmsFileEntity dmsFile) + { +return Task.Run(() => serviceRequest.PostAsJsonAsync("/DmsFile/DownloadFilePreview" , dmsFile)).GetAwaiter().GetResult(); } + + public dynamic DownloadFileCombine(string fileName) + { +return Task.Run(() => serviceRequest.PostAsJsonAsync("/DmsFile/DownloadFileCombine?fileName=" + fileName.ToString())).GetAwaiter().GetResult(); } + + public SelectOption[] FindFamilyDmsFolders() + { +return Task.Run(() => serviceRequest.PostAsJsonAsync ("/DmsFile/FindFamilyDmsFolders")).GetAwaiter().GetResult(); } + + public SelectOption[] FindFamilyDmsFoldersByFamilyName(string familyName) + { +return Task.Run(() => serviceRequest.PostAsJsonAsync("/DmsFile/FindFamilyDmsFoldersByFamilyName?familyName=" + familyName.ToString())).GetAwaiter().GetResult(); } + + public Int32 FindDmsFolderMapByFolderName(string folderName) + { +return Task.Run(() => serviceRequest.PostAsJsonAsync("/DmsFile/FindDmsFolderMapByFolderName?folderName=" + folderName.ToString())).GetAwaiter().GetResult(); } + + public string FindFolderNameParentByFolderName(string folderName) + { +return Task.Run(() => serviceRequest.PostAsJsonAsync("/DmsFile/FindFolderNameParentByFolderName?folderName=" + folderName.ToString())).GetAwaiter().GetResult(); } + + public void CreateFamilyGroupFolder(FamilyGroupFolderEntity[] familyGroupFolder) + { + Task.Run(() => serviceRequest.PostAsJsonAsync("/DmsFile/CreateFamilyGroupFolder" , familyGroupFolder)).GetAwaiter().GetResult(); } + + public void DeleteFamilyGroupFolder(FamilyGroupFolderEntity[] familyGroupFolder) + { + Task.Run(() => serviceRequest.PostAsJsonAsync("/DmsFile/DeleteFamilyGroupFolder" , familyGroupFolder)).GetAwaiter().GetResult(); } + + +} +} \ No newline at end of file diff --git a/CloudBuilder/CloudBuilder.Request/Master/FamilyGroupRequest.auto.cs b/CloudBuilder/CloudBuilder.Request/Master/FamilyGroupRequest.auto.cs new file mode 100644 index 0000000..0ad25b7 --- /dev/null +++ b/CloudBuilder/CloudBuilder.Request/Master/FamilyGroupRequest.auto.cs @@ -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("/FamilyGroup/FindByKey?key=" + key.ToString())).GetAwaiter().GetResult(); } + + public FamilyGroupResultData FindBySearchCriteria(FamilyGroupSearchCriteria criteria) + { +return Task.Run(() => serviceRequest.PostAsJsonAsync("/FamilyGroup/FindBySearchCriteria" , criteria)).GetAwaiter().GetResult(); } + + public FamilyGroupResultData FindFamilyUserBySearchCriteria(FamilyGroupManagerUserSearchCriteria criteria) + { +return Task.Run(() => serviceRequest.PostAsJsonAsync("/FamilyGroup/FindFamilyUserBySearchCriteria" , criteria)).GetAwaiter().GetResult(); } + + public FamilyGroupResultData FamilyFolderFavoriteBySearchCriteria(FamilyGroupManagerUserSearchCriteria criteria) + { +return Task.Run(() => serviceRequest.PostAsJsonAsync("/FamilyGroup/FamilyFolderFavoriteBySearchCriteria" , criteria)).GetAwaiter().GetResult(); } + + public dynamic PrintBySearchCriteria(FamilyGroupSearchCriteria criteria) + { +return Task.Run(() => serviceRequest.PostAsJsonAsync("/FamilyGroup/PrintBySearchCriteria" , criteria)).GetAwaiter().GetResult(); } + + public FamilyGroupData Insert(FamilyGroupData data) + { +return Task.Run(() => serviceRequest.PostAsJsonAsync("/FamilyGroup/Insert" , data)).GetAwaiter().GetResult(); } + + public FamilyGroupData Update(FamilyGroupData data) + { +return Task.Run(() => serviceRequest.PostAsJsonAsync("/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("/FamilyGroup/InsertFamilyGroupManager" , manager)).GetAwaiter().GetResult(); } + + public void InsertFamilyGroupPermission(FamilyGroupPermissionEntity[] managers) + { + Task.Run(() => serviceRequest.PostAsJsonAsync("/FamilyGroup/InsertFamilyGroupPermission" , managers)).GetAwaiter().GetResult(); } + + public void UpdateFamilyGroupManager(FamilyGroupManagerEntity manager) + { + Task.Run(() => serviceRequest.PostAsJsonAsync("/FamilyGroup/UpdateFamilyGroupManager" , manager)).GetAwaiter().GetResult(); } + + public void DeleteFamilyGroupManager(FamilyGroupManagerEntity manager) + { + Task.Run(() => serviceRequest.PostAsJsonAsync("/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("/FamilyGroup/DeleteFamilyFolderFavorites" , familyFolderFavorites)).GetAwaiter().GetResult(); } + + +} +} \ No newline at end of file diff --git a/CloudBuilder/CloudBuilder.Request/Master/FamilyPersonRequest.auto.cs b/CloudBuilder/CloudBuilder.Request/Master/FamilyPersonRequest.auto.cs new file mode 100644 index 0000000..cf033b0 --- /dev/null +++ b/CloudBuilder/CloudBuilder.Request/Master/FamilyPersonRequest.auto.cs @@ -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 ("/FamilyPerson/FindAll")).GetAwaiter().GetResult(); } + + public FamilyPersonData FindByKey(string key) + { +return Task.Run(() => serviceRequest.PostAsJsonAsync("/FamilyPerson/FindByKey?key=" + key.ToString())).GetAwaiter().GetResult(); } + + public FamilyPersonResultData FindBySearchCriteria(FamilyPersonSearchCriteria criteria) + { +return Task.Run(() => serviceRequest.PostAsJsonAsync("/FamilyPerson/FindBySearchCriteria" , criteria)).GetAwaiter().GetResult(); } + + public dynamic PrintBySearchCriteria(FamilyPersonSearchCriteria criteria) + { +return Task.Run(() => serviceRequest.PostAsJsonAsync("/FamilyPerson/PrintBySearchCriteria" , criteria)).GetAwaiter().GetResult(); } + + public FamilyPersonData Insert(FamilyPersonData data) + { +return Task.Run(() => serviceRequest.PostAsJsonAsync("/FamilyPerson/Insert" , data)).GetAwaiter().GetResult(); } + + public FamilyPersonData Update(FamilyPersonData data) + { +return Task.Run(() => serviceRequest.PostAsJsonAsync("/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("/FamilyPerson/Deletes" , keys)).GetAwaiter().GetResult(); } + + +} +} \ No newline at end of file diff --git a/CloudBuilder/CloudBuilder.Request/Master/FamilyTreeRequest.auto.cs b/CloudBuilder/CloudBuilder.Request/Master/FamilyTreeRequest.auto.cs new file mode 100644 index 0000000..f15dabc --- /dev/null +++ b/CloudBuilder/CloudBuilder.Request/Master/FamilyTreeRequest.auto.cs @@ -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("/FamilyTree/FindAllByTreeId?treeId=" + treeId.ToString())).GetAwaiter().GetResult(); } + + public FamilyTreeData FindByKey(string key) + { +return Task.Run(() => serviceRequest.PostAsJsonAsync("/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("/FamilyTree/FindByCurrentPerson", compositionData)).GetAwaiter().GetResult(); } + + public FamilyTreeResultData FindBySearchCriteria(FamilyTreeSearchCriteria criteria) + { +return Task.Run(() => serviceRequest.PostAsJsonAsync("/FamilyTree/FindBySearchCriteria" , criteria)).GetAwaiter().GetResult(); } + + public FamilyTreeData Insert(FamilyTreeData data) + { +return Task.Run(() => serviceRequest.PostAsJsonAsync("/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("/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("/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("/FamilyTree/RejectFamilyTreePermission", compositionData)).GetAwaiter().GetResult(); } + + public FamilyTreeData Update(FamilyTreeData data) + { +return Task.Run(() => serviceRequest.PostAsJsonAsync("/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("/FamilyTree/Deletes" , keys)).GetAwaiter().GetResult(); } + + +} +} \ No newline at end of file diff --git a/CloudBuilder/CloudBuilder.Request/Master/FileTypePolicyRequest.auto.cs b/CloudBuilder/CloudBuilder.Request/Master/FileTypePolicyRequest.auto.cs new file mode 100644 index 0000000..c540786 --- /dev/null +++ b/CloudBuilder/CloudBuilder.Request/Master/FileTypePolicyRequest.auto.cs @@ -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("/FileTypePolicy/FindSelectOption?blank=" + blank.ToString())).GetAwaiter().GetResult(); } + + +} +} \ No newline at end of file diff --git a/CloudBuilder/CloudBuilder.Request/Master/PublishAudioRequest.auto.cs b/CloudBuilder/CloudBuilder.Request/Master/PublishAudioRequest.auto.cs new file mode 100644 index 0000000..9423d19 --- /dev/null +++ b/CloudBuilder/CloudBuilder.Request/Master/PublishAudioRequest.auto.cs @@ -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("/PublishAudio/FindByKey?key=" + key.ToString())).GetAwaiter().GetResult(); } + + public PublishAudioResultData FindBySearchCriteria(PublishAudioSearchCriteria criteria) + { +return Task.Run(() => serviceRequest.PostAsJsonAsync("/PublishAudio/FindBySearchCriteria" , criteria)).GetAwaiter().GetResult(); } + + public PublishAudioData FindPublishAudioDefault() + { +return Task.Run(() => serviceRequest.PostAsJsonAsync ("/PublishAudio/FindPublishAudioDefault")).GetAwaiter().GetResult(); } + + public dynamic PrintBySearchCriteria(PublishAudioSearchCriteria criteria) + { +return Task.Run(() => serviceRequest.PostAsJsonAsync("/PublishAudio/PrintBySearchCriteria" , criteria)).GetAwaiter().GetResult(); } + + public PublishAudioData Insert(PublishAudioData data) + { +return Task.Run(() => serviceRequest.PostAsJsonAsync("/PublishAudio/Insert" , data)).GetAwaiter().GetResult(); } + + public PublishAudioData Update(PublishAudioData data) + { +return Task.Run(() => serviceRequest.PostAsJsonAsync("/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("/PublishAudio/InsertPublishAudioDetail" , publishData)).GetAwaiter().GetResult(); } + + +} +} \ No newline at end of file diff --git a/CloudBuilder/CloudBuilder.Request/Master/PublishPhotoRequest.auto.cs b/CloudBuilder/CloudBuilder.Request/Master/PublishPhotoRequest.auto.cs new file mode 100644 index 0000000..a4ff868 --- /dev/null +++ b/CloudBuilder/CloudBuilder.Request/Master/PublishPhotoRequest.auto.cs @@ -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("/PublishPhoto/FindByKey?key=" + key.ToString())).GetAwaiter().GetResult(); } + + public PublishPhotoResultData FindBySearchCriteria(PublishPhotoSearchCriteria criteria) + { +return Task.Run(() => serviceRequest.PostAsJsonAsync("/PublishPhoto/FindBySearchCriteria" , criteria)).GetAwaiter().GetResult(); } + + public dynamic PrintBySearchCriteria(PublishPhotoSearchCriteria criteria) + { +return Task.Run(() => serviceRequest.PostAsJsonAsync("/PublishPhoto/PrintBySearchCriteria" , criteria)).GetAwaiter().GetResult(); } + + public PublishPhotoData Insert(PublishPhotoData data) + { +return Task.Run(() => serviceRequest.PostAsJsonAsync("/PublishPhoto/Insert" , data)).GetAwaiter().GetResult(); } + + public PublishPhotoData Update(PublishPhotoData data) + { +return Task.Run(() => serviceRequest.PostAsJsonAsync("/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("/PublishPhoto/FindPublishPhotoDetailByPublishName?publishName=" + publishName.ToString())).GetAwaiter().GetResult(); } + + public PublishPhotoDetailEntity[] FindPublishPhotoDetail() + { +return Task.Run(() => serviceRequest.PostAsJsonAsync ("/PublishPhoto/FindPublishPhotoDetail")).GetAwaiter().GetResult(); } + + public void InsertPublishPhotoDetail(PublishData publishData) + { + Task.Run(() => serviceRequest.PostAsJsonAsync("/PublishPhoto/InsertPublishPhotoDetail" , publishData)).GetAwaiter().GetResult(); } + + public void InsertPublishPhotoDetailByFamilyGroup(PublishData publishData) + { + Task.Run(() => serviceRequest.PostAsJsonAsync("/PublishPhoto/InsertPublishPhotoDetailByFamilyGroup" , publishData)).GetAwaiter().GetResult(); } + + +} +} \ No newline at end of file diff --git a/CloudBuilder/CloudBuilder.Request/Master/PublishVideoRequest.auto.cs b/CloudBuilder/CloudBuilder.Request/Master/PublishVideoRequest.auto.cs new file mode 100644 index 0000000..c3a0c7e --- /dev/null +++ b/CloudBuilder/CloudBuilder.Request/Master/PublishVideoRequest.auto.cs @@ -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("/PublishVideo/FindByKey?key=" + key.ToString())).GetAwaiter().GetResult(); } + + public PublishVideoResultData FindBySearchCriteria(PublishVideoSearchCriteria criteria) + { +return Task.Run(() => serviceRequest.PostAsJsonAsync("/PublishVideo/FindBySearchCriteria" , criteria)).GetAwaiter().GetResult(); } + + public PublishVideoData FindPublishVideoDefault() + { +return Task.Run(() => serviceRequest.PostAsJsonAsync ("/PublishVideo/FindPublishVideoDefault")).GetAwaiter().GetResult(); } + + public dynamic PrintBySearchCriteria(PublishVideoSearchCriteria criteria) + { +return Task.Run(() => serviceRequest.PostAsJsonAsync("/PublishVideo/PrintBySearchCriteria" , criteria)).GetAwaiter().GetResult(); } + + public PublishVideoData Insert(PublishVideoData data) + { +return Task.Run(() => serviceRequest.PostAsJsonAsync("/PublishVideo/Insert" , data)).GetAwaiter().GetResult(); } + + public PublishVideoData Update(PublishVideoData data) + { +return Task.Run(() => serviceRequest.PostAsJsonAsync("/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("/PublishVideo/InsertPublishVideoDetail" , publishData)).GetAwaiter().GetResult(); } + + +} +} \ No newline at end of file diff --git a/WebVue/src/views/master/FamilyPersonOperation.vue b/WebVue/src/views/master/FamilyPersonOperation.vue index cc9f637..bb759e4 100644 --- a/WebVue/src/views/master/FamilyPersonOperation.vue +++ b/WebVue/src/views/master/FamilyPersonOperation.vue @@ -123,7 +123,7 @@ -
+
家庭与学业
@@ -173,7 +173,7 @@
-
+
任职与状态
@@ -232,7 +232,7 @@
-
+
生平简介
简介
@@ -259,12 +259,12 @@ - 修改 + 修改 删除 + v-if="canDelete && data.FamilyPerson.IsCanAmend && data.FamilyPerson && data.FamilyPerson.TreeId.length == 0">删除 @@ -359,6 +359,11 @@ const avatarUploadPercent = ref(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; diff --git a/WebVue/src/views/master/FamilyTreeOperation.vue b/WebVue/src/views/master/FamilyTreeOperation.vue index 0992c9f..68643c0 100644 --- a/WebVue/src/views/master/FamilyTreeOperation.vue +++ b/WebVue/src/views/master/FamilyTreeOperation.vue @@ -396,12 +396,12 @@ - 修改 + 修改 删除 + v-if="canDelete && data.IsCanAmend">删除