diff --git a/Yi.Furion.Net6/Yi.Framework.Module/WebFirstManager/Domain/WebTemplateManager.cs b/Yi.Furion.Net6/Yi.Framework.Module/WebFirstManager/Domain/WebTemplateManager.cs index 1d45efad..96578ebe 100644 --- a/Yi.Furion.Net6/Yi.Framework.Module/WebFirstManager/Domain/WebTemplateManager.cs +++ b/Yi.Furion.Net6/Yi.Framework.Module/WebFirstManager/Domain/WebTemplateManager.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.ComponentModel; using System.ComponentModel.DataAnnotations; +using System.DirectoryServices.ActiveDirectory; using System.Linq; using System.Reflection; using System.Text; @@ -11,6 +12,7 @@ using Furion.DatabaseAccessor; using Furion.DependencyInjection; using Mapster.Utils; using Microsoft.AspNetCore.Components.Authorization; +using Microsoft.Extensions.Logging; using Newtonsoft.Json.Linq; using Org.BouncyCastle.Asn1.Ntt; using SqlSugar; @@ -78,22 +80,56 @@ namespace Yi.Framework.Module.WebFirstManager.Domain } - private FieldEntity PropertyMapperToFiled(PropertyInfo propertyInfo) + private FieldEntity PropertyMapperToFiled(PropertyInfo propertyInfo) { var fieldEntity = new FieldEntity(); fieldEntity.Name = propertyInfo.Name; - var enumName = typeof(FieldTypeEnum).GetFields(BindingFlags.Static | BindingFlags.Public).Where(x => x.GetCustomAttribute()?.Name== propertyInfo.PropertyType.Name).FirstOrDefault()?.Name; - if (enumName is null) + + + //获取数据类型,包括可空类型 + Type? fieldType = null; + // 如果字段类型是 Nullable 泛型类型 + if (propertyInfo.PropertyType.IsGenericType && propertyInfo.PropertyType.GetGenericTypeDefinition() == typeof(Nullable<>)) { - fieldEntity.FieldType = FieldTypeEnum.String; - Console.Out.WriteLine($"字段类型:{propertyInfo.PropertyType.Name},未定义"); - //throw new ApplicationException($"字段类型:{propertyInfo.PropertyType.Name},未定义"); + Type nullableType = Nullable.GetUnderlyingType(propertyInfo.PropertyType)!; + fieldType = nullableType; } else { - fieldEntity.FieldType =EasyTool.EnumUtil.Parse(enumName); + fieldType = propertyInfo.PropertyType; } + //判断类型 + var enumName = typeof(FieldTypeEnum).GetFields(BindingFlags.Static | BindingFlags.Public).Where(x => x.GetCustomAttribute()?.Description == fieldType.Name).FirstOrDefault()?.Name; + if (enumName is null) + { + fieldEntity.FieldType = FieldTypeEnum.String; + // App.GetRequiredService>().LogError($"字段类型:{propertyInfo.PropertyType.Name},未定义"); + } + else + { + fieldEntity.FieldType = EasyTool.EnumUtil.Parse(enumName); + } + + //判断是否可空 + if (propertyInfo.PropertyType.IsGenericType && propertyInfo.PropertyType.GetGenericTypeDefinition() == typeof(Nullable<>)) + { + fieldEntity.IsRequired = false; + } + else + { + fieldEntity.IsRequired = true; + } + + + + //判断是否主键 + if (propertyInfo.GetCustomAttribute()?.IsPrimaryKey == true) + { + fieldEntity.IsKey = true; + } + + //判断长度 var colum = propertyInfo.GetCustomAttribute(); if (colum is not null && colum.Length != 0) { diff --git a/Yi.Furion.Net6/Yi.Framework.Module/WebFirstManager/Enums/FieldTypeEnum.cs b/Yi.Furion.Net6/Yi.Framework.Module/WebFirstManager/Enums/FieldTypeEnum.cs index af97b157..237222d4 100644 --- a/Yi.Furion.Net6/Yi.Framework.Module/WebFirstManager/Enums/FieldTypeEnum.cs +++ b/Yi.Furion.Net6/Yi.Framework.Module/WebFirstManager/Enums/FieldTypeEnum.cs @@ -19,5 +19,14 @@ namespace Yi.Framework.Module.WebFirstManager.Enums [Display(Name = "long", Description = "Int64")] Long, + + [Display(Name ="bool",Description = "Boolean")] + Bool, + + [Display(Name = "decimal",Description = "Decimal")] + Decimal, + + [Display(Name = "DateTime", Description = "DateTime")] + DateTime, } } diff --git a/Yi.Furion.Net6/Yi.Framework.Module/WebFirstManager/Handler/FieldTemplateHandler.cs b/Yi.Furion.Net6/Yi.Framework.Module/WebFirstManager/Handler/FieldTemplateHandler.cs index c8e80379..ab40a071 100644 --- a/Yi.Furion.Net6/Yi.Framework.Module/WebFirstManager/Handler/FieldTemplateHandler.cs +++ b/Yi.Furion.Net6/Yi.Framework.Module/WebFirstManager/Handler/FieldTemplateHandler.cs @@ -53,8 +53,15 @@ namespace Yi.Framework.Module.WebFirstManager.Handler fieldStrs.AppendLine(lengthStr); } + //添加可空类型 + string nullStr =""; + if (field.IsRequired == false) + { + nullStr = "?"; + } + //添加字段 - var fieldStr = $"public {typeStr} {nameStr} {{ get; set; }}"; + var fieldStr = $"public {typeStr}{nullStr} {nameStr} {{ get; set; }}"; fieldStrs.AppendLine(fieldStr); } diff --git a/Yi.RuoYi.Vue3/src/views/webfirst/field/components/FieldList.vue b/Yi.RuoYi.Vue3/src/views/webfirst/field/components/FieldList.vue index c217a354..dfb68f9c 100644 --- a/Yi.RuoYi.Vue3/src/views/webfirst/field/components/FieldList.vue +++ b/Yi.RuoYi.Vue3/src/views/webfirst/field/components/FieldList.vue @@ -41,6 +41,7 @@ v-hasPermi="['system:config:add']" >新增 + - + + +