diff --git a/CloudBuilder/CloudBuilder.Master.Service/DmsFileService.auto.cs b/CloudBuilder/CloudBuilder.Master.Service/DmsFileService.auto.cs index dac23b3..dfc2845 100644 --- a/CloudBuilder/CloudBuilder.Master.Service/DmsFileService.auto.cs +++ b/CloudBuilder/CloudBuilder.Master.Service/DmsFileService.auto.cs @@ -803,6 +803,45 @@ namespace CloudBuilder.Master.Service CreateFamilyGroupFolderDetail(folder, familyGroupFolders); } + [PermissionOperate(name: MasterPermissionPolicy.DmsFile, operate: Operate.Insert)] + [UnitOfWork] + public void DeleteFamilyDmsFolder(FamilyDmsFileViewEntity familyDmsFile) + { + ISecurityGeneratorNumberService securityGeneratorNumberService = service.ServiceProvider.GetService()!; + IRepository repositoryFamilyGroupFolder = repository.GetRepository>(); + + IRepository repositoryFolder = repository.GetRepository>(); + IRepository repositoryFolderMap = repository.GetRepository>(); + + DmsFolderEntity folder; + DmsFolderMapEntity map; + DmsFileEntity entity; + + FamilyGroupFolderEntity familyGroupFolder = repositoryFamilyGroupFolder.DetachedEntities.Where(x => x.FolderName == familyDmsFile.FolderName).FirstOrDefault()!; + + repositoryFamilyGroupFolder.DeleteNow(familyGroupFolder); + + //如果只是文件分享,则返回 + if (familyDmsFile.IsDirectoryIndc == YesNoPolicy.NO) return; + + folder = repositoryFolder.DetachedEntities.Where(x => x.FolderName == familyDmsFile.FolderName).FirstOrDefault()!; + + repositoryFolder.DeleteNow(folder); + + map = repositoryFolderMap.DetachedEntities.Where(x => x.FolderNameSon == folder.FolderName).FirstOrDefault()!; + + repositoryFolderMap.DeleteNow(map); + + entity = repository.DetachedEntities.Where(x => x.FileName == folder.FolderName).FirstOrDefault()!; + + repository.DeleteNow(entity); + + IRepository repositoryFamilyFolderFavorite = repository.GetRepository>(); + FamilyFolderFavoriteEntity[] folderFavorite = repositoryFamilyFolderFavorite.DetachedEntities.Where(x => x.FolderName == folder.FolderName).ToArray(); + + repositoryFamilyFolderFavorite.DeleteNow(folderFavorite); + } + [PermissionOperate(name: MasterPermissionPolicy.DmsFile, operate: Operate.Insert)] [UnitOfWork] public void CreateFamilyDmsFolder(FamilyDmsFileViewEntity familyDmsFile) @@ -1201,14 +1240,9 @@ namespace CloudBuilder.Master.Service { 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); + string m3u8FilePath = fullName.Replace(fileExtension, ".png"); + //生成m3u8(暂不生成,只生成截图) + TsToM3u8(dmsFile.OrderKey, fullName, m3u8FilePath); } } } @@ -1254,7 +1288,7 @@ namespace CloudBuilder.Master.Service 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")); + RunMyProcess(service.Configuration[ServiceSettingsPolicy.FfmpegPath], para); return; para = string.Format(service.Configuration["Ffmpeg:Arguments"], mp4Url, videoLength, m3u8Url); //不直接转码视频文件,影响服务器性能,改为在闭时自动生成 @@ -1510,7 +1544,7 @@ namespace CloudBuilder.Master.Service { IRepository repositoryFamilyGroupManager = repository.GetRepository>(); - FamilyGroupManagerUserViewEntity[] ents = repositoryFamilyGroupManager.DetachedEntities.Where(x => x.UserName == service.UserId && x.ValidIndc=="Y").ToArray(); + FamilyGroupManagerUserViewEntity[] ents = repositoryFamilyGroupManager.DetachedEntities.Where(x => x.UserName == service.UserId && x.ValidIndc == "Y").ToArray(); List l = new List(); SelectOption selectOption; @@ -1536,7 +1570,7 @@ namespace CloudBuilder.Master.Service IRepository repositoryFamilyGroup = repository.GetRepository>(); - FamilyGroupEntity group = repositoryFamilyGroup.DetachedEntities.Where(x => x.FamilyName == familyName && x.ValidIndc==YesNoPolicy.YES).FirstOrDefault()!; + FamilyGroupEntity group = repositoryFamilyGroup.DetachedEntities.Where(x => x.FamilyName == familyName && x.ValidIndc == YesNoPolicy.YES).FirstOrDefault()!; if (group == null) return l.ToArray(); selectOption = new SelectOption(); diff --git a/CloudBuilder/CloudBuilder.Master/Service/IDmsFileService.auto.cs b/CloudBuilder/CloudBuilder.Master/Service/IDmsFileService.auto.cs index 8309880..9e26e95 100644 --- a/CloudBuilder/CloudBuilder.Master/Service/IDmsFileService.auto.cs +++ b/CloudBuilder/CloudBuilder.Master/Service/IDmsFileService.auto.cs @@ -27,6 +27,8 @@ namespace CloudBuilder.Master.Service void CreateFamilyDmsFolder(FamilyDmsFileViewEntity familyDmsFile); + void DeleteFamilyDmsFolder(FamilyDmsFileViewEntity familyDmsFile); + SelectOption[] FindDmsFolders(); SelectOption[] FindDmsFolderDeleteLogs(); DmsFolderData FindDmsFolderData(); diff --git a/CloudBuilder/CloudBuilder.Request/Master/DmsFileRequest.auto.cs b/CloudBuilder/CloudBuilder.Request/Master/DmsFileRequest.auto.cs index 4125cd6..6ebdabe 100644 --- a/CloudBuilder/CloudBuilder.Request/Master/DmsFileRequest.auto.cs +++ b/CloudBuilder/CloudBuilder.Request/Master/DmsFileRequest.auto.cs @@ -75,6 +75,10 @@ return Task.Run(() => serviceRequest.PostAsJsonAsync serviceRequest.PostAsJsonAsync("/DmsFile/CreateDmsFolder" , dmsFile)).GetAwaiter().GetResult(); } + public void DeleteFamilyDmsFolder(FamilyDmsFileViewEntity familyDmsFile) + { + Task.Run(() => serviceRequest.PostAsJsonAsync("/DmsFile/DeleteFamilyDmsFolder" , familyDmsFile)).GetAwaiter().GetResult(); } + public void CreateFamilyDmsFolder(FamilyDmsFileViewEntity familyDmsFile) { Task.Run(() => serviceRequest.PostAsJsonAsync("/DmsFile/CreateFamilyDmsFolder" , familyDmsFile)).GetAwaiter().GetResult(); } diff --git a/CloudBuilder/CloudBuilder.Security/Policy/FileTypePolicy.cs b/CloudBuilder/CloudBuilder.Security/Policy/FileTypePolicy.cs index 53a968f..a8c0db3 100644 --- a/CloudBuilder/CloudBuilder.Security/Policy/FileTypePolicy.cs +++ b/CloudBuilder/CloudBuilder.Security/Policy/FileTypePolicy.cs @@ -110,10 +110,10 @@ namespace CloudBuilder.Security.Policy { if (transcodeIndc == YesNoPolicy.YES) { - var upload = (service.Configuration[ServiceSettingsPolicy.DmsFileUploadDirectory] ?? "").Replace(phy ?? "", ""); - var filePathRel = Path.Combine(upload, createdBy, "m3u8", ""); + var upload = (service.Configuration[ServiceSettingsPolicy.DmsFileBackupDirectory] ?? "").Replace(phy ?? "", ""); + var filePathRel = Path.Combine(upload, createdBy, fileExtension.Replace(".", ""), ""); var filePath = filePathRel.Replace(Path.DirectorySeparatorChar, '/') + "/"; - url = service.Configuration[AppsettingsPolicy.ApplicationUrl] + webRootPath + filePath + Path.GetFileNameWithoutExtension(orderKey) + "/main.m3u8"; + url = service.Configuration[AppsettingsPolicy.ApplicationUrl] + webRootPath + filePath + Path.GetFileNameWithoutExtension(orderKey) + ".png"; } else { diff --git a/CloudBuilder/CloudBuilder.Web.Entry/Controllers/Master/DmsFileController.auto.cs b/CloudBuilder/CloudBuilder.Web.Entry/Controllers/Master/DmsFileController.auto.cs index aa87550..981ead4 100644 --- a/CloudBuilder/CloudBuilder.Web.Entry/Controllers/Master/DmsFileController.auto.cs +++ b/CloudBuilder/CloudBuilder.Web.Entry/Controllers/Master/DmsFileController.auto.cs @@ -290,6 +290,26 @@ this.dmsFileService= dmsFileService; { return new ServiceErrorException(ex); } + } + + [PermissionOperate(name: "DmsFile", operate: "Insert")] + [HttpPost] + [UnitOfWork] + public dynamic DeleteFamilyDmsFolder(FamilyDmsFileViewEntity familyDmsFile){ + try + { + dmsFileService.DeleteFamilyDmsFolder(familyDmsFile); + + return string.Empty; + } + catch (ValidatedException vex) + { + return vex; + } + catch (Exception ex) + { + return new ServiceErrorException(ex); + } } [PermissionOperate(name: "DmsFile", operate: "Insert")] diff --git a/CloudBuilder/CloudBuilder.Web.Entry/appsettings.json b/CloudBuilder/CloudBuilder.Web.Entry/appsettings.json index 56133b1..e4e9ec1 100644 --- a/CloudBuilder/CloudBuilder.Web.Entry/appsettings.json +++ b/CloudBuilder/CloudBuilder.Web.Entry/appsettings.json @@ -64,7 +64,7 @@ }, "Ffmpeg": { "Path": "D:\\NET8\\Exe\\ffmpeg\\bin\\ffmpeg.exe", //视频转码 - "Pictrue": " -i {0} -ss 00:00:10.000 -frames:v 1 {1}", + "Pictrue": " -i {0} -ss 00:00:2.000 -frames:v 1 {1}", "Arguments": " -i {0} -c:v libx264 -vf scale=1280:-1 -start_number 0 -hls_time {1} -hls_list_size 0 -f hls {2}" //0-源路径,1-目标路径,2-存放多少秒 1280×720,852*480 }, "CloudBuilder.Topshelf": { diff --git a/WebVue/src/components/basic/MyComputer.vue b/WebVue/src/components/basic/MyComputer.vue index ec7cc84..47f7472 100644 --- a/WebVue/src/components/basic/MyComputer.vue +++ b/WebVue/src/components/basic/MyComputer.vue @@ -39,7 +39,7 @@ -
{{ record.OrgFileName }}
+
{{ record.OrgFileName }}
{{ formatSize(record.FileSize) }}
{{ formatDate(record.CreatedDatetime) }}
@@ -209,11 +209,7 @@ const formatDate = (date: any) => { "-" + String(d.getMonth() + 1).padStart(2, "0") + "-" + - String(d.getDate()).padStart(2, "0") + - " " + - String(d.getHours()).padStart(2, "0") + - ":" + - String(d.getMinutes()).padStart(2, "0") + String(d.getDate()).padStart(2, "0") ); }; @@ -396,10 +392,11 @@ const formatDate = (date: any) => { } .list-name { - flex: 1; + display: inline-block; + max-width: 14ch; /* 6个字符宽度,ch 按字符计算 */ + white-space: nowrap; overflow: hidden; text-overflow: ellipsis; - white-space: nowrap; } .list-size, diff --git a/WebVue/src/components/basic/MyComputerFamily.vue b/WebVue/src/components/basic/MyComputerFamily.vue index 6328b7f..921f469 100644 --- a/WebVue/src/components/basic/MyComputerFamily.vue +++ b/WebVue/src/components/basic/MyComputerFamily.vue @@ -75,7 +75,7 @@