From e0d5540ed9c62c1a40a3b686146de5767d78dd9e Mon Sep 17 00:00:00 2001 From: zhangqi <2794379662@qq.com> Date: Tue, 27 Apr 2021 17:38:29 +0800 Subject: [PATCH] =?UTF-8?q?feature:=E5=8C=BA=E5=9F=9F=E4=BF=A1=E6=81=AFapi?= =?UTF-8?q?=E6=8E=A7=E5=88=B6=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controller/AreaNumberController.cs | 76 +++++++++++++++++++ .../Service/Area/AreaNumberService.cs | 57 ++++++++++++-- .../Service/Area/Dto/AreaNumberInput.cs | 8 ++ .../Service/Area/Dto/AreaNumberOutput.cs | 33 ++++++++ .../Service/Area/IAreaNumberService.cs | 2 + 5 files changed, 171 insertions(+), 5 deletions(-) create mode 100644 Api/Ewide.Core/Controller/AreaNumberController.cs create mode 100644 Api/Ewide.Core/Service/Area/Dto/AreaNumberOutput.cs diff --git a/Api/Ewide.Core/Controller/AreaNumberController.cs b/Api/Ewide.Core/Controller/AreaNumberController.cs new file mode 100644 index 0000000..83163ef --- /dev/null +++ b/Api/Ewide.Core/Controller/AreaNumberController.cs @@ -0,0 +1,76 @@ +using Ewide.Core.Service.Area; +using Ewide.Core.Service.Area.Dto; +using Furion.DynamicApiController; +using Mapster; +using Microsoft.AspNetCore.Mvc; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Ewide.Core.Controller +{ + /// + /// 区域代码相关服务 + /// + [ApiDescriptionSettings(Name = "AreaNumber", Order = 160)] + public class AreaNumberController : IDynamicApiController + { + private readonly IAreaNumberService _areaNumberService; + + public AreaNumberController(IAreaNumberService areaNumberService) + { + _areaNumberService = areaNumberService; + } + /// + /// + /// + /// + /// + [HttpGet("/area/{code}")] + public async Task GetAreaNumber([FromRoute]string code) + { + return (await _areaNumberService.GetAreaNumber(code)).Adapt(); + } + /// + /// 添加区域信息 + /// + /// + /// + [HttpPost("/area")] + public async Task AddAreaNumber(AreaNumberInput input) + { + await _areaNumberService.AddAreaNumber(input); + } + /// + /// 更新区域信息 + /// + /// + /// + [HttpPut("/area")] + public async Task UpdateAreaNumber(AreaNumberInput input) + { + await _areaNumberService.AddAreaNumber(input); + } + /// + /// 删除区域 + /// + /// + /// + [HttpDelete("/area")] + public async Task DeleteAreaNumber(DeleteAreaNumberInput input) + { + await _areaNumberService.DeleteAreaNumber(input); + } + /// + /// 获取目录树 + /// + /// + [HttpGet("/area/tree")] + public async Task> GetAreaNumberTree() + { + return await _areaNumberService.GetAreaNumberTree(); + } + } +} diff --git a/Api/Ewide.Core/Service/Area/AreaNumberService.cs b/Api/Ewide.Core/Service/Area/AreaNumberService.cs index 6f8987f..74ea229 100644 --- a/Api/Ewide.Core/Service/Area/AreaNumberService.cs +++ b/Api/Ewide.Core/Service/Area/AreaNumberService.cs @@ -3,7 +3,10 @@ using Ewide.Core.Service.Area.Dto; using Furion.DatabaseAccessor; using Furion.DatabaseAccessor.Extensions; using Furion.DependencyInjection; +using Furion.DynamicApiController; +using Furion.FriendlyException; using Mapster; +using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; @@ -23,30 +26,74 @@ namespace Ewide.Core.Service.Area _areaNumberRep = areaNumberRep; _sysCacheService = sysCacheService; } - + /// + /// 添加一个区域 + /// + /// + /// public async Task AddAreaNumber(AreaNumberInput input) { await _areaNumberRep.InsertAsync(input.Adapt()); } - + /// + /// 删除一个区域 + /// + /// + /// public async Task DeleteAreaNumber(DeleteAreaNumberInput input) { - var areaNumber= await _areaNumberRep.FirstOrDefaultAsync(p=>p.Code==input.Code); + var areaNumber = await _areaNumberRep.FirstOrDefaultAsync(p => p.Code == input.Code); await areaNumber.DeleteAsync(); } - + /// + /// 根据区域代码获取区域信息 + /// + /// 区域代码 + /// public async Task GetAreaNumber(string code) { return await _areaNumberRep.DetachedEntities.FirstOrDefaultAsync(a => a.Code == code); } + /// + /// 获取区域目录树 + /// + /// + public async Task> GetAreaNumberTree() + { + return new TreeBuildUtil().DoTreeBuild(await _areaNumberRep.DetachedEntities.Select(u => new AreaTreeNode + { + Code = u.Code, + ParentCode = u.ParentCode, + Name = u.Name, + LevelType = u.LevelType, + Note = u.Note + }).ToListAsync()); + } public async Task> GetAreaNumberWithChildren(string code) { return await _areaNumberRep.DetachedEntities.Where(a => a.Code.StartsWith(code)).ToListAsync(); } + /// + /// 更新区域信息 + /// + /// + /// public async Task UpdateAreaNumber(AreaNumberInput input) { - await _areaNumberRep.UpdateAsync(input.Adapt()); + CheckInput(input); + var area = input.Adapt(); + await area.UpdateAsync(); + } + private bool CheckInput(AreaNumberInput input) + { + //检查level和区域长度 + if (false) + { + Oops.Oh("数据异常"); + } + //检查是否有子节点 + return true; } } } diff --git a/Api/Ewide.Core/Service/Area/Dto/AreaNumberInput.cs b/Api/Ewide.Core/Service/Area/Dto/AreaNumberInput.cs index 8f7fade..48dcf9c 100644 --- a/Api/Ewide.Core/Service/Area/Dto/AreaNumberInput.cs +++ b/Api/Ewide.Core/Service/Area/Dto/AreaNumberInput.cs @@ -16,6 +16,14 @@ namespace Ewide.Core.Service.Area.Dto public string Note { get; set; } public int Sort { get; set; } } + public class UpdateAreaNumberInput + { + public string ShowCode { get; set; } + public string Name { get; set; } + public int LevelType { get; set; } + public string Note { get; set; } + public int Sort { get; set; } + } public class DeleteAreaNumberInput { [Required(ErrorMessage ="区域代码不可为空")] diff --git a/Api/Ewide.Core/Service/Area/Dto/AreaNumberOutput.cs b/Api/Ewide.Core/Service/Area/Dto/AreaNumberOutput.cs new file mode 100644 index 0000000..9c59878 --- /dev/null +++ b/Api/Ewide.Core/Service/Area/Dto/AreaNumberOutput.cs @@ -0,0 +1,33 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Ewide.Core.Service.Area.Dto +{ + public class AreaNumberOutput:AreaNumberInput + { + public string ParentCode { get; set; } + } + public class AreaTreeNode : AreaNumberOutput, ITreeNode + { + public List Children { get; set; } = new List(); + + public string GetId() + { + return Code; + } + + public string GetPid() + { + return ParentCode; + } + + public void SetChildren(IList children) + { + Children = (List)children; + } + } +} diff --git a/Api/Ewide.Core/Service/Area/IAreaNumberService.cs b/Api/Ewide.Core/Service/Area/IAreaNumberService.cs index 2eba160..3f18f46 100644 --- a/Api/Ewide.Core/Service/Area/IAreaNumberService.cs +++ b/Api/Ewide.Core/Service/Area/IAreaNumberService.cs @@ -15,5 +15,7 @@ namespace Ewide.Core.Service.Area Task UpdateAreaNumber(AreaNumberInput input); Task GetAreaNumber(string code); Task> GetAreaNumberWithChildren(string code); + + Task> GetAreaNumberTree(); } }