From 244b59a3fb7e31507a08fcc85e66580528c03bd5 Mon Sep 17 00:00:00 2001 From: owenchen Date: Thu, 3 Sep 2026 16:09:54 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=87=E4=BB=B6=E4=B8=8A=E4=BC=A0=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E6=B7=BB=E5=8A=A0=EF=BC=8C=E6=B3=A8=E6=84=8F=E4=BD=BF?= =?UTF-8?q?=E7=94=A8Path.Combine=E5=A4=84=E7=90=86=E9=80=9A=E7=94=A8?= =?UTF-8?q?=E8=B7=AF=E5=BE=84=E9=97=AE=E9=A2=98=EF=BC=88windows||docker)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Policy/AppsettingsPolicy.cs | 15 + .../Report/DataToExcelHelper.cs | 7 +- .../Service/SearchCriteriaResultData.cs | 2 +- .../CloudBuilder.Master.Service.csproj | 4 +- .../DmsFileService.auto.cs | 1425 +++++++++++++++++ .../FamilyGroupService.auto.cs | 679 ++++++++ .../FamilyPersonService.auto.cs | 4 +- .../FamilyTreeService.auto.cs | 4 +- .../FileTypePolicyService.cs | 48 + .../PublishAudioService.auto.cs | 407 +++++ .../PublishPhotoService.auto.cs | 441 +++++ .../PublishVideoService.auto.cs | 402 +++++ .../CloudBuilder.Master.csproj | 2 - .../Data/DmsFileResultData.cs | 22 + .../DmsFileUploadDeleteLogViewDisplayData.cs | 33 + .../Data/DmsFileUploadViewDisplayData.cs | 36 + .../Data/DmsFolderTreeData.cs | 17 + .../Data/FamilyDmsFileViewDisplayData.cs | 36 + .../Data/FamilyGroupData.cs | 30 + .../Data/FamilyGroupFolderDisplayData.cs | 28 + .../Data/FamilyGroupManagerDisplayData.cs | 36 + .../Data/FamilyGroupPermissionDisplayData.cs | 35 + .../Data/FamilyGroupResultData.cs | 21 + .../Data/PublishAudioData.cs | 20 + .../Data/PublishAudioDetailDisplayData.cs | 30 + .../PublishAudioFamilyGroupDisplayData.cs | 31 + .../Data/PublishAudioResultData.cs | 18 + .../CloudBuilder.Master/Data/PublishData.cs | 17 + .../Data/PublishPhotoData.cs | 20 + .../PublishPhotoFamilyGroupDisplayData.cs | 31 + .../Data/PublishPhotoResultData.cs | 17 + .../Data/PublishVideoData.cs | 19 + .../Data/PublishVideoDetailDisplayData.cs | 29 + .../PublishVideoFamilyGroupDisplayData.cs | 31 + .../Data/PublishVideoResultData.cs | 17 + .../CloudBuilderMasterRegistEntity.auto.cs | 49 +- .../Entity/DmsFileDeleteLogEntity.auto.cs | 254 +++ .../Entity/DmsFileEntity.auto.cs | 249 +++ .../DmsFileUploadDeleteLogEntity.auto.cs | 183 +++ .../DmsFileUploadDeleteLogViewEntity.auto.cs | 255 +++ .../Entity/DmsFileUploadEntity.auto.cs | 183 +++ .../Entity/DmsFileUploadViewEntity.auto.cs | 255 +++ .../Entity/DmsFolderDeleteLogEntity.auto.cs | 184 +++ .../Entity/DmsFolderEntity.auto.cs | 179 +++ .../DmsFolderMapDeleteLogEntity.auto.cs | 177 ++ .../DmsFolderMapDeleteLogEntityKey.auto.cs | 33 + .../Entity/DmsFolderMapEntity.auto.cs | 177 ++ .../Entity/DmsFolderMapEntityKey.auto.cs | 33 + .../Entity/FamilyDmsFileViewEntity.auto.cs | 280 ++++ .../Entity/FamilyFolderFavoriteEntity.auto.cs | 172 ++ .../FamilyFolderFavoriteEntityKey.auto.cs | 33 + .../FamilyFolderFavoriteViewEntity.auto.cs | 178 ++ .../Entity/FamilyGroupEntity.auto.cs | 198 +++ .../Entity/FamilyGroupFolderEntity.auto.cs | 199 +++ .../Entity/FamilyGroupManagerEntity.auto.cs | 187 +++ .../FamilyGroupManagerEntityKey.auto.cs | 33 + .../FamilyGroupManagerUserViewEntity.auto.cs | 168 ++ .../FamilyGroupPermissionEntity.auto.cs | 187 +++ .../FamilyGroupPermissionEntityKey.auto.cs | 35 + ...roupPermissionUserFolderViewEntity.auto.cs | 173 ++ .../Entity/PublishAudioDetailEntity.auto.cs | 214 +++ .../Entity/PublishAudioEntity.auto.cs | 203 +++ .../PublishAudioFamilyGroupEntity.auto.cs | 172 ++ .../PublishAudioFamilyGroupEntityKey.auto.cs | 33 + .../Entity/PublishPhotoDetailEntity.auto.cs | 194 +++ .../Entity/PublishPhotoEntity.auto.cs | 203 +++ .../PublishPhotoFamilyGroupEntity.auto.cs | 172 ++ .../PublishPhotoFamilyGroupEntityKey.auto.cs | 33 + .../Entity/PublishVideoDetailEntity.auto.cs | 214 +++ .../Entity/PublishVideoEntity.auto.cs | 203 +++ .../PublishVideoFamilyGroupEntity.auto.cs | 172 ++ .../PublishVideoFamilyGroupEntityKey.auto.cs | 33 + .../Policy/MasterPermissionPolicy.auto.cs | 10 + .../Policy/MasterPrefixPolicy.cs | 19 +- .../DmsFileSearchCriteria.auto.cs | 12 + .../FamilyGroupManagerUserSearchCriteria.cs | 17 + .../FamilyGroupSearchCriteria.auto.cs | 11 + .../PublishAudioSearchCriteria.auto.cs | 11 + .../PublishPhotoSearchCriteria.auto.cs | 11 + .../PublishVideoSearchCriteria.auto.cs | 11 + .../Service/IDmsFileService.auto.cs | 64 + .../Service/IFamilyGroupService.auto.cs | 29 + .../Service/IFileTypePolicyService.cs | 14 + .../Service/IPublishAudioService.auto.cs | 17 + .../Service/IPublishPhotoService.auto.cs | 21 + .../Service/IPublishVideoService.auto.cs | 18 + .../Master/DmsFileRequest.auto.cs | 152 ++ .../Master/FamilyGroupRequest.auto.cs | 88 + .../Master/FamilyPersonRequest.auto.cs | 3 +- .../Master/FamilyTreeRequest.auto.cs | 3 +- .../Master/FileTypePolicyRequest.auto.cs | 32 + .../Master/PublishAudioRequest.auto.cs | 60 + .../Master/PublishPhotoRequest.auto.cs | 68 + .../Master/PublishVideoRequest.auto.cs | 60 + .../LocaleService.cs | 4 +- .../SecurityActorService.cs | 4 +- .../SecurityFunctionService.cs | 4 +- .../SecurityGeneratorNumberService.cs | 4 +- .../SecurityGroupService.cs | 4 +- .../SecurityMasterService.cs | 4 +- .../SecurityPermissionService.cs | 12 +- .../SecurityUserService.cs | 4 +- .../Policy/FileTypePolicy.cs | 81 +- .../Policy/ServiceSettingsPolicy.cs | 24 + .../CloudBuilder.Web.Entry.csproj | 2 + .../Master/DmsFileController.auto.cs | 657 ++++++++ .../Master/FamilyGroupController.auto.cs | 333 ++++ .../Master/FamilyPersonController.auto.cs | 3 +- .../Master/FamilyTreeController.auto.cs | 3 +- .../Master/FileTypePolicyController.auto.cs | 54 + .../Master/PublishAudioController.auto.cs | 195 +++ .../Master/PublishPhotoController.auto.cs | 234 +++ .../Master/PublishVideoController.auto.cs | 195 +++ .../CloudBuilder.Web.Entry/Dockerfile | 1 + .../CloudBuilder.Web.Entry/Program.cs | 5 +- .../FolderProfile3.pubxml.user | 2 +- .../CloudBuilder.Web.Entry/appsettings.json | 10 +- CloudBuilder/Data/create_table.sql | 555 +++++++ CloudBuilder/Data/drop_table.sql | 25 + WebVue/src/hooks/useFileTypePolicy.ts | 34 + WebVue/src/main.ts | 2 +- WebVue/src/service/master/dmsFileService.ts | 326 ++++ .../src/service/master/familyGroupService.ts | 167 ++ .../service/master/fileTypePolicyService.ts | 20 + .../src/service/master/publishAudioService.ts | 93 ++ .../src/service/master/publishPhotoService.ts | 114 ++ .../src/service/master/publishVideoService.ts | 93 ++ WebVue/src/views/master/DmsFileEnquiry.vue | 1198 ++++++++++++++ .../src/views/master/DmsFileEnquiryModal.vue | 248 +++ WebVue/src/views/master/DmsFileShareModal.vue | 279 ++++ WebVue/src/views/master/DmsFolderModal.vue | 303 ++++ .../src/views/master/PublishAudioEnquiry.vue | 330 ++++ .../src/views/master/PublishPhotoEnquiry.vue | 330 ++++ .../src/views/master/PublishVideoEnquiry.vue | 329 ++++ WebVue/src/views/master/VideoPlay.vue | 82 + 135 files changed, 16937 insertions(+), 75 deletions(-) create mode 100644 CloudBuilder/CloudBuilder.Core/Policy/AppsettingsPolicy.cs create mode 100644 CloudBuilder/CloudBuilder.Master.Service/DmsFileService.auto.cs create mode 100644 CloudBuilder/CloudBuilder.Master.Service/FamilyGroupService.auto.cs create mode 100644 CloudBuilder/CloudBuilder.Master.Service/FileTypePolicyService.cs create mode 100644 CloudBuilder/CloudBuilder.Master.Service/PublishAudioService.auto.cs create mode 100644 CloudBuilder/CloudBuilder.Master.Service/PublishPhotoService.auto.cs create mode 100644 CloudBuilder/CloudBuilder.Master.Service/PublishVideoService.auto.cs create mode 100644 CloudBuilder/CloudBuilder.Master/Data/DmsFileResultData.cs create mode 100644 CloudBuilder/CloudBuilder.Master/Data/DmsFileUploadDeleteLogViewDisplayData.cs create mode 100644 CloudBuilder/CloudBuilder.Master/Data/DmsFileUploadViewDisplayData.cs create mode 100644 CloudBuilder/CloudBuilder.Master/Data/DmsFolderTreeData.cs create mode 100644 CloudBuilder/CloudBuilder.Master/Data/FamilyDmsFileViewDisplayData.cs create mode 100644 CloudBuilder/CloudBuilder.Master/Data/FamilyGroupData.cs create mode 100644 CloudBuilder/CloudBuilder.Master/Data/FamilyGroupFolderDisplayData.cs create mode 100644 CloudBuilder/CloudBuilder.Master/Data/FamilyGroupManagerDisplayData.cs create mode 100644 CloudBuilder/CloudBuilder.Master/Data/FamilyGroupPermissionDisplayData.cs create mode 100644 CloudBuilder/CloudBuilder.Master/Data/FamilyGroupResultData.cs create mode 100644 CloudBuilder/CloudBuilder.Master/Data/PublishAudioData.cs create mode 100644 CloudBuilder/CloudBuilder.Master/Data/PublishAudioDetailDisplayData.cs create mode 100644 CloudBuilder/CloudBuilder.Master/Data/PublishAudioFamilyGroupDisplayData.cs create mode 100644 CloudBuilder/CloudBuilder.Master/Data/PublishAudioResultData.cs create mode 100644 CloudBuilder/CloudBuilder.Master/Data/PublishData.cs create mode 100644 CloudBuilder/CloudBuilder.Master/Data/PublishPhotoData.cs create mode 100644 CloudBuilder/CloudBuilder.Master/Data/PublishPhotoFamilyGroupDisplayData.cs create mode 100644 CloudBuilder/CloudBuilder.Master/Data/PublishPhotoResultData.cs create mode 100644 CloudBuilder/CloudBuilder.Master/Data/PublishVideoData.cs create mode 100644 CloudBuilder/CloudBuilder.Master/Data/PublishVideoDetailDisplayData.cs create mode 100644 CloudBuilder/CloudBuilder.Master/Data/PublishVideoFamilyGroupDisplayData.cs create mode 100644 CloudBuilder/CloudBuilder.Master/Data/PublishVideoResultData.cs create mode 100644 CloudBuilder/CloudBuilder.Master/Entity/DmsFileDeleteLogEntity.auto.cs create mode 100644 CloudBuilder/CloudBuilder.Master/Entity/DmsFileEntity.auto.cs create mode 100644 CloudBuilder/CloudBuilder.Master/Entity/DmsFileUploadDeleteLogEntity.auto.cs create mode 100644 CloudBuilder/CloudBuilder.Master/Entity/DmsFileUploadDeleteLogViewEntity.auto.cs create mode 100644 CloudBuilder/CloudBuilder.Master/Entity/DmsFileUploadEntity.auto.cs create mode 100644 CloudBuilder/CloudBuilder.Master/Entity/DmsFileUploadViewEntity.auto.cs create mode 100644 CloudBuilder/CloudBuilder.Master/Entity/DmsFolderDeleteLogEntity.auto.cs create mode 100644 CloudBuilder/CloudBuilder.Master/Entity/DmsFolderEntity.auto.cs create mode 100644 CloudBuilder/CloudBuilder.Master/Entity/DmsFolderMapDeleteLogEntity.auto.cs create mode 100644 CloudBuilder/CloudBuilder.Master/Entity/DmsFolderMapDeleteLogEntityKey.auto.cs create mode 100644 CloudBuilder/CloudBuilder.Master/Entity/DmsFolderMapEntity.auto.cs create mode 100644 CloudBuilder/CloudBuilder.Master/Entity/DmsFolderMapEntityKey.auto.cs create mode 100644 CloudBuilder/CloudBuilder.Master/Entity/FamilyDmsFileViewEntity.auto.cs create mode 100644 CloudBuilder/CloudBuilder.Master/Entity/FamilyFolderFavoriteEntity.auto.cs create mode 100644 CloudBuilder/CloudBuilder.Master/Entity/FamilyFolderFavoriteEntityKey.auto.cs create mode 100644 CloudBuilder/CloudBuilder.Master/Entity/FamilyFolderFavoriteViewEntity.auto.cs create mode 100644 CloudBuilder/CloudBuilder.Master/Entity/FamilyGroupEntity.auto.cs create mode 100644 CloudBuilder/CloudBuilder.Master/Entity/FamilyGroupFolderEntity.auto.cs create mode 100644 CloudBuilder/CloudBuilder.Master/Entity/FamilyGroupManagerEntity.auto.cs create mode 100644 CloudBuilder/CloudBuilder.Master/Entity/FamilyGroupManagerEntityKey.auto.cs create mode 100644 CloudBuilder/CloudBuilder.Master/Entity/FamilyGroupManagerUserViewEntity.auto.cs create mode 100644 CloudBuilder/CloudBuilder.Master/Entity/FamilyGroupPermissionEntity.auto.cs create mode 100644 CloudBuilder/CloudBuilder.Master/Entity/FamilyGroupPermissionEntityKey.auto.cs create mode 100644 CloudBuilder/CloudBuilder.Master/Entity/FamilyGroupPermissionUserFolderViewEntity.auto.cs create mode 100644 CloudBuilder/CloudBuilder.Master/Entity/PublishAudioDetailEntity.auto.cs create mode 100644 CloudBuilder/CloudBuilder.Master/Entity/PublishAudioEntity.auto.cs create mode 100644 CloudBuilder/CloudBuilder.Master/Entity/PublishAudioFamilyGroupEntity.auto.cs create mode 100644 CloudBuilder/CloudBuilder.Master/Entity/PublishAudioFamilyGroupEntityKey.auto.cs create mode 100644 CloudBuilder/CloudBuilder.Master/Entity/PublishPhotoDetailEntity.auto.cs create mode 100644 CloudBuilder/CloudBuilder.Master/Entity/PublishPhotoEntity.auto.cs create mode 100644 CloudBuilder/CloudBuilder.Master/Entity/PublishPhotoFamilyGroupEntity.auto.cs create mode 100644 CloudBuilder/CloudBuilder.Master/Entity/PublishPhotoFamilyGroupEntityKey.auto.cs create mode 100644 CloudBuilder/CloudBuilder.Master/Entity/PublishVideoDetailEntity.auto.cs create mode 100644 CloudBuilder/CloudBuilder.Master/Entity/PublishVideoEntity.auto.cs create mode 100644 CloudBuilder/CloudBuilder.Master/Entity/PublishVideoFamilyGroupEntity.auto.cs create mode 100644 CloudBuilder/CloudBuilder.Master/Entity/PublishVideoFamilyGroupEntityKey.auto.cs create mode 100644 CloudBuilder/CloudBuilder.Master/SearchCriteria/DmsFileSearchCriteria.auto.cs create mode 100644 CloudBuilder/CloudBuilder.Master/SearchCriteria/FamilyGroupManagerUserSearchCriteria.cs create mode 100644 CloudBuilder/CloudBuilder.Master/SearchCriteria/FamilyGroupSearchCriteria.auto.cs create mode 100644 CloudBuilder/CloudBuilder.Master/SearchCriteria/PublishAudioSearchCriteria.auto.cs create mode 100644 CloudBuilder/CloudBuilder.Master/SearchCriteria/PublishPhotoSearchCriteria.auto.cs create mode 100644 CloudBuilder/CloudBuilder.Master/SearchCriteria/PublishVideoSearchCriteria.auto.cs create mode 100644 CloudBuilder/CloudBuilder.Master/Service/IDmsFileService.auto.cs create mode 100644 CloudBuilder/CloudBuilder.Master/Service/IFamilyGroupService.auto.cs create mode 100644 CloudBuilder/CloudBuilder.Master/Service/IFileTypePolicyService.cs create mode 100644 CloudBuilder/CloudBuilder.Master/Service/IPublishAudioService.auto.cs create mode 100644 CloudBuilder/CloudBuilder.Master/Service/IPublishPhotoService.auto.cs create mode 100644 CloudBuilder/CloudBuilder.Master/Service/IPublishVideoService.auto.cs create mode 100644 CloudBuilder/CloudBuilder.Request/Master/DmsFileRequest.auto.cs create mode 100644 CloudBuilder/CloudBuilder.Request/Master/FamilyGroupRequest.auto.cs create mode 100644 CloudBuilder/CloudBuilder.Request/Master/FileTypePolicyRequest.auto.cs create mode 100644 CloudBuilder/CloudBuilder.Request/Master/PublishAudioRequest.auto.cs create mode 100644 CloudBuilder/CloudBuilder.Request/Master/PublishPhotoRequest.auto.cs create mode 100644 CloudBuilder/CloudBuilder.Request/Master/PublishVideoRequest.auto.cs create mode 100644 CloudBuilder/CloudBuilder.Security/Policy/ServiceSettingsPolicy.cs create mode 100644 CloudBuilder/CloudBuilder.Web.Entry/Controllers/Master/DmsFileController.auto.cs create mode 100644 CloudBuilder/CloudBuilder.Web.Entry/Controllers/Master/FamilyGroupController.auto.cs create mode 100644 CloudBuilder/CloudBuilder.Web.Entry/Controllers/Master/FileTypePolicyController.auto.cs create mode 100644 CloudBuilder/CloudBuilder.Web.Entry/Controllers/Master/PublishAudioController.auto.cs create mode 100644 CloudBuilder/CloudBuilder.Web.Entry/Controllers/Master/PublishPhotoController.auto.cs create mode 100644 CloudBuilder/CloudBuilder.Web.Entry/Controllers/Master/PublishVideoController.auto.cs create mode 100644 CloudBuilder/Data/create_table.sql create mode 100644 CloudBuilder/Data/drop_table.sql create mode 100644 WebVue/src/hooks/useFileTypePolicy.ts create mode 100644 WebVue/src/service/master/dmsFileService.ts create mode 100644 WebVue/src/service/master/familyGroupService.ts create mode 100644 WebVue/src/service/master/fileTypePolicyService.ts create mode 100644 WebVue/src/service/master/publishAudioService.ts create mode 100644 WebVue/src/service/master/publishPhotoService.ts create mode 100644 WebVue/src/service/master/publishVideoService.ts create mode 100644 WebVue/src/views/master/DmsFileEnquiry.vue create mode 100644 WebVue/src/views/master/DmsFileEnquiryModal.vue create mode 100644 WebVue/src/views/master/DmsFileShareModal.vue create mode 100644 WebVue/src/views/master/DmsFolderModal.vue create mode 100644 WebVue/src/views/master/PublishAudioEnquiry.vue create mode 100644 WebVue/src/views/master/PublishPhotoEnquiry.vue create mode 100644 WebVue/src/views/master/PublishVideoEnquiry.vue create mode 100644 WebVue/src/views/master/VideoPlay.vue diff --git a/CloudBuilder/CloudBuilder.Core/Policy/AppsettingsPolicy.cs b/CloudBuilder/CloudBuilder.Core/Policy/AppsettingsPolicy.cs new file mode 100644 index 0000000..2b2c5bd --- /dev/null +++ b/CloudBuilder/CloudBuilder.Core/Policy/AppsettingsPolicy.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CloudBuilder.Core.Policy +{ + public class AppsettingsPolicy + { + public const string ApplicationUrl = "ApplicationUrl"; + public const string UrlOrigins = "UrlOrigins"; + public const string ExcelOutputDirectory = "FileServiceSettings:ExcelOutputDirectory"; + } +} diff --git a/CloudBuilder/CloudBuilder.Core/Report/DataToExcelHelper.cs b/CloudBuilder/CloudBuilder.Core/Report/DataToExcelHelper.cs index acabc75..49b5253 100644 --- a/CloudBuilder/CloudBuilder.Core/Report/DataToExcelHelper.cs +++ b/CloudBuilder/CloudBuilder.Core/Report/DataToExcelHelper.cs @@ -1,20 +1,21 @@ using ClosedXML.Excel; using CloudBuilder.Core.DatabaseAccessor.Entity; using CloudBuilder.Core.Extensions; +using CloudBuilder.Core.Policy; using CloudBuilder.Core.Service; -using DocumentFormat.OpenXml.Spreadsheet; using DocumentFormat.OpenXml; +using DocumentFormat.OpenXml.Spreadsheet; using Microsoft.AspNetCore.Mvc; using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations.Schema; using System.Data.SqlTypes; +using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Text; using System.Threading.Tasks; -using System.Diagnostics; namespace CloudBuilder.Core.Report { @@ -179,7 +180,7 @@ CellTypeFormatOperation cellOperation, XLWorksheetOperation xLWorksheetOperation if (service != null) { - fileFullname = Path.Combine(service.Configuration["FileServiceSettings:ExcelOutputDirectory"], $"{DateTime.Now.ToString("yyyyMMdd")}", typeof(T).Name + $"{DateTime.Now.ToString("yyyyMMddHHmmssffff")}.xlsx"); + fileFullname = Path.Combine(service.Configuration[AppsettingsPolicy.ExcelOutputDirectory], $"{DateTime.Now.ToString("yyyyMMdd")}", typeof(T).Name + $"{DateTime.Now.ToString("yyyyMMddHHmmssffff")}.xlsx"); } using (var excel = new XLWorkbook()) diff --git a/CloudBuilder/CloudBuilder.Core/Service/SearchCriteriaResultData.cs b/CloudBuilder/CloudBuilder.Core/Service/SearchCriteriaResultData.cs index 758a9fb..bfc6777 100644 --- a/CloudBuilder/CloudBuilder.Core/Service/SearchCriteriaResultData.cs +++ b/CloudBuilder/CloudBuilder.Core/Service/SearchCriteriaResultData.cs @@ -9,7 +9,7 @@ namespace CloudBuilder.Core.Service public int Page { get; set; } - public int Total { get; set; } + public Int64 Total { get; set; } public string? Sql { get; set; } diff --git a/CloudBuilder/CloudBuilder.Master.Service/CloudBuilder.Master.Service.csproj b/CloudBuilder/CloudBuilder.Master.Service/CloudBuilder.Master.Service.csproj index 078dc6c..ee7e55f 100644 --- a/CloudBuilder/CloudBuilder.Master.Service/CloudBuilder.Master.Service.csproj +++ b/CloudBuilder/CloudBuilder.Master.Service/CloudBuilder.Master.Service.csproj @@ -30,8 +30,10 @@ - + + + diff --git a/CloudBuilder/CloudBuilder.Master.Service/DmsFileService.auto.cs b/CloudBuilder/CloudBuilder.Master.Service/DmsFileService.auto.cs new file mode 100644 index 0000000..c62218a --- /dev/null +++ b/CloudBuilder/CloudBuilder.Master.Service/DmsFileService.auto.cs @@ -0,0 +1,1425 @@ + +using CliWrap; +using CloudBuilder.Core.DatabaseAccessor; +using CloudBuilder.Core.DatabaseAccessor.Entity; +using CloudBuilder.Core.Service; +using CloudBuilder.Master.Data; +using CloudBuilder.Master.Entity; +using CloudBuilder.Master.Policy; +using CloudBuilder.Master.SearchCriteria; +using CloudBuilder.Security.Policy; +using CloudBuilder.Security.Service; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.DependencyInjection; +using SixLabors.ImageSharp; +using SixLabors.ImageSharp.PixelFormats; +using SixLabors.ImageSharp.Processing; +using System; +using static System.Net.Mime.MediaTypeNames; +using Image = SixLabors.ImageSharp.Image; +namespace CloudBuilder.Master.Service +{ + public class DmsFileService : IDmsFileService + { + private readonly IApplicationService service; + private readonly IHttpContextAccessor httpContextAccessor; + private IRepository repository; + public DmsFileService(IApplicationService service, IHttpContextAccessor httpContextAccessor) + { + this.service = service; + this.httpContextAccessor = httpContextAccessor; + repository = service.GetRepository>(); + } + + [PermissionOperate(name: MasterPermissionPolicy.DmsFile, operate: Operate.Find)] + public DmsFileEntity FindByKey(long key) + { + return repository.DetachedEntities.Where(x => x.FileId == key).FirstOrDefault()!; + } + + [PermissionOperate(name: MasterPermissionPolicy.DmsFile, operate: Operate.Find)] + public DmsFileResultData FindBySearchCriteria(DmsFileSearchCriteria criteria) + { + DmsFileResultData data = new DmsFileResultData(); + DmsFileUploadViewEntity[] list = null; + + Int64 count = 0; + + string sqlWhere = null; + + if (criteria.Filter != null && criteria.Filter.Length > 0) + { + sqlWhere = SearchFilter.ComposeWhereClause(criteria.Filter); + } + + sqlWhere = sqlWhere + string.Format(" and {0} ='{1}' ", DmsFileUploadViewEntity.DB_CREATED_BY, service.UserId); + + DmsFileUploadViewEntity entity = DmsFileUploadViewEntity.GetInstance(repository.GetDbContext().Database.ProviderName); + string sql = entity.GetSelectTopFrom(criteria.limit, criteria.page, criteria.orderby.StringToDbField(), criteria.orderbytag, sqlWhere); + + IRepository repositoryView = repository.GetRepository>(); + + string err = null; + try + { + list = repositoryView.FromSql(sql).ToArray(); + } + catch (System.Exception ex) + { + err = ex.Message; + } + + + + if (list != null && list.Length > 0) + { + //list = list.OrderByDescending(x => x.IsDirectoryIndc).ThenByDescending(x => x.CreatedDatetime).ToArray(); + sql = entity.GetSelectCountFrom(sqlWhere); + count = Convert.ToInt64(repository.ExecuteScalar(sql)); + + var webRootPath = service.Configuration[ServiceSettingsPolicy.RequestPath]; + var phy = service.Configuration[ServiceSettingsPolicy.PhysicalFileDirectory]; + var scale = service.Configuration[ServiceSettingsPolicy.DmsFileScaleDirectory].Replace(phy, ""); + List prvs = new List(); + //bool isAttached = Debugger.IsAttached; + foreach (var item in list) + { + item.Url = FileTypePolicy.PackUrl(service, item.CreatedBy, item.OrderKey, item.TranscodeIndc); + } + + data.Datas = list.Select(x => new DmsFileUploadViewDisplayData(x) + { + FormattedPic = FileTypePolicy.PackUrl(service, x.CreatedBy, x.OrderKey, YesNoPolicy.YES) + }).ToArray(); + } + + data.Limit = criteria.limit; + data.Page = criteria.page; + + data.Total = count; + //data.Sql = sql; + data.ErrorMessage = err; + return data; + } + + [PermissionOperate(name: MasterPermissionPolicy.DmsFile, operate: Operate.Find)] + public DmsFileResultData FindDatasBySearchCriteria(DmsFileSearchCriteria criteria) + { + DmsFileResultData data = new DmsFileResultData(); + DmsFileUploadViewEntity[] list = null; + + Int64 count = 0; + + string sqlWhere = null; + + if (criteria.Filter != null && criteria.Filter.Length > 0) + { + sqlWhere = SearchFilter.ComposeWhereClause(criteria.Filter); + } + + sqlWhere = sqlWhere + string.Format(" and {0} ='{1}' and {2} ='{3}' ", + DmsFileUploadViewEntity.DB_CREATED_BY, service.UserId, + DmsFileUploadViewEntity.DB_IS_DIRECTORY_INDC, YesNoPolicy.NO + ); + + DmsFileUploadViewEntity entity = DmsFileUploadViewEntity.GetInstance(repository.GetDbContext().Database.ProviderName); + string sql = entity.GetSelectTopFrom(criteria.limit, criteria.page, criteria.orderby.StringToDbField(), criteria.orderbytag, sqlWhere); + + IRepository repositoryView = repository.GetRepository>(); + + string err = null; + try + { + list = repositoryView.FromSql(sql).ToArray(); + } + catch (System.Exception ex) + { + err = ex.Message; + } + + + + if (list != null && list.Length > 0) + { + //list = list.OrderByDescending(x => x.IsDirectoryIndc).ThenByDescending(x => x.CreatedDatetime).ToArray(); + sql = entity.GetSelectCountFrom(sqlWhere); + count = Convert.ToInt64(repository.ExecuteScalar(sql)); + + var webRootPath = service.Configuration[ServiceSettingsPolicy.RequestPath]; + var phy = service.Configuration[ServiceSettingsPolicy.PhysicalFileDirectory]; + var scale = service.Configuration[ServiceSettingsPolicy.DmsFileScaleDirectory].Replace(phy, ""); + List prvs = new List(); + //bool isAttached = Debugger.IsAttached; + foreach (var item in list) + { + item.Url = FileTypePolicy.PackUrl(service, item.CreatedBy, item.OrderKey, item.TranscodeIndc); + } + + data.Datas = list.Select(x => new DmsFileUploadViewDisplayData(x) + { + FormattedPic = FileTypePolicy.PackUrl(service, x.CreatedBy, x.OrderKey, YesNoPolicy.YES) + }).ToArray(); + } + + data.Limit = criteria.limit; + data.Page = criteria.page; + + data.Total = count; + //data.Sql = sql; + data.ErrorMessage = err; + return data; + } + + + [PermissionOperate(name: MasterPermissionPolicy.DmsFile, operate: Operate.Find)] + public DmsFileResultData FindDeleteLogBySearchCriteria(DmsFileSearchCriteria criteria) + { + DmsFileResultData data = new DmsFileResultData(); + DmsFileUploadDeleteLogViewEntity[] list = null; + + Int64 count = 0; + + string sqlWhere = null; + + if (criteria.Filter != null && criteria.Filter.Length > 0) + { + sqlWhere = SearchFilter.ComposeWhereClause(criteria.Filter); + } + + sqlWhere = sqlWhere + string.Format(" and {0} ='{1}' ", DmsFileUploadViewEntity.DB_CREATED_BY, service.UserId); + + DmsFileUploadDeleteLogViewEntity entity = DmsFileUploadDeleteLogViewEntity.GetInstance(repository.GetDbContext().Database.ProviderName); + string sql = entity.GetSelectTopFrom(criteria.limit, criteria.page, criteria.orderby.StringToDbField(), criteria.orderbytag, sqlWhere); + + IRepository repositoryView = repository.GetRepository>(); + + string err = null; + try + { + list = repositoryView.FromSql(sql).ToArray(); + } + catch (System.Exception ex) + { + err = ex.Message; + } + + + if (list != null && list.Length > 0) + { + //list = list.OrderByDescending(x => x.IsDirectoryIndc).ThenByDescending(x => x.CreatedDatetime).ToArray(); + sql = entity.GetSelectCountFrom(sqlWhere); + count = Convert.ToInt64(repository.ExecuteScalar(sql)); + + var webRootPath = service.Configuration[ServiceSettingsPolicy.RequestPath]; + var phy = service.Configuration[ServiceSettingsPolicy.PhysicalFileDirectory]; + var scale = service.Configuration[ServiceSettingsPolicy.DmsFileScaleDirectory].Replace(phy, ""); + + foreach (var item in list) + { + item.Url = FileTypePolicy.PackUrl(service, item.CreatedBy, item.OrderKey, item.TranscodeIndc); + } + + data.Logs = list.Select(x => new DmsFileUploadDeleteLogViewDisplayData(x) + { + FormattedPic = FileTypePolicy.PackUrl(service, x.CreatedBy, x.OrderKey, YesNoPolicy.YES) + }).ToArray(); + } + + data.Limit = criteria.limit; + data.Page = criteria.page; + + data.Total = count; + //data.Sql = sql; + data.ErrorMessage = err; + return data; + } + + [PermissionOperate(name: MasterPermissionPolicy.DmsFile, operate: Operate.Find)] + public DmsFileResultData FindFamilyBySearchCriteria(DmsFileSearchCriteria criteria) + { + DmsFileResultData data = new DmsFileResultData(); + FamilyDmsFileViewEntity[] list = null; + + Int64 count = 0; + + string sqlWhere = null; + + if (criteria.Filter != null && criteria.Filter.Length > 0) + { + sqlWhere = SearchFilter.ComposeWhereClause(criteria.Filter); + } + + if (criteria.UserIdIndc == true || criteria.Filter.Where(x => x.Column == FamilyDmsFileViewEntity.DB_FAMILY_NAME).Count() == 0) + { + sqlWhere = sqlWhere + string.Format(" and {0} ='{1}' ", FamilyDmsFileViewEntity.DB_CREATED_BY, service.UserId); + } + + if (string.IsNullOrEmpty(sqlWhere)) sqlWhere = " and 1=0 "; + + FamilyDmsFileViewEntity entity = FamilyDmsFileViewEntity.GetInstance(repository.GetDbContext().Database.ProviderName); + string sql = entity.GetSelectTopFrom(criteria.limit, criteria.page, criteria.orderby.StringToDbField(), criteria.orderbytag, sqlWhere); + + IRepository repositoryView = repository.GetRepository>(); + IRepository repositoryFamilyGroupPermission = repository.GetRepository>(); + IRepository repositoryFamilyFolderFavorite = repository.GetRepository>(); + + FamilyGroupPermissionEntity[] permissionEntities = repositoryFamilyGroupPermission.DetachedEntities.Where(x => x.UserName == service.UserId).ToArray(); + FamilyFolderFavoriteEntity[] favorites = repositoryFamilyFolderFavorite.DetachedEntities.Where(x => x.UserName == service.UserId).ToArray(); + + string err = null; + try + { + list = repositoryView.FromSql(sql).ToArray(); + } + catch (System.Exception ex) + { + err = ex.Message; + } + + + if (list != null && list.Length > 0) + { + sql = entity.GetSelectCountFrom(sqlWhere); + count = Convert.ToInt64(repository.ExecuteScalar(sql)); + + foreach (var item in list) + { + if (permissionEntities != null && permissionEntities.Length > 0) + { + foreach (var p in permissionEntities) + { + if (item.TopFolderName == p.FolderName) + { + item.PermissionIndc = YesNoPolicy.YES; + break; + } + } + } + + if (favorites != null && favorites.Length > 0) + { + foreach (var f in favorites) + { + if (item.FolderName == f.FolderName) + { + item.FavoriteIndc = YesNoPolicy.YES; + break; + } + } + } + } + + var webRootPath = service.Configuration[ServiceSettingsPolicy.RequestPath]; + var phy = service.Configuration[ServiceSettingsPolicy.PhysicalFileDirectory]; + var scale = service.Configuration[ServiceSettingsPolicy.DmsFileScaleDirectory].Replace(phy, ""); + + + foreach (var item in list) + { + item.Url = FileTypePolicy.PackUrl(service, item.CreatedBy, item.OrderKey, item.TranscodeIndc); + } + } + + data.Limit = criteria.limit; + data.Page = criteria.page; + data.Families = list.Select(x => new FamilyDmsFileViewDisplayData(x) { FileType = FileTypePolicy.GetType(x.OrderKey) }).ToArray(); + data.Total = count; + //data.Sql = sql; + data.ErrorMessage = err; + return data; + } + + + [PermissionOperate(name: MasterPermissionPolicy.DmsFile, operate: Operate.Find)] + public DmsFileDeleteLogEntity FindDmsFileDeleteLogByKey(long key) + { + IRepository repositoryDmsFileDeleteLog = repository.GetRepository>(); + + return repositoryDmsFileDeleteLog.DetachedEntities.Where(x => x.FileId == key).FirstOrDefault()!; + } + + [PermissionOperate(name: MasterPermissionPolicy.DmsFile, operate: Operate.Print)] + public dynamic PrintBySearchCriteria(DmsFileSearchCriteria criteria) + { + throw new NotImplementedException(); + } + + [PermissionOperate(name: MasterPermissionPolicy.DmsFile, operate: Operate.Insert)] + [UnitOfWork] + public DmsFileEntity Insert(DmsFileEntity data) + { + throw new NotImplementedException(); + } + + [PermissionOperate(name: MasterPermissionPolicy.DmsFile, operate: Operate.Update)] + [UnitOfWork] + public DmsFileEntity Update(DmsFileEntity data) + { + throw new NotImplementedException(); + } + + + [PermissionOperate(name: MasterPermissionPolicy.DmsFile, operate: Operate.Delete)] + [UnitOfWork] + public void Delete(long key) + { + DmsFileEntity dmsFile = repository.DetachedEntities.Where(x => x.FileId == key).FirstOrDefault()!; + + if (dmsFile == null) return; + + IRepository repositoryUpload = repository.GetRepository>(); + IRepository repositoryFolderMap = repository.GetRepository>(); + IRepository repositoryFolder = repository.GetRepository>(); + + repository.DeleteNow(dmsFile); + + IRepository repositoryDmsFileDeleteLog = repository.GetRepository>(); + DmsFileDeleteLogEntity dmsFileDeleteLogEntity = new DmsFileDeleteLogEntity(); + ObjectCopyHelper.Copy(dmsFile, dmsFileDeleteLogEntity); + repositoryDmsFileDeleteLog.InsertNow(dmsFileDeleteLogEntity); + + DmsFileUploadEntity DmsFileUpload = repositoryUpload.DetachedEntities.Where(x => x.FileId == key).FirstOrDefault()!; + + IRepository repositoryDmsFileUploadDeleteLog = repository.GetRepository>(); + IRepository repositoryDmsFolderDeleteLog = repository.GetRepository>(); + IRepository repositoryDmsFolderMapDeleteLog = repository.GetRepository>(); + + if (DmsFileUpload != null) + { + repositoryUpload.DeleteNow(DmsFileUpload); + + DmsFileUploadDeleteLogEntity DmsFileUploadDeleteLogEntity = new DmsFileUploadDeleteLogEntity(); + ObjectCopyHelper.Copy(DmsFileUpload, DmsFileUploadDeleteLogEntity); + repositoryDmsFileUploadDeleteLog.InsertNow(DmsFileUploadDeleteLogEntity); + } + + if (dmsFile.IsDirectoryIndc == YesNoPolicy.YES) + { + DmsFolderEntity folder = repositoryFolder.DetachedEntities.Where(x => x.FolderName == dmsFile.FileName).FirstOrDefault()!; + + if (folder == null) return; + + 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 + { + //删除文件与文件夹的映射关系 + DmsFolderMapEntity folderMap = repositoryFolderMap.DetachedEntities.Where(x => x.FolderNameSon == dmsFile.FileName).FirstOrDefault(); + if (folderMap != null) + repositoryFolderMap.DeleteNow(folderMap); + } + + } + + [PermissionOperate(name: MasterPermissionPolicy.DmsFile, operate: Operate.Delete)] + [UnitOfWork] + public void DeleteLog(long key) + { + IRepository repositoryDmsFileDeleteLog = repository.GetRepository>(); + + DmsFileDeleteLogEntity dmsFile = repositoryDmsFileDeleteLog.DetachedEntities.Where(x => x.FileId == key).FirstOrDefault()!; + + if (dmsFile == null) return; + + repositoryDmsFileDeleteLog.DeleteNow(dmsFile); + + IRepository repositoryDmsFileUploadDeleteLog = repository.GetRepository>(); + + DmsFileUploadDeleteLogEntity DmsFileUpload = repositoryDmsFileUploadDeleteLog.DetachedEntities.Where(x => x.FileId == key).FirstOrDefault()!; + + if (DmsFileUpload != null) + { + repositoryDmsFileUploadDeleteLog.DeleteNow(DmsFileUpload); + } + + if (dmsFile.IsDirectoryIndc == YesNoPolicy.YES) + { + IRepository repositoryDmsFolderDeleteLog = repository.GetRepository>(); + DmsFolderDeleteLogEntity folder = repositoryDmsFolderDeleteLog.DetachedEntities.Where(x => x.FolderName == dmsFile.FileName).FirstOrDefault()!; + + if (folder == null) return; + + if (folder != null) + { + repositoryDmsFolderDeleteLog.DeleteNow(folder); + } + + IRepository repositoryDmsFolderMapDeleteLog = repository.GetRepository>(); + DmsFolderMapDeleteLogEntity[] folderMaps = repositoryDmsFolderMapDeleteLog.DetachedEntities.Where(x => x.FolderNameSon == dmsFile.FileName || x.FolderNameParent == dmsFile.FileName).ToArray(); + + if (folderMaps != null && folderMaps.Length > 0) + { + foreach (var map in folderMaps) + { + repositoryDmsFolderMapDeleteLog.DeleteNow(map); + + if (map.FolderNameSon == folder.FolderName) continue; + //刪除dmsfoler下的所有內容 + DeleteFolderDeleteLog(map.FolderNameSon); + } + } + + + } + + } + + private void DeleteFolderDeleteLog(string folderName) + { + IRepository repositoryDmsFileDeleteLog = repository.GetRepository>(); + + DmsFileDeleteLogEntity[] dmsFiles = repositoryDmsFileDeleteLog.DetachedEntities.Where(x => x.FileName == folderName).ToArray(); + if (dmsFiles == null || dmsFiles.Length == 0) return; + foreach (var dmsFile in dmsFiles) + { + DeleteLog(dmsFile.FileId); + } + } + + public void DeleteFolder(string folderName) + { + DmsFileEntity[] dmsFiles = repository.DetachedEntities.Where(x => x.FileName == folderName).ToArray(); + if (dmsFiles == null || dmsFiles.Length == 0) return; + foreach (var dmsFile in dmsFiles) + { + Delete(dmsFile.FileId); + } + } + + [PermissionOperate(name: MasterPermissionPolicy.DmsFile, operate: Operate.Insert)] + [UnitOfWork] + public string CreateDmsFolder(DmsFileEntity dmsFile) + { + IRepository repositoryFolder = repository.GetRepository>(); + ISecurityGeneratorNumberService securityGeneratorNumberService = service.ServiceProvider.GetService()!; + DmsFolderEntity folder = null; + string folderNameParent = dmsFile.FilePath; + //父目录是空,创建顶级目录 + + folder = repositoryFolder.DetachedEntities.Where(x => x.FolderLocalName == service.UserId).FirstOrDefault()!; + if (folder == null) + { + folder = new DmsFolderEntity(); + folder.FolderName = securityGeneratorNumberService.GetNo(MasterPrefixPolicy.DMS_FOLDER, MasterPrefixPolicy.DMS_FOLDER_FOLDER_NAME, "DR", YesNoPolicy.NO, "00000000"); + folder.FolderLocalName = service.UserId; + repositoryFolder.InsertNow(folder); + } + + if (string.IsNullOrEmpty(dmsFile.FilePath)) + { + folderNameParent = folder.FolderName; + } + + //创建当前目录 + folder = new DmsFolderEntity(); + folder.FolderName = securityGeneratorNumberService.GetNo(MasterPrefixPolicy.DMS_FOLDER, MasterPrefixPolicy.DMS_FOLDER_FOLDER_NAME, "DR", YesNoPolicy.NO, "00000000"); + folder.FolderLocalName = dmsFile.FileName; + repositoryFolder.InsertNow(folder); + //创建目录关系表 + DmsFolderMapEntity map = new DmsFolderMapEntity(); + IRepository repositoryFolderMap = repository.GetRepository>(); + map.FolderNameParent = folderNameParent; + map.FolderNameSon = folder.FolderName; + repositoryFolderMap.InsertNow(map); + + //创建Dms目录 + DmsFileEntity entity = new DmsFileEntity(); + entity.OrderKey = entity.FileName = folder.FolderName; + entity.OrgFileName = dmsFile.FileName; + entity.AllowDeleteIndc = entity.AllowRenameIndc = entity.IsDirectoryIndc = YesNoPolicy.YES; + + entity.FilePath = folderNameParent; + + entity.OwerId = service.UserId; + entity.IsLinkIndc = YesNoPolicy.NO; + + repository.InsertNow(entity); + + DmsFileUploadEntity upload = new DmsFileUploadEntity(); + upload.FileId = entity.FileId; + upload.FileCategory = "MASTER"; + upload.UploadName = securityGeneratorNumberService.GetNo(MasterPrefixPolicy.UPLOAD_DMS_FILE, MasterPrefixPolicy.UPLOAD_DMS_FILE_UPLOAD_NAME, "DR", YesNoPolicy.NO, MasterPrefixPolicy.UPLOAD_DMS_FILE_FORMAT); + upload.OrgFileName = entity.OrgFileName; + + IRepository repositoryUpload = repository.GetRepository>(); + + repositoryUpload.InsertNow(upload); + + return folder.FolderName; + } + + public void CreateFamilyDmsFolder(FamilyGroupEntity familyGroup, FamilyGroupFolderEntity[] familyGroupFolders) + { + ISecurityGeneratorNumberService securityGeneratorNumberService = service.ServiceProvider.GetService()!; + IRepository repositoryFolder = repository.GetRepository>(); + DmsFolderEntity folder = repositoryFolder.DetachedEntities.Where(x => x.FolderLocalName == familyGroup.FamilyName).FirstOrDefault()!; + if (folder == null) + { + folder = new DmsFolderEntity(); + folder.FolderName = familyGroup.FamilyName; + folder.FolderLocalName = familyGroup.FamilyName; + repositoryFolder.InsertNow(folder); + } + + if (familyGroupFolders != null && familyGroupFolders.Length > 0) + CreateFamilyGroupFolderDetail(folder, familyGroupFolders); + } + + [PermissionOperate(name: MasterPermissionPolicy.DmsFile, operate: Operate.Insert)] + [UnitOfWork] + public void CreateFamilyDmsFolder(FamilyDmsFileViewEntity familyDmsFile) + { + ISecurityGeneratorNumberService securityGeneratorNumberService = service.ServiceProvider.GetService()!; + IRepository repositoryFolder = repository.GetRepository>(); + + //上级目录 + FamilyGroupFolderEntity folder = repositoryFolder.DetachedEntities.Where(x => x.FolderName == familyDmsFile.FilePath).FirstOrDefault()!; + if (folder == null) return; + + if (string.IsNullOrEmpty(familyDmsFile.FolderLocalName)) return; + + CreateFamilyGroupFolder(folder, familyDmsFile); + } + + private void CreateFamilyGroupFolder(FamilyGroupFolderEntity dmsFolder, FamilyDmsFileViewEntity familyDmsFile) + { + ISecurityGeneratorNumberService securityGeneratorNumberService = service.ServiceProvider.GetService()!; + IRepository repositoryFolder = repository.GetRepository>(); + IRepository repositoryFolderMap = repository.GetRepository>(); + + DmsFolderEntity folder; + DmsFolderMapEntity map; + DmsFileEntity entity; + + FamilyGroupFolderEntity familyGroupFolder = new FamilyGroupFolderEntity(); + familyGroupFolder.FamilyName = familyDmsFile.FamilyName; + familyGroupFolder.FolderName = securityGeneratorNumberService.GetNo(MasterPrefixPolicy.DMS_FOLDER, MasterPrefixPolicy.DMS_FOLDER_FOLDER_NAME, "FG", YesNoPolicy.NO, "00000000"); + familyGroupFolder.FolderLocalName = familyDmsFile.FolderLocalName; + familyGroupFolder.Notice = familyDmsFile.Notice; + //设置顶级目录 + familyGroupFolder.TopFolderName = dmsFolder.TopFolderName; + + IRepository repositoryFamilyGroupFolder = repository.GetRepository>(); + + repositoryFamilyGroupFolder.InsertNow(familyGroupFolder); + + folder = new DmsFolderEntity(); + folder.FolderName = familyGroupFolder.FolderName; + folder.FolderLocalName = familyGroupFolder.FolderLocalName; + repositoryFolder.InsertNow(folder); + + map = new DmsFolderMapEntity(); + map.FolderNameParent = dmsFolder.FolderName; + map.FolderNameSon = folder.FolderName; + repositoryFolderMap.InsertNow(map); + + //创建Dms目录 + entity = new DmsFileEntity(); + entity.OrderKey = entity.FileName = familyGroupFolder.FolderName; + entity.OrgFileName = folder.FolderLocalName; + entity.AllowDeleteIndc = entity.AllowRenameIndc = entity.IsDirectoryIndc = YesNoPolicy.YES; + + entity.FilePath = map.FolderNameParent; + + entity.OwerId = folder.FolderName; + entity.IsLinkIndc = YesNoPolicy.NO; + + repository.InsertNow(entity); + } + + + private void CreateFamilyGroupFolderDetail(DmsFolderEntity dmsFolder, FamilyGroupFolderEntity[] familyGroupFolders) + { + ISecurityGeneratorNumberService securityGeneratorNumberService = service.ServiceProvider.GetService()!; + IRepository repositoryFolder = repository.GetRepository>(); + IRepository repositoryFolderMap = repository.GetRepository>(); + + DmsFolderEntity folder; + DmsFolderMapEntity map; + DmsFileEntity entity; + foreach (var item in familyGroupFolders) + { + //如果是已创建,则跳过 + if (!string.IsNullOrEmpty(item.CreatedBy)) continue; + + folder = new DmsFolderEntity(); + folder.FolderName = item.FolderName; + folder.FolderLocalName = item.FolderLocalName; + repositoryFolder.InsertNow(folder); + + map = new DmsFolderMapEntity(); + map.FolderNameParent = dmsFolder.FolderName; + map.FolderNameSon = folder.FolderName; + repositoryFolderMap.InsertNow(map); + + //创建Dms目录 + entity = new DmsFileEntity(); + + entity.OrderKey = entity.FileName = item.FolderName; + entity.OrgFileName = folder.FolderLocalName; + entity.AllowDeleteIndc = entity.AllowRenameIndc = entity.IsDirectoryIndc = YesNoPolicy.YES; + + entity.FilePath = map.FolderNameParent; + + entity.OwerId = folder.FolderName; + entity.IsLinkIndc = YesNoPolicy.NO; + + repository.InsertNow(entity); + } + + + } + + [PermissionOperate(name: MasterPermissionPolicy.DmsFile, operate: Operate.Update)] + [UnitOfWork] + public void UpdateDmsFolder(DmsFileEntity dmsFile) + { + IRepository repositoryUpload = repository.GetRepository>(); + + DmsFileUploadEntity upload = repositoryUpload.DetachedEntities.Where(x => x.FileId == dmsFile.FileId).FirstOrDefault()!; + + if (upload == null) + { + throw new ValidatedException("记录不存在."); + } + + upload.OrgFileName = dmsFile.FileName; + + repositoryUpload.UpdateNow(upload); + + DmsFileEntity file = repository.DetachedEntities.Where(x => x.FileId == dmsFile.FileId).FirstOrDefault()!; + //修改目录档对应的名称 + IRepository repositoryFolder = repository.GetRepository>(); + DmsFolderEntity dmsFolder = repositoryFolder.DetachedEntities.Where(x => x.FolderName == file.FileName).FirstOrDefault()!; + + if (dmsFolder == null) return; + dmsFolder.FolderLocalName = upload.OrgFileName; + + repositoryFolder.UpdateNow(dmsFolder); + + + } + + [PermissionOperate(name: MasterPermissionPolicy.DmsFile, operate: Operate.Find)] + public SelectOption[] FindDmsFolders() + { + IRepository repositoryFolder = repository.GetRepository>(); + //排除FamilyGroup创建的目录 + DmsFolderEntity[] ents = repositoryFolder.DetachedEntities.Where(x => x.FolderName.StartsWith("DR") && x.CreatedBy == service.UserId && x.FolderLocalName != service.UserId).ToArray(); + List l = new List(); + SelectOption selectOption; + + DmsFolderEntity my = repositoryFolder.DetachedEntities.Where(x => x.CreatedBy == service.UserId && x.FolderLocalName == service.UserId).FirstOrDefault()!; + + selectOption = new SelectOption(); + selectOption.BindValue = string.Empty; + if (my == null) + { + selectOption.DisplayName = "我的网盘"; + } + else + { + selectOption.DisplayName = "所有文件(夹)"; + } + + l.Add(selectOption); + + if (my != null) + { + selectOption = new SelectOption(); + selectOption.BindValue = my.FolderName; + selectOption.DisplayName = "我的网盘"; + l.Add(selectOption); + } + + if (ents == null || ents.Length == 0) return l.ToArray(); + + foreach (DmsFolderEntity ent in ents) + { + selectOption = new SelectOption(); + selectOption.BindValue = ent.FolderName; + selectOption.DisplayName = ent.FolderLocalName; + l.Add(selectOption); + } + return l.ToArray(); + } + + [PermissionOperate(name: MasterPermissionPolicy.DmsFile, operate: Operate.Find)] + public SelectOption[] FindDmsFolderDeleteLogs() + { + IRepository repositoryFolder = repository.GetRepository>(); + //排除FamilyGroup创建的目录 + DmsFolderDeleteLogEntity[] ents = repositoryFolder.DetachedEntities.Where(x => x.FolderName.StartsWith("DR") && x.CreatedBy == service.UserId && x.FolderLocalName != service.UserId).ToArray(); + List l = new List(); + SelectOption selectOption; + + DmsFolderDeleteLogEntity my = repositoryFolder.DetachedEntities.Where(x => x.CreatedBy == service.UserId && x.FolderLocalName == service.UserId).FirstOrDefault()!; + + selectOption = new SelectOption(); + selectOption.BindValue = string.Empty; + if (my == null) + { + selectOption.DisplayName = "我的网盘"; + } + else + { + selectOption.DisplayName = "所有文件(夹)"; + } + + l.Add(selectOption); + + if (my != null) + { + selectOption = new SelectOption(); + selectOption.BindValue = my.FolderName; + selectOption.DisplayName = "我的网盘"; + l.Add(selectOption); + } + + if (ents == null || ents.Length == 0) return l.ToArray(); + + foreach (DmsFolderDeleteLogEntity ent in ents) + { + selectOption = new SelectOption(); + selectOption.BindValue = ent.FolderName; + selectOption.DisplayName = ent.FolderLocalName; + l.Add(selectOption); + } + return l.ToArray(); + } + + + [PermissionOperate(name: MasterPermissionPolicy.DmsFile, operate: Operate.Find)] + public DmsFolderData FindDmsFolderData() + { + DmsFolderData data = new DmsFolderData(); + + IRepository repositoryFolder = repository.GetRepository>(); + DmsFolderEntity[] dmsFolders = repositoryFolder.DetachedEntities.Where(x => x.CreatedBy == service.UserId).ToArray(); + + data.DmsFolders = dmsFolders; + + IRepository repositoryFolderMap = repository.GetRepository>(); + DmsFolderMapEntity[] dmsFolderMaps = repositoryFolderMap.DetachedEntities.Where(x => x.CreatedBy == service.UserId).ToArray(); + data.DmsFoldersMaps = dmsFolderMaps; + + return data; + } + + [PermissionOperate(name: MasterPermissionPolicy.DmsFile, operate: Operate.Update)] + [UnitOfWork] + public void MoveDmsFolder(DmsFileEntity dmsFile) + { + DmsFileEntity file = repository.DetachedEntities.Where(x => x.FileId == dmsFile.FileId).FirstOrDefault()!; + + if (file == null) return; + if (file.FilePath == dmsFile.FilePath) return; + + file.FilePath = dmsFile.FilePath; + + repository.UpdateNow(file); + + IRepository repositoryFolderMap = repository.GetRepository>(); + + DmsFolderMapEntity map = repositoryFolderMap.Entities.Where(x => x.FolderNameSon == file.FileName).FirstOrDefault()!; + if (map == null) return; + repositoryFolderMap.DeleteNow(map); + + map = new DmsFolderMapEntity(); + map.FolderNameSon = file.FileName; + map.FolderNameParent = dmsFile.FilePath; + repositoryFolderMap.InsertNow(map); + } + + [PermissionOperate(name: MasterPermissionPolicy.DmsFile, operate: Operate.Insert)] + [UnitOfWork] + public void UploadFile() + { + //采用分片上传文件(以及后面分片下载) + 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 = PackUploadFile(file, filePath); + break; + } + } + + if (dmsFile != null) + { + CreateDmsFile(dmsFile); + } + } + + public DmsFileEntity PackUploadFile(IFormFile file, string folderName) + { + var webRootPath = service.Configuration[ServiceSettingsPolicy.DmsFileUploadDirectory]; + DmsFileEntity dmsFile = new DmsFileEntity(); + dmsFile.OrgFileName = file.Name.Replace(" ", ""); + dmsFile.FilePath = folderName; + //文件后缀 + var fileExtension = Path.GetExtension(file.Name.Replace(" ", "")).ToLower();//获取文件格式,拓展名 + if (string.IsNullOrEmpty(fileExtension)) fileExtension = "ext"; + + var filePath = Path.Combine(service.UserId, fileExtension.Replace(".", ""), ""); + + //创建存储文件夹 + if (!Directory.Exists(Path.Combine(webRootPath, filePath))) + { + Directory.CreateDirectory(Path.Combine(webRootPath, filePath)); + } + //判断文件大小 + var fileSize = file.Length; + if (fileSize > 1024 * 1024 * 100) //100M TODO:(1mb=1024X1024b) + { + return null; + } + //保存的文件名称 + string fullName = Path.Combine(webRootPath, 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]) + { + dmsFile = null; + return null; + } + else + { + dmsFile.OrderKey = file.FileName; + if (fns[fns.Length - 1].Split('.')[0] == "1") + { + dmsFile.OrderKey = file.FileName; + dmsFile.FileName = file.FileName; + dmsFile.FileSize = Convert.ToInt32(fileSize / 1024); + var backupRootPath = service.Configuration[ServiceSettingsPolicy.DmsFileBackupDirectory]; + string backupName = Path.Combine(backupRootPath, filePath, dmsFile.FileName); + if (!Directory.Exists(Path.Combine(backupRootPath, filePath))) + { + Directory.CreateDirectory(Path.Combine(backupRootPath, filePath)); + } + if (File.Exists(backupName)) File.Delete(backupName); + File.Copy(fullName, backupName, true); + //生成缩略图 + if (FileTypePolicy.GetType(fileExtension.ToLower()) == FileTypePolicy.PHOTO) + { + ImageToScare(fullName, dmsFile); + } + } + else//合并文件 + { + List all = new List(); + List fileNames = new List(); + //文件分片从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(webRootPath, filePath, fns.ToDelimiteredList('-'))); + } + dmsFile.FileName = Path.GetFileName(fullName); + var backupRootPath = service.Configuration[ServiceSettingsPolicy.DmsFileBackupDirectory]; + + fullName = Path.Combine(backupRootPath, filePath, dmsFile.FileName); + if (!Directory.Exists(Path.Combine(backupRootPath, filePath))) + { + Directory.CreateDirectory(Path.Combine(backupRootPath, filePath)); + } + if (File.Exists(fullName)) File.Delete(fullName); + using (FileStream outputFile = File.Create(fullName)) // 创建输出文件流 + { + foreach (string fileName in fileNames) + { + byte[] buffer = File.ReadAllBytes(fileName); // 读取每个文件内容到字节数组 + outputFile.Write(buffer, 0, buffer.Length); // 将字节数组写入输出文件流 + dmsFile.FileSize += buffer.Length; + } + dmsFile.FileSize = Convert.ToInt32(dmsFile.FileSize / 1024);//kb + } + //task:ImageSharpTask uid:SYSTEM file_size:5351 file_name:vc-upload-1709274146458-2-11-11_DSC_6141.JPG order_key:vc-upload-1709257162571-2-6-6.JPG + //生成缩略图 + if (FileTypePolicy.GetType(fullName.ToLower()) == FileTypePolicy.PHOTO) + { + ImageToScare(fullName, dmsFile); + } + else if (FileTypePolicy.GetType(fullName.ToLower()) == FileTypePolicy.VIDEO) + { + foreach (string fileName in fileNames) + { + if (File.Exists(fileName)) File.Delete(fileName); + } + string m3u8FilePath = Path.Combine(webRootPath, service.UserId, "m3u8", Path.GetFileNameWithoutExtension(dmsFile.OrderKey)); + if (!Directory.Exists(m3u8FilePath)) + { + Directory.CreateDirectory(m3u8FilePath); + } + string m3u8FullFile = Path.Combine(m3u8FilePath, "main.m3u8"); + //生成m3u8 + TsToM3u8(dmsFile.OrderKey, fullName, m3u8FullFile); + } + } + } + return dmsFile; + } + + [PermissionOperate(name: MasterPermissionPolicy.DmsFile, operate: Operate.Find)] + public string FindM3u8Path(long fileId) + { + DmsFileEntity entity = repository.DetachedEntities.Where(x => x.FileId == fileId && x.CreatedBy == service.UserId).FirstOrDefault()!; + + return FileTypePolicy.PackUrl(service, entity.CreatedBy, entity.OrderKey, entity.TranscodeIndc); + } + + [PermissionOperate(name: MasterPermissionPolicy.DmsFile, operate: Operate.Find)] + public string FindSourceVideoPath(long fileId) + { + DmsFileEntity entity = repository.DetachedEntities.Where(x => x.FileId == fileId && x.CreatedBy == service.UserId).FirstOrDefault()!; + + return FileTypePolicy.PackSourceVideoUrl(service, entity.CreatedBy, entity.OrderKey); + } + + [PermissionOperate(name: MasterPermissionPolicy.DmsFile, operate: Operate.Find)] + public string FindDeleteLogM3u8Path(long fileId) + { + IRepository repositoryDmsFileDeleteLog = repository.GetRepository>(); + DmsFileDeleteLogEntity entity = repositoryDmsFileDeleteLog.DetachedEntities.Where(x => x.FileId == fileId && x.CreatedBy == service.UserId).FirstOrDefault()!; + + return FileTypePolicy.PackSourceVideoUrl(service, entity.CreatedBy, entity.OrderKey); + } + + private string PackParameters(DmsFileEntity dmsFile) + { + List para = new List(); + para.Add("task:" + "ImageSharpTask"); + para.Add("uid:" + service.UserId); + para.Add("file_size:" + dmsFile.FileSize); + para.Add("file_name:" + dmsFile.FileName); + para.Add("order_key:" + dmsFile.OrderKey); + return para.ToArray().ToDelimiteredList(' '); + } + + public void TsToM3u8(string orderKey, string mp4Url, string m3u8Url, int videoLength = 6) + { + string para = string.Format(service.Configuration[ServiceSettingsPolicy.FfmpegPictrue], mp4Url, m3u8Url); + RunMyProcess(service.Configuration[ServiceSettingsPolicy.FfmpegPath], para.Replace(".m3u8", ".png")); + return; + para = string.Format(service.Configuration["Ffmpeg:Arguments"], mp4Url, videoLength, m3u8Url); + //不直接转码视频文件,影响服务器性能,改为在闭时自动生成 + //Task.Run(() => + //{ + // Thread.Sleep(200); + // RunMyProcess(service.Configuration["Ffmpeg:Path"], para); + //}); + //IRepository logRepository = repository.GetRepository>(); + //VideoToM3u8LogEntity log = new VideoToM3u8LogEntity(); + //log.VideoName = para; + //log.FilePath = Path.GetDirectoryName(m3u8Url)!; + //log.OrderKey = orderKey; + //log.Status = "S"; + //logRepository.InsertNow(log); + } + + public void ImageToScare(string fullName, DmsFileEntity dmsFile) + { + var fileExtension = Path.GetExtension(fullName).ToLower();//获取文件格式,拓展名 + if (string.IsNullOrEmpty(fileExtension)) fileExtension = "ext"; + // 仅修改这一行,替换硬编码反斜杠字符串拼接 + var filePath = Path.Combine(service.UserId, fileExtension.Replace(".", ""), ""); + // 这里同步改成Path.Combine,不要直接+字符串拼接 + string saveName = Path.Combine(service.Configuration[ServiceSettingsPolicy.DmsFileScaleDirectory], filePath, dmsFile.OrderKey); + + if (!Directory.Exists(Path.GetDirectoryName(saveName))) + { + Directory.CreateDirectory(Path.GetDirectoryName(saveName)); + } + + using (Image image = Image.Load(fullName)) + { + decimal scale = 1; + if (image.Width > 932 && image.Width > image.Height) + { + if (dmsFile != null) + { + dmsFile.LandscapeIndc = YesNoPolicy.YES; + } + + scale = image.Width / 932m; + + int newWidth = Convert.ToInt32(image.Width / scale); + int newHeight = Convert.ToInt32(image.Height / scale); + image.Mutate(x => x.Resize(newWidth, newHeight, KnownResamplers.Lanczos3)); + + if (newWidth > 932) + image.Mutate(a => a.Crop(new Rectangle((newWidth - 932) / 2, 0, 932, 430))); + } + else if (image.Height > 932 && image.Height > image.Width) + { + if (dmsFile != null) + { + dmsFile.LandscapeIndc = YesNoPolicy.NO; + } + + scale = image.Height / 932m; + + int newWidth = Convert.ToInt32(image.Width / scale); + int newHeight = Convert.ToInt32(image.Height / scale); + image.Mutate(x => x.Resize(newWidth, newHeight, KnownResamplers.Lanczos3)); + + if (newWidth > 430) + image.Mutate(a => a.Crop(new Rectangle((newWidth - 430) / 2, 0, 430, 932))); + } + + image.Save(saveName); + } + } + + /// + /// 执行cmd指令(异步不等待,await要求等待返回,转码太耗时) + /// + /// + public void RunMyProcess(string exePath, string Parameters) + { + try + { + if (string.IsNullOrEmpty(exePath)) return; + Cli.Wrap(exePath) + .WithArguments(Parameters) + .ExecuteAsync(); + } + catch (Exception ex) + { + throw new ValidatedException(ex.Message); + } + + } + + public DmsFileEntity CreateDmsFile(DmsFileEntity dmsFile) + { + IRepository repositoryFolder = repository.GetRepository>(); + ISecurityGeneratorNumberService securityGeneratorNumberService = service.ServiceProvider.GetService()!; + DmsFolderEntity folder = null; + string folderNameParent = dmsFile.FilePath; + //父目录是空,创建顶级目录 + if (string.IsNullOrEmpty(dmsFile.FilePath)) + { + folder = repositoryFolder.DetachedEntities.Where(x => x.FolderLocalName == service.UserId).FirstOrDefault()!; + if (folder == null) + { + folder = new DmsFolderEntity(); + folder.FolderName = securityGeneratorNumberService.GetNo(MasterPrefixPolicy.DMS_FOLDER, MasterPrefixPolicy.DMS_FOLDER_FOLDER_NAME, null, YesNoPolicy.NO, "00000000"); + folder.FolderLocalName = service.UserId; + repositoryFolder.InsertNow(folder); + } + folderNameParent = folder.FolderName; + } + + DmsFileUploadEntity upload = new DmsFileUploadEntity(); + + upload.FileCategory = "MASTER"; + upload.UploadName = securityGeneratorNumberService.GetNo(MasterPrefixPolicy.UPLOAD_DMS_FILE, MasterPrefixPolicy.UPLOAD_DMS_FILE_UPLOAD_NAME, "FL", YesNoPolicy.NO, MasterPrefixPolicy.UPLOAD_DMS_FILE_FORMAT); + upload.OrgFileName = dmsFile.OrgFileName; + + //创建Dms文件 + DmsFileEntity entity = new DmsFileEntity(); + entity.OrderKey = dmsFile.OrderKey; + entity.FileName = upload.UploadName; + entity.FileType = FileTypePolicy.GetType(entity.OrderKey); + entity.OrgFileName = dmsFile.FileName; + entity.FileSize = dmsFile.FileSize; + entity.AllowDeleteIndc = entity.AllowRenameIndc = YesNoPolicy.YES; + entity.IsDirectoryIndc = YesNoPolicy.NO; + + entity.FilePath = folderNameParent; + + entity.OwerId = service.UserId; + entity.IsLinkIndc = YesNoPolicy.NO; + + repository.InsertNow(entity); + + IRepository repositoryUpload = repository.GetRepository>(); + upload.FileId = entity.FileId; + repositoryUpload.InsertNow(upload); + + //创建目录关系表 + DmsFolderMapEntity map = new DmsFolderMapEntity(); + IRepository repositoryFolderMap = repository.GetRepository>(); + map.FolderNameParent = folderNameParent; + map.FolderNameSon = entity.FileName; + repositoryFolderMap.InsertNow(map); + + + return entity; + } + + [PermissionOperate(name: MasterPermissionPolicy.DmsFile, operate: Operate.Find)] + public dynamic DownloadFile(long fileId) + { + DmsFileEntity entity = repository.DetachedEntities.Where(x => x.FileId == fileId && x.CreatedBy == service.UserId).FirstOrDefault()!; + + if (entity == null) throw new ValidatedException("文件不存在."); + + var fileExtension = Path.GetExtension(entity.OrderKey);//获取文件格式,拓展名 + + string path = FileTypePolicy.PackFilePath(service, entity.CreatedBy, entity.OrderKey); + + IRepository repositoryUpload = repository.GetRepository>(); + DmsFileUploadEntity DmsFileUpload = repositoryUpload.DetachedEntities.Where(x => x.FileId == fileId).FirstOrDefault()!; + + if (DmsFileUpload == null || !File.Exists(path)) throw new ValidatedException("文件不存在."); + + var stream = System.IO.File.OpenRead(path); + + string contentType = "application/octet-stream"; + + switch (fileExtension.Replace(".", "").ToLower()) + { + case "xls": + case "xlt": + case "xla": + contentType = "application/vnd.ms-excel"; + break; + case "xlsx": + case "xltx": + contentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; + break; + case "doc": + contentType = "application/msword"; + break; + case "docx": + contentType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document"; + break; + case "txt": + contentType = "text/plain"; + break; + case "png": + case "jpg": + case "jpeg": + case "gif": + contentType = "image/*"; + break; + case "mp4": + case "mpg": + case "mpeg": + case "avi": + contentType = "video/*"; + break; + case "pdf": + contentType = "application/pdf"; + break; + default: + break; + } + + return new FileStreamResult(stream, contentType) { FileDownloadName = DmsFileUpload.OrgFileName }; + } + + [PermissionOperate(name: MasterPermissionPolicy.DmsFile, operate: Operate.Find)] + public dynamic DownloadFilePreview(DmsFileEntity dmsFile) + { + var webRootPath = service.Configuration[ServiceSettingsPolicy.DmsFileScaleDirectory]; + var fileExtension = Path.GetExtension(dmsFile.OrderKey); + + var filePath = Path.Combine(dmsFile.CreatedBy, fileExtension.Replace(".", ""), ""); + string path = Path.Combine(webRootPath, filePath, dmsFile.OrderKey); + + if (!File.Exists(path)) throw new ValidatedException("文件不存在."); + + var stream = System.IO.File.OpenRead(path); + + //string contentType = "image/*"; + string contentType = "application/octet-stream"; + + return new FileStreamResult(stream, contentType) { FileDownloadName = dmsFile.OrderKey }; + + } + + [PermissionOperate(name: MasterPermissionPolicy.DmsFile, operate: Operate.Find)] + public dynamic DownloadFileCombine(string fileName) + { + var webRootPath = service.Configuration[ServiceSettingsPolicy.DmsFileUploadDirectory]; + var fileExtension = Path.GetExtension(fileName); + + var filePath = Path.Combine(service.UserId, fileExtension.Replace(".", ""), ""); + string path = Path.Combine(webRootPath, filePath, fileName); + + if (!File.Exists(path)) throw new ValidatedException("文件不存在."); + + var stream = System.IO.File.OpenRead(path); + + //string contentType = "image/*"; + string contentType = "application/octet-stream"; + + return new FileStreamResult(stream, contentType) { FileDownloadName = fileName }; + } + + [PermissionOperate(name: MasterPermissionPolicy.DmsFile, operate: Operate.Find)] + public SelectOption[] FindFamilyDmsFolders() + { + IRepository repositoryFamilyGroupManager = repository.GetRepository>(); + + FamilyGroupManagerUserViewEntity[] ents = repositoryFamilyGroupManager.DetachedEntities.Where(x => x.UserName == service.UserId).ToArray(); + List l = new List(); + SelectOption selectOption; + + if (ents == null || ents.Length == 0) return l.ToArray(); + + foreach (FamilyGroupManagerUserViewEntity ent in ents) + { + selectOption = new SelectOption(); + selectOption.BindValue = ent.FamilyName; + selectOption.DisplayName = ent.FamilyLocalName; + l.Add(selectOption); + } + return l.ToArray(); + } + + [PermissionOperate(name: MasterPermissionPolicy.DmsFile, operate: Operate.Find)] + public SelectOption[] FindFamilyDmsFoldersByFamilyName(string familyName) + { + List l = new List(); + SelectOption selectOption; + + if (string.IsNullOrEmpty(familyName)) return l.ToArray(); + + IRepository repositoryFamilyGroup = repository.GetRepository>(); + + FamilyGroupEntity group = repositoryFamilyGroup.DetachedEntities.Where(x => x.FamilyName == familyName).FirstOrDefault()!; + if (group == null) return l.ToArray(); + + selectOption = new SelectOption(); + selectOption.BindValue = group.FamilyName; + selectOption.DisplayName = group.FamilyLocalName; + l.Add(selectOption); + + IRepository repositoryFamilyGroupFolder = repository.GetRepository>(); + + FamilyGroupFolderEntity[] ents = repositoryFamilyGroupFolder.DetachedEntities.Where(x => x.FamilyName == familyName && string.IsNullOrEmpty(x.FilePath)).ToArray(); + if (ents == null || ents.Length == 0) return l.ToArray(); + + + + foreach (FamilyGroupFolderEntity ent in ents) + { + selectOption = new SelectOption(); + selectOption.BindValue = ent.FolderName; + selectOption.DisplayName = ent.FolderLocalName; + l.Add(selectOption); + } + return l.ToArray(); + } + + [PermissionOperate(name: MasterPermissionPolicy.DmsFile, operate: Operate.Find)] + public int FindDmsFolderMapByFolderName(string folderName) + { + IRepository repositoryFolderMap = repository.GetRepository>(); + + return repositoryFolderMap.DetachedEntities.Where(x => x.FolderNameSon == folderName).Count(); + } + + [PermissionOperate(name: MasterPermissionPolicy.DmsFile, operate: Operate.Find)] + public string FindFolderNameParentByFolderName(string folderName) + { + IRepository repositoryFolderMap = repository.GetRepository>(); + if (repositoryFolderMap.DetachedEntities.Where(x => x.FolderNameSon == folderName).Count() == 0) return string.Empty; + + return repositoryFolderMap.DetachedEntities.Where(x => x.FolderNameSon == folderName).FirstOrDefault()!.FolderNameParent; + } + + [PermissionOperate(name: MasterPermissionPolicy.DmsFile, operate: Operate.Insert)] + public void CreateFamilyGroupFolder(FamilyGroupFolderEntity[] familyGroupFolder) + { + FamilyGroupFolderEntity folder; + IRepository repositoryFamilyGroupFolder = repository.GetRepository>(); + + foreach (var item in familyGroupFolder) + { + folder = repositoryFamilyGroupFolder.DetachedEntities.Where(x => x.FolderName == item.FolderName + && x.FamilyName == item.FamilyName && x.FilePath == item.FilePath).FirstOrDefault()!; + if (folder != null) continue; + folder = new FamilyGroupFolderEntity(); + + folder.FolderName = item.FolderName; + folder.FamilyName = item.FamilyName; + folder.TopFolderName = item.TopFolderName; + + folder.FolderLocalName = item.FolderLocalName; + folder.FilePath = item.FilePath; + + repositoryFamilyGroupFolder.InsertNow(folder); + } + + } + + [PermissionOperate(name: MasterPermissionPolicy.DmsFile, operate: Operate.Delete)] + public void DeleteFamilyGroupFolder(FamilyGroupFolderEntity[] familyGroupFolder) + { + FamilyGroupFolderEntity folder; + IRepository repositoryFamilyGroupFolder = repository.GetRepository>(); + + IRepository repositoryFamilyGroupPermission = repository.GetRepository>(); + FamilyGroupPermissionEntity fgp; + foreach (var item in familyGroupFolder) + { + folder = repositoryFamilyGroupFolder.DetachedEntities.Where(x => x.FolderName == item.FolderName + && x.FamilyName == item.FamilyName && x.FilePath == (string.IsNullOrEmpty(item.FilePath) ? null : item.FilePath)).FirstOrDefault()!; + if (folder == null) continue; + + //再分析是否有权限 + + fgp = repositoryFamilyGroupPermission.DetachedEntities.Where(x => x.FamilyName == folder.FamilyName + && x.FolderName == folder.TopFolderName && x.UserName == service.UserId).FirstOrDefault()!; + + if (fgp == null) throw new ValidatedException("你没有权限删除."); + + repositoryFamilyGroupFolder.DeleteNow(folder); + } + + } + + } +} diff --git a/CloudBuilder/CloudBuilder.Master.Service/FamilyGroupService.auto.cs b/CloudBuilder/CloudBuilder.Master.Service/FamilyGroupService.auto.cs new file mode 100644 index 0000000..09dc83d --- /dev/null +++ b/CloudBuilder/CloudBuilder.Master.Service/FamilyGroupService.auto.cs @@ -0,0 +1,679 @@ + +using CloudBuilder.Core.DatabaseAccessor.Entity; +using Microsoft.AspNetCore.Authorization; +using CloudBuilder.Core.DatabaseAccessor; +using CloudBuilder.Master.Entity; +using CloudBuilder.Master.Policy; +using CloudBuilder.Master.SearchCriteria; +using CloudBuilder.Master.Data; +using CloudBuilder.Core.Service; +using CloudBuilder.Security.Utility; +using CloudBuilder.Security.Service; +using Microsoft.Extensions.DependencyInjection; +namespace CloudBuilder.Master.Service +{ + public class FamilyGroupService : IFamilyGroupService + { + private readonly IApplicationService service; + + private IRepository repository; + public FamilyGroupService(IApplicationService service) + { + this.service = service; + repository = service.GetRepository>(); + } + + [PermissionOperate(name: MasterPermissionPolicy.FamilyGroup, operate: Operate.Find)] + public FamilyGroupData FindByKey(string key) + { + FamilyGroupData data = new FamilyGroupData(); + FamilyGroupEntity familyGroup = repository.DetachedEntities.Where(x => x.FamilyName == key).FirstOrDefault()!; + if (familyGroup == null || !YesNoPolicy.IsYes(familyGroup.ValidIndc)) return data; + + data.FamilyGroup = familyGroup; + data.IsAdd = familyGroup.AddIndc == YesNoPolicy.YES; + data.IsOpen = familyGroup.OpenIndc == YesNoPolicy.YES; + + + + IRepository repositoryDmsFolderMap = repository.GetRepository>(); + DmsFolderMapEntity[] dmsFolderMapss = repositoryDmsFolderMap.DetachedEntities.Where(x => x.FolderNameParent == key).ToArray(); + + IRepository repositoryFamilyGroupFolder = repository.GetRepository>(); + + FamilyGroupFolderEntity[] folders = repositoryFamilyGroupFolder.DetachedEntities.Where(x => x.FamilyName == key).ToArray(); + + List lfs = new List(); + foreach (var f in folders) + { + foreach (var m in dmsFolderMapss) + { + if (f.FolderName == m.FolderNameSon) + { + lfs.Add(f); + break; + } + } + } + folders = lfs.ToArray(); + + IRepository repositoryFamilyGroupManagerUser = repository.GetRepository>(); + + FamilyGroupManagerUserViewEntity[] users = repositoryFamilyGroupManagerUser.DetachedEntities.Where(x => x.FamilyName == key).ToArray(); + + IRepository repositoryFamilyGroupPermissionUserFolder = repository.GetRepository>(); + FamilyGroupPermissionUserFolderViewEntity[] ufs = repositoryFamilyGroupPermissionUserFolder.DetachedEntities.Where(x => x.FamilyName == key).ToArray(); + + if (users == null || users.Length == 0) return data; + + bool isManager = false; + bool isUser = false; + IRepository repositoryFamilyGroupManager = repository.GetRepository>(); + FamilyGroupManagerEntity[] fgms = repositoryFamilyGroupManager.DetachedEntities.Where(x => x.FamilyName == key && x.ValidIndc == YesNoPolicy.YES).ToArray(); + if (fgms != null && fgms.Length > 0) + { + data.FamilyGroupManagers = fgms.Select(x => new FamilyGroupManagerDisplayData(x) + { UserLocalName = users.Where(y => y.UserName == x.UserName).FirstOrDefault()!.UserLocalName }).ToArray(); + + //如果不是管理员,则只能看到有权限的目录 + + FamilyGroupManagerEntity[] temp = data.FamilyGroupManagers.Where(x => x.ManagerIndc == YesNoPolicy.YES && x.UserName == service.UserId).ToArray(); + + if (temp != null && temp.Length > 0) isManager = true; + + temp = data.FamilyGroupManagers.Where(x => x.ValidIndc == YesNoPolicy.YES && x.UserName == service.UserId).ToArray(); + if (temp != null && temp.Length > 0) isUser = true; + } + + //如果隐私,不是成员不能查看 + if (familyGroup.OpenIndc == YesNoPolicy.NO && !isUser) return new FamilyGroupData(); + + IRepository repositoryFamilyGroupPermission = repository.GetRepository>(); + FamilyGroupPermissionEntity[] fgps = repositoryFamilyGroupPermission.DetachedEntities.Where(x => x.FamilyName == key).ToArray(); + + if (fgps != null && fgps.Length > 0) + { + data.FamilyGroupPermissions = fgps.Select(x => new FamilyGroupPermissionDisplayData(x) + { + UserLocalName = users!.Where(y => y.UserName == x.UserName).FirstOrDefault()!.UserLocalName, + FolderLocalName = ufs!.Where(y => y.UserName == x.UserName && y.FolderName == x.FolderName).FirstOrDefault()!.FolderLocalName + }).ToArray(); + + if (!isManager) + { + FamilyGroupPermissionDisplayData[] ps = data.FamilyGroupPermissions.Where(x => x.UserName == service.UserId).ToArray(); + + if (ps == null || ps.Length == 0) + { + data.FamilyGroupFolders = folders!.Select(x => new FamilyGroupFolderDisplayData(x) + { + IsSharePermission = false, + }).ToArray(); + } + else + { + if (folders != null && folders.Length > 0) + { + List l = new List(); + FamilyGroupFolderDisplayData d; + foreach (var item in folders) + { + d = new FamilyGroupFolderDisplayData(item); + if (ps.Where(x => x.FolderName == item.FolderName).Count() > 0) + { + d.IsSharePermission = true; + } + + l.Add(d); + } + + data.FamilyGroupFolders = l.ToArray(); + } + + } + if (!isUser) + data.FamilyGroupManagers = null; + data.FamilyGroupPermissions = null; + } + + } + + + if (isManager) + { + fgms = repositoryFamilyGroupManager.DetachedEntities.Where(x => x.FamilyName == key && x.ValidIndc == YesNoPolicy.NO).ToArray(); + if (fgms != null && fgms.Length > 0) + data.FamilyGroupRequests = fgms.Select(x => new FamilyGroupManagerDisplayData(x) + { UserLocalName = users!.Where(y => y.UserName == x.UserName).FirstOrDefault()!.UserLocalName }).ToArray(); + + //管理员有分享权限 + data.FamilyGroupFolders = folders!.Select(x => new FamilyGroupFolderDisplayData(x) + { + IsSharePermission = true, + }).ToArray(); + } + + data.IsManager = isManager; + + return data; + } + + [PermissionOperate(name: MasterPermissionPolicy.FamilyGroup, operate: Operate.Find)] + public FamilyGroupResultData FindBySearchCriteria(FamilyGroupSearchCriteria criteria) + { + FamilyGroupResultData data = new FamilyGroupResultData(); + FamilyGroupEntity[] list = null; + + Int64 count = 0; + + string sqlWhere = null; + + if (criteria.Filter != null && criteria.Filter.Length > 0) + { + sqlWhere = SearchFilter.ComposeWhereClause(criteria.Filter); + } + + + string subIn = $"select {FamilyGroupManagerEntity.DB_FAMILY_NAME} from {FamilyGroupManagerEntity.DB_NAME_FAMILY_GROUP_MANAGER} where {FamilyGroupManagerEntity.DB_USER_NAME}='{service.UserId}' "; + sqlWhere = sqlWhere + $" and {FamilyGroupEntity.DB_VALID_INDC}='Y' and ( {FamilyGroupEntity.DB_OPEN_INDC}='Y' or ({FamilyGroupEntity.DB_OPEN_INDC}='N' and {FamilyGroupEntity.DB_FAMILY_NAME} in ({subIn})))"; + + + FamilyGroupEntity entity = FamilyGroupEntity.GetInstance(repository.GetDbContext().Database.ProviderName); + string sql = entity.GetSelectTopFrom(criteria.limit, criteria.page, criteria.orderby.StringToDbField(), criteria.orderbytag, sqlWhere); + + string err = null; + try + { + list = repository.FromSql(sql).ToArray(); + } + catch (System.Exception ex) + { + err = ex.Message; + } + + + if (list != null && list.Length > 0) + { + sql = entity.GetSelectCountFrom(sqlWhere); + count = Convert.ToInt64(repository.ExecuteScalar(sql)); + } + + data.Limit = criteria.limit; + data.Page = criteria.page; + data.Datas = list; + data.Total = count; + //data.Sql = sql; + data.ErrorMessage = err; + return data; + } + + [PermissionOperate(name: MasterPermissionPolicy.FamilyGroup, operate: Operate.Find)] + public FamilyGroupResultData FindFamilyUserBySearchCriteria(FamilyGroupManagerUserSearchCriteria criteria) + { + FamilyGroupResultData data = new FamilyGroupResultData(); + FamilyGroupManagerUserViewEntity[] list = null; + + Int64 count = 0; + + string sqlWhere = null; + + if (criteria.Filter != null && criteria.Filter.Length > 0) + { + sqlWhere = SearchFilter.ComposeWhereClause(criteria.Filter); + } + string notIn = $"select {FamilyGroupPermissionUserFolderViewEntity.DB_USER_NAME} from {FamilyGroupPermissionUserFolderViewEntity.DB_NAME_FAMILY_GROUP_PERMISSION_USER_FOLDER_VIEW} where {FamilyGroupPermissionUserFolderViewEntity.DB_FAMILY_NAME}='{criteria.FamilyName}' and {FamilyGroupPermissionUserFolderViewEntity.DB_FOLDER_NAME}='{criteria.FolderName}' "; + sqlWhere = sqlWhere + " and " + FamilyGroupManagerUserViewEntity.DB_USER_NAME + $" not in ({notIn})"; + sqlWhere = sqlWhere + " and " + FamilyGroupManagerUserViewEntity.DB_VALID_INDC + "='Y' "; + sqlWhere = sqlWhere + $" and {FamilyGroupManagerUserViewEntity.DB_FAMILY_NAME}= '{criteria.FamilyName}' "; + + IRepository repositoryFamilyGroupManager = repository.GetRepository>(); + + FamilyGroupManagerUserViewEntity entity = FamilyGroupManagerUserViewEntity.GetInstance(repository.GetDbContext().Database.ProviderName); + string sql = entity.GetSelectTopFrom(criteria.limit, criteria.page, criteria.orderby.StringToDbField(), criteria.orderbytag, sqlWhere); + + string err = null; + try + { + list = repositoryFamilyGroupManager.FromSql(sql).ToArray(); + } + catch (System.Exception ex) + { + err = ex.Message; + } + + + if (list != null && list.Length > 0) + { + sql = entity.GetSelectCountFrom(sqlWhere); + count = Convert.ToInt64(repository.ExecuteScalar(sql)); + } + + data.Limit = criteria.limit; + data.Page = criteria.page; + data.Users = list; + data.Total = count; + //data.Sql = sql; + data.ErrorMessage = err; + return data; + } + + [PermissionOperate(name: MasterPermissionPolicy.FamilyGroup, operate: Operate.Find)] + public FamilyGroupResultData FamilyFolderFavoriteBySearchCriteria(FamilyGroupManagerUserSearchCriteria criteria) + { + FamilyGroupResultData data = new FamilyGroupResultData(); + FamilyFolderFavoriteViewEntity[] list = null; + + Int64 count = 0; + + string sqlWhere = null; + + if (criteria.Filter != null && criteria.Filter.Length > 0) + { + sqlWhere = SearchFilter.ComposeWhereClause(criteria.Filter); + } + + sqlWhere = sqlWhere + $" and {FamilyFolderFavoriteViewEntity.DB_USER_NAME}='{service.UserId}' "; + + IRepository repositoryFamilyFolderFavorite = repository.GetRepository>(); + + FamilyFolderFavoriteViewEntity entity = FamilyFolderFavoriteViewEntity.GetInstance(repository.GetDbContext().Database.ProviderName); + string sql = entity.GetSelectTopFrom(criteria.limit, criteria.page, criteria.orderby.StringToDbField(), criteria.orderbytag, sqlWhere); + + string err = null; + try + { + list = repositoryFamilyFolderFavorite.FromSql(sql).ToArray(); + } + catch (System.Exception ex) + { + err = ex.Message; + } + + + if (list != null && list.Length > 0) + { + sql = entity.GetSelectCountFrom(sqlWhere); + count = Convert.ToInt64(repository.ExecuteScalar(sql)); + } + + data.Limit = criteria.limit; + data.Page = criteria.page; + data.Favorites = list; + data.Total = count; + //data.Sql = sql; + data.ErrorMessage = err; + return data; + } + + [PermissionOperate(name: MasterPermissionPolicy.FamilyGroup, operate: Operate.Print)] + public dynamic PrintBySearchCriteria(FamilyGroupSearchCriteria criteria) + { + throw new NotImplementedException(); + } + + [PermissionOperate(name: MasterPermissionPolicy.FamilyGroup, operate: Operate.Insert)] + [UnitOfWork] + public FamilyGroupData Insert(FamilyGroupData data) + { + FamilyGroupEntity familyGroup = repository.DetachedEntities.Where(x => x.FamilyLocalName == data.FamilyGroup.FamilyLocalName).FirstOrDefault(); + if (familyGroup != null) + { + throw new ValidatedException("群组名称已存在."); + } + + ValidateHelper.Validate(service, data.FamilyGroup, FamilyGroupEntity.DB_NAME_FAMILY_GROUP); + + familyGroup = new FamilyGroupEntity(); + ObjectCopyHelper.Copy(data.FamilyGroup, familyGroup); + + ISecurityGeneratorNumberService securityGeneratorNumberService = service.ServiceProvider.GetService()!; + + familyGroup.FamilyName = securityGeneratorNumberService.GetNo(MasterPrefixPolicy.FAMILY_GROUP, MasterPrefixPolicy.FAMILY_GROUP_FAMILY_NAME, "FM", YesNoPolicy.NO, "000000"); + familyGroup.ValidIndc = YesNoPolicy.YES; + familyGroup.ExpireDatetime = null; + + familyGroup.AddIndc = data.IsAdd ? YesNoPolicy.YES : YesNoPolicy.NO; + familyGroup.OpenIndc = data.IsOpen ? YesNoPolicy.YES : YesNoPolicy.NO; + + repository.InsertNow(familyGroup); + + //创建人是管理员 + + FamilyGroupManagerEntity managerEntity = new FamilyGroupManagerEntity(); + managerEntity.FamilyName = familyGroup.FamilyName; + managerEntity.ValidIndc = YesNoPolicy.YES; + managerEntity.ManagerIndc = YesNoPolicy.YES; + managerEntity.UserName = service.UserId; + managerEntity.Notice = "创建群用户"; + + IRepository repositoryFamilyGroupManager = repository.GetRepository>(); + repositoryFamilyGroupManager.InsertNow(managerEntity); + + SaveFamilyGroupFolders(familyGroup.FamilyName, data.FamilyGroupFolders); + + //SaveFamilyGroupManagers(familyGroup.FamilyName, data.FamilyGroupManagers); + + //SavePermissions(familyGroup.FamilyName, data.FamilyGroupPermissions); + + //创建群根目录 + IDmsFileService dmsFileService = service.ServiceProvider.GetService()!; + dmsFileService.CreateFamilyDmsFolder(familyGroup, data.FamilyGroupFolders); + + return FindByKey(familyGroup.FamilyName); + } + + private void SaveFamilyGroupFolders(string familyName, FamilyGroupFolderEntity[] familyGroupFolders) + { + IRepository repositoryFamilyGroupFolder = repository.GetRepository>(); + ISecurityGeneratorNumberService securityGeneratorNumberService = service.ServiceProvider.GetService()!; + IRepository repositoryFolderMap = repository.GetRepository>(); + IRepository repositoryFolder = repository.GetRepository>(); + + IDmsFileService dmsFileService = service.ServiceProvider.GetService()!; + + FamilyGroupFolderEntity[] olds = repositoryFamilyGroupFolder.Entities.Where(x => x.FamilyName == familyName).ToArray(); + if (olds != null && olds.Length > 0) + { + //存在更新,不存在删除 + foreach (FamilyGroupFolderEntity old in olds) + { + if (familyGroupFolders != null && familyGroupFolders.Length > 0 && familyGroupFolders.Where(x => x.FolderId == old.FolderId).Count() > 0) + { + FamilyGroupFolderEntity folder = familyGroupFolders.Where(x => x.FolderId == old.FolderId).FirstOrDefault(); + old.FolderLocalName = folder.FolderLocalName; + old.Notice = folder.Notice; + repositoryFamilyGroupFolder.UpdateNow(old); + } + else + { + repositoryFamilyGroupFolder.DeleteNow(old); + + //删除主目录所有内容 + DmsFolderEntity folder = repositoryFolder.DetachedEntities.Where(x => x.FolderName == old.FolderName).FirstOrDefault()!; + if (folder != null) + { + dmsFileService.DeleteFolder(folder.FolderName); + } + + + //删除目录的时候,也要删除目录对应的权限 + IRepository repositoryFamilyGroupPermission = repository.GetRepository>(); + FamilyGroupPermissionEntity[] permissions = repositoryFamilyGroupPermission.DetachedEntities.Where(x => x.FamilyName == old.FamilyName && x.FolderName == old.FolderName).ToArray(); + if (permissions != null && permissions.Length > 0) + { + foreach (var item in permissions) + { + repositoryFamilyGroupPermission.DeleteNow(item); + } + } + } + } + } + + if (familyGroupFolders == null || familyGroupFolders.Length == 0) return; + + foreach (FamilyGroupFolderEntity dto in familyGroupFolders) + { + //原来不存在的插入 + if (!string.IsNullOrEmpty(dto.CreatedBy)) continue; + + ValidateHelper.Validate(service, dto, FamilyGroupFolderEntity.DB_NAME_FAMILY_GROUP_FOLDER); + + FamilyGroupFolderEntity familyGroupFolderEntity = new FamilyGroupFolderEntity() + { + FolderName = securityGeneratorNumberService.GetNo(MasterPrefixPolicy.DMS_FOLDER, MasterPrefixPolicy.DMS_FOLDER_FOLDER_NAME, "FG", YesNoPolicy.NO, "00000000"), + FamilyName = familyName, + FolderLocalName = dto.FolderLocalName, + Notice = dto.Notice, + }; + //顶级目录 + familyGroupFolderEntity.TopFolderName = familyGroupFolderEntity.FolderName; + + repositoryFamilyGroupFolder.InsertNow(familyGroupFolderEntity); + + dto.FolderName = familyGroupFolderEntity.FolderName; + } + + } + + private void SavePermissions(string familyName, FamilyGroupPermissionEntity[] permissions) + { + IRepository repositoryFamilyGroupPermission = repository.GetRepository>(); + + FamilyGroupPermissionEntity[] olds = repositoryFamilyGroupPermission.Entities.Where(x => x.FamilyName == familyName).ToArray(); + if (olds != null && olds.Length > 0) + { + //存在更新,不存在删除 + foreach (FamilyGroupPermissionEntity old in olds) + { + if (permissions != null && permissions.Length > 0 && permissions.Where(x => x.UserName == old.UserName && x.FolderName == old.FolderName).Count() > 0) + { + FamilyGroupPermissionEntity folder = permissions.Where(x => x.UserName == old.UserName && x.FolderName == old.FolderName).FirstOrDefault(); + old.DeleteIndc = folder.DeleteIndc; + old.CreateIndc = folder.CreateIndc; + repositoryFamilyGroupPermission.UpdateNow(old); + } + else + { + repositoryFamilyGroupPermission.DeleteNow(old); + } + } + } + + if (permissions == null || permissions.Length == 0) return; + + foreach (FamilyGroupPermissionEntity dto in permissions) + { + //原来不存在的插入 + if (!string.IsNullOrEmpty(dto.CreatedBy)) continue; + + ValidateHelper.Validate(service, dto, FamilyGroupPermissionEntity.DB_NAME_FAMILY_GROUP_PERMISSION); + + repositoryFamilyGroupPermission.InsertNow(new FamilyGroupPermissionEntity() + { + FamilyName = familyName, + UserName = dto.UserName, + FolderName = dto.FolderName, + CreateIndc = YesNoPolicy.YES, + DeleteIndc = YesNoPolicy.YES, + }); + } + + } + + private void SaveFamilyGroupManagers(string familyName, FamilyGroupManagerDisplayData[] managers) + { + IRepository repositoryFamilyGroupManager = repository.GetRepository>(); + + FamilyGroupManagerEntity[] olds = repositoryFamilyGroupManager.Entities.Where(x => x.FamilyName == familyName).ToArray(); + if (olds != null && olds.Length > 0) + { + //存在更新,不存在删除 + foreach (FamilyGroupManagerEntity old in olds) + { + if (managers != null && managers.Length > 0 && managers.Where(x => x.UserName == old.UserName).Count() > 0) + { + FamilyGroupManagerDisplayData mg = managers.Where(x => x.UserName == old.UserName).FirstOrDefault(); + + old.ManagerIndc = mg.IsManager ? YesNoPolicy.YES : YesNoPolicy.NO; + repositoryFamilyGroupManager.UpdateNow(old); + } + else + { + if (old.ValidIndc != YesNoPolicy.YES) continue; + repositoryFamilyGroupManager.DeleteNow(old); + + //删除成员的时候,也要删除成员对应的权限 + IRepository repositoryFamilyGroupPermission = repository.GetRepository>(); + FamilyGroupPermissionEntity[] permissions = repositoryFamilyGroupPermission.DetachedEntities.Where(x => x.FamilyName == old.FamilyName && x.UserName == old.UserName).ToArray(); + if (permissions != null && permissions.Length > 0) + { + foreach (var item in permissions) + { + repositoryFamilyGroupPermission.DeleteNow(item); + } + } + } + } + } + } + + [PermissionOperate(name: MasterPermissionPolicy.FamilyGroup, operate: Operate.Update)] + [UnitOfWork] + public FamilyGroupData Update(FamilyGroupData data) + { + FamilyGroupEntity familyGroup = repository.DetachedEntities.Where(x => x.FamilyName == data.FamilyGroup.FamilyName).FirstOrDefault(); + if (familyGroup == null) + { + throw new ValidatedException("记录不存在."); + } + + familyGroup = repository.DetachedEntities.Where(x => x.FamilyName != data.FamilyGroup.FamilyName && x.FamilyLocalName == data.FamilyGroup.FamilyLocalName).FirstOrDefault(); + if (familyGroup == null) + { + throw new ValidatedException("群组名称已存在."); + } + + ValidateHelper.Validate(service, data.FamilyGroup, FamilyGroupEntity.DB_NAME_FAMILY_GROUP); + + familyGroup = new FamilyGroupEntity(); + ObjectCopyHelper.Copy(data.FamilyGroup, familyGroup); + + ISecurityGeneratorNumberService securityGeneratorNumberService = service.ServiceProvider.GetService()!; + + familyGroup.AddIndc = data.IsAdd ? YesNoPolicy.YES : YesNoPolicy.NO; + familyGroup.OpenIndc = data.IsOpen ? YesNoPolicy.YES : YesNoPolicy.NO; + + repository.UpdateNow(familyGroup); + + SaveFamilyGroupFolders(familyGroup.FamilyName, data.FamilyGroupFolders); + SavePermissions(familyGroup.FamilyName, data.FamilyGroupPermissions); + SaveFamilyGroupManagers(familyGroup.FamilyName, data.FamilyGroupManagers); + + //创建群根目录 + IDmsFileService dmsFileService = service.ServiceProvider.GetService()!; + dmsFileService.CreateFamilyDmsFolder(familyGroup, data.FamilyGroupFolders); + + return FindByKey(familyGroup.FamilyName); + } + + + [PermissionOperate(name: MasterPermissionPolicy.FamilyGroup, operate: Operate.Delete)] + [UnitOfWork] + public void Delete(string key) + { + FamilyGroupEntity familyGroup = repository.DetachedEntities.Where(x => x.FamilyName == key).FirstOrDefault(); + if (familyGroup == null) + { + throw new ValidatedException("记录不存在."); + } + bool isManager = false; + + IRepository repositoryFamilyGroupManager = repository.GetRepository>(); + FamilyGroupManagerEntity[] fgms = repositoryFamilyGroupManager.DetachedEntities.Where(x => x.ManagerIndc == YesNoPolicy.YES && x.FamilyName == key && x.ValidIndc == YesNoPolicy.YES).ToArray(); + if (fgms == null || fgms.Length == 0) + { + throw new ValidatedException("您不是管理员,不能解散"); + } + + familyGroup.ValidIndc = YesNoPolicy.NO; + + repository.UpdateNow(familyGroup); + + } + + [PermissionOperate(name: MasterPermissionPolicy.FamilyGroup, operate: Operate.Update)] + [UnitOfWork] + public void InsertFamilyGroupManager(FamilyGroupManagerEntity manager) + { + IRepository repositoryFamilyGroupManager = repository.GetRepository>(); + FamilyGroupManagerEntity org = repositoryFamilyGroupManager.DetachedEntities.Where(x => x.FamilyName == manager.FamilyName && x.UserName == service.UserId).FirstOrDefault()!; + if (org != null) { return; } + + org = new FamilyGroupManagerEntity(); + org.FamilyName = manager.FamilyName; + org.UserName = service.UserId; + org.ManagerIndc = YesNoPolicy.NO; + org.ValidIndc = YesNoPolicy.NO; + org.Notice = manager.Notice; + + repositoryFamilyGroupManager.InsertNow(org); + } + + + [PermissionOperate(name: MasterPermissionPolicy.FamilyGroup, operate: Operate.Insert)] + [UnitOfWork] + public void InsertFamilyGroupPermission(FamilyGroupPermissionEntity[] managers) + { + IRepository repositoryFamilyGroupPermission = repository.GetRepository>(); + + if (managers != null && managers.Length > 0) + { + foreach (FamilyGroupPermissionEntity manager in managers) + { + manager.DeleteIndc = YesNoPolicy.YES; + manager.CreateIndc = YesNoPolicy.YES; + repositoryFamilyGroupPermission.InsertNow(manager); + } + } + } + + [PermissionOperate(name: MasterPermissionPolicy.FamilyGroup, operate: Operate.Update)] + [UnitOfWork] + public void UpdateFamilyGroupManager(FamilyGroupManagerEntity manager) + { + IRepository repositoryFamilyGroupManager = repository.GetRepository>(); + FamilyGroupManagerEntity org = repositoryFamilyGroupManager.DetachedEntities.Where(x => x.FamilyName == manager.FamilyName && x.UserName == manager.UserName).FirstOrDefault()!; + if (org == null) { return; } + + org.ValidIndc = manager.ValidIndc; + + repositoryFamilyGroupManager.UpdateNow(org); + } + + [PermissionOperate(name: MasterPermissionPolicy.FamilyGroup, operate: Operate.Update)] + [UnitOfWork] + public void DeleteFamilyGroupManager(FamilyGroupManagerEntity manager) + { + IRepository repositoryFamilyGroupManager = repository.GetRepository>(); + FamilyGroupManagerEntity org = repositoryFamilyGroupManager.DetachedEntities.Where(x => x.FamilyName == manager.FamilyName && x.UserName == manager.UserName).FirstOrDefault()!; + if (org == null) { return; } + + repositoryFamilyGroupManager.DeleteNow(org); + } + + [PermissionOperate(name: MasterPermissionPolicy.FamilyGroup, operate: Operate.Insert)] + public void InsertFamilyFolderFavorite(string folderName) + { + IRepository repositoryFamilyFolderFavorite = repository.GetRepository>(); + FamilyFolderFavoriteEntity folderFavorite = new FamilyFolderFavoriteEntity(); + folderFavorite.FolderName = folderName; + folderFavorite.UserName = service.UserId; + repositoryFamilyFolderFavorite.InsertNow(folderFavorite); + } + + [PermissionOperate(name: MasterPermissionPolicy.FamilyGroup, operate: Operate.Update)] + public void DeleteFamilyFolderFavorite(string folderName) + { + IRepository repositoryFamilyFolderFavorite = repository.GetRepository>(); + FamilyFolderFavoriteEntity folderFavorite = new FamilyFolderFavoriteEntity(); + folderFavorite.FolderName = folderName; + folderFavorite.UserName = service.UserId; + repositoryFamilyFolderFavorite.DeleteNow(folderFavorite); + } + + [PermissionOperate(name: MasterPermissionPolicy.FamilyGroup, operate: Operate.Update)] + public void DeleteFamilyFolderFavorites(FamilyFolderFavoriteEntity[] familyFolderFavorites) + { + if (familyFolderFavorites == null || familyFolderFavorites.Length == 0) return; + + IRepository repositoryFamilyFolderFavorite = repository.GetRepository>(); + foreach (var item in familyFolderFavorites) + { + repositoryFamilyFolderFavorite.DeleteNow(item); + } + + } + + } +} diff --git a/CloudBuilder/CloudBuilder.Master.Service/FamilyPersonService.auto.cs b/CloudBuilder/CloudBuilder.Master.Service/FamilyPersonService.auto.cs index 8c9702b..a1e52ba 100644 --- a/CloudBuilder/CloudBuilder.Master.Service/FamilyPersonService.auto.cs +++ b/CloudBuilder/CloudBuilder.Master.Service/FamilyPersonService.auto.cs @@ -53,7 +53,7 @@ namespace CloudBuilder.Master.Service FamilyPersonResultData data = new FamilyPersonResultData(); FamilyPersonEntity[] list = null; - int count = 0; + Int64 count = 0; string sqlWhere = null; @@ -79,7 +79,7 @@ namespace CloudBuilder.Master.Service if (list != null && list.Length > 0) { sql = entity.GetSelectCountFrom(sqlWhere); - count = Convert.ToInt32(repository.ExecuteScalar(sql)); + count = Convert.ToInt64(repository.ExecuteScalar(sql)); } data.Limit = criteria.limit; diff --git a/CloudBuilder/CloudBuilder.Master.Service/FamilyTreeService.auto.cs b/CloudBuilder/CloudBuilder.Master.Service/FamilyTreeService.auto.cs index d924a85..79f30eb 100644 --- a/CloudBuilder/CloudBuilder.Master.Service/FamilyTreeService.auto.cs +++ b/CloudBuilder/CloudBuilder.Master.Service/FamilyTreeService.auto.cs @@ -134,7 +134,7 @@ namespace CloudBuilder.Master.Service FamilyTreeResultData data = new FamilyTreeResultData(); FamilyTreeViewEntity[] list = null; - int count = 0; + Int64 count = 0; string sqlWhere = null; @@ -162,7 +162,7 @@ namespace CloudBuilder.Master.Service if (list != null && list.Length > 0) { sql = entity.GetSelectCountFrom(sqlWhere); - count = Convert.ToInt32(repository.ExecuteScalar(sql)); + count = Convert.ToInt64(repository.ExecuteScalar(sql)); } data.Limit = criteria.limit; diff --git a/CloudBuilder/CloudBuilder.Master.Service/FileTypePolicyService.cs b/CloudBuilder/CloudBuilder.Master.Service/FileTypePolicyService.cs new file mode 100644 index 0000000..b7b13e0 --- /dev/null +++ b/CloudBuilder/CloudBuilder.Master.Service/FileTypePolicyService.cs @@ -0,0 +1,48 @@ +using CloudBuilder.Core.DatabaseAccessor.Entity; +using CloudBuilder.Core.Service; +using CloudBuilder.Security.Policy; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CloudBuilder.Master.Service +{ + public class FileTypePolicyService : IFileTypePolicyService + { + private readonly IApplicationService service; + + public FileTypePolicyService(IApplicationService service) + { + this.service = service; + } + + [AllowAnonymous] + [HttpPost] + public SelectOption[] FindSelectOption(bool blank) + { + FileTypePolicy policy = FileTypePolicy.GetInstance(service); + string[] values = policy.GetValues(); + List l = new List(); + + SelectOption selectOption; + if (blank) + { + selectOption = new SelectOption(); + l.Add(selectOption); + } + + foreach (string value in values) + { + selectOption = new SelectOption(); + selectOption.BindValue = value; + selectOption.DisplayName = policy.ComposeMessage(value, service.Locale); + l.Add(selectOption); + } + return l.ToArray(); + } + } +} diff --git a/CloudBuilder/CloudBuilder.Master.Service/PublishAudioService.auto.cs b/CloudBuilder/CloudBuilder.Master.Service/PublishAudioService.auto.cs new file mode 100644 index 0000000..523fd26 --- /dev/null +++ b/CloudBuilder/CloudBuilder.Master.Service/PublishAudioService.auto.cs @@ -0,0 +1,407 @@ + +using CloudBuilder.Core.DatabaseAccessor; +using CloudBuilder.Core.DatabaseAccessor.Entity; +using CloudBuilder.Core.Policy; +using CloudBuilder.Core.Service; +using CloudBuilder.Master.Data; +using CloudBuilder.Master.Entity; +using CloudBuilder.Master.Policy; +using CloudBuilder.Master.SearchCriteria; +using CloudBuilder.Security.Entity; +using CloudBuilder.Security.Policy; +using CloudBuilder.Security.Service; +using CloudBuilder.Security.Utility; +using Microsoft.AspNetCore.Authorization; +using Microsoft.Extensions.DependencyInjection; +namespace CloudBuilder.Master.Service +{ + public class PublishAudioService : IPublishAudioService + { + private readonly IApplicationService service; + + private IRepository repository; + public PublishAudioService(IApplicationService service) + { + this.service = service; + repository = service.GetRepository>(); + } + + [PermissionOperate(name: MasterPermissionPolicy.PublishAudio, operate: Operate.Find)] + public PublishAudioData FindByKey(string key) + { + PublishAudioData data = new PublishAudioData(); + if (string.IsNullOrEmpty(key)) return data; + + PublishAudioEntity publish = repository.DetachedEntities.Where(x => x.PublishName == key).FirstOrDefault(); + + if (publish == null) return data; + + IRepository repositoryPublishAudioFamilyGroup = repository.GetRepository>(); + IRepository repositoryFamilyGroup = repository.GetRepository>(); + + + IQueryable? q = from e in repositoryPublishAudioFamilyGroup.DetachedEntities + join fg in repositoryFamilyGroup.DetachedEntities on e.FamilyName equals fg.FamilyName + where e.PublishName == key + select new PublishAudioFamilyGroupDisplayData(fg) + { + CreatedBy = e.CreatedBy, + CreatedDatetime = e.CreatedDatetime, + UpdatedBy = e.UpdatedBy, + UpdatedDatetime = e.UpdatedDatetime, + PublishName = e.PublishName, + }; + + data.FamilyGroups = q.ToArray(); + if (publish.OwnerName != service.UserId && !YesNoPolicy.IsYes(publish.OpenIndc) && data.FamilyGroups.Length == 0) + { + throw new ValidatedException("没有权限."); + } + else if (publish.OwnerName != service.UserId && !YesNoPolicy.IsYes(publish.OpenIndc) && data.FamilyGroups.Length > 0) + { + IRepository repositoryFamilyGroupManager = repository.GetRepository>(); + + IQueryable? fgm = from e in repositoryFamilyGroupManager.DetachedEntities + where e.UserName == service.UserId && data.FamilyGroups.Where(x => x.FamilyName == e.FamilyName).Count() > 0 + select e.UserName; + + if (fgm.Count() == 0) + throw new ValidatedException("没有权限."); + } + + data.PublishAudio = publish; + + IRepository repositoryPublishAudioDetail = repository.GetRepository>(); + data.Details = repositoryPublishAudioDetail.DetachedEntities.Where(x => x.PublishName == publish.PublishName).OrderBy(x => x.OrderBy).Select(x => new PublishAudioDetailDisplayData(x)).ToArray(); + + if (data.Details != null && data.Details.Length > 0) + { + var webRootPath = service.Configuration[ServiceSettingsPolicy.RequestPath]; + var phy = service.Configuration[ServiceSettingsPolicy.PhysicalFileDirectory]; + var scale = service.Configuration[ServiceSettingsPolicy.DmsFileScaleDirectory].Replace(phy, ""); + + foreach (var item in data.Details) + { + if (!string.IsNullOrEmpty(item.Pic) && FileTypePolicy.GetType(item.Pic!) == FileTypePolicy.PHOTO) + { + var fileExtension = Path.GetExtension(item.Pic); + var filePathRel = Path.Combine(scale, item.CreatedBy, fileExtension.Replace(".", ""), ""); + var filePath = filePathRel.Replace(Path.DirectorySeparatorChar, '/'); + item.FormattedPic = service.Configuration[AppsettingsPolicy.ApplicationUrl] + webRootPath + filePath + item.Pic; + } + if (!string.IsNullOrEmpty(item.Url) && FileTypePolicy.GetType(item.Url!) == FileTypePolicy.AUDIO) + { + var fileExtension = Path.GetExtension(item.Url); + var backup = service.Configuration[ServiceSettingsPolicy.DmsFileBackupDirectory].Replace(phy, ""); + var filePathRel = Path.Combine(backup, item.CreatedBy, fileExtension.Replace(".", ""), ""); + var filePath = filePathRel.Replace(Path.DirectorySeparatorChar, '/'); + item.FormattedUrl = service.Configuration[AppsettingsPolicy.ApplicationUrl] + webRootPath + filePath + item.Url; + } + if (!string.IsNullOrEmpty(item.Lrc) && FileTypePolicy.GetType(item.Lrc!) == FileTypePolicy.LYRIC) + { + var fileExtension = Path.GetExtension(item.Lrc); + var upload = service.Configuration[ServiceSettingsPolicy.DmsFileUploadDirectory].Replace(phy, ""); + var filePathRel = Path.Combine(upload, item.CreatedBy, fileExtension.Replace(".", ""), ""); + var filePath = filePathRel.Replace(Path.DirectorySeparatorChar, '/'); + item.FormattedLrc = service.Configuration[AppsettingsPolicy.ApplicationUrl] + webRootPath + filePath + item.Lrc; + } + } + + } + + return data; + } + + [PermissionOperate(name: MasterPermissionPolicy.PublishAudio, operate: Operate.Find)] + public PublishAudioResultData FindBySearchCriteria(PublishAudioSearchCriteria criteria) + { + PublishAudioResultData data = new PublishAudioResultData(); + PublishAudioEntity[] list = null; + + Int64 count = 0; + + string sqlWhere = null; + + if (criteria.Filter != null && criteria.Filter.Length > 0) + { + sqlWhere = SearchFilter.ComposeWhereClause(criteria.Filter); + } + + sqlWhere = sqlWhere + string.Format(" and ({0} ='{1}' or {2} ='{3}') ", + PublishAudioEntity.DB_OWNER_NAME, service.UserId, + PublishAudioEntity.DB_OPEN_INDC, criteria.IsModal ? service.UserId : YesNoPolicy.YES); + + PublishAudioEntity entity = PublishAudioEntity.GetInstance(repository.GetDbContext().Database.ProviderName); + string sql = entity.GetSelectTopFrom(criteria.limit, criteria.page, criteria.orderby.StringToDbField(), criteria.orderbytag, sqlWhere); + + string err = null; + try + { + list = repository.FromSql(sql).ToArray(); + } + catch (System.Exception ex) + { + err = ex.Message; + } + + + if (list != null && list.Length > 0) + { + sql = entity.GetSelectCountFrom(sqlWhere); + count = Convert.ToInt64(repository.ExecuteScalar(sql)); + } + + data.Limit = criteria.limit; + data.Page = criteria.page; + data.Datas = list; + data.Total = count; + //data.Sql = sql; + data.ErrorMessage = err; + return data; + } + + [PermissionOperate(name: MasterPermissionPolicy.PublishAudio, operate: Operate.Find)] + public PublishAudioData FindPublishAudioDefault() + { + PublishAudioEntity publish = repository.DetachedEntities.Where(x => x.OwnerName == service.UserId && x.DefaultIndc == YesNoPolicy.YES).FirstOrDefault(); + if (publish == null) return null; + return FindByKey(publish.PublishName); + } + + [PermissionOperate(name: MasterPermissionPolicy.PublishAudio, operate: Operate.Print)] + public dynamic PrintBySearchCriteria(PublishAudioSearchCriteria criteria) + { + throw new NotImplementedException(); + } + + [PermissionOperate(name: MasterPermissionPolicy.PublishAudio, operate: Operate.Insert)] + [UnitOfWork] + public PublishAudioData Insert(PublishAudioData data) + { + PublishAudioEntity photoPublish = repository.DetachedEntities.Where(x => x.PublishLocalName == data.PublishAudio.PublishLocalName).FirstOrDefault(); + if (photoPublish != null) + { + throw new ValidatedException($"[{photoPublish.PublishLocalName}]已发布."); + } + + Validate(data.PublishAudio); + + if (data.PublishAudio.DefaultIndc == YesNoPolicy.YES) + { + CancelDefaultIndc(null); + } + + photoPublish = new PublishAudioEntity(); + ObjectCopyHelper.Copy(data.PublishAudio, photoPublish); + + ISecurityGeneratorNumberService securityGeneratorNumberService = service.ServiceProvider.GetService()!; + + photoPublish.PublishName = securityGeneratorNumberService.GetNo(MasterPrefixPolicy.AUDIO_PUBLISH, MasterPrefixPolicy.AUDIO_PUBLISH_PUBLISH_NAME, "AP", YesNoPolicy.YES, "yymmdd00000"); + photoPublish.OwnerName = service.UserId; + + repository.InsertNow(photoPublish); + + SavePublishAudioFamilyGroup(photoPublish.PublishName, data.FamilyGroups); + + return FindByKey(photoPublish.PublishName); + } + + [PermissionOperate(name: MasterPermissionPolicy.PublishAudio, operate: Operate.Update)] + [UnitOfWork] + public PublishAudioData Update(PublishAudioData data) + { + PublishAudioEntity publishEntity = repository.DetachedEntities.Where(x => x.OwnerName == service.UserId && x.PublishName == data.PublishAudio.PublishName).FirstOrDefault(); + if (publishEntity == null) + { + throw new ValidatedException("你不是发布者无法修改."); + } + + ValidateHelper.Validate(service, data.PublishAudio, PublishAudioEntity.DB_NAME_PUBLISH_AUDIO); + + if (data.PublishAudio.DefaultIndc == YesNoPolicy.YES) + { + CancelDefaultIndc(data.PublishAudio.PublishName); + } + + publishEntity = new PublishAudioEntity(); + ObjectCopyHelper.Copy(data.PublishAudio, publishEntity); + + repository.UpdateNow(publishEntity); + + //只有删除和更新,没有插入 + SavePublishAudioDetails(publishEntity.PublishName, data.Details); + + SavePublishAudioFamilyGroup(publishEntity.PublishName, data.FamilyGroups); + + return FindByKey(publishEntity.PublishName); + } + + private void SavePublishAudioDetails(string publishName, PublishAudioDetailEntity[] details) + { + if (details != null && details.Length > 0) + { + int i = 1; + foreach (PublishAudioDetailEntity dtl in details) + { + dtl.OrderBy = i++; + } + } + + IRepository repositoryPublishAudioDetail = repository.GetRepository>(); + + PublishAudioDetailEntity[] olds = repositoryPublishAudioDetail.Entities.Where(x => x.PublishName == publishName).ToArray(); + if (olds != null && olds.Length > 0) + { + //存在更新,不存在删除 + + foreach (PublishAudioDetailEntity old in olds) + { + if (details != null && details.Length > 0 && details.Where(x => x.DetailId == old.DetailId).Count() > 0) + { + PublishAudioDetailEntity dtl = details.Where(x => x.DetailId == old.DetailId).FirstOrDefault(); + + old.Title = dtl.Title; + old.Author = dtl.Author; + old.Pic = dtl.Pic; + old.Url = dtl.Url; + old.Lrc = dtl.Lrc; + old.OrderBy = dtl.OrderBy; + old.Notice = dtl.Notice; + + repositoryPublishAudioDetail.UpdateNow(old); + } + else + { + repositoryPublishAudioDetail.DeleteNow(old); + } + } + } + } + + private void Validate(PublishAudioEntity photoPublish) + { + List sysTableSchemas = service.ServiceProvider.GetRequiredService().FindByTableName(PublishAudioEntity.DB_NAME_PUBLISH_AUDIO); + ValidateHelper.ValidateString(photoPublish, sysTableSchemas.ToArray()); + } + + private void SavePublishAudioFamilyGroup(string publishName, PublishAudioFamilyGroupEntity[] familyGroups) + { + IRepository repositoryPublishAudioFamilyGroup = repository.GetRepository>(); + + PublishAudioFamilyGroupEntity[] olds = repositoryPublishAudioFamilyGroup.Entities.Where(x => x.PublishName == publishName).ToArray(); + if (olds != null && olds.Length > 0) + { + //存在更新,不存在删除 + + foreach (PublishAudioFamilyGroupEntity old in olds) + { + if (familyGroups != null && familyGroups.Length > 0 && familyGroups.Where(x => x.FamilyName == old.FamilyName).Count() > 0) + { + //只有主键,无需更新 + //repositoryPpf.UpdateNow(old); + } + else + { + repositoryPublishAudioFamilyGroup.DeleteNow(old); + } + } + } + if (familyGroups != null && familyGroups.Length > 0) + foreach (PublishAudioFamilyGroupEntity dto in familyGroups) + { + if (string.IsNullOrEmpty(dto.CreatedBy)) + repositoryPublishAudioFamilyGroup.InsertNow(new PublishAudioFamilyGroupEntity() + { + PublishName = publishName, + FamilyName = dto.FamilyName, + }); + } + } + + + public void CancelDefaultIndc(string publishLocalName) + { + PublishAudioEntity[] orgs = repository.DetachedEntities.Where(x => x.PublishName != publishLocalName && x.OwnerName == service.UserId && x.DefaultIndc == YesNoPolicy.YES).ToArray(); + foreach (PublishAudioEntity org in orgs) + { + org.DefaultIndc = YesNoPolicy.NO; + } + + if (orgs != null && orgs.Length > 0) + repository.UpdateNow(orgs); + } + + [PermissionOperate(name: MasterPermissionPolicy.PublishAudio, operate: Operate.Delete)] + [UnitOfWork] + public void Delete(string key) + { + PublishAudioEntity publishEntity = repository.DetachedEntities.Where(x => x.OwnerName == service.UserId && x.PublishName == key).FirstOrDefault(); + if (publishEntity == null) + { + throw new ValidatedException("你不是发布者无法删除."); + } + + repository.DeleteNow(publishEntity); + + + IRepository repositoryDetail = repository.GetRepository>(); + + PublishAudioDetailEntity[] detail = repositoryDetail.Entities.Where(x => x.PublishName == key).ToArray(); + if (detail != null && detail.Length > 0) + { + foreach (PublishAudioDetailEntity dtl in detail) + { + repositoryDetail.DeleteNow(dtl); + } + } + + + IRepository repositoryFamilyGroup = repository.GetRepository>(); + + PublishAudioFamilyGroupEntity[] groups = repositoryFamilyGroup.Entities.Where(x => x.PublishName == key).ToArray(); + if (groups != null && groups.Length > 0) + { + foreach (PublishAudioFamilyGroupEntity gp in groups) + { + repositoryFamilyGroup.DeleteNow(gp); + } + } + } + + + [PermissionOperate(name: MasterPermissionPolicy.PublishAudio, operate: Operate.Insert)] + public void InsertPublishAudioDetail(PublishData publishData) + { + IRepository repositoryDmsFile = repository.GetRepository>(); + DmsFileUploadViewEntity dmsFile = repositoryDmsFile.DetachedEntities.Where(x => x.FileId == publishData.FileId).FirstOrDefault(); + + if (dmsFile == null) return; + if (!FileTypePolicy.IsAudio(dmsFile.OrderKey)) return; + + InsertPublishAudioDetail(dmsFile, publishData.PublishName); + } + + private void InsertPublishAudioDetail(DmsFileUploadViewEntity dmsFile, string publishName) + { + IRepository repositoryPublishAudioDetail = repository.GetRepository>(); + + PublishAudioDetailEntity[] dtls = repositoryPublishAudioDetail.DetachedEntities.Where(x => x.PublishName == publishName).ToArray(); + + if (dtls != null && dtls.Where(x => x.Url == dmsFile.OrderKey).Count() > 0) return; + + PublishAudioDetailEntity dtl = new PublishAudioDetailEntity(); + dtl.PublishName = publishName; + string orgFileName = Path.GetFileNameWithoutExtension(dmsFile.OrgFileName); + string[] tts = orgFileName.Split('-'); + dtl.Title = tts[0].Trim(); + if (tts.Length > 1) dtl.Author = tts[1].Trim(); + + dtl.OwnerName = dmsFile.OwerId; + if (dtls != null && dtls.Length > 0) + dtl.OrderBy = dtls.Sum(x => x.OrderBy) + 1; + dtl.Url = dmsFile.OrderKey; + + repositoryPublishAudioDetail.InsertNow(dtl); + } + } +} diff --git a/CloudBuilder/CloudBuilder.Master.Service/PublishPhotoService.auto.cs b/CloudBuilder/CloudBuilder.Master.Service/PublishPhotoService.auto.cs new file mode 100644 index 0000000..e931117 --- /dev/null +++ b/CloudBuilder/CloudBuilder.Master.Service/PublishPhotoService.auto.cs @@ -0,0 +1,441 @@ + +using CloudBuilder.Core.DatabaseAccessor.Entity; +using Microsoft.AspNetCore.Authorization; +using CloudBuilder.Core.DatabaseAccessor; +using CloudBuilder.Master.Entity; +using CloudBuilder.Master.Policy; +using CloudBuilder.Master.SearchCriteria; +using CloudBuilder.Master.Data; +using CloudBuilder.Core.Service; +using System.Diagnostics; +using CloudBuilder.Security.Service; +using Microsoft.Extensions.DependencyInjection; +using CloudBuilder.Security.Entity; +using CloudBuilder.Security.Utility; +using CloudBuilder.Security.Policy; +using CloudBuilder.Core.Policy; +namespace CloudBuilder.Master.Service +{ + public class PublishPhotoService : IPublishPhotoService + { + private readonly IApplicationService service; + + private IRepository repository; + public PublishPhotoService(IApplicationService service) + { + this.service = service; + repository = service.GetRepository>(); + } + + [PermissionOperate(name: MasterPermissionPolicy.PublishPhoto, operate: Operate.Find)] + public PublishPhotoData FindByKey(string key) + { + PublishPhotoData data = new PublishPhotoData(); + if (string.IsNullOrEmpty(key)) return data; + + PublishPhotoEntity publish = repository.DetachedEntities.Where(x => x.PublishName == key).FirstOrDefault(); + + if (publish == null) return data; + + IRepository repositoryPublishPhotoFamilyGroup = repository.GetRepository>(); + IRepository repositoryFamilyGroup = repository.GetRepository>(); + + + IQueryable? q = from e in repositoryPublishPhotoFamilyGroup.DetachedEntities + join fg in repositoryFamilyGroup.DetachedEntities on e.FamilyName equals fg.FamilyName + where e.PublishName == key + select new PublishPhotoFamilyGroupDisplayData(fg) + { + CreatedBy = e.CreatedBy, + CreatedDatetime = e.CreatedDatetime, + UpdatedBy = e.UpdatedBy, + UpdatedDatetime = e.UpdatedDatetime, + PublishName = e.PublishName, + }; + + data.FamilyGroups = q.ToArray(); + if (publish.OwnerName != service.UserId && !YesNoPolicy.IsYes(publish.OpenIndc) && data.FamilyGroups.Length == 0) + { + throw new ValidatedException("没有权限."); + } + else if (publish.OwnerName != service.UserId && !YesNoPolicy.IsYes(publish.OpenIndc) && data.FamilyGroups.Length > 0) + { + IRepository repositoryFamilyGroupManager = repository.GetRepository>(); + + IQueryable? fgm = from e in repositoryFamilyGroupManager.DetachedEntities + where e.UserName == service.UserId && data.FamilyGroups.Where(x => x.FamilyName == e.FamilyName).Count() > 0 + select e.UserName; + + if (fgm.Count() == 0) + throw new ValidatedException("没有权限."); + } + + data.PublishPhoto = publish; + + IRepository repositoryPublishPhotoDetail = repository.GetRepository>(); + data.Details = repositoryPublishPhotoDetail.DetachedEntities.Where(x => x.PublishName == publish.PublishName).OrderBy(x => x.OrderBy).ToArray(); + + + bool isAttached = Debugger.IsAttached; + if (data.Details != null || data.Details.Length > 0) + foreach (var item in data.Details) + { + item.FileName = (isAttached ? service.Configuration[AppsettingsPolicy.ApplicationUrl] : "") + item.FileName; + } + + + return data; + } + + + [PermissionOperate(name: MasterPermissionPolicy.PublishPhoto, operate: Operate.Find)] + public PublishPhotoResultData FindBySearchCriteria(PublishPhotoSearchCriteria criteria) + { + PublishPhotoResultData data = new PublishPhotoResultData(); + PublishPhotoEntity[] list = null; + + Int64 count = 0; + + string sqlWhere = null; + + if (criteria.Filter != null && criteria.Filter.Length > 0) + { + sqlWhere = SearchFilter.ComposeWhereClause(criteria.Filter); + } + + sqlWhere = sqlWhere + string.Format(" and ({0} ='{1}' or {2} ='{3}') ", + PublishPhotoEntity.DB_OWNER_NAME, service.UserId, + PublishPhotoEntity.DB_OPEN_INDC, criteria.IsModal ? service.UserId : YesNoPolicy.YES); + + PublishPhotoEntity entity = PublishPhotoEntity.GetInstance(repository.GetDbContext().Database.ProviderName); + string sql = entity.GetSelectTopFrom(criteria.limit, criteria.page, criteria.orderby.StringToDbField(), criteria.orderbytag, sqlWhere); + + string err = null; + try + { + list = repository.FromSql(sql).ToArray(); + } + catch (System.Exception ex) + { + err = ex.Message; + } + + + if (list != null && list.Length > 0) + { + sql = entity.GetSelectCountFrom(sqlWhere); + count = Convert.ToInt64(repository.ExecuteScalar(sql)); + } + + data.Limit = criteria.limit; + data.Page = criteria.page; + data.Publishs = list; + data.Total = count; + //data.Sql = sql; + data.ErrorMessage = err; + return data; + } + + [PermissionOperate(name: MasterPermissionPolicy.PublishPhoto, operate: Operate.Print)] + public dynamic PrintBySearchCriteria(PublishPhotoSearchCriteria criteria) + { + throw new NotImplementedException(); + } + + [PermissionOperate(name: MasterPermissionPolicy.PublishPhoto, operate: Operate.Insert)] + [UnitOfWork] + public PublishPhotoData Insert(PublishPhotoData data) + { + PublishPhotoEntity publishPhoto = repository.DetachedEntities.Where(x => x.PublishLocalName == data.PublishPhoto.PublishLocalName).FirstOrDefault(); + if (publishPhoto != null) + { + throw new ValidatedException($"[{publishPhoto.PublishLocalName}]已发布."); + } + + Validate(data.PublishPhoto); + + if (data.PublishPhoto.DefaultIndc == YesNoPolicy.YES) + { + CancelDefaultIndc(null); + } + + publishPhoto = new PublishPhotoEntity(); + ObjectCopyHelper.Copy(data.PublishPhoto, publishPhoto); + + ISecurityGeneratorNumberService securityGeneratorNumberService = service.ServiceProvider.GetService()!; + + publishPhoto.PublishName = securityGeneratorNumberService.GetNo(MasterPrefixPolicy.PHOTO_PUBLISH, MasterPrefixPolicy.PHOTO_PUBLISH_PUBLISH_NAME, "PP", YesNoPolicy.YES, "yymmdd00000"); + publishPhoto.OwnerName = service.UserId; + + repository.InsertNow(publishPhoto); + + SavePublishPhotoFamilyGroup(publishPhoto.PublishName, data.FamilyGroups); + + return FindByKey(publishPhoto.PublishName); + } + + public void CancelDefaultIndc(string publishLocalName) + { + PublishPhotoEntity[] orgs = repository.DetachedEntities.Where(x => x.PublishName != publishLocalName && x.OwnerName == service.UserId && x.DefaultIndc == YesNoPolicy.YES).ToArray(); + foreach (PublishPhotoEntity org in orgs) + { + org.DefaultIndc = YesNoPolicy.NO; + } + + if (orgs != null && orgs.Length > 0) + repository.UpdateNow(orgs); + } + + private void Validate(PublishPhotoEntity publishPhoto) + { + List sysTableSchemas = service.ServiceProvider.GetRequiredService().FindByTableName(PublishPhotoEntity.DB_NAME_PUBLISH_PHOTO); + ValidateHelper.ValidateString(publishPhoto, sysTableSchemas.ToArray()); + } + + + [PermissionOperate(name: MasterPermissionPolicy.PublishPhoto, operate: Operate.Update)] + [UnitOfWork] + public PublishPhotoData Update(PublishPhotoData data) + { + //只有自己创建的才能修改 + PublishPhotoEntity publishEntity = repository.DetachedEntities.Where(x => x.OwnerName == service.UserId && x.PublishName == data.PublishPhoto.PublishName).FirstOrDefault(); + if (publishEntity == null) + { + throw new ValidatedException("记录不存在."); + } + + ValidateHelper.Validate(service, data.PublishPhoto, PublishPhotoEntity.DB_NAME_PUBLISH_PHOTO); + + if (data.PublishPhoto.DefaultIndc == YesNoPolicy.YES) + { + CancelDefaultIndc(data.PublishPhoto.PublishName); + } + + publishEntity = new PublishPhotoEntity(); + ObjectCopyHelper.Copy(data.PublishPhoto, publishEntity); + + repository.UpdateNow(publishEntity); + + //只有删除和更新,没有插入 + SavePublishPhotoDetails(publishEntity.PublishName, data.Details); + + SavePublishPhotoFamilyGroup(publishEntity.PublishName, data.FamilyGroups); + + return FindByKey(publishEntity.PublishName); + } + + private void SavePublishPhotoFamilyGroup(string publishName, PublishPhotoFamilyGroupEntity[] familyGroups) + { + IRepository repositoryPublishPhotoFamilyGroup = repository.GetRepository>(); + + PublishPhotoFamilyGroupEntity[] olds = repositoryPublishPhotoFamilyGroup.Entities.Where(x => x.PublishName == publishName).ToArray(); + if (olds != null && olds.Length > 0) + { + //存在更新,不存在删除 + + foreach (PublishPhotoFamilyGroupEntity old in olds) + { + if (familyGroups != null && familyGroups.Length > 0 && familyGroups.Where(x => x.FamilyName == old.FamilyName).Count() > 0) + { + //只有主键,无需更新 + //repositoryPpf.UpdateNow(old); + } + else + { + repositoryPublishPhotoFamilyGroup.DeleteNow(old); + } + } + } + if (familyGroups != null && familyGroups.Length > 0) + foreach (PublishPhotoFamilyGroupEntity dto in familyGroups) + { + if (string.IsNullOrEmpty(dto.CreatedBy)) + repositoryPublishPhotoFamilyGroup.InsertNow(new PublishPhotoFamilyGroupEntity() + { + PublishName = publishName, + FamilyName = dto.FamilyName, + }); + } + } + + private void SavePublishPhotoDetails(string publishName, PublishPhotoDetailEntity[] details) + { + if (details != null && details.Length > 0) + { + int i = 1; + foreach (PublishPhotoDetailEntity dtl in details) + { + dtl.OrderBy = i++; + } + } + + IRepository repositoryPublishPhotoDetail = repository.GetRepository>(); + + PublishPhotoDetailEntity[] olds = repositoryPublishPhotoDetail.Entities.Where(x => x.PublishName == publishName).ToArray(); + if (olds != null && olds.Length > 0) + { + //存在更新,不存在删除 + + foreach (PublishPhotoDetailEntity old in olds) + { + if (details != null && details.Length > 0 && details.Where(x => x.DetailId == old.DetailId).Count() > 0) + { + PublishPhotoDetailEntity dtl = details.Where(x => x.DetailId == old.DetailId).FirstOrDefault(); + + old.OrderBy = dtl.OrderBy; + old.Notice = dtl.Notice; + + repositoryPublishPhotoDetail.UpdateNow(old); + } + else + { + repositoryPublishPhotoDetail.DeleteNow(old); + } + } + } + } + + [PermissionOperate(name: MasterPermissionPolicy.PublishPhoto, operate: Operate.Delete)] + [UnitOfWork] + public void Delete(string key) + { + PublishPhotoEntity publishEntity = repository.DetachedEntities.Where(x => x.OwnerName == service.UserId && x.PublishName == key).FirstOrDefault(); + if (publishEntity == null) + { + throw new ValidatedException("记录不存在."); + } + + repository.DeleteNow(publishEntity); + + IRepository repositoryDetail = repository.GetRepository>(); + + PublishPhotoDetailEntity[] detail = repositoryDetail.Entities.Where(x => x.PublishName == key).ToArray(); + if (detail != null && detail.Length > 0) + { + foreach (PublishPhotoDetailEntity dtl in detail) + { + repositoryDetail.DeleteNow(dtl); + } + } + + IRepository repositoryFamilyGroup = repository.GetRepository>(); + + PublishPhotoFamilyGroupEntity[] groups = repositoryFamilyGroup.Entities.Where(x => x.PublishName == key).ToArray(); + if (groups != null && groups.Length > 0) + { + foreach (PublishPhotoFamilyGroupEntity gp in groups) + { + repositoryFamilyGroup.DeleteNow(gp); + } + } + } + + [AllowAnonymous] + public PublishPhotoDetailEntity[] FindPublishPhotoDetailByPublishName(string publishName) + { + List publishPhotoDetails = new List(); + if (string.IsNullOrEmpty(publishName)) return publishPhotoDetails.ToArray(); + + IRepository repositoryPublishPhoto = repository.GetRepository>(); + PublishPhotoEntity publishPhoto = repositoryPublishPhoto.DetachedEntities.Where(x => x.OwnerName == service.UserId && x.PublishName == publishName).FirstOrDefault(); + + if (publishPhoto == null) + return publishPhotoDetails.ToArray(); + + IRepository repositoryPublishPhotoDetail = repository.GetRepository>(); + PublishPhotoDetailEntity[] dtls = repositoryPublishPhotoDetail.DetachedEntities.Where(x => x.PublishName == publishName).OrderBy(x => x.OrderBy).ToArray(); + + if (dtls == null || dtls.Length == 0) return publishPhotoDetails.ToArray(); + + bool isAttached = Debugger.IsAttached; + foreach (var item in dtls) + { + if (item.FileName.ToLower().StartsWith("http")) continue; + + item.FileName = (isAttached ? service.Configuration[AppsettingsPolicy.ApplicationUrl] : "") + item.FileName; + } + + return dtls; + } + + [AllowAnonymous] + public PublishPhotoDetailEntity[] FindPublishPhotoDetail() + { + PublishPhotoEntity publishPhoto = repository.DetachedEntities.Where(x => x.OwnerName == service.UserId && x.DefaultIndc == YesNoPolicy.YES).FirstOrDefault(); + List publishPhotoDetails = new List(); + if (publishPhoto == null) + return publishPhotoDetails.ToArray(); + + IRepository repositoryPublishPhotoDetail = repository.GetRepository>(); + + PublishPhotoDetailEntity[] dtls = repositoryPublishPhotoDetail.DetachedEntities.Where(x => x.PublishName == publishPhoto.PublishName).OrderBy(x => x.OrderBy).ToArray(); + + if (dtls == null || dtls.Length == 0) return dtls; + + bool isAttached = Debugger.IsAttached; + foreach (var item in dtls) + { + if (item.FileName.ToLower().StartsWith("http")) continue; + + item.FileName = (isAttached ? service.Configuration[AppsettingsPolicy.ApplicationUrl] : "") + item.FileName; + } + + return dtls; + } + + [PermissionOperate(name: MasterPermissionPolicy.PublishAudio, operate: Operate.Insert)] + public void InsertPublishPhotoDetail(PublishData publishData) + { + IRepository repositoryDmsFile = repository.GetRepository>(); + DmsFileEntity dmsFile = repositoryDmsFile.DetachedEntities.Where(x => x.FileId == publishData.FileId).FirstOrDefault(); + + if (dmsFile == null) return; + if (!FileTypePolicy.IsPhoto(dmsFile.OrderKey)) return; + + InsertPublishPhotoDetail(dmsFile, publishData.PublishName); + } + + [PermissionOperate(name: MasterPermissionPolicy.PublishAudio, operate: Operate.Insert)] + public void InsertPublishPhotoDetailByFamilyGroup(PublishData publishData) + { + IRepository repositoryDmsFile = repository.GetRepository>(); + FamilyDmsFileViewEntity dmsFile = repositoryDmsFile.DetachedEntities.Where(x => x.FileId == publishData.FileId).FirstOrDefault(); + + if (dmsFile == null) return; + if (!(dmsFile.OrderKey.ToLower().Contains(".jpg") || dmsFile.OrderKey.ToLower().Contains(".png") || + dmsFile.OrderKey.ToLower().Contains(".gif") || dmsFile.OrderKey.ToLower().Contains(".jpeg"))) return; + + DmsFileEntity dmsFileEntity = new DmsFileEntity(); + ObjectCopyHelper.Copy(dmsFile, dmsFileEntity); + InsertPublishPhotoDetail(dmsFileEntity, publishData.PublishName); + } + + private void InsertPublishPhotoDetail(DmsFileEntity dmsFile, string publishName) + { + IRepository repositoryPublishPhotoDetail = repository.GetRepository>(); + + var webRootPath = service.Configuration[ServiceSettingsPolicy.RequestPath]; + var phy = service.Configuration[ServiceSettingsPolicy.PhysicalFileDirectory]; + var scale = service.Configuration[ServiceSettingsPolicy.DmsFileScaleDirectory].Replace(phy, ""); + + var fileExtension = Path.GetExtension(dmsFile.OrderKey); + var filePathRel = Path.Combine(scale, dmsFile.CreatedBy, fileExtension.Replace(".", ""), ""); + var filePath = filePathRel.Replace(Path.DirectorySeparatorChar, '/'); + string path = Path.Combine(webRootPath, filePathRel, dmsFile.OrderKey); + + + PublishPhotoDetailEntity[] dtls = repositoryPublishPhotoDetail.DetachedEntities.Where(x => x.PublishName == publishName).ToArray(); + + if (dtls != null && dtls.Where(x => x.FileName == path).Count() > 0) return; + + PublishPhotoDetailEntity dtl = new PublishPhotoDetailEntity(); + dtl.PublishName = publishName; + dtl.OwnerName = dmsFile.OwerId; + if (dtls != null && dtls.Length > 0) + dtl.OrderBy = dtls.Sum(x => x.OrderBy) + 1; + dtl.FileName = path; + + repositoryPublishPhotoDetail.InsertNow(dtl); + } + } +} diff --git a/CloudBuilder/CloudBuilder.Master.Service/PublishVideoService.auto.cs b/CloudBuilder/CloudBuilder.Master.Service/PublishVideoService.auto.cs new file mode 100644 index 0000000..b7f7ed3 --- /dev/null +++ b/CloudBuilder/CloudBuilder.Master.Service/PublishVideoService.auto.cs @@ -0,0 +1,402 @@ + +using CloudBuilder.Core.DatabaseAccessor; +using CloudBuilder.Core.DatabaseAccessor.Entity; +using CloudBuilder.Core.Policy; +using CloudBuilder.Core.Service; +using CloudBuilder.Master.Data; +using CloudBuilder.Master.Entity; +using CloudBuilder.Master.Policy; +using CloudBuilder.Master.SearchCriteria; +using CloudBuilder.Security.Entity; +using CloudBuilder.Security.Policy; +using CloudBuilder.Security.Service; +using CloudBuilder.Security.Utility; +using Microsoft.AspNetCore.Authorization; +using Microsoft.Extensions.DependencyInjection; +namespace CloudBuilder.Master.Service +{ + public class PublishVideoService : IPublishVideoService + { + private readonly IApplicationService service; + + private IRepository repository; + public PublishVideoService(IApplicationService service) + { + this.service = service; + repository = service.GetRepository>(); + } + + [PermissionOperate(name: MasterPermissionPolicy.PublishVideo, operate: Operate.Find)] + public PublishVideoData FindByKey(string key) + { + PublishVideoData data = new PublishVideoData(); + if (string.IsNullOrEmpty(key)) return data; + + PublishVideoEntity publish = repository.DetachedEntities.Where(x => x.PublishName == key).FirstOrDefault(); + + if (publish == null) return data; + + IRepository repositoryPublishVideoFamilyGroup = repository.GetRepository>(); + IRepository repositoryFamilyGroup = repository.GetRepository>(); + + + IQueryable? q = from e in repositoryPublishVideoFamilyGroup.DetachedEntities + join fg in repositoryFamilyGroup.DetachedEntities on e.FamilyName equals fg.FamilyName + where e.PublishName == key + select new PublishVideoFamilyGroupDisplayData(fg) + { + CreatedBy = e.CreatedBy, + CreatedDatetime = e.CreatedDatetime, + UpdatedBy = e.UpdatedBy, + UpdatedDatetime = e.UpdatedDatetime, + PublishName = e.PublishName, + }; + + data.FamilyGroups = q.ToArray(); + if (publish.OwnerName != service.UserId && !YesNoPolicy.IsYes(publish.OpenIndc) && data.FamilyGroups.Length == 0) + { + throw new ValidatedException("没有权限."); + } + else if (publish.OwnerName != service.UserId && !YesNoPolicy.IsYes(publish.OpenIndc) && data.FamilyGroups.Length > 0) + { + IRepository repositoryFamilyGroupManager = repository.GetRepository>(); + + IQueryable? fgm = from e in repositoryFamilyGroupManager.DetachedEntities + where e.UserName == service.UserId && data.FamilyGroups.Where(x => x.FamilyName == e.FamilyName).Count() > 0 + select e.UserName; + + if (fgm.Count() == 0) + throw new ValidatedException("没有权限."); + } + + data.PublishVideo = publish; + + IRepository repositoryPublishVideoDetail = repository.GetRepository>(); + data.Details = repositoryPublishVideoDetail.DetachedEntities.Where(x => x.PublishName == publish.PublishName).OrderBy(x => x.OrderBy).Select(x => new PublishVideoDetailDisplayData(x)).ToArray(); + + if (data.Details != null && data.Details.Length > 0) + { + var webRootPath = service.Configuration[ServiceSettingsPolicy.RequestPath]; + var phy = service.Configuration[ServiceSettingsPolicy.PhysicalFileDirectory]; + var scale = service.Configuration[ServiceSettingsPolicy.DmsFileScaleDirectory].Replace(phy, ""); + + IRepository repositoryDmsFile = repository.GetRepository>(); + + foreach (var item in data.Details) + { + if (!string.IsNullOrEmpty(item.Url) && FileTypePolicy.GetType(item.Url!) == FileTypePolicy.VIDEO) + { + var upload = service.Configuration[ServiceSettingsPolicy.DmsFileUploadDirectory].Replace(phy, ""); + + var filePathRel = Path.Combine(upload, item.CreatedBy, "m3u8", ""); + var filePath = filePathRel.Replace(Path.DirectorySeparatorChar, '/'); + item.FormattedUrl = service.Configuration[AppsettingsPolicy.ApplicationUrl] + webRootPath + filePath + Path.GetFileNameWithoutExtension(item.Url) + "/main.m3u8"; + + item.FormattedPic = item.FormattedUrl.Replace("main.m3u8", "main.png"); + + DmsFileEntity dmsFileEntity = repositoryDmsFile.DetachedEntities.Where(x => x.OrderKey == Path.GetFileNameWithoutExtension(item.Url)).FirstOrDefault(); + string transcodeIndc = YesNoPolicy.NO; + if (dmsFileEntity != null) transcodeIndc = dmsFileEntity.TranscodeIndc; + item.FormattedUrl = FileTypePolicy.PackUrl(service, item.CreatedBy, item.Url, transcodeIndc); + + + } + } + } + + return data; + } + + [PermissionOperate(name: MasterPermissionPolicy.PublishVideo, operate: Operate.Find)] + public PublishVideoResultData FindBySearchCriteria(PublishVideoSearchCriteria criteria) + { + PublishVideoResultData data = new PublishVideoResultData(); + PublishVideoEntity[] list = null; + + Int64 count = 0; + + string sqlWhere = null; + + if (criteria.Filter != null && criteria.Filter.Length > 0) + { + sqlWhere = SearchFilter.ComposeWhereClause(criteria.Filter); + } + + sqlWhere = sqlWhere + string.Format(" and ({0} ='{1}' or {2} ='{3}') ", + PublishVideoEntity.DB_OWNER_NAME, service.UserId, + PublishVideoEntity.DB_OPEN_INDC, criteria.IsModal ? service.UserId : YesNoPolicy.YES); + + PublishVideoEntity entity = PublishVideoEntity.GetInstance(repository.GetDbContext().Database.ProviderName); + string sql = entity.GetSelectTopFrom(criteria.limit, criteria.page, criteria.orderby.StringToDbField(), criteria.orderbytag, sqlWhere); + + string err = null; + try + { + list = repository.FromSql(sql).ToArray(); + } + catch (System.Exception ex) + { + err = ex.Message; + } + + + if (list != null && list.Length > 0) + { + sql = entity.GetSelectCountFrom(sqlWhere); + count = Convert.ToInt64(repository.ExecuteScalar(sql)); + } + + data.Limit = criteria.limit; + data.Page = criteria.page; + data.Datas = list; + data.Total = count; + //data.Sql = sql; + data.ErrorMessage = err; + return data; + } + + [PermissionOperate(name: MasterPermissionPolicy.PublishVideo, operate: Operate.Find)] + public PublishVideoData FindPublishVideoDefault() + { + PublishVideoEntity publish = repository.DetachedEntities.Where(x => x.OwnerName == service.UserId && x.DefaultIndc == YesNoPolicy.YES).FirstOrDefault(); + if (publish == null) return null; + return FindByKey(publish.PublishName); + } + + [PermissionOperate(name: MasterPermissionPolicy.PublishVideo, operate: Operate.Print)] + public dynamic PrintBySearchCriteria(PublishVideoSearchCriteria criteria) + { + throw new NotImplementedException(); + } + + [PermissionOperate(name: MasterPermissionPolicy.PublishVideo, operate: Operate.Insert)] + [UnitOfWork] + public PublishVideoData Insert(PublishVideoData data) + { + PublishVideoEntity photoPublish = repository.DetachedEntities.Where(x => x.PublishLocalName == data.PublishVideo.PublishLocalName).FirstOrDefault(); + if (photoPublish != null) + { + throw new ValidatedException($"[{photoPublish.PublishLocalName}]已发布."); + } + + Validate(data.PublishVideo); + + if (data.PublishVideo.DefaultIndc == YesNoPolicy.YES) + { + CancelDefaultIndc(null); + } + + photoPublish = new PublishVideoEntity(); + ObjectCopyHelper.Copy(data.PublishVideo, photoPublish); + + ISecurityGeneratorNumberService securityGeneratorNumberService = service.ServiceProvider.GetService()!; + + photoPublish.PublishName = securityGeneratorNumberService.GetNo(MasterPrefixPolicy.AUDIO_PUBLISH, MasterPrefixPolicy.AUDIO_PUBLISH_PUBLISH_NAME, "AP", YesNoPolicy.YES, "yymmdd00000"); + photoPublish.OwnerName = service.UserId; + + repository.InsertNow(photoPublish); + + SavePublishVideoFamilyGroup(photoPublish.PublishName, data.FamilyGroups); + + return FindByKey(photoPublish.PublishName); + } + + [PermissionOperate(name: MasterPermissionPolicy.PublishVideo, operate: Operate.Update)] + [UnitOfWork] + public PublishVideoData Update(PublishVideoData data) + { + PublishVideoEntity publishEntity = repository.DetachedEntities.Where(x => x.OwnerName == service.UserId && x.PublishName == data.PublishVideo.PublishName).FirstOrDefault(); + if (publishEntity == null) + { + throw new ValidatedException("记录不存在."); + } + + ValidateHelper.Validate(service, data.PublishVideo, PublishVideoEntity.DB_NAME_PUBLISH_VIDEO); + + if (data.PublishVideo.DefaultIndc == YesNoPolicy.YES) + { + CancelDefaultIndc(data.PublishVideo.PublishName); + } + + publishEntity = new PublishVideoEntity(); + ObjectCopyHelper.Copy(data.PublishVideo, publishEntity); + + repository.UpdateNow(publishEntity); + + //只有删除和更新,没有插入 + SavePublishVideoDetails(publishEntity.PublishName, data.Details); + + SavePublishVideoFamilyGroup(publishEntity.PublishName, data.FamilyGroups); + + return FindByKey(publishEntity.PublishName); + } + + private void SavePublishVideoDetails(string publishName, PublishVideoDetailEntity[] details) + { + if (details != null && details.Length > 0) + { + int i = 1; + foreach (PublishVideoDetailEntity dtl in details) + { + dtl.OrderBy = i++; + } + } + + IRepository repositoryPublishVideoDetail = repository.GetRepository>(); + + PublishVideoDetailEntity[] olds = repositoryPublishVideoDetail.Entities.Where(x => x.PublishName == publishName).ToArray(); + if (olds != null && olds.Length > 0) + { + //存在更新,不存在删除 + + foreach (PublishVideoDetailEntity old in olds) + { + if (details != null && details.Length > 0 && details.Where(x => x.DetailId == old.DetailId).Count() > 0) + { + PublishVideoDetailEntity dtl = details.Where(x => x.DetailId == old.DetailId).FirstOrDefault(); + + old.Title = dtl.Title; + old.Author = dtl.Author; + old.Pic = dtl.Pic; + old.Url = dtl.Url; + old.Lrc = dtl.Lrc; + old.OrderBy = dtl.OrderBy; + old.Notice = dtl.Notice; + + repositoryPublishVideoDetail.UpdateNow(old); + } + else + { + repositoryPublishVideoDetail.DeleteNow(old); + } + } + } + } + + private void Validate(PublishVideoEntity photoPublish) + { + List sysTableSchemas = service.ServiceProvider.GetRequiredService().FindByTableName(PublishVideoEntity.DB_NAME_PUBLISH_VIDEO); + ValidateHelper.ValidateString(photoPublish, sysTableSchemas.ToArray()); + } + + private void SavePublishVideoFamilyGroup(string publishName, PublishVideoFamilyGroupEntity[] familyGroups) + { + IRepository repositoryPublishVideoFamilyGroup = repository.GetRepository>(); + + PublishVideoFamilyGroupEntity[] olds = repositoryPublishVideoFamilyGroup.Entities.Where(x => x.PublishName == publishName).ToArray(); + if (olds != null && olds.Length > 0) + { + //存在更新,不存在删除 + + foreach (PublishVideoFamilyGroupEntity old in olds) + { + if (familyGroups != null && familyGroups.Length > 0 && familyGroups.Where(x => x.FamilyName == old.FamilyName).Count() > 0) + { + //只有主键,无需更新 + //repositoryPpf.UpdateNow(old); + } + else + { + repositoryPublishVideoFamilyGroup.DeleteNow(old); + } + } + } + if (familyGroups != null && familyGroups.Length > 0) + foreach (PublishVideoFamilyGroupEntity dto in familyGroups) + { + if (string.IsNullOrEmpty(dto.CreatedBy)) + repositoryPublishVideoFamilyGroup.InsertNow(new PublishVideoFamilyGroupEntity() + { + PublishName = publishName, + FamilyName = dto.FamilyName, + }); + } + } + + + public void CancelDefaultIndc(string publishLocalName) + { + PublishVideoEntity[] orgs = repository.DetachedEntities.Where(x => x.PublishName != publishLocalName && x.OwnerName == service.UserId && x.DefaultIndc == YesNoPolicy.YES).ToArray(); + foreach (PublishVideoEntity org in orgs) + { + org.DefaultIndc = YesNoPolicy.NO; + } + + if (orgs != null && orgs.Length > 0) + repository.UpdateNow(orgs); + } + + [PermissionOperate(name: MasterPermissionPolicy.PublishVideo, operate: Operate.Delete)] + [UnitOfWork] + public void Delete(string key) + { + PublishVideoEntity publishEntity = repository.DetachedEntities.Where(x => x.OwnerName == service.UserId && x.PublishName == key).FirstOrDefault(); + if (publishEntity == null) + { + throw new ValidatedException("记录不存在."); + } + + repository.DeleteNow(publishEntity); + + + IRepository repositoryDetail = repository.GetRepository>(); + + PublishVideoDetailEntity[] detail = repositoryDetail.Entities.Where(x => x.PublishName == key).ToArray(); + if (detail != null && detail.Length > 0) + { + foreach (PublishVideoDetailEntity dtl in detail) + { + repositoryDetail.DeleteNow(dtl); + } + } + + + IRepository repositoryFamilyGroup = repository.GetRepository>(); + + PublishVideoFamilyGroupEntity[] groups = repositoryFamilyGroup.Entities.Where(x => x.PublishName == key).ToArray(); + if (groups != null && groups.Length > 0) + { + foreach (PublishVideoFamilyGroupEntity gp in groups) + { + repositoryFamilyGroup.DeleteNow(gp); + } + } + } + + + [PermissionOperate(name: MasterPermissionPolicy.PublishVideo, operate: Operate.Insert)] + public void InsertPublishVideoDetail(PublishData publishData) + { + IRepository repositoryDmsFile = repository.GetRepository>(); + DmsFileUploadViewEntity dmsFile = repositoryDmsFile.DetachedEntities.Where(x => x.FileId == publishData.FileId).FirstOrDefault(); + + if (dmsFile == null) return; + if (!FileTypePolicy.IsVideo(dmsFile.OrderKey)) return; + + InsertPublishVideoDetail(dmsFile, publishData.PublishName); + } + + private void InsertPublishVideoDetail(DmsFileUploadViewEntity dmsFile, string publishName) + { + IRepository repositoryPublishVideoDetail = repository.GetRepository>(); + + PublishVideoDetailEntity[] dtls = repositoryPublishVideoDetail.DetachedEntities.Where(x => x.PublishName == publishName).ToArray(); + + if (dtls != null && dtls.Where(x => x.Url == dmsFile.OrderKey).Count() > 0) return; + + PublishVideoDetailEntity dtl = new PublishVideoDetailEntity(); + dtl.PublishName = publishName; + string orgFileName = Path.GetFileNameWithoutExtension(dmsFile.OrgFileName); + string[] tts = orgFileName.Split('-'); + dtl.Title = tts[0].Trim(); + if (tts.Length > 1) dtl.Author = tts[1].Trim(); + + dtl.OwnerName = dmsFile.OwerId; + if (dtls != null && dtls.Length > 0) + dtl.OrderBy = dtls.Sum(x => x.OrderBy) + 1; + dtl.Url = dmsFile.OrderKey; + + repositoryPublishVideoDetail.InsertNow(dtl); + } + } +} diff --git a/CloudBuilder/CloudBuilder.Master/CloudBuilder.Master.csproj b/CloudBuilder/CloudBuilder.Master/CloudBuilder.Master.csproj index 3780109..8ac84af 100644 --- a/CloudBuilder/CloudBuilder.Master/CloudBuilder.Master.csproj +++ b/CloudBuilder/CloudBuilder.Master/CloudBuilder.Master.csproj @@ -31,8 +31,6 @@ - - diff --git a/CloudBuilder/CloudBuilder.Master/Data/DmsFileResultData.cs b/CloudBuilder/CloudBuilder.Master/Data/DmsFileResultData.cs new file mode 100644 index 0000000..30337ca --- /dev/null +++ b/CloudBuilder/CloudBuilder.Master/Data/DmsFileResultData.cs @@ -0,0 +1,22 @@ +using CloudBuilder.Core.Authorization; +using CloudBuilder.Core.Service; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CloudBuilder.Master.Data +{ + [TypeScript] + public class DmsFileResultData : SearchCriteriaResultData + { + public DmsFileUploadViewDisplayData[]? Datas { get; set; } + + public string[] Previews { get; set; } = null!; + + public DmsFileUploadDeleteLogViewDisplayData[]? Logs { get; set; } + + public FamilyDmsFileViewDisplayData[]? Families { get; set; } + } +} diff --git a/CloudBuilder/CloudBuilder.Master/Data/DmsFileUploadDeleteLogViewDisplayData.cs b/CloudBuilder/CloudBuilder.Master/Data/DmsFileUploadDeleteLogViewDisplayData.cs new file mode 100644 index 0000000..2bba4ae --- /dev/null +++ b/CloudBuilder/CloudBuilder.Master/Data/DmsFileUploadDeleteLogViewDisplayData.cs @@ -0,0 +1,33 @@ +using CloudBuilder.Core.Authorization; +using CloudBuilder.Master.Entity; +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations.Schema; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CloudBuilder.Master.Data +{ + [NotMapped] + [TypeScript] + public class DmsFileUploadDeleteLogViewDisplayData : DmsFileUploadDeleteLogViewEntity + { + public DmsFileUploadDeleteLogViewDisplayData() + { + } + public DmsFileUploadDeleteLogViewDisplayData(DmsFileUploadDeleteLogViewEntity entity) + { + CopyFrom(entity); + } + + public const string IS_SELECTED = "IsSelected"; + + public const string IS_PLAY = "IsPlay"; + public bool? IsSelected { get; set; } + + public string? IsPlay { get; set; } + + public string? FormattedPic { get; set; } + } +} diff --git a/CloudBuilder/CloudBuilder.Master/Data/DmsFileUploadViewDisplayData.cs b/CloudBuilder/CloudBuilder.Master/Data/DmsFileUploadViewDisplayData.cs new file mode 100644 index 0000000..6c5c081 --- /dev/null +++ b/CloudBuilder/CloudBuilder.Master/Data/DmsFileUploadViewDisplayData.cs @@ -0,0 +1,36 @@ +using CloudBuilder.Core.Authorization; +using CloudBuilder.Master.Entity; +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations.Schema; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CloudBuilder.Master.Data +{ + [NotMapped] + [TypeScript] + public class DmsFileUploadViewDisplayData : DmsFileUploadViewEntity + { + public DmsFileUploadViewDisplayData() + { + } + public DmsFileUploadViewDisplayData(DmsFileUploadViewEntity entity) + { + CopyFrom(entity); + } + + public const string IS_SELECTED = "IsSelected"; + + public const string IS_PLAY = "IsPlay"; + public const string IS_PAUSE = "IsPause"; + public bool? IsSelected { get; set; } + + public string? IsPlay { get; set; } + + public string? IsPause { get; set; } + + public string? FormattedPic { get; set; } + } +} diff --git a/CloudBuilder/CloudBuilder.Master/Data/DmsFolderTreeData.cs b/CloudBuilder/CloudBuilder.Master/Data/DmsFolderTreeData.cs new file mode 100644 index 0000000..58bb081 --- /dev/null +++ b/CloudBuilder/CloudBuilder.Master/Data/DmsFolderTreeData.cs @@ -0,0 +1,17 @@ +using CloudBuilder.Core.Authorization; +using CloudBuilder.Master.Entity; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CloudBuilder.Master.Data +{ + [TypeScript] + public class DmsFolderData + { + public DmsFolderEntity[]? DmsFolders { get; set; } + public DmsFolderMapEntity[]? DmsFoldersMaps { get; set; } + } +} diff --git a/CloudBuilder/CloudBuilder.Master/Data/FamilyDmsFileViewDisplayData.cs b/CloudBuilder/CloudBuilder.Master/Data/FamilyDmsFileViewDisplayData.cs new file mode 100644 index 0000000..5c426e7 --- /dev/null +++ b/CloudBuilder/CloudBuilder.Master/Data/FamilyDmsFileViewDisplayData.cs @@ -0,0 +1,36 @@ +using CloudBuilder.Core.Authorization; +using CloudBuilder.Master.Entity; +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations.Schema; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CloudBuilder.Master.Data +{ + [NotMapped] + [TypeScript] + public class FamilyDmsFileViewDisplayData : FamilyDmsFileViewEntity + { + public FamilyDmsFileViewDisplayData() + { + } + public FamilyDmsFileViewDisplayData(FamilyDmsFileViewEntity entity) + { + CopyFrom(entity); + } + + public const string IS_SELECTED = "IsSelected"; + public const string FILE_TYPE = "FileType"; + public const string IS_PLAY = "IsPlay"; + public const string IS_PAUSE = "IsPause"; + public bool? IsSelected { get; set; } + + public string? FileType { get; set; } + + public string? IsPlay { get; set; } + + public string? IsPause { get; set; } + } +} diff --git a/CloudBuilder/CloudBuilder.Master/Data/FamilyGroupData.cs b/CloudBuilder/CloudBuilder.Master/Data/FamilyGroupData.cs new file mode 100644 index 0000000..09587a7 --- /dev/null +++ b/CloudBuilder/CloudBuilder.Master/Data/FamilyGroupData.cs @@ -0,0 +1,30 @@ +using CloudBuilder.Core.Authorization; +using CloudBuilder.Master.Entity; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CloudBuilder.Master.Data +{ + [TypeScript] + public class FamilyGroupData + { + public FamilyGroupEntity? FamilyGroup { get; set; } + + public const string IS_MANAGER = "IsManager"; + public bool IsManager { get; set; } = false; + public bool IsOpen { get; set; } = false; + public bool IsAdd { get; set; } = false; + + + public FamilyGroupFolderDisplayData[]? FamilyGroupFolders { get; set; } + + public FamilyGroupManagerDisplayData[]? FamilyGroupManagers { get; set; } + + public FamilyGroupManagerDisplayData[]? FamilyGroupRequests { get; set; } + + public FamilyGroupPermissionDisplayData[]? FamilyGroupPermissions { get; set; } + } +} diff --git a/CloudBuilder/CloudBuilder.Master/Data/FamilyGroupFolderDisplayData.cs b/CloudBuilder/CloudBuilder.Master/Data/FamilyGroupFolderDisplayData.cs new file mode 100644 index 0000000..003b869 --- /dev/null +++ b/CloudBuilder/CloudBuilder.Master/Data/FamilyGroupFolderDisplayData.cs @@ -0,0 +1,28 @@ +using CloudBuilder.Core.Authorization; +using CloudBuilder.Master.Entity; +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations.Schema; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CloudBuilder.Master.Data +{ + [NotMapped] + [TypeScript] + public class FamilyGroupFolderDisplayData : FamilyGroupFolderEntity + { + public FamilyGroupFolderDisplayData() + { + } + public FamilyGroupFolderDisplayData(FamilyGroupFolderEntity entity) + { + CopyFrom(entity); + } + + public const string IS_SHARE_PERMISSION = "IsSharePermission"; + + public bool IsSharePermission { get; set; } + } +} diff --git a/CloudBuilder/CloudBuilder.Master/Data/FamilyGroupManagerDisplayData.cs b/CloudBuilder/CloudBuilder.Master/Data/FamilyGroupManagerDisplayData.cs new file mode 100644 index 0000000..a6b7dc6 --- /dev/null +++ b/CloudBuilder/CloudBuilder.Master/Data/FamilyGroupManagerDisplayData.cs @@ -0,0 +1,36 @@ +using CloudBuilder.Core.Authorization; +using CloudBuilder.Master.Entity; +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations.Schema; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CloudBuilder.Master.Data +{ + [NotMapped] + [TypeScript] + public class FamilyGroupManagerDisplayData : FamilyGroupManagerEntity + { + public FamilyGroupManagerDisplayData() + { + } + + public FamilyGroupManagerDisplayData(FamilyGroupManagerEntity entity) + { + CopyFrom(entity); + this.IsManager = entity.ManagerIndc == YesNoPolicy.YES; + } + + public string? UserLocalName { get; set; } + + public const string USER_LOCAL_NAME = "UserLocalName"; + + public const string DB_USER_LOCAL_NAME = "user_local_name"; + + public const string IS_MANAGER = "IsManager"; + + public bool IsManager { get; set; } + } +} diff --git a/CloudBuilder/CloudBuilder.Master/Data/FamilyGroupPermissionDisplayData.cs b/CloudBuilder/CloudBuilder.Master/Data/FamilyGroupPermissionDisplayData.cs new file mode 100644 index 0000000..d26389c --- /dev/null +++ b/CloudBuilder/CloudBuilder.Master/Data/FamilyGroupPermissionDisplayData.cs @@ -0,0 +1,35 @@ +using CloudBuilder.Core.Authorization; +using CloudBuilder.Master.Entity; +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations.Schema; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CloudBuilder.Master.Data +{ + [NotMapped] + [TypeScript] + public class FamilyGroupPermissionDisplayData : FamilyGroupPermissionEntity + { + public FamilyGroupPermissionDisplayData() + { + } + + public FamilyGroupPermissionDisplayData(FamilyGroupPermissionEntity entity) + { + CopyFrom(entity); + } + + public string? UserLocalName { get; set; } + + public const string USER_LOCAL_NAME = "UserLocalName"; + + public const string DB_USER_LOCAL_NAME = "user_local_name"; + + public string? FolderLocalName { get; set; } + public const string FOLDER_LOCAL_NAME = "FolderLocalName"; + public const string DB_FOLDER_LOCAL_NAME = "folder_local_name"; + } +} diff --git a/CloudBuilder/CloudBuilder.Master/Data/FamilyGroupResultData.cs b/CloudBuilder/CloudBuilder.Master/Data/FamilyGroupResultData.cs new file mode 100644 index 0000000..a8e7c53 --- /dev/null +++ b/CloudBuilder/CloudBuilder.Master/Data/FamilyGroupResultData.cs @@ -0,0 +1,21 @@ +using CloudBuilder.Core.Authorization; +using CloudBuilder.Core.Service; +using CloudBuilder.Master.Entity; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CloudBuilder.Master.Data +{ + [TypeScript] + public class FamilyGroupResultData : SearchCriteriaResultData + { + public FamilyGroupEntity[]? Datas { get; set; } + + public FamilyGroupManagerUserViewEntity[]? Users { get; set; } + + public FamilyFolderFavoriteViewEntity[]? Favorites { get; set; } + } +} diff --git a/CloudBuilder/CloudBuilder.Master/Data/PublishAudioData.cs b/CloudBuilder/CloudBuilder.Master/Data/PublishAudioData.cs new file mode 100644 index 0000000..5efad0f --- /dev/null +++ b/CloudBuilder/CloudBuilder.Master/Data/PublishAudioData.cs @@ -0,0 +1,20 @@ +using CloudBuilder.Core.Authorization; +using CloudBuilder.Master.Entity; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CloudBuilder.Master.Data +{ + [TypeScript] + public class PublishAudioData + { + public PublishAudioEntity? PublishAudio { get; set; } + public PublishAudioDetailDisplayData[]? Details { get; set; } + + public PublishAudioFamilyGroupEntity[]? FamilyGroups { get; set; } + + } +} diff --git a/CloudBuilder/CloudBuilder.Master/Data/PublishAudioDetailDisplayData.cs b/CloudBuilder/CloudBuilder.Master/Data/PublishAudioDetailDisplayData.cs new file mode 100644 index 0000000..2d99180 --- /dev/null +++ b/CloudBuilder/CloudBuilder.Master/Data/PublishAudioDetailDisplayData.cs @@ -0,0 +1,30 @@ +using CloudBuilder.Core.Authorization; +using CloudBuilder.Master.Entity; +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations.Schema; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CloudBuilder.Master.Data +{ + [NotMapped] + [TypeScript] + public class PublishAudioDetailDisplayData : PublishAudioDetailEntity + { + public PublishAudioDetailDisplayData() + { + } + + public PublishAudioDetailDisplayData(PublishAudioDetailEntity entity) + { + CopyFrom(entity); + } + + public string? FormattedUrl { get; set; } + + public string? FormattedPic { get; set; } + public string? FormattedLrc { get; set; } + } +} diff --git a/CloudBuilder/CloudBuilder.Master/Data/PublishAudioFamilyGroupDisplayData.cs b/CloudBuilder/CloudBuilder.Master/Data/PublishAudioFamilyGroupDisplayData.cs new file mode 100644 index 0000000..e2f5a21 --- /dev/null +++ b/CloudBuilder/CloudBuilder.Master/Data/PublishAudioFamilyGroupDisplayData.cs @@ -0,0 +1,31 @@ +using CloudBuilder.Core.Authorization; +using CloudBuilder.Master.Entity; +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations.Schema; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CloudBuilder.Master.Data +{ + [NotMapped] + [TypeScript] + public class PublishAudioFamilyGroupDisplayData : PublishAudioFamilyGroupEntity + { + public PublishAudioFamilyGroupDisplayData() + { + } + + public PublishAudioFamilyGroupDisplayData(FamilyGroupEntity entity) + { + this.FamilyLocalName = entity.FamilyLocalName; + this.FamilyName = entity.FamilyName; + this.Notice = entity.Notice; + } + + public string? FamilyLocalName { get; set; } + + public string? Notice { get; set; } + } +} diff --git a/CloudBuilder/CloudBuilder.Master/Data/PublishAudioResultData.cs b/CloudBuilder/CloudBuilder.Master/Data/PublishAudioResultData.cs new file mode 100644 index 0000000..093dd02 --- /dev/null +++ b/CloudBuilder/CloudBuilder.Master/Data/PublishAudioResultData.cs @@ -0,0 +1,18 @@ +using CloudBuilder.Core.Authorization; +using CloudBuilder.Core.Service; +using CloudBuilder.Master.Entity; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CloudBuilder.Master.Data +{ + + [TypeScript] + public class PublishAudioResultData : SearchCriteriaResultData + { + public PublishAudioEntity[]? Datas { get; set; } + } +} diff --git a/CloudBuilder/CloudBuilder.Master/Data/PublishData.cs b/CloudBuilder/CloudBuilder.Master/Data/PublishData.cs new file mode 100644 index 0000000..624a5ae --- /dev/null +++ b/CloudBuilder/CloudBuilder.Master/Data/PublishData.cs @@ -0,0 +1,17 @@ +using CloudBuilder.Core.Authorization; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CloudBuilder.Master.Data +{ + [TypeScript] + public class PublishData + { + public long FileId { get; set; } + + public string? PublishName { get; set; } + } +} diff --git a/CloudBuilder/CloudBuilder.Master/Data/PublishPhotoData.cs b/CloudBuilder/CloudBuilder.Master/Data/PublishPhotoData.cs new file mode 100644 index 0000000..6d56558 --- /dev/null +++ b/CloudBuilder/CloudBuilder.Master/Data/PublishPhotoData.cs @@ -0,0 +1,20 @@ +using CloudBuilder.Core.Authorization; +using CloudBuilder.Master.Entity; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CloudBuilder.Master.Data +{ + [TypeScript] + public class PublishPhotoData + { + public PublishPhotoEntity? PublishPhoto { get; set; } + + public PublishPhotoDetailEntity[]? Details { get; set; } + + public PublishPhotoFamilyGroupDisplayData[]? FamilyGroups { get; set; } + } +} diff --git a/CloudBuilder/CloudBuilder.Master/Data/PublishPhotoFamilyGroupDisplayData.cs b/CloudBuilder/CloudBuilder.Master/Data/PublishPhotoFamilyGroupDisplayData.cs new file mode 100644 index 0000000..ca6e34c --- /dev/null +++ b/CloudBuilder/CloudBuilder.Master/Data/PublishPhotoFamilyGroupDisplayData.cs @@ -0,0 +1,31 @@ +using CloudBuilder.Core.Authorization; +using CloudBuilder.Master.Entity; +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations.Schema; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +//继承类时不加[NotMapped]排除实体类,'無效的資料行名稱 'Discriminator'。 +namespace CloudBuilder.Master.Data +{ + [NotMapped] + [TypeScript] + public class PublishPhotoFamilyGroupDisplayData : PublishPhotoFamilyGroupEntity + { + public PublishPhotoFamilyGroupDisplayData() + { + } + + public PublishPhotoFamilyGroupDisplayData(FamilyGroupEntity entity) + { + this.FamilyLocalName = entity.FamilyLocalName; + this.FamilyName = entity.FamilyName; + this.Notice = entity.Notice; + } + + public string? FamilyLocalName { get; set; } + + public string? Notice { get; set; } + } +} diff --git a/CloudBuilder/CloudBuilder.Master/Data/PublishPhotoResultData.cs b/CloudBuilder/CloudBuilder.Master/Data/PublishPhotoResultData.cs new file mode 100644 index 0000000..1ee9ad5 --- /dev/null +++ b/CloudBuilder/CloudBuilder.Master/Data/PublishPhotoResultData.cs @@ -0,0 +1,17 @@ +using CloudBuilder.Core.Authorization; +using CloudBuilder.Core.Service; +using CloudBuilder.Master.Entity; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CloudBuilder.Master.Data +{ + [TypeScript] + public class PublishPhotoResultData : SearchCriteriaResultData + { + public PublishPhotoEntity[]? Publishs { get; set; } + } +} diff --git a/CloudBuilder/CloudBuilder.Master/Data/PublishVideoData.cs b/CloudBuilder/CloudBuilder.Master/Data/PublishVideoData.cs new file mode 100644 index 0000000..b67ec83 --- /dev/null +++ b/CloudBuilder/CloudBuilder.Master/Data/PublishVideoData.cs @@ -0,0 +1,19 @@ +using CloudBuilder.Core.Authorization; +using CloudBuilder.Master.Entity; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CloudBuilder.Master.Data +{ + [TypeScript] + public class PublishVideoData + { + public PublishVideoEntity? PublishVideo { get; set; } + public PublishVideoDetailDisplayData[]? Details { get; set; } + + public PublishVideoFamilyGroupEntity[]? FamilyGroups { get; set; } + } +} diff --git a/CloudBuilder/CloudBuilder.Master/Data/PublishVideoDetailDisplayData.cs b/CloudBuilder/CloudBuilder.Master/Data/PublishVideoDetailDisplayData.cs new file mode 100644 index 0000000..7cf964d --- /dev/null +++ b/CloudBuilder/CloudBuilder.Master/Data/PublishVideoDetailDisplayData.cs @@ -0,0 +1,29 @@ +using CloudBuilder.Core.Authorization; +using CloudBuilder.Master.Entity; +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations.Schema; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CloudBuilder.Master.Data +{ + [NotMapped] + [TypeScript] + public class PublishVideoDetailDisplayData : PublishVideoDetailEntity + { + public PublishVideoDetailDisplayData() + { + } + + public PublishVideoDetailDisplayData(PublishVideoDetailEntity entity) + { + CopyFrom(entity); + } + + public string? FormattedUrl { get; set; } + + public string? FormattedPic { get; set; } + } +} diff --git a/CloudBuilder/CloudBuilder.Master/Data/PublishVideoFamilyGroupDisplayData.cs b/CloudBuilder/CloudBuilder.Master/Data/PublishVideoFamilyGroupDisplayData.cs new file mode 100644 index 0000000..5e144d1 --- /dev/null +++ b/CloudBuilder/CloudBuilder.Master/Data/PublishVideoFamilyGroupDisplayData.cs @@ -0,0 +1,31 @@ +using CloudBuilder.Core.Authorization; +using CloudBuilder.Master.Entity; +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations.Schema; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CloudBuilder.Master.Data +{ + [NotMapped] + [TypeScript] + public class PublishVideoFamilyGroupDisplayData : PublishVideoFamilyGroupEntity + { + public PublishVideoFamilyGroupDisplayData() + { + } + + public PublishVideoFamilyGroupDisplayData(FamilyGroupEntity entity) + { + this.FamilyLocalName = entity.FamilyLocalName; + this.FamilyName = entity.FamilyName; + this.Notice = entity.Notice; + } + + public string? FamilyLocalName { get; set; } + + public string? Notice { get; set; } + } +} diff --git a/CloudBuilder/CloudBuilder.Master/Data/PublishVideoResultData.cs b/CloudBuilder/CloudBuilder.Master/Data/PublishVideoResultData.cs new file mode 100644 index 0000000..a1d51c3 --- /dev/null +++ b/CloudBuilder/CloudBuilder.Master/Data/PublishVideoResultData.cs @@ -0,0 +1,17 @@ +using CloudBuilder.Core.Authorization; +using CloudBuilder.Core.Service; +using CloudBuilder.Master.Entity; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CloudBuilder.Master.Data +{ + [TypeScript] + public class PublishVideoResultData : SearchCriteriaResultData + { + public PublishVideoEntity[]? Datas { get; set; } + } +} diff --git a/CloudBuilder/CloudBuilder.Master/Entity/CloudBuilderMasterRegistEntity.auto.cs b/CloudBuilder/CloudBuilder.Master/Entity/CloudBuilderMasterRegistEntity.auto.cs index 60e53d6..40d2e32 100644 --- a/CloudBuilder/CloudBuilder.Master/Entity/CloudBuilderMasterRegistEntity.auto.cs +++ b/CloudBuilder/CloudBuilder.Master/Entity/CloudBuilderMasterRegistEntity.auto.cs @@ -51,7 +51,54 @@ builder.Entity(eb => { eb.HasNoKey(); }); builder.Entity(eb => { eb.HasNoKey(); }); builder.Entity(eb => { eb.HasNoKey(); }); - //***END*** + + + + + + +builder.Entity(eb => { eb.HasNoKey(); }); + +builder.Entity(eb => { eb.HasNoKey(); }); + + + +builder.Entity().HasKey(c => new {c.FolderNameParent,c.FolderNameSon}); + +builder.Entity().HasKey(c => new {c.FolderNameParent,c.FolderNameSon}); + +builder.Entity().HasKey(c => new {c.FolderName,c.UserName}); + + + +builder.Entity().HasKey(c => new {c.FamilyName,c.UserName}); + +builder.Entity().HasKey(c => new {c.FamilyName,c.FolderName,c.UserName}); + +builder.Entity(eb => { eb.HasNoKey(); }); + +builder.Entity(eb => { eb.HasNoKey(); }); + +builder.Entity(eb => { eb.HasNoKey(); }); + +builder.Entity(eb => { eb.HasNoKey(); }); + + + + + + +builder.Entity().HasKey(c => new {c.FamilyName,c.PublishName}); + + +builder.Entity().HasKey(c => new {c.FamilyName,c.PublishName}); + + +builder.Entity().HasKey(c => new {c.FamilyName,c.PublishName}); + + + +//***END*** } } } diff --git a/CloudBuilder/CloudBuilder.Master/Entity/DmsFileDeleteLogEntity.auto.cs b/CloudBuilder/CloudBuilder.Master/Entity/DmsFileDeleteLogEntity.auto.cs new file mode 100644 index 0000000..18c030b --- /dev/null +++ b/CloudBuilder/CloudBuilder.Master/Entity/DmsFileDeleteLogEntity.auto.cs @@ -0,0 +1,254 @@ + +using CloudBuilder.Core.Authorization; +using CloudBuilder.Core.DatabaseAccessor.Entity; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +namespace CloudBuilder.Master.Entity + { + [TypeScript] + [Table("dms_file_delete_log")] + public class DmsFileDeleteLogEntity : ViewEntityBase + { + + public DmsFileDeleteLogEntity() + { + } + + [Column("allow_delete_indc")] + public string AllowDeleteIndc { get; set; } + [Column("allow_rename_indc")] + public string AllowRenameIndc { get; set; } + [Column("created_by")] + public string CreatedBy { get; set; } + [Column("created_datetime")] + public DateTime CreatedDatetime { get; set; } + [Column("file_id")] + public long FileId { get; set; } + [Column("file_name")] + public string FileName { get; set; } + [Column("file_path")] + public string FilePath { get; set; } + [Column("file_size")] + public int FileSize { get; set; } + [Column("file_tag")] + public string? FileTag { get; set; } + [Column("file_type")] + public string? FileType { get; set; } + [Column("is_directory_indc")] + public string IsDirectoryIndc { get; set; } + [Column("is_link_indc")] + public string IsLinkIndc { get; set; } + [Column("landscape_indc")] + public string? LandscapeIndc { get; set; } + [Column("linked_file_id")] + public int LinkedFileId { get; set; } + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + [Column("log_id")] + public int LogId { get; set; } + [Column("order_key")] + public string? OrderKey { get; set; } + [Column("org_file_name")] + public string OrgFileName { get; set; } + [Column("ower_id")] + public string OwerId { get; set; } + [Column("revision_no")] + public int RevisionNo { get; set; } + [Column("transcode_indc")] + public string? TranscodeIndc { get; set; } + [Column("updated_by")] + public string UpdatedBy { get; set; } + [Column("updated_datetime")] + public DateTime UpdatedDatetime { get; set; } + + public const string ALLOW_DELETE_INDC = "AllowDeleteIndc"; + public const string ALLOW_RENAME_INDC = "AllowRenameIndc"; + public const string CREATED_BY = "CreatedBy"; + public const string CREATED_DATETIME = "CreatedDatetime"; + public const string FILE_ID = "FileId"; + public const string FILE_NAME = "FileName"; + public const string FILE_PATH = "FilePath"; + public const string FILE_SIZE = "FileSize"; + public const string FILE_TAG = "FileTag"; + public const string FILE_TYPE = "FileType"; + public const string IS_DIRECTORY_INDC = "IsDirectoryIndc"; + public const string IS_LINK_INDC = "IsLinkIndc"; + public const string LANDSCAPE_INDC = "LandscapeIndc"; + public const string LINKED_FILE_ID = "LinkedFileId"; + public const string LOG_ID = "LogId"; + public const string ORDER_KEY = "OrderKey"; + public const string ORG_FILE_NAME = "OrgFileName"; + public const string OWER_ID = "OwerId"; + public const string REVISION_NO = "RevisionNo"; + public const string TRANSCODE_INDC = "TranscodeIndc"; + public const string UPDATED_BY = "UpdatedBy"; + public const string UPDATED_DATETIME = "UpdatedDatetime"; + + public const string DB_NAME_DMS_FILE_DELETE_LOG = "dms_file_delete_log"; + public const string DB_NAME_FIELDS="allow_delete_indc,allow_rename_indc,created_by,created_datetime,file_id,file_name,file_path,file_size,file_tag,file_type,is_directory_indc,is_link_indc,landscape_indc,linked_file_id,log_id,order_key,org_file_name,ower_id,revision_no,transcode_indc,updated_by,updated_datetime"; + + public const string DB_ALLOW_DELETE_INDC = "allow_delete_indc"; + public const string DB_ALLOW_RENAME_INDC = "allow_rename_indc"; + public const string DB_CREATED_BY = "created_by"; + public const string DB_CREATED_DATETIME = "created_datetime"; + public const string DB_FILE_ID = "file_id"; + public const string DB_FILE_NAME = "file_name"; + public const string DB_FILE_PATH = "file_path"; + public const string DB_FILE_SIZE = "file_size"; + public const string DB_FILE_TAG = "file_tag"; + public const string DB_FILE_TYPE = "file_type"; + public const string DB_IS_DIRECTORY_INDC = "is_directory_indc"; + public const string DB_IS_LINK_INDC = "is_link_indc"; + public const string DB_LANDSCAPE_INDC = "landscape_indc"; + public const string DB_LINKED_FILE_ID = "linked_file_id"; + public const string DB_LOG_ID = "log_id"; + public const string DB_ORDER_KEY = "order_key"; + public const string DB_ORG_FILE_NAME = "org_file_name"; + public const string DB_OWER_ID = "ower_id"; + public const string DB_REVISION_NO = "revision_no"; + public const string DB_TRANSCODE_INDC = "transcode_indc"; + public const string DB_UPDATED_BY = "updated_by"; + public const string DB_UPDATED_DATETIME = "updated_datetime"; + + private string ProviderName { get; set; } + + public static DmsFileDeleteLogEntity GetInstance(string providerName) + { + return new DmsFileDeleteLogEntity() { ProviderName = providerName }; + } + + public virtual void CopyFrom(DmsFileDeleteLogEntity source) + { + CopyFrom(source, true); + } + + public virtual void CopyFrom(DmsFileDeleteLogEntity source, bool includeSystemFields) + { + if (source == null) + { + throw new NullReferenceException("Source entity is null."); + } + + this.AllowDeleteIndc = source.AllowDeleteIndc; + this.AllowRenameIndc = source.AllowRenameIndc; + this.CreatedBy = source.CreatedBy; + this.CreatedDatetime = source.CreatedDatetime; + this.FileId = source.FileId; + this.FileName = source.FileName; + this.FilePath = source.FilePath; + this.FileSize = source.FileSize; + this.FileTag = source.FileTag; + this.FileType = source.FileType; + this.IsDirectoryIndc = source.IsDirectoryIndc; + this.IsLinkIndc = source.IsLinkIndc; + this.LandscapeIndc = source.LandscapeIndc; + this.LinkedFileId = source.LinkedFileId; + this.LogId = source.LogId; + this.OrderKey = source.OrderKey; + this.OrgFileName = source.OrgFileName; + this.OwerId = source.OwerId; + this.RevisionNo = source.RevisionNo; + this.TranscodeIndc = source.TranscodeIndc; + this.UpdatedBy = source.UpdatedBy; + this.UpdatedDatetime = source.UpdatedDatetime; + + if (includeSystemFields) + { + this.CreatedBy = source.CreatedBy; + this.CreatedDatetime = source.CreatedDatetime; + this.UpdatedBy = source.UpdatedBy; + this.UpdatedDatetime = source.UpdatedDatetime; + } + } + + public override string GetSelectFrom() + { + if (ProviderName.Contains("MySql")) + { + return GetSelectFromByMySql(); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectFromByBySqlServer(); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + public string GetSelectFromByMySql() + { + return $" select {DB_NAME_FIELDS} from { DB_NAME_DMS_FILE_DELETE_LOG} with(nolock) "; + } + public string GetSelectFromByBySqlServer() + { + return $" select {DB_NAME_FIELDS} from { DB_NAME_DMS_FILE_DELETE_LOG} "; + } + + public override string GetSelectCountFrom(string sqlWhere) + { + if (ProviderName.Contains("MySql")) + { + return GetSelectCountFromByMySql(sqlWhere); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectCountFromBySqlServer(sqlWhere); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + + public string GetSelectCountFromByMySql(string sqlWhere) + { + return $" select count(*) from { DB_NAME_DMS_FILE_DELETE_LOG} where 1=1 {sqlWhere}"; + } + public string GetSelectCountFromBySqlServer(string sqlWhere) + { + return $" select count(*) from { DB_NAME_DMS_FILE_DELETE_LOG} with(nolock) where 1=1 {sqlWhere}"; + } + + public override string GetSelectTopFrom(int limit, int start, string orderby, string orderbytag, string sqlWhere) + { + if (ProviderName.Contains("MySql")) + { + return GetSelectTopFromByMySql(limit, start, orderby, orderbytag, sqlWhere); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectTopFromBySqlServer(limit, start, orderby, orderbytag, sqlWhere); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + + public string GetSelectTopFromByMySql(int limit, int start,string orderby,string orderbytag, string sqlWhere) + { + if (string.IsNullOrEmpty(orderbytag) || orderbytag.Trim() != "desc") orderbytag = "asc"; + if (string.IsNullOrEmpty(orderby) || !DB_NAME_FIELDS.Contains(orderby)) orderby = DB_LOG_ID ; + int offset = limit * (start - 1); + return $" select {DB_NAME_FIELDS} from (select {DB_NAME_FIELDS} ,row_number() over(order by {orderby} {orderbytag}) as num from { DB_NAME_DMS_FILE_DELETE_LOG} where 1=1 {sqlWhere} ) a where num> {offset} LIMIT {limit} "; + } + + public string GetSelectTopFromBySqlServer(int limit, int start,string orderby,string orderbytag, string sqlWhere) + { + if (string.IsNullOrEmpty(orderbytag) || orderbytag.Trim() != "desc") orderbytag = "asc"; + if (string.IsNullOrEmpty(orderby) || !DB_NAME_FIELDS.Contains(orderby)) orderby = DB_LOG_ID ; + string top = limit > 0 ? $"top {limit}" : ""; + return $" select {top} {DB_NAME_FIELDS} from (select {DB_NAME_FIELDS} ,row_number() over(order by {orderby} {orderbytag}) as num from { DB_NAME_DMS_FILE_DELETE_LOG} with(nolock) where 1=1 {sqlWhere} ) a where num> {limit * (start - 1)}"; + } + + public DmsFileDeleteLogEntity Clone() + { + DmsFileDeleteLogEntity result = new DmsFileDeleteLogEntity(); + result.CopyFrom(this); + + return result; + } + + } +} diff --git a/CloudBuilder/CloudBuilder.Master/Entity/DmsFileEntity.auto.cs b/CloudBuilder/CloudBuilder.Master/Entity/DmsFileEntity.auto.cs new file mode 100644 index 0000000..d7a39b4 --- /dev/null +++ b/CloudBuilder/CloudBuilder.Master/Entity/DmsFileEntity.auto.cs @@ -0,0 +1,249 @@ + +using CloudBuilder.Core.Authorization; +using CloudBuilder.Core.DatabaseAccessor.Entity; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +namespace CloudBuilder.Master.Entity + { + [TypeScript] + [Table("dms_file")] + public class DmsFileEntity : ViewEntityBase + { + + public DmsFileEntity() + { + } + + [Column("allow_delete_indc")] + public string AllowDeleteIndc { get; set; } + [Column("allow_rename_indc")] + public string AllowRenameIndc { get; set; } + [Column("created_by")] + public string CreatedBy { get; set; } + [Column("created_datetime")] + public DateTime CreatedDatetime { get; set; } + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + [Column("file_id")] + public long FileId { get; set; } + [Column("file_name")] + public string FileName { get; set; } + [Column("file_path")] + public string FilePath { get; set; } + [Column("file_size")] + public int FileSize { get; set; } + [Column("file_tag")] + public string? FileTag { get; set; } + [Column("file_type")] + public string? FileType { get; set; } + [Column("is_directory_indc")] + public string IsDirectoryIndc { get; set; } + [Column("is_link_indc")] + public string IsLinkIndc { get; set; } + [Column("landscape_indc")] + public string? LandscapeIndc { get; set; } + [Column("linked_file_id")] + public int LinkedFileId { get; set; } + [Column("order_key")] + public string? OrderKey { get; set; } + [Column("org_file_name")] + public string OrgFileName { get; set; } + [Column("ower_id")] + public string OwerId { get; set; } + [Column("revision_no")] + public int RevisionNo { get; set; } + [Column("transcode_indc")] + public string? TranscodeIndc { get; set; } + [Column("updated_by")] + public string UpdatedBy { get; set; } + [Column("updated_datetime")] + public DateTime UpdatedDatetime { get; set; } + + public const string ALLOW_DELETE_INDC = "AllowDeleteIndc"; + public const string ALLOW_RENAME_INDC = "AllowRenameIndc"; + public const string CREATED_BY = "CreatedBy"; + public const string CREATED_DATETIME = "CreatedDatetime"; + public const string FILE_ID = "FileId"; + public const string FILE_NAME = "FileName"; + public const string FILE_PATH = "FilePath"; + public const string FILE_SIZE = "FileSize"; + public const string FILE_TAG = "FileTag"; + public const string FILE_TYPE = "FileType"; + public const string IS_DIRECTORY_INDC = "IsDirectoryIndc"; + public const string IS_LINK_INDC = "IsLinkIndc"; + public const string LANDSCAPE_INDC = "LandscapeIndc"; + public const string LINKED_FILE_ID = "LinkedFileId"; + public const string ORDER_KEY = "OrderKey"; + public const string ORG_FILE_NAME = "OrgFileName"; + public const string OWER_ID = "OwerId"; + public const string REVISION_NO = "RevisionNo"; + public const string TRANSCODE_INDC = "TranscodeIndc"; + public const string UPDATED_BY = "UpdatedBy"; + public const string UPDATED_DATETIME = "UpdatedDatetime"; + + public const string DB_NAME_DMS_FILE = "dms_file"; + public const string DB_NAME_FIELDS="allow_delete_indc,allow_rename_indc,created_by,created_datetime,file_id,file_name,file_path,file_size,file_tag,file_type,is_directory_indc,is_link_indc,landscape_indc,linked_file_id,order_key,org_file_name,ower_id,revision_no,transcode_indc,updated_by,updated_datetime"; + + public const string DB_ALLOW_DELETE_INDC = "allow_delete_indc"; + public const string DB_ALLOW_RENAME_INDC = "allow_rename_indc"; + public const string DB_CREATED_BY = "created_by"; + public const string DB_CREATED_DATETIME = "created_datetime"; + public const string DB_FILE_ID = "file_id"; + public const string DB_FILE_NAME = "file_name"; + public const string DB_FILE_PATH = "file_path"; + public const string DB_FILE_SIZE = "file_size"; + public const string DB_FILE_TAG = "file_tag"; + public const string DB_FILE_TYPE = "file_type"; + public const string DB_IS_DIRECTORY_INDC = "is_directory_indc"; + public const string DB_IS_LINK_INDC = "is_link_indc"; + public const string DB_LANDSCAPE_INDC = "landscape_indc"; + public const string DB_LINKED_FILE_ID = "linked_file_id"; + public const string DB_ORDER_KEY = "order_key"; + public const string DB_ORG_FILE_NAME = "org_file_name"; + public const string DB_OWER_ID = "ower_id"; + public const string DB_REVISION_NO = "revision_no"; + public const string DB_TRANSCODE_INDC = "transcode_indc"; + public const string DB_UPDATED_BY = "updated_by"; + public const string DB_UPDATED_DATETIME = "updated_datetime"; + + private string ProviderName { get; set; } + + public static DmsFileEntity GetInstance(string providerName) + { + return new DmsFileEntity() { ProviderName = providerName }; + } + + public virtual void CopyFrom(DmsFileEntity source) + { + CopyFrom(source, true); + } + + public virtual void CopyFrom(DmsFileEntity source, bool includeSystemFields) + { + if (source == null) + { + throw new NullReferenceException("Source entity is null."); + } + + this.AllowDeleteIndc = source.AllowDeleteIndc; + this.AllowRenameIndc = source.AllowRenameIndc; + this.CreatedBy = source.CreatedBy; + this.CreatedDatetime = source.CreatedDatetime; + this.FileId = source.FileId; + this.FileName = source.FileName; + this.FilePath = source.FilePath; + this.FileSize = source.FileSize; + this.FileTag = source.FileTag; + this.FileType = source.FileType; + this.IsDirectoryIndc = source.IsDirectoryIndc; + this.IsLinkIndc = source.IsLinkIndc; + this.LandscapeIndc = source.LandscapeIndc; + this.LinkedFileId = source.LinkedFileId; + this.OrderKey = source.OrderKey; + this.OrgFileName = source.OrgFileName; + this.OwerId = source.OwerId; + this.RevisionNo = source.RevisionNo; + this.TranscodeIndc = source.TranscodeIndc; + this.UpdatedBy = source.UpdatedBy; + this.UpdatedDatetime = source.UpdatedDatetime; + + if (includeSystemFields) + { + this.CreatedBy = source.CreatedBy; + this.CreatedDatetime = source.CreatedDatetime; + this.UpdatedBy = source.UpdatedBy; + this.UpdatedDatetime = source.UpdatedDatetime; + } + } + + public override string GetSelectFrom() + { + if (ProviderName.Contains("MySql")) + { + return GetSelectFromByMySql(); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectFromByBySqlServer(); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + public string GetSelectFromByMySql() + { + return $" select {DB_NAME_FIELDS} from { DB_NAME_DMS_FILE} with(nolock) "; + } + public string GetSelectFromByBySqlServer() + { + return $" select {DB_NAME_FIELDS} from { DB_NAME_DMS_FILE} "; + } + + public override string GetSelectCountFrom(string sqlWhere) + { + if (ProviderName.Contains("MySql")) + { + return GetSelectCountFromByMySql(sqlWhere); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectCountFromBySqlServer(sqlWhere); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + + public string GetSelectCountFromByMySql(string sqlWhere) + { + return $" select count(*) from { DB_NAME_DMS_FILE} where 1=1 {sqlWhere}"; + } + public string GetSelectCountFromBySqlServer(string sqlWhere) + { + return $" select count(*) from { DB_NAME_DMS_FILE} with(nolock) where 1=1 {sqlWhere}"; + } + + public override string GetSelectTopFrom(int limit, int start, string orderby, string orderbytag, string sqlWhere) + { + if (ProviderName.Contains("MySql")) + { + return GetSelectTopFromByMySql(limit, start, orderby, orderbytag, sqlWhere); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectTopFromBySqlServer(limit, start, orderby, orderbytag, sqlWhere); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + + public string GetSelectTopFromByMySql(int limit, int start,string orderby,string orderbytag, string sqlWhere) + { + if (string.IsNullOrEmpty(orderbytag) || orderbytag.Trim() != "desc") orderbytag = "asc"; + if (string.IsNullOrEmpty(orderby) || !DB_NAME_FIELDS.Contains(orderby)) orderby = DB_FILE_ID ; + int offset = limit * (start - 1); + return $" select {DB_NAME_FIELDS} from (select {DB_NAME_FIELDS} ,row_number() over(order by {orderby} {orderbytag}) as num from { DB_NAME_DMS_FILE} where 1=1 {sqlWhere} ) a where num> {offset} LIMIT {limit} "; + } + + public string GetSelectTopFromBySqlServer(int limit, int start,string orderby,string orderbytag, string sqlWhere) + { + if (string.IsNullOrEmpty(orderbytag) || orderbytag.Trim() != "desc") orderbytag = "asc"; + if (string.IsNullOrEmpty(orderby) || !DB_NAME_FIELDS.Contains(orderby)) orderby = DB_FILE_ID ; + string top = limit > 0 ? $"top {limit}" : ""; + return $" select {top} {DB_NAME_FIELDS} from (select {DB_NAME_FIELDS} ,row_number() over(order by {orderby} {orderbytag}) as num from { DB_NAME_DMS_FILE} with(nolock) where 1=1 {sqlWhere} ) a where num> {limit * (start - 1)}"; + } + + public DmsFileEntity Clone() + { + DmsFileEntity result = new DmsFileEntity(); + result.CopyFrom(this); + + return result; + } + + } +} diff --git a/CloudBuilder/CloudBuilder.Master/Entity/DmsFileUploadDeleteLogEntity.auto.cs b/CloudBuilder/CloudBuilder.Master/Entity/DmsFileUploadDeleteLogEntity.auto.cs new file mode 100644 index 0000000..1920af2 --- /dev/null +++ b/CloudBuilder/CloudBuilder.Master/Entity/DmsFileUploadDeleteLogEntity.auto.cs @@ -0,0 +1,183 @@ + +using CloudBuilder.Core.Authorization; +using CloudBuilder.Core.DatabaseAccessor.Entity; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +namespace CloudBuilder.Master.Entity + { + [TypeScript] + [Table("dms_file_upload_delete_log")] + public class DmsFileUploadDeleteLogEntity : ViewEntityBase + { + + public DmsFileUploadDeleteLogEntity() + { + } + + [Column("created_by")] + public string CreatedBy { get; set; } + [Column("created_datetime")] + public DateTime CreatedDatetime { get; set; } + [Column("file_category")] + public string FileCategory { get; set; } + [Key] + [Column("file_id")] + public long FileId { get; set; } + [Column("org_file_name")] + public string OrgFileName { get; set; } + [Column("updated_by")] + public string UpdatedBy { get; set; } + [Column("updated_datetime")] + public DateTime UpdatedDatetime { get; set; } + [Column("upload_name")] + public string UploadName { get; set; } + + public const string CREATED_BY = "CreatedBy"; + public const string CREATED_DATETIME = "CreatedDatetime"; + public const string FILE_CATEGORY = "FileCategory"; + public const string FILE_ID = "FileId"; + public const string ORG_FILE_NAME = "OrgFileName"; + public const string UPDATED_BY = "UpdatedBy"; + public const string UPDATED_DATETIME = "UpdatedDatetime"; + public const string UPLOAD_NAME = "UploadName"; + + public const string DB_NAME_DMS_FILE_UPLOAD_DELETE_LOG = "dms_file_upload_delete_log"; + public const string DB_NAME_FIELDS="created_by,created_datetime,file_category,file_id,org_file_name,updated_by,updated_datetime,upload_name"; + + public const string DB_CREATED_BY = "created_by"; + public const string DB_CREATED_DATETIME = "created_datetime"; + public const string DB_FILE_CATEGORY = "file_category"; + public const string DB_FILE_ID = "file_id"; + public const string DB_ORG_FILE_NAME = "org_file_name"; + public const string DB_UPDATED_BY = "updated_by"; + public const string DB_UPDATED_DATETIME = "updated_datetime"; + public const string DB_UPLOAD_NAME = "upload_name"; + + private string ProviderName { get; set; } + + public static DmsFileUploadDeleteLogEntity GetInstance(string providerName) + { + return new DmsFileUploadDeleteLogEntity() { ProviderName = providerName }; + } + + public virtual void CopyFrom(DmsFileUploadDeleteLogEntity source) + { + CopyFrom(source, true); + } + + public virtual void CopyFrom(DmsFileUploadDeleteLogEntity source, bool includeSystemFields) + { + if (source == null) + { + throw new NullReferenceException("Source entity is null."); + } + + this.CreatedBy = source.CreatedBy; + this.CreatedDatetime = source.CreatedDatetime; + this.FileCategory = source.FileCategory; + this.FileId = source.FileId; + this.OrgFileName = source.OrgFileName; + this.UpdatedBy = source.UpdatedBy; + this.UpdatedDatetime = source.UpdatedDatetime; + this.UploadName = source.UploadName; + + if (includeSystemFields) + { + this.CreatedBy = source.CreatedBy; + this.CreatedDatetime = source.CreatedDatetime; + this.UpdatedBy = source.UpdatedBy; + this.UpdatedDatetime = source.UpdatedDatetime; + } + } + + public override string GetSelectFrom() + { + if (ProviderName.Contains("MySql")) + { + return GetSelectFromByMySql(); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectFromByBySqlServer(); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + public string GetSelectFromByMySql() + { + return $" select {DB_NAME_FIELDS} from { DB_NAME_DMS_FILE_UPLOAD_DELETE_LOG} with(nolock) "; + } + public string GetSelectFromByBySqlServer() + { + return $" select {DB_NAME_FIELDS} from { DB_NAME_DMS_FILE_UPLOAD_DELETE_LOG} "; + } + + public override string GetSelectCountFrom(string sqlWhere) + { + if (ProviderName.Contains("MySql")) + { + return GetSelectCountFromByMySql(sqlWhere); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectCountFromBySqlServer(sqlWhere); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + + public string GetSelectCountFromByMySql(string sqlWhere) + { + return $" select count(*) from { DB_NAME_DMS_FILE_UPLOAD_DELETE_LOG} where 1=1 {sqlWhere}"; + } + public string GetSelectCountFromBySqlServer(string sqlWhere) + { + return $" select count(*) from { DB_NAME_DMS_FILE_UPLOAD_DELETE_LOG} with(nolock) where 1=1 {sqlWhere}"; + } + + public override string GetSelectTopFrom(int limit, int start, string orderby, string orderbytag, string sqlWhere) + { + if (ProviderName.Contains("MySql")) + { + return GetSelectTopFromByMySql(limit, start, orderby, orderbytag, sqlWhere); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectTopFromBySqlServer(limit, start, orderby, orderbytag, sqlWhere); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + + public string GetSelectTopFromByMySql(int limit, int start,string orderby,string orderbytag, string sqlWhere) + { + if (string.IsNullOrEmpty(orderbytag) || orderbytag.Trim() != "desc") orderbytag = "asc"; + if (string.IsNullOrEmpty(orderby) || !DB_NAME_FIELDS.Contains(orderby)) orderby = DB_FILE_ID ; + int offset = limit * (start - 1); + return $" select {DB_NAME_FIELDS} from (select {DB_NAME_FIELDS} ,row_number() over(order by {orderby} {orderbytag}) as num from { DB_NAME_DMS_FILE_UPLOAD_DELETE_LOG} where 1=1 {sqlWhere} ) a where num> {offset} LIMIT {limit} "; + } + + public string GetSelectTopFromBySqlServer(int limit, int start,string orderby,string orderbytag, string sqlWhere) + { + if (string.IsNullOrEmpty(orderbytag) || orderbytag.Trim() != "desc") orderbytag = "asc"; + if (string.IsNullOrEmpty(orderby) || !DB_NAME_FIELDS.Contains(orderby)) orderby = DB_FILE_ID ; + string top = limit > 0 ? $"top {limit}" : ""; + return $" select {top} {DB_NAME_FIELDS} from (select {DB_NAME_FIELDS} ,row_number() over(order by {orderby} {orderbytag}) as num from { DB_NAME_DMS_FILE_UPLOAD_DELETE_LOG} with(nolock) where 1=1 {sqlWhere} ) a where num> {limit * (start - 1)}"; + } + + public DmsFileUploadDeleteLogEntity Clone() + { + DmsFileUploadDeleteLogEntity result = new DmsFileUploadDeleteLogEntity(); + result.CopyFrom(this); + + return result; + } + + } +} diff --git a/CloudBuilder/CloudBuilder.Master/Entity/DmsFileUploadDeleteLogViewEntity.auto.cs b/CloudBuilder/CloudBuilder.Master/Entity/DmsFileUploadDeleteLogViewEntity.auto.cs new file mode 100644 index 0000000..b43a2da --- /dev/null +++ b/CloudBuilder/CloudBuilder.Master/Entity/DmsFileUploadDeleteLogViewEntity.auto.cs @@ -0,0 +1,255 @@ + +using CloudBuilder.Core.Authorization; +using CloudBuilder.Core.DatabaseAccessor.Entity; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +namespace CloudBuilder.Master.Entity + { + [TypeScript] + [Table("dms_file_upload_delete_log_view")] + public class DmsFileUploadDeleteLogViewEntity : ViewEntityBase + { + + public DmsFileUploadDeleteLogViewEntity() + { + } + + [Column("allow_delete_indc")] + public string AllowDeleteIndc { get; set; } + [Column("allow_rename_indc")] + public string AllowRenameIndc { get; set; } + [Column("created_by")] + public string CreatedBy { get; set; } + [Column("created_datetime")] + public DateTime CreatedDatetime { get; set; } + [Column("file_category")] + public string FileCategory { get; set; } + [Column("file_id")] + public long FileId { get; set; } + [Column("file_name")] + public string FileName { get; set; } + [Column("file_path")] + public string FilePath { get; set; } + [Column("file_size")] + public int FileSize { get; set; } + [Column("file_tag")] + public string? FileTag { get; set; } + [Column("file_type")] + public string? FileType { get; set; } + [Column("folder_local_name")] + public string? FolderLocalName { get; set; } + [Column("is_directory_indc")] + public string IsDirectoryIndc { get; set; } + [Column("is_link_indc")] + public string IsLinkIndc { get; set; } + [Column("landscape_indc")] + public string? LandscapeIndc { get; set; } + [Column("linked_file_id")] + public int LinkedFileId { get; set; } + [Column("order_key")] + public string? OrderKey { get; set; } + [Column("org_file_name")] + public string OrgFileName { get; set; } + [Column("ower_id")] + public string OwerId { get; set; } + [Column("revision_no")] + public int RevisionNo { get; set; } + [Column("transcode_indc")] + public string? TranscodeIndc { get; set; } + [Column("upload_name")] + public string UploadName { get; set; } + [Column("url")] + public string Url { get; set; } + + public const string ALLOW_DELETE_INDC = "AllowDeleteIndc"; + public const string ALLOW_RENAME_INDC = "AllowRenameIndc"; + public const string CREATED_BY = "CreatedBy"; + public const string CREATED_DATETIME = "CreatedDatetime"; + public const string FILE_CATEGORY = "FileCategory"; + public const string FILE_ID = "FileId"; + public const string FILE_NAME = "FileName"; + public const string FILE_PATH = "FilePath"; + public const string FILE_SIZE = "FileSize"; + public const string FILE_TAG = "FileTag"; + public const string FILE_TYPE = "FileType"; + public const string FOLDER_LOCAL_NAME = "FolderLocalName"; + public const string IS_DIRECTORY_INDC = "IsDirectoryIndc"; + public const string IS_LINK_INDC = "IsLinkIndc"; + public const string LANDSCAPE_INDC = "LandscapeIndc"; + public const string LINKED_FILE_ID = "LinkedFileId"; + public const string ORDER_KEY = "OrderKey"; + public const string ORG_FILE_NAME = "OrgFileName"; + public const string OWER_ID = "OwerId"; + public const string REVISION_NO = "RevisionNo"; + public const string TRANSCODE_INDC = "TranscodeIndc"; + public const string UPLOAD_NAME = "UploadName"; + public const string URL = "Url"; + + public const string DB_NAME_DMS_FILE_UPLOAD_DELETE_LOG_VIEW = "dms_file_upload_delete_log_view"; + public const string DB_NAME_FIELDS="allow_delete_indc,allow_rename_indc,created_by,created_datetime,file_category,file_id,file_name,file_path,file_size,file_tag,file_type,folder_local_name,is_directory_indc,is_link_indc,landscape_indc,linked_file_id,order_key,org_file_name,ower_id,revision_no,transcode_indc,upload_name,url"; + + public const string DB_ALLOW_DELETE_INDC = "allow_delete_indc"; + public const string DB_ALLOW_RENAME_INDC = "allow_rename_indc"; + public const string DB_CREATED_BY = "created_by"; + public const string DB_CREATED_DATETIME = "created_datetime"; + public const string DB_FILE_CATEGORY = "file_category"; + public const string DB_FILE_ID = "file_id"; + public const string DB_FILE_NAME = "file_name"; + public const string DB_FILE_PATH = "file_path"; + public const string DB_FILE_SIZE = "file_size"; + public const string DB_FILE_TAG = "file_tag"; + public const string DB_FILE_TYPE = "file_type"; + public const string DB_FOLDER_LOCAL_NAME = "folder_local_name"; + public const string DB_IS_DIRECTORY_INDC = "is_directory_indc"; + public const string DB_IS_LINK_INDC = "is_link_indc"; + public const string DB_LANDSCAPE_INDC = "landscape_indc"; + public const string DB_LINKED_FILE_ID = "linked_file_id"; + public const string DB_ORDER_KEY = "order_key"; + public const string DB_ORG_FILE_NAME = "org_file_name"; + public const string DB_OWER_ID = "ower_id"; + public const string DB_REVISION_NO = "revision_no"; + public const string DB_TRANSCODE_INDC = "transcode_indc"; + public const string DB_UPLOAD_NAME = "upload_name"; + public const string DB_URL = "url"; + + private string ProviderName { get; set; } + + public static DmsFileUploadDeleteLogViewEntity GetInstance(string providerName) + { + return new DmsFileUploadDeleteLogViewEntity() { ProviderName = providerName }; + } + + public virtual void CopyFrom(DmsFileUploadDeleteLogViewEntity source) + { + CopyFrom(source, true); + } + + public virtual void CopyFrom(DmsFileUploadDeleteLogViewEntity source, bool includeSystemFields) + { + if (source == null) + { + throw new NullReferenceException("Source entity is null."); + } + + this.AllowDeleteIndc = source.AllowDeleteIndc; + this.AllowRenameIndc = source.AllowRenameIndc; + this.CreatedBy = source.CreatedBy; + this.CreatedDatetime = source.CreatedDatetime; + this.FileCategory = source.FileCategory; + this.FileId = source.FileId; + this.FileName = source.FileName; + this.FilePath = source.FilePath; + this.FileSize = source.FileSize; + this.FileTag = source.FileTag; + this.FileType = source.FileType; + this.FolderLocalName = source.FolderLocalName; + this.IsDirectoryIndc = source.IsDirectoryIndc; + this.IsLinkIndc = source.IsLinkIndc; + this.LandscapeIndc = source.LandscapeIndc; + this.LinkedFileId = source.LinkedFileId; + this.OrderKey = source.OrderKey; + this.OrgFileName = source.OrgFileName; + this.OwerId = source.OwerId; + this.RevisionNo = source.RevisionNo; + this.TranscodeIndc = source.TranscodeIndc; + this.UploadName = source.UploadName; + this.Url = source.Url; + + if (includeSystemFields) + { + this.CreatedBy = source.CreatedBy; + this.CreatedDatetime = source.CreatedDatetime; + } + } + + public override string GetSelectFrom() + { + if (ProviderName.Contains("MySql")) + { + return GetSelectFromByMySql(); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectFromByBySqlServer(); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + public string GetSelectFromByMySql() + { + return $" select {DB_NAME_FIELDS} from { DB_NAME_DMS_FILE_UPLOAD_DELETE_LOG_VIEW} with(nolock) "; + } + public string GetSelectFromByBySqlServer() + { + return $" select {DB_NAME_FIELDS} from { DB_NAME_DMS_FILE_UPLOAD_DELETE_LOG_VIEW} "; + } + + public override string GetSelectCountFrom(string sqlWhere) + { + if (ProviderName.Contains("MySql")) + { + return GetSelectCountFromByMySql(sqlWhere); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectCountFromBySqlServer(sqlWhere); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + + public string GetSelectCountFromByMySql(string sqlWhere) + { + return $" select count(*) from { DB_NAME_DMS_FILE_UPLOAD_DELETE_LOG_VIEW} where 1=1 {sqlWhere}"; + } + public string GetSelectCountFromBySqlServer(string sqlWhere) + { + return $" select count(*) from { DB_NAME_DMS_FILE_UPLOAD_DELETE_LOG_VIEW} with(nolock) where 1=1 {sqlWhere}"; + } + + public override string GetSelectTopFrom(int limit, int start, string orderby, string orderbytag, string sqlWhere) + { + if (ProviderName.Contains("MySql")) + { + return GetSelectTopFromByMySql(limit, start, orderby, orderbytag, sqlWhere); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectTopFromBySqlServer(limit, start, orderby, orderbytag, sqlWhere); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + + public string GetSelectTopFromByMySql(int limit, int start,string orderby,string orderbytag, string sqlWhere) + { + if (string.IsNullOrEmpty(orderbytag) || orderbytag.Trim() != "desc") orderbytag = "asc"; + + if (string.IsNullOrEmpty(orderby) || !DB_NAME_FIELDS.Contains(orderby)) orderby = DB_ALLOW_DELETE_INDC ; int offset = limit * (start - 1); + return $" select {DB_NAME_FIELDS} from (select {DB_NAME_FIELDS} ,row_number() over(order by {orderby} {orderbytag}) as num from { DB_NAME_DMS_FILE_UPLOAD_DELETE_LOG_VIEW} where 1=1 {sqlWhere} ) a where num> {offset} LIMIT {limit} "; + } + + public string GetSelectTopFromBySqlServer(int limit, int start,string orderby,string orderbytag, string sqlWhere) + { + if (string.IsNullOrEmpty(orderbytag) || orderbytag.Trim() != "desc") orderbytag = "asc"; + + if (string.IsNullOrEmpty(orderby) || !DB_NAME_FIELDS.Contains(orderby)) orderby = DB_ALLOW_DELETE_INDC ; string top = limit > 0 ? $"top {limit}" : ""; + return $" select {top} {DB_NAME_FIELDS} from (select {DB_NAME_FIELDS} ,row_number() over(order by {orderby} {orderbytag}) as num from { DB_NAME_DMS_FILE_UPLOAD_DELETE_LOG_VIEW} with(nolock) where 1=1 {sqlWhere} ) a where num> {limit * (start - 1)}"; + } + + public DmsFileUploadDeleteLogViewEntity Clone() + { + DmsFileUploadDeleteLogViewEntity result = new DmsFileUploadDeleteLogViewEntity(); + result.CopyFrom(this); + + return result; + } + + } +} diff --git a/CloudBuilder/CloudBuilder.Master/Entity/DmsFileUploadEntity.auto.cs b/CloudBuilder/CloudBuilder.Master/Entity/DmsFileUploadEntity.auto.cs new file mode 100644 index 0000000..7c94211 --- /dev/null +++ b/CloudBuilder/CloudBuilder.Master/Entity/DmsFileUploadEntity.auto.cs @@ -0,0 +1,183 @@ + +using CloudBuilder.Core.Authorization; +using CloudBuilder.Core.DatabaseAccessor.Entity; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +namespace CloudBuilder.Master.Entity + { + [TypeScript] + [Table("dms_file_upload")] + public class DmsFileUploadEntity : ViewEntityBase + { + + public DmsFileUploadEntity() + { + } + + [Column("created_by")] + public string CreatedBy { get; set; } + [Column("created_datetime")] + public DateTime CreatedDatetime { get; set; } + [Column("file_category")] + public string FileCategory { get; set; } + [Key] + [Column("file_id")] + public long FileId { get; set; } + [Column("org_file_name")] + public string OrgFileName { get; set; } + [Column("updated_by")] + public string UpdatedBy { get; set; } + [Column("updated_datetime")] + public DateTime UpdatedDatetime { get; set; } + [Column("upload_name")] + public string UploadName { get; set; } + + public const string CREATED_BY = "CreatedBy"; + public const string CREATED_DATETIME = "CreatedDatetime"; + public const string FILE_CATEGORY = "FileCategory"; + public const string FILE_ID = "FileId"; + public const string ORG_FILE_NAME = "OrgFileName"; + public const string UPDATED_BY = "UpdatedBy"; + public const string UPDATED_DATETIME = "UpdatedDatetime"; + public const string UPLOAD_NAME = "UploadName"; + + public const string DB_NAME_DMS_FILE_UPLOAD = "dms_file_upload"; + public const string DB_NAME_FIELDS="created_by,created_datetime,file_category,file_id,org_file_name,updated_by,updated_datetime,upload_name"; + + public const string DB_CREATED_BY = "created_by"; + public const string DB_CREATED_DATETIME = "created_datetime"; + public const string DB_FILE_CATEGORY = "file_category"; + public const string DB_FILE_ID = "file_id"; + public const string DB_ORG_FILE_NAME = "org_file_name"; + public const string DB_UPDATED_BY = "updated_by"; + public const string DB_UPDATED_DATETIME = "updated_datetime"; + public const string DB_UPLOAD_NAME = "upload_name"; + + private string ProviderName { get; set; } + + public static DmsFileUploadEntity GetInstance(string providerName) + { + return new DmsFileUploadEntity() { ProviderName = providerName }; + } + + public virtual void CopyFrom(DmsFileUploadEntity source) + { + CopyFrom(source, true); + } + + public virtual void CopyFrom(DmsFileUploadEntity source, bool includeSystemFields) + { + if (source == null) + { + throw new NullReferenceException("Source entity is null."); + } + + this.CreatedBy = source.CreatedBy; + this.CreatedDatetime = source.CreatedDatetime; + this.FileCategory = source.FileCategory; + this.FileId = source.FileId; + this.OrgFileName = source.OrgFileName; + this.UpdatedBy = source.UpdatedBy; + this.UpdatedDatetime = source.UpdatedDatetime; + this.UploadName = source.UploadName; + + if (includeSystemFields) + { + this.CreatedBy = source.CreatedBy; + this.CreatedDatetime = source.CreatedDatetime; + this.UpdatedBy = source.UpdatedBy; + this.UpdatedDatetime = source.UpdatedDatetime; + } + } + + public override string GetSelectFrom() + { + if (ProviderName.Contains("MySql")) + { + return GetSelectFromByMySql(); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectFromByBySqlServer(); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + public string GetSelectFromByMySql() + { + return $" select {DB_NAME_FIELDS} from { DB_NAME_DMS_FILE_UPLOAD} with(nolock) "; + } + public string GetSelectFromByBySqlServer() + { + return $" select {DB_NAME_FIELDS} from { DB_NAME_DMS_FILE_UPLOAD} "; + } + + public override string GetSelectCountFrom(string sqlWhere) + { + if (ProviderName.Contains("MySql")) + { + return GetSelectCountFromByMySql(sqlWhere); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectCountFromBySqlServer(sqlWhere); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + + public string GetSelectCountFromByMySql(string sqlWhere) + { + return $" select count(*) from { DB_NAME_DMS_FILE_UPLOAD} where 1=1 {sqlWhere}"; + } + public string GetSelectCountFromBySqlServer(string sqlWhere) + { + return $" select count(*) from { DB_NAME_DMS_FILE_UPLOAD} with(nolock) where 1=1 {sqlWhere}"; + } + + public override string GetSelectTopFrom(int limit, int start, string orderby, string orderbytag, string sqlWhere) + { + if (ProviderName.Contains("MySql")) + { + return GetSelectTopFromByMySql(limit, start, orderby, orderbytag, sqlWhere); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectTopFromBySqlServer(limit, start, orderby, orderbytag, sqlWhere); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + + public string GetSelectTopFromByMySql(int limit, int start,string orderby,string orderbytag, string sqlWhere) + { + if (string.IsNullOrEmpty(orderbytag) || orderbytag.Trim() != "desc") orderbytag = "asc"; + if (string.IsNullOrEmpty(orderby) || !DB_NAME_FIELDS.Contains(orderby)) orderby = DB_FILE_ID ; + int offset = limit * (start - 1); + return $" select {DB_NAME_FIELDS} from (select {DB_NAME_FIELDS} ,row_number() over(order by {orderby} {orderbytag}) as num from { DB_NAME_DMS_FILE_UPLOAD} where 1=1 {sqlWhere} ) a where num> {offset} LIMIT {limit} "; + } + + public string GetSelectTopFromBySqlServer(int limit, int start,string orderby,string orderbytag, string sqlWhere) + { + if (string.IsNullOrEmpty(orderbytag) || orderbytag.Trim() != "desc") orderbytag = "asc"; + if (string.IsNullOrEmpty(orderby) || !DB_NAME_FIELDS.Contains(orderby)) orderby = DB_FILE_ID ; + string top = limit > 0 ? $"top {limit}" : ""; + return $" select {top} {DB_NAME_FIELDS} from (select {DB_NAME_FIELDS} ,row_number() over(order by {orderby} {orderbytag}) as num from { DB_NAME_DMS_FILE_UPLOAD} with(nolock) where 1=1 {sqlWhere} ) a where num> {limit * (start - 1)}"; + } + + public DmsFileUploadEntity Clone() + { + DmsFileUploadEntity result = new DmsFileUploadEntity(); + result.CopyFrom(this); + + return result; + } + + } +} diff --git a/CloudBuilder/CloudBuilder.Master/Entity/DmsFileUploadViewEntity.auto.cs b/CloudBuilder/CloudBuilder.Master/Entity/DmsFileUploadViewEntity.auto.cs new file mode 100644 index 0000000..269b5ee --- /dev/null +++ b/CloudBuilder/CloudBuilder.Master/Entity/DmsFileUploadViewEntity.auto.cs @@ -0,0 +1,255 @@ + +using CloudBuilder.Core.Authorization; +using CloudBuilder.Core.DatabaseAccessor.Entity; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +namespace CloudBuilder.Master.Entity + { + [TypeScript] + [Table("dms_file_upload_view")] + public class DmsFileUploadViewEntity : ViewEntityBase + { + + public DmsFileUploadViewEntity() + { + } + + [Column("allow_delete_indc")] + public string AllowDeleteIndc { get; set; } + [Column("allow_rename_indc")] + public string AllowRenameIndc { get; set; } + [Column("created_by")] + public string CreatedBy { get; set; } + [Column("created_datetime")] + public DateTime CreatedDatetime { get; set; } + [Column("file_category")] + public string FileCategory { get; set; } + [Column("file_id")] + public long FileId { get; set; } + [Column("file_name")] + public string FileName { get; set; } + [Column("file_path")] + public string FilePath { get; set; } + [Column("file_size")] + public int FileSize { get; set; } + [Column("file_tag")] + public string? FileTag { get; set; } + [Column("file_type")] + public string? FileType { get; set; } + [Column("folder_local_name")] + public string? FolderLocalName { get; set; } + [Column("is_directory_indc")] + public string IsDirectoryIndc { get; set; } + [Column("is_link_indc")] + public string IsLinkIndc { get; set; } + [Column("landscape_indc")] + public string? LandscapeIndc { get; set; } + [Column("linked_file_id")] + public int LinkedFileId { get; set; } + [Column("order_key")] + public string? OrderKey { get; set; } + [Column("org_file_name")] + public string OrgFileName { get; set; } + [Column("ower_id")] + public string OwerId { get; set; } + [Column("revision_no")] + public int RevisionNo { get; set; } + [Column("transcode_indc")] + public string? TranscodeIndc { get; set; } + [Column("upload_name")] + public string UploadName { get; set; } + [Column("url")] + public string Url { get; set; } + + public const string ALLOW_DELETE_INDC = "AllowDeleteIndc"; + public const string ALLOW_RENAME_INDC = "AllowRenameIndc"; + public const string CREATED_BY = "CreatedBy"; + public const string CREATED_DATETIME = "CreatedDatetime"; + public const string FILE_CATEGORY = "FileCategory"; + public const string FILE_ID = "FileId"; + public const string FILE_NAME = "FileName"; + public const string FILE_PATH = "FilePath"; + public const string FILE_SIZE = "FileSize"; + public const string FILE_TAG = "FileTag"; + public const string FILE_TYPE = "FileType"; + public const string FOLDER_LOCAL_NAME = "FolderLocalName"; + public const string IS_DIRECTORY_INDC = "IsDirectoryIndc"; + public const string IS_LINK_INDC = "IsLinkIndc"; + public const string LANDSCAPE_INDC = "LandscapeIndc"; + public const string LINKED_FILE_ID = "LinkedFileId"; + public const string ORDER_KEY = "OrderKey"; + public const string ORG_FILE_NAME = "OrgFileName"; + public const string OWER_ID = "OwerId"; + public const string REVISION_NO = "RevisionNo"; + public const string TRANSCODE_INDC = "TranscodeIndc"; + public const string UPLOAD_NAME = "UploadName"; + public const string URL = "Url"; + + public const string DB_NAME_DMS_FILE_UPLOAD_VIEW = "dms_file_upload_view"; + public const string DB_NAME_FIELDS="allow_delete_indc,allow_rename_indc,created_by,created_datetime,file_category,file_id,file_name,file_path,file_size,file_tag,file_type,folder_local_name,is_directory_indc,is_link_indc,landscape_indc,linked_file_id,order_key,org_file_name,ower_id,revision_no,transcode_indc,upload_name,url"; + + public const string DB_ALLOW_DELETE_INDC = "allow_delete_indc"; + public const string DB_ALLOW_RENAME_INDC = "allow_rename_indc"; + public const string DB_CREATED_BY = "created_by"; + public const string DB_CREATED_DATETIME = "created_datetime"; + public const string DB_FILE_CATEGORY = "file_category"; + public const string DB_FILE_ID = "file_id"; + public const string DB_FILE_NAME = "file_name"; + public const string DB_FILE_PATH = "file_path"; + public const string DB_FILE_SIZE = "file_size"; + public const string DB_FILE_TAG = "file_tag"; + public const string DB_FILE_TYPE = "file_type"; + public const string DB_FOLDER_LOCAL_NAME = "folder_local_name"; + public const string DB_IS_DIRECTORY_INDC = "is_directory_indc"; + public const string DB_IS_LINK_INDC = "is_link_indc"; + public const string DB_LANDSCAPE_INDC = "landscape_indc"; + public const string DB_LINKED_FILE_ID = "linked_file_id"; + public const string DB_ORDER_KEY = "order_key"; + public const string DB_ORG_FILE_NAME = "org_file_name"; + public const string DB_OWER_ID = "ower_id"; + public const string DB_REVISION_NO = "revision_no"; + public const string DB_TRANSCODE_INDC = "transcode_indc"; + public const string DB_UPLOAD_NAME = "upload_name"; + public const string DB_URL = "url"; + + private string ProviderName { get; set; } + + public static DmsFileUploadViewEntity GetInstance(string providerName) + { + return new DmsFileUploadViewEntity() { ProviderName = providerName }; + } + + public virtual void CopyFrom(DmsFileUploadViewEntity source) + { + CopyFrom(source, true); + } + + public virtual void CopyFrom(DmsFileUploadViewEntity source, bool includeSystemFields) + { + if (source == null) + { + throw new NullReferenceException("Source entity is null."); + } + + this.AllowDeleteIndc = source.AllowDeleteIndc; + this.AllowRenameIndc = source.AllowRenameIndc; + this.CreatedBy = source.CreatedBy; + this.CreatedDatetime = source.CreatedDatetime; + this.FileCategory = source.FileCategory; + this.FileId = source.FileId; + this.FileName = source.FileName; + this.FilePath = source.FilePath; + this.FileSize = source.FileSize; + this.FileTag = source.FileTag; + this.FileType = source.FileType; + this.FolderLocalName = source.FolderLocalName; + this.IsDirectoryIndc = source.IsDirectoryIndc; + this.IsLinkIndc = source.IsLinkIndc; + this.LandscapeIndc = source.LandscapeIndc; + this.LinkedFileId = source.LinkedFileId; + this.OrderKey = source.OrderKey; + this.OrgFileName = source.OrgFileName; + this.OwerId = source.OwerId; + this.RevisionNo = source.RevisionNo; + this.TranscodeIndc = source.TranscodeIndc; + this.UploadName = source.UploadName; + this.Url = source.Url; + + if (includeSystemFields) + { + this.CreatedBy = source.CreatedBy; + this.CreatedDatetime = source.CreatedDatetime; + } + } + + public override string GetSelectFrom() + { + if (ProviderName.Contains("MySql")) + { + return GetSelectFromByMySql(); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectFromByBySqlServer(); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + public string GetSelectFromByMySql() + { + return $" select {DB_NAME_FIELDS} from { DB_NAME_DMS_FILE_UPLOAD_VIEW} with(nolock) "; + } + public string GetSelectFromByBySqlServer() + { + return $" select {DB_NAME_FIELDS} from { DB_NAME_DMS_FILE_UPLOAD_VIEW} "; + } + + public override string GetSelectCountFrom(string sqlWhere) + { + if (ProviderName.Contains("MySql")) + { + return GetSelectCountFromByMySql(sqlWhere); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectCountFromBySqlServer(sqlWhere); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + + public string GetSelectCountFromByMySql(string sqlWhere) + { + return $" select count(*) from { DB_NAME_DMS_FILE_UPLOAD_VIEW} where 1=1 {sqlWhere}"; + } + public string GetSelectCountFromBySqlServer(string sqlWhere) + { + return $" select count(*) from { DB_NAME_DMS_FILE_UPLOAD_VIEW} with(nolock) where 1=1 {sqlWhere}"; + } + + public override string GetSelectTopFrom(int limit, int start, string orderby, string orderbytag, string sqlWhere) + { + if (ProviderName.Contains("MySql")) + { + return GetSelectTopFromByMySql(limit, start, orderby, orderbytag, sqlWhere); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectTopFromBySqlServer(limit, start, orderby, orderbytag, sqlWhere); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + + public string GetSelectTopFromByMySql(int limit, int start,string orderby,string orderbytag, string sqlWhere) + { + if (string.IsNullOrEmpty(orderbytag) || orderbytag.Trim() != "desc") orderbytag = "asc"; + + if (string.IsNullOrEmpty(orderby) || !DB_NAME_FIELDS.Contains(orderby)) orderby = DB_ALLOW_DELETE_INDC ; int offset = limit * (start - 1); + return $" select {DB_NAME_FIELDS} from (select {DB_NAME_FIELDS} ,row_number() over(order by {orderby} {orderbytag}) as num from { DB_NAME_DMS_FILE_UPLOAD_VIEW} where 1=1 {sqlWhere} ) a where num> {offset} LIMIT {limit} "; + } + + public string GetSelectTopFromBySqlServer(int limit, int start,string orderby,string orderbytag, string sqlWhere) + { + if (string.IsNullOrEmpty(orderbytag) || orderbytag.Trim() != "desc") orderbytag = "asc"; + + if (string.IsNullOrEmpty(orderby) || !DB_NAME_FIELDS.Contains(orderby)) orderby = DB_ALLOW_DELETE_INDC ; string top = limit > 0 ? $"top {limit}" : ""; + return $" select {top} {DB_NAME_FIELDS} from (select {DB_NAME_FIELDS} ,row_number() over(order by {orderby} {orderbytag}) as num from { DB_NAME_DMS_FILE_UPLOAD_VIEW} with(nolock) where 1=1 {sqlWhere} ) a where num> {limit * (start - 1)}"; + } + + public DmsFileUploadViewEntity Clone() + { + DmsFileUploadViewEntity result = new DmsFileUploadViewEntity(); + result.CopyFrom(this); + + return result; + } + + } +} diff --git a/CloudBuilder/CloudBuilder.Master/Entity/DmsFolderDeleteLogEntity.auto.cs b/CloudBuilder/CloudBuilder.Master/Entity/DmsFolderDeleteLogEntity.auto.cs new file mode 100644 index 0000000..54cfce2 --- /dev/null +++ b/CloudBuilder/CloudBuilder.Master/Entity/DmsFolderDeleteLogEntity.auto.cs @@ -0,0 +1,184 @@ + +using CloudBuilder.Core.Authorization; +using CloudBuilder.Core.DatabaseAccessor.Entity; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +namespace CloudBuilder.Master.Entity + { + [TypeScript] + [Table("dms_folder_delete_log")] + public class DmsFolderDeleteLogEntity : ViewEntityBase + { + + public DmsFolderDeleteLogEntity() + { + } + + [Column("created_by")] + public string CreatedBy { get; set; } + [Column("created_datetime")] + public DateTime CreatedDatetime { get; set; } + [Column("folder_id")] + public int FolderId { get; set; } + [Column("folder_local_name")] + public string? FolderLocalName { get; set; } + [Column("folder_name")] + public string FolderName { get; set; } + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + [Column("log_id")] + public long LogId { get; set; } + [Column("updated_by")] + public string UpdatedBy { get; set; } + [Column("updated_datetime")] + public DateTime UpdatedDatetime { get; set; } + + public const string CREATED_BY = "CreatedBy"; + public const string CREATED_DATETIME = "CreatedDatetime"; + public const string FOLDER_ID = "FolderId"; + public const string FOLDER_LOCAL_NAME = "FolderLocalName"; + public const string FOLDER_NAME = "FolderName"; + public const string LOG_ID = "LogId"; + public const string UPDATED_BY = "UpdatedBy"; + public const string UPDATED_DATETIME = "UpdatedDatetime"; + + public const string DB_NAME_DMS_FOLDER_DELETE_LOG = "dms_folder_delete_log"; + public const string DB_NAME_FIELDS="created_by,created_datetime,folder_id,folder_local_name,folder_name,log_id,updated_by,updated_datetime"; + + public const string DB_CREATED_BY = "created_by"; + public const string DB_CREATED_DATETIME = "created_datetime"; + public const string DB_FOLDER_ID = "folder_id"; + public const string DB_FOLDER_LOCAL_NAME = "folder_local_name"; + public const string DB_FOLDER_NAME = "folder_name"; + public const string DB_LOG_ID = "log_id"; + public const string DB_UPDATED_BY = "updated_by"; + public const string DB_UPDATED_DATETIME = "updated_datetime"; + + private string ProviderName { get; set; } + + public static DmsFolderDeleteLogEntity GetInstance(string providerName) + { + return new DmsFolderDeleteLogEntity() { ProviderName = providerName }; + } + + public virtual void CopyFrom(DmsFolderDeleteLogEntity source) + { + CopyFrom(source, true); + } + + public virtual void CopyFrom(DmsFolderDeleteLogEntity source, bool includeSystemFields) + { + if (source == null) + { + throw new NullReferenceException("Source entity is null."); + } + + this.CreatedBy = source.CreatedBy; + this.CreatedDatetime = source.CreatedDatetime; + this.FolderId = source.FolderId; + this.FolderLocalName = source.FolderLocalName; + this.FolderName = source.FolderName; + this.LogId = source.LogId; + this.UpdatedBy = source.UpdatedBy; + this.UpdatedDatetime = source.UpdatedDatetime; + + if (includeSystemFields) + { + this.CreatedBy = source.CreatedBy; + this.CreatedDatetime = source.CreatedDatetime; + this.UpdatedBy = source.UpdatedBy; + this.UpdatedDatetime = source.UpdatedDatetime; + } + } + + public override string GetSelectFrom() + { + if (ProviderName.Contains("MySql")) + { + return GetSelectFromByMySql(); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectFromByBySqlServer(); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + public string GetSelectFromByMySql() + { + return $" select {DB_NAME_FIELDS} from { DB_NAME_DMS_FOLDER_DELETE_LOG} with(nolock) "; + } + public string GetSelectFromByBySqlServer() + { + return $" select {DB_NAME_FIELDS} from { DB_NAME_DMS_FOLDER_DELETE_LOG} "; + } + + public override string GetSelectCountFrom(string sqlWhere) + { + if (ProviderName.Contains("MySql")) + { + return GetSelectCountFromByMySql(sqlWhere); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectCountFromBySqlServer(sqlWhere); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + + public string GetSelectCountFromByMySql(string sqlWhere) + { + return $" select count(*) from { DB_NAME_DMS_FOLDER_DELETE_LOG} where 1=1 {sqlWhere}"; + } + public string GetSelectCountFromBySqlServer(string sqlWhere) + { + return $" select count(*) from { DB_NAME_DMS_FOLDER_DELETE_LOG} with(nolock) where 1=1 {sqlWhere}"; + } + + public override string GetSelectTopFrom(int limit, int start, string orderby, string orderbytag, string sqlWhere) + { + if (ProviderName.Contains("MySql")) + { + return GetSelectTopFromByMySql(limit, start, orderby, orderbytag, sqlWhere); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectTopFromBySqlServer(limit, start, orderby, orderbytag, sqlWhere); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + + public string GetSelectTopFromByMySql(int limit, int start,string orderby,string orderbytag, string sqlWhere) + { + if (string.IsNullOrEmpty(orderbytag) || orderbytag.Trim() != "desc") orderbytag = "asc"; + if (string.IsNullOrEmpty(orderby) || !DB_NAME_FIELDS.Contains(orderby)) orderby = DB_LOG_ID ; + int offset = limit * (start - 1); + return $" select {DB_NAME_FIELDS} from (select {DB_NAME_FIELDS} ,row_number() over(order by {orderby} {orderbytag}) as num from { DB_NAME_DMS_FOLDER_DELETE_LOG} where 1=1 {sqlWhere} ) a where num> {offset} LIMIT {limit} "; + } + + public string GetSelectTopFromBySqlServer(int limit, int start,string orderby,string orderbytag, string sqlWhere) + { + if (string.IsNullOrEmpty(orderbytag) || orderbytag.Trim() != "desc") orderbytag = "asc"; + if (string.IsNullOrEmpty(orderby) || !DB_NAME_FIELDS.Contains(orderby)) orderby = DB_LOG_ID ; + string top = limit > 0 ? $"top {limit}" : ""; + return $" select {top} {DB_NAME_FIELDS} from (select {DB_NAME_FIELDS} ,row_number() over(order by {orderby} {orderbytag}) as num from { DB_NAME_DMS_FOLDER_DELETE_LOG} with(nolock) where 1=1 {sqlWhere} ) a where num> {limit * (start - 1)}"; + } + + public DmsFolderDeleteLogEntity Clone() + { + DmsFolderDeleteLogEntity result = new DmsFolderDeleteLogEntity(); + result.CopyFrom(this); + + return result; + } + + } +} diff --git a/CloudBuilder/CloudBuilder.Master/Entity/DmsFolderEntity.auto.cs b/CloudBuilder/CloudBuilder.Master/Entity/DmsFolderEntity.auto.cs new file mode 100644 index 0000000..82fffad --- /dev/null +++ b/CloudBuilder/CloudBuilder.Master/Entity/DmsFolderEntity.auto.cs @@ -0,0 +1,179 @@ + +using CloudBuilder.Core.Authorization; +using CloudBuilder.Core.DatabaseAccessor.Entity; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +namespace CloudBuilder.Master.Entity + { + [TypeScript] + [Table("dms_folder")] + public class DmsFolderEntity : ViewEntityBase + { + + public DmsFolderEntity() + { + } + + [Column("created_by")] + public string CreatedBy { get; set; } + [Column("created_datetime")] + public DateTime CreatedDatetime { get; set; } + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + [Column("folder_id")] + public long FolderId { get; set; } + [Column("folder_local_name")] + public string? FolderLocalName { get; set; } + [Column("folder_name")] + public string FolderName { get; set; } + [Column("updated_by")] + public string UpdatedBy { get; set; } + [Column("updated_datetime")] + public DateTime UpdatedDatetime { get; set; } + + public const string CREATED_BY = "CreatedBy"; + public const string CREATED_DATETIME = "CreatedDatetime"; + public const string FOLDER_ID = "FolderId"; + public const string FOLDER_LOCAL_NAME = "FolderLocalName"; + public const string FOLDER_NAME = "FolderName"; + public const string UPDATED_BY = "UpdatedBy"; + public const string UPDATED_DATETIME = "UpdatedDatetime"; + + public const string DB_NAME_DMS_FOLDER = "dms_folder"; + public const string DB_NAME_FIELDS="created_by,created_datetime,folder_id,folder_local_name,folder_name,updated_by,updated_datetime"; + + public const string DB_CREATED_BY = "created_by"; + public const string DB_CREATED_DATETIME = "created_datetime"; + public const string DB_FOLDER_ID = "folder_id"; + public const string DB_FOLDER_LOCAL_NAME = "folder_local_name"; + public const string DB_FOLDER_NAME = "folder_name"; + public const string DB_UPDATED_BY = "updated_by"; + public const string DB_UPDATED_DATETIME = "updated_datetime"; + + private string ProviderName { get; set; } + + public static DmsFolderEntity GetInstance(string providerName) + { + return new DmsFolderEntity() { ProviderName = providerName }; + } + + public virtual void CopyFrom(DmsFolderEntity source) + { + CopyFrom(source, true); + } + + public virtual void CopyFrom(DmsFolderEntity source, bool includeSystemFields) + { + if (source == null) + { + throw new NullReferenceException("Source entity is null."); + } + + this.CreatedBy = source.CreatedBy; + this.CreatedDatetime = source.CreatedDatetime; + this.FolderId = source.FolderId; + this.FolderLocalName = source.FolderLocalName; + this.FolderName = source.FolderName; + this.UpdatedBy = source.UpdatedBy; + this.UpdatedDatetime = source.UpdatedDatetime; + + if (includeSystemFields) + { + this.CreatedBy = source.CreatedBy; + this.CreatedDatetime = source.CreatedDatetime; + this.UpdatedBy = source.UpdatedBy; + this.UpdatedDatetime = source.UpdatedDatetime; + } + } + + public override string GetSelectFrom() + { + if (ProviderName.Contains("MySql")) + { + return GetSelectFromByMySql(); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectFromByBySqlServer(); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + public string GetSelectFromByMySql() + { + return $" select {DB_NAME_FIELDS} from { DB_NAME_DMS_FOLDER} with(nolock) "; + } + public string GetSelectFromByBySqlServer() + { + return $" select {DB_NAME_FIELDS} from { DB_NAME_DMS_FOLDER} "; + } + + public override string GetSelectCountFrom(string sqlWhere) + { + if (ProviderName.Contains("MySql")) + { + return GetSelectCountFromByMySql(sqlWhere); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectCountFromBySqlServer(sqlWhere); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + + public string GetSelectCountFromByMySql(string sqlWhere) + { + return $" select count(*) from { DB_NAME_DMS_FOLDER} where 1=1 {sqlWhere}"; + } + public string GetSelectCountFromBySqlServer(string sqlWhere) + { + return $" select count(*) from { DB_NAME_DMS_FOLDER} with(nolock) where 1=1 {sqlWhere}"; + } + + public override string GetSelectTopFrom(int limit, int start, string orderby, string orderbytag, string sqlWhere) + { + if (ProviderName.Contains("MySql")) + { + return GetSelectTopFromByMySql(limit, start, orderby, orderbytag, sqlWhere); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectTopFromBySqlServer(limit, start, orderby, orderbytag, sqlWhere); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + + public string GetSelectTopFromByMySql(int limit, int start,string orderby,string orderbytag, string sqlWhere) + { + if (string.IsNullOrEmpty(orderbytag) || orderbytag.Trim() != "desc") orderbytag = "asc"; + if (string.IsNullOrEmpty(orderby) || !DB_NAME_FIELDS.Contains(orderby)) orderby = DB_FOLDER_ID ; + int offset = limit * (start - 1); + return $" select {DB_NAME_FIELDS} from (select {DB_NAME_FIELDS} ,row_number() over(order by {orderby} {orderbytag}) as num from { DB_NAME_DMS_FOLDER} where 1=1 {sqlWhere} ) a where num> {offset} LIMIT {limit} "; + } + + public string GetSelectTopFromBySqlServer(int limit, int start,string orderby,string orderbytag, string sqlWhere) + { + if (string.IsNullOrEmpty(orderbytag) || orderbytag.Trim() != "desc") orderbytag = "asc"; + if (string.IsNullOrEmpty(orderby) || !DB_NAME_FIELDS.Contains(orderby)) orderby = DB_FOLDER_ID ; + string top = limit > 0 ? $"top {limit}" : ""; + return $" select {top} {DB_NAME_FIELDS} from (select {DB_NAME_FIELDS} ,row_number() over(order by {orderby} {orderbytag}) as num from { DB_NAME_DMS_FOLDER} with(nolock) where 1=1 {sqlWhere} ) a where num> {limit * (start - 1)}"; + } + + public DmsFolderEntity Clone() + { + DmsFolderEntity result = new DmsFolderEntity(); + result.CopyFrom(this); + + return result; + } + + } +} diff --git a/CloudBuilder/CloudBuilder.Master/Entity/DmsFolderMapDeleteLogEntity.auto.cs b/CloudBuilder/CloudBuilder.Master/Entity/DmsFolderMapDeleteLogEntity.auto.cs new file mode 100644 index 0000000..dd6e6e4 --- /dev/null +++ b/CloudBuilder/CloudBuilder.Master/Entity/DmsFolderMapDeleteLogEntity.auto.cs @@ -0,0 +1,177 @@ + +using CloudBuilder.Core.Authorization; +using CloudBuilder.Core.DatabaseAccessor.Entity; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +namespace CloudBuilder.Master.Entity + { + [TypeScript] + [Table("dms_folder_map_delete_log")] + public class DmsFolderMapDeleteLogEntity : EntityBase + { + + public DmsFolderMapDeleteLogEntity() + { + } + + [Column("created_by")] + public string CreatedBy { get; set; } + [Column("created_datetime")] + public DateTime CreatedDatetime { get; set; } + [Column("folder_name_parent")] + public string FolderNameParent { get; set; } + [Column("folder_name_son")] + public string FolderNameSon { get; set; } + [Column("orderby")] + public int Orderby { get; set; } + [Column("updated_by")] + public string UpdatedBy { get; set; } + [Column("updated_datetime")] + public DateTime UpdatedDatetime { get; set; } + + public const string CREATED_BY = "CreatedBy"; + public const string CREATED_DATETIME = "CreatedDatetime"; + public const string FOLDER_NAME_PARENT = "FolderNameParent"; + public const string FOLDER_NAME_SON = "FolderNameSon"; + public const string ORDERBY = "Orderby"; + public const string UPDATED_BY = "UpdatedBy"; + public const string UPDATED_DATETIME = "UpdatedDatetime"; + + public const string DB_NAME_DMS_FOLDER_MAP_DELETE_LOG = "dms_folder_map_delete_log"; + public const string DB_NAME_FIELDS="created_by,created_datetime,folder_name_parent,folder_name_son,orderby,updated_by,updated_datetime"; + + public const string DB_CREATED_BY = "created_by"; + public const string DB_CREATED_DATETIME = "created_datetime"; + public const string DB_FOLDER_NAME_PARENT = "folder_name_parent"; + public const string DB_FOLDER_NAME_SON = "folder_name_son"; + public const string DB_ORDERBY = "orderby"; + public const string DB_UPDATED_BY = "updated_by"; + public const string DB_UPDATED_DATETIME = "updated_datetime"; + + private string ProviderName { get; set; } + + public static DmsFolderMapDeleteLogEntity GetInstance(string providerName) + { + return new DmsFolderMapDeleteLogEntity() { ProviderName = providerName }; + } + + public virtual void CopyFrom(DmsFolderMapDeleteLogEntity source) + { + CopyFrom(source, true); + } + + public virtual void CopyFrom(DmsFolderMapDeleteLogEntity source, bool includeSystemFields) + { + if (source == null) + { + throw new NullReferenceException("Source entity is null."); + } + + this.CreatedBy = source.CreatedBy; + this.CreatedDatetime = source.CreatedDatetime; + this.FolderNameParent = source.FolderNameParent; + this.FolderNameSon = source.FolderNameSon; + this.Orderby = source.Orderby; + this.UpdatedBy = source.UpdatedBy; + this.UpdatedDatetime = source.UpdatedDatetime; + + if (includeSystemFields) + { + this.CreatedBy = source.CreatedBy; + this.CreatedDatetime = source.CreatedDatetime; + this.UpdatedBy = source.UpdatedBy; + this.UpdatedDatetime = source.UpdatedDatetime; + } + } + + public override string GetSelectFrom() + { + if (ProviderName.Contains("MySql")) + { + return GetSelectFromByMySql(); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectFromByBySqlServer(); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + public string GetSelectFromByMySql() + { + return $" select {DB_NAME_FIELDS} from { DB_NAME_DMS_FOLDER_MAP_DELETE_LOG} with(nolock) "; + } + public string GetSelectFromByBySqlServer() + { + return $" select {DB_NAME_FIELDS} from { DB_NAME_DMS_FOLDER_MAP_DELETE_LOG} "; + } + + public override string GetSelectCountFrom(string sqlWhere) + { + if (ProviderName.Contains("MySql")) + { + return GetSelectCountFromByMySql(sqlWhere); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectCountFromBySqlServer(sqlWhere); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + + public string GetSelectCountFromByMySql(string sqlWhere) + { + return $" select count(*) from { DB_NAME_DMS_FOLDER_MAP_DELETE_LOG} where 1=1 {sqlWhere}"; + } + public string GetSelectCountFromBySqlServer(string sqlWhere) + { + return $" select count(*) from { DB_NAME_DMS_FOLDER_MAP_DELETE_LOG} with(nolock) where 1=1 {sqlWhere}"; + } + + public override string GetSelectTopFrom(int limit, int start, string orderby, string orderbytag, string sqlWhere) + { + if (ProviderName.Contains("MySql")) + { + return GetSelectTopFromByMySql(limit, start, orderby, orderbytag, sqlWhere); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectTopFromBySqlServer(limit, start, orderby, orderbytag, sqlWhere); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + + public string GetSelectTopFromByMySql(int limit, int start,string orderby,string orderbytag, string sqlWhere) + { + if (string.IsNullOrEmpty(orderbytag) || orderbytag.Trim() != "desc") orderbytag = "asc"; + if (string.IsNullOrEmpty(orderby) || !DB_NAME_FIELDS.Contains(orderby)) orderby = DB_FOLDER_NAME_PARENT ; + int offset = limit * (start - 1); + return $" select {DB_NAME_FIELDS} from (select {DB_NAME_FIELDS} ,row_number() over(order by {orderby} {orderbytag}) as num from { DB_NAME_DMS_FOLDER_MAP_DELETE_LOG} where 1=1 {sqlWhere} ) a where num> {offset} LIMIT {limit} "; + } + + public string GetSelectTopFromBySqlServer(int limit, int start,string orderby,string orderbytag, string sqlWhere) + { + if (string.IsNullOrEmpty(orderbytag) || orderbytag.Trim() != "desc") orderbytag = "asc"; + if (string.IsNullOrEmpty(orderby) || !DB_NAME_FIELDS.Contains(orderby)) orderby = DB_FOLDER_NAME_PARENT ; + string top = limit > 0 ? $"top {limit}" : ""; + return $" select {top} {DB_NAME_FIELDS} from (select {DB_NAME_FIELDS} ,row_number() over(order by {orderby} {orderbytag}) as num from { DB_NAME_DMS_FOLDER_MAP_DELETE_LOG} with(nolock) where 1=1 {sqlWhere} ) a where num> {limit * (start - 1)}"; + } + + public DmsFolderMapDeleteLogEntity Clone() + { + DmsFolderMapDeleteLogEntity result = new DmsFolderMapDeleteLogEntity(); + result.CopyFrom(this); + + return result; + } + + } +} diff --git a/CloudBuilder/CloudBuilder.Master/Entity/DmsFolderMapDeleteLogEntityKey.auto.cs b/CloudBuilder/CloudBuilder.Master/Entity/DmsFolderMapDeleteLogEntityKey.auto.cs new file mode 100644 index 0000000..21afcb5 --- /dev/null +++ b/CloudBuilder/CloudBuilder.Master/Entity/DmsFolderMapDeleteLogEntityKey.auto.cs @@ -0,0 +1,33 @@ + +using CloudBuilder.Core.Authorization; +namespace CloudBuilder.Master +{ + [TypeScript] + public class DmsFolderMapDeleteLogEntityKey + { + public string FolderNameParent { get; set; } + public string FolderNameSon { get; set; } + + public override bool Equals(object obj) + { + if (this == obj) return true; + + DmsFolderMapDeleteLogEntityKey pkey = obj as DmsFolderMapDeleteLogEntityKey; + if (pkey == null) return false; + + if (FolderNameParent != pkey.FolderNameParent) return false; + if (FolderNameSon != pkey.FolderNameSon) return false; + + return true; + } + + + public override string ToString() + { + string declareSql=""; + declareSql=declareSql+$"declare @__tkey_FolderNameParent_0 varchar(50) select @__tkey_FolderNameParent_0 ='{FolderNameParent}'; " ; declareSql=declareSql+$"declare @__tkey_FolderNameSon_1 varchar(50) select @__tkey_FolderNameSon_1 ='{FolderNameSon}'; " ; + return declareSql; + } + } + } + /* builder.Entity().HasKey(c => new { c.FolderNameParent, c.FolderNameSon}); */ diff --git a/CloudBuilder/CloudBuilder.Master/Entity/DmsFolderMapEntity.auto.cs b/CloudBuilder/CloudBuilder.Master/Entity/DmsFolderMapEntity.auto.cs new file mode 100644 index 0000000..1581dc6 --- /dev/null +++ b/CloudBuilder/CloudBuilder.Master/Entity/DmsFolderMapEntity.auto.cs @@ -0,0 +1,177 @@ + +using CloudBuilder.Core.Authorization; +using CloudBuilder.Core.DatabaseAccessor.Entity; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +namespace CloudBuilder.Master.Entity + { + [TypeScript] + [Table("dms_folder_map")] + public class DmsFolderMapEntity : EntityBase + { + + public DmsFolderMapEntity() + { + } + + [Column("created_by")] + public string CreatedBy { get; set; } + [Column("created_datetime")] + public DateTime CreatedDatetime { get; set; } + [Column("folder_name_parent")] + public string FolderNameParent { get; set; } + [Column("folder_name_son")] + public string FolderNameSon { get; set; } + [Column("orderby")] + public int Orderby { get; set; } + [Column("updated_by")] + public string UpdatedBy { get; set; } + [Column("updated_datetime")] + public DateTime UpdatedDatetime { get; set; } + + public const string CREATED_BY = "CreatedBy"; + public const string CREATED_DATETIME = "CreatedDatetime"; + public const string FOLDER_NAME_PARENT = "FolderNameParent"; + public const string FOLDER_NAME_SON = "FolderNameSon"; + public const string ORDERBY = "Orderby"; + public const string UPDATED_BY = "UpdatedBy"; + public const string UPDATED_DATETIME = "UpdatedDatetime"; + + public const string DB_NAME_DMS_FOLDER_MAP = "dms_folder_map"; + public const string DB_NAME_FIELDS="created_by,created_datetime,folder_name_parent,folder_name_son,orderby,updated_by,updated_datetime"; + + public const string DB_CREATED_BY = "created_by"; + public const string DB_CREATED_DATETIME = "created_datetime"; + public const string DB_FOLDER_NAME_PARENT = "folder_name_parent"; + public const string DB_FOLDER_NAME_SON = "folder_name_son"; + public const string DB_ORDERBY = "orderby"; + public const string DB_UPDATED_BY = "updated_by"; + public const string DB_UPDATED_DATETIME = "updated_datetime"; + + private string ProviderName { get; set; } + + public static DmsFolderMapEntity GetInstance(string providerName) + { + return new DmsFolderMapEntity() { ProviderName = providerName }; + } + + public virtual void CopyFrom(DmsFolderMapEntity source) + { + CopyFrom(source, true); + } + + public virtual void CopyFrom(DmsFolderMapEntity source, bool includeSystemFields) + { + if (source == null) + { + throw new NullReferenceException("Source entity is null."); + } + + this.CreatedBy = source.CreatedBy; + this.CreatedDatetime = source.CreatedDatetime; + this.FolderNameParent = source.FolderNameParent; + this.FolderNameSon = source.FolderNameSon; + this.Orderby = source.Orderby; + this.UpdatedBy = source.UpdatedBy; + this.UpdatedDatetime = source.UpdatedDatetime; + + if (includeSystemFields) + { + this.CreatedBy = source.CreatedBy; + this.CreatedDatetime = source.CreatedDatetime; + this.UpdatedBy = source.UpdatedBy; + this.UpdatedDatetime = source.UpdatedDatetime; + } + } + + public override string GetSelectFrom() + { + if (ProviderName.Contains("MySql")) + { + return GetSelectFromByMySql(); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectFromByBySqlServer(); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + public string GetSelectFromByMySql() + { + return $" select {DB_NAME_FIELDS} from { DB_NAME_DMS_FOLDER_MAP} with(nolock) "; + } + public string GetSelectFromByBySqlServer() + { + return $" select {DB_NAME_FIELDS} from { DB_NAME_DMS_FOLDER_MAP} "; + } + + public override string GetSelectCountFrom(string sqlWhere) + { + if (ProviderName.Contains("MySql")) + { + return GetSelectCountFromByMySql(sqlWhere); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectCountFromBySqlServer(sqlWhere); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + + public string GetSelectCountFromByMySql(string sqlWhere) + { + return $" select count(*) from { DB_NAME_DMS_FOLDER_MAP} where 1=1 {sqlWhere}"; + } + public string GetSelectCountFromBySqlServer(string sqlWhere) + { + return $" select count(*) from { DB_NAME_DMS_FOLDER_MAP} with(nolock) where 1=1 {sqlWhere}"; + } + + public override string GetSelectTopFrom(int limit, int start, string orderby, string orderbytag, string sqlWhere) + { + if (ProviderName.Contains("MySql")) + { + return GetSelectTopFromByMySql(limit, start, orderby, orderbytag, sqlWhere); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectTopFromBySqlServer(limit, start, orderby, orderbytag, sqlWhere); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + + public string GetSelectTopFromByMySql(int limit, int start,string orderby,string orderbytag, string sqlWhere) + { + if (string.IsNullOrEmpty(orderbytag) || orderbytag.Trim() != "desc") orderbytag = "asc"; + if (string.IsNullOrEmpty(orderby) || !DB_NAME_FIELDS.Contains(orderby)) orderby = DB_FOLDER_NAME_PARENT ; + int offset = limit * (start - 1); + return $" select {DB_NAME_FIELDS} from (select {DB_NAME_FIELDS} ,row_number() over(order by {orderby} {orderbytag}) as num from { DB_NAME_DMS_FOLDER_MAP} where 1=1 {sqlWhere} ) a where num> {offset} LIMIT {limit} "; + } + + public string GetSelectTopFromBySqlServer(int limit, int start,string orderby,string orderbytag, string sqlWhere) + { + if (string.IsNullOrEmpty(orderbytag) || orderbytag.Trim() != "desc") orderbytag = "asc"; + if (string.IsNullOrEmpty(orderby) || !DB_NAME_FIELDS.Contains(orderby)) orderby = DB_FOLDER_NAME_PARENT ; + string top = limit > 0 ? $"top {limit}" : ""; + return $" select {top} {DB_NAME_FIELDS} from (select {DB_NAME_FIELDS} ,row_number() over(order by {orderby} {orderbytag}) as num from { DB_NAME_DMS_FOLDER_MAP} with(nolock) where 1=1 {sqlWhere} ) a where num> {limit * (start - 1)}"; + } + + public DmsFolderMapEntity Clone() + { + DmsFolderMapEntity result = new DmsFolderMapEntity(); + result.CopyFrom(this); + + return result; + } + + } +} diff --git a/CloudBuilder/CloudBuilder.Master/Entity/DmsFolderMapEntityKey.auto.cs b/CloudBuilder/CloudBuilder.Master/Entity/DmsFolderMapEntityKey.auto.cs new file mode 100644 index 0000000..a479f29 --- /dev/null +++ b/CloudBuilder/CloudBuilder.Master/Entity/DmsFolderMapEntityKey.auto.cs @@ -0,0 +1,33 @@ + +using CloudBuilder.Core.Authorization; +namespace CloudBuilder.Master +{ + [TypeScript] + public class DmsFolderMapEntityKey + { + public string FolderNameParent { get; set; } + public string FolderNameSon { get; set; } + + public override bool Equals(object obj) + { + if (this == obj) return true; + + DmsFolderMapEntityKey pkey = obj as DmsFolderMapEntityKey; + if (pkey == null) return false; + + if (FolderNameParent != pkey.FolderNameParent) return false; + if (FolderNameSon != pkey.FolderNameSon) return false; + + return true; + } + + + public override string ToString() + { + string declareSql=""; + declareSql=declareSql+$"declare @__tkey_FolderNameParent_0 varchar(50) select @__tkey_FolderNameParent_0 ='{FolderNameParent}'; " ; declareSql=declareSql+$"declare @__tkey_FolderNameSon_1 varchar(50) select @__tkey_FolderNameSon_1 ='{FolderNameSon}'; " ; + return declareSql; + } + } + } + /* builder.Entity().HasKey(c => new { c.FolderNameParent, c.FolderNameSon}); */ diff --git a/CloudBuilder/CloudBuilder.Master/Entity/FamilyDmsFileViewEntity.auto.cs b/CloudBuilder/CloudBuilder.Master/Entity/FamilyDmsFileViewEntity.auto.cs new file mode 100644 index 0000000..1adbe61 --- /dev/null +++ b/CloudBuilder/CloudBuilder.Master/Entity/FamilyDmsFileViewEntity.auto.cs @@ -0,0 +1,280 @@ + +using CloudBuilder.Core.Authorization; +using CloudBuilder.Core.DatabaseAccessor.Entity; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +namespace CloudBuilder.Master.Entity + { + [TypeScript] + [Table("family_dms_file_view")] + public class FamilyDmsFileViewEntity : ViewEntityBase + { + + public FamilyDmsFileViewEntity() + { + } + + [Column("allow_delete_indc")] + public string AllowDeleteIndc { get; set; } + [Column("allow_rename_indc")] + public string AllowRenameIndc { get; set; } + [Column("created_by")] + public string CreatedBy { get; set; } + [Column("created_datetime")] + public DateTime CreatedDatetime { get; set; } + [Column("family_name")] + public string FamilyName { get; set; } + [Column("favorite_indc")] + public string FavoriteIndc { get; set; } + [Column("file_category")] + public string FileCategory { get; set; } + [Column("file_id")] + public long FileId { get; set; } + [Column("file_name")] + public string FileName { get; set; } + [Column("file_path")] + public string? FilePath { get; set; } + [Column("file_size")] + public int FileSize { get; set; } + [Column("file_tag")] + public string? FileTag { get; set; } + [Column("file_type")] + public string? FileType { get; set; } + [Column("folder_local_name")] + public string? FolderLocalName { get; set; } + [Column("folder_name")] + public string FolderName { get; set; } + [Column("is_directory_indc")] + public string IsDirectoryIndc { get; set; } + [Column("is_link_indc")] + public string IsLinkIndc { get; set; } + [Column("landscape_indc")] + public string? LandscapeIndc { get; set; } + [Column("linked_file_id")] + public int LinkedFileId { get; set; } + [Column("notice")] + public string? Notice { get; set; } + [Column("order_key")] + public string? OrderKey { get; set; } + [Column("org_file_name")] + public string? OrgFileName { get; set; } + [Column("ower_id")] + public string OwerId { get; set; } + [Column("permission_indc")] + public string PermissionIndc { get; set; } + [Column("revision_no")] + public int RevisionNo { get; set; } + [Column("top_folder_name")] + public string TopFolderName { get; set; } + [Column("transcode_indc")] + public string? TranscodeIndc { get; set; } + [Column("url")] + public string Url { get; set; } + + public const string ALLOW_DELETE_INDC = "AllowDeleteIndc"; + public const string ALLOW_RENAME_INDC = "AllowRenameIndc"; + public const string CREATED_BY = "CreatedBy"; + public const string CREATED_DATETIME = "CreatedDatetime"; + public const string FAMILY_NAME = "FamilyName"; + public const string FAVORITE_INDC = "FavoriteIndc"; + public const string FILE_CATEGORY = "FileCategory"; + public const string FILE_ID = "FileId"; + public const string FILE_NAME = "FileName"; + public const string FILE_PATH = "FilePath"; + public const string FILE_SIZE = "FileSize"; + public const string FILE_TAG = "FileTag"; + public const string FILE_TYPE = "FileType"; + public const string FOLDER_LOCAL_NAME = "FolderLocalName"; + public const string FOLDER_NAME = "FolderName"; + public const string IS_DIRECTORY_INDC = "IsDirectoryIndc"; + public const string IS_LINK_INDC = "IsLinkIndc"; + public const string LANDSCAPE_INDC = "LandscapeIndc"; + public const string LINKED_FILE_ID = "LinkedFileId"; + public const string NOTICE = "Notice"; + public const string ORDER_KEY = "OrderKey"; + public const string ORG_FILE_NAME = "OrgFileName"; + public const string OWER_ID = "OwerId"; + public const string PERMISSION_INDC = "PermissionIndc"; + public const string REVISION_NO = "RevisionNo"; + public const string TOP_FOLDER_NAME = "TopFolderName"; + public const string TRANSCODE_INDC = "TranscodeIndc"; + public const string URL = "Url"; + + public const string DB_NAME_FAMILY_DMS_FILE_VIEW = "family_dms_file_view"; + public const string DB_NAME_FIELDS="allow_delete_indc,allow_rename_indc,created_by,created_datetime,family_name,favorite_indc,file_category,file_id,file_name,file_path,file_size,file_tag,file_type,folder_local_name,folder_name,is_directory_indc,is_link_indc,landscape_indc,linked_file_id,notice,order_key,org_file_name,ower_id,permission_indc,revision_no,top_folder_name,transcode_indc,url"; + + public const string DB_ALLOW_DELETE_INDC = "allow_delete_indc"; + public const string DB_ALLOW_RENAME_INDC = "allow_rename_indc"; + public const string DB_CREATED_BY = "created_by"; + public const string DB_CREATED_DATETIME = "created_datetime"; + public const string DB_FAMILY_NAME = "family_name"; + public const string DB_FAVORITE_INDC = "favorite_indc"; + public const string DB_FILE_CATEGORY = "file_category"; + public const string DB_FILE_ID = "file_id"; + public const string DB_FILE_NAME = "file_name"; + public const string DB_FILE_PATH = "file_path"; + public const string DB_FILE_SIZE = "file_size"; + public const string DB_FILE_TAG = "file_tag"; + public const string DB_FILE_TYPE = "file_type"; + public const string DB_FOLDER_LOCAL_NAME = "folder_local_name"; + public const string DB_FOLDER_NAME = "folder_name"; + public const string DB_IS_DIRECTORY_INDC = "is_directory_indc"; + public const string DB_IS_LINK_INDC = "is_link_indc"; + public const string DB_LANDSCAPE_INDC = "landscape_indc"; + public const string DB_LINKED_FILE_ID = "linked_file_id"; + public const string DB_NOTICE = "notice"; + public const string DB_ORDER_KEY = "order_key"; + public const string DB_ORG_FILE_NAME = "org_file_name"; + public const string DB_OWER_ID = "ower_id"; + public const string DB_PERMISSION_INDC = "permission_indc"; + public const string DB_REVISION_NO = "revision_no"; + public const string DB_TOP_FOLDER_NAME = "top_folder_name"; + public const string DB_TRANSCODE_INDC = "transcode_indc"; + public const string DB_URL = "url"; + + private string ProviderName { get; set; } + + public static FamilyDmsFileViewEntity GetInstance(string providerName) + { + return new FamilyDmsFileViewEntity() { ProviderName = providerName }; + } + + public virtual void CopyFrom(FamilyDmsFileViewEntity source) + { + CopyFrom(source, true); + } + + public virtual void CopyFrom(FamilyDmsFileViewEntity source, bool includeSystemFields) + { + if (source == null) + { + throw new NullReferenceException("Source entity is null."); + } + + this.AllowDeleteIndc = source.AllowDeleteIndc; + this.AllowRenameIndc = source.AllowRenameIndc; + this.CreatedBy = source.CreatedBy; + this.CreatedDatetime = source.CreatedDatetime; + this.FamilyName = source.FamilyName; + this.FavoriteIndc = source.FavoriteIndc; + this.FileCategory = source.FileCategory; + this.FileId = source.FileId; + this.FileName = source.FileName; + this.FilePath = source.FilePath; + this.FileSize = source.FileSize; + this.FileTag = source.FileTag; + this.FileType = source.FileType; + this.FolderLocalName = source.FolderLocalName; + this.FolderName = source.FolderName; + this.IsDirectoryIndc = source.IsDirectoryIndc; + this.IsLinkIndc = source.IsLinkIndc; + this.LandscapeIndc = source.LandscapeIndc; + this.LinkedFileId = source.LinkedFileId; + this.Notice = source.Notice; + this.OrderKey = source.OrderKey; + this.OrgFileName = source.OrgFileName; + this.OwerId = source.OwerId; + this.PermissionIndc = source.PermissionIndc; + this.RevisionNo = source.RevisionNo; + this.TopFolderName = source.TopFolderName; + this.TranscodeIndc = source.TranscodeIndc; + this.Url = source.Url; + + if (includeSystemFields) + { + this.CreatedBy = source.CreatedBy; + this.CreatedDatetime = source.CreatedDatetime; + } + } + + public override string GetSelectFrom() + { + if (ProviderName.Contains("MySql")) + { + return GetSelectFromByMySql(); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectFromByBySqlServer(); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + public string GetSelectFromByMySql() + { + return $" select {DB_NAME_FIELDS} from { DB_NAME_FAMILY_DMS_FILE_VIEW} with(nolock) "; + } + public string GetSelectFromByBySqlServer() + { + return $" select {DB_NAME_FIELDS} from { DB_NAME_FAMILY_DMS_FILE_VIEW} "; + } + + public override string GetSelectCountFrom(string sqlWhere) + { + if (ProviderName.Contains("MySql")) + { + return GetSelectCountFromByMySql(sqlWhere); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectCountFromBySqlServer(sqlWhere); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + + public string GetSelectCountFromByMySql(string sqlWhere) + { + return $" select count(*) from { DB_NAME_FAMILY_DMS_FILE_VIEW} where 1=1 {sqlWhere}"; + } + public string GetSelectCountFromBySqlServer(string sqlWhere) + { + return $" select count(*) from { DB_NAME_FAMILY_DMS_FILE_VIEW} with(nolock) where 1=1 {sqlWhere}"; + } + + public override string GetSelectTopFrom(int limit, int start, string orderby, string orderbytag, string sqlWhere) + { + if (ProviderName.Contains("MySql")) + { + return GetSelectTopFromByMySql(limit, start, orderby, orderbytag, sqlWhere); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectTopFromBySqlServer(limit, start, orderby, orderbytag, sqlWhere); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + + public string GetSelectTopFromByMySql(int limit, int start,string orderby,string orderbytag, string sqlWhere) + { + if (string.IsNullOrEmpty(orderbytag) || orderbytag.Trim() != "desc") orderbytag = "asc"; + + if (string.IsNullOrEmpty(orderby) || !DB_NAME_FIELDS.Contains(orderby)) orderby = DB_ALLOW_DELETE_INDC ; int offset = limit * (start - 1); + return $" select {DB_NAME_FIELDS} from (select {DB_NAME_FIELDS} ,row_number() over(order by {orderby} {orderbytag}) as num from { DB_NAME_FAMILY_DMS_FILE_VIEW} where 1=1 {sqlWhere} ) a where num> {offset} LIMIT {limit} "; + } + + public string GetSelectTopFromBySqlServer(int limit, int start,string orderby,string orderbytag, string sqlWhere) + { + if (string.IsNullOrEmpty(orderbytag) || orderbytag.Trim() != "desc") orderbytag = "asc"; + + if (string.IsNullOrEmpty(orderby) || !DB_NAME_FIELDS.Contains(orderby)) orderby = DB_ALLOW_DELETE_INDC ; string top = limit > 0 ? $"top {limit}" : ""; + return $" select {top} {DB_NAME_FIELDS} from (select {DB_NAME_FIELDS} ,row_number() over(order by {orderby} {orderbytag}) as num from { DB_NAME_FAMILY_DMS_FILE_VIEW} with(nolock) where 1=1 {sqlWhere} ) a where num> {limit * (start - 1)}"; + } + + public FamilyDmsFileViewEntity Clone() + { + FamilyDmsFileViewEntity result = new FamilyDmsFileViewEntity(); + result.CopyFrom(this); + + return result; + } + + } +} diff --git a/CloudBuilder/CloudBuilder.Master/Entity/FamilyFolderFavoriteEntity.auto.cs b/CloudBuilder/CloudBuilder.Master/Entity/FamilyFolderFavoriteEntity.auto.cs new file mode 100644 index 0000000..392b843 --- /dev/null +++ b/CloudBuilder/CloudBuilder.Master/Entity/FamilyFolderFavoriteEntity.auto.cs @@ -0,0 +1,172 @@ + +using CloudBuilder.Core.Authorization; +using CloudBuilder.Core.DatabaseAccessor.Entity; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +namespace CloudBuilder.Master.Entity + { + [TypeScript] + [Table("family_folder_favorite")] + public class FamilyFolderFavoriteEntity : EntityBase + { + + public FamilyFolderFavoriteEntity() + { + } + + [Column("created_by")] + public string CreatedBy { get; set; } + [Column("created_datetime")] + public DateTime CreatedDatetime { get; set; } + [Column("folder_name")] + public string FolderName { get; set; } + [Column("updated_by")] + public string UpdatedBy { get; set; } + [Column("updated_datetime")] + public DateTime UpdatedDatetime { get; set; } + [Column("user_name")] + public string UserName { get; set; } + + public const string CREATED_BY = "CreatedBy"; + public const string CREATED_DATETIME = "CreatedDatetime"; + public const string FOLDER_NAME = "FolderName"; + public const string UPDATED_BY = "UpdatedBy"; + public const string UPDATED_DATETIME = "UpdatedDatetime"; + public const string USER_NAME = "UserName"; + + public const string DB_NAME_FAMILY_FOLDER_FAVORITE = "family_folder_favorite"; + public const string DB_NAME_FIELDS="created_by,created_datetime,folder_name,updated_by,updated_datetime,user_name"; + + public const string DB_CREATED_BY = "created_by"; + public const string DB_CREATED_DATETIME = "created_datetime"; + public const string DB_FOLDER_NAME = "folder_name"; + public const string DB_UPDATED_BY = "updated_by"; + public const string DB_UPDATED_DATETIME = "updated_datetime"; + public const string DB_USER_NAME = "user_name"; + + private string ProviderName { get; set; } + + public static FamilyFolderFavoriteEntity GetInstance(string providerName) + { + return new FamilyFolderFavoriteEntity() { ProviderName = providerName }; + } + + public virtual void CopyFrom(FamilyFolderFavoriteEntity source) + { + CopyFrom(source, true); + } + + public virtual void CopyFrom(FamilyFolderFavoriteEntity source, bool includeSystemFields) + { + if (source == null) + { + throw new NullReferenceException("Source entity is null."); + } + + this.CreatedBy = source.CreatedBy; + this.CreatedDatetime = source.CreatedDatetime; + this.FolderName = source.FolderName; + this.UpdatedBy = source.UpdatedBy; + this.UpdatedDatetime = source.UpdatedDatetime; + this.UserName = source.UserName; + + if (includeSystemFields) + { + this.CreatedBy = source.CreatedBy; + this.CreatedDatetime = source.CreatedDatetime; + this.UpdatedBy = source.UpdatedBy; + this.UpdatedDatetime = source.UpdatedDatetime; + } + } + + public override string GetSelectFrom() + { + if (ProviderName.Contains("MySql")) + { + return GetSelectFromByMySql(); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectFromByBySqlServer(); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + public string GetSelectFromByMySql() + { + return $" select {DB_NAME_FIELDS} from { DB_NAME_FAMILY_FOLDER_FAVORITE} with(nolock) "; + } + public string GetSelectFromByBySqlServer() + { + return $" select {DB_NAME_FIELDS} from { DB_NAME_FAMILY_FOLDER_FAVORITE} "; + } + + public override string GetSelectCountFrom(string sqlWhere) + { + if (ProviderName.Contains("MySql")) + { + return GetSelectCountFromByMySql(sqlWhere); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectCountFromBySqlServer(sqlWhere); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + + public string GetSelectCountFromByMySql(string sqlWhere) + { + return $" select count(*) from { DB_NAME_FAMILY_FOLDER_FAVORITE} where 1=1 {sqlWhere}"; + } + public string GetSelectCountFromBySqlServer(string sqlWhere) + { + return $" select count(*) from { DB_NAME_FAMILY_FOLDER_FAVORITE} with(nolock) where 1=1 {sqlWhere}"; + } + + public override string GetSelectTopFrom(int limit, int start, string orderby, string orderbytag, string sqlWhere) + { + if (ProviderName.Contains("MySql")) + { + return GetSelectTopFromByMySql(limit, start, orderby, orderbytag, sqlWhere); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectTopFromBySqlServer(limit, start, orderby, orderbytag, sqlWhere); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + + public string GetSelectTopFromByMySql(int limit, int start,string orderby,string orderbytag, string sqlWhere) + { + if (string.IsNullOrEmpty(orderbytag) || orderbytag.Trim() != "desc") orderbytag = "asc"; + if (string.IsNullOrEmpty(orderby) || !DB_NAME_FIELDS.Contains(orderby)) orderby = DB_FOLDER_NAME ; + int offset = limit * (start - 1); + return $" select {DB_NAME_FIELDS} from (select {DB_NAME_FIELDS} ,row_number() over(order by {orderby} {orderbytag}) as num from { DB_NAME_FAMILY_FOLDER_FAVORITE} where 1=1 {sqlWhere} ) a where num> {offset} LIMIT {limit} "; + } + + public string GetSelectTopFromBySqlServer(int limit, int start,string orderby,string orderbytag, string sqlWhere) + { + if (string.IsNullOrEmpty(orderbytag) || orderbytag.Trim() != "desc") orderbytag = "asc"; + if (string.IsNullOrEmpty(orderby) || !DB_NAME_FIELDS.Contains(orderby)) orderby = DB_FOLDER_NAME ; + string top = limit > 0 ? $"top {limit}" : ""; + return $" select {top} {DB_NAME_FIELDS} from (select {DB_NAME_FIELDS} ,row_number() over(order by {orderby} {orderbytag}) as num from { DB_NAME_FAMILY_FOLDER_FAVORITE} with(nolock) where 1=1 {sqlWhere} ) a where num> {limit * (start - 1)}"; + } + + public FamilyFolderFavoriteEntity Clone() + { + FamilyFolderFavoriteEntity result = new FamilyFolderFavoriteEntity(); + result.CopyFrom(this); + + return result; + } + + } +} diff --git a/CloudBuilder/CloudBuilder.Master/Entity/FamilyFolderFavoriteEntityKey.auto.cs b/CloudBuilder/CloudBuilder.Master/Entity/FamilyFolderFavoriteEntityKey.auto.cs new file mode 100644 index 0000000..9bf3222 --- /dev/null +++ b/CloudBuilder/CloudBuilder.Master/Entity/FamilyFolderFavoriteEntityKey.auto.cs @@ -0,0 +1,33 @@ + +using CloudBuilder.Core.Authorization; +namespace CloudBuilder.Master +{ + [TypeScript] + public class FamilyFolderFavoriteEntityKey + { + public string FolderName { get; set; } + public string UserName { get; set; } + + public override bool Equals(object obj) + { + if (this == obj) return true; + + FamilyFolderFavoriteEntityKey pkey = obj as FamilyFolderFavoriteEntityKey; + if (pkey == null) return false; + + if (FolderName != pkey.FolderName) return false; + if (UserName != pkey.UserName) return false; + + return true; + } + + + public override string ToString() + { + string declareSql=""; + declareSql=declareSql+$"declare @__tkey_FolderName_0 varchar(50) select @__tkey_FolderName_0 ='{FolderName}'; " ; declareSql=declareSql+$"declare @__tkey_UserName_1 varchar(50) select @__tkey_UserName_1 ='{UserName}'; " ; + return declareSql; + } + } + } + /* builder.Entity().HasKey(c => new { c.FolderName, c.UserName}); */ diff --git a/CloudBuilder/CloudBuilder.Master/Entity/FamilyFolderFavoriteViewEntity.auto.cs b/CloudBuilder/CloudBuilder.Master/Entity/FamilyFolderFavoriteViewEntity.auto.cs new file mode 100644 index 0000000..27bbfaf --- /dev/null +++ b/CloudBuilder/CloudBuilder.Master/Entity/FamilyFolderFavoriteViewEntity.auto.cs @@ -0,0 +1,178 @@ + +using CloudBuilder.Core.Authorization; +using CloudBuilder.Core.DatabaseAccessor.Entity; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +namespace CloudBuilder.Master.Entity + { + [TypeScript] + [Table("family_folder_favorite_view")] + public class FamilyFolderFavoriteViewEntity : ViewEntityBase + { + + public FamilyFolderFavoriteViewEntity() + { + } + + [Column("family_local_name")] + public string? FamilyLocalName { get; set; } + [Column("family_name")] + public string FamilyName { get; set; } + [Column("folder_local_name")] + public string? FolderLocalName { get; set; } + [Column("folder_name")] + public string FolderName { get; set; } + [Column("notice")] + public string? Notice { get; set; } + [Column("top_folder_local_name")] + public string? TopFolderLocalName { get; set; } + [Column("top_folder_name")] + public string TopFolderName { get; set; } + [Column("user_name")] + public string UserName { get; set; } + + public const string FAMILY_LOCAL_NAME = "FamilyLocalName"; + public const string FAMILY_NAME = "FamilyName"; + public const string FOLDER_LOCAL_NAME = "FolderLocalName"; + public const string FOLDER_NAME = "FolderName"; + public const string NOTICE = "Notice"; + public const string TOP_FOLDER_LOCAL_NAME = "TopFolderLocalName"; + public const string TOP_FOLDER_NAME = "TopFolderName"; + public const string USER_NAME = "UserName"; + + public const string DB_NAME_FAMILY_FOLDER_FAVORITE_VIEW = "family_folder_favorite_view"; + public const string DB_NAME_FIELDS="family_local_name,family_name,folder_local_name,folder_name,notice,top_folder_local_name,top_folder_name,user_name"; + + public const string DB_FAMILY_LOCAL_NAME = "family_local_name"; + public const string DB_FAMILY_NAME = "family_name"; + public const string DB_FOLDER_LOCAL_NAME = "folder_local_name"; + public const string DB_FOLDER_NAME = "folder_name"; + public const string DB_NOTICE = "notice"; + public const string DB_TOP_FOLDER_LOCAL_NAME = "top_folder_local_name"; + public const string DB_TOP_FOLDER_NAME = "top_folder_name"; + public const string DB_USER_NAME = "user_name"; + + private string ProviderName { get; set; } + + public static FamilyFolderFavoriteViewEntity GetInstance(string providerName) + { + return new FamilyFolderFavoriteViewEntity() { ProviderName = providerName }; + } + + public virtual void CopyFrom(FamilyFolderFavoriteViewEntity source) + { + CopyFrom(source, true); + } + + public virtual void CopyFrom(FamilyFolderFavoriteViewEntity source, bool includeSystemFields) + { + if (source == null) + { + throw new NullReferenceException("Source entity is null."); + } + + this.FamilyLocalName = source.FamilyLocalName; + this.FamilyName = source.FamilyName; + this.FolderLocalName = source.FolderLocalName; + this.FolderName = source.FolderName; + this.Notice = source.Notice; + this.TopFolderLocalName = source.TopFolderLocalName; + this.TopFolderName = source.TopFolderName; + this.UserName = source.UserName; + + if (includeSystemFields) + { + } + } + + public override string GetSelectFrom() + { + if (ProviderName.Contains("MySql")) + { + return GetSelectFromByMySql(); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectFromByBySqlServer(); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + public string GetSelectFromByMySql() + { + return $" select {DB_NAME_FIELDS} from { DB_NAME_FAMILY_FOLDER_FAVORITE_VIEW} with(nolock) "; + } + public string GetSelectFromByBySqlServer() + { + return $" select {DB_NAME_FIELDS} from { DB_NAME_FAMILY_FOLDER_FAVORITE_VIEW} "; + } + + public override string GetSelectCountFrom(string sqlWhere) + { + if (ProviderName.Contains("MySql")) + { + return GetSelectCountFromByMySql(sqlWhere); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectCountFromBySqlServer(sqlWhere); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + + public string GetSelectCountFromByMySql(string sqlWhere) + { + return $" select count(*) from { DB_NAME_FAMILY_FOLDER_FAVORITE_VIEW} where 1=1 {sqlWhere}"; + } + public string GetSelectCountFromBySqlServer(string sqlWhere) + { + return $" select count(*) from { DB_NAME_FAMILY_FOLDER_FAVORITE_VIEW} with(nolock) where 1=1 {sqlWhere}"; + } + + public override string GetSelectTopFrom(int limit, int start, string orderby, string orderbytag, string sqlWhere) + { + if (ProviderName.Contains("MySql")) + { + return GetSelectTopFromByMySql(limit, start, orderby, orderbytag, sqlWhere); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectTopFromBySqlServer(limit, start, orderby, orderbytag, sqlWhere); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + + public string GetSelectTopFromByMySql(int limit, int start,string orderby,string orderbytag, string sqlWhere) + { + if (string.IsNullOrEmpty(orderbytag) || orderbytag.Trim() != "desc") orderbytag = "asc"; + + if (string.IsNullOrEmpty(orderby) || !DB_NAME_FIELDS.Contains(orderby)) orderby = DB_FAMILY_LOCAL_NAME ; int offset = limit * (start - 1); + return $" select {DB_NAME_FIELDS} from (select {DB_NAME_FIELDS} ,row_number() over(order by {orderby} {orderbytag}) as num from { DB_NAME_FAMILY_FOLDER_FAVORITE_VIEW} where 1=1 {sqlWhere} ) a where num> {offset} LIMIT {limit} "; + } + + public string GetSelectTopFromBySqlServer(int limit, int start,string orderby,string orderbytag, string sqlWhere) + { + if (string.IsNullOrEmpty(orderbytag) || orderbytag.Trim() != "desc") orderbytag = "asc"; + + if (string.IsNullOrEmpty(orderby) || !DB_NAME_FIELDS.Contains(orderby)) orderby = DB_FAMILY_LOCAL_NAME ; string top = limit > 0 ? $"top {limit}" : ""; + return $" select {top} {DB_NAME_FIELDS} from (select {DB_NAME_FIELDS} ,row_number() over(order by {orderby} {orderbytag}) as num from { DB_NAME_FAMILY_FOLDER_FAVORITE_VIEW} with(nolock) where 1=1 {sqlWhere} ) a where num> {limit * (start - 1)}"; + } + + public FamilyFolderFavoriteViewEntity Clone() + { + FamilyFolderFavoriteViewEntity result = new FamilyFolderFavoriteViewEntity(); + result.CopyFrom(this); + + return result; + } + + } +} diff --git a/CloudBuilder/CloudBuilder.Master/Entity/FamilyGroupEntity.auto.cs b/CloudBuilder/CloudBuilder.Master/Entity/FamilyGroupEntity.auto.cs new file mode 100644 index 0000000..b55b522 --- /dev/null +++ b/CloudBuilder/CloudBuilder.Master/Entity/FamilyGroupEntity.auto.cs @@ -0,0 +1,198 @@ + +using CloudBuilder.Core.Authorization; +using CloudBuilder.Core.DatabaseAccessor.Entity; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +namespace CloudBuilder.Master.Entity + { + [TypeScript] + [Table("family_group")] + public class FamilyGroupEntity : ViewEntityBase + { + + public FamilyGroupEntity() + { + } + + [Column("add_indc")] + public string AddIndc { get; set; } + [Column("created_by")] + public string CreatedBy { get; set; } + [Column("created_datetime")] + public DateTime CreatedDatetime { get; set; } + [Column("expire_datetime")] + public Nullable ExpireDatetime { get; set; } + [Column("family_local_name")] + public string? FamilyLocalName { get; set; } + [Key] + [Column("family_name")] + public string FamilyName { get; set; } + [Column("notice")] + public string? Notice { get; set; } + [Column("open_indc")] + public string OpenIndc { get; set; } + [Column("updated_by")] + public string UpdatedBy { get; set; } + [Column("updated_datetime")] + public DateTime UpdatedDatetime { get; set; } + [Column("valid_indc")] + public string ValidIndc { get; set; } + + public const string ADD_INDC = "AddIndc"; + public const string CREATED_BY = "CreatedBy"; + public const string CREATED_DATETIME = "CreatedDatetime"; + public const string EXPIRE_DATETIME = "ExpireDatetime"; + public const string FAMILY_LOCAL_NAME = "FamilyLocalName"; + public const string FAMILY_NAME = "FamilyName"; + public const string NOTICE = "Notice"; + public const string OPEN_INDC = "OpenIndc"; + public const string UPDATED_BY = "UpdatedBy"; + public const string UPDATED_DATETIME = "UpdatedDatetime"; + public const string VALID_INDC = "ValidIndc"; + + public const string DB_NAME_FAMILY_GROUP = "family_group"; + public const string DB_NAME_FIELDS="add_indc,created_by,created_datetime,expire_datetime,family_local_name,family_name,notice,open_indc,updated_by,updated_datetime,valid_indc"; + + public const string DB_ADD_INDC = "add_indc"; + public const string DB_CREATED_BY = "created_by"; + public const string DB_CREATED_DATETIME = "created_datetime"; + public const string DB_EXPIRE_DATETIME = "expire_datetime"; + public const string DB_FAMILY_LOCAL_NAME = "family_local_name"; + public const string DB_FAMILY_NAME = "family_name"; + public const string DB_NOTICE = "notice"; + public const string DB_OPEN_INDC = "open_indc"; + public const string DB_UPDATED_BY = "updated_by"; + public const string DB_UPDATED_DATETIME = "updated_datetime"; + public const string DB_VALID_INDC = "valid_indc"; + + private string ProviderName { get; set; } + + public static FamilyGroupEntity GetInstance(string providerName) + { + return new FamilyGroupEntity() { ProviderName = providerName }; + } + + public virtual void CopyFrom(FamilyGroupEntity source) + { + CopyFrom(source, true); + } + + public virtual void CopyFrom(FamilyGroupEntity source, bool includeSystemFields) + { + if (source == null) + { + throw new NullReferenceException("Source entity is null."); + } + + this.AddIndc = source.AddIndc; + this.CreatedBy = source.CreatedBy; + this.CreatedDatetime = source.CreatedDatetime; + this.ExpireDatetime = source.ExpireDatetime; + this.FamilyLocalName = source.FamilyLocalName; + this.FamilyName = source.FamilyName; + this.Notice = source.Notice; + this.OpenIndc = source.OpenIndc; + this.UpdatedBy = source.UpdatedBy; + this.UpdatedDatetime = source.UpdatedDatetime; + this.ValidIndc = source.ValidIndc; + + if (includeSystemFields) + { + this.CreatedBy = source.CreatedBy; + this.CreatedDatetime = source.CreatedDatetime; + this.UpdatedBy = source.UpdatedBy; + this.UpdatedDatetime = source.UpdatedDatetime; + } + } + + public override string GetSelectFrom() + { + if (ProviderName.Contains("MySql")) + { + return GetSelectFromByMySql(); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectFromByBySqlServer(); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + public string GetSelectFromByMySql() + { + return $" select {DB_NAME_FIELDS} from { DB_NAME_FAMILY_GROUP} with(nolock) "; + } + public string GetSelectFromByBySqlServer() + { + return $" select {DB_NAME_FIELDS} from { DB_NAME_FAMILY_GROUP} "; + } + + public override string GetSelectCountFrom(string sqlWhere) + { + if (ProviderName.Contains("MySql")) + { + return GetSelectCountFromByMySql(sqlWhere); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectCountFromBySqlServer(sqlWhere); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + + public string GetSelectCountFromByMySql(string sqlWhere) + { + return $" select count(*) from { DB_NAME_FAMILY_GROUP} where 1=1 {sqlWhere}"; + } + public string GetSelectCountFromBySqlServer(string sqlWhere) + { + return $" select count(*) from { DB_NAME_FAMILY_GROUP} with(nolock) where 1=1 {sqlWhere}"; + } + + public override string GetSelectTopFrom(int limit, int start, string orderby, string orderbytag, string sqlWhere) + { + if (ProviderName.Contains("MySql")) + { + return GetSelectTopFromByMySql(limit, start, orderby, orderbytag, sqlWhere); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectTopFromBySqlServer(limit, start, orderby, orderbytag, sqlWhere); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + + public string GetSelectTopFromByMySql(int limit, int start,string orderby,string orderbytag, string sqlWhere) + { + if (string.IsNullOrEmpty(orderbytag) || orderbytag.Trim() != "desc") orderbytag = "asc"; + if (string.IsNullOrEmpty(orderby) || !DB_NAME_FIELDS.Contains(orderby)) orderby = DB_FAMILY_NAME ; + int offset = limit * (start - 1); + return $" select {DB_NAME_FIELDS} from (select {DB_NAME_FIELDS} ,row_number() over(order by {orderby} {orderbytag}) as num from { DB_NAME_FAMILY_GROUP} where 1=1 {sqlWhere} ) a where num> {offset} LIMIT {limit} "; + } + + public string GetSelectTopFromBySqlServer(int limit, int start,string orderby,string orderbytag, string sqlWhere) + { + if (string.IsNullOrEmpty(orderbytag) || orderbytag.Trim() != "desc") orderbytag = "asc"; + if (string.IsNullOrEmpty(orderby) || !DB_NAME_FIELDS.Contains(orderby)) orderby = DB_FAMILY_NAME ; + string top = limit > 0 ? $"top {limit}" : ""; + return $" select {top} {DB_NAME_FIELDS} from (select {DB_NAME_FIELDS} ,row_number() over(order by {orderby} {orderbytag}) as num from { DB_NAME_FAMILY_GROUP} with(nolock) where 1=1 {sqlWhere} ) a where num> {limit * (start - 1)}"; + } + + public FamilyGroupEntity Clone() + { + FamilyGroupEntity result = new FamilyGroupEntity(); + result.CopyFrom(this); + + return result; + } + + } +} diff --git a/CloudBuilder/CloudBuilder.Master/Entity/FamilyGroupFolderEntity.auto.cs b/CloudBuilder/CloudBuilder.Master/Entity/FamilyGroupFolderEntity.auto.cs new file mode 100644 index 0000000..53405df --- /dev/null +++ b/CloudBuilder/CloudBuilder.Master/Entity/FamilyGroupFolderEntity.auto.cs @@ -0,0 +1,199 @@ + +using CloudBuilder.Core.Authorization; +using CloudBuilder.Core.DatabaseAccessor.Entity; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +namespace CloudBuilder.Master.Entity + { + [TypeScript] + [Table("family_group_folder")] + public class FamilyGroupFolderEntity : ViewEntityBase + { + + public FamilyGroupFolderEntity() + { + } + + [Column("created_by")] + public string CreatedBy { get; set; } + [Column("created_datetime")] + public DateTime CreatedDatetime { get; set; } + [Column("family_name")] + public string FamilyName { get; set; } + [Column("file_path")] + public string? FilePath { get; set; } + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + [Column("folder_id")] + public long FolderId { get; set; } + [Column("folder_local_name")] + public string? FolderLocalName { get; set; } + [Column("folder_name")] + public string FolderName { get; set; } + [Column("notice")] + public string? Notice { get; set; } + [Column("top_folder_name")] + public string TopFolderName { get; set; } + [Column("updated_by")] + public string UpdatedBy { get; set; } + [Column("updated_datetime")] + public DateTime UpdatedDatetime { get; set; } + + public const string CREATED_BY = "CreatedBy"; + public const string CREATED_DATETIME = "CreatedDatetime"; + public const string FAMILY_NAME = "FamilyName"; + public const string FILE_PATH = "FilePath"; + public const string FOLDER_ID = "FolderId"; + public const string FOLDER_LOCAL_NAME = "FolderLocalName"; + public const string FOLDER_NAME = "FolderName"; + public const string NOTICE = "Notice"; + public const string TOP_FOLDER_NAME = "TopFolderName"; + public const string UPDATED_BY = "UpdatedBy"; + public const string UPDATED_DATETIME = "UpdatedDatetime"; + + public const string DB_NAME_FAMILY_GROUP_FOLDER = "family_group_folder"; + public const string DB_NAME_FIELDS="created_by,created_datetime,family_name,file_path,folder_id,folder_local_name,folder_name,notice,top_folder_name,updated_by,updated_datetime"; + + public const string DB_CREATED_BY = "created_by"; + public const string DB_CREATED_DATETIME = "created_datetime"; + public const string DB_FAMILY_NAME = "family_name"; + public const string DB_FILE_PATH = "file_path"; + public const string DB_FOLDER_ID = "folder_id"; + public const string DB_FOLDER_LOCAL_NAME = "folder_local_name"; + public const string DB_FOLDER_NAME = "folder_name"; + public const string DB_NOTICE = "notice"; + public const string DB_TOP_FOLDER_NAME = "top_folder_name"; + public const string DB_UPDATED_BY = "updated_by"; + public const string DB_UPDATED_DATETIME = "updated_datetime"; + + private string ProviderName { get; set; } + + public static FamilyGroupFolderEntity GetInstance(string providerName) + { + return new FamilyGroupFolderEntity() { ProviderName = providerName }; + } + + public virtual void CopyFrom(FamilyGroupFolderEntity source) + { + CopyFrom(source, true); + } + + public virtual void CopyFrom(FamilyGroupFolderEntity source, bool includeSystemFields) + { + if (source == null) + { + throw new NullReferenceException("Source entity is null."); + } + + this.CreatedBy = source.CreatedBy; + this.CreatedDatetime = source.CreatedDatetime; + this.FamilyName = source.FamilyName; + this.FilePath = source.FilePath; + this.FolderId = source.FolderId; + this.FolderLocalName = source.FolderLocalName; + this.FolderName = source.FolderName; + this.Notice = source.Notice; + this.TopFolderName = source.TopFolderName; + this.UpdatedBy = source.UpdatedBy; + this.UpdatedDatetime = source.UpdatedDatetime; + + if (includeSystemFields) + { + this.CreatedBy = source.CreatedBy; + this.CreatedDatetime = source.CreatedDatetime; + this.UpdatedBy = source.UpdatedBy; + this.UpdatedDatetime = source.UpdatedDatetime; + } + } + + public override string GetSelectFrom() + { + if (ProviderName.Contains("MySql")) + { + return GetSelectFromByMySql(); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectFromByBySqlServer(); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + public string GetSelectFromByMySql() + { + return $" select {DB_NAME_FIELDS} from { DB_NAME_FAMILY_GROUP_FOLDER} with(nolock) "; + } + public string GetSelectFromByBySqlServer() + { + return $" select {DB_NAME_FIELDS} from { DB_NAME_FAMILY_GROUP_FOLDER} "; + } + + public override string GetSelectCountFrom(string sqlWhere) + { + if (ProviderName.Contains("MySql")) + { + return GetSelectCountFromByMySql(sqlWhere); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectCountFromBySqlServer(sqlWhere); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + + public string GetSelectCountFromByMySql(string sqlWhere) + { + return $" select count(*) from { DB_NAME_FAMILY_GROUP_FOLDER} where 1=1 {sqlWhere}"; + } + public string GetSelectCountFromBySqlServer(string sqlWhere) + { + return $" select count(*) from { DB_NAME_FAMILY_GROUP_FOLDER} with(nolock) where 1=1 {sqlWhere}"; + } + + public override string GetSelectTopFrom(int limit, int start, string orderby, string orderbytag, string sqlWhere) + { + if (ProviderName.Contains("MySql")) + { + return GetSelectTopFromByMySql(limit, start, orderby, orderbytag, sqlWhere); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectTopFromBySqlServer(limit, start, orderby, orderbytag, sqlWhere); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + + public string GetSelectTopFromByMySql(int limit, int start,string orderby,string orderbytag, string sqlWhere) + { + if (string.IsNullOrEmpty(orderbytag) || orderbytag.Trim() != "desc") orderbytag = "asc"; + if (string.IsNullOrEmpty(orderby) || !DB_NAME_FIELDS.Contains(orderby)) orderby = DB_FOLDER_ID ; + int offset = limit * (start - 1); + return $" select {DB_NAME_FIELDS} from (select {DB_NAME_FIELDS} ,row_number() over(order by {orderby} {orderbytag}) as num from { DB_NAME_FAMILY_GROUP_FOLDER} where 1=1 {sqlWhere} ) a where num> {offset} LIMIT {limit} "; + } + + public string GetSelectTopFromBySqlServer(int limit, int start,string orderby,string orderbytag, string sqlWhere) + { + if (string.IsNullOrEmpty(orderbytag) || orderbytag.Trim() != "desc") orderbytag = "asc"; + if (string.IsNullOrEmpty(orderby) || !DB_NAME_FIELDS.Contains(orderby)) orderby = DB_FOLDER_ID ; + string top = limit > 0 ? $"top {limit}" : ""; + return $" select {top} {DB_NAME_FIELDS} from (select {DB_NAME_FIELDS} ,row_number() over(order by {orderby} {orderbytag}) as num from { DB_NAME_FAMILY_GROUP_FOLDER} with(nolock) where 1=1 {sqlWhere} ) a where num> {limit * (start - 1)}"; + } + + public FamilyGroupFolderEntity Clone() + { + FamilyGroupFolderEntity result = new FamilyGroupFolderEntity(); + result.CopyFrom(this); + + return result; + } + + } +} diff --git a/CloudBuilder/CloudBuilder.Master/Entity/FamilyGroupManagerEntity.auto.cs b/CloudBuilder/CloudBuilder.Master/Entity/FamilyGroupManagerEntity.auto.cs new file mode 100644 index 0000000..02f0962 --- /dev/null +++ b/CloudBuilder/CloudBuilder.Master/Entity/FamilyGroupManagerEntity.auto.cs @@ -0,0 +1,187 @@ + +using CloudBuilder.Core.Authorization; +using CloudBuilder.Core.DatabaseAccessor.Entity; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +namespace CloudBuilder.Master.Entity + { + [TypeScript] + [Table("family_group_manager")] + public class FamilyGroupManagerEntity : EntityBase + { + + public FamilyGroupManagerEntity() + { + } + + [Column("created_by")] + public string CreatedBy { get; set; } + [Column("created_datetime")] + public DateTime CreatedDatetime { get; set; } + [Column("family_name")] + public string FamilyName { get; set; } + [Column("manager_indc")] + public string ManagerIndc { get; set; } + [Column("notice")] + public string Notice { get; set; } + [Column("updated_by")] + public string UpdatedBy { get; set; } + [Column("updated_datetime")] + public DateTime UpdatedDatetime { get; set; } + [Column("user_name")] + public string UserName { get; set; } + [Column("valid_indc")] + public string ValidIndc { get; set; } + + public const string CREATED_BY = "CreatedBy"; + public const string CREATED_DATETIME = "CreatedDatetime"; + public const string FAMILY_NAME = "FamilyName"; + public const string MANAGER_INDC = "ManagerIndc"; + public const string NOTICE = "Notice"; + public const string UPDATED_BY = "UpdatedBy"; + public const string UPDATED_DATETIME = "UpdatedDatetime"; + public const string USER_NAME = "UserName"; + public const string VALID_INDC = "ValidIndc"; + + public const string DB_NAME_FAMILY_GROUP_MANAGER = "family_group_manager"; + public const string DB_NAME_FIELDS="created_by,created_datetime,family_name,manager_indc,notice,updated_by,updated_datetime,user_name,valid_indc"; + + public const string DB_CREATED_BY = "created_by"; + public const string DB_CREATED_DATETIME = "created_datetime"; + public const string DB_FAMILY_NAME = "family_name"; + public const string DB_MANAGER_INDC = "manager_indc"; + public const string DB_NOTICE = "notice"; + public const string DB_UPDATED_BY = "updated_by"; + public const string DB_UPDATED_DATETIME = "updated_datetime"; + public const string DB_USER_NAME = "user_name"; + public const string DB_VALID_INDC = "valid_indc"; + + private string ProviderName { get; set; } + + public static FamilyGroupManagerEntity GetInstance(string providerName) + { + return new FamilyGroupManagerEntity() { ProviderName = providerName }; + } + + public virtual void CopyFrom(FamilyGroupManagerEntity source) + { + CopyFrom(source, true); + } + + public virtual void CopyFrom(FamilyGroupManagerEntity source, bool includeSystemFields) + { + if (source == null) + { + throw new NullReferenceException("Source entity is null."); + } + + this.CreatedBy = source.CreatedBy; + this.CreatedDatetime = source.CreatedDatetime; + this.FamilyName = source.FamilyName; + this.ManagerIndc = source.ManagerIndc; + this.Notice = source.Notice; + this.UpdatedBy = source.UpdatedBy; + this.UpdatedDatetime = source.UpdatedDatetime; + this.UserName = source.UserName; + this.ValidIndc = source.ValidIndc; + + if (includeSystemFields) + { + this.CreatedBy = source.CreatedBy; + this.CreatedDatetime = source.CreatedDatetime; + this.UpdatedBy = source.UpdatedBy; + this.UpdatedDatetime = source.UpdatedDatetime; + } + } + + public override string GetSelectFrom() + { + if (ProviderName.Contains("MySql")) + { + return GetSelectFromByMySql(); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectFromByBySqlServer(); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + public string GetSelectFromByMySql() + { + return $" select {DB_NAME_FIELDS} from { DB_NAME_FAMILY_GROUP_MANAGER} with(nolock) "; + } + public string GetSelectFromByBySqlServer() + { + return $" select {DB_NAME_FIELDS} from { DB_NAME_FAMILY_GROUP_MANAGER} "; + } + + public override string GetSelectCountFrom(string sqlWhere) + { + if (ProviderName.Contains("MySql")) + { + return GetSelectCountFromByMySql(sqlWhere); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectCountFromBySqlServer(sqlWhere); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + + public string GetSelectCountFromByMySql(string sqlWhere) + { + return $" select count(*) from { DB_NAME_FAMILY_GROUP_MANAGER} where 1=1 {sqlWhere}"; + } + public string GetSelectCountFromBySqlServer(string sqlWhere) + { + return $" select count(*) from { DB_NAME_FAMILY_GROUP_MANAGER} with(nolock) where 1=1 {sqlWhere}"; + } + + public override string GetSelectTopFrom(int limit, int start, string orderby, string orderbytag, string sqlWhere) + { + if (ProviderName.Contains("MySql")) + { + return GetSelectTopFromByMySql(limit, start, orderby, orderbytag, sqlWhere); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectTopFromBySqlServer(limit, start, orderby, orderbytag, sqlWhere); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + + public string GetSelectTopFromByMySql(int limit, int start,string orderby,string orderbytag, string sqlWhere) + { + if (string.IsNullOrEmpty(orderbytag) || orderbytag.Trim() != "desc") orderbytag = "asc"; + if (string.IsNullOrEmpty(orderby) || !DB_NAME_FIELDS.Contains(orderby)) orderby = DB_FAMILY_NAME ; + int offset = limit * (start - 1); + return $" select {DB_NAME_FIELDS} from (select {DB_NAME_FIELDS} ,row_number() over(order by {orderby} {orderbytag}) as num from { DB_NAME_FAMILY_GROUP_MANAGER} where 1=1 {sqlWhere} ) a where num> {offset} LIMIT {limit} "; + } + + public string GetSelectTopFromBySqlServer(int limit, int start,string orderby,string orderbytag, string sqlWhere) + { + if (string.IsNullOrEmpty(orderbytag) || orderbytag.Trim() != "desc") orderbytag = "asc"; + if (string.IsNullOrEmpty(orderby) || !DB_NAME_FIELDS.Contains(orderby)) orderby = DB_FAMILY_NAME ; + string top = limit > 0 ? $"top {limit}" : ""; + return $" select {top} {DB_NAME_FIELDS} from (select {DB_NAME_FIELDS} ,row_number() over(order by {orderby} {orderbytag}) as num from { DB_NAME_FAMILY_GROUP_MANAGER} with(nolock) where 1=1 {sqlWhere} ) a where num> {limit * (start - 1)}"; + } + + public FamilyGroupManagerEntity Clone() + { + FamilyGroupManagerEntity result = new FamilyGroupManagerEntity(); + result.CopyFrom(this); + + return result; + } + + } +} diff --git a/CloudBuilder/CloudBuilder.Master/Entity/FamilyGroupManagerEntityKey.auto.cs b/CloudBuilder/CloudBuilder.Master/Entity/FamilyGroupManagerEntityKey.auto.cs new file mode 100644 index 0000000..6ad2791 --- /dev/null +++ b/CloudBuilder/CloudBuilder.Master/Entity/FamilyGroupManagerEntityKey.auto.cs @@ -0,0 +1,33 @@ + +using CloudBuilder.Core.Authorization; +namespace CloudBuilder.Master +{ + [TypeScript] + public class FamilyGroupManagerEntityKey + { + public string FamilyName { get; set; } + public string UserName { get; set; } + + public override bool Equals(object obj) + { + if (this == obj) return true; + + FamilyGroupManagerEntityKey pkey = obj as FamilyGroupManagerEntityKey; + if (pkey == null) return false; + + if (FamilyName != pkey.FamilyName) return false; + if (UserName != pkey.UserName) return false; + + return true; + } + + + public override string ToString() + { + string declareSql=""; + declareSql=declareSql+$"declare @__tkey_FamilyName_0 varchar(50) select @__tkey_FamilyName_0 ='{FamilyName}'; " ; declareSql=declareSql+$"declare @__tkey_UserName_1 varchar(50) select @__tkey_UserName_1 ='{UserName}'; " ; + return declareSql; + } + } + } + /* builder.Entity().HasKey(c => new { c.FamilyName, c.UserName}); */ diff --git a/CloudBuilder/CloudBuilder.Master/Entity/FamilyGroupManagerUserViewEntity.auto.cs b/CloudBuilder/CloudBuilder.Master/Entity/FamilyGroupManagerUserViewEntity.auto.cs new file mode 100644 index 0000000..8e7fe75 --- /dev/null +++ b/CloudBuilder/CloudBuilder.Master/Entity/FamilyGroupManagerUserViewEntity.auto.cs @@ -0,0 +1,168 @@ + +using CloudBuilder.Core.Authorization; +using CloudBuilder.Core.DatabaseAccessor.Entity; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +namespace CloudBuilder.Master.Entity + { + [TypeScript] + [Table("family_group_manager_user_view")] + public class FamilyGroupManagerUserViewEntity : ViewEntityBase + { + + public FamilyGroupManagerUserViewEntity() + { + } + + [Column("family_local_name")] + public string? FamilyLocalName { get; set; } + [Column("family_name")] + public string FamilyName { get; set; } + [Column("manager_indc")] + public string ManagerIndc { get; set; } + [Column("user_local_name")] + public string UserLocalName { get; set; } + [Column("user_name")] + public string UserName { get; set; } + [Column("valid_indc")] + public string ValidIndc { get; set; } + + public const string FAMILY_LOCAL_NAME = "FamilyLocalName"; + public const string FAMILY_NAME = "FamilyName"; + public const string MANAGER_INDC = "ManagerIndc"; + public const string USER_LOCAL_NAME = "UserLocalName"; + public const string USER_NAME = "UserName"; + public const string VALID_INDC = "ValidIndc"; + + public const string DB_NAME_FAMILY_GROUP_MANAGER_USER_VIEW = "family_group_manager_user_view"; + public const string DB_NAME_FIELDS="family_local_name,family_name,manager_indc,user_local_name,user_name,valid_indc"; + + public const string DB_FAMILY_LOCAL_NAME = "family_local_name"; + public const string DB_FAMILY_NAME = "family_name"; + public const string DB_MANAGER_INDC = "manager_indc"; + public const string DB_USER_LOCAL_NAME = "user_local_name"; + public const string DB_USER_NAME = "user_name"; + public const string DB_VALID_INDC = "valid_indc"; + + private string ProviderName { get; set; } + + public static FamilyGroupManagerUserViewEntity GetInstance(string providerName) + { + return new FamilyGroupManagerUserViewEntity() { ProviderName = providerName }; + } + + public virtual void CopyFrom(FamilyGroupManagerUserViewEntity source) + { + CopyFrom(source, true); + } + + public virtual void CopyFrom(FamilyGroupManagerUserViewEntity source, bool includeSystemFields) + { + if (source == null) + { + throw new NullReferenceException("Source entity is null."); + } + + this.FamilyLocalName = source.FamilyLocalName; + this.FamilyName = source.FamilyName; + this.ManagerIndc = source.ManagerIndc; + this.UserLocalName = source.UserLocalName; + this.UserName = source.UserName; + this.ValidIndc = source.ValidIndc; + + if (includeSystemFields) + { + } + } + + public override string GetSelectFrom() + { + if (ProviderName.Contains("MySql")) + { + return GetSelectFromByMySql(); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectFromByBySqlServer(); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + public string GetSelectFromByMySql() + { + return $" select {DB_NAME_FIELDS} from { DB_NAME_FAMILY_GROUP_MANAGER_USER_VIEW} with(nolock) "; + } + public string GetSelectFromByBySqlServer() + { + return $" select {DB_NAME_FIELDS} from { DB_NAME_FAMILY_GROUP_MANAGER_USER_VIEW} "; + } + + public override string GetSelectCountFrom(string sqlWhere) + { + if (ProviderName.Contains("MySql")) + { + return GetSelectCountFromByMySql(sqlWhere); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectCountFromBySqlServer(sqlWhere); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + + public string GetSelectCountFromByMySql(string sqlWhere) + { + return $" select count(*) from { DB_NAME_FAMILY_GROUP_MANAGER_USER_VIEW} where 1=1 {sqlWhere}"; + } + public string GetSelectCountFromBySqlServer(string sqlWhere) + { + return $" select count(*) from { DB_NAME_FAMILY_GROUP_MANAGER_USER_VIEW} with(nolock) where 1=1 {sqlWhere}"; + } + + public override string GetSelectTopFrom(int limit, int start, string orderby, string orderbytag, string sqlWhere) + { + if (ProviderName.Contains("MySql")) + { + return GetSelectTopFromByMySql(limit, start, orderby, orderbytag, sqlWhere); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectTopFromBySqlServer(limit, start, orderby, orderbytag, sqlWhere); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + + public string GetSelectTopFromByMySql(int limit, int start,string orderby,string orderbytag, string sqlWhere) + { + if (string.IsNullOrEmpty(orderbytag) || orderbytag.Trim() != "desc") orderbytag = "asc"; + + if (string.IsNullOrEmpty(orderby) || !DB_NAME_FIELDS.Contains(orderby)) orderby = DB_FAMILY_LOCAL_NAME ; int offset = limit * (start - 1); + return $" select {DB_NAME_FIELDS} from (select {DB_NAME_FIELDS} ,row_number() over(order by {orderby} {orderbytag}) as num from { DB_NAME_FAMILY_GROUP_MANAGER_USER_VIEW} where 1=1 {sqlWhere} ) a where num> {offset} LIMIT {limit} "; + } + + public string GetSelectTopFromBySqlServer(int limit, int start,string orderby,string orderbytag, string sqlWhere) + { + if (string.IsNullOrEmpty(orderbytag) || orderbytag.Trim() != "desc") orderbytag = "asc"; + + if (string.IsNullOrEmpty(orderby) || !DB_NAME_FIELDS.Contains(orderby)) orderby = DB_FAMILY_LOCAL_NAME ; string top = limit > 0 ? $"top {limit}" : ""; + return $" select {top} {DB_NAME_FIELDS} from (select {DB_NAME_FIELDS} ,row_number() over(order by {orderby} {orderbytag}) as num from { DB_NAME_FAMILY_GROUP_MANAGER_USER_VIEW} with(nolock) where 1=1 {sqlWhere} ) a where num> {limit * (start - 1)}"; + } + + public FamilyGroupManagerUserViewEntity Clone() + { + FamilyGroupManagerUserViewEntity result = new FamilyGroupManagerUserViewEntity(); + result.CopyFrom(this); + + return result; + } + + } +} diff --git a/CloudBuilder/CloudBuilder.Master/Entity/FamilyGroupPermissionEntity.auto.cs b/CloudBuilder/CloudBuilder.Master/Entity/FamilyGroupPermissionEntity.auto.cs new file mode 100644 index 0000000..5754be9 --- /dev/null +++ b/CloudBuilder/CloudBuilder.Master/Entity/FamilyGroupPermissionEntity.auto.cs @@ -0,0 +1,187 @@ + +using CloudBuilder.Core.Authorization; +using CloudBuilder.Core.DatabaseAccessor.Entity; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +namespace CloudBuilder.Master.Entity + { + [TypeScript] + [Table("family_group_permission")] + public class FamilyGroupPermissionEntity : EntityBase + { + + public FamilyGroupPermissionEntity() + { + } + + [Column("create_indc")] + public string CreateIndc { get; set; } + [Column("created_by")] + public string CreatedBy { get; set; } + [Column("created_datetime")] + public DateTime CreatedDatetime { get; set; } + [Column("delete_indc")] + public string DeleteIndc { get; set; } + [Column("family_name")] + public string FamilyName { get; set; } + [Column("folder_name")] + public string FolderName { get; set; } + [Column("updated_by")] + public string UpdatedBy { get; set; } + [Column("updated_datetime")] + public DateTime UpdatedDatetime { get; set; } + [Column("user_name")] + public string UserName { get; set; } + + public const string CREATE_INDC = "CreateIndc"; + public const string CREATED_BY = "CreatedBy"; + public const string CREATED_DATETIME = "CreatedDatetime"; + public const string DELETE_INDC = "DeleteIndc"; + public const string FAMILY_NAME = "FamilyName"; + public const string FOLDER_NAME = "FolderName"; + public const string UPDATED_BY = "UpdatedBy"; + public const string UPDATED_DATETIME = "UpdatedDatetime"; + public const string USER_NAME = "UserName"; + + public const string DB_NAME_FAMILY_GROUP_PERMISSION = "family_group_permission"; + public const string DB_NAME_FIELDS="create_indc,created_by,created_datetime,delete_indc,family_name,folder_name,updated_by,updated_datetime,user_name"; + + public const string DB_CREATE_INDC = "create_indc"; + public const string DB_CREATED_BY = "created_by"; + public const string DB_CREATED_DATETIME = "created_datetime"; + public const string DB_DELETE_INDC = "delete_indc"; + public const string DB_FAMILY_NAME = "family_name"; + public const string DB_FOLDER_NAME = "folder_name"; + public const string DB_UPDATED_BY = "updated_by"; + public const string DB_UPDATED_DATETIME = "updated_datetime"; + public const string DB_USER_NAME = "user_name"; + + private string ProviderName { get; set; } + + public static FamilyGroupPermissionEntity GetInstance(string providerName) + { + return new FamilyGroupPermissionEntity() { ProviderName = providerName }; + } + + public virtual void CopyFrom(FamilyGroupPermissionEntity source) + { + CopyFrom(source, true); + } + + public virtual void CopyFrom(FamilyGroupPermissionEntity source, bool includeSystemFields) + { + if (source == null) + { + throw new NullReferenceException("Source entity is null."); + } + + this.CreateIndc = source.CreateIndc; + this.CreatedBy = source.CreatedBy; + this.CreatedDatetime = source.CreatedDatetime; + this.DeleteIndc = source.DeleteIndc; + this.FamilyName = source.FamilyName; + this.FolderName = source.FolderName; + this.UpdatedBy = source.UpdatedBy; + this.UpdatedDatetime = source.UpdatedDatetime; + this.UserName = source.UserName; + + if (includeSystemFields) + { + this.CreatedBy = source.CreatedBy; + this.CreatedDatetime = source.CreatedDatetime; + this.UpdatedBy = source.UpdatedBy; + this.UpdatedDatetime = source.UpdatedDatetime; + } + } + + public override string GetSelectFrom() + { + if (ProviderName.Contains("MySql")) + { + return GetSelectFromByMySql(); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectFromByBySqlServer(); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + public string GetSelectFromByMySql() + { + return $" select {DB_NAME_FIELDS} from { DB_NAME_FAMILY_GROUP_PERMISSION} with(nolock) "; + } + public string GetSelectFromByBySqlServer() + { + return $" select {DB_NAME_FIELDS} from { DB_NAME_FAMILY_GROUP_PERMISSION} "; + } + + public override string GetSelectCountFrom(string sqlWhere) + { + if (ProviderName.Contains("MySql")) + { + return GetSelectCountFromByMySql(sqlWhere); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectCountFromBySqlServer(sqlWhere); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + + public string GetSelectCountFromByMySql(string sqlWhere) + { + return $" select count(*) from { DB_NAME_FAMILY_GROUP_PERMISSION} where 1=1 {sqlWhere}"; + } + public string GetSelectCountFromBySqlServer(string sqlWhere) + { + return $" select count(*) from { DB_NAME_FAMILY_GROUP_PERMISSION} with(nolock) where 1=1 {sqlWhere}"; + } + + public override string GetSelectTopFrom(int limit, int start, string orderby, string orderbytag, string sqlWhere) + { + if (ProviderName.Contains("MySql")) + { + return GetSelectTopFromByMySql(limit, start, orderby, orderbytag, sqlWhere); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectTopFromBySqlServer(limit, start, orderby, orderbytag, sqlWhere); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + + public string GetSelectTopFromByMySql(int limit, int start,string orderby,string orderbytag, string sqlWhere) + { + if (string.IsNullOrEmpty(orderbytag) || orderbytag.Trim() != "desc") orderbytag = "asc"; + if (string.IsNullOrEmpty(orderby) || !DB_NAME_FIELDS.Contains(orderby)) orderby = DB_FAMILY_NAME ; + int offset = limit * (start - 1); + return $" select {DB_NAME_FIELDS} from (select {DB_NAME_FIELDS} ,row_number() over(order by {orderby} {orderbytag}) as num from { DB_NAME_FAMILY_GROUP_PERMISSION} where 1=1 {sqlWhere} ) a where num> {offset} LIMIT {limit} "; + } + + public string GetSelectTopFromBySqlServer(int limit, int start,string orderby,string orderbytag, string sqlWhere) + { + if (string.IsNullOrEmpty(orderbytag) || orderbytag.Trim() != "desc") orderbytag = "asc"; + if (string.IsNullOrEmpty(orderby) || !DB_NAME_FIELDS.Contains(orderby)) orderby = DB_FAMILY_NAME ; + string top = limit > 0 ? $"top {limit}" : ""; + return $" select {top} {DB_NAME_FIELDS} from (select {DB_NAME_FIELDS} ,row_number() over(order by {orderby} {orderbytag}) as num from { DB_NAME_FAMILY_GROUP_PERMISSION} with(nolock) where 1=1 {sqlWhere} ) a where num> {limit * (start - 1)}"; + } + + public FamilyGroupPermissionEntity Clone() + { + FamilyGroupPermissionEntity result = new FamilyGroupPermissionEntity(); + result.CopyFrom(this); + + return result; + } + + } +} diff --git a/CloudBuilder/CloudBuilder.Master/Entity/FamilyGroupPermissionEntityKey.auto.cs b/CloudBuilder/CloudBuilder.Master/Entity/FamilyGroupPermissionEntityKey.auto.cs new file mode 100644 index 0000000..dab5d05 --- /dev/null +++ b/CloudBuilder/CloudBuilder.Master/Entity/FamilyGroupPermissionEntityKey.auto.cs @@ -0,0 +1,35 @@ + +using CloudBuilder.Core.Authorization; +namespace CloudBuilder.Master +{ + [TypeScript] + public class FamilyGroupPermissionEntityKey + { + public string FamilyName { get; set; } + public string FolderName { get; set; } + public string UserName { get; set; } + + public override bool Equals(object obj) + { + if (this == obj) return true; + + FamilyGroupPermissionEntityKey pkey = obj as FamilyGroupPermissionEntityKey; + if (pkey == null) return false; + + if (FamilyName != pkey.FamilyName) return false; + if (FolderName != pkey.FolderName) return false; + if (UserName != pkey.UserName) return false; + + return true; + } + + + public override string ToString() + { + string declareSql=""; + declareSql=declareSql+$"declare @__tkey_FamilyName_0 varchar(50) select @__tkey_FamilyName_0 ='{FamilyName}'; " ; declareSql=declareSql+$"declare @__tkey_FolderName_1 varchar(50) select @__tkey_FolderName_1 ='{FolderName}'; " ; declareSql=declareSql+$"declare @__tkey_UserName_2 varchar(50) select @__tkey_UserName_2 ='{UserName}'; " ; + return declareSql; + } + } + } + /* builder.Entity().HasKey(c => new { c.FamilyName, c.FolderName, c.UserName}); */ diff --git a/CloudBuilder/CloudBuilder.Master/Entity/FamilyGroupPermissionUserFolderViewEntity.auto.cs b/CloudBuilder/CloudBuilder.Master/Entity/FamilyGroupPermissionUserFolderViewEntity.auto.cs new file mode 100644 index 0000000..11ee623 --- /dev/null +++ b/CloudBuilder/CloudBuilder.Master/Entity/FamilyGroupPermissionUserFolderViewEntity.auto.cs @@ -0,0 +1,173 @@ + +using CloudBuilder.Core.Authorization; +using CloudBuilder.Core.DatabaseAccessor.Entity; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +namespace CloudBuilder.Master.Entity + { + [TypeScript] + [Table("family_group_permission_user_folder_view")] + public class FamilyGroupPermissionUserFolderViewEntity : ViewEntityBase + { + + public FamilyGroupPermissionUserFolderViewEntity() + { + } + + [Column("family_name")] + public string FamilyName { get; set; } + [Column("file_path")] + public string FilePath { get; set; } + [Column("folder_local_name")] + public string? FolderLocalName { get; set; } + [Column("folder_name")] + public string FolderName { get; set; } + [Column("notice")] + public string? Notice { get; set; } + [Column("user_local_name")] + public string UserLocalName { get; set; } + [Column("user_name")] + public string UserName { get; set; } + + public const string FAMILY_NAME = "FamilyName"; + public const string FILE_PATH = "FilePath"; + public const string FOLDER_LOCAL_NAME = "FolderLocalName"; + public const string FOLDER_NAME = "FolderName"; + public const string NOTICE = "Notice"; + public const string USER_LOCAL_NAME = "UserLocalName"; + public const string USER_NAME = "UserName"; + + public const string DB_NAME_FAMILY_GROUP_PERMISSION_USER_FOLDER_VIEW = "family_group_permission_user_folder_view"; + public const string DB_NAME_FIELDS="family_name,file_path,folder_local_name,folder_name,notice,user_local_name,user_name"; + + public const string DB_FAMILY_NAME = "family_name"; + public const string DB_FILE_PATH = "file_path"; + public const string DB_FOLDER_LOCAL_NAME = "folder_local_name"; + public const string DB_FOLDER_NAME = "folder_name"; + public const string DB_NOTICE = "notice"; + public const string DB_USER_LOCAL_NAME = "user_local_name"; + public const string DB_USER_NAME = "user_name"; + + private string ProviderName { get; set; } + + public static FamilyGroupPermissionUserFolderViewEntity GetInstance(string providerName) + { + return new FamilyGroupPermissionUserFolderViewEntity() { ProviderName = providerName }; + } + + public virtual void CopyFrom(FamilyGroupPermissionUserFolderViewEntity source) + { + CopyFrom(source, true); + } + + public virtual void CopyFrom(FamilyGroupPermissionUserFolderViewEntity source, bool includeSystemFields) + { + if (source == null) + { + throw new NullReferenceException("Source entity is null."); + } + + this.FamilyName = source.FamilyName; + this.FilePath = source.FilePath; + this.FolderLocalName = source.FolderLocalName; + this.FolderName = source.FolderName; + this.Notice = source.Notice; + this.UserLocalName = source.UserLocalName; + this.UserName = source.UserName; + + if (includeSystemFields) + { + } + } + + public override string GetSelectFrom() + { + if (ProviderName.Contains("MySql")) + { + return GetSelectFromByMySql(); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectFromByBySqlServer(); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + public string GetSelectFromByMySql() + { + return $" select {DB_NAME_FIELDS} from { DB_NAME_FAMILY_GROUP_PERMISSION_USER_FOLDER_VIEW} with(nolock) "; + } + public string GetSelectFromByBySqlServer() + { + return $" select {DB_NAME_FIELDS} from { DB_NAME_FAMILY_GROUP_PERMISSION_USER_FOLDER_VIEW} "; + } + + public override string GetSelectCountFrom(string sqlWhere) + { + if (ProviderName.Contains("MySql")) + { + return GetSelectCountFromByMySql(sqlWhere); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectCountFromBySqlServer(sqlWhere); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + + public string GetSelectCountFromByMySql(string sqlWhere) + { + return $" select count(*) from { DB_NAME_FAMILY_GROUP_PERMISSION_USER_FOLDER_VIEW} where 1=1 {sqlWhere}"; + } + public string GetSelectCountFromBySqlServer(string sqlWhere) + { + return $" select count(*) from { DB_NAME_FAMILY_GROUP_PERMISSION_USER_FOLDER_VIEW} with(nolock) where 1=1 {sqlWhere}"; + } + + public override string GetSelectTopFrom(int limit, int start, string orderby, string orderbytag, string sqlWhere) + { + if (ProviderName.Contains("MySql")) + { + return GetSelectTopFromByMySql(limit, start, orderby, orderbytag, sqlWhere); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectTopFromBySqlServer(limit, start, orderby, orderbytag, sqlWhere); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + + public string GetSelectTopFromByMySql(int limit, int start,string orderby,string orderbytag, string sqlWhere) + { + if (string.IsNullOrEmpty(orderbytag) || orderbytag.Trim() != "desc") orderbytag = "asc"; + + if (string.IsNullOrEmpty(orderby) || !DB_NAME_FIELDS.Contains(orderby)) orderby = DB_FAMILY_NAME ; int offset = limit * (start - 1); + return $" select {DB_NAME_FIELDS} from (select {DB_NAME_FIELDS} ,row_number() over(order by {orderby} {orderbytag}) as num from { DB_NAME_FAMILY_GROUP_PERMISSION_USER_FOLDER_VIEW} where 1=1 {sqlWhere} ) a where num> {offset} LIMIT {limit} "; + } + + public string GetSelectTopFromBySqlServer(int limit, int start,string orderby,string orderbytag, string sqlWhere) + { + if (string.IsNullOrEmpty(orderbytag) || orderbytag.Trim() != "desc") orderbytag = "asc"; + + if (string.IsNullOrEmpty(orderby) || !DB_NAME_FIELDS.Contains(orderby)) orderby = DB_FAMILY_NAME ; string top = limit > 0 ? $"top {limit}" : ""; + return $" select {top} {DB_NAME_FIELDS} from (select {DB_NAME_FIELDS} ,row_number() over(order by {orderby} {orderbytag}) as num from { DB_NAME_FAMILY_GROUP_PERMISSION_USER_FOLDER_VIEW} with(nolock) where 1=1 {sqlWhere} ) a where num> {limit * (start - 1)}"; + } + + public FamilyGroupPermissionUserFolderViewEntity Clone() + { + FamilyGroupPermissionUserFolderViewEntity result = new FamilyGroupPermissionUserFolderViewEntity(); + result.CopyFrom(this); + + return result; + } + + } +} diff --git a/CloudBuilder/CloudBuilder.Master/Entity/PublishAudioDetailEntity.auto.cs b/CloudBuilder/CloudBuilder.Master/Entity/PublishAudioDetailEntity.auto.cs new file mode 100644 index 0000000..1ee7da7 --- /dev/null +++ b/CloudBuilder/CloudBuilder.Master/Entity/PublishAudioDetailEntity.auto.cs @@ -0,0 +1,214 @@ + +using CloudBuilder.Core.Authorization; +using CloudBuilder.Core.DatabaseAccessor.Entity; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +namespace CloudBuilder.Master.Entity + { + [TypeScript] + [Table("publish_audio_detail")] + public class PublishAudioDetailEntity : ViewEntityBase + { + + public PublishAudioDetailEntity() + { + } + + [Column("author")] + public string? Author { get; set; } + [Column("created_by")] + public string CreatedBy { get; set; } + [Column("created_datetime")] + public DateTime CreatedDatetime { get; set; } + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + [Column("detail_id")] + public long DetailId { get; set; } + [Column("lrc")] + public string? Lrc { get; set; } + [Column("notice")] + public string? Notice { get; set; } + [Column("order_by")] + public int OrderBy { get; set; } + [Column("owner_name")] + public string OwnerName { get; set; } + [Column("pic")] + public string? Pic { get; set; } + [Column("publish_name")] + public string PublishName { get; set; } + [Column("title")] + public string Title { get; set; } + [Column("updated_by")] + public string UpdatedBy { get; set; } + [Column("updated_datetime")] + public DateTime UpdatedDatetime { get; set; } + [Column("url")] + public string Url { get; set; } + + public const string AUTHOR = "Author"; + public const string CREATED_BY = "CreatedBy"; + public const string CREATED_DATETIME = "CreatedDatetime"; + public const string DETAIL_ID = "DetailId"; + public const string LRC = "Lrc"; + public const string NOTICE = "Notice"; + public const string ORDER_BY = "OrderBy"; + public const string OWNER_NAME = "OwnerName"; + public const string PIC = "Pic"; + public const string PUBLISH_NAME = "PublishName"; + public const string TITLE = "Title"; + public const string UPDATED_BY = "UpdatedBy"; + public const string UPDATED_DATETIME = "UpdatedDatetime"; + public const string URL = "Url"; + + public const string DB_NAME_PUBLISH_AUDIO_DETAIL = "publish_audio_detail"; + public const string DB_NAME_FIELDS="author,created_by,created_datetime,detail_id,lrc,notice,order_by,owner_name,pic,publish_name,title,updated_by,updated_datetime,url"; + + public const string DB_AUTHOR = "author"; + public const string DB_CREATED_BY = "created_by"; + public const string DB_CREATED_DATETIME = "created_datetime"; + public const string DB_DETAIL_ID = "detail_id"; + public const string DB_LRC = "lrc"; + public const string DB_NOTICE = "notice"; + public const string DB_ORDER_BY = "order_by"; + public const string DB_OWNER_NAME = "owner_name"; + public const string DB_PIC = "pic"; + public const string DB_PUBLISH_NAME = "publish_name"; + public const string DB_TITLE = "title"; + public const string DB_UPDATED_BY = "updated_by"; + public const string DB_UPDATED_DATETIME = "updated_datetime"; + public const string DB_URL = "url"; + + private string ProviderName { get; set; } + + public static PublishAudioDetailEntity GetInstance(string providerName) + { + return new PublishAudioDetailEntity() { ProviderName = providerName }; + } + + public virtual void CopyFrom(PublishAudioDetailEntity source) + { + CopyFrom(source, true); + } + + public virtual void CopyFrom(PublishAudioDetailEntity source, bool includeSystemFields) + { + if (source == null) + { + throw new NullReferenceException("Source entity is null."); + } + + this.Author = source.Author; + this.CreatedBy = source.CreatedBy; + this.CreatedDatetime = source.CreatedDatetime; + this.DetailId = source.DetailId; + this.Lrc = source.Lrc; + this.Notice = source.Notice; + this.OrderBy = source.OrderBy; + this.OwnerName = source.OwnerName; + this.Pic = source.Pic; + this.PublishName = source.PublishName; + this.Title = source.Title; + this.UpdatedBy = source.UpdatedBy; + this.UpdatedDatetime = source.UpdatedDatetime; + this.Url = source.Url; + + if (includeSystemFields) + { + this.CreatedBy = source.CreatedBy; + this.CreatedDatetime = source.CreatedDatetime; + this.UpdatedBy = source.UpdatedBy; + this.UpdatedDatetime = source.UpdatedDatetime; + } + } + + public override string GetSelectFrom() + { + if (ProviderName.Contains("MySql")) + { + return GetSelectFromByMySql(); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectFromByBySqlServer(); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + public string GetSelectFromByMySql() + { + return $" select {DB_NAME_FIELDS} from { DB_NAME_PUBLISH_AUDIO_DETAIL} with(nolock) "; + } + public string GetSelectFromByBySqlServer() + { + return $" select {DB_NAME_FIELDS} from { DB_NAME_PUBLISH_AUDIO_DETAIL} "; + } + + public override string GetSelectCountFrom(string sqlWhere) + { + if (ProviderName.Contains("MySql")) + { + return GetSelectCountFromByMySql(sqlWhere); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectCountFromBySqlServer(sqlWhere); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + + public string GetSelectCountFromByMySql(string sqlWhere) + { + return $" select count(*) from { DB_NAME_PUBLISH_AUDIO_DETAIL} where 1=1 {sqlWhere}"; + } + public string GetSelectCountFromBySqlServer(string sqlWhere) + { + return $" select count(*) from { DB_NAME_PUBLISH_AUDIO_DETAIL} with(nolock) where 1=1 {sqlWhere}"; + } + + public override string GetSelectTopFrom(int limit, int start, string orderby, string orderbytag, string sqlWhere) + { + if (ProviderName.Contains("MySql")) + { + return GetSelectTopFromByMySql(limit, start, orderby, orderbytag, sqlWhere); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectTopFromBySqlServer(limit, start, orderby, orderbytag, sqlWhere); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + + public string GetSelectTopFromByMySql(int limit, int start,string orderby,string orderbytag, string sqlWhere) + { + if (string.IsNullOrEmpty(orderbytag) || orderbytag.Trim() != "desc") orderbytag = "asc"; + if (string.IsNullOrEmpty(orderby) || !DB_NAME_FIELDS.Contains(orderby)) orderby = DB_DETAIL_ID ; + int offset = limit * (start - 1); + return $" select {DB_NAME_FIELDS} from (select {DB_NAME_FIELDS} ,row_number() over(order by {orderby} {orderbytag}) as num from { DB_NAME_PUBLISH_AUDIO_DETAIL} where 1=1 {sqlWhere} ) a where num> {offset} LIMIT {limit} "; + } + + public string GetSelectTopFromBySqlServer(int limit, int start,string orderby,string orderbytag, string sqlWhere) + { + if (string.IsNullOrEmpty(orderbytag) || orderbytag.Trim() != "desc") orderbytag = "asc"; + if (string.IsNullOrEmpty(orderby) || !DB_NAME_FIELDS.Contains(orderby)) orderby = DB_DETAIL_ID ; + string top = limit > 0 ? $"top {limit}" : ""; + return $" select {top} {DB_NAME_FIELDS} from (select {DB_NAME_FIELDS} ,row_number() over(order by {orderby} {orderbytag}) as num from { DB_NAME_PUBLISH_AUDIO_DETAIL} with(nolock) where 1=1 {sqlWhere} ) a where num> {limit * (start - 1)}"; + } + + public PublishAudioDetailEntity Clone() + { + PublishAudioDetailEntity result = new PublishAudioDetailEntity(); + result.CopyFrom(this); + + return result; + } + + } +} diff --git a/CloudBuilder/CloudBuilder.Master/Entity/PublishAudioEntity.auto.cs b/CloudBuilder/CloudBuilder.Master/Entity/PublishAudioEntity.auto.cs new file mode 100644 index 0000000..7d7a39f --- /dev/null +++ b/CloudBuilder/CloudBuilder.Master/Entity/PublishAudioEntity.auto.cs @@ -0,0 +1,203 @@ + +using CloudBuilder.Core.Authorization; +using CloudBuilder.Core.DatabaseAccessor.Entity; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +namespace CloudBuilder.Master.Entity + { + [TypeScript] + [Table("publish_audio")] + public class PublishAudioEntity : ViewEntityBase + { + + public PublishAudioEntity() + { + } + + [Column("created_by")] + public string CreatedBy { get; set; } + [Column("created_datetime")] + public DateTime CreatedDatetime { get; set; } + [Column("default_indc")] + public string DefaultIndc { get; set; } + [Column("expire_datetime")] + public DateTime ExpireDatetime { get; set; } + [Column("notice")] + public string? Notice { get; set; } + [Column("open_indc")] + public string OpenIndc { get; set; } + [Column("order_by")] + public int OrderBy { get; set; } + [Column("owner_name")] + public string OwnerName { get; set; } + [Column("publish_local_name")] + public string PublishLocalName { get; set; } + [Key] + [Column("publish_name")] + public string PublishName { get; set; } + [Column("updated_by")] + public string UpdatedBy { get; set; } + [Column("updated_datetime")] + public DateTime UpdatedDatetime { get; set; } + + public const string CREATED_BY = "CreatedBy"; + public const string CREATED_DATETIME = "CreatedDatetime"; + public const string DEFAULT_INDC = "DefaultIndc"; + public const string EXPIRE_DATETIME = "ExpireDatetime"; + public const string NOTICE = "Notice"; + public const string OPEN_INDC = "OpenIndc"; + public const string ORDER_BY = "OrderBy"; + public const string OWNER_NAME = "OwnerName"; + public const string PUBLISH_LOCAL_NAME = "PublishLocalName"; + public const string PUBLISH_NAME = "PublishName"; + public const string UPDATED_BY = "UpdatedBy"; + public const string UPDATED_DATETIME = "UpdatedDatetime"; + + public const string DB_NAME_PUBLISH_AUDIO = "publish_audio"; + public const string DB_NAME_FIELDS="created_by,created_datetime,default_indc,expire_datetime,notice,open_indc,order_by,owner_name,publish_local_name,publish_name,updated_by,updated_datetime"; + + public const string DB_CREATED_BY = "created_by"; + public const string DB_CREATED_DATETIME = "created_datetime"; + public const string DB_DEFAULT_INDC = "default_indc"; + public const string DB_EXPIRE_DATETIME = "expire_datetime"; + public const string DB_NOTICE = "notice"; + public const string DB_OPEN_INDC = "open_indc"; + public const string DB_ORDER_BY = "order_by"; + public const string DB_OWNER_NAME = "owner_name"; + public const string DB_PUBLISH_LOCAL_NAME = "publish_local_name"; + public const string DB_PUBLISH_NAME = "publish_name"; + public const string DB_UPDATED_BY = "updated_by"; + public const string DB_UPDATED_DATETIME = "updated_datetime"; + + private string ProviderName { get; set; } + + public static PublishAudioEntity GetInstance(string providerName) + { + return new PublishAudioEntity() { ProviderName = providerName }; + } + + public virtual void CopyFrom(PublishAudioEntity source) + { + CopyFrom(source, true); + } + + public virtual void CopyFrom(PublishAudioEntity source, bool includeSystemFields) + { + if (source == null) + { + throw new NullReferenceException("Source entity is null."); + } + + this.CreatedBy = source.CreatedBy; + this.CreatedDatetime = source.CreatedDatetime; + this.DefaultIndc = source.DefaultIndc; + this.ExpireDatetime = source.ExpireDatetime; + this.Notice = source.Notice; + this.OpenIndc = source.OpenIndc; + this.OrderBy = source.OrderBy; + this.OwnerName = source.OwnerName; + this.PublishLocalName = source.PublishLocalName; + this.PublishName = source.PublishName; + this.UpdatedBy = source.UpdatedBy; + this.UpdatedDatetime = source.UpdatedDatetime; + + if (includeSystemFields) + { + this.CreatedBy = source.CreatedBy; + this.CreatedDatetime = source.CreatedDatetime; + this.UpdatedBy = source.UpdatedBy; + this.UpdatedDatetime = source.UpdatedDatetime; + } + } + + public override string GetSelectFrom() + { + if (ProviderName.Contains("MySql")) + { + return GetSelectFromByMySql(); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectFromByBySqlServer(); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + public string GetSelectFromByMySql() + { + return $" select {DB_NAME_FIELDS} from { DB_NAME_PUBLISH_AUDIO} with(nolock) "; + } + public string GetSelectFromByBySqlServer() + { + return $" select {DB_NAME_FIELDS} from { DB_NAME_PUBLISH_AUDIO} "; + } + + public override string GetSelectCountFrom(string sqlWhere) + { + if (ProviderName.Contains("MySql")) + { + return GetSelectCountFromByMySql(sqlWhere); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectCountFromBySqlServer(sqlWhere); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + + public string GetSelectCountFromByMySql(string sqlWhere) + { + return $" select count(*) from { DB_NAME_PUBLISH_AUDIO} where 1=1 {sqlWhere}"; + } + public string GetSelectCountFromBySqlServer(string sqlWhere) + { + return $" select count(*) from { DB_NAME_PUBLISH_AUDIO} with(nolock) where 1=1 {sqlWhere}"; + } + + public override string GetSelectTopFrom(int limit, int start, string orderby, string orderbytag, string sqlWhere) + { + if (ProviderName.Contains("MySql")) + { + return GetSelectTopFromByMySql(limit, start, orderby, orderbytag, sqlWhere); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectTopFromBySqlServer(limit, start, orderby, orderbytag, sqlWhere); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + + public string GetSelectTopFromByMySql(int limit, int start,string orderby,string orderbytag, string sqlWhere) + { + if (string.IsNullOrEmpty(orderbytag) || orderbytag.Trim() != "desc") orderbytag = "asc"; + if (string.IsNullOrEmpty(orderby) || !DB_NAME_FIELDS.Contains(orderby)) orderby = DB_PUBLISH_NAME ; + int offset = limit * (start - 1); + return $" select {DB_NAME_FIELDS} from (select {DB_NAME_FIELDS} ,row_number() over(order by {orderby} {orderbytag}) as num from { DB_NAME_PUBLISH_AUDIO} where 1=1 {sqlWhere} ) a where num> {offset} LIMIT {limit} "; + } + + public string GetSelectTopFromBySqlServer(int limit, int start,string orderby,string orderbytag, string sqlWhere) + { + if (string.IsNullOrEmpty(orderbytag) || orderbytag.Trim() != "desc") orderbytag = "asc"; + if (string.IsNullOrEmpty(orderby) || !DB_NAME_FIELDS.Contains(orderby)) orderby = DB_PUBLISH_NAME ; + string top = limit > 0 ? $"top {limit}" : ""; + return $" select {top} {DB_NAME_FIELDS} from (select {DB_NAME_FIELDS} ,row_number() over(order by {orderby} {orderbytag}) as num from { DB_NAME_PUBLISH_AUDIO} with(nolock) where 1=1 {sqlWhere} ) a where num> {limit * (start - 1)}"; + } + + public PublishAudioEntity Clone() + { + PublishAudioEntity result = new PublishAudioEntity(); + result.CopyFrom(this); + + return result; + } + + } +} diff --git a/CloudBuilder/CloudBuilder.Master/Entity/PublishAudioFamilyGroupEntity.auto.cs b/CloudBuilder/CloudBuilder.Master/Entity/PublishAudioFamilyGroupEntity.auto.cs new file mode 100644 index 0000000..03f4c09 --- /dev/null +++ b/CloudBuilder/CloudBuilder.Master/Entity/PublishAudioFamilyGroupEntity.auto.cs @@ -0,0 +1,172 @@ + +using CloudBuilder.Core.Authorization; +using CloudBuilder.Core.DatabaseAccessor.Entity; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +namespace CloudBuilder.Master.Entity + { + [TypeScript] + [Table("publish_audio_family_group")] + public class PublishAudioFamilyGroupEntity : EntityBase + { + + public PublishAudioFamilyGroupEntity() + { + } + + [Column("created_by")] + public string CreatedBy { get; set; } + [Column("created_datetime")] + public DateTime CreatedDatetime { get; set; } + [Column("family_name")] + public string FamilyName { get; set; } + [Column("publish_name")] + public string PublishName { get; set; } + [Column("updated_by")] + public string UpdatedBy { get; set; } + [Column("updated_datetime")] + public DateTime UpdatedDatetime { get; set; } + + public const string CREATED_BY = "CreatedBy"; + public const string CREATED_DATETIME = "CreatedDatetime"; + public const string FAMILY_NAME = "FamilyName"; + public const string PUBLISH_NAME = "PublishName"; + public const string UPDATED_BY = "UpdatedBy"; + public const string UPDATED_DATETIME = "UpdatedDatetime"; + + public const string DB_NAME_PUBLISH_AUDIO_FAMILY_GROUP = "publish_audio_family_group"; + public const string DB_NAME_FIELDS="created_by,created_datetime,family_name,publish_name,updated_by,updated_datetime"; + + public const string DB_CREATED_BY = "created_by"; + public const string DB_CREATED_DATETIME = "created_datetime"; + public const string DB_FAMILY_NAME = "family_name"; + public const string DB_PUBLISH_NAME = "publish_name"; + public const string DB_UPDATED_BY = "updated_by"; + public const string DB_UPDATED_DATETIME = "updated_datetime"; + + private string ProviderName { get; set; } + + public static PublishAudioFamilyGroupEntity GetInstance(string providerName) + { + return new PublishAudioFamilyGroupEntity() { ProviderName = providerName }; + } + + public virtual void CopyFrom(PublishAudioFamilyGroupEntity source) + { + CopyFrom(source, true); + } + + public virtual void CopyFrom(PublishAudioFamilyGroupEntity source, bool includeSystemFields) + { + if (source == null) + { + throw new NullReferenceException("Source entity is null."); + } + + this.CreatedBy = source.CreatedBy; + this.CreatedDatetime = source.CreatedDatetime; + this.FamilyName = source.FamilyName; + this.PublishName = source.PublishName; + this.UpdatedBy = source.UpdatedBy; + this.UpdatedDatetime = source.UpdatedDatetime; + + if (includeSystemFields) + { + this.CreatedBy = source.CreatedBy; + this.CreatedDatetime = source.CreatedDatetime; + this.UpdatedBy = source.UpdatedBy; + this.UpdatedDatetime = source.UpdatedDatetime; + } + } + + public override string GetSelectFrom() + { + if (ProviderName.Contains("MySql")) + { + return GetSelectFromByMySql(); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectFromByBySqlServer(); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + public string GetSelectFromByMySql() + { + return $" select {DB_NAME_FIELDS} from { DB_NAME_PUBLISH_AUDIO_FAMILY_GROUP} with(nolock) "; + } + public string GetSelectFromByBySqlServer() + { + return $" select {DB_NAME_FIELDS} from { DB_NAME_PUBLISH_AUDIO_FAMILY_GROUP} "; + } + + public override string GetSelectCountFrom(string sqlWhere) + { + if (ProviderName.Contains("MySql")) + { + return GetSelectCountFromByMySql(sqlWhere); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectCountFromBySqlServer(sqlWhere); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + + public string GetSelectCountFromByMySql(string sqlWhere) + { + return $" select count(*) from { DB_NAME_PUBLISH_AUDIO_FAMILY_GROUP} where 1=1 {sqlWhere}"; + } + public string GetSelectCountFromBySqlServer(string sqlWhere) + { + return $" select count(*) from { DB_NAME_PUBLISH_AUDIO_FAMILY_GROUP} with(nolock) where 1=1 {sqlWhere}"; + } + + public override string GetSelectTopFrom(int limit, int start, string orderby, string orderbytag, string sqlWhere) + { + if (ProviderName.Contains("MySql")) + { + return GetSelectTopFromByMySql(limit, start, orderby, orderbytag, sqlWhere); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectTopFromBySqlServer(limit, start, orderby, orderbytag, sqlWhere); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + + public string GetSelectTopFromByMySql(int limit, int start,string orderby,string orderbytag, string sqlWhere) + { + if (string.IsNullOrEmpty(orderbytag) || orderbytag.Trim() != "desc") orderbytag = "asc"; + if (string.IsNullOrEmpty(orderby) || !DB_NAME_FIELDS.Contains(orderby)) orderby = DB_FAMILY_NAME ; + int offset = limit * (start - 1); + return $" select {DB_NAME_FIELDS} from (select {DB_NAME_FIELDS} ,row_number() over(order by {orderby} {orderbytag}) as num from { DB_NAME_PUBLISH_AUDIO_FAMILY_GROUP} where 1=1 {sqlWhere} ) a where num> {offset} LIMIT {limit} "; + } + + public string GetSelectTopFromBySqlServer(int limit, int start,string orderby,string orderbytag, string sqlWhere) + { + if (string.IsNullOrEmpty(orderbytag) || orderbytag.Trim() != "desc") orderbytag = "asc"; + if (string.IsNullOrEmpty(orderby) || !DB_NAME_FIELDS.Contains(orderby)) orderby = DB_FAMILY_NAME ; + string top = limit > 0 ? $"top {limit}" : ""; + return $" select {top} {DB_NAME_FIELDS} from (select {DB_NAME_FIELDS} ,row_number() over(order by {orderby} {orderbytag}) as num from { DB_NAME_PUBLISH_AUDIO_FAMILY_GROUP} with(nolock) where 1=1 {sqlWhere} ) a where num> {limit * (start - 1)}"; + } + + public PublishAudioFamilyGroupEntity Clone() + { + PublishAudioFamilyGroupEntity result = new PublishAudioFamilyGroupEntity(); + result.CopyFrom(this); + + return result; + } + + } +} diff --git a/CloudBuilder/CloudBuilder.Master/Entity/PublishAudioFamilyGroupEntityKey.auto.cs b/CloudBuilder/CloudBuilder.Master/Entity/PublishAudioFamilyGroupEntityKey.auto.cs new file mode 100644 index 0000000..a6bb935 --- /dev/null +++ b/CloudBuilder/CloudBuilder.Master/Entity/PublishAudioFamilyGroupEntityKey.auto.cs @@ -0,0 +1,33 @@ + +using CloudBuilder.Core.Authorization; +namespace CloudBuilder.Master +{ + [TypeScript] + public class PublishAudioFamilyGroupEntityKey + { + public string FamilyName { get; set; } + public string PublishName { get; set; } + + public override bool Equals(object obj) + { + if (this == obj) return true; + + PublishAudioFamilyGroupEntityKey pkey = obj as PublishAudioFamilyGroupEntityKey; + if (pkey == null) return false; + + if (FamilyName != pkey.FamilyName) return false; + if (PublishName != pkey.PublishName) return false; + + return true; + } + + + public override string ToString() + { + string declareSql=""; + declareSql=declareSql+$"declare @__tkey_FamilyName_0 varchar(50) select @__tkey_FamilyName_0 ='{FamilyName}'; " ; declareSql=declareSql+$"declare @__tkey_PublishName_1 varchar(50) select @__tkey_PublishName_1 ='{PublishName}'; " ; + return declareSql; + } + } + } + /* builder.Entity().HasKey(c => new { c.FamilyName, c.PublishName}); */ diff --git a/CloudBuilder/CloudBuilder.Master/Entity/PublishPhotoDetailEntity.auto.cs b/CloudBuilder/CloudBuilder.Master/Entity/PublishPhotoDetailEntity.auto.cs new file mode 100644 index 0000000..beb3652 --- /dev/null +++ b/CloudBuilder/CloudBuilder.Master/Entity/PublishPhotoDetailEntity.auto.cs @@ -0,0 +1,194 @@ + +using CloudBuilder.Core.Authorization; +using CloudBuilder.Core.DatabaseAccessor.Entity; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +namespace CloudBuilder.Master.Entity + { + [TypeScript] + [Table("publish_photo_detail")] + public class PublishPhotoDetailEntity : ViewEntityBase + { + + public PublishPhotoDetailEntity() + { + } + + [Column("created_by")] + public string CreatedBy { get; set; } + [Column("created_datetime")] + public DateTime CreatedDatetime { get; set; } + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + [Column("detail_id")] + public long DetailId { get; set; } + [Column("file_name")] + public string FileName { get; set; } + [Column("notice")] + public string? Notice { get; set; } + [Column("order_by")] + public int OrderBy { get; set; } + [Column("owner_name")] + public string OwnerName { get; set; } + [Column("publish_name")] + public string PublishName { get; set; } + [Column("updated_by")] + public string UpdatedBy { get; set; } + [Column("updated_datetime")] + public DateTime UpdatedDatetime { get; set; } + + public const string CREATED_BY = "CreatedBy"; + public const string CREATED_DATETIME = "CreatedDatetime"; + public const string DETAIL_ID = "DetailId"; + public const string FILE_NAME = "FileName"; + public const string NOTICE = "Notice"; + public const string ORDER_BY = "OrderBy"; + public const string OWNER_NAME = "OwnerName"; + public const string PUBLISH_NAME = "PublishName"; + public const string UPDATED_BY = "UpdatedBy"; + public const string UPDATED_DATETIME = "UpdatedDatetime"; + + public const string DB_NAME_PUBLISH_PHOTO_DETAIL = "publish_photo_detail"; + public const string DB_NAME_FIELDS="created_by,created_datetime,detail_id,file_name,notice,order_by,owner_name,publish_name,updated_by,updated_datetime"; + + public const string DB_CREATED_BY = "created_by"; + public const string DB_CREATED_DATETIME = "created_datetime"; + public const string DB_DETAIL_ID = "detail_id"; + public const string DB_FILE_NAME = "file_name"; + public const string DB_NOTICE = "notice"; + public const string DB_ORDER_BY = "order_by"; + public const string DB_OWNER_NAME = "owner_name"; + public const string DB_PUBLISH_NAME = "publish_name"; + public const string DB_UPDATED_BY = "updated_by"; + public const string DB_UPDATED_DATETIME = "updated_datetime"; + + private string ProviderName { get; set; } + + public static PublishPhotoDetailEntity GetInstance(string providerName) + { + return new PublishPhotoDetailEntity() { ProviderName = providerName }; + } + + public virtual void CopyFrom(PublishPhotoDetailEntity source) + { + CopyFrom(source, true); + } + + public virtual void CopyFrom(PublishPhotoDetailEntity source, bool includeSystemFields) + { + if (source == null) + { + throw new NullReferenceException("Source entity is null."); + } + + this.CreatedBy = source.CreatedBy; + this.CreatedDatetime = source.CreatedDatetime; + this.DetailId = source.DetailId; + this.FileName = source.FileName; + this.Notice = source.Notice; + this.OrderBy = source.OrderBy; + this.OwnerName = source.OwnerName; + this.PublishName = source.PublishName; + this.UpdatedBy = source.UpdatedBy; + this.UpdatedDatetime = source.UpdatedDatetime; + + if (includeSystemFields) + { + this.CreatedBy = source.CreatedBy; + this.CreatedDatetime = source.CreatedDatetime; + this.UpdatedBy = source.UpdatedBy; + this.UpdatedDatetime = source.UpdatedDatetime; + } + } + + public override string GetSelectFrom() + { + if (ProviderName.Contains("MySql")) + { + return GetSelectFromByMySql(); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectFromByBySqlServer(); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + public string GetSelectFromByMySql() + { + return $" select {DB_NAME_FIELDS} from { DB_NAME_PUBLISH_PHOTO_DETAIL} with(nolock) "; + } + public string GetSelectFromByBySqlServer() + { + return $" select {DB_NAME_FIELDS} from { DB_NAME_PUBLISH_PHOTO_DETAIL} "; + } + + public override string GetSelectCountFrom(string sqlWhere) + { + if (ProviderName.Contains("MySql")) + { + return GetSelectCountFromByMySql(sqlWhere); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectCountFromBySqlServer(sqlWhere); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + + public string GetSelectCountFromByMySql(string sqlWhere) + { + return $" select count(*) from { DB_NAME_PUBLISH_PHOTO_DETAIL} where 1=1 {sqlWhere}"; + } + public string GetSelectCountFromBySqlServer(string sqlWhere) + { + return $" select count(*) from { DB_NAME_PUBLISH_PHOTO_DETAIL} with(nolock) where 1=1 {sqlWhere}"; + } + + public override string GetSelectTopFrom(int limit, int start, string orderby, string orderbytag, string sqlWhere) + { + if (ProviderName.Contains("MySql")) + { + return GetSelectTopFromByMySql(limit, start, orderby, orderbytag, sqlWhere); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectTopFromBySqlServer(limit, start, orderby, orderbytag, sqlWhere); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + + public string GetSelectTopFromByMySql(int limit, int start,string orderby,string orderbytag, string sqlWhere) + { + if (string.IsNullOrEmpty(orderbytag) || orderbytag.Trim() != "desc") orderbytag = "asc"; + if (string.IsNullOrEmpty(orderby) || !DB_NAME_FIELDS.Contains(orderby)) orderby = DB_DETAIL_ID ; + int offset = limit * (start - 1); + return $" select {DB_NAME_FIELDS} from (select {DB_NAME_FIELDS} ,row_number() over(order by {orderby} {orderbytag}) as num from { DB_NAME_PUBLISH_PHOTO_DETAIL} where 1=1 {sqlWhere} ) a where num> {offset} LIMIT {limit} "; + } + + public string GetSelectTopFromBySqlServer(int limit, int start,string orderby,string orderbytag, string sqlWhere) + { + if (string.IsNullOrEmpty(orderbytag) || orderbytag.Trim() != "desc") orderbytag = "asc"; + if (string.IsNullOrEmpty(orderby) || !DB_NAME_FIELDS.Contains(orderby)) orderby = DB_DETAIL_ID ; + string top = limit > 0 ? $"top {limit}" : ""; + return $" select {top} {DB_NAME_FIELDS} from (select {DB_NAME_FIELDS} ,row_number() over(order by {orderby} {orderbytag}) as num from { DB_NAME_PUBLISH_PHOTO_DETAIL} with(nolock) where 1=1 {sqlWhere} ) a where num> {limit * (start - 1)}"; + } + + public PublishPhotoDetailEntity Clone() + { + PublishPhotoDetailEntity result = new PublishPhotoDetailEntity(); + result.CopyFrom(this); + + return result; + } + + } +} diff --git a/CloudBuilder/CloudBuilder.Master/Entity/PublishPhotoEntity.auto.cs b/CloudBuilder/CloudBuilder.Master/Entity/PublishPhotoEntity.auto.cs new file mode 100644 index 0000000..cca12b4 --- /dev/null +++ b/CloudBuilder/CloudBuilder.Master/Entity/PublishPhotoEntity.auto.cs @@ -0,0 +1,203 @@ + +using CloudBuilder.Core.Authorization; +using CloudBuilder.Core.DatabaseAccessor.Entity; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +namespace CloudBuilder.Master.Entity + { + [TypeScript] + [Table("publish_photo")] + public class PublishPhotoEntity : ViewEntityBase + { + + public PublishPhotoEntity() + { + } + + [Column("created_by")] + public string CreatedBy { get; set; } + [Column("created_datetime")] + public DateTime CreatedDatetime { get; set; } + [Column("default_indc")] + public string DefaultIndc { get; set; } + [Column("expire_datetime")] + public DateTime ExpireDatetime { get; set; } + [Column("notice")] + public string? Notice { get; set; } + [Column("open_indc")] + public string OpenIndc { get; set; } + [Column("order_by")] + public int OrderBy { get; set; } + [Column("owner_name")] + public string OwnerName { get; set; } + [Column("publish_local_name")] + public string PublishLocalName { get; set; } + [Key] + [Column("publish_name")] + public string PublishName { get; set; } + [Column("updated_by")] + public string UpdatedBy { get; set; } + [Column("updated_datetime")] + public DateTime UpdatedDatetime { get; set; } + + public const string CREATED_BY = "CreatedBy"; + public const string CREATED_DATETIME = "CreatedDatetime"; + public const string DEFAULT_INDC = "DefaultIndc"; + public const string EXPIRE_DATETIME = "ExpireDatetime"; + public const string NOTICE = "Notice"; + public const string OPEN_INDC = "OpenIndc"; + public const string ORDER_BY = "OrderBy"; + public const string OWNER_NAME = "OwnerName"; + public const string PUBLISH_LOCAL_NAME = "PublishLocalName"; + public const string PUBLISH_NAME = "PublishName"; + public const string UPDATED_BY = "UpdatedBy"; + public const string UPDATED_DATETIME = "UpdatedDatetime"; + + public const string DB_NAME_PUBLISH_PHOTO = "publish_photo"; + public const string DB_NAME_FIELDS="created_by,created_datetime,default_indc,expire_datetime,notice,open_indc,order_by,owner_name,publish_local_name,publish_name,updated_by,updated_datetime"; + + public const string DB_CREATED_BY = "created_by"; + public const string DB_CREATED_DATETIME = "created_datetime"; + public const string DB_DEFAULT_INDC = "default_indc"; + public const string DB_EXPIRE_DATETIME = "expire_datetime"; + public const string DB_NOTICE = "notice"; + public const string DB_OPEN_INDC = "open_indc"; + public const string DB_ORDER_BY = "order_by"; + public const string DB_OWNER_NAME = "owner_name"; + public const string DB_PUBLISH_LOCAL_NAME = "publish_local_name"; + public const string DB_PUBLISH_NAME = "publish_name"; + public const string DB_UPDATED_BY = "updated_by"; + public const string DB_UPDATED_DATETIME = "updated_datetime"; + + private string ProviderName { get; set; } + + public static PublishPhotoEntity GetInstance(string providerName) + { + return new PublishPhotoEntity() { ProviderName = providerName }; + } + + public virtual void CopyFrom(PublishPhotoEntity source) + { + CopyFrom(source, true); + } + + public virtual void CopyFrom(PublishPhotoEntity source, bool includeSystemFields) + { + if (source == null) + { + throw new NullReferenceException("Source entity is null."); + } + + this.CreatedBy = source.CreatedBy; + this.CreatedDatetime = source.CreatedDatetime; + this.DefaultIndc = source.DefaultIndc; + this.ExpireDatetime = source.ExpireDatetime; + this.Notice = source.Notice; + this.OpenIndc = source.OpenIndc; + this.OrderBy = source.OrderBy; + this.OwnerName = source.OwnerName; + this.PublishLocalName = source.PublishLocalName; + this.PublishName = source.PublishName; + this.UpdatedBy = source.UpdatedBy; + this.UpdatedDatetime = source.UpdatedDatetime; + + if (includeSystemFields) + { + this.CreatedBy = source.CreatedBy; + this.CreatedDatetime = source.CreatedDatetime; + this.UpdatedBy = source.UpdatedBy; + this.UpdatedDatetime = source.UpdatedDatetime; + } + } + + public override string GetSelectFrom() + { + if (ProviderName.Contains("MySql")) + { + return GetSelectFromByMySql(); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectFromByBySqlServer(); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + public string GetSelectFromByMySql() + { + return $" select {DB_NAME_FIELDS} from { DB_NAME_PUBLISH_PHOTO} with(nolock) "; + } + public string GetSelectFromByBySqlServer() + { + return $" select {DB_NAME_FIELDS} from { DB_NAME_PUBLISH_PHOTO} "; + } + + public override string GetSelectCountFrom(string sqlWhere) + { + if (ProviderName.Contains("MySql")) + { + return GetSelectCountFromByMySql(sqlWhere); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectCountFromBySqlServer(sqlWhere); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + + public string GetSelectCountFromByMySql(string sqlWhere) + { + return $" select count(*) from { DB_NAME_PUBLISH_PHOTO} where 1=1 {sqlWhere}"; + } + public string GetSelectCountFromBySqlServer(string sqlWhere) + { + return $" select count(*) from { DB_NAME_PUBLISH_PHOTO} with(nolock) where 1=1 {sqlWhere}"; + } + + public override string GetSelectTopFrom(int limit, int start, string orderby, string orderbytag, string sqlWhere) + { + if (ProviderName.Contains("MySql")) + { + return GetSelectTopFromByMySql(limit, start, orderby, orderbytag, sqlWhere); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectTopFromBySqlServer(limit, start, orderby, orderbytag, sqlWhere); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + + public string GetSelectTopFromByMySql(int limit, int start,string orderby,string orderbytag, string sqlWhere) + { + if (string.IsNullOrEmpty(orderbytag) || orderbytag.Trim() != "desc") orderbytag = "asc"; + if (string.IsNullOrEmpty(orderby) || !DB_NAME_FIELDS.Contains(orderby)) orderby = DB_PUBLISH_NAME ; + int offset = limit * (start - 1); + return $" select {DB_NAME_FIELDS} from (select {DB_NAME_FIELDS} ,row_number() over(order by {orderby} {orderbytag}) as num from { DB_NAME_PUBLISH_PHOTO} where 1=1 {sqlWhere} ) a where num> {offset} LIMIT {limit} "; + } + + public string GetSelectTopFromBySqlServer(int limit, int start,string orderby,string orderbytag, string sqlWhere) + { + if (string.IsNullOrEmpty(orderbytag) || orderbytag.Trim() != "desc") orderbytag = "asc"; + if (string.IsNullOrEmpty(orderby) || !DB_NAME_FIELDS.Contains(orderby)) orderby = DB_PUBLISH_NAME ; + string top = limit > 0 ? $"top {limit}" : ""; + return $" select {top} {DB_NAME_FIELDS} from (select {DB_NAME_FIELDS} ,row_number() over(order by {orderby} {orderbytag}) as num from { DB_NAME_PUBLISH_PHOTO} with(nolock) where 1=1 {sqlWhere} ) a where num> {limit * (start - 1)}"; + } + + public PublishPhotoEntity Clone() + { + PublishPhotoEntity result = new PublishPhotoEntity(); + result.CopyFrom(this); + + return result; + } + + } +} diff --git a/CloudBuilder/CloudBuilder.Master/Entity/PublishPhotoFamilyGroupEntity.auto.cs b/CloudBuilder/CloudBuilder.Master/Entity/PublishPhotoFamilyGroupEntity.auto.cs new file mode 100644 index 0000000..e5b8d04 --- /dev/null +++ b/CloudBuilder/CloudBuilder.Master/Entity/PublishPhotoFamilyGroupEntity.auto.cs @@ -0,0 +1,172 @@ + +using CloudBuilder.Core.Authorization; +using CloudBuilder.Core.DatabaseAccessor.Entity; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +namespace CloudBuilder.Master.Entity + { + [TypeScript] + [Table("publish_photo_family_group")] + public class PublishPhotoFamilyGroupEntity : EntityBase + { + + public PublishPhotoFamilyGroupEntity() + { + } + + [Column("created_by")] + public string CreatedBy { get; set; } + [Column("created_datetime")] + public DateTime CreatedDatetime { get; set; } + [Column("family_name")] + public string FamilyName { get; set; } + [Column("publish_name")] + public string PublishName { get; set; } + [Column("updated_by")] + public string UpdatedBy { get; set; } + [Column("updated_datetime")] + public DateTime UpdatedDatetime { get; set; } + + public const string CREATED_BY = "CreatedBy"; + public const string CREATED_DATETIME = "CreatedDatetime"; + public const string FAMILY_NAME = "FamilyName"; + public const string PUBLISH_NAME = "PublishName"; + public const string UPDATED_BY = "UpdatedBy"; + public const string UPDATED_DATETIME = "UpdatedDatetime"; + + public const string DB_NAME_PUBLISH_PHOTO_FAMILY_GROUP = "publish_photo_family_group"; + public const string DB_NAME_FIELDS="created_by,created_datetime,family_name,publish_name,updated_by,updated_datetime"; + + public const string DB_CREATED_BY = "created_by"; + public const string DB_CREATED_DATETIME = "created_datetime"; + public const string DB_FAMILY_NAME = "family_name"; + public const string DB_PUBLISH_NAME = "publish_name"; + public const string DB_UPDATED_BY = "updated_by"; + public const string DB_UPDATED_DATETIME = "updated_datetime"; + + private string ProviderName { get; set; } + + public static PublishPhotoFamilyGroupEntity GetInstance(string providerName) + { + return new PublishPhotoFamilyGroupEntity() { ProviderName = providerName }; + } + + public virtual void CopyFrom(PublishPhotoFamilyGroupEntity source) + { + CopyFrom(source, true); + } + + public virtual void CopyFrom(PublishPhotoFamilyGroupEntity source, bool includeSystemFields) + { + if (source == null) + { + throw new NullReferenceException("Source entity is null."); + } + + this.CreatedBy = source.CreatedBy; + this.CreatedDatetime = source.CreatedDatetime; + this.FamilyName = source.FamilyName; + this.PublishName = source.PublishName; + this.UpdatedBy = source.UpdatedBy; + this.UpdatedDatetime = source.UpdatedDatetime; + + if (includeSystemFields) + { + this.CreatedBy = source.CreatedBy; + this.CreatedDatetime = source.CreatedDatetime; + this.UpdatedBy = source.UpdatedBy; + this.UpdatedDatetime = source.UpdatedDatetime; + } + } + + public override string GetSelectFrom() + { + if (ProviderName.Contains("MySql")) + { + return GetSelectFromByMySql(); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectFromByBySqlServer(); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + public string GetSelectFromByMySql() + { + return $" select {DB_NAME_FIELDS} from { DB_NAME_PUBLISH_PHOTO_FAMILY_GROUP} with(nolock) "; + } + public string GetSelectFromByBySqlServer() + { + return $" select {DB_NAME_FIELDS} from { DB_NAME_PUBLISH_PHOTO_FAMILY_GROUP} "; + } + + public override string GetSelectCountFrom(string sqlWhere) + { + if (ProviderName.Contains("MySql")) + { + return GetSelectCountFromByMySql(sqlWhere); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectCountFromBySqlServer(sqlWhere); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + + public string GetSelectCountFromByMySql(string sqlWhere) + { + return $" select count(*) from { DB_NAME_PUBLISH_PHOTO_FAMILY_GROUP} where 1=1 {sqlWhere}"; + } + public string GetSelectCountFromBySqlServer(string sqlWhere) + { + return $" select count(*) from { DB_NAME_PUBLISH_PHOTO_FAMILY_GROUP} with(nolock) where 1=1 {sqlWhere}"; + } + + public override string GetSelectTopFrom(int limit, int start, string orderby, string orderbytag, string sqlWhere) + { + if (ProviderName.Contains("MySql")) + { + return GetSelectTopFromByMySql(limit, start, orderby, orderbytag, sqlWhere); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectTopFromBySqlServer(limit, start, orderby, orderbytag, sqlWhere); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + + public string GetSelectTopFromByMySql(int limit, int start,string orderby,string orderbytag, string sqlWhere) + { + if (string.IsNullOrEmpty(orderbytag) || orderbytag.Trim() != "desc") orderbytag = "asc"; + if (string.IsNullOrEmpty(orderby) || !DB_NAME_FIELDS.Contains(orderby)) orderby = DB_FAMILY_NAME ; + int offset = limit * (start - 1); + return $" select {DB_NAME_FIELDS} from (select {DB_NAME_FIELDS} ,row_number() over(order by {orderby} {orderbytag}) as num from { DB_NAME_PUBLISH_PHOTO_FAMILY_GROUP} where 1=1 {sqlWhere} ) a where num> {offset} LIMIT {limit} "; + } + + public string GetSelectTopFromBySqlServer(int limit, int start,string orderby,string orderbytag, string sqlWhere) + { + if (string.IsNullOrEmpty(orderbytag) || orderbytag.Trim() != "desc") orderbytag = "asc"; + if (string.IsNullOrEmpty(orderby) || !DB_NAME_FIELDS.Contains(orderby)) orderby = DB_FAMILY_NAME ; + string top = limit > 0 ? $"top {limit}" : ""; + return $" select {top} {DB_NAME_FIELDS} from (select {DB_NAME_FIELDS} ,row_number() over(order by {orderby} {orderbytag}) as num from { DB_NAME_PUBLISH_PHOTO_FAMILY_GROUP} with(nolock) where 1=1 {sqlWhere} ) a where num> {limit * (start - 1)}"; + } + + public PublishPhotoFamilyGroupEntity Clone() + { + PublishPhotoFamilyGroupEntity result = new PublishPhotoFamilyGroupEntity(); + result.CopyFrom(this); + + return result; + } + + } +} diff --git a/CloudBuilder/CloudBuilder.Master/Entity/PublishPhotoFamilyGroupEntityKey.auto.cs b/CloudBuilder/CloudBuilder.Master/Entity/PublishPhotoFamilyGroupEntityKey.auto.cs new file mode 100644 index 0000000..6a32516 --- /dev/null +++ b/CloudBuilder/CloudBuilder.Master/Entity/PublishPhotoFamilyGroupEntityKey.auto.cs @@ -0,0 +1,33 @@ + +using CloudBuilder.Core.Authorization; +namespace CloudBuilder.Master +{ + [TypeScript] + public class PublishPhotoFamilyGroupEntityKey + { + public string FamilyName { get; set; } + public string PublishName { get; set; } + + public override bool Equals(object obj) + { + if (this == obj) return true; + + PublishPhotoFamilyGroupEntityKey pkey = obj as PublishPhotoFamilyGroupEntityKey; + if (pkey == null) return false; + + if (FamilyName != pkey.FamilyName) return false; + if (PublishName != pkey.PublishName) return false; + + return true; + } + + + public override string ToString() + { + string declareSql=""; + declareSql=declareSql+$"declare @__tkey_FamilyName_0 varchar(50) select @__tkey_FamilyName_0 ='{FamilyName}'; " ; declareSql=declareSql+$"declare @__tkey_PublishName_1 varchar(50) select @__tkey_PublishName_1 ='{PublishName}'; " ; + return declareSql; + } + } + } + /* builder.Entity().HasKey(c => new { c.FamilyName, c.PublishName}); */ diff --git a/CloudBuilder/CloudBuilder.Master/Entity/PublishVideoDetailEntity.auto.cs b/CloudBuilder/CloudBuilder.Master/Entity/PublishVideoDetailEntity.auto.cs new file mode 100644 index 0000000..fa7f54b --- /dev/null +++ b/CloudBuilder/CloudBuilder.Master/Entity/PublishVideoDetailEntity.auto.cs @@ -0,0 +1,214 @@ + +using CloudBuilder.Core.Authorization; +using CloudBuilder.Core.DatabaseAccessor.Entity; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +namespace CloudBuilder.Master.Entity + { + [TypeScript] + [Table("publish_video_detail")] + public class PublishVideoDetailEntity : ViewEntityBase + { + + public PublishVideoDetailEntity() + { + } + + [Column("author")] + public string? Author { get; set; } + [Column("created_by")] + public string CreatedBy { get; set; } + [Column("created_datetime")] + public DateTime CreatedDatetime { get; set; } + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + [Column("detail_id")] + public long DetailId { get; set; } + [Column("lrc")] + public string? Lrc { get; set; } + [Column("notice")] + public string? Notice { get; set; } + [Column("order_by")] + public int OrderBy { get; set; } + [Column("owner_name")] + public string OwnerName { get; set; } + [Column("pic")] + public string? Pic { get; set; } + [Column("publish_name")] + public string PublishName { get; set; } + [Column("title")] + public string Title { get; set; } + [Column("updated_by")] + public string UpdatedBy { get; set; } + [Column("updated_datetime")] + public DateTime UpdatedDatetime { get; set; } + [Column("url")] + public string Url { get; set; } + + public const string AUTHOR = "Author"; + public const string CREATED_BY = "CreatedBy"; + public const string CREATED_DATETIME = "CreatedDatetime"; + public const string DETAIL_ID = "DetailId"; + public const string LRC = "Lrc"; + public const string NOTICE = "Notice"; + public const string ORDER_BY = "OrderBy"; + public const string OWNER_NAME = "OwnerName"; + public const string PIC = "Pic"; + public const string PUBLISH_NAME = "PublishName"; + public const string TITLE = "Title"; + public const string UPDATED_BY = "UpdatedBy"; + public const string UPDATED_DATETIME = "UpdatedDatetime"; + public const string URL = "Url"; + + public const string DB_NAME_PUBLISH_VIDEO_DETAIL = "publish_video_detail"; + public const string DB_NAME_FIELDS="author,created_by,created_datetime,detail_id,lrc,notice,order_by,owner_name,pic,publish_name,title,updated_by,updated_datetime,url"; + + public const string DB_AUTHOR = "author"; + public const string DB_CREATED_BY = "created_by"; + public const string DB_CREATED_DATETIME = "created_datetime"; + public const string DB_DETAIL_ID = "detail_id"; + public const string DB_LRC = "lrc"; + public const string DB_NOTICE = "notice"; + public const string DB_ORDER_BY = "order_by"; + public const string DB_OWNER_NAME = "owner_name"; + public const string DB_PIC = "pic"; + public const string DB_PUBLISH_NAME = "publish_name"; + public const string DB_TITLE = "title"; + public const string DB_UPDATED_BY = "updated_by"; + public const string DB_UPDATED_DATETIME = "updated_datetime"; + public const string DB_URL = "url"; + + private string ProviderName { get; set; } + + public static PublishVideoDetailEntity GetInstance(string providerName) + { + return new PublishVideoDetailEntity() { ProviderName = providerName }; + } + + public virtual void CopyFrom(PublishVideoDetailEntity source) + { + CopyFrom(source, true); + } + + public virtual void CopyFrom(PublishVideoDetailEntity source, bool includeSystemFields) + { + if (source == null) + { + throw new NullReferenceException("Source entity is null."); + } + + this.Author = source.Author; + this.CreatedBy = source.CreatedBy; + this.CreatedDatetime = source.CreatedDatetime; + this.DetailId = source.DetailId; + this.Lrc = source.Lrc; + this.Notice = source.Notice; + this.OrderBy = source.OrderBy; + this.OwnerName = source.OwnerName; + this.Pic = source.Pic; + this.PublishName = source.PublishName; + this.Title = source.Title; + this.UpdatedBy = source.UpdatedBy; + this.UpdatedDatetime = source.UpdatedDatetime; + this.Url = source.Url; + + if (includeSystemFields) + { + this.CreatedBy = source.CreatedBy; + this.CreatedDatetime = source.CreatedDatetime; + this.UpdatedBy = source.UpdatedBy; + this.UpdatedDatetime = source.UpdatedDatetime; + } + } + + public override string GetSelectFrom() + { + if (ProviderName.Contains("MySql")) + { + return GetSelectFromByMySql(); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectFromByBySqlServer(); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + public string GetSelectFromByMySql() + { + return $" select {DB_NAME_FIELDS} from { DB_NAME_PUBLISH_VIDEO_DETAIL} with(nolock) "; + } + public string GetSelectFromByBySqlServer() + { + return $" select {DB_NAME_FIELDS} from { DB_NAME_PUBLISH_VIDEO_DETAIL} "; + } + + public override string GetSelectCountFrom(string sqlWhere) + { + if (ProviderName.Contains("MySql")) + { + return GetSelectCountFromByMySql(sqlWhere); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectCountFromBySqlServer(sqlWhere); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + + public string GetSelectCountFromByMySql(string sqlWhere) + { + return $" select count(*) from { DB_NAME_PUBLISH_VIDEO_DETAIL} where 1=1 {sqlWhere}"; + } + public string GetSelectCountFromBySqlServer(string sqlWhere) + { + return $" select count(*) from { DB_NAME_PUBLISH_VIDEO_DETAIL} with(nolock) where 1=1 {sqlWhere}"; + } + + public override string GetSelectTopFrom(int limit, int start, string orderby, string orderbytag, string sqlWhere) + { + if (ProviderName.Contains("MySql")) + { + return GetSelectTopFromByMySql(limit, start, orderby, orderbytag, sqlWhere); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectTopFromBySqlServer(limit, start, orderby, orderbytag, sqlWhere); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + + public string GetSelectTopFromByMySql(int limit, int start,string orderby,string orderbytag, string sqlWhere) + { + if (string.IsNullOrEmpty(orderbytag) || orderbytag.Trim() != "desc") orderbytag = "asc"; + if (string.IsNullOrEmpty(orderby) || !DB_NAME_FIELDS.Contains(orderby)) orderby = DB_DETAIL_ID ; + int offset = limit * (start - 1); + return $" select {DB_NAME_FIELDS} from (select {DB_NAME_FIELDS} ,row_number() over(order by {orderby} {orderbytag}) as num from { DB_NAME_PUBLISH_VIDEO_DETAIL} where 1=1 {sqlWhere} ) a where num> {offset} LIMIT {limit} "; + } + + public string GetSelectTopFromBySqlServer(int limit, int start,string orderby,string orderbytag, string sqlWhere) + { + if (string.IsNullOrEmpty(orderbytag) || orderbytag.Trim() != "desc") orderbytag = "asc"; + if (string.IsNullOrEmpty(orderby) || !DB_NAME_FIELDS.Contains(orderby)) orderby = DB_DETAIL_ID ; + string top = limit > 0 ? $"top {limit}" : ""; + return $" select {top} {DB_NAME_FIELDS} from (select {DB_NAME_FIELDS} ,row_number() over(order by {orderby} {orderbytag}) as num from { DB_NAME_PUBLISH_VIDEO_DETAIL} with(nolock) where 1=1 {sqlWhere} ) a where num> {limit * (start - 1)}"; + } + + public PublishVideoDetailEntity Clone() + { + PublishVideoDetailEntity result = new PublishVideoDetailEntity(); + result.CopyFrom(this); + + return result; + } + + } +} diff --git a/CloudBuilder/CloudBuilder.Master/Entity/PublishVideoEntity.auto.cs b/CloudBuilder/CloudBuilder.Master/Entity/PublishVideoEntity.auto.cs new file mode 100644 index 0000000..facfbd2 --- /dev/null +++ b/CloudBuilder/CloudBuilder.Master/Entity/PublishVideoEntity.auto.cs @@ -0,0 +1,203 @@ + +using CloudBuilder.Core.Authorization; +using CloudBuilder.Core.DatabaseAccessor.Entity; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +namespace CloudBuilder.Master.Entity + { + [TypeScript] + [Table("publish_video")] + public class PublishVideoEntity : ViewEntityBase + { + + public PublishVideoEntity() + { + } + + [Column("created_by")] + public string CreatedBy { get; set; } + [Column("created_datetime")] + public DateTime CreatedDatetime { get; set; } + [Column("default_indc")] + public string DefaultIndc { get; set; } + [Column("expire_datetime")] + public DateTime ExpireDatetime { get; set; } + [Column("notice")] + public string? Notice { get; set; } + [Column("open_indc")] + public string OpenIndc { get; set; } + [Column("order_by")] + public int OrderBy { get; set; } + [Column("owner_name")] + public string OwnerName { get; set; } + [Column("publish_local_name")] + public string PublishLocalName { get; set; } + [Key] + [Column("publish_name")] + public string PublishName { get; set; } + [Column("updated_by")] + public string UpdatedBy { get; set; } + [Column("updated_datetime")] + public DateTime UpdatedDatetime { get; set; } + + public const string CREATED_BY = "CreatedBy"; + public const string CREATED_DATETIME = "CreatedDatetime"; + public const string DEFAULT_INDC = "DefaultIndc"; + public const string EXPIRE_DATETIME = "ExpireDatetime"; + public const string NOTICE = "Notice"; + public const string OPEN_INDC = "OpenIndc"; + public const string ORDER_BY = "OrderBy"; + public const string OWNER_NAME = "OwnerName"; + public const string PUBLISH_LOCAL_NAME = "PublishLocalName"; + public const string PUBLISH_NAME = "PublishName"; + public const string UPDATED_BY = "UpdatedBy"; + public const string UPDATED_DATETIME = "UpdatedDatetime"; + + public const string DB_NAME_PUBLISH_VIDEO = "publish_video"; + public const string DB_NAME_FIELDS="created_by,created_datetime,default_indc,expire_datetime,notice,open_indc,order_by,owner_name,publish_local_name,publish_name,updated_by,updated_datetime"; + + public const string DB_CREATED_BY = "created_by"; + public const string DB_CREATED_DATETIME = "created_datetime"; + public const string DB_DEFAULT_INDC = "default_indc"; + public const string DB_EXPIRE_DATETIME = "expire_datetime"; + public const string DB_NOTICE = "notice"; + public const string DB_OPEN_INDC = "open_indc"; + public const string DB_ORDER_BY = "order_by"; + public const string DB_OWNER_NAME = "owner_name"; + public const string DB_PUBLISH_LOCAL_NAME = "publish_local_name"; + public const string DB_PUBLISH_NAME = "publish_name"; + public const string DB_UPDATED_BY = "updated_by"; + public const string DB_UPDATED_DATETIME = "updated_datetime"; + + private string ProviderName { get; set; } + + public static PublishVideoEntity GetInstance(string providerName) + { + return new PublishVideoEntity() { ProviderName = providerName }; + } + + public virtual void CopyFrom(PublishVideoEntity source) + { + CopyFrom(source, true); + } + + public virtual void CopyFrom(PublishVideoEntity source, bool includeSystemFields) + { + if (source == null) + { + throw new NullReferenceException("Source entity is null."); + } + + this.CreatedBy = source.CreatedBy; + this.CreatedDatetime = source.CreatedDatetime; + this.DefaultIndc = source.DefaultIndc; + this.ExpireDatetime = source.ExpireDatetime; + this.Notice = source.Notice; + this.OpenIndc = source.OpenIndc; + this.OrderBy = source.OrderBy; + this.OwnerName = source.OwnerName; + this.PublishLocalName = source.PublishLocalName; + this.PublishName = source.PublishName; + this.UpdatedBy = source.UpdatedBy; + this.UpdatedDatetime = source.UpdatedDatetime; + + if (includeSystemFields) + { + this.CreatedBy = source.CreatedBy; + this.CreatedDatetime = source.CreatedDatetime; + this.UpdatedBy = source.UpdatedBy; + this.UpdatedDatetime = source.UpdatedDatetime; + } + } + + public override string GetSelectFrom() + { + if (ProviderName.Contains("MySql")) + { + return GetSelectFromByMySql(); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectFromByBySqlServer(); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + public string GetSelectFromByMySql() + { + return $" select {DB_NAME_FIELDS} from { DB_NAME_PUBLISH_VIDEO} with(nolock) "; + } + public string GetSelectFromByBySqlServer() + { + return $" select {DB_NAME_FIELDS} from { DB_NAME_PUBLISH_VIDEO} "; + } + + public override string GetSelectCountFrom(string sqlWhere) + { + if (ProviderName.Contains("MySql")) + { + return GetSelectCountFromByMySql(sqlWhere); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectCountFromBySqlServer(sqlWhere); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + + public string GetSelectCountFromByMySql(string sqlWhere) + { + return $" select count(*) from { DB_NAME_PUBLISH_VIDEO} where 1=1 {sqlWhere}"; + } + public string GetSelectCountFromBySqlServer(string sqlWhere) + { + return $" select count(*) from { DB_NAME_PUBLISH_VIDEO} with(nolock) where 1=1 {sqlWhere}"; + } + + public override string GetSelectTopFrom(int limit, int start, string orderby, string orderbytag, string sqlWhere) + { + if (ProviderName.Contains("MySql")) + { + return GetSelectTopFromByMySql(limit, start, orderby, orderbytag, sqlWhere); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectTopFromBySqlServer(limit, start, orderby, orderbytag, sqlWhere); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + + public string GetSelectTopFromByMySql(int limit, int start,string orderby,string orderbytag, string sqlWhere) + { + if (string.IsNullOrEmpty(orderbytag) || orderbytag.Trim() != "desc") orderbytag = "asc"; + if (string.IsNullOrEmpty(orderby) || !DB_NAME_FIELDS.Contains(orderby)) orderby = DB_PUBLISH_NAME ; + int offset = limit * (start - 1); + return $" select {DB_NAME_FIELDS} from (select {DB_NAME_FIELDS} ,row_number() over(order by {orderby} {orderbytag}) as num from { DB_NAME_PUBLISH_VIDEO} where 1=1 {sqlWhere} ) a where num> {offset} LIMIT {limit} "; + } + + public string GetSelectTopFromBySqlServer(int limit, int start,string orderby,string orderbytag, string sqlWhere) + { + if (string.IsNullOrEmpty(orderbytag) || orderbytag.Trim() != "desc") orderbytag = "asc"; + if (string.IsNullOrEmpty(orderby) || !DB_NAME_FIELDS.Contains(orderby)) orderby = DB_PUBLISH_NAME ; + string top = limit > 0 ? $"top {limit}" : ""; + return $" select {top} {DB_NAME_FIELDS} from (select {DB_NAME_FIELDS} ,row_number() over(order by {orderby} {orderbytag}) as num from { DB_NAME_PUBLISH_VIDEO} with(nolock) where 1=1 {sqlWhere} ) a where num> {limit * (start - 1)}"; + } + + public PublishVideoEntity Clone() + { + PublishVideoEntity result = new PublishVideoEntity(); + result.CopyFrom(this); + + return result; + } + + } +} diff --git a/CloudBuilder/CloudBuilder.Master/Entity/PublishVideoFamilyGroupEntity.auto.cs b/CloudBuilder/CloudBuilder.Master/Entity/PublishVideoFamilyGroupEntity.auto.cs new file mode 100644 index 0000000..a9f0af7 --- /dev/null +++ b/CloudBuilder/CloudBuilder.Master/Entity/PublishVideoFamilyGroupEntity.auto.cs @@ -0,0 +1,172 @@ + +using CloudBuilder.Core.Authorization; +using CloudBuilder.Core.DatabaseAccessor.Entity; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +namespace CloudBuilder.Master.Entity + { + [TypeScript] + [Table("publish_video_family_group")] + public class PublishVideoFamilyGroupEntity : EntityBase + { + + public PublishVideoFamilyGroupEntity() + { + } + + [Column("created_by")] + public string CreatedBy { get; set; } + [Column("created_datetime")] + public DateTime CreatedDatetime { get; set; } + [Column("family_name")] + public string FamilyName { get; set; } + [Column("publish_name")] + public string PublishName { get; set; } + [Column("updated_by")] + public string UpdatedBy { get; set; } + [Column("updated_datetime")] + public DateTime UpdatedDatetime { get; set; } + + public const string CREATED_BY = "CreatedBy"; + public const string CREATED_DATETIME = "CreatedDatetime"; + public const string FAMILY_NAME = "FamilyName"; + public const string PUBLISH_NAME = "PublishName"; + public const string UPDATED_BY = "UpdatedBy"; + public const string UPDATED_DATETIME = "UpdatedDatetime"; + + public const string DB_NAME_PUBLISH_VIDEO_FAMILY_GROUP = "publish_video_family_group"; + public const string DB_NAME_FIELDS="created_by,created_datetime,family_name,publish_name,updated_by,updated_datetime"; + + public const string DB_CREATED_BY = "created_by"; + public const string DB_CREATED_DATETIME = "created_datetime"; + public const string DB_FAMILY_NAME = "family_name"; + public const string DB_PUBLISH_NAME = "publish_name"; + public const string DB_UPDATED_BY = "updated_by"; + public const string DB_UPDATED_DATETIME = "updated_datetime"; + + private string ProviderName { get; set; } + + public static PublishVideoFamilyGroupEntity GetInstance(string providerName) + { + return new PublishVideoFamilyGroupEntity() { ProviderName = providerName }; + } + + public virtual void CopyFrom(PublishVideoFamilyGroupEntity source) + { + CopyFrom(source, true); + } + + public virtual void CopyFrom(PublishVideoFamilyGroupEntity source, bool includeSystemFields) + { + if (source == null) + { + throw new NullReferenceException("Source entity is null."); + } + + this.CreatedBy = source.CreatedBy; + this.CreatedDatetime = source.CreatedDatetime; + this.FamilyName = source.FamilyName; + this.PublishName = source.PublishName; + this.UpdatedBy = source.UpdatedBy; + this.UpdatedDatetime = source.UpdatedDatetime; + + if (includeSystemFields) + { + this.CreatedBy = source.CreatedBy; + this.CreatedDatetime = source.CreatedDatetime; + this.UpdatedBy = source.UpdatedBy; + this.UpdatedDatetime = source.UpdatedDatetime; + } + } + + public override string GetSelectFrom() + { + if (ProviderName.Contains("MySql")) + { + return GetSelectFromByMySql(); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectFromByBySqlServer(); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + public string GetSelectFromByMySql() + { + return $" select {DB_NAME_FIELDS} from { DB_NAME_PUBLISH_VIDEO_FAMILY_GROUP} with(nolock) "; + } + public string GetSelectFromByBySqlServer() + { + return $" select {DB_NAME_FIELDS} from { DB_NAME_PUBLISH_VIDEO_FAMILY_GROUP} "; + } + + public override string GetSelectCountFrom(string sqlWhere) + { + if (ProviderName.Contains("MySql")) + { + return GetSelectCountFromByMySql(sqlWhere); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectCountFromBySqlServer(sqlWhere); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + + public string GetSelectCountFromByMySql(string sqlWhere) + { + return $" select count(*) from { DB_NAME_PUBLISH_VIDEO_FAMILY_GROUP} where 1=1 {sqlWhere}"; + } + public string GetSelectCountFromBySqlServer(string sqlWhere) + { + return $" select count(*) from { DB_NAME_PUBLISH_VIDEO_FAMILY_GROUP} with(nolock) where 1=1 {sqlWhere}"; + } + + public override string GetSelectTopFrom(int limit, int start, string orderby, string orderbytag, string sqlWhere) + { + if (ProviderName.Contains("MySql")) + { + return GetSelectTopFromByMySql(limit, start, orderby, orderbytag, sqlWhere); + } + else if (ProviderName.Contains("SqlServer")) + { + return GetSelectTopFromBySqlServer(limit, start, orderby, orderbytag, sqlWhere); + } + else + { + throw new NotSupportedException($"不支持的数据库提供程序:{ProviderName}"); + } + } + + public string GetSelectTopFromByMySql(int limit, int start,string orderby,string orderbytag, string sqlWhere) + { + if (string.IsNullOrEmpty(orderbytag) || orderbytag.Trim() != "desc") orderbytag = "asc"; + if (string.IsNullOrEmpty(orderby) || !DB_NAME_FIELDS.Contains(orderby)) orderby = DB_FAMILY_NAME ; + int offset = limit * (start - 1); + return $" select {DB_NAME_FIELDS} from (select {DB_NAME_FIELDS} ,row_number() over(order by {orderby} {orderbytag}) as num from { DB_NAME_PUBLISH_VIDEO_FAMILY_GROUP} where 1=1 {sqlWhere} ) a where num> {offset} LIMIT {limit} "; + } + + public string GetSelectTopFromBySqlServer(int limit, int start,string orderby,string orderbytag, string sqlWhere) + { + if (string.IsNullOrEmpty(orderbytag) || orderbytag.Trim() != "desc") orderbytag = "asc"; + if (string.IsNullOrEmpty(orderby) || !DB_NAME_FIELDS.Contains(orderby)) orderby = DB_FAMILY_NAME ; + string top = limit > 0 ? $"top {limit}" : ""; + return $" select {top} {DB_NAME_FIELDS} from (select {DB_NAME_FIELDS} ,row_number() over(order by {orderby} {orderbytag}) as num from { DB_NAME_PUBLISH_VIDEO_FAMILY_GROUP} with(nolock) where 1=1 {sqlWhere} ) a where num> {limit * (start - 1)}"; + } + + public PublishVideoFamilyGroupEntity Clone() + { + PublishVideoFamilyGroupEntity result = new PublishVideoFamilyGroupEntity(); + result.CopyFrom(this); + + return result; + } + + } +} diff --git a/CloudBuilder/CloudBuilder.Master/Entity/PublishVideoFamilyGroupEntityKey.auto.cs b/CloudBuilder/CloudBuilder.Master/Entity/PublishVideoFamilyGroupEntityKey.auto.cs new file mode 100644 index 0000000..2c889ba --- /dev/null +++ b/CloudBuilder/CloudBuilder.Master/Entity/PublishVideoFamilyGroupEntityKey.auto.cs @@ -0,0 +1,33 @@ + +using CloudBuilder.Core.Authorization; +namespace CloudBuilder.Master +{ + [TypeScript] + public class PublishVideoFamilyGroupEntityKey + { + public string FamilyName { get; set; } + public string PublishName { get; set; } + + public override bool Equals(object obj) + { + if (this == obj) return true; + + PublishVideoFamilyGroupEntityKey pkey = obj as PublishVideoFamilyGroupEntityKey; + if (pkey == null) return false; + + if (FamilyName != pkey.FamilyName) return false; + if (PublishName != pkey.PublishName) return false; + + return true; + } + + + public override string ToString() + { + string declareSql=""; + declareSql=declareSql+$"declare @__tkey_FamilyName_0 varchar(50) select @__tkey_FamilyName_0 ='{FamilyName}'; " ; declareSql=declareSql+$"declare @__tkey_PublishName_1 varchar(50) select @__tkey_PublishName_1 ='{PublishName}'; " ; + return declareSql; + } + } + } + /* builder.Entity().HasKey(c => new { c.FamilyName, c.PublishName}); */ diff --git a/CloudBuilder/CloudBuilder.Master/Policy/MasterPermissionPolicy.auto.cs b/CloudBuilder/CloudBuilder.Master/Policy/MasterPermissionPolicy.auto.cs index b503e00..01cfdaf 100644 --- a/CloudBuilder/CloudBuilder.Master/Policy/MasterPermissionPolicy.auto.cs +++ b/CloudBuilder/CloudBuilder.Master/Policy/MasterPermissionPolicy.auto.cs @@ -7,6 +7,16 @@ namespace CloudBuilder.Master.Policy public const string FamilyTree = "FamilyTree"; public const string FamilyPerson = "FamilyPerson"; + +public const string DmsFile = "DmsFile"; + +public const string FamilyGroup = "FamilyGroup"; + +public const string PublishVideo = "PublishVideo"; + +public const string PublishPhoto = "PublishPhoto"; + +public const string PublishAudio = "PublishAudio"; //***END*** } } \ No newline at end of file diff --git a/CloudBuilder/CloudBuilder.Master/Policy/MasterPrefixPolicy.cs b/CloudBuilder/CloudBuilder.Master/Policy/MasterPrefixPolicy.cs index 095ab6a..e84ca3c 100644 --- a/CloudBuilder/CloudBuilder.Master/Policy/MasterPrefixPolicy.cs +++ b/CloudBuilder/CloudBuilder.Master/Policy/MasterPrefixPolicy.cs @@ -18,6 +18,23 @@ namespace CloudBuilder.Master.Policy public const string FAMILY_TREE_PREFIX = "T"; public const string FAMILY_TREE_FORMAT = "0000000"; - + public const string UPLOAD_DMS_FILE = "UPLOAD_DMS_FILE"; + public const string UPLOAD_DMS_FILE_UPLOAD_NAME = "UPLOAD_NAME"; + public const string UPLOAD_DMS_FILE_FORMAT = "00000000"; + + public const string DMS_FOLDER = "DMS_FOLDER"; + public const string DMS_FOLDER_FOLDER_NAME = "FOLDER_NAME"; + + public const string FAMILY_GROUP = "DMS_FOLDER"; + public const string FAMILY_GROUP_FAMILY_NAME = "FAMILY_NAME"; + + public const string PHOTO_PUBLISH = "PHOTO_PUBLISH"; + public const string PHOTO_PUBLISH_PUBLISH_NAME = "PUBLISH_NAME"; + + public const string VIDEOPUBLISH = "VIDEO_PUBLISH"; + public const string VIDEO_PUBLISH_PUBLISH_NAME = "PUBLISH_NAME"; + + public const string AUDIO_PUBLISH = "AUDIO_PUBLISH"; + public const string AUDIO_PUBLISH_PUBLISH_NAME = "PUBLISH_NAME"; } } diff --git a/CloudBuilder/CloudBuilder.Master/SearchCriteria/DmsFileSearchCriteria.auto.cs b/CloudBuilder/CloudBuilder.Master/SearchCriteria/DmsFileSearchCriteria.auto.cs new file mode 100644 index 0000000..ef20bed --- /dev/null +++ b/CloudBuilder/CloudBuilder.Master/SearchCriteria/DmsFileSearchCriteria.auto.cs @@ -0,0 +1,12 @@ + +using CloudBuilder.Core.Authorization; +using CloudBuilder.Core.Service; +namespace CloudBuilder.Master.SearchCriteria +{ + [TypeScript] + public class DmsFileSearchCriteria : AbstractSearchCriteria + { + public bool UserIdIndc { get; set; } = false; + public string? FamilyName { get; set; } + } +} diff --git a/CloudBuilder/CloudBuilder.Master/SearchCriteria/FamilyGroupManagerUserSearchCriteria.cs b/CloudBuilder/CloudBuilder.Master/SearchCriteria/FamilyGroupManagerUserSearchCriteria.cs new file mode 100644 index 0000000..80b16a3 --- /dev/null +++ b/CloudBuilder/CloudBuilder.Master/SearchCriteria/FamilyGroupManagerUserSearchCriteria.cs @@ -0,0 +1,17 @@ +using CloudBuilder.Core.Authorization; +using CloudBuilder.Core.Service; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CloudBuilder.Master.SearchCriteria +{ + [TypeScript] + public class FamilyGroupManagerUserSearchCriteria : AbstractSearchCriteria + { + public string? FamilyName { get; set; } + public string? FolderName { get; set; } + } +} diff --git a/CloudBuilder/CloudBuilder.Master/SearchCriteria/FamilyGroupSearchCriteria.auto.cs b/CloudBuilder/CloudBuilder.Master/SearchCriteria/FamilyGroupSearchCriteria.auto.cs new file mode 100644 index 0000000..a4e506b --- /dev/null +++ b/CloudBuilder/CloudBuilder.Master/SearchCriteria/FamilyGroupSearchCriteria.auto.cs @@ -0,0 +1,11 @@ + +using CloudBuilder.Core.Authorization; +using CloudBuilder.Core.Service; +namespace CloudBuilder.Master.SearchCriteria +{ + [TypeScript] + public class FamilyGroupSearchCriteria: AbstractSearchCriteria + { + + } +} diff --git a/CloudBuilder/CloudBuilder.Master/SearchCriteria/PublishAudioSearchCriteria.auto.cs b/CloudBuilder/CloudBuilder.Master/SearchCriteria/PublishAudioSearchCriteria.auto.cs new file mode 100644 index 0000000..96783cf --- /dev/null +++ b/CloudBuilder/CloudBuilder.Master/SearchCriteria/PublishAudioSearchCriteria.auto.cs @@ -0,0 +1,11 @@ + +using CloudBuilder.Core.Authorization; +using CloudBuilder.Core.Service; +namespace CloudBuilder.Master.SearchCriteria +{ + [TypeScript] + public class PublishAudioSearchCriteria: AbstractSearchCriteria + { + + } +} diff --git a/CloudBuilder/CloudBuilder.Master/SearchCriteria/PublishPhotoSearchCriteria.auto.cs b/CloudBuilder/CloudBuilder.Master/SearchCriteria/PublishPhotoSearchCriteria.auto.cs new file mode 100644 index 0000000..475ba2a --- /dev/null +++ b/CloudBuilder/CloudBuilder.Master/SearchCriteria/PublishPhotoSearchCriteria.auto.cs @@ -0,0 +1,11 @@ + +using CloudBuilder.Core.Authorization; +using CloudBuilder.Core.Service; +namespace CloudBuilder.Master.SearchCriteria +{ + [TypeScript] + public class PublishPhotoSearchCriteria: AbstractSearchCriteria + { + + } +} diff --git a/CloudBuilder/CloudBuilder.Master/SearchCriteria/PublishVideoSearchCriteria.auto.cs b/CloudBuilder/CloudBuilder.Master/SearchCriteria/PublishVideoSearchCriteria.auto.cs new file mode 100644 index 0000000..a494431 --- /dev/null +++ b/CloudBuilder/CloudBuilder.Master/SearchCriteria/PublishVideoSearchCriteria.auto.cs @@ -0,0 +1,11 @@ + +using CloudBuilder.Core.Authorization; +using CloudBuilder.Core.Service; +namespace CloudBuilder.Master.SearchCriteria +{ + [TypeScript] + public class PublishVideoSearchCriteria: AbstractSearchCriteria + { + + } +} diff --git a/CloudBuilder/CloudBuilder.Master/Service/IDmsFileService.auto.cs b/CloudBuilder/CloudBuilder.Master/Service/IDmsFileService.auto.cs new file mode 100644 index 0000000..1d5f888 --- /dev/null +++ b/CloudBuilder/CloudBuilder.Master/Service/IDmsFileService.auto.cs @@ -0,0 +1,64 @@ + + +using CloudBuilder.Core.Service; +using CloudBuilder.Master.Data; +using CloudBuilder.Master.Entity; +using CloudBuilder.Master.SearchCriteria; +using Microsoft.AspNetCore.Http; + +namespace CloudBuilder.Master.Service +{ + public interface IDmsFileService :IServiceBase + { + DmsFileResultData FindBySearchCriteria(DmsFileSearchCriteria tc); + dynamic PrintBySearchCriteria(DmsFileSearchCriteria tc); + + DmsFileEntity PackUploadFile(IFormFile file, string folderName); + + DmsFileEntity CreateDmsFile(DmsFileEntity dmsFile); + string CreateDmsFolder(DmsFileEntity dmsFile); + + void UpdateDmsFolder(DmsFileEntity dmsFile); + + void MoveDmsFolder(DmsFileEntity dmsFile); + + void CreateFamilyDmsFolder(FamilyGroupEntity familyGroup, FamilyGroupFolderEntity[] familyGroupFolders); + + void CreateFamilyDmsFolder(FamilyDmsFileViewEntity familyDmsFile); + + SelectOption[] FindDmsFolders(); + SelectOption[] FindDmsFolderDeleteLogs(); + DmsFolderData FindDmsFolderData(); + void UploadFile(); + + string FindM3u8Path(long fileId); + + string FindSourceVideoPath(long fileId); + string FindDeleteLogM3u8Path(long fileId); + + dynamic DownloadFile(long fileId); + + dynamic DownloadFilePreview(DmsFileEntity dmsFile); + + dynamic DownloadFileCombine(string fileName); + + void DeleteLog(long key); + DmsFileDeleteLogEntity FindDmsFileDeleteLogByKey(long key); + DmsFileResultData FindDeleteLogBySearchCriteria(DmsFileSearchCriteria criteria); + DmsFileResultData FindFamilyBySearchCriteria(DmsFileSearchCriteria criteria); + DmsFileResultData FindDatasBySearchCriteria(DmsFileSearchCriteria criteria); + SelectOption[] FindFamilyDmsFolders(); + + SelectOption[] FindFamilyDmsFoldersByFamilyName(string familyName); + + void DeleteFolder(string folderName); + + int FindDmsFolderMapByFolderName(string folderName); + + string FindFolderNameParentByFolderName(string folderName); + + void CreateFamilyGroupFolder(FamilyGroupFolderEntity[] dmsFolderMaps); + + void DeleteFamilyGroupFolder(FamilyGroupFolderEntity[] dmsFolderMaps); + } +} diff --git a/CloudBuilder/CloudBuilder.Master/Service/IFamilyGroupService.auto.cs b/CloudBuilder/CloudBuilder.Master/Service/IFamilyGroupService.auto.cs new file mode 100644 index 0000000..2c166fe --- /dev/null +++ b/CloudBuilder/CloudBuilder.Master/Service/IFamilyGroupService.auto.cs @@ -0,0 +1,29 @@ + + +using CloudBuilder.Core.Service; +using CloudBuilder.Master.Data; +using CloudBuilder.Master.Entity; +using CloudBuilder.Master.SearchCriteria; + +namespace CloudBuilder.Master.Service +{ + public interface IFamilyGroupService :IServiceBase + { + FamilyGroupResultData FindBySearchCriteria(FamilyGroupSearchCriteria tc); + dynamic PrintBySearchCriteria(FamilyGroupSearchCriteria tc); + + FamilyGroupResultData FindFamilyUserBySearchCriteria(FamilyGroupManagerUserSearchCriteria criteria); + FamilyGroupResultData FamilyFolderFavoriteBySearchCriteria(FamilyGroupManagerUserSearchCriteria criteria); + + void InsertFamilyGroupPermission(FamilyGroupPermissionEntity[] managers); + void InsertFamilyGroupManager(FamilyGroupManagerEntity manager); + void UpdateFamilyGroupManager(FamilyGroupManagerEntity manager); + void DeleteFamilyGroupManager(FamilyGroupManagerEntity manager); + + void InsertFamilyFolderFavorite(string folderName); + + void DeleteFamilyFolderFavorite(string folderName); + + void DeleteFamilyFolderFavorites(FamilyFolderFavoriteEntity[] familyFolderFavorites); + } +} diff --git a/CloudBuilder/CloudBuilder.Master/Service/IFileTypePolicyService.cs b/CloudBuilder/CloudBuilder.Master/Service/IFileTypePolicyService.cs new file mode 100644 index 0000000..72f643a --- /dev/null +++ b/CloudBuilder/CloudBuilder.Master/Service/IFileTypePolicyService.cs @@ -0,0 +1,14 @@ +using CloudBuilder.Core.Service; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CloudBuilder.Master.Service +{ + public interface IFileTypePolicyService : IService + { + SelectOption[] FindSelectOption(bool blank); + } +} diff --git a/CloudBuilder/CloudBuilder.Master/Service/IPublishAudioService.auto.cs b/CloudBuilder/CloudBuilder.Master/Service/IPublishAudioService.auto.cs new file mode 100644 index 0000000..fd03d57 --- /dev/null +++ b/CloudBuilder/CloudBuilder.Master/Service/IPublishAudioService.auto.cs @@ -0,0 +1,17 @@ + + +using CloudBuilder.Master.Entity; +using CloudBuilder.Master.SearchCriteria; +using CloudBuilder.Core.Service; +using CloudBuilder.Master.Data; + +namespace CloudBuilder.Master.Service +{ + public interface IPublishAudioService : IServiceBase + { + PublishAudioResultData FindBySearchCriteria(PublishAudioSearchCriteria tc); + dynamic PrintBySearchCriteria(PublishAudioSearchCriteria tc); + PublishAudioData FindPublishAudioDefault(); + void InsertPublishAudioDetail(PublishData publishData); + } +} diff --git a/CloudBuilder/CloudBuilder.Master/Service/IPublishPhotoService.auto.cs b/CloudBuilder/CloudBuilder.Master/Service/IPublishPhotoService.auto.cs new file mode 100644 index 0000000..d17a4a2 --- /dev/null +++ b/CloudBuilder/CloudBuilder.Master/Service/IPublishPhotoService.auto.cs @@ -0,0 +1,21 @@ + + +using CloudBuilder.Core.Service; +using CloudBuilder.Master.Data; +using CloudBuilder.Master.Entity; +using CloudBuilder.Master.SearchCriteria; + +namespace CloudBuilder.Master.Service +{ + public interface IPublishPhotoService : IServiceBase + { + PublishPhotoResultData FindBySearchCriteria(PublishPhotoSearchCriteria tc); + dynamic PrintBySearchCriteria(PublishPhotoSearchCriteria tc); + + void InsertPublishPhotoDetail(PublishData publishData); + void InsertPublishPhotoDetailByFamilyGroup(PublishData publishData); + + PublishPhotoDetailEntity[] FindPublishPhotoDetail(); + PublishPhotoDetailEntity[] FindPublishPhotoDetailByPublishName(string publishName); + } +} diff --git a/CloudBuilder/CloudBuilder.Master/Service/IPublishVideoService.auto.cs b/CloudBuilder/CloudBuilder.Master/Service/IPublishVideoService.auto.cs new file mode 100644 index 0000000..747d009 --- /dev/null +++ b/CloudBuilder/CloudBuilder.Master/Service/IPublishVideoService.auto.cs @@ -0,0 +1,18 @@ + + +using CloudBuilder.Core.Service; +using CloudBuilder.Master.Data; +using CloudBuilder.Master.Entity; +using CloudBuilder.Master.SearchCriteria; + +namespace CloudBuilder.Master.Service +{ + public interface IPublishVideoService : IServiceBase + { + PublishVideoResultData FindBySearchCriteria(PublishVideoSearchCriteria tc); + dynamic PrintBySearchCriteria(PublishVideoSearchCriteria tc); + + PublishVideoData FindPublishVideoDefault(); + void InsertPublishVideoDetail(PublishData publishData); + } +} diff --git a/CloudBuilder/CloudBuilder.Request/Master/DmsFileRequest.auto.cs b/CloudBuilder/CloudBuilder.Request/Master/DmsFileRequest.auto.cs new file mode 100644 index 0000000..b176010 --- /dev/null +++ b/CloudBuilder/CloudBuilder.Request/Master/DmsFileRequest.auto.cs @@ -0,0 +1,152 @@ + +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 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 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 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 index 2a212bb..cf033b0 100644 --- a/CloudBuilder/CloudBuilder.Request/Master/FamilyPersonRequest.auto.cs +++ b/CloudBuilder/CloudBuilder.Request/Master/FamilyPersonRequest.auto.cs @@ -5,9 +5,10 @@ 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 CloudBuilder.Master.Data; using System; + using CloudBuilder.Master.Data; using CloudBuilder.Master.SearchCriteria; namespace CloudBuilder.Request.Master diff --git a/CloudBuilder/CloudBuilder.Request/Master/FamilyTreeRequest.auto.cs b/CloudBuilder/CloudBuilder.Request/Master/FamilyTreeRequest.auto.cs index b77d22f..ffff9b3 100644 --- a/CloudBuilder/CloudBuilder.Request/Master/FamilyTreeRequest.auto.cs +++ b/CloudBuilder/CloudBuilder.Request/Master/FamilyTreeRequest.auto.cs @@ -5,9 +5,10 @@ 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 CloudBuilder.Master.Data; using System; + using CloudBuilder.Master.Data; using CloudBuilder.Master.SearchCriteria; namespace CloudBuilder.Request.Master 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/CloudBuilder/CloudBuilder.Security.Service/LocaleService.cs b/CloudBuilder/CloudBuilder.Security.Service/LocaleService.cs index 566366b..0d5c7ca 100644 --- a/CloudBuilder/CloudBuilder.Security.Service/LocaleService.cs +++ b/CloudBuilder/CloudBuilder.Security.Service/LocaleService.cs @@ -59,7 +59,7 @@ namespace CloudBuilder.Security.Service LocaleResultData data = new LocaleResultData(); LocaleEntity[] list = null; - int count = 0; + Int64 count = 0; string sqlWhere = null; @@ -85,7 +85,7 @@ namespace CloudBuilder.Security.Service if (list != null && list.Length > 0) { sql = entity.GetSelectCountFrom(sqlWhere); - count = Convert.ToInt32(repository.ExecuteScalar(sql)); + count = Convert.ToInt64(repository.ExecuteScalar(sql)); data.Datas = list.Select(x => new LocaleDisplayData(x)).ToArray(); } diff --git a/CloudBuilder/CloudBuilder.Security.Service/SecurityActorService.cs b/CloudBuilder/CloudBuilder.Security.Service/SecurityActorService.cs index 8d1c772..8596a1e 100644 --- a/CloudBuilder/CloudBuilder.Security.Service/SecurityActorService.cs +++ b/CloudBuilder/CloudBuilder.Security.Service/SecurityActorService.cs @@ -65,7 +65,7 @@ namespace CloudBuilder.Security.Service SecurityActorResultData data = new SecurityActorResultData(); SecurityActorEntity[] list = null; - int count = 0; + Int64 count = 0; string sqlWhere = null; @@ -91,7 +91,7 @@ namespace CloudBuilder.Security.Service if (list != null && list.Length > 0) { sql = entity.GetSelectCountFrom(sqlWhere); - count = Convert.ToInt32(repository.ExecuteScalar(sql)); + count = Convert.ToInt64(repository.ExecuteScalar(sql)); } data.Limit = criteria.limit; diff --git a/CloudBuilder/CloudBuilder.Security.Service/SecurityFunctionService.cs b/CloudBuilder/CloudBuilder.Security.Service/SecurityFunctionService.cs index 44b9e17..90bc504 100644 --- a/CloudBuilder/CloudBuilder.Security.Service/SecurityFunctionService.cs +++ b/CloudBuilder/CloudBuilder.Security.Service/SecurityFunctionService.cs @@ -55,7 +55,7 @@ namespace CloudBuilder.Security.Service SecurityFunctionResultData data = new SecurityFunctionResultData(); SecurityFunctionEntity[] list = null; - int count = 0; + Int64 count = 0; string sqlWhere = null; @@ -81,7 +81,7 @@ namespace CloudBuilder.Security.Service if (list != null && list.Length > 0) { sql = entity.GetSelectCountFrom(sqlWhere); - count = Convert.ToInt32(repository.ExecuteScalar(sql)); + count = Convert.ToInt64(repository.ExecuteScalar(sql)); data.SecurityFunctionDisplayDatas = list.Select(x => new SecurityFunctionDisplayData(x)).ToArray(); } diff --git a/CloudBuilder/CloudBuilder.Security.Service/SecurityGeneratorNumberService.cs b/CloudBuilder/CloudBuilder.Security.Service/SecurityGeneratorNumberService.cs index 6a578db..4fa35d5 100644 --- a/CloudBuilder/CloudBuilder.Security.Service/SecurityGeneratorNumberService.cs +++ b/CloudBuilder/CloudBuilder.Security.Service/SecurityGeneratorNumberService.cs @@ -39,7 +39,7 @@ namespace CloudBuilder.Security.Service SecurityGeneratorNumberResultData data = new SecurityGeneratorNumberResultData(); SecurityGeneratorNumberEntity[] list = null; - int count = 0; + Int64 count = 0; string sqlWhere = null; @@ -65,7 +65,7 @@ namespace CloudBuilder.Security.Service if (list != null && list.Length > 0) { sql = entity.GetSelectCountFrom(sqlWhere); - count = Convert.ToInt32(repository.ExecuteScalar(sql)); + count = Convert.ToInt64(repository.ExecuteScalar(sql)); } data.Limit = criteria.limit; diff --git a/CloudBuilder/CloudBuilder.Security.Service/SecurityGroupService.cs b/CloudBuilder/CloudBuilder.Security.Service/SecurityGroupService.cs index 88ce70e..360a912 100644 --- a/CloudBuilder/CloudBuilder.Security.Service/SecurityGroupService.cs +++ b/CloudBuilder/CloudBuilder.Security.Service/SecurityGroupService.cs @@ -65,7 +65,7 @@ namespace CloudBuilder.Security.Service SecurityGroupResultData data = new SecurityGroupResultData(); SecurityGroupEntity[] list = null; - int count = 0; + Int64 count = 0; string sqlWhere = null; @@ -91,7 +91,7 @@ namespace CloudBuilder.Security.Service if (list != null && list.Length > 0) { sql = entity.GetSelectCountFrom(sqlWhere); - count = Convert.ToInt32(repository.ExecuteScalar(sql)); + count = Convert.ToInt64(repository.ExecuteScalar(sql)); } data.Limit = criteria.limit; diff --git a/CloudBuilder/CloudBuilder.Security.Service/SecurityMasterService.cs b/CloudBuilder/CloudBuilder.Security.Service/SecurityMasterService.cs index d0f7c84..8089d18 100644 --- a/CloudBuilder/CloudBuilder.Security.Service/SecurityMasterService.cs +++ b/CloudBuilder/CloudBuilder.Security.Service/SecurityMasterService.cs @@ -50,7 +50,7 @@ namespace CloudBuilder.Security.Service SecurityMasterResultData data = new SecurityMasterResultData(); SecurityMasterEntity[] list = null; - int count = 0; + Int64 count = 0; string sqlWhere = null; @@ -76,7 +76,7 @@ namespace CloudBuilder.Security.Service if (list != null && list.Length > 0) { sql = entity.GetSelectCountFrom(sqlWhere); - count = Convert.ToInt32(repository.ExecuteScalar(sql)); + count = Convert.ToInt64(repository.ExecuteScalar(sql)); } data.Limit = criteria.limit; diff --git a/CloudBuilder/CloudBuilder.Security.Service/SecurityPermissionService.cs b/CloudBuilder/CloudBuilder.Security.Service/SecurityPermissionService.cs index f842498..20c7622 100644 --- a/CloudBuilder/CloudBuilder.Security.Service/SecurityPermissionService.cs +++ b/CloudBuilder/CloudBuilder.Security.Service/SecurityPermissionService.cs @@ -52,7 +52,7 @@ namespace CloudBuilder.Security.Service SecurityPermissionResultData data = new SecurityPermissionResultData(); SecurityPermissionEntity[] list = null; - int count = 0; + Int64 count = 0; string sqlWhere = null; @@ -78,7 +78,7 @@ namespace CloudBuilder.Security.Service if (list != null && list.Length > 0) { sql = entity.GetSelectCountFrom(sqlWhere); - count = Convert.ToInt32(repository.ExecuteScalar(sql)); + count = Convert.ToInt64(repository.ExecuteScalar(sql)); } data.Limit = criteria.limit; @@ -96,7 +96,7 @@ namespace CloudBuilder.Security.Service SecurityPermissionResultData data = new SecurityPermissionResultData(); SecurityPermissionDependentEntity[] list = null; IRepository repositoryDependent = service.GetRepository>(); - int count = 0; + Int64 count = 0; string sqlWhere = null; @@ -122,7 +122,7 @@ namespace CloudBuilder.Security.Service if (list != null && list.Length > 0) { sql = entity.GetSelectCountFrom(sqlWhere); - count = (int)repositoryDependent.ExecuteScalar(sql); + count = Convert.ToInt64(repository.ExecuteScalar(sql)); } data.Limit = criteria.limit; @@ -141,7 +141,7 @@ namespace CloudBuilder.Security.Service SecurityPermissionResultData data = new SecurityPermissionResultData(); SecurityPermissionDependentEntity[] list = null; - int count = 0; + Int64 count = 0; string sqlWhere = null; @@ -170,7 +170,7 @@ namespace CloudBuilder.Security.Service if (list != null && list.Length > 0) { sql = entity.GetSelectCountFrom(sqlWhere); - count = Convert.ToInt32(repository.ExecuteScalar(sql)); + count = Convert.ToInt64(repository.ExecuteScalar(sql)); } data.Limit = criteria.limit; diff --git a/CloudBuilder/CloudBuilder.Security.Service/SecurityUserService.cs b/CloudBuilder/CloudBuilder.Security.Service/SecurityUserService.cs index f5551cc..ae032f4 100644 --- a/CloudBuilder/CloudBuilder.Security.Service/SecurityUserService.cs +++ b/CloudBuilder/CloudBuilder.Security.Service/SecurityUserService.cs @@ -77,7 +77,7 @@ namespace CloudBuilder.Security.Service SecurityUserResultData data = new SecurityUserResultData(); SecurityUserEntity[] list = null; - int count = 0; + Int64 count = 0; string sqlWhere = null; @@ -107,7 +107,7 @@ namespace CloudBuilder.Security.Service if (list != null && list.Length > 0) { sql = entity.GetSelectCountFrom(sqlWhere); - count = Convert.ToInt32(repository.ExecuteScalar(sql)); + count = Convert.ToInt64(repository.ExecuteScalar(sql)); } data.Limit = criteria.limit; diff --git a/CloudBuilder/CloudBuilder.Security/Policy/FileTypePolicy.cs b/CloudBuilder/CloudBuilder.Security/Policy/FileTypePolicy.cs index a671cb0..80669a2 100644 --- a/CloudBuilder/CloudBuilder.Security/Policy/FileTypePolicy.cs +++ b/CloudBuilder/CloudBuilder.Security/Policy/FileTypePolicy.cs @@ -1,4 +1,8 @@ using CloudBuilder.Core.DatabaseAccessor.Entity; +using CloudBuilder.Core.DependencyInjection.Form; +using CloudBuilder.Core.DependencyInjection.Request; +using CloudBuilder.Core.Policy; +using Microsoft.Extensions.DependencyInjection; using System; using System.Collections.Generic; using System.Linq; @@ -7,7 +11,7 @@ using System.Threading.Tasks; namespace CloudBuilder.Security.Policy { - public class FileTypePolicy + public class FileTypePolicy : AbstractPolicy { public const string VIDEO = "V"; public const string AUDIO = "A"; @@ -15,6 +19,19 @@ namespace CloudBuilder.Security.Policy public const string DOCUMENT = "D"; public const string LYRIC = "L"; + public static FileTypePolicy instance = null; + + public FileTypePolicy(IContext context) : base(context) + { + this.values = new string[] { VIDEO, AUDIO, LYRIC, PHOTO, DOCUMENT }; + } + + public static FileTypePolicy GetInstance(IApplicationService service) + { + instance = service.ServiceProvider.GetKeyedService(typeof(FileTypePolicy).Name); + return instance; + } + public static string GetType(string value) { if (string.IsNullOrEmpty(value)) return DOCUMENT; @@ -36,7 +53,6 @@ namespace CloudBuilder.Security.Policy return DOCUMENT; } - public static bool IsAudio(string value) { return GetType(value) == AUDIO; @@ -57,67 +73,74 @@ namespace CloudBuilder.Security.Policy return GetType(value) == LYRIC; } - public static string PackUrl(IApplicationService service, string createdBy, string orderKey, string transcodeIndc) { string url = string.Empty; - var webRootPath = service.Configuration["FileServiceSettings:RequestPath"]; - var phy = service.Configuration["FileServiceSettings:PhysicalFileDirectory"]; - + var webRootPath = service.Configuration[ServiceSettingsPolicy.RequestPath] ?? ""; + var phy = service.Configuration[ServiceSettingsPolicy.PhysicalFileDirectory] ?? ""; var fileExtension = Path.GetExtension(orderKey);//获取文件格式,拓展名 + if (GetType(orderKey!) == FileTypePolicy.PHOTO) { if (transcodeIndc == YesNoPolicy.YES) { - var backup = service.Configuration["FileServiceSettings:BackupDmsFileDirectory"].Replace(phy, ""); - var filePath = $"{backup.Replace("\\", "/")}/{createdBy}/{fileExtension.Replace(".", "")}/"; - url = service.Configuration["applicationUrl"] + webRootPath + filePath + orderKey; + var backup = (service.Configuration[ServiceSettingsPolicy.DmsFileBackupDirectory] ?? "").Replace(phy ?? "", ""); + + var filePathRel = Path.Combine(backup, createdBy, fileExtension.Replace(".", ""), ""); + var filePath = filePathRel.Replace(Path.DirectorySeparatorChar, '/') + "/"; + url = service.Configuration[AppsettingsPolicy.ApplicationUrl] + webRootPath + filePath + orderKey; } else { - var scale = service.Configuration["FileServiceSettings:ScaleDmsFileDirectory"].Replace(phy, ""); - var filePath = $"{scale.Replace("\\", "/")}/{createdBy}/{fileExtension.Replace(".", "")}/"; - url = service.Configuration["applicationUrl"] + webRootPath + filePath + orderKey; + var scale = (service.Configuration[ServiceSettingsPolicy.DmsFileScaleDirectory] ?? "").Replace(phy ?? "", ""); + var filePathRel = Path.Combine(scale, createdBy, fileExtension.Replace(".", ""), ""); + var filePath = filePathRel.Replace(Path.DirectorySeparatorChar, '/') + "/"; + url = service.Configuration[AppsettingsPolicy.ApplicationUrl] + webRootPath + filePath + orderKey; } } else if (GetType(orderKey!) == FileTypePolicy.AUDIO) { - var backup = service.Configuration["FileServiceSettings:BackupDmsFileDirectory"].Replace(phy, ""); - var filePath = $"{backup.Replace("\\", "/")}/{createdBy}/{fileExtension.Replace(".", "")}/"; - url = service.Configuration["applicationUrl"] + webRootPath + filePath + orderKey; + var backup = (service.Configuration[ServiceSettingsPolicy.DmsFileBackupDirectory] ?? "").Replace(phy ?? "", ""); + var filePathRel = Path.Combine(backup, createdBy, fileExtension.Replace(".", ""), ""); + var filePath = filePathRel.Replace(Path.DirectorySeparatorChar, '/') + "/"; + url = service.Configuration[AppsettingsPolicy.ApplicationUrl] + webRootPath + filePath + orderKey; } else if (GetType(orderKey!) == FileTypePolicy.VIDEO) { if (transcodeIndc == YesNoPolicy.YES) { - var upload = service.Configuration["FileServiceSettings:UploadDmsFileDirectory"].Replace(phy, ""); - var filePath = $"{upload.Replace("\\", "/")}/{createdBy}/m3u8/"; - url = service.Configuration["applicationUrl"] + webRootPath + filePath + Path.GetFileNameWithoutExtension(orderKey) + "/main.m3u8"; + var upload = (service.Configuration[ServiceSettingsPolicy.DmsFileUploadDirectory] ?? "").Replace(phy ?? "", ""); + var filePathRel = Path.Combine(upload, createdBy, "m3u8", ""); + var filePath = filePathRel.Replace(Path.DirectorySeparatorChar, '/') + "/"; + url = service.Configuration[AppsettingsPolicy.ApplicationUrl] + webRootPath + filePath + Path.GetFileNameWithoutExtension(orderKey) + "/main.m3u8"; } else { - var backup = service.Configuration["FileServiceSettings:BackupDmsFileDirectory"].Replace(phy, ""); - var filePath = $"{backup.Replace("\\", "/")}/{createdBy}/{fileExtension.Replace(".", "")}/"; - url = service.Configuration["applicationUrl"] + webRootPath + filePath + orderKey; + var backup = (service.Configuration[ServiceSettingsPolicy.DmsFileBackupDirectory] ?? "").Replace(phy ?? "", ""); + var filePathRel = Path.Combine(backup, createdBy, fileExtension.Replace(".", ""), ""); + var filePath = filePathRel.Replace(Path.DirectorySeparatorChar, '/') + "/"; + url = service.Configuration[AppsettingsPolicy.ApplicationUrl] + webRootPath + filePath + orderKey; } } - return url; } - public static string PackSourceVideoUrl(IApplicationService service, string createdBy, string orderKey) { - var webRootPath = service.Configuration["FileServiceSettings:RequestPath"]; - var phy = service.Configuration["FileServiceSettings:PhysicalFileDirectory"]; - var upload = service.Configuration["FileServiceSettings:BackupDmsFileDirectory"].Replace(phy, ""); + var webRootPath = service.Configuration[ServiceSettingsPolicy.RequestPath] ?? ""; + var phy = service.Configuration[ServiceSettingsPolicy.PhysicalFileDirectory] ?? ""; + var upload = (service.Configuration[ServiceSettingsPolicy.DmsFileBackupDirectory] ?? "").Replace(phy ?? "", ""); var fileExtension = Path.GetExtension(orderKey);//获取文件格式,拓展名 - var filePath = $"{upload.Replace("\\", "/")}/{createdBy}/{fileExtension.Replace(".", "")}/"; - return service.Configuration["applicationUrl"] + webRootPath + filePath + orderKey; + // 使用Path.Combine拼接路径,再将系统分隔符转为URL标准正斜杠 + var filePathRel = Path.Combine(upload, createdBy, fileExtension.Replace(".", ""), ""); + var filePath = filePathRel.Replace(Path.DirectorySeparatorChar, '/') + "/"; + + return (service.Configuration[AppsettingsPolicy.ApplicationUrl] ?? "") + webRootPath + filePath + orderKey; } + public static string PackFilePath(IApplicationService service, string createdBy, string orderKey) { - var backup = service.Configuration["FileServiceSettings:BackupDmsFileDirectory"]!; + var backup = service.Configuration[ServiceSettingsPolicy.DmsFileBackupDirectory]!; var fileExtension = Path.GetExtension(orderKey).Replace(".", "");//获取文件格式,拓展名 return Path.Combine(backup, createdBy, fileExtension, orderKey); diff --git a/CloudBuilder/CloudBuilder.Security/Policy/ServiceSettingsPolicy.cs b/CloudBuilder/CloudBuilder.Security/Policy/ServiceSettingsPolicy.cs new file mode 100644 index 0000000..0c17b92 --- /dev/null +++ b/CloudBuilder/CloudBuilder.Security/Policy/ServiceSettingsPolicy.cs @@ -0,0 +1,24 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + + +namespace CloudBuilder.Security.Policy +{ + public class ServiceSettingsPolicy + { + public const string DmsFileScaleDirectory = "FileServiceSettings:DmsFileScaleDirectory"; + public const string PhysicalFileDirectory = "FileServiceSettings:PhysicalFileDirectory"; + public const string DmsFileUploadDirectory = "FileServiceSettings:DmsFileUploadDirectory"; + public const string DmsFileBackupDirectory = "FileServiceSettings:DmsFileBackupDirectory"; + public const string RequestPath = "FileServiceSettings:RequestPath"; + public const string ExcelOutputDirectory = "FileServiceSettings:ExcelOutputDirectory"; + + public const string FfmpegPath = "Ffmpeg:Path"; + public const string FfmpegPictrue = "Ffmpeg:Pictrue"; + public const string FfmpegArguments = "Ffmpeg:Arguments"; + + } +} diff --git a/CloudBuilder/CloudBuilder.Web.Entry/CloudBuilder.Web.Entry.csproj b/CloudBuilder/CloudBuilder.Web.Entry/CloudBuilder.Web.Entry.csproj index 7de2a28..4a1a74d 100644 --- a/CloudBuilder/CloudBuilder.Web.Entry/CloudBuilder.Web.Entry.csproj +++ b/CloudBuilder/CloudBuilder.Web.Entry/CloudBuilder.Web.Entry.csproj @@ -32,6 +32,8 @@ + + diff --git a/CloudBuilder/CloudBuilder.Web.Entry/Controllers/Master/DmsFileController.auto.cs b/CloudBuilder/CloudBuilder.Web.Entry/Controllers/Master/DmsFileController.auto.cs new file mode 100644 index 0000000..aad9b97 --- /dev/null +++ b/CloudBuilder/CloudBuilder.Web.Entry/Controllers/Master/DmsFileController.auto.cs @@ -0,0 +1,657 @@ + +using CloudBuilder.Core.DatabaseAccessor; +using CloudBuilder.Core.Policy; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using System.Transactions; +using CloudBuilder.Core.Service; +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.Web.Entry.Controllers.Master +{ +[Authorize(AuthorizePolicy.PERMISSION)] +[ApiController] +[Route("[controller]/[action]")] +public class DmsFileController : ControllerBase +{ +private readonly IApplicationService service; +private readonly IDmsFileService dmsFileService; + +public DmsFileController(IApplicationService service, IDmsFileService dmsFileService) +{ +this.service = service; +this.dmsFileService= dmsFileService; +} + + [PermissionOperate(name: "DmsFile", operate: "Find")] + [HttpPost] + public dynamic FindByKey(Int64 key) + { + try + { + + var result = dmsFileService.FindByKey(key); + return result; + } + catch (ValidatedException vex) + { + return vex; + } + catch (Exception ex) + { + return new ServiceErrorException(ex); + } + } + + [PermissionOperate(name: "DmsFile", operate: "Find")] + [HttpPost] + public dynamic FindBySearchCriteria(DmsFileSearchCriteria criteria) + { + try + { + + var result = dmsFileService.FindBySearchCriteria(criteria); + return result; + } + catch (ValidatedException vex) + { + return vex; + } + catch (Exception ex) + { + return new ServiceErrorException(ex); + } + } + + [PermissionOperate(name: "DmsFile", operate: "Find")] + [HttpPost] + public dynamic FindDatasBySearchCriteria(DmsFileSearchCriteria criteria) + { + try + { + + var result = dmsFileService.FindDatasBySearchCriteria(criteria); + return result; + } + catch (ValidatedException vex) + { + return vex; + } + catch (Exception ex) + { + return new ServiceErrorException(ex); + } + } + + [PermissionOperate(name: "DmsFile", operate: "Find")] + [HttpPost] + public dynamic FindDeleteLogBySearchCriteria(DmsFileSearchCriteria criteria) + { + try + { + + var result = dmsFileService.FindDeleteLogBySearchCriteria(criteria); + return result; + } + catch (ValidatedException vex) + { + return vex; + } + catch (Exception ex) + { + return new ServiceErrorException(ex); + } + } + + [PermissionOperate(name: "DmsFile", operate: "Find")] + [HttpPost] + public dynamic FindFamilyBySearchCriteria(DmsFileSearchCriteria criteria) + { + try + { + + var result = dmsFileService.FindFamilyBySearchCriteria(criteria); + return result; + } + catch (ValidatedException vex) + { + return vex; + } + catch (Exception ex) + { + return new ServiceErrorException(ex); + } + } + + [PermissionOperate(name: "DmsFile", operate: "Find")] + [HttpPost] + public dynamic FindDmsFileDeleteLogByKey(Int64 key) + { + try + { + + var result = dmsFileService.FindDmsFileDeleteLogByKey(key); + return result; + } + catch (ValidatedException vex) + { + return vex; + } + catch (Exception ex) + { + return new ServiceErrorException(ex); + } + } + + [PermissionOperate(name: "DmsFile", operate: "Print")] + [HttpPost] + public dynamic PrintBySearchCriteria(DmsFileSearchCriteria criteria) + { + try + { + + var result = dmsFileService.PrintBySearchCriteria(criteria); + return result; + } + catch (ValidatedException vex) + { + return vex; + } + catch (Exception ex) + { + return new ServiceErrorException(ex); + } + } + + [PermissionOperate(name: "DmsFile", operate: "Insert")] + [HttpPost] + [UnitOfWork] + public dynamic Insert(DmsFileEntity data) + { + try + { + + var result = dmsFileService.Insert(data); + return result; + } + catch (ValidatedException vex) + { + return vex; + } + catch (Exception ex) + { + return new ServiceErrorException(ex); + } + } + + [PermissionOperate(name: "DmsFile", operate: "Update")] + [HttpPost] + [UnitOfWork] + public dynamic Update(DmsFileEntity data) + { + try + { + + var result = dmsFileService.Update(data); + return result; + } + catch (ValidatedException vex) + { + return vex; + } + catch (Exception ex) + { + return new ServiceErrorException(ex); + } + } + + [PermissionOperate(name: "DmsFile", operate: "Delete")] + [HttpPost] + [UnitOfWork] + public dynamic Delete(Int64 key){ + try + { + dmsFileService.Delete(key); + + return string.Empty; + } + catch (ValidatedException vex) + { + return vex; + } + catch (Exception ex) + { + return new ServiceErrorException(ex); + } + } + + [PermissionOperate(name: "DmsFile", operate: "Delete")] + [HttpPost] + [UnitOfWork] + public dynamic DeleteLog(Int64 key){ + try + { + dmsFileService.DeleteLog(key); + + return string.Empty; + } + catch (ValidatedException vex) + { + return vex; + } + catch (Exception ex) + { + return new ServiceErrorException(ex); + } + } + + [PermissionOperate(name: "DmsFile", operate: "Insert")] + [HttpPost] + [UnitOfWork] + public dynamic CreateDmsFolder(DmsFileEntity dmsFile) + { + try + { + + var result = dmsFileService.CreateDmsFolder(dmsFile); + return result; + } + catch (ValidatedException vex) + { + return vex; + } + catch (Exception ex) + { + return new ServiceErrorException(ex); + } + } + + [PermissionOperate(name: "DmsFile", operate: "Insert")] + [HttpPost] + [UnitOfWork] + public dynamic CreateFamilyDmsFolder(FamilyDmsFileViewEntity familyDmsFile){ + try + { + dmsFileService.CreateFamilyDmsFolder(familyDmsFile); + + return string.Empty; + } + catch (ValidatedException vex) + { + return vex; + } + catch (Exception ex) + { + return new ServiceErrorException(ex); + } + } + + [PermissionOperate(name: "DmsFile", operate: "Update")] + [HttpPost] + [UnitOfWork] + public dynamic UpdateDmsFolder(DmsFileEntity dmsFile){ + try + { + dmsFileService.UpdateDmsFolder(dmsFile); + + return string.Empty; + } + catch (ValidatedException vex) + { + return vex; + } + catch (Exception ex) + { + return new ServiceErrorException(ex); + } + } + + [PermissionOperate(name: "DmsFile", operate: "Find")] + [HttpPost] + public dynamic FindDmsFolders() + { + try + { + + var result = dmsFileService.FindDmsFolders(); + return result; + } + catch (ValidatedException vex) + { + return vex; + } + catch (Exception ex) + { + return new ServiceErrorException(ex); + } + } + + [PermissionOperate(name: "DmsFile", operate: "Find")] + [HttpPost] + public dynamic FindDmsFolderDeleteLogs() + { + try + { + + var result = dmsFileService.FindDmsFolderDeleteLogs(); + return result; + } + catch (ValidatedException vex) + { + return vex; + } + catch (Exception ex) + { + return new ServiceErrorException(ex); + } + } + + [PermissionOperate(name: "DmsFile", operate: "Find")] + [HttpPost] + public dynamic FindDmsFolderData() + { + try + { + + var result = dmsFileService.FindDmsFolderData(); + return result; + } + catch (ValidatedException vex) + { + return vex; + } + catch (Exception ex) + { + return new ServiceErrorException(ex); + } + } + + [PermissionOperate(name: "DmsFile", operate: "Update")] + [HttpPost] + [UnitOfWork] + public dynamic MoveDmsFolder(DmsFileEntity dmsFile){ + try + { + dmsFileService.MoveDmsFolder(dmsFile); + + return string.Empty; + } + catch (ValidatedException vex) + { + return vex; + } + catch (Exception ex) + { + return new ServiceErrorException(ex); + } + } + + [PermissionOperate(name: "DmsFile", operate: "Insert")] + [HttpPost] + [UnitOfWork] + public dynamic UploadFile() + { + try + { + + dmsFileService.UploadFile(); + + return string.Empty; + } + catch (ValidatedException vex) + { + return vex; + } + catch (Exception ex) + { + return new ServiceErrorException(ex); + } + } + + [PermissionOperate(name: "DmsFile", operate: "Find")] + [HttpPost] + public dynamic FindM3u8Path(Int64 fileId) + { + try + { + + var result = dmsFileService.FindM3u8Path(fileId); + return result; + } + catch (ValidatedException vex) + { + return vex; + } + catch (Exception ex) + { + return new ServiceErrorException(ex); + } + } + + [PermissionOperate(name: "DmsFile", operate: "Find")] + [HttpPost] + public dynamic FindSourceVideoPath(Int64 fileId) + { + try + { + + var result = dmsFileService.FindSourceVideoPath(fileId); + return result; + } + catch (ValidatedException vex) + { + return vex; + } + catch (Exception ex) + { + return new ServiceErrorException(ex); + } + } + + [PermissionOperate(name: "DmsFile", operate: "Find")] + [HttpPost] + public dynamic FindDeleteLogM3u8Path(Int64 fileId) + { + try + { + + var result = dmsFileService.FindDeleteLogM3u8Path(fileId); + return result; + } + catch (ValidatedException vex) + { + return vex; + } + catch (Exception ex) + { + return new ServiceErrorException(ex); + } + } + + [PermissionOperate(name: "DmsFile", operate: "Find")] + [HttpPost] + public dynamic DownloadFile(Int64 fileId) + { + try + { + + var result = dmsFileService.DownloadFile(fileId); + return result; + } + catch (ValidatedException vex) + { + return vex; + } + catch (Exception ex) + { + return new ServiceErrorException(ex); + } + } + + [PermissionOperate(name: "DmsFile", operate: "Find")] + [HttpPost] + public dynamic DownloadFilePreview(DmsFileEntity dmsFile) + { + try + { + + var result = dmsFileService.DownloadFilePreview(dmsFile); + return result; + } + catch (ValidatedException vex) + { + return vex; + } + catch (Exception ex) + { + return new ServiceErrorException(ex); + } + } + + [PermissionOperate(name: "DmsFile", operate: "Find")] + [HttpPost] + public dynamic DownloadFileCombine(string fileName) + { + try + { + + var result = dmsFileService.DownloadFileCombine(fileName); + return result; + } + catch (ValidatedException vex) + { + return vex; + } + catch (Exception ex) + { + return new ServiceErrorException(ex); + } + } + + [PermissionOperate(name: "DmsFile", operate: "Find")] + [HttpPost] + public dynamic FindFamilyDmsFolders() + { + try + { + + var result = dmsFileService.FindFamilyDmsFolders(); + return result; + } + catch (ValidatedException vex) + { + return vex; + } + catch (Exception ex) + { + return new ServiceErrorException(ex); + } + } + + [PermissionOperate(name: "DmsFile", operate: "Find")] + [HttpPost] + public dynamic FindFamilyDmsFoldersByFamilyName(string familyName) + { + try + { + + var result = dmsFileService.FindFamilyDmsFoldersByFamilyName(familyName); + return result; + } + catch (ValidatedException vex) + { + return vex; + } + catch (Exception ex) + { + return new ServiceErrorException(ex); + } + } + + [PermissionOperate(name: "DmsFile", operate: "Find")] + [HttpPost] + public dynamic FindDmsFolderMapByFolderName(string folderName) + { + try + { + + var result = dmsFileService.FindDmsFolderMapByFolderName(folderName); + return result; + } + catch (ValidatedException vex) + { + return vex; + } + catch (Exception ex) + { + return new ServiceErrorException(ex); + } + } + + [PermissionOperate(name: "DmsFile", operate: "Find")] + [HttpPost] + public dynamic FindFolderNameParentByFolderName(string folderName) + { + try + { + + var result = dmsFileService.FindFolderNameParentByFolderName(folderName); + return result; + } + catch (ValidatedException vex) + { + return vex; + } + catch (Exception ex) + { + return new ServiceErrorException(ex); + } + } + + [PermissionOperate(name: "DmsFile", operate: "Insert")] + [HttpPost] + public dynamic CreateFamilyGroupFolder(FamilyGroupFolderEntity[] familyGroupFolder){ + try + { + dmsFileService.CreateFamilyGroupFolder(familyGroupFolder); + + return string.Empty; + } + catch (ValidatedException vex) + { + return vex; + } + catch (Exception ex) + { + return new ServiceErrorException(ex); + } + } + + [PermissionOperate(name: "DmsFile", operate: "Delete")] + [HttpPost] + public dynamic DeleteFamilyGroupFolder(FamilyGroupFolderEntity[] familyGroupFolder){ + try + { + dmsFileService.DeleteFamilyGroupFolder(familyGroupFolder); + + return string.Empty; + } + catch (ValidatedException vex) + { + return vex; + } + catch (Exception ex) + { + return new ServiceErrorException(ex); + } + } + + +} +} \ No newline at end of file diff --git a/CloudBuilder/CloudBuilder.Web.Entry/Controllers/Master/FamilyGroupController.auto.cs b/CloudBuilder/CloudBuilder.Web.Entry/Controllers/Master/FamilyGroupController.auto.cs new file mode 100644 index 0000000..35bc44b --- /dev/null +++ b/CloudBuilder/CloudBuilder.Web.Entry/Controllers/Master/FamilyGroupController.auto.cs @@ -0,0 +1,333 @@ + +using CloudBuilder.Core.DatabaseAccessor; +using CloudBuilder.Core.Policy; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using System.Transactions; +using CloudBuilder.Core.Service; +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.Web.Entry.Controllers.Master +{ +[Authorize(AuthorizePolicy.PERMISSION)] +[ApiController] +[Route("[controller]/[action]")] +public class FamilyGroupController : ControllerBase +{ +private readonly IApplicationService service; +private readonly IFamilyGroupService familyGroupService; + +public FamilyGroupController(IApplicationService service, IFamilyGroupService familyGroupService) +{ +this.service = service; +this.familyGroupService= familyGroupService; +} + + [PermissionOperate(name: "FamilyGroup", operate: "Find")] + [HttpPost] + public dynamic FindByKey(string key) + { + try + { + + var result = familyGroupService.FindByKey(key); + return result; + } + catch (ValidatedException vex) + { + return vex; + } + catch (Exception ex) + { + return new ServiceErrorException(ex); + } + } + + [PermissionOperate(name: "FamilyGroup", operate: "Find")] + [HttpPost] + public dynamic FindBySearchCriteria(FamilyGroupSearchCriteria criteria) + { + try + { + + var result = familyGroupService.FindBySearchCriteria(criteria); + return result; + } + catch (ValidatedException vex) + { + return vex; + } + catch (Exception ex) + { + return new ServiceErrorException(ex); + } + } + + [PermissionOperate(name: "FamilyGroup", operate: "Find")] + [HttpPost] + public dynamic FindFamilyUserBySearchCriteria(FamilyGroupManagerUserSearchCriteria criteria) + { + try + { + + var result = familyGroupService.FindFamilyUserBySearchCriteria(criteria); + return result; + } + catch (ValidatedException vex) + { + return vex; + } + catch (Exception ex) + { + return new ServiceErrorException(ex); + } + } + + [PermissionOperate(name: "FamilyGroup", operate: "Find")] + [HttpPost] + public dynamic FamilyFolderFavoriteBySearchCriteria(FamilyGroupManagerUserSearchCriteria criteria) + { + try + { + + var result = familyGroupService.FamilyFolderFavoriteBySearchCriteria(criteria); + return result; + } + catch (ValidatedException vex) + { + return vex; + } + catch (Exception ex) + { + return new ServiceErrorException(ex); + } + } + + [PermissionOperate(name: "FamilyGroup", operate: "Print")] + [HttpPost] + public dynamic PrintBySearchCriteria(FamilyGroupSearchCriteria criteria) + { + try + { + + var result = familyGroupService.PrintBySearchCriteria(criteria); + return result; + } + catch (ValidatedException vex) + { + return vex; + } + catch (Exception ex) + { + return new ServiceErrorException(ex); + } + } + + [PermissionOperate(name: "FamilyGroup", operate: "Insert")] + [HttpPost] + [UnitOfWork] + public dynamic Insert(FamilyGroupData data) + { + try + { + + var result = familyGroupService.Insert(data); + return result; + } + catch (ValidatedException vex) + { + return vex; + } + catch (Exception ex) + { + return new ServiceErrorException(ex); + } + } + + [PermissionOperate(name: "FamilyGroup", operate: "Update")] + [HttpPost] + [UnitOfWork] + public dynamic Update(FamilyGroupData data) + { + try + { + + var result = familyGroupService.Update(data); + return result; + } + catch (ValidatedException vex) + { + return vex; + } + catch (Exception ex) + { + return new ServiceErrorException(ex); + } + } + + [PermissionOperate(name: "FamilyGroup", operate: "Delete")] + [HttpPost] + [UnitOfWork] + public dynamic Delete(string key){ + try + { + familyGroupService.Delete(key); + + return string.Empty; + } + catch (ValidatedException vex) + { + return vex; + } + catch (Exception ex) + { + return new ServiceErrorException(ex); + } + } + + [PermissionOperate(name: "FamilyGroup", operate: "Update")] + [HttpPost] + [UnitOfWork] + public dynamic InsertFamilyGroupManager(FamilyGroupManagerEntity manager){ + try + { + familyGroupService.InsertFamilyGroupManager(manager); + + return string.Empty; + } + catch (ValidatedException vex) + { + return vex; + } + catch (Exception ex) + { + return new ServiceErrorException(ex); + } + } + + [PermissionOperate(name: "FamilyGroup", operate: "Insert")] + [HttpPost] + [UnitOfWork] + public dynamic InsertFamilyGroupPermission(FamilyGroupPermissionEntity[] managers){ + try + { + familyGroupService.InsertFamilyGroupPermission(managers); + + return string.Empty; + } + catch (ValidatedException vex) + { + return vex; + } + catch (Exception ex) + { + return new ServiceErrorException(ex); + } + } + + [PermissionOperate(name: "FamilyGroup", operate: "Update")] + [HttpPost] + [UnitOfWork] + public dynamic UpdateFamilyGroupManager(FamilyGroupManagerEntity manager){ + try + { + familyGroupService.UpdateFamilyGroupManager(manager); + + return string.Empty; + } + catch (ValidatedException vex) + { + return vex; + } + catch (Exception ex) + { + return new ServiceErrorException(ex); + } + } + + [PermissionOperate(name: "FamilyGroup", operate: "Update")] + [HttpPost] + [UnitOfWork] + public dynamic DeleteFamilyGroupManager(FamilyGroupManagerEntity manager){ + try + { + familyGroupService.DeleteFamilyGroupManager(manager); + + return string.Empty; + } + catch (ValidatedException vex) + { + return vex; + } + catch (Exception ex) + { + return new ServiceErrorException(ex); + } + } + + [PermissionOperate(name: "FamilyGroup", operate: "Insert")] + [HttpPost] + public dynamic InsertFamilyFolderFavorite(string folderName){ + try + { + familyGroupService.InsertFamilyFolderFavorite(folderName); + + return string.Empty; + } + catch (ValidatedException vex) + { + return vex; + } + catch (Exception ex) + { + return new ServiceErrorException(ex); + } + } + + [PermissionOperate(name: "FamilyGroup", operate: "Update")] + [HttpPost] + public dynamic DeleteFamilyFolderFavorite(string folderName){ + try + { + familyGroupService.DeleteFamilyFolderFavorite(folderName); + + return string.Empty; + } + catch (ValidatedException vex) + { + return vex; + } + catch (Exception ex) + { + return new ServiceErrorException(ex); + } + } + + [PermissionOperate(name: "FamilyGroup", operate: "Update")] + [HttpPost] + public dynamic DeleteFamilyFolderFavorites(FamilyFolderFavoriteEntity[] familyFolderFavorites){ + try + { + familyGroupService.DeleteFamilyFolderFavorites(familyFolderFavorites); + + return string.Empty; + } + catch (ValidatedException vex) + { + return vex; + } + catch (Exception ex) + { + return new ServiceErrorException(ex); + } + } + + +} +} \ No newline at end of file diff --git a/CloudBuilder/CloudBuilder.Web.Entry/Controllers/Master/FamilyPersonController.auto.cs b/CloudBuilder/CloudBuilder.Web.Entry/Controllers/Master/FamilyPersonController.auto.cs index eb7a18a..aaf8d7d 100644 --- a/CloudBuilder/CloudBuilder.Web.Entry/Controllers/Master/FamilyPersonController.auto.cs +++ b/CloudBuilder/CloudBuilder.Web.Entry/Controllers/Master/FamilyPersonController.auto.cs @@ -7,9 +7,10 @@ using System.Transactions; using CloudBuilder.Core.Service; using CloudBuilder.Master.Service; using CloudBuilder.Core.DatabaseAccessor.Entity; + using Microsoft.AspNetCore.Http; using CloudBuilder.Master.Entity; - using CloudBuilder.Master.Data; using System; + using CloudBuilder.Master.Data; using CloudBuilder.Master.SearchCriteria; namespace CloudBuilder.Web.Entry.Controllers.Master diff --git a/CloudBuilder/CloudBuilder.Web.Entry/Controllers/Master/FamilyTreeController.auto.cs b/CloudBuilder/CloudBuilder.Web.Entry/Controllers/Master/FamilyTreeController.auto.cs index fad56ec..0accd03 100644 --- a/CloudBuilder/CloudBuilder.Web.Entry/Controllers/Master/FamilyTreeController.auto.cs +++ b/CloudBuilder/CloudBuilder.Web.Entry/Controllers/Master/FamilyTreeController.auto.cs @@ -7,9 +7,10 @@ using System.Transactions; using CloudBuilder.Core.Service; using CloudBuilder.Master.Service; using CloudBuilder.Core.DatabaseAccessor.Entity; + using Microsoft.AspNetCore.Http; using CloudBuilder.Master.Entity; - using CloudBuilder.Master.Data; using System; + using CloudBuilder.Master.Data; using CloudBuilder.Master.SearchCriteria; namespace CloudBuilder.Web.Entry.Controllers.Master diff --git a/CloudBuilder/CloudBuilder.Web.Entry/Controllers/Master/FileTypePolicyController.auto.cs b/CloudBuilder/CloudBuilder.Web.Entry/Controllers/Master/FileTypePolicyController.auto.cs new file mode 100644 index 0000000..678055e --- /dev/null +++ b/CloudBuilder/CloudBuilder.Web.Entry/Controllers/Master/FileTypePolicyController.auto.cs @@ -0,0 +1,54 @@ + +using CloudBuilder.Core.DatabaseAccessor; +using CloudBuilder.Core.Policy; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using System.Transactions; +using CloudBuilder.Core.Service; +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.Web.Entry.Controllers.Master +{ +[Authorize(AuthorizePolicy.PERMISSION)] +[ApiController] +[Route("[controller]/[action]")] +public class FileTypePolicyController : ControllerBase +{ +private readonly IApplicationService service; +private readonly IFileTypePolicyService fileTypePolicyService; + +public FileTypePolicyController(IApplicationService service, IFileTypePolicyService fileTypePolicyService) +{ +this.service = service; +this.fileTypePolicyService= fileTypePolicyService; +} + + [AllowAnonymous] + [HttpPost] + public dynamic FindSelectOption(bool blank) + { + try + { + + var result = fileTypePolicyService.FindSelectOption(blank); + return result; + } + catch (ValidatedException vex) + { + return vex; + } + catch (Exception ex) + { + return new ServiceErrorException(ex); + } + } + + +} +} \ No newline at end of file diff --git a/CloudBuilder/CloudBuilder.Web.Entry/Controllers/Master/PublishAudioController.auto.cs b/CloudBuilder/CloudBuilder.Web.Entry/Controllers/Master/PublishAudioController.auto.cs new file mode 100644 index 0000000..ef709fe --- /dev/null +++ b/CloudBuilder/CloudBuilder.Web.Entry/Controllers/Master/PublishAudioController.auto.cs @@ -0,0 +1,195 @@ + +using CloudBuilder.Core.DatabaseAccessor; +using CloudBuilder.Core.Policy; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using System.Transactions; +using CloudBuilder.Core.Service; +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.Web.Entry.Controllers.Master +{ +[Authorize(AuthorizePolicy.PERMISSION)] +[ApiController] +[Route("[controller]/[action]")] +public class PublishAudioController : ControllerBase +{ +private readonly IApplicationService service; +private readonly IPublishAudioService publishAudioService; + +public PublishAudioController(IApplicationService service, IPublishAudioService publishAudioService) +{ +this.service = service; +this.publishAudioService= publishAudioService; +} + + [PermissionOperate(name: "PublishAudio", operate: "Find")] + [HttpPost] + public dynamic FindByKey(string key) + { + try + { + + var result = publishAudioService.FindByKey(key); + return result; + } + catch (ValidatedException vex) + { + return vex; + } + catch (Exception ex) + { + return new ServiceErrorException(ex); + } + } + + [PermissionOperate(name: "PublishAudio", operate: "Find")] + [HttpPost] + public dynamic FindBySearchCriteria(PublishAudioSearchCriteria criteria) + { + try + { + + var result = publishAudioService.FindBySearchCriteria(criteria); + return result; + } + catch (ValidatedException vex) + { + return vex; + } + catch (Exception ex) + { + return new ServiceErrorException(ex); + } + } + + [PermissionOperate(name: "PublishAudio", operate: "Find")] + [HttpPost] + public dynamic FindPublishAudioDefault() + { + try + { + + var result = publishAudioService.FindPublishAudioDefault(); + return result; + } + catch (ValidatedException vex) + { + return vex; + } + catch (Exception ex) + { + return new ServiceErrorException(ex); + } + } + + [PermissionOperate(name: "PublishAudio", operate: "Print")] + [HttpPost] + public dynamic PrintBySearchCriteria(PublishAudioSearchCriteria criteria) + { + try + { + + var result = publishAudioService.PrintBySearchCriteria(criteria); + return result; + } + catch (ValidatedException vex) + { + return vex; + } + catch (Exception ex) + { + return new ServiceErrorException(ex); + } + } + + [PermissionOperate(name: "PublishAudio", operate: "Insert")] + [HttpPost] + [UnitOfWork] + public dynamic Insert(PublishAudioData data) + { + try + { + + var result = publishAudioService.Insert(data); + return result; + } + catch (ValidatedException vex) + { + return vex; + } + catch (Exception ex) + { + return new ServiceErrorException(ex); + } + } + + [PermissionOperate(name: "PublishAudio", operate: "Update")] + [HttpPost] + [UnitOfWork] + public dynamic Update(PublishAudioData data) + { + try + { + + var result = publishAudioService.Update(data); + return result; + } + catch (ValidatedException vex) + { + return vex; + } + catch (Exception ex) + { + return new ServiceErrorException(ex); + } + } + + [PermissionOperate(name: "PublishAudio", operate: "Delete")] + [HttpPost] + [UnitOfWork] + public dynamic Delete(string key){ + try + { + publishAudioService.Delete(key); + + return string.Empty; + } + catch (ValidatedException vex) + { + return vex; + } + catch (Exception ex) + { + return new ServiceErrorException(ex); + } + } + + [PermissionOperate(name: "PublishAudio", operate: "Insert")] + [HttpPost] + public dynamic InsertPublishAudioDetail(PublishData publishData){ + try + { + publishAudioService.InsertPublishAudioDetail(publishData); + + return string.Empty; + } + catch (ValidatedException vex) + { + return vex; + } + catch (Exception ex) + { + return new ServiceErrorException(ex); + } + } + + +} +} \ No newline at end of file diff --git a/CloudBuilder/CloudBuilder.Web.Entry/Controllers/Master/PublishPhotoController.auto.cs b/CloudBuilder/CloudBuilder.Web.Entry/Controllers/Master/PublishPhotoController.auto.cs new file mode 100644 index 0000000..f3f5220 --- /dev/null +++ b/CloudBuilder/CloudBuilder.Web.Entry/Controllers/Master/PublishPhotoController.auto.cs @@ -0,0 +1,234 @@ + +using CloudBuilder.Core.DatabaseAccessor; +using CloudBuilder.Core.Policy; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using System.Transactions; +using CloudBuilder.Core.Service; +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.Web.Entry.Controllers.Master +{ +[Authorize(AuthorizePolicy.PERMISSION)] +[ApiController] +[Route("[controller]/[action]")] +public class PublishPhotoController : ControllerBase +{ +private readonly IApplicationService service; +private readonly IPublishPhotoService publishPhotoService; + +public PublishPhotoController(IApplicationService service, IPublishPhotoService publishPhotoService) +{ +this.service = service; +this.publishPhotoService= publishPhotoService; +} + + [PermissionOperate(name: "PublishPhoto", operate: "Find")] + [HttpPost] + public dynamic FindByKey(string key) + { + try + { + + var result = publishPhotoService.FindByKey(key); + return result; + } + catch (ValidatedException vex) + { + return vex; + } + catch (Exception ex) + { + return new ServiceErrorException(ex); + } + } + + [PermissionOperate(name: "PublishPhoto", operate: "Find")] + [HttpPost] + public dynamic FindBySearchCriteria(PublishPhotoSearchCriteria criteria) + { + try + { + + var result = publishPhotoService.FindBySearchCriteria(criteria); + return result; + } + catch (ValidatedException vex) + { + return vex; + } + catch (Exception ex) + { + return new ServiceErrorException(ex); + } + } + + [PermissionOperate(name: "PublishPhoto", operate: "Print")] + [HttpPost] + public dynamic PrintBySearchCriteria(PublishPhotoSearchCriteria criteria) + { + try + { + + var result = publishPhotoService.PrintBySearchCriteria(criteria); + return result; + } + catch (ValidatedException vex) + { + return vex; + } + catch (Exception ex) + { + return new ServiceErrorException(ex); + } + } + + [PermissionOperate(name: "PublishPhoto", operate: "Insert")] + [HttpPost] + [UnitOfWork] + public dynamic Insert(PublishPhotoData data) + { + try + { + + var result = publishPhotoService.Insert(data); + return result; + } + catch (ValidatedException vex) + { + return vex; + } + catch (Exception ex) + { + return new ServiceErrorException(ex); + } + } + + [PermissionOperate(name: "PublishPhoto", operate: "Update")] + [HttpPost] + [UnitOfWork] + public dynamic Update(PublishPhotoData data) + { + try + { + + var result = publishPhotoService.Update(data); + return result; + } + catch (ValidatedException vex) + { + return vex; + } + catch (Exception ex) + { + return new ServiceErrorException(ex); + } + } + + [PermissionOperate(name: "PublishPhoto", operate: "Delete")] + [HttpPost] + [UnitOfWork] + public dynamic Delete(string key){ + try + { + publishPhotoService.Delete(key); + + return string.Empty; + } + catch (ValidatedException vex) + { + return vex; + } + catch (Exception ex) + { + return new ServiceErrorException(ex); + } + } + + [AllowAnonymous] + [HttpPost] + public dynamic FindPublishPhotoDetailByPublishName(string publishName) + { + try + { + + var result = publishPhotoService.FindPublishPhotoDetailByPublishName(publishName); + return result; + } + catch (ValidatedException vex) + { + return vex; + } + catch (Exception ex) + { + return new ServiceErrorException(ex); + } + } + + [AllowAnonymous] + [HttpPost] + public dynamic FindPublishPhotoDetail() + { + try + { + + var result = publishPhotoService.FindPublishPhotoDetail(); + return result; + } + catch (ValidatedException vex) + { + return vex; + } + catch (Exception ex) + { + return new ServiceErrorException(ex); + } + } + + [PermissionOperate(name: "PublishAudio", operate: "Insert")] + [HttpPost] + public dynamic InsertPublishPhotoDetail(PublishData publishData){ + try + { + publishPhotoService.InsertPublishPhotoDetail(publishData); + + return string.Empty; + } + catch (ValidatedException vex) + { + return vex; + } + catch (Exception ex) + { + return new ServiceErrorException(ex); + } + } + + [PermissionOperate(name: "PublishAudio", operate: "Insert")] + [HttpPost] + public dynamic InsertPublishPhotoDetailByFamilyGroup(PublishData publishData){ + try + { + publishPhotoService.InsertPublishPhotoDetailByFamilyGroup(publishData); + + return string.Empty; + } + catch (ValidatedException vex) + { + return vex; + } + catch (Exception ex) + { + return new ServiceErrorException(ex); + } + } + + +} +} \ No newline at end of file diff --git a/CloudBuilder/CloudBuilder.Web.Entry/Controllers/Master/PublishVideoController.auto.cs b/CloudBuilder/CloudBuilder.Web.Entry/Controllers/Master/PublishVideoController.auto.cs new file mode 100644 index 0000000..5ea65f6 --- /dev/null +++ b/CloudBuilder/CloudBuilder.Web.Entry/Controllers/Master/PublishVideoController.auto.cs @@ -0,0 +1,195 @@ + +using CloudBuilder.Core.DatabaseAccessor; +using CloudBuilder.Core.Policy; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using System.Transactions; +using CloudBuilder.Core.Service; +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.Web.Entry.Controllers.Master +{ +[Authorize(AuthorizePolicy.PERMISSION)] +[ApiController] +[Route("[controller]/[action]")] +public class PublishVideoController : ControllerBase +{ +private readonly IApplicationService service; +private readonly IPublishVideoService publishVideoService; + +public PublishVideoController(IApplicationService service, IPublishVideoService publishVideoService) +{ +this.service = service; +this.publishVideoService= publishVideoService; +} + + [PermissionOperate(name: "PublishVideo", operate: "Find")] + [HttpPost] + public dynamic FindByKey(string key) + { + try + { + + var result = publishVideoService.FindByKey(key); + return result; + } + catch (ValidatedException vex) + { + return vex; + } + catch (Exception ex) + { + return new ServiceErrorException(ex); + } + } + + [PermissionOperate(name: "PublishVideo", operate: "Find")] + [HttpPost] + public dynamic FindBySearchCriteria(PublishVideoSearchCriteria criteria) + { + try + { + + var result = publishVideoService.FindBySearchCriteria(criteria); + return result; + } + catch (ValidatedException vex) + { + return vex; + } + catch (Exception ex) + { + return new ServiceErrorException(ex); + } + } + + [PermissionOperate(name: "PublishVideo", operate: "Find")] + [HttpPost] + public dynamic FindPublishVideoDefault() + { + try + { + + var result = publishVideoService.FindPublishVideoDefault(); + return result; + } + catch (ValidatedException vex) + { + return vex; + } + catch (Exception ex) + { + return new ServiceErrorException(ex); + } + } + + [PermissionOperate(name: "PublishVideo", operate: "Print")] + [HttpPost] + public dynamic PrintBySearchCriteria(PublishVideoSearchCriteria criteria) + { + try + { + + var result = publishVideoService.PrintBySearchCriteria(criteria); + return result; + } + catch (ValidatedException vex) + { + return vex; + } + catch (Exception ex) + { + return new ServiceErrorException(ex); + } + } + + [PermissionOperate(name: "PublishVideo", operate: "Insert")] + [HttpPost] + [UnitOfWork] + public dynamic Insert(PublishVideoData data) + { + try + { + + var result = publishVideoService.Insert(data); + return result; + } + catch (ValidatedException vex) + { + return vex; + } + catch (Exception ex) + { + return new ServiceErrorException(ex); + } + } + + [PermissionOperate(name: "PublishVideo", operate: "Update")] + [HttpPost] + [UnitOfWork] + public dynamic Update(PublishVideoData data) + { + try + { + + var result = publishVideoService.Update(data); + return result; + } + catch (ValidatedException vex) + { + return vex; + } + catch (Exception ex) + { + return new ServiceErrorException(ex); + } + } + + [PermissionOperate(name: "PublishVideo", operate: "Delete")] + [HttpPost] + [UnitOfWork] + public dynamic Delete(string key){ + try + { + publishVideoService.Delete(key); + + return string.Empty; + } + catch (ValidatedException vex) + { + return vex; + } + catch (Exception ex) + { + return new ServiceErrorException(ex); + } + } + + [PermissionOperate(name: "PublishVideo", operate: "Insert")] + [HttpPost] + public dynamic InsertPublishVideoDetail(PublishData publishData){ + try + { + publishVideoService.InsertPublishVideoDetail(publishData); + + return string.Empty; + } + catch (ValidatedException vex) + { + return vex; + } + catch (Exception ex) + { + return new ServiceErrorException(ex); + } + } + + +} +} \ No newline at end of file diff --git a/CloudBuilder/CloudBuilder.Web.Entry/Dockerfile b/CloudBuilder/CloudBuilder.Web.Entry/Dockerfile index eaa0b8d..3d1b683 100644 --- a/CloudBuilder/CloudBuilder.Web.Entry/Dockerfile +++ b/CloudBuilder/CloudBuilder.Web.Entry/Dockerfile @@ -24,6 +24,7 @@ RUN dotnet publish "./CloudBuilder.Web.Entry.csproj" -c $BUILD_CONFIGURATION -o # 此階段用於生產環境,或以一般模式從 VS 執行時 (未使用偵錯設定時的預設值) FROM base AS final WORKDIR /app +RUN apt-get update && apt-get install -y --no-install-recommends ffmpeg && rm -rf /var/lib/apt/lists/* COPY --from=publish /app/publish . COPY ./dist ./dist ENTRYPOINT ["dotnet", "CloudBuilder.Web.Entry.dll"] diff --git a/CloudBuilder/CloudBuilder.Web.Entry/Program.cs b/CloudBuilder/CloudBuilder.Web.Entry/Program.cs index 5fe7537..b207db1 100644 --- a/CloudBuilder/CloudBuilder.Web.Entry/Program.cs +++ b/CloudBuilder/CloudBuilder.Web.Entry/Program.cs @@ -2,6 +2,7 @@ using CloudBuilder.Core.Extensions; using CloudBuilder.Core.Service; using CloudBuilder.Security.Data; +using CloudBuilder.Security.Policy; using CloudBuilder.Security.Service; using DocumentFormat.OpenXml.Office2016.Drawing.ChartDrawing; using Microsoft.AspNetCore.Http.Features; @@ -98,13 +99,13 @@ provider.Mappings[".flac"] = "audio/x-flac"; provider.Mappings[".m3u8"] = "application/vnd.apple.mpegurl"; provider.Mappings[".lrc"] = "application/octet-stream"; //虚拟文件,App.Configuration[VirtualPathPolicy.VirtualPath_RealPath]这个路径一定要存在,不然直接出错 -string physicalDir = app.Configuration["FileServiceSettings:PhysicalFileDirectory"]; +string physicalDir = app.Configuration[ServiceSettingsPolicy.PhysicalFileDirectory]; if (!string.IsNullOrEmpty(physicalDir)) { app.UseStaticFiles(new StaticFileOptions() { FileProvider = new PhysicalFileProvider(physicalDir), - RequestPath = app.Configuration["FileServiceSettings:RequestPath"], + RequestPath = app.Configuration[ServiceSettingsPolicy.RequestPath], ContentTypeProvider = provider }); } diff --git a/CloudBuilder/CloudBuilder.Web.Entry/Properties/PublishProfiles/FolderProfile3.pubxml.user b/CloudBuilder/CloudBuilder.Web.Entry/Properties/PublishProfiles/FolderProfile3.pubxml.user index 57b2f35..ffd60c3 100644 --- a/CloudBuilder/CloudBuilder.Web.Entry/Properties/PublishProfiles/FolderProfile3.pubxml.user +++ b/CloudBuilder/CloudBuilder.Web.Entry/Properties/PublishProfiles/FolderProfile3.pubxml.user @@ -3,7 +3,7 @@ <_PublishTargetUrl>C:\inetpub\wwwroot\dockwebapi2 - True|2026-09-02T03:08:23.8720038Z||;True|2026-09-02T10:58:16.8081797+08:00||;True|2026-08-26T13:34:12.3805892+08:00||;True|2026-08-25T08:31:30.7787234+08:00||;True|2026-08-20T13:10:46.4725468+08:00||;True|2026-08-20T13:10:28.3142576+08:00||;True|2026-08-19T16:10:27.3362887+08:00||;True|2026-08-19T16:01:12.6234971+08:00||;True|2026-08-19T15:42:46.6576265+08:00||;True|2026-08-19T13:39:59.9363522+08:00||;True|2026-08-19T13:36:53.0379313+08:00||;True|2026-08-19T13:31:36.0841398+08:00||;True|2026-08-19T11:44:37.5319626+08:00||;True|2026-08-19T09:36:45.6000047+08:00||;True|2026-08-19T09:34:36.8468631+08:00||;True|2026-08-19T08:35:41.2202300+08:00||;True|2026-08-18T16:20:59.0170916+08:00||; + True|2026-09-03T08:05:52.5270232Z||;True|2026-09-03T14:52:56.8559144+08:00||;True|2026-09-02T11:08:23.8720038+08:00||;True|2026-09-02T10:58:16.8081797+08:00||;True|2026-08-26T13:34:12.3805892+08:00||;True|2026-08-25T08:31:30.7787234+08:00||;True|2026-08-20T13:10:46.4725468+08:00||;True|2026-08-20T13:10:28.3142576+08:00||;True|2026-08-19T16:10:27.3362887+08:00||;True|2026-08-19T16:01:12.6234971+08:00||;True|2026-08-19T15:42:46.6576265+08:00||;True|2026-08-19T13:39:59.9363522+08:00||;True|2026-08-19T13:36:53.0379313+08:00||;True|2026-08-19T13:31:36.0841398+08:00||;True|2026-08-19T11:44:37.5319626+08:00||;True|2026-08-19T09:36:45.6000047+08:00||;True|2026-08-19T09:34:36.8468631+08:00||;True|2026-08-19T08:35:41.2202300+08:00||;True|2026-08-18T16:20:59.0170916+08:00||; \ No newline at end of file diff --git a/CloudBuilder/CloudBuilder.Web.Entry/appsettings.json b/CloudBuilder/CloudBuilder.Web.Entry/appsettings.json index f2d5042..18e7ad2 100644 --- a/CloudBuilder/CloudBuilder.Web.Entry/appsettings.json +++ b/CloudBuilder/CloudBuilder.Web.Entry/appsettings.json @@ -4,7 +4,7 @@ "MaxFileSizeMB": 20 }, "UrlOrigins": "http://192.168.195.68,http://localhost,http://localhost:8088,http://localhost:5235", //这个参数是反向指向的地址,也是跨域访问的地址,包含Vue内WebSitePolicy设置WebSite - "applicationUrl": "https://uat.youjiala.com", //這個地址是最外层用户访问的,不是反向指向的地址https://uat.youjiala.com + "ApplicationUrl": "http://localhost:5235", //這個地址是最外层用户访问的,不是反向指向的地址https://uat.youjiala.com "CloudBuilder": { "Culture": "zh-cn", "DbContexts": { @@ -55,11 +55,11 @@ } }, "FileServiceSettings": { - "PhysicalFileDirectory": "", //D:\\Net8\\FileServer + "PhysicalFileDirectory": "D:\\Net8\\FileServer", "RequestPath": "/FileServer", //如果是IIS反向代理来的,那么要在本地给这个文件添加IUSR,IIS_IUSRS权限 - "UploadDmsFileDirectory": "D:\\Net8\\FileServer\\Upload\\DmsFile", //上传文件目录,有可能是分片文件,仅当临时文件使用 - "BackupDmsFileDirectory": "D:\\Net8\\FileServer\\Backup\\DmsFile", //这个是备份目录,也是完整文件目录,原文件目录 - "ScaleDmsFileDirectory": "D:\\Net8\\FileServer\\Scale\\DmsFile", //这个是压缩图片或者视频目录 + "DmsFileUploadDirectory": "D:\\Net8\\FileServer\\Upload\\DmsFile", //上传文件目录,有可能是分片文件,仅当临时文件使用 + "DmsFileBackupDirectory": "D:\\Net8\\FileServer\\Backup\\DmsFile", //这个是备份目录,也是完整文件目录,原文件目录 + "DmsFileScaleDirectory": "D:\\Net8\\FileServer\\Scale\\DmsFile", //这个是压缩图片或者视频目录 "ExcelOutputDirectory": "D:\\Net8\\FileServer\\Output" }, "Ffmpeg": { diff --git a/CloudBuilder/Data/create_table.sql b/CloudBuilder/Data/create_table.sql new file mode 100644 index 0000000..64a7e21 --- /dev/null +++ b/CloudBuilder/Data/create_table.sql @@ -0,0 +1,555 @@ +/****** Object: Table [dbo].[dms_file] Script Date: 2026-09-03 8:24:17 ******/ +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[dms_file]') AND type in (N'U')) +DROP TABLE [dbo].[dms_file] +GO + +/****** Object: Table [dbo].[dms_file] Script Date: 2026-09-03 8:24:17 ******/ +SET ANSI_NULLS ON +GO + +SET QUOTED_IDENTIFIER ON +GO + +CREATE TABLE [dbo].[dms_file]( + [created_datetime] [datetime] NOT NULL, + [created_by] [varchar](50) NOT NULL, + [updated_datetime] [datetime] NOT NULL, + [updated_by] [varchar](50) NOT NULL, + [file_id] [bigint] IDENTITY(1,1) NOT NULL, + [file_name] [nvarchar](256) NOT NULL, + [file_path] [varchar](1000) NOT NULL, + [file_size] [int] NOT NULL, + [ower_id] [varchar](50) NOT NULL, + [revision_no] [int] NOT NULL, + [is_directory_indc] [varchar](1) NOT NULL, + [is_link_indc] [varchar](1) NOT NULL, + [linked_file_id] [int] NOT NULL, + [org_file_name] [nvarchar](256) NOT NULL, + [order_key] [varchar](50) NULL, + [file_tag] [varchar](512) NULL, + [allow_rename_indc] [varchar](1) NOT NULL, + [allow_delete_indc] [varchar](1) NOT NULL, + [file_type] [varchar](1) NULL, + [landscape_indc] [varchar](1) NULL, + [transcode_indc] [varchar](1) NULL, + CONSTRAINT [PK_dms_file] PRIMARY KEY CLUSTERED +( + [file_id] ASC +)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] +) ON [PRIMARY] +GO + + + +/****** Object: Table [dbo].[dms_file_delete_log] Script Date: 2026-09-03 8:26:55 ******/ +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[dms_file_delete_log]') AND type in (N'U')) +DROP TABLE [dbo].[dms_file_delete_log] +GO + +/****** Object: Table [dbo].[dms_file_delete_log] Script Date: 2026-09-03 8:26:55 ******/ +SET ANSI_NULLS ON +GO + +SET QUOTED_IDENTIFIER ON +GO + +CREATE TABLE [dbo].[dms_file_delete_log]( + [created_datetime] [datetime] NOT NULL, + [created_by] [varchar](50) NOT NULL, + [updated_datetime] [datetime] NOT NULL, + [updated_by] [varchar](50) NOT NULL, + [log_id] [bigint] IDENTITY(1,1) NOT NULL, + [file_id] [bigint] NOT NULL, + [file_name] [nvarchar](256) NOT NULL, + [file_path] [varchar](1000) NOT NULL, + [file_size] [int] NOT NULL, + [ower_id] [varchar](50) NOT NULL, + [revision_no] [int] NOT NULL, + [is_directory_indc] [varchar](1) NOT NULL, + [is_link_indc] [varchar](1) NOT NULL, + [linked_file_id] [int] NOT NULL, + [org_file_name] [nvarchar](256) NOT NULL, + [order_key] [varchar](50) NULL, + [file_tag] [varchar](512) NULL, + [allow_rename_indc] [varchar](1) NOT NULL, + [allow_delete_indc] [varchar](1) NOT NULL, + [file_type] [varchar](1) NULL, + [landscape_indc] [varchar](1) NULL, + [transcode_indc] [varchar](1) NULL, + CONSTRAINT [PK_dms_file_delete_log] PRIMARY KEY CLUSTERED +( + [log_id] ASC +)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] +) ON [PRIMARY] +GO + + + +/****** Object: Table [dbo].[dms_folder] Script Date: 2026-09-03 8:27:29 ******/ +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[dms_folder]') AND type in (N'U')) +DROP TABLE [dbo].[dms_folder] +GO + +/****** Object: Table [dbo].[dms_folder] Script Date: 2026-09-03 8:27:29 ******/ +SET ANSI_NULLS ON +GO + +SET QUOTED_IDENTIFIER ON +GO + +CREATE TABLE [dbo].[dms_folder]( + [created_datetime] [datetime] NOT NULL, + [created_by] [varchar](50) NOT NULL, + [updated_datetime] [datetime] NOT NULL, + [updated_by] [varchar](50) NOT NULL, + [folder_id] [bigint] IDENTITY(1,1) NOT NULL, + [folder_name] [varchar](50) NOT NULL, + [folder_local_name] [nvarchar](256) NULL, + CONSTRAINT [pk_x_dms_folder] PRIMARY KEY CLUSTERED +( + [folder_id] ASC +)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] +) ON [PRIMARY] +GO + +/****** Object: Table [dbo].[dms_folder_delete_log] Script Date: 2026-09-03 8:27:39 ******/ +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[dms_folder_delete_log]') AND type in (N'U')) +DROP TABLE [dbo].[dms_folder_delete_log] +GO + +/****** Object: Table [dbo].[dms_folder_delete_log] Script Date: 2026-09-03 8:27:39 ******/ +SET ANSI_NULLS ON +GO + +SET QUOTED_IDENTIFIER ON +GO + +CREATE TABLE [dbo].[dms_folder_delete_log]( + [created_datetime] [datetime] NOT NULL, + [created_by] [varchar](50) NOT NULL, + [updated_datetime] [datetime] NOT NULL, + [updated_by] [varchar](50) NOT NULL, + [log_id] [bigint] IDENTITY(1,1) NOT NULL, + [folder_id] [int] NOT NULL, + [folder_name] [varchar](50) NOT NULL, + [folder_local_name] [nvarchar](256) NULL, + CONSTRAINT [pk_x_dms_folder_delete_log] PRIMARY KEY CLUSTERED +( + [log_id] ASC +)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] +) ON [PRIMARY] +GO + + + + +/****** Object: Table [dbo].[dms_folder_map] Script Date: 2026-09-03 8:28:18 ******/ +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[dms_folder_map]') AND type in (N'U')) +DROP TABLE [dbo].[dms_folder_map] +GO + +/****** Object: Table [dbo].[dms_folder_map] Script Date: 2026-09-03 8:28:18 ******/ +SET ANSI_NULLS ON +GO + +SET QUOTED_IDENTIFIER ON +GO + +CREATE TABLE [dbo].[dms_folder_map]( + [created_datetime] [datetime] NOT NULL, + [created_by] [varchar](50) NOT NULL, + [updated_datetime] [datetime] NOT NULL, + [updated_by] [varchar](50) NOT NULL, + [folder_name_parent] [varchar](50) NOT NULL, + [folder_name_son] [varchar](50) NOT NULL, + [orderby] [int] NOT NULL, + CONSTRAINT [pk_x_dms_folder_map] PRIMARY KEY CLUSTERED +( + [folder_name_parent] ASC, + [folder_name_son] ASC +)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] +) ON [PRIMARY] +GO + +/****** Object: Table [dbo].[dms_folder_map_delete_log] Script Date: 2026-09-03 8:28:37 ******/ +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[dms_folder_map_delete_log]') AND type in (N'U')) +DROP TABLE [dbo].[dms_folder_map_delete_log] +GO + +/****** Object: Table [dbo].[dms_folder_map_delete_log] Script Date: 2026-09-03 8:28:37 ******/ +SET ANSI_NULLS ON +GO + +SET QUOTED_IDENTIFIER ON +GO + +CREATE TABLE [dbo].[dms_folder_map_delete_log]( + [created_datetime] [datetime] NOT NULL, + [created_by] [varchar](50) NOT NULL, + [updated_datetime] [datetime] NOT NULL, + [updated_by] [varchar](50) NOT NULL, + [folder_name_parent] [varchar](50) NOT NULL, + [folder_name_son] [varchar](50) NOT NULL, + [orderby] [int] NOT NULL, + CONSTRAINT [pk_x_dms_folder_map_delete_log] PRIMARY KEY CLUSTERED +( + [folder_name_parent] ASC, + [folder_name_son] ASC +)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] +) ON [PRIMARY] +GO + + + +/****** Object: Table [dbo].[family_folder_favorite] Script Date: 2026-09-03 8:28:54 ******/ +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[family_folder_favorite]') AND type in (N'U')) +DROP TABLE [dbo].[family_folder_favorite] +GO + +/****** Object: Table [dbo].[family_folder_favorite] Script Date: 2026-09-03 8:28:54 ******/ +SET ANSI_NULLS ON +GO + +SET QUOTED_IDENTIFIER ON +GO + +CREATE TABLE [dbo].[family_folder_favorite]( + [created_datetime] [datetime] NOT NULL, + [created_by] [varchar](50) NOT NULL, + [updated_datetime] [datetime] NOT NULL, + [updated_by] [varchar](50) NOT NULL, + [user_name] [varchar](50) NOT NULL, + [folder_name] [varchar](50) NOT NULL, + CONSTRAINT [pk_x_family_folder_favorite] PRIMARY KEY CLUSTERED +( + [user_name] ASC, + [folder_name] ASC +)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] +) ON [PRIMARY] +GO + + + +/****** Object: Table [dbo].[family_group] Script Date: 2026-09-03 8:29:10 ******/ +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[family_group]') AND type in (N'U')) +DROP TABLE [dbo].[family_group] +GO + +/****** Object: Table [dbo].[family_group] Script Date: 2026-09-03 8:29:10 ******/ +SET ANSI_NULLS ON +GO + +SET QUOTED_IDENTIFIER ON +GO + +CREATE TABLE [dbo].[family_group]( + [created_datetime] [datetime] NOT NULL, + [created_by] [varchar](50) NOT NULL, + [updated_datetime] [datetime] NOT NULL, + [updated_by] [varchar](50) NOT NULL, + [family_name] [varchar](50) NOT NULL, + [family_local_name] [nvarchar](50) NULL, + [notice] [nvarchar](512) NULL, + [expire_datetime] [datetime] NULL, + [open_indc] [varchar](1) NOT NULL, + [add_indc] [varchar](1) NOT NULL, + [valid_indc] [varchar](1) NOT NULL, + CONSTRAINT [pk_x_folder_group] PRIMARY KEY CLUSTERED +( + [family_name] ASC +)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] +) ON [PRIMARY] +GO + + + + +/****** Object: Table [dbo].[family_group_folder] Script Date: 2026-09-03 8:29:23 ******/ +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[family_group_folder]') AND type in (N'U')) +DROP TABLE [dbo].[family_group_folder] +GO + +/****** Object: Table [dbo].[family_group_folder] Script Date: 2026-09-03 8:29:23 ******/ +SET ANSI_NULLS ON +GO + +SET QUOTED_IDENTIFIER ON +GO + +CREATE TABLE [dbo].[family_group_folder]( + [created_datetime] [datetime] NOT NULL, + [created_by] [varchar](50) NOT NULL, + [updated_datetime] [datetime] NOT NULL, + [updated_by] [varchar](50) NOT NULL, + [folder_id] [bigint] IDENTITY(1,1) NOT NULL, + [folder_name] [varchar](50) NOT NULL, + [family_name] [varchar](50) NOT NULL, + [folder_local_name] [nvarchar](50) NULL, + [notice] [nvarchar](512) NULL, + [top_folder_name] [varchar](50) NOT NULL, + [file_path] [varchar](50) NULL, + CONSTRAINT [pk_x_family_group_folder] PRIMARY KEY CLUSTERED +( + [folder_id] ASC +)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] +) ON [PRIMARY] +GO + +/****** Object: Table [dbo].[family_group_manager] Script Date: 2026-09-03 8:29:32 ******/ +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[family_group_manager]') AND type in (N'U')) +DROP TABLE [dbo].[family_group_manager] +GO + +/****** Object: Table [dbo].[family_group_manager] Script Date: 2026-09-03 8:29:32 ******/ +SET ANSI_NULLS ON +GO + +SET QUOTED_IDENTIFIER ON +GO + +CREATE TABLE [dbo].[family_group_manager]( + [created_datetime] [datetime] NOT NULL, + [created_by] [varchar](50) NOT NULL, + [updated_datetime] [datetime] NOT NULL, + [updated_by] [varchar](50) NOT NULL, + [user_name] [varchar](50) NOT NULL, + [family_name] [varchar](50) NOT NULL, + [manager_indc] [varchar](1) NOT NULL, + [notice] [nvarchar](512) NOT NULL, + [valid_indc] [varchar](1) NOT NULL, + CONSTRAINT [pk_x_folder_group_user] PRIMARY KEY CLUSTERED +( + [user_name] ASC, + [family_name] ASC +)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] +) ON [PRIMARY] +GO + + + +/****** Object: Table [dbo].[family_group_permission] Script Date: 2026-09-03 8:29:59 ******/ +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[family_group_permission]') AND type in (N'U')) +DROP TABLE [dbo].[family_group_permission] +GO + +/****** Object: Table [dbo].[family_group_permission] Script Date: 2026-09-03 8:29:59 ******/ +SET ANSI_NULLS ON +GO + +SET QUOTED_IDENTIFIER ON +GO + +CREATE TABLE [dbo].[family_group_permission]( + [created_datetime] [datetime] NOT NULL, + [created_by] [varchar](50) NOT NULL, + [updated_datetime] [datetime] NOT NULL, + [updated_by] [varchar](50) NOT NULL, + [family_name] [varchar](50) NOT NULL, + [folder_name] [varchar](50) NOT NULL, + [user_name] [varchar](50) NOT NULL, + [create_indc] [varchar](1) NOT NULL, + [delete_indc] [varchar](1) NOT NULL, + CONSTRAINT [pk_x_family_group_permission] PRIMARY KEY CLUSTERED +( + [family_name] ASC, + [folder_name] ASC, + [user_name] ASC +)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] +) ON [PRIMARY] +GO + + +/****** Object: Table [dbo].[dms_file_delete_log] Script Date: 2026-09-03 8:26:55 ******/ +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[dms_file_delete_log]') AND type in (N'U')) +DROP TABLE [dbo].[dms_file_delete_log] +GO + +/****** Object: Table [dbo].[dms_file_delete_log] Script Date: 2026-09-03 8:26:55 ******/ +SET ANSI_NULLS ON +GO + +SET QUOTED_IDENTIFIER ON +GO + +CREATE TABLE [dbo].[dms_file_delete_log]( + [created_datetime] [datetime] NOT NULL, + [created_by] [varchar](50) NOT NULL, + [updated_datetime] [datetime] NOT NULL, + [updated_by] [varchar](50) NOT NULL, + [log_id] [int] IDENTITY(1,1) NOT NULL, + [file_id] [bigint] NOT NULL, + [file_name] [nvarchar](256) NOT NULL, + [file_path] [varchar](1000) NOT NULL, + [file_size] [int] NOT NULL, + [ower_id] [varchar](50) NOT NULL, + [revision_no] [int] NOT NULL, + [is_directory_indc] [varchar](1) NOT NULL, + [is_link_indc] [varchar](1) NOT NULL, + [linked_file_id] [int] NOT NULL, + [org_file_name] [nvarchar](256) NOT NULL, + [order_key] [varchar](50) NULL, + [file_tag] [varchar](512) NULL, + [allow_rename_indc] [varchar](1) NOT NULL, + [allow_delete_indc] [varchar](1) NOT NULL, + [file_type] [varchar](1) NULL, + [landscape_indc] [varchar](1) NULL, + [transcode_indc] [varchar](1) NULL, + CONSTRAINT [PK_dms_file_delete_log] PRIMARY KEY CLUSTERED +( + [log_id] ASC +)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] +) ON [PRIMARY] +GO + + + +/****** Object: Table [dbo].[upload_dms_file] Script Date: 2026-09-03 8:30:59 ******/ +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[upload_dms_file]') AND type in (N'U')) +DROP TABLE [dbo].[upload_dms_file] +GO + +SET ANSI_NULLS ON +GO + +SET QUOTED_IDENTIFIER ON +GO + +CREATE TABLE [dbo].[dms_file_upload]( + [created_datetime] [datetime] NOT NULL, + [created_by] [varchar](50) NOT NULL, + [updated_datetime] [datetime] NOT NULL, + [updated_by] [varchar](50) NOT NULL, + [file_id] [bigint] NOT NULL, + [upload_name] [varchar](50) NOT NULL, + [file_category] [varchar](8) NOT NULL, + [org_file_name] [nvarchar](256) NOT NULL, + CONSTRAINT [PK_dms_file_upload] PRIMARY KEY CLUSTERED +( + [file_id] ASC +)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] +) ON [PRIMARY] +GO + + + +/****** Object: Table [dbo].[upload_dms_file_delete_log] Script Date: 2026-09-03 8:31:26 ******/ +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[upload_dms_file_delete_log]') AND type in (N'U')) +DROP TABLE [dbo].[dms_file_upload_delete_log] +GO + +SET ANSI_NULLS ON +GO + +SET QUOTED_IDENTIFIER ON +GO + +CREATE TABLE [dbo].[dms_file_upload_delete_log]( + [created_datetime] [datetime] NOT NULL, + [created_by] [varchar](50) NOT NULL, + [updated_datetime] [datetime] NOT NULL, + [updated_by] [varchar](50) NOT NULL, + [file_id] [bigint] NOT NULL, + [upload_name] [varchar](50) NOT NULL, + [file_category] [varchar](8) NOT NULL, + [org_file_name] [nvarchar](256) NOT NULL, + CONSTRAINT [PK_dms_file_upload_delete_log] PRIMARY KEY CLUSTERED +( + [file_id] ASC +)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] +) ON [PRIMARY] +GO + + +GO + + +SET ANSI_NULLS ON +GO + +SET QUOTED_IDENTIFIER ON +GO + + + + + + + +CREATE VIEW [dbo].[dms_file_upload_view] +AS +select +mdf.created_datetime, +mdf.created_by, +mdf.file_id, +mdf.upload_name, +mdf.file_category, +mdf.org_file_name, +dms.file_name, +dms.file_path, +dd.folder_local_name, +dms.file_size, +dms.ower_id, +dms.revision_no, +dms.is_directory_indc, +dms.is_link_indc, +dms.linked_file_id, +dms.order_key, +dms.file_tag, +dms.allow_rename_indc, +dms.allow_delete_indc, +dms.file_type, +dms.landscape_indc, +dms.transcode_indc, +'' as url from dms_file_upload mdf with(nolock) +inner join dms_file dms with(nolock) on dms.file_id=mdf.file_id +left join dms_folder dd with(nolock) on dms.file_path=dd.folder_name +GO + + + +GO + +SET ANSI_NULLS ON +GO + +SET QUOTED_IDENTIFIER ON +GO + + + + + + + + +CREATE VIEW [dbo].[dms_file_upload_delete_log_view] +AS +select +mdf.created_datetime, +mdf.created_by, +mdf.file_id, +mdf.upload_name, +mdf.file_category, +mdf.org_file_name, +dms.file_name, +dms.file_path, +dd.folder_local_name, +dms.file_size, +dms.ower_id, +dms.revision_no, +dms.is_directory_indc, +dms.is_link_indc, +dms.linked_file_id, +dms.order_key, +dms.file_tag, +dms.allow_rename_indc, +dms.allow_delete_indc, +dms.file_type, +dms.landscape_indc, +dms.transcode_indc, +'' as url from dms_file_upload_delete_log mdf with(nolock) +inner join dms_file_delete_log dms with(nolock) on dms.file_id=mdf.file_id +left join dms_folder_delete_log dd with(nolock) on dms.file_path=dd.folder_name +GO + + diff --git a/CloudBuilder/Data/drop_table.sql b/CloudBuilder/Data/drop_table.sql new file mode 100644 index 0000000..19dcd88 --- /dev/null +++ b/CloudBuilder/Data/drop_table.sql @@ -0,0 +1,25 @@ +DROP TABLE [book_dms_file] +DROP TABLE dms_file +DROP TABLE dms_folder +DROP TABLE dms_folder_map +DROP view book_dms_file_view + +DROP TABLE [book_dms_file] +DROP TABLE [book_dms_file] +DROP TABLE [book_dms_file] +DROP TABLE [book_dms_file] +DROP TABLE [book_dms_file] +DROP TABLE [book_dms_file] +DROP TABLE [book_dms_file] +DROP TABLE [book_dms_file] +DROP TABLE [book_dms_file] +DROP TABLE [book_dms_file] +DROP TABLE [book_dms_file] +DROP TABLE [book_dms_file] +DROP TABLE [book_dms_file] +DROP TABLE [book_dms_file] +DROP TABLE [book_dms_file] +DROP TABLE [book_dms_file] +DROP TABLE [book_dms_file] +DROP TABLE [book_dms_file] +DROP TABLE [book_dms_file] \ No newline at end of file diff --git a/WebVue/src/hooks/useFileTypePolicy.ts b/WebVue/src/hooks/useFileTypePolicy.ts new file mode 100644 index 0000000..357a818 --- /dev/null +++ b/WebVue/src/hooks/useFileTypePolicy.ts @@ -0,0 +1,34 @@ +import { SelectOption } from "@/data/auto/selectOption"; +import fileTypePolicyService from "@/service/master/fileTypePolicyService"; +import { storage } from "@/store/storage"; + +export const useFileTypePolicy = () => { + const fileTypePolicy = "x-fileTypePolicy"; + + const getSelectOption = async (blank: boolean): Promise => { + let selectOptions: SelectOption[] = []; + let str = storage.get(fileTypePolicy); + if (str === null) { + selectOptions = await fileTypePolicyService.FindSelectOption(blank); + storage.set(fileTypePolicy, JSON.stringify(selectOptions)); + return selectOptions; + } + + selectOptions = JSON.parse(str) as Array; + return selectOptions; + }; + + const GetComposeMessage = (value: string): string => { + let selectOptions: SelectOption[] = []; + let str = storage.get(fileTypePolicy); + if (str === null) { + return ''; + } + selectOptions = JSON.parse(str) as Array; + return selectOptions.filter((x:SelectOption) => x.BindValue === value)[0].DisplayName; + }; + return { + getSelectOption, + GetComposeMessage, + }; +}; diff --git a/WebVue/src/main.ts b/WebVue/src/main.ts index ffba198..0ff4302 100644 --- a/WebVue/src/main.ts +++ b/WebVue/src/main.ts @@ -35,7 +35,7 @@ async function setupApp() { setupStore(app); // 挂载路由 await setupRouter(app); - // 初始化 i18n(内部会异步拉取数据库翻译补充,不阻塞挂载) + // 初始化 i18n await setupI18n(app); app.mount("#app"); diff --git a/WebVue/src/service/master/dmsFileService.ts b/WebVue/src/service/master/dmsFileService.ts new file mode 100644 index 0000000..a318c5e --- /dev/null +++ b/WebVue/src/service/master/dmsFileService.ts @@ -0,0 +1,326 @@ + +import { request,download } from "@/utils/request"; + import type { DmsFileEntity } from "@/data/auto/dmsFileEntity"; + import type { DmsFileSearchCriteria } from "@/data/auto/dmsFileSearchCriteria"; + import type { DmsFileResultData } from "@/data/auto/dmsFileResultData"; + import type { DmsFileDeleteLogEntity } from "@/data/auto/dmsFileDeleteLogEntity"; + import type { FamilyDmsFileViewEntity } from "@/data/auto/familyDmsFileViewEntity"; + import type { SelectOption } from "@/data/auto/selectOption"; + import type { DmsFolderData } from "@/data/auto/dmsFolderData"; + import type { FamilyGroupFolderEntity } from "@/data/auto/familyGroupFolderEntity"; + +class DmsFileService{ + + async FindByKey(data: number) { + return request( + { + url: "/DmsFile/FindByKey?key="+data, + method: "post", + data, + } + ) + }; + + async FindBySearchCriteria(data: DmsFileSearchCriteria) { + return request( + { + url: "/DmsFile/FindBySearchCriteria", + method: "post", + data, + } + ) + }; + + async FindDatasBySearchCriteria(data: DmsFileSearchCriteria) { + return request( + { + url: "/DmsFile/FindDatasBySearchCriteria", + method: "post", + data, + } + ) + }; + + async FindDeleteLogBySearchCriteria(data: DmsFileSearchCriteria) { + return request( + { + url: "/DmsFile/FindDeleteLogBySearchCriteria", + method: "post", + data, + } + ) + }; + + async FindFamilyBySearchCriteria(data: DmsFileSearchCriteria) { + return request( + { + url: "/DmsFile/FindFamilyBySearchCriteria", + method: "post", + data, + } + ) + }; + + async FindDmsFileDeleteLogByKey(data: number) { + return request( + { + url: "/DmsFile/FindDmsFileDeleteLogByKey?key="+data, + method: "post", + data, + } + ) + }; + + async PrintBySearchCriteria(data: DmsFileSearchCriteria) { + return download( + { + url: "/DmsFile/PrintBySearchCriteria", + method: "post", + data, + filename:'DmsFile' + } + ) + }; + + async Insert(data: DmsFileEntity) { + return request( + { + url: "/DmsFile/Insert", + method: "post", + data, + } + ) + }; + + async Update(data: DmsFileEntity) { + return request( + { + url: "/DmsFile/Update", + method: "post", + data, + } + ) + }; + + async Delete(data: number) { + return request( + { + url: "/DmsFile/Delete?key="+data, + method: "post", + data, + } + ) + }; + + async DeleteLog(data: number) { + return request( + { + url: "/DmsFile/DeleteLog?key="+data, + method: "post", + data, + } + ) + }; + + async CreateDmsFolder(data: DmsFileEntity) { + return request( + { + url: "/DmsFile/CreateDmsFolder", + method: "post", + data, + } + ) + }; + + async CreateFamilyDmsFolder(data: FamilyDmsFileViewEntity) { + return request( + { + url: "/DmsFile/CreateFamilyDmsFolder", + method: "post", + data, + } + ) + }; + + async UpdateDmsFolder(data: DmsFileEntity) { + return request( + { + url: "/DmsFile/UpdateDmsFolder", + method: "post", + data, + } + ) + }; + + async FindDmsFolders() { + return request( + { + url: "/DmsFile/FindDmsFolders", + method: "post", + } + ) + }; + + async FindDmsFolderDeleteLogs() { + return request( + { + url: "/DmsFile/FindDmsFolderDeleteLogs", + method: "post", + } + ) + }; + + async FindDmsFolderData() { + return request( + { + url: "/DmsFile/FindDmsFolderData", + method: "post", + } + ) + }; + + async MoveDmsFolder(data: DmsFileEntity) { + return request( + { + url: "/DmsFile/MoveDmsFolder", + method: "post", + data, + } + ) + }; + + async UploadFile() { + return request( + { + url: "/DmsFile/UploadFile", + method: "post", + } + ) + }; + + async FindM3u8Path(data: number) { + return request( + { + url: "/DmsFile/FindM3u8Path?fileId="+data, + method: "post", + data, + } + ) + }; + + async FindSourceVideoPath(data: number) { + return request( + { + url: "/DmsFile/FindSourceVideoPath?fileId="+data, + method: "post", + data, + } + ) + }; + + async FindDeleteLogM3u8Path(data: number) { + return request( + { + url: "/DmsFile/FindDeleteLogM3u8Path?fileId="+data, + method: "post", + data, + } + ) + }; + + async DownloadFile(data: number) { + return request( + { + url: "/DmsFile/DownloadFile?fileId="+data, + method: "post", + data, + responseType: "arraybuffer", + } + ) + }; + + async DownloadFilePreview(data: DmsFileEntity) { + return request( + { + url: "/DmsFile/DownloadFilePreview", + method: "post", + data, + responseType: "arraybuffer", + } + ) + }; + + async DownloadFileCombine(data: string) { + return request( + { + url: "/DmsFile/DownloadFileCombine?fileName="+data, + method: "post", + data, + responseType: "arraybuffer", + } + ) + }; + + async FindFamilyDmsFolders() { + return request( + { + url: "/DmsFile/FindFamilyDmsFolders", + method: "post", + } + ) + }; + + async FindFamilyDmsFoldersByFamilyName(data: string) { + return request( + { + url: "/DmsFile/FindFamilyDmsFoldersByFamilyName?familyName="+data, + method: "post", + data, + } + ) + }; + + async FindDmsFolderMapByFolderName(data: string) { + return request( + { + url: "/DmsFile/FindDmsFolderMapByFolderName?folderName="+data, + method: "post", + data, + } + ) + }; + + async FindFolderNameParentByFolderName(data: string) { + return request( + { + url: "/DmsFile/FindFolderNameParentByFolderName?folderName="+data, + method: "post", + data, + } + ) + }; + + async CreateFamilyGroupFolder(data: FamilyGroupFolderEntity[]) { + return request( + { + url: "/DmsFile/CreateFamilyGroupFolder", + method: "post", + data, + } + ) + }; + + async DeleteFamilyGroupFolder(data: FamilyGroupFolderEntity[]) { + return request( + { + url: "/DmsFile/DeleteFamilyGroupFolder", + method: "post", + data, + } + ) + }; + +} + +const dmsFileService= new DmsFileService(); +export default dmsFileService; \ No newline at end of file diff --git a/WebVue/src/service/master/familyGroupService.ts b/WebVue/src/service/master/familyGroupService.ts new file mode 100644 index 0000000..2360529 --- /dev/null +++ b/WebVue/src/service/master/familyGroupService.ts @@ -0,0 +1,167 @@ + +import { request,download } from "@/utils/request"; + import type { FamilyGroupData } from "@/data/auto/familyGroupData"; + import type { FamilyGroupSearchCriteria } from "@/data/auto/familyGroupSearchCriteria"; + import type { FamilyGroupResultData } from "@/data/auto/familyGroupResultData"; + import type { FamilyGroupManagerUserSearchCriteria } from "@/data/auto/familyGroupManagerUserSearchCriteria"; + import type { FamilyGroupManagerEntity } from "@/data/auto/familyGroupManagerEntity"; + import type { FamilyGroupPermissionEntity } from "@/data/auto/familyGroupPermissionEntity"; + import type { FamilyFolderFavoriteEntity } from "@/data/auto/familyFolderFavoriteEntity"; + +class FamilyGroupService{ + + async FindByKey(data: string) { + return request( + { + url: "/FamilyGroup/FindByKey?key="+data, + method: "post", + data, + } + ) + }; + + async FindBySearchCriteria(data: FamilyGroupSearchCriteria) { + return request( + { + url: "/FamilyGroup/FindBySearchCriteria", + method: "post", + data, + } + ) + }; + + async FindFamilyUserBySearchCriteria(data: FamilyGroupManagerUserSearchCriteria) { + return request( + { + url: "/FamilyGroup/FindFamilyUserBySearchCriteria", + method: "post", + data, + } + ) + }; + + async FamilyFolderFavoriteBySearchCriteria(data: FamilyGroupManagerUserSearchCriteria) { + return request( + { + url: "/FamilyGroup/FamilyFolderFavoriteBySearchCriteria", + method: "post", + data, + } + ) + }; + + async PrintBySearchCriteria(data: FamilyGroupSearchCriteria) { + return download( + { + url: "/FamilyGroup/PrintBySearchCriteria", + method: "post", + data, + filename:'FamilyGroup' + } + ) + }; + + async Insert(data: FamilyGroupData) { + return request( + { + url: "/FamilyGroup/Insert", + method: "post", + data, + } + ) + }; + + async Update(data: FamilyGroupData) { + return request( + { + url: "/FamilyGroup/Update", + method: "post", + data, + } + ) + }; + + async Delete(data: string) { + return request( + { + url: "/FamilyGroup/Delete?key="+data, + method: "post", + data, + } + ) + }; + + async InsertFamilyGroupManager(data: FamilyGroupManagerEntity) { + return request( + { + url: "/FamilyGroup/InsertFamilyGroupManager", + method: "post", + data, + } + ) + }; + + async InsertFamilyGroupPermission(data: FamilyGroupPermissionEntity[]) { + return request( + { + url: "/FamilyGroup/InsertFamilyGroupPermission", + method: "post", + data, + } + ) + }; + + async UpdateFamilyGroupManager(data: FamilyGroupManagerEntity) { + return request( + { + url: "/FamilyGroup/UpdateFamilyGroupManager", + method: "post", + data, + } + ) + }; + + async DeleteFamilyGroupManager(data: FamilyGroupManagerEntity) { + return request( + { + url: "/FamilyGroup/DeleteFamilyGroupManager", + method: "post", + data, + } + ) + }; + + async InsertFamilyFolderFavorite(data: string) { + return request( + { + url: "/FamilyGroup/InsertFamilyFolderFavorite?folderName="+data, + method: "post", + data, + } + ) + }; + + async DeleteFamilyFolderFavorite(data: string) { + return request( + { + url: "/FamilyGroup/DeleteFamilyFolderFavorite?folderName="+data, + method: "post", + data, + } + ) + }; + + async DeleteFamilyFolderFavorites(data: FamilyFolderFavoriteEntity[]) { + return request( + { + url: "/FamilyGroup/DeleteFamilyFolderFavorites", + method: "post", + data, + } + ) + }; + +} + +const familyGroupService= new FamilyGroupService(); +export default familyGroupService; \ No newline at end of file diff --git a/WebVue/src/service/master/fileTypePolicyService.ts b/WebVue/src/service/master/fileTypePolicyService.ts new file mode 100644 index 0000000..3779476 --- /dev/null +++ b/WebVue/src/service/master/fileTypePolicyService.ts @@ -0,0 +1,20 @@ + +import { request } from "@/utils/request"; + import type { SelectOption } from "@/data/auto/selectOption"; + +class FileTypePolicyService{ + + async FindSelectOption(data: any) { + return request( + { + url: "/FileTypePolicy/FindSelectOption?blank="+data, + method: "post", + data, + } + ) + }; + +} + +const fileTypePolicyService= new FileTypePolicyService(); +export default fileTypePolicyService; \ No newline at end of file diff --git a/WebVue/src/service/master/publishAudioService.ts b/WebVue/src/service/master/publishAudioService.ts new file mode 100644 index 0000000..1140e7e --- /dev/null +++ b/WebVue/src/service/master/publishAudioService.ts @@ -0,0 +1,93 @@ + +import { request,download } from "@/utils/request"; + import type { PublishAudioData } from "@/data/auto/publishAudioData"; + import type { PublishAudioSearchCriteria } from "@/data/auto/publishAudioSearchCriteria"; + import type { PublishAudioResultData } from "@/data/auto/publishAudioResultData"; + import type { PublishData } from "@/data/auto/publishData"; + +class PublishAudioService{ + + async FindByKey(data: string) { + return request( + { + url: "/PublishAudio/FindByKey?key="+data, + method: "post", + data, + } + ) + }; + + async FindBySearchCriteria(data: PublishAudioSearchCriteria) { + return request( + { + url: "/PublishAudio/FindBySearchCriteria", + method: "post", + data, + } + ) + }; + + async FindPublishAudioDefault() { + return request( + { + url: "/PublishAudio/FindPublishAudioDefault", + method: "post", + } + ) + }; + + async PrintBySearchCriteria(data: PublishAudioSearchCriteria) { + return download( + { + url: "/PublishAudio/PrintBySearchCriteria", + method: "post", + data, + filename:'PublishAudio' + } + ) + }; + + async Insert(data: PublishAudioData) { + return request( + { + url: "/PublishAudio/Insert", + method: "post", + data, + } + ) + }; + + async Update(data: PublishAudioData) { + return request( + { + url: "/PublishAudio/Update", + method: "post", + data, + } + ) + }; + + async Delete(data: string) { + return request( + { + url: "/PublishAudio/Delete?key="+data, + method: "post", + data, + } + ) + }; + + async InsertPublishAudioDetail(data: PublishData) { + return request( + { + url: "/PublishAudio/InsertPublishAudioDetail", + method: "post", + data, + } + ) + }; + +} + +const publishAudioService= new PublishAudioService(); +export default publishAudioService; \ No newline at end of file diff --git a/WebVue/src/service/master/publishPhotoService.ts b/WebVue/src/service/master/publishPhotoService.ts new file mode 100644 index 0000000..5a4a13f --- /dev/null +++ b/WebVue/src/service/master/publishPhotoService.ts @@ -0,0 +1,114 @@ + +import { request,download } from "@/utils/request"; + import type { PublishPhotoData } from "@/data/auto/publishPhotoData"; + import type { PublishPhotoSearchCriteria } from "@/data/auto/publishPhotoSearchCriteria"; + import type { PublishPhotoResultData } from "@/data/auto/publishPhotoResultData"; + import type { PublishPhotoDetailEntity } from "@/data/auto/publishPhotoDetailEntity"; + import type { PublishData } from "@/data/auto/publishData"; + +class PublishPhotoService{ + + async FindByKey(data: string) { + return request( + { + url: "/PublishPhoto/FindByKey?key="+data, + method: "post", + data, + } + ) + }; + + async FindBySearchCriteria(data: PublishPhotoSearchCriteria) { + return request( + { + url: "/PublishPhoto/FindBySearchCriteria", + method: "post", + data, + } + ) + }; + + async PrintBySearchCriteria(data: PublishPhotoSearchCriteria) { + return download( + { + url: "/PublishPhoto/PrintBySearchCriteria", + method: "post", + data, + filename:'PublishPhoto' + } + ) + }; + + async Insert(data: PublishPhotoData) { + return request( + { + url: "/PublishPhoto/Insert", + method: "post", + data, + } + ) + }; + + async Update(data: PublishPhotoData) { + return request( + { + url: "/PublishPhoto/Update", + method: "post", + data, + } + ) + }; + + async Delete(data: string) { + return request( + { + url: "/PublishPhoto/Delete?key="+data, + method: "post", + data, + } + ) + }; + + async FindPublishPhotoDetailByPublishName(data: string) { + return request( + { + url: "/PublishPhoto/FindPublishPhotoDetailByPublishName?publishName="+data, + method: "post", + data, + } + ) + }; + + async FindPublishPhotoDetail() { + return request( + { + url: "/PublishPhoto/FindPublishPhotoDetail", + method: "post", + } + ) + }; + + async InsertPublishPhotoDetail(data: PublishData) { + return request( + { + url: "/PublishPhoto/InsertPublishPhotoDetail", + method: "post", + data, + } + ) + }; + + async InsertPublishPhotoDetailByFamilyGroup(data: PublishData) { + return request( + { + url: "/PublishPhoto/InsertPublishPhotoDetailByFamilyGroup", + method: "post", + data, + } + ) + }; + +} + +const publishPhotoService= new PublishPhotoService(); +export default publishPhotoService; \ No newline at end of file diff --git a/WebVue/src/service/master/publishVideoService.ts b/WebVue/src/service/master/publishVideoService.ts new file mode 100644 index 0000000..5f7f0af --- /dev/null +++ b/WebVue/src/service/master/publishVideoService.ts @@ -0,0 +1,93 @@ + +import { request,download } from "@/utils/request"; + import type { PublishVideoData } from "@/data/auto/publishVideoData"; + import type { PublishVideoSearchCriteria } from "@/data/auto/publishVideoSearchCriteria"; + import type { PublishVideoResultData } from "@/data/auto/publishVideoResultData"; + import type { PublishData } from "@/data/auto/publishData"; + +class PublishVideoService{ + + async FindByKey(data: string) { + return request( + { + url: "/PublishVideo/FindByKey?key="+data, + method: "post", + data, + } + ) + }; + + async FindBySearchCriteria(data: PublishVideoSearchCriteria) { + return request( + { + url: "/PublishVideo/FindBySearchCriteria", + method: "post", + data, + } + ) + }; + + async FindPublishVideoDefault() { + return request( + { + url: "/PublishVideo/FindPublishVideoDefault", + method: "post", + } + ) + }; + + async PrintBySearchCriteria(data: PublishVideoSearchCriteria) { + return download( + { + url: "/PublishVideo/PrintBySearchCriteria", + method: "post", + data, + filename:'PublishVideo' + } + ) + }; + + async Insert(data: PublishVideoData) { + return request( + { + url: "/PublishVideo/Insert", + method: "post", + data, + } + ) + }; + + async Update(data: PublishVideoData) { + return request( + { + url: "/PublishVideo/Update", + method: "post", + data, + } + ) + }; + + async Delete(data: string) { + return request( + { + url: "/PublishVideo/Delete?key="+data, + method: "post", + data, + } + ) + }; + + async InsertPublishVideoDetail(data: PublishData) { + return request( + { + url: "/PublishVideo/InsertPublishVideoDetail", + method: "post", + data, + } + ) + }; + +} + +const publishVideoService= new PublishVideoService(); +export default publishVideoService; \ No newline at end of file diff --git a/WebVue/src/views/master/DmsFileEnquiry.vue b/WebVue/src/views/master/DmsFileEnquiry.vue new file mode 100644 index 0000000..a9ed7c8 --- /dev/null +++ b/WebVue/src/views/master/DmsFileEnquiry.vue @@ -0,0 +1,1198 @@ + + + + + diff --git a/WebVue/src/views/master/DmsFileEnquiryModal.vue b/WebVue/src/views/master/DmsFileEnquiryModal.vue new file mode 100644 index 0000000..f1d5df4 --- /dev/null +++ b/WebVue/src/views/master/DmsFileEnquiryModal.vue @@ -0,0 +1,248 @@ + + diff --git a/WebVue/src/views/master/DmsFileShareModal.vue b/WebVue/src/views/master/DmsFileShareModal.vue new file mode 100644 index 0000000..60507b2 --- /dev/null +++ b/WebVue/src/views/master/DmsFileShareModal.vue @@ -0,0 +1,279 @@ + + diff --git a/WebVue/src/views/master/DmsFolderModal.vue b/WebVue/src/views/master/DmsFolderModal.vue new file mode 100644 index 0000000..6f995a6 --- /dev/null +++ b/WebVue/src/views/master/DmsFolderModal.vue @@ -0,0 +1,303 @@ + + + + + \ No newline at end of file diff --git a/WebVue/src/views/master/PublishAudioEnquiry.vue b/WebVue/src/views/master/PublishAudioEnquiry.vue new file mode 100644 index 0000000..fbbb913 --- /dev/null +++ b/WebVue/src/views/master/PublishAudioEnquiry.vue @@ -0,0 +1,330 @@ + + diff --git a/WebVue/src/views/master/PublishPhotoEnquiry.vue b/WebVue/src/views/master/PublishPhotoEnquiry.vue new file mode 100644 index 0000000..93784ae --- /dev/null +++ b/WebVue/src/views/master/PublishPhotoEnquiry.vue @@ -0,0 +1,330 @@ + + diff --git a/WebVue/src/views/master/PublishVideoEnquiry.vue b/WebVue/src/views/master/PublishVideoEnquiry.vue new file mode 100644 index 0000000..5884f48 --- /dev/null +++ b/WebVue/src/views/master/PublishVideoEnquiry.vue @@ -0,0 +1,329 @@ + + diff --git a/WebVue/src/views/master/VideoPlay.vue b/WebVue/src/views/master/VideoPlay.vue new file mode 100644 index 0000000..bc1f230 --- /dev/null +++ b/WebVue/src/views/master/VideoPlay.vue @@ -0,0 +1,82 @@ + + + + + \ No newline at end of file