1
0
Переглянути джерело

新增租户下导出数据,同时导出非租户数据
修复非租户数据包含有租户数据部分表无法导入数据的问题

zhontai 3 роки тому
батько
коміт
a9385bee8d

+ 0 - 1
Admin.Core.Model/Admin/DictionaryTypeEntity.cs

@@ -1,6 +1,5 @@
 using Admin.Core.Common.BaseModel;
 using FreeSql.DataAnnotations;
-using System.Collections.Generic;
 
 namespace Admin.Core.Model.Admin
 {

+ 50 - 0
Admin.Core.Repository/Admin/Dictionary/Output/DictionaryDataOutput.cs

@@ -0,0 +1,50 @@
+using System.Collections.Generic;
+
+namespace Admin.Core.Repository.Admin.Output
+{
+    /// <summary>
+    /// 数据字典导出
+    /// </summary>
+    public partial class DictionaryDataOutput
+    {
+        /// <summary>
+        /// 租户Id
+        /// </summary>
+        public long? TenantId { get; set; }
+
+        /// <summary>
+        /// 字典类型Id
+        /// </summary>
+        public long DictionaryTypeId { get; set; }
+
+        /// <summary>
+        /// 字典名称
+        /// </summary>
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 字典编码
+        /// </summary>
+        public string Code { get; set; }
+
+        /// <summary>
+        /// 字典值
+        /// </summary>
+        public string Value { get; set; }
+
+        /// <summary>
+        /// 描述
+        /// </summary>
+        public string Description { get; set; }
+
+        /// <summary>
+        /// 启用
+        /// </summary>
+		public bool Enabled { get; set; } = true;
+
+        /// <summary>
+        /// 排序
+        /// </summary>
+		public int Sort { get; set; }
+    }
+}

+ 40 - 0
Admin.Core.Repository/Admin/DictionaryType/Output/DictionaryTypeDataOutput.cs

@@ -0,0 +1,40 @@
+using System.Collections.Generic;
+
+namespace Admin.Core.Repository.Admin.Output
+{
+    /// <summary>
+    /// 数据字典类型导出
+    /// </summary>
+    public partial class DictionaryTypeDataOutput
+    {
+        /// <summary>
+        /// 租户Id
+        /// </summary>
+        public long? TenantId { get; set; }
+
+        /// <summary>
+        /// 字典名称
+        /// </summary>
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 字典编码
+        /// </summary>
+        public string Code { get; set; }
+
+        /// <summary>
+        /// 描述
+        /// </summary>
+        public string Description { get; set; }
+
+        /// <summary>
+        /// 启用
+        /// </summary>
+		public bool Enabled { get; set; } = true;
+
+        /// <summary>
+        /// 排序
+        /// </summary>
+		public int Sort { get; set; }
+    }
+}

+ 3 - 5
Admin.Core.Repository/Admin/Role/Output/RoleDataOutput.cs

@@ -1,11 +1,9 @@
-using System.Collections.Generic;
-
-namespace Admin.Core.Repository.Personnel.Output
+namespace Admin.Core.Repository.Admin.Output
 {
     /// <summary>
-    /// 角色数据导出
+    /// 角色导出
     /// </summary>
-    public class RoleDataOutput
+    public partial class RoleDataOutput
     {
         /// <summary>
         /// 租户Id

+ 3 - 5
Admin.Core.Repository/Admin/User/Output/UserDataOutput.cs

@@ -1,11 +1,9 @@
-using System.Collections.Generic;
-
-namespace Admin.Core.Repository.Personnel.Output
+namespace Admin.Core.Repository.Admin.Output
 {
     /// <summary>
-    /// 用户数据导出
+    /// 用户导出
     /// </summary>
-    public class UserDataOutput
+    public partial class UserDataOutput
     {
         /// <summary>
         /// 租户Id

+ 2 - 1
Admin.Core.Repository/Base/Data.cs

@@ -8,7 +8,8 @@ namespace Admin.Core.Repository
     /// </summary>
     public class Data
     {
-        //public DictionaryEntity[] Dictionaries { get; set; }
+        public DictionaryEntity[] Dictionaries { get; set; }
+        public DictionaryTypeEntity[] DictionaryTypes { get; set; }
         public ApiEntity[] Apis { get; set; }
         public ApiEntity[] ApiTree { get; set; }
         public ViewEntity[] ViewTree { get; set; }

+ 51 - 17
Admin.Core.Repository/Base/DbHelper.cs

@@ -414,7 +414,8 @@ namespace Admin.Core.Repository
                     }
 
                     //admin
-                    //await InitDtDataAsync(db, uow, tran, data.Dictionaries, dbConfig);
+                    await InitDtDataAsync(db, uow, tran, data.Dictionaries, dbConfig);
+                    await InitDtDataAsync(db, uow, tran, data.DictionaryTypes, dbConfig);
                     await InitDtDataAsync(db, uow, tran, data.ApiTree, dbConfig);
                     await InitDtDataAsync(db, uow, tran, data.ViewTree, dbConfig);
                     await InitDtDataAsync(db, uow, tran, data.PermissionTree, dbConfig);
@@ -455,20 +456,13 @@ namespace Admin.Core.Repository
                 Console.WriteLine("\r\n generate data started");
 
                 #region 数据表
+
+
                 //admin
                 #region 数据字典
+                var dictionaries = await db.Queryable<DictionaryEntity>().ToListAsync<DictionaryDataOutput>();
 
-                //var dictionaries = await db.Queryable<DictionaryEntity>().ToListAsync(a => new
-                //{
-                //    a.TenantId,
-                //    a.Id,
-                //    a.ParentId,
-                //    a.Name,
-                //    a.Code,
-                //    a.Value,
-                //    a.Description,
-                //    a.Sort
-                //});
+                var dictionaryTypes = await db.Queryable<DictionaryTypeEntity>().ToListAsync<DictionaryTypeDataOutput>();
 
                 #endregion
 
@@ -635,14 +629,14 @@ namespace Admin.Core.Repository
                 }
 
                 #region 生成数据
-
                 var settings = new JsonSerializerSettings();
                 settings.ContractResolver = new CamelCasePropertyNamesContractResolver();
                 settings.NullValueHandling = NullValueHandling.Ignore;
                 settings.DefaultValueHandling = DefaultValueHandling.Ignore;
                 var jsonData = JsonConvert.SerializeObject(new
                 {
-                    //dictionaries,
+                    dictionaries,
+                    dictionaryTypes,
                     apis,
                     apiTree,
                     viewTree,
@@ -654,16 +648,56 @@ namespace Admin.Core.Repository
                     tenants,
                     tenantPermissions,
                     permissionApis,
-                    //organizationTree
+                    organizationTree
                 },
                 //Formatting.Indented,
                 settings
                 );
-
-                var fileName = appConfig.Tenant ? "data-share.json" : "data.json";
+                
+                var isTenant = appConfig.Tenant;
+                var fileName = isTenant ? "data-share.json" : "data.json";
                 var filePath = Path.Combine(Directory.GetCurrentDirectory(), $"Db/Data/{fileName}").ToPath();
                 FileHelper.WriteFile(filePath, jsonData);
 
+                if (isTenant)
+                {
+                    var tenantId = tenants.Where(a => a.Code.ToLower() == "zhontai").FirstOrDefault().Id;
+                    organizationTree = organizations.Where(a => a.TenantId == tenantId).ToList().ToTree((r, c) =>
+                    {
+                        return c.ParentId == 0;
+                    },
+                    (r, c) =>
+                    {
+                        return r.Id == c.ParentId;
+                    },
+                    (r, datalist) =>
+                    {
+                        r.Childs ??= new List<OrganizationDataOutput>();
+                        r.Childs.AddRange(datalist);
+                    });
+
+                    jsonData = JsonConvert.SerializeObject(new
+                    {
+                        dictionaries = dictionaries.Where(a=>a.TenantId == tenantId),
+                        dictionaryTypes = dictionaryTypes.Where(a => a.TenantId == tenantId),
+                        apis,
+                        apiTree,
+                        viewTree,
+                        permissionTree,
+                        users = users.Where(a => a.TenantId == tenantId),
+                        roles = roles.Where(a => a.TenantId == tenantId),
+                        userRoles,
+                        rolePermissions,
+                        tenants,
+                        tenantPermissions,
+                        permissionApis,
+                        organizationTree
+                    },
+                    settings
+                    );
+                    filePath = Path.Combine(Directory.GetCurrentDirectory(), "Db/Data/data.json").ToPath();
+                    FileHelper.WriteFile(filePath, jsonData);
+                }
                 #endregion
 
                 Console.WriteLine(" generate data succeed\r\n");

+ 1 - 1
Admin.Core.Repository/Personnel/Organization/Output/OrganizationDataOutput.cs

@@ -3,7 +3,7 @@
 namespace Admin.Core.Repository.Personnel.Output
 {
     /// <summary>
-    /// 组织机构数据导出
+    /// 组织机构导出
     /// </summary>
     public class OrganizationDataOutput
     {

Різницю між файлами не показано, бо вона завелика
+ 0 - 0
Admin.Core/Db/Data/data-share.json


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
Admin.Core/Db/Data/data.json


Деякі файли не було показано, через те що забагато файлів було змінено