소스 검색

APP配置文件打包,参数通过数据读取

lichunlei 4 달 전
부모
커밋
1aceea2e43

+ 20 - 11
Controllers/PageUpdateInfoController.cs

@@ -26,35 +26,31 @@ namespace Controllers
         private readonly IPageUpdateInfoService _PageUpdateInfoService;
         private readonly IAppBottomNavsService _AppBottomNavsService;
         private readonly IFileUpdateInfoService _FileUpdateInfoService;
+        private readonly IAppSourceSetService _AppSourceSetService;
 
 
-        public PageUpdateInfoController(IPageUpdateInfoService PageUpdateInfoService, IAppBottomNavsService AppBottomNavsService, IFileUpdateInfoService FileUpdateInfoService)
+        public PageUpdateInfoController(IPageUpdateInfoService PageUpdateInfoService, IAppBottomNavsService AppBottomNavsService, IFileUpdateInfoService FileUpdateInfoService, IAppSourceSetService AppSourceSetService)
         {
             _PageUpdateInfoService = PageUpdateInfoService;
             _AppBottomNavsService = AppBottomNavsService;
             _FileUpdateInfoService = FileUpdateInfoService;
+            _AppSourceSetService = AppSourceSetService;
         }
 
 
-        /// <summary>
-        /// 生成APP配置文件
-        /// </summary>
-        /// <param name="parm">请求参数</param>
-        /// <returns>生成APP配置文件</returns>
-        [HttpGet]
-        [Route("/noauth/SystemSet/makeAppInitData")]
         public string makeAppInitData([FromQuery] MakeAppInitDataDto parm, string EncryptType = "des")
         {
             string AppInfoList = _AppBottomNavsService.makeAppInitData(parm.kind, parm.appVersion, EncryptType);
             // Function.WriteLog(AppInfoList);
             string FileInfoList = _FileUpdateInfoService.makeAppInitData(parm.kind, parm.appVersion, EncryptType);
-            string PageInfoList = _PageUpdateInfoService.makeAppInitData(parm.kind, parm.appVersion, EncryptType);
+            var set = _AppSourceSetService.GetFirst(m => m.projectId == parm.projectId && m.kind == parm.kind);
+            string PageInfoList = _PageUpdateInfoService.makeAppInitData(set, parm.kind, parm.appVersion, EncryptType);
             return AppInfoList + "#cut#" + FileInfoList + "#cut#" + PageInfoList;
         }
 
         [HttpGet]
-        [Route("/noauth/reg")]
-        public IActionResult Register(string v = "4.4.0", string k = "creater", string c = "", string et = "des")
+        [Route("/noauth/pageinfo")]
+        public IActionResult page(string v = "4.4.0", string k = "creater", string c = "", string et = "des")
         {
             string appini = makeAppInitData(new MakeAppInitDataDto()
             {
@@ -114,5 +110,18 @@ namespace Controllers
         }
 
 
+        [HttpGet]
+        [Route("/noauth/static")]
+        public IActionResult staticFile(int p, string v = "4.4.0", string k = "creater")
+        {
+            var set = _AppSourceSetService.GetFirst(m => m.projectId == p && m.kind == k);
+            if(set != null)
+            {
+
+            }
+            return Content("fail");
+        }
+
+
     }
 }

+ 2 - 0
Extensions/AppServiceExtensions.cs

@@ -34,6 +34,8 @@ namespace Infrastructure
             services.AddTransient<Services.Client.IAppBottomNavsService, Services.Client.AppBottomNavsService>();
             services.AddTransient<Services.Client.IPageUpdateInfoService, Services.Client.PageUpdateInfoService>();
             services.AddTransient<Services.Client.IFileUpdateInfoService, Services.Client.FileUpdateInfoService>();
+            services.AddTransient<IAppSourceSetService, AppSourceSetService>();
+            services.AddTransient<IAppSourceVersionService, AppSourceVersionService>();
         }
 
         private static void Register(IServiceCollection services, string item)

+ 106 - 0
Model/Database/AppSourceSet.cs

@@ -0,0 +1,106 @@
+using Mapster;
+
+
+namespace Model
+{
+    /// <summary>
+    /// 资源配置 app_source_set
+    /// </summary>
+    [SugarTable("app_source_set", "资源配置")]
+    [Tenant("0")]
+    public class AppSourceSet
+    {
+        /// <summary>
+        /// ID
+        /// </summary>
+        [SugarColumn(ColumnDescription = "ID", IsPrimaryKey = true, IsIdentity = true, ColumnName = "id")]
+        public int id { get; set; }
+
+
+        /// <summary>
+        /// 版本号
+        /// </summary>
+        [SugarColumn(ColumnDescription = "版本号", ColumnName = "version")]
+        public int version { get; set; }
+
+
+        /// <summary>
+        /// 删除标记
+        /// </summary>
+        [SugarColumn(ColumnDescription = "删除标记", ColumnName = "del_flag")]
+        public int delFlag { get; set; }
+
+
+        /// <summary>
+        /// 创建时间
+        /// </summary>
+        [SugarColumn(ColumnDescription = "创建时间", ColumnName = "create_time")]
+        public DateTime? createTime { get; set; }
+
+
+        /// <summary>
+        /// 更新时间
+        /// </summary>
+        [SugarColumn(ColumnDescription = "更新时间", ColumnName = "update_time")]
+        public DateTime? updateTime { get; set; }
+
+
+        /// <summary>
+        /// 分类
+        /// </summary>
+        [SugarColumn(ColumnDescription = "分类", Length = 50, ColumnName = "kind")]
+        public string? kind { get; set; }
+
+
+        /// <summary>
+        /// 项目
+        /// </summary>
+        [SugarColumn(ColumnDescription = "项目", ColumnName = "project_id")]
+        public int projectId { get; set; }
+
+
+        /// <summary>
+        /// 主机头
+        /// </summary>
+        [SugarColumn(ColumnDescription = "主机头", Length = 100, ColumnName = "host")]
+        public string? host { get; set; }
+
+
+        /// <summary>
+        /// 容器名
+        /// </summary>
+        [SugarColumn(ColumnDescription = "容器名", Length = 50, ColumnName = "bucket_name")]
+        public string? bucketName { get; set; }
+
+
+        /// <summary>
+        /// 终端地址
+        /// </summary>
+        [SugarColumn(ColumnDescription = "终端地址", Length = 100, ColumnName = "end_point")]
+        public string? endPoint { get; set; }
+
+
+        /// <summary>
+        /// 阿里云ID
+        /// </summary>
+        [SugarColumn(ColumnDescription = "阿里云ID", Length = 50, ColumnName = "access_key_id")]
+        public string? accessKeyId { get; set; }
+
+
+        /// <summary>
+        /// 阿里云密钥
+        /// </summary>
+        [SugarColumn(ColumnDescription = "阿里云密钥", Length = 50, ColumnName = "access_key_secret")]
+        public string? accessKeySecret { get; set; }
+
+
+        /// <summary>
+        /// 目录名
+        /// </summary>
+        [SugarColumn(ColumnDescription = "目录名", Length = 100, ColumnName = "path")]
+        public string? path { get; set; }
+
+
+
+    }
+}

+ 71 - 0
Model/Database/AppSourceVersion.cs

@@ -0,0 +1,71 @@
+using Mapster;
+
+
+namespace Model
+{
+    /// <summary>
+    /// 资源版本配置 app_source_version
+    /// </summary>
+    [SugarTable("app_source_version", "资源版本配置")]
+    [Tenant("0")]
+    public class AppSourceVersion
+    {
+        /// <summary>
+        /// ID
+        /// </summary>
+        [SugarColumn(ColumnDescription = "ID", IsPrimaryKey = true, IsIdentity = true, ColumnName = "id")]
+        public int id { get; set; }
+
+
+        /// <summary>
+        /// 版本号
+        /// </summary>
+        [SugarColumn(ColumnDescription = "版本号", ColumnName = "version")]
+        public int version { get; set; }
+
+
+        /// <summary>
+        /// 删除标记
+        /// </summary>
+        [SugarColumn(ColumnDescription = "删除标记", ColumnName = "del_flag")]
+        public int delFlag { get; set; }
+
+
+        /// <summary>
+        /// 创建时间
+        /// </summary>
+        [SugarColumn(ColumnDescription = "创建时间", ColumnName = "create_time")]
+        public DateTime? createTime { get; set; }
+
+
+        /// <summary>
+        /// 更新时间
+        /// </summary>
+        [SugarColumn(ColumnDescription = "更新时间", ColumnName = "update_time")]
+        public DateTime? updateTime { get; set; }
+
+
+        /// <summary>
+        /// 版本号
+        /// </summary>
+        [SugarColumn(ColumnDescription = "版本号", Length = 20, ColumnName = "app_version")]
+        public string? appVersion { get; set; }
+
+
+        /// <summary>
+        /// 所属资源ID
+        /// </summary>
+        [SugarColumn(ColumnDescription = "所属资源ID", ColumnName = "source_id")]
+        public int sourceId { get; set; }
+
+
+        /// <summary>
+        /// 备注
+        /// </summary>
+        [SugarColumn(ColumnDescription = "备注", Length = 200, ColumnName = "note")]
+        public string? note { get; set; }
+
+
+
+    }
+}

+ 6 - 0
Model/Dto/MakeAppInitDataDto.cs

@@ -21,5 +21,11 @@ namespace Dto
         public string? appVersion { get; set; }
 
 
+        /// <summary>
+        /// 项目
+        /// </summary>
+        public int? projectId { get; set; }
+
+
     }
 }

+ 66 - 0
Model/Vo/Admin/GetAppSourceSetListVo.cs

@@ -0,0 +1,66 @@
+using Newtonsoft.Json;
+
+namespace Vo.Admin
+{
+    /// <summary>
+    /// 列表
+    /// </summary>
+    public class GetAppSourceSetListVo
+    {
+        /// <summary>
+        /// ID
+        /// </summary>
+        public int id { get; set; }
+
+
+        /// <summary>
+        /// 分类
+        /// </summary>
+        public string kind { get; set; }
+
+
+        /// <summary>
+        /// 主机头
+        /// </summary>
+        public string host { get; set; }
+
+
+        /// <summary>
+        /// 容器名
+        /// </summary>
+        public string bucketName { get; set; }
+
+
+        /// <summary>
+        /// 终端地址
+        /// </summary>
+        public string endPoint { get; set; }
+
+
+        /// <summary>
+        /// 阿里云ID
+        /// </summary>
+        public string accessKeyId { get; set; }
+
+
+        /// <summary>
+        /// 阿里云密钥
+        /// </summary>
+        public string accessKeySecret { get; set; }
+
+
+        /// <summary>
+        /// 版本号
+        /// </summary>
+        public string appVersion { get; set; }
+
+
+        /// <summary>
+        /// 目录名
+        /// </summary>
+        public string path { get; set; }
+
+
+
+    }
+}

+ 84 - 0
Model/Vo/Admin/GetAppSourceSetQueryVo.cs

@@ -0,0 +1,84 @@
+using Newtonsoft.Json;
+
+namespace Vo.Admin
+{
+    /// <summary>
+    /// 详情
+    /// </summary>
+    public class GetAppSourceSetQueryVo
+    {
+        /// <summary>
+        /// ID
+        /// </summary>
+        public int id { get; set; }
+
+
+        /// <summary>
+        /// 创建时间
+        /// </summary>
+        public DateTime? createTime { get; set; }
+
+
+        /// <summary>
+        /// 更新时间
+        /// </summary>
+        public DateTime? updateTime { get; set; }
+
+
+        /// <summary>
+        /// 分类
+        /// </summary>
+        public string kind { get; set; }
+
+
+        /// <summary>
+        /// 项目
+        /// </summary>
+        public int projectId { get; set; }
+
+
+        /// <summary>
+        /// 主机头
+        /// </summary>
+        public string host { get; set; }
+
+
+        /// <summary>
+        /// 容器名
+        /// </summary>
+        public string bucketName { get; set; }
+
+
+        /// <summary>
+        /// 终端地址
+        /// </summary>
+        public string endPoint { get; set; }
+
+
+        /// <summary>
+        /// 阿里云ID
+        /// </summary>
+        public string accessKeyId { get; set; }
+
+
+        /// <summary>
+        /// 阿里云密钥
+        /// </summary>
+        public string accessKeySecret { get; set; }
+
+
+        /// <summary>
+        /// 版本号
+        /// </summary>
+        public string appVersion { get; set; }
+
+
+        /// <summary>
+        /// 目录名
+        /// </summary>
+        public string path { get; set; }
+
+
+
+    }
+}

+ 36 - 0
Model/Vo/Admin/GetAppSourceVersionListVo.cs

@@ -0,0 +1,36 @@
+using Newtonsoft.Json;
+
+namespace Vo.Admin
+{
+    /// <summary>
+    /// 列表
+    /// </summary>
+    public class GetAppSourceVersionListVo
+    {
+        /// <summary>
+        /// ID
+        /// </summary>
+        public int id { get; set; }
+
+
+        /// <summary>
+        /// 版本号
+        /// </summary>
+        public string appVersion { get; set; }
+
+
+        /// <summary>
+        /// 所属资源ID
+        /// </summary>
+        public int sourceId { get; set; }
+
+
+        /// <summary>
+        /// 备注
+        /// </summary>
+        public string note { get; set; }
+
+
+
+    }
+}

+ 48 - 0
Model/Vo/Admin/GetAppSourceVersionQueryVo.cs

@@ -0,0 +1,48 @@
+using Newtonsoft.Json;
+
+namespace Vo.Admin
+{
+    /// <summary>
+    /// 详情
+    /// </summary>
+    public class GetAppSourceVersionQueryVo
+    {
+        /// <summary>
+        /// ID
+        /// </summary>
+        public int id { get; set; }
+
+
+        /// <summary>
+        /// 创建时间
+        /// </summary>
+        public DateTime? createTime { get; set; }
+
+
+        /// <summary>
+        /// 更新时间
+        /// </summary>
+        public DateTime? updateTime { get; set; }
+
+
+        /// <summary>
+        /// 版本号
+        /// </summary>
+        public string appVersion { get; set; }
+
+
+        /// <summary>
+        /// 所属资源ID
+        /// </summary>
+        public int sourceId { get; set; }
+
+
+        /// <summary>
+        /// 备注
+        /// </summary>
+        public string note { get; set; }
+
+
+
+    }
+}

+ 62 - 0
Services/AppSourceSetService.cs

@@ -0,0 +1,62 @@
+using Attribute;
+using Model;
+using Model.Base;
+using Repository;
+using Service;
+using Microsoft.AspNetCore.Mvc;
+using Vo.Admin;
+using Aliyun.OSS;
+
+
+namespace Services
+{
+    /// <summary>
+    /// 资源配置Service业务层处理
+    /// </summary>
+    [AppService(ServiceType = typeof(IAppSourceSetService), ServiceLifetime = LifeTime.Transient)]
+    public class AppSourceSetService : BaseService<AppSourceSet>, IAppSourceSetService
+    {
+        /// <summary>
+        /// 资源配置-列表
+        /// </summary>
+        /// <param name="kind">分类</param>
+        /// <param name="page">分页参数</param>
+        /// <returns>列表</returns>
+        public PagedInfo<GetAppSourceSetListVo> getAppSourceSetList([FromQuery] PagerInfo page, string kind)
+        {
+            //拼装查询条件
+            var predicate = Expressionable.Create<AppSourceSet>();
+            predicate = predicate.AndIF(!string.IsNullOrEmpty(kind), m => m.kind.Contains(kind));
+            var response = Queryable()
+                .Where(predicate.ToExpression())
+                .OrderByDescending(m => m.id)
+                .ToPage<AppSourceSet, GetAppSourceSetListVo>(page);
+            return response;
+        }
+
+
+
+        /// <summary>
+        /// 资源配置-同步oss文件
+        /// </summary>
+        /// <param name="param">参数</param>
+        /// <returns></returns>
+        public int sycnOssFile([FromQuery] AppSourceSet param, [FromQuery] string version)
+        {
+            var client = new OssClient(param.endPoint, param.accessKeyId, param.accessKeySecret);
+            var listObjectsRequest = new ListObjectsRequest("laikeba-uni");
+            listObjectsRequest.MaxKeys = 1000;
+            listObjectsRequest.Prefix = param.path + "/" + version + "/";
+            var result = client.ListObjects(listObjectsRequest);
+            foreach (var summary in result.ObjectSummaries)
+            {
+                var req = new CopyObjectRequest("laikeba-uni", summary.Key, param.bucketName, summary.Key);
+                client.CopyObject(req);
+            }
+            return 1;
+        }
+
+
+
+    }
+}

+ 39 - 0
Services/AppSourceVersionService.cs

@@ -0,0 +1,39 @@
+using Attribute;
+using Model;
+using Model.Base;
+using Repository;
+using Service;
+using Microsoft.AspNetCore.Mvc;
+using Vo.Admin;
+
+
+namespace Services
+{
+    /// <summary>
+    /// 资源版本配置Service业务层处理
+    /// </summary>
+    [AppService(ServiceType = typeof(IAppSourceVersionService), ServiceLifetime = LifeTime.Transient)]
+    public class AppSourceVersionService : BaseService<AppSourceVersion>, IAppSourceVersionService
+    {
+        /// <summary>
+        /// 资源版本配置-列表
+        /// </summary>
+        /// <param name="sourceId">所属资源ID</param>
+        /// <param name="page">分页参数</param>
+        /// <returns>列表</returns>
+        public PagedInfo<GetAppSourceVersionListVo> getAppSourceVersionList([FromQuery] PagerInfo page, int sourceId)
+        {
+            //拼装查询条件
+            var predicate = Expressionable.Create<AppSourceVersion>();
+            predicate = predicate.AndIF(sourceId > 0, m => m.sourceId == sourceId);
+            var response = Queryable()
+                .Where(predicate.ToExpression())
+                .OrderByDescending(m => m.id)
+                .ToPage<AppSourceVersion, GetAppSourceVersionListVo>(page);
+            return response;
+        }
+
+
+
+    }
+}

+ 24 - 0
Services/IService/IAppSourceSetService.cs

@@ -0,0 +1,24 @@
+using Model;
+using Model.Base;
+using Microsoft.AspNetCore.Mvc;
+using Vo.Admin;
+
+
+namespace Services
+{
+    public interface IAppSourceSetService : IBaseService<AppSourceSet>
+    {
+        /// <summary>
+        /// 资源配置-列表
+        /// </summary>
+        /// <param name="kind">分类</param>
+        /// <param name="page">分页参数</param>
+        /// <returns>列表</returns>
+        PagedInfo<GetAppSourceSetListVo> getAppSourceSetList([FromQuery] PagerInfo page, string kind);
+
+
+        int sycnOssFile([FromQuery] AppSourceSet param, [FromQuery] string version);
+
+
+    }
+}

+ 22 - 0
Services/IService/IAppSourceVersionService.cs

@@ -0,0 +1,22 @@
+using Model;
+using Model.Base;
+using Microsoft.AspNetCore.Mvc;
+using Vo.Admin;
+
+
+namespace Services
+{
+    public interface IAppSourceVersionService : IBaseService<AppSourceVersion>
+    {
+        /// <summary>
+        /// 资源版本配置-列表
+        /// </summary>
+        /// <param name="sourceId">所属资源ID</param>
+        /// <param name="page">分页参数</param>
+        /// <returns>列表</returns>
+        PagedInfo<GetAppSourceVersionListVo> getAppSourceVersionList([FromQuery] PagerInfo page, int sourceId);
+
+
+
+    }
+}

+ 1 - 1
Services/IService/IPageUpdateInfoService.cs

@@ -33,7 +33,7 @@ namespace Services
         /// </summary>
         /// <param name="parm">请求参数</param>
         /// <returns>生成APP配置文件</returns>
-        public string makeAppInitData(string kind, string appVersion, string EncryptType = "des");
+        public string makeAppInitData(AppSourceSet set, string kind, string appVersion, string EncryptType = "des");
 
 
         /// <summary>

+ 6 - 5
Services/PageUpdateInfoService.cs

@@ -140,10 +140,10 @@ namespace Services
         /// </summary>
         /// <param name="parm">请求参数</param>
         /// <returns>生成APP配置文件</returns>
-        public string makeAppInitData(string kind, string appVersion, string EncryptType = "des")
+        public string makeAppInitData(AppSourceSet set, string kind, string appVersion, string EncryptType = "des")
         {
-            OssConfigs ossConfigs = new();
-            AppSettings.Bind("OssConfigs", ossConfigs);
+            // OssConfigs ossConfigs = new();
+            // AppSettings.Bind("OssConfigs", ossConfigs);
             string GotoPages = "{";
             string PageInfoList = "{";
             string LibFile = "{";
@@ -158,8 +158,9 @@ namespace Services
                 var pageinfo = page.Adapt<AppPageInfoVo>();
                 pageinfo.dataId = Function.MD5_16(pageinfo.id.ToString() + "123890");
                 PageInfoList += "\"page" + FileName + "\":" + Newtonsoft.Json.JsonConvert.SerializeObject(pageinfo) + ",";
-                string PagePath = "template/app/" + kind + "/" + page.modulePath;
-                string pageContent = Function.GetNetFileContent(ossConfigs.Host + PagePath);
+                // string PagePath = "template/app/" + kind + "/" + page.modulePath;
+                // string pageContent = Function.GetNetFileContent(ossConfigs.Host + PagePath);
+                string pageContent = Function.GetNetFileContent(set.host + "/" + set.path + "/" + appVersion + "/" + page.modulePath);
                 if(EncryptType == "des")
                 {
                     pageContent = Dbconn.Encrypt3DES(pageContent, "*ga34|^7");