Kaynağa Gözat

😁代码调整(代码生成相关)

zuohuaijun 3 yıl önce
ebeveyn
işleme
1ecbb56281

+ 83 - 87
Admin.NET/Admin.NET.Core/Service/CodeGen/CustomViewEngine.cs

@@ -1,81 +1,79 @@
-// 麻省理工学院许可证
-//
-// 版权所有 (c) 2021-2023 zuohuaijun,大名科技(天津)有限公司  联系电话/微信:18020030720  QQ:515096995
-//
-// 特此免费授予获得本软件的任何人以处理本软件的权利,但须遵守以下条件:在所有副本或重要部分的软件中必须包括上述版权声明和本许可声明。
-//
-// 软件按“原样”提供,不提供任何形式的明示或暗示的保证,包括但不限于对适销性、适用性和非侵权的保证。
-// 在任何情况下,作者或版权持有人均不对任何索赔、损害或其他责任负责,无论是因合同、侵权或其他方式引起的,与软件或其使用或其他交易有关。
-
-namespace Admin.NET.Core.Service;
-
-public class CustomViewEngine : ViewEngineModel
-{
-    private readonly ISqlSugarClient _db;
-
-    public CustomViewEngine()
-    {
-    }
-
-    public CustomViewEngine(ISqlSugarClient db)
-    {
-        _db = db;
-    }
-
-    /// <summary>
-    /// 库定位器
-    /// </summary>
-    public string ConfigId { get; set; } = SqlSugarConst.ConfigId;
-
-    public string AuthorName { get; set; }
-
-    public string BusName { get; set; }
-
-    public string NameSpace { get; set; }
-
-    public string ClassName { get; set; }
-
-    public string ProjectLastName { get; set; }
-
-    public string LowerClassName
-    {
-        get
-        {
-            return ClassName[..1].ToLower() + ClassName[1..]; // 首字母小写
-        }
-    }
-
-    public List<CodeGenConfig> QueryWhetherList { get; set; }
-
-    public List<CodeGenConfig> TableField { get; set; }
-
-    public bool IsJoinTable { get; set; }
-
-    public bool IsUpload { get; set; }
-
-    private List<ColumnOuput> ColumnList { get; set; }
-
-    public string GetColumnNetType(object tbName, object colName)
+// 麻省理工学院许可证
+//
+// 版权所有 (c) 2021-2023 zuohuaijun,大名科技(天津)有限公司  联系电话/微信:18020030720  QQ:515096995
+//
+// 特此免费授予获得本软件的任何人以处理本软件的权利,但须遵守以下条件:在所有副本或重要部分的软件中必须包括上述版权声明和本许可声明。
+//
+// 软件按“原样”提供,不提供任何形式的明示或暗示的保证,包括但不限于对适销性、适用性和非侵权的保证。
+// 在任何情况下,作者或版权持有人均不对任何索赔、损害或其他责任负责,无论是因合同、侵权或其他方式引起的,与软件或其使用或其他交易有关。
+
+namespace Admin.NET.Core.Service;
+
+public class CustomViewEngine : ViewEngineModel
+{
+    private readonly ISqlSugarClient _db;
+
+    public CustomViewEngine()
+    {
+    }
+
+    public CustomViewEngine(ISqlSugarClient db)
+    {
+        _db = db;
+    }
+
+    /// <summary>
+    /// 库定位器
+    /// </summary>
+    public string ConfigId { get; set; } = SqlSugarConst.ConfigId;
+
+    public string AuthorName { get; set; }
+
+    public string BusName { get; set; }
+
+    public string NameSpace { get; set; }
+
+    public string ClassName { get; set; }
+
+    public string ProjectLastName { get; set; }
+
+    public string LowerClassName
     {
-        var config = App.GetOptions<DbConnectionOptions>().ConnectionConfigs.FirstOrDefault(u => u.ConfigId == ConfigId);
-        ColumnList = GetColumnListByTableName(tbName.ToString());
-        //var col = ColumnList.Where(c => c.ColumnName == colName.ToString()).FirstOrDefault(); // 这句在设置了EnableUnderLine时会出错,要改用下面这句
-        var col = ColumnList.Where(c =>
-            (config.DbSettings.EnableUnderLine ? CodeGenUtil.CamelColumnName(c.ColumnName, new string[0]) : c.ColumnName) == colName.ToString())
-            .FirstOrDefault();
-        
-        return col.NetType;
-    }
-
-    public List<ColumnOuput> GetColumnListByTableName(string tableName)
-    {
-        // 多库代码生成切换库
-        var provider = _db.AsTenant().GetConnectionScope(ConfigId != SqlSugarConst.ConfigId ? ConfigId : SqlSugarConst.ConfigId);
-
-        // 获取实体类型属性
+        get
+        {
+            return ClassName[..1].ToLower() + ClassName[1..]; // 首字母小写
+        }
+    }
+
+    public List<CodeGenConfig> QueryWhetherList { get; set; }
+
+    public List<CodeGenConfig> TableField { get; set; }
+
+    public bool IsJoinTable { get; set; }
+
+    public bool IsUpload { get; set; }
+
+    private List<ColumnOuput> ColumnList { get; set; }
+
+    public string GetColumnNetType(object tbName, object colName)
+    {
+        var config = App.GetOptions<DbConnectionOptions>().ConnectionConfigs.FirstOrDefault(u => u.ConfigId == ConfigId);
+        ColumnList = GetColumnListByTableName(tbName.ToString());
+        var col = ColumnList.Where(c => (config.DbSettings.EnableUnderLine
+            ? CodeGenUtil.CamelColumnName(c.ColumnName, Array.Empty<string>())
+            : c.ColumnName) == colName.ToString()).FirstOrDefault();
+        return col.NetType;
+    }
+
+    public List<ColumnOuput> GetColumnListByTableName(string tableName)
+    {
+        // 多库代码生成切换库
+        var provider = _db.AsTenant().GetConnectionScope(ConfigId != SqlSugarConst.ConfigId ? ConfigId : SqlSugarConst.ConfigId);
+
+        // 获取实体类型属性
         var entityType = provider.DbMaintenance.GetTableInfoList().FirstOrDefault(u => u.Name == tableName);
 
-        // 因为ConfigId的表通常也会用到主库的表来做连接,所以这里如果在ConfigId中找不到实体也尝试一下在主库中查找
+        // 因为ConfigId的表通常也会用到主库的表来做连接,所以这里如果在ConfigId中找不到实体也尝试一下在主库中查找
         if (ConfigId == SqlSugarConst.ConfigId && entityType == null) return null;
         if (ConfigId != SqlSugarConst.ConfigId)
         {
@@ -84,16 +82,14 @@ public class CustomViewEngine : ViewEngineModel
             if (entityType == null) return null;
         }
 
-        
-
-        // 按原始类型的顺序获取所有实体类型属性(不包含导航属性,会返回null)
-        return provider.DbMaintenance.GetColumnInfosByTableName(entityType.Name).Select(u => new ColumnOuput
-        {
-            ColumnName = u.DbColumnName,
-            ColumnKey = u.IsPrimarykey.ToString(),
-            DataType = u.DataType.ToString(),
-            NetType = CodeGenUtil.ConvertDataType(u, provider.CurrentConnectionConfig.DbType),
-            ColumnComment = u.ColumnDescription
-        }).ToList();
-    }
+        // 按原始类型的顺序获取所有实体类型属性(不包含导航属性,会返回null)
+        return provider.DbMaintenance.GetColumnInfosByTableName(entityType.Name).Select(u => new ColumnOuput
+        {
+            ColumnName = u.DbColumnName,
+            ColumnKey = u.IsPrimarykey.ToString(),
+            DataType = u.DataType.ToString(),
+            NetType = CodeGenUtil.ConvertDataType(u, provider.CurrentConnectionConfig.DbType),
+            ColumnComment = u.ColumnDescription
+        }).ToList();
+    }
 }

+ 43 - 43
Admin.NET/Admin.NET.Core/Service/CodeGen/Dto/ColumnOuput.cs

@@ -1,46 +1,46 @@
-// 麻省理工学院许可证
-//
-// 版权所有 (c) 2021-2023 zuohuaijun,大名科技(天津)有限公司  联系电话/微信:18020030720  QQ:515096995
-//
-// 特此免费授予获得本软件的任何人以处理本软件的权利,但须遵守以下条件:在所有副本或重要部分的软件中必须包括上述版权声明和本许可声明。
-//
-// 软件按“原样”提供,不提供任何形式的明示或暗示的保证,包括但不限于对适销性、适用性和非侵权的保证。
-// 在任何情况下,作者或版权持有人均不对任何索赔、损害或其他责任负责,无论是因合同、侵权或其他方式引起的,与软件或其使用或其他交易有关。
-
-namespace Admin.NET.Core.Service;
-
-/// <summary>
-/// 数据库表列
-/// </summary>
-public class ColumnOuput
-{
-    /// <summary>
-    /// 字段名
-    /// </summary>
+// 麻省理工学院许可证
+//
+// 版权所有 (c) 2021-2023 zuohuaijun,大名科技(天津)有限公司  联系电话/微信:18020030720  QQ:515096995
+//
+// 特此免费授予获得本软件的任何人以处理本软件的权利,但须遵守以下条件:在所有副本或重要部分的软件中必须包括上述版权声明和本许可声明。
+//
+// 软件按“原样”提供,不提供任何形式的明示或暗示的保证,包括但不限于对适销性、适用性和非侵权的保证。
+// 在任何情况下,作者或版权持有人均不对任何索赔、损害或其他责任负责,无论是因合同、侵权或其他方式引起的,与软件或其使用或其他交易有关。
+
+namespace Admin.NET.Core.Service;
+
+/// <summary>
+/// 数据库表列
+/// </summary>
+public class ColumnOuput
+{
+    /// <summary>
+    /// 字段名
+    /// </summary>
     public string ColumnName { get; set; }
 
-    /// <summary>
-    /// 实体的Property名
-    /// </summary>
-    public string PropertyName { get; set; }
-
-    /// <summary>
-    /// 数据库中类型
-    /// </summary>
-    public string DataType { get; set; }
-
-    /// <summary>
-    /// .NET字段类型
-    /// </summary>
-    public string NetType { get; set; }
-
-    /// <summary>
-    /// 字段描述
-    /// </summary>
-    public string ColumnComment { get; set; }
-
-    /// <summary>
-    /// 主外键
-    /// </summary>
-    public string ColumnKey { get; set; }
+    /// <summary>
+    /// 实体的Property名
+    /// </summary>
+    public string PropertyName { get; set; }
+
+    /// <summary>
+    /// 数据库中类型
+    /// </summary>
+    public string DataType { get; set; }
+
+    /// <summary>
+    /// .NET字段类型
+    /// </summary>
+    public string NetType { get; set; }
+
+    /// <summary>
+    /// 字段描述
+    /// </summary>
+    public string ColumnComment { get; set; }
+
+    /// <summary>
+    /// 主外键
+    /// </summary>
+    public string ColumnKey { get; set; }
 }

+ 2 - 3
Admin.NET/Admin.NET.Core/Service/CodeGen/SysCodeGenConfigService.cs

@@ -111,9 +111,8 @@ public class SysCodeGenConfigService : IDynamicApiController, ITransient
             }
 
             codeGenConfig.CodeGenId = codeGenerate.Id;
-            //这里不能用 ColumnName,应该用 PropertyName (因为Oracle是不区分大小写的,还有个别业务的实体的字段名与Propertty名不一定一样)
-            //目前不想去改模板,所以表结构里没有增加 PropertyName 字段,所以这里暂时先把PropertyName 赋给 ColumnName,以后有空再改
-            codeGenConfig.ColumnName = tableColumn.PropertyName; //tableColumn.ColumnName;
+            // 这里不能用 ColumnName,应该用 PropertyName (因为Oracle是不区分大小写的,还有个别业务的实体的字段名与Propertty名不一定一样)
+            codeGenConfig.ColumnName = tableColumn.PropertyName; // tableColumn.ColumnName;
             codeGenConfig.ColumnComment = tableColumn.ColumnComment;
             codeGenConfig.NetType = tableColumn.DataType;
             codeGenConfig.WhetherRetract = YesNoEnum.N.ToString();

+ 5 - 13
Admin.NET/Admin.NET.Core/Service/CodeGen/SysCodeGenService.cs

@@ -156,13 +156,6 @@ public class SysCodeGenService : IDynamicApiController, ITransient
             });
         }
         return tableOutputList;
-        //return entityInfos.Where(u => dbTableNames.Contains(config.EnableUnderLine ? UtilMethods.ToUnderLine(u.DbTableName) : u.DbTableName.ToLower())).Select(u => new TableOutput()
-        //{
-        //    ConfigId = configId,
-        //    EntityName = u.EntityName,
-        //    TableName = config.EnableUnderLine ? UtilMethods.ToUnderLine(u.DbTableName) : u.DbTableName,
-        //    TableComment = u.TableDescription
-        //}).ToList();
     }
 
     /// <summary>
@@ -210,7 +203,7 @@ public class SysCodeGenService : IDynamicApiController, ITransient
         var columnInfos = provider.DbMaintenance.GetColumnInfosByTableName(dbTableName, false);
         var result = columnInfos.Select(u => new ColumnOuput
         {
-            // 转下划线后的列名需要再转回来,2023/9/11,后面会根据字段名获取对应Property,所以这里不用转换了,以后面转换。
+            // 转下划线后的列名需要再转回来(暂时不转)
             //ColumnName = config.DbSettings.EnableUnderLine ? CodeGenUtil.CamelColumnName(u.DbColumnName, entityBasePropertyNames) : u.DbColumnName,
             ColumnName = u.DbColumnName,
             ColumnKey = u.IsPrimarykey.ToString(),
@@ -220,17 +213,16 @@ public class SysCodeGenService : IDynamicApiController, ITransient
         }).ToList();
         // 获取实体的属性信息,并赋值给PropertyName属性
         var entityProperties = entityType.Type.GetProperties();
-        //foreach (var columnOutput in result)
-        for (int i= result.Count-1;i>=0;i--)
+        for (int i = result.Count - 1; i >= 0; i--)
         {
             var columnOutput = result[i];
             var propertyName = entityProperties.FirstOrDefault(p =>
-                p.Name == (config.DbSettings.EnableUnderLine ? CodeGenUtil.CamelColumnName(columnOutput.ColumnName, entityBasePropertyNames) : columnOutput.ColumnName) || 
+                p.Name == (config.DbSettings.EnableUnderLine ? CodeGenUtil.CamelColumnName(columnOutput.ColumnName, entityBasePropertyNames) : columnOutput.ColumnName) ||
                 p.GetCustomAttribute<SugarColumn>()?.ColumnName?.ToLower() == columnOutput.ColumnName.ToLower()).Name;
             if (propertyName != null)
                 columnOutput.PropertyName = propertyName;
             else
-                result.RemoveAt(i);// 如果实体中都没有定义这个属性,那么显示字段也没有意义,所以这里移除它
+                result.RemoveAt(i);// 移除没有定义此属性的字段
         }
         return result;
     }
@@ -516,7 +508,7 @@ public class SysCodeGenService : IDynamicApiController, ITransient
 
         var menuList = new List<SysMenu>() { menuType2, menuType2_1, menuType2_2, menuType2_3, menuType2_4 };
         // 加入fk、Upload、ApiTreeSelect 等接口的权限
-        var fkTableList = tableFieldList.Where(u => u.EffectType == "fk").ToList(); 
+        var fkTableList = tableFieldList.Where(u => u.EffectType == "fk").ToList();
         foreach (var @column in fkTableList)
         {
             var menuType = new SysMenu