From bfe8b68a94d4c606c013df28fe0ab190ff23aa65 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=8D=E5=81=9A=E7=A0=81=E5=86=9C?= <599854767@qq.com> Date: Tue, 12 Dec 2023 21:15:25 +0800 Subject: [PATCH] =?UTF-8?q?:zap:=20=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E7=94=9F=E6=88=90=E5=88=A0=E9=99=A4=E6=93=8D=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CommaSeparatedArrayModelBinder.cs | 51 ------------------- ZR.Admin.WebApi/GlobalUsing.cs | 3 +- ZR.Admin.WebApi/Program.cs | 7 +-- .../CodeGenTemplate/TplControllers.txt | 20 ++++---- .../wwwroot/CodeGenTemplate/TplVueApi.txt | 2 +- ZR.Common/Tools.cs | 12 +++++ 6 files changed, 25 insertions(+), 70 deletions(-) delete mode 100644 Infrastructure/ModelBinder/CommaSeparatedArrayModelBinder.cs diff --git a/Infrastructure/ModelBinder/CommaSeparatedArrayModelBinder.cs b/Infrastructure/ModelBinder/CommaSeparatedArrayModelBinder.cs deleted file mode 100644 index 735b054..0000000 --- a/Infrastructure/ModelBinder/CommaSeparatedArrayModelBinder.cs +++ /dev/null @@ -1,51 +0,0 @@ -using Microsoft.AspNetCore.Mvc.ModelBinding; -using Microsoft.AspNetCore.Mvc.ModelBinding.Binders; -using System; -using System.Linq; -using System.Threading.Tasks; - -namespace ZR.Infrastructure.ModelBinder -{ - public class CommaSeparatedArrayModelBinder : IModelBinder - { - public Task BindModelAsync(ModelBindingContext bindingContext) - { - var valueProviderResult = bindingContext.ValueProvider.GetValue(bindingContext.ModelName); - if (valueProviderResult == ValueProviderResult.None) - { - return Task.CompletedTask; - } - - var value = valueProviderResult.FirstValue; - if (string.IsNullOrEmpty(value)) - { - return Task.CompletedTask; - } - - try - { - var array = value.Split(',').Select(x => (T)Convert.ChangeType(x, typeof(T))).ToArray(); - bindingContext.Result = ModelBindingResult.Success(array); - } - catch - { - bindingContext.ModelState.TryAddModelError(bindingContext.ModelName, "Invalid value format"); - } - - return Task.CompletedTask; - } - } - - public class CommaSeparatedArrayModelBinderProvider : IModelBinderProvider - { - public IModelBinder? GetBinder(ModelBinderProviderContext context) - { - if (context.Metadata.ModelType == typeof(T[])) - { - return new BinderTypeModelBinder(typeof(CommaSeparatedArrayModelBinder)); - } - - return null; - } - } -} diff --git a/ZR.Admin.WebApi/GlobalUsing.cs b/ZR.Admin.WebApi/GlobalUsing.cs index 8d76ef1..89190fa 100644 --- a/ZR.Admin.WebApi/GlobalUsing.cs +++ b/ZR.Admin.WebApi/GlobalUsing.cs @@ -8,5 +8,4 @@ global using Mapster; global using Infrastructure.Extensions; global using Infrastructure.Controllers; global using ZR.ServiceCore.Middleware; -global using ZR.ServiceCore.Services; -global using ZR.Infrastructure.ModelBinder; \ No newline at end of file +global using ZR.ServiceCore.Services; \ No newline at end of file diff --git a/ZR.Admin.WebApi/Program.cs b/ZR.Admin.WebApi/Program.cs index 9eca8fa..b0bda3c 100644 --- a/ZR.Admin.WebApi/Program.cs +++ b/ZR.Admin.WebApi/Program.cs @@ -16,12 +16,7 @@ var builder = WebApplication.CreateBuilder(args); builder.Host.UseNLog(); // Add services to the container. -builder.Services.AddControllers(options => -{ - options.ModelBinderProviders.Insert(0, new CommaSeparatedArrayModelBinderProvider()); - options.ModelBinderProviders.Insert(0, new CommaSeparatedArrayModelBinderProvider()); - options.ModelBinderProviders.Insert(0, new CommaSeparatedArrayModelBinderProvider()); -}); +builder.Services.AddControllers(); // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle builder.Services.AddEndpointsApiExplorer(); builder.Services.AddSwaggerGen(); diff --git a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplControllers.txt b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplControllers.txt index 496bf89..b4c5fdf 100644 --- a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplControllers.txt +++ b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplControllers.txt @@ -86,8 +86,8 @@ $if(replaceDto.ShowBtnAdd) return SUCCESS(response); } -$end +$end $if(replaceDto.ShowBtnEdit) /// /// 更新${genTable.FunctionName} @@ -103,24 +103,24 @@ $if(replaceDto.ShowBtnEdit) return ToResponse(response); } -$end +$end $if(replaceDto.ShowBtnDelete || replaceDto.ShowBtnMultiDel) /// /// 删除${genTable.FunctionName} /// /// - [HttpDelete("{ids}")] + [HttpDelete("delete/{ids}")] [ActionPermissionFilter(Permission = "${replaceDto.PermissionPrefix}:delete")] [Log(Title = "${genTable.FunctionName}", BusinessType = BusinessType.DELETE)] - public IActionResult Delete${replaceDto.ModelTypeName}([ModelBinder(typeof(CommaSeparatedArrayModelBinder<${replaceDto.PKType}>))] ${replaceDto.PKType}[] ids) + public IActionResult Delete${replaceDto.ModelTypeName}([FromRoute]string ids) { - if (ids.Length <= 0) { return ToResponse(ApiResult.Error($"删除失败Id 不能为空")); } + var idArr = Tools.SplitAndConvert<${replaceDto.PKType}>(ids); - return ToResponse(_${replaceDto.ModelTypeName}Service.Delete(ids$if(replaceDto.enableLog), "删除${genTable.FunctionName}"$end)); + return ToResponse(_${replaceDto.ModelTypeName}Service.Delete(idArr$if(replaceDto.enableLog), "删除${genTable.FunctionName}"$end)); } -$end +$end $if(replaceDto.ShowBtnExport) /// /// 导出${genTable.FunctionName} @@ -141,8 +141,8 @@ $if(replaceDto.ShowBtnExport) var result = ExportExcelMini(list, "${genTable.FunctionName}", "${genTable.FunctionName}"); return ExportExcel(result.Item2, result.Item1); } -$end +$end $if(replaceDto.ShowBtnTruncate) /// /// 清空${genTable.FunctionName} @@ -159,8 +159,8 @@ $if(replaceDto.ShowBtnTruncate) } return SUCCESS(_${replaceDto.ModelTypeName}Service.Truncate${replaceDto.ModelTypeName}()); } -$end +$end $if(replaceDto.ShowBtnImport) /// /// 导入 @@ -193,8 +193,8 @@ $if(replaceDto.ShowBtnImport) var result = DownloadImportTemplate(new List<${replaceDto.ModelTypeName}Dto>() { }, "${replaceDto.ModelTypeName}"); return ExportExcel(result.Item2, result.Item1); } -$end +$end $if(showCustomInput) /// /// 保存排序 diff --git a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplVueApi.txt b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplVueApi.txt index 422bbde..3bd3af4 100644 --- a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplVueApi.txt +++ b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplVueApi.txt @@ -80,7 +80,7 @@ $if(replaceDto.ShowBtnDelete || replaceDto.ShowBtnMultiDel) */ export function del${genTable.BusinessName}(pid) { return request({ - url: '${genTable.ModuleName}/${genTable.BusinessName}/' + pid, + url: '${genTable.ModuleName}/${genTable.BusinessName}/delete/' + pid, method: 'delete' }) } diff --git a/ZR.Common/Tools.cs b/ZR.Common/Tools.cs index d95c47f..2cdaf39 100644 --- a/ZR.Common/Tools.cs +++ b/ZR.Common/Tools.cs @@ -29,6 +29,18 @@ namespace ZR.Common int[] infoIdss = Array.ConvertAll(strIds, s => int.Parse(s)); return infoIdss; } + public static T[] SplitAndConvert(string input, char split = ',') + { + if (string.IsNullOrEmpty(input)) { return Array.Empty(); } + string[] parts = input.Split(split, (char)StringSplitOptions.RemoveEmptyEntries); + T[] result = Array.ConvertAll(parts, s => (T)Convert.ChangeType(s, typeof(T))); + //for (int i = 0; i < parts.Length; i++) + //{ + // result[i] = (T)Convert.ChangeType(parts[i], typeof(T)); + //} + + return result; + } /// /// 根据日期获取星期几