Просмотр исходного кода

后端:插件:修复数据大屏预览图和背景图的连接

Signed-off-by: IMaster <logole@live.cn>
IMaster 1 год назад
Родитель
Сommit
bb7b8610dc

+ 7 - 1
Admin.NET/Plugins/Admin.NET.Plugin.GoView/Entity/GoViewProData.cs

@@ -1,4 +1,4 @@
-// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
+// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
 //
 // 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
 //
@@ -23,4 +23,10 @@ public class GoViewProData : EntityTenant
     /// </summary>
     [SugarColumn(ColumnDescription = "预览图片", ColumnDataType = StaticConfig.CodeFirst_BigString)]
     public string? IndexImageData { get; set; }
+
+    /// <summary>
+    /// 背景图片
+    /// </summary>
+    [SugarColumn(ColumnDescription = "背景图片", ColumnDataType = StaticConfig.CodeFirst_BigString)]
+    public string? BackGroundImageData { get; set; }
 }

+ 6 - 1
Admin.NET/Plugins/Admin.NET.Plugin.GoView/Service/GoViewPro/Dto/GoViewProOutput.cs

@@ -1,4 +1,4 @@
-// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
+// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
 //
 // 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
 //
@@ -36,6 +36,11 @@ public class GoViewProItemOutput
     /// </summary>
     public string IndexImage { get; set; }
 
+    /// <summary>
+    /// 背景图片url
+    /// </summary>
+    public string BackGroundImage { get; set; }
+
     /// <summary>
     /// 创建者Id
     /// </summary>

+ 72 - 1
Admin.NET/Plugins/Admin.NET.Plugin.GoView/Service/GoViewPro/GoViewProService.cs

@@ -1,4 +1,4 @@
-// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
+// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
 //
 // 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
 //
@@ -249,4 +249,75 @@ public class GoViewProService : IDynamicApiController
         var bytes = Convert.FromBase64String(projectData.IndexImageData);
         return new FileStreamResult(new MemoryStream(bytes), "image/png");
     }
+
+    /// <summary>
+    /// 上传背景图
+    /// </summary>
+    [DisplayName("上传背景图")]
+    public async Task<GoViewProUploadOutput> UploadBackGround(IFormFile @object)
+    {
+        //文件名格式示例 13414795568325_index_preview.png
+        var fileNameSplit = @object.FileName.Split('_');
+        var idStr = fileNameSplit[0];
+        if (!long.TryParse(idStr, out var id)) return new GoViewProUploadOutput();
+
+        //将预览图转换成 Base64
+        var ms = new MemoryStream();
+        await @object.CopyToAsync(ms);
+        var base64Image = Convert.ToBase64String(ms.ToArray());
+
+        //保存
+        if (await _goViewProDataRep.IsAnyAsync(u => u.Id == id))
+        {
+            await _goViewProDataRep.AsUpdateable()
+                .SetColumns(u => new GoViewProData
+                {
+                    BackGroundImageData = base64Image
+                })
+                .Where(u => u.Id == id)
+                .ExecuteCommandAsync();
+        }
+        else
+        {
+            await _goViewProDataRep.InsertAsync(new GoViewProData
+            {
+                Id = id,
+                BackGroundImageData = base64Image,
+            });
+        }
+
+        var output = new GoViewProUploadOutput
+        {
+            Id = id,
+            BucketName = null,
+            CreateTime = null,
+            CreateUserId = null,
+            FileName = null,
+            FileSize = 0,
+            FileSuffix = "png",
+            FileUrl = $"api/goview/project/getBackGroundImage/{id}",
+            UpdateTime = null,
+            UpdateUserId = null
+        };
+
+        return output;
+    }
+
+    /// <summary>
+    /// 获取背景图
+    /// </summary>
+    /// <returns></returns>
+    [AllowAnonymous]
+    [NonUnify]
+    [ApiDescriptionSettings(Name = "GetBackGroundImage")]
+    [DisplayName("获取背景图")]
+    public async Task<IActionResult> GetBackGroundImage(long id)
+    {
+        var projectData = await _goViewProDataRep.AsQueryable().IgnoreColumns(u => u.Content).FirstAsync(u => u.Id == id);
+        if (projectData?.BackGroundImageData == null)
+            return new NoContentResult();
+
+        var bytes = Convert.FromBase64String(projectData.BackGroundImageData);
+        return new FileStreamResult(new MemoryStream(bytes), "image/png");
+    }
 }