From fcb0ea9574beb2389e43d538e85a0236436b9af4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A9=99=E5=AD=90?= <454313500@qq.com> Date: Thu, 28 Sep 2023 12:59:25 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=AE=8C=E6=88=90web=20to=20code?= =?UTF-8?q?=E5=8F=8Acode=20to=20web=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Domain/WebTemplateManager.cs | 50 ++++++++++++++++--- .../WebFirstManager/Enums/FieldTypeEnum.cs | 9 ++++ .../Handler/FieldTemplateHandler.cs | 9 +++- .../webfirst/field/components/FieldList.vue | 7 ++- 4 files changed, 66 insertions(+), 9 deletions(-) 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']" >新增 + - + + +