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();
}
}