feature:区域信息api控制器
This commit is contained in:
76
Api/Ewide.Core/Controller/AreaNumberController.cs
Normal file
76
Api/Ewide.Core/Controller/AreaNumberController.cs
Normal file
@@ -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
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 区域代码相关服务
|
||||||
|
/// </summary>
|
||||||
|
[ApiDescriptionSettings(Name = "AreaNumber", Order = 160)]
|
||||||
|
public class AreaNumberController : IDynamicApiController
|
||||||
|
{
|
||||||
|
private readonly IAreaNumberService _areaNumberService;
|
||||||
|
|
||||||
|
public AreaNumberController(IAreaNumberService areaNumberService)
|
||||||
|
{
|
||||||
|
_areaNumberService = areaNumberService;
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="code"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpGet("/area/{code}")]
|
||||||
|
public async Task<AreaNumberOutput> GetAreaNumber([FromRoute]string code)
|
||||||
|
{
|
||||||
|
return (await _areaNumberService.GetAreaNumber(code)).Adapt<AreaNumberOutput>();
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 添加区域信息
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="input"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost("/area")]
|
||||||
|
public async Task AddAreaNumber(AreaNumberInput input)
|
||||||
|
{
|
||||||
|
await _areaNumberService.AddAreaNumber(input);
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 更新区域信息
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="input"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPut("/area")]
|
||||||
|
public async Task UpdateAreaNumber(AreaNumberInput input)
|
||||||
|
{
|
||||||
|
await _areaNumberService.AddAreaNumber(input);
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 删除区域
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="input"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpDelete("/area")]
|
||||||
|
public async Task DeleteAreaNumber(DeleteAreaNumberInput input)
|
||||||
|
{
|
||||||
|
await _areaNumberService.DeleteAreaNumber(input);
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 获取目录树
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpGet("/area/tree")]
|
||||||
|
public async Task<List<AreaTreeNode>> GetAreaNumberTree()
|
||||||
|
{
|
||||||
|
return await _areaNumberService.GetAreaNumberTree();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -3,7 +3,10 @@ using Ewide.Core.Service.Area.Dto;
|
|||||||
using Furion.DatabaseAccessor;
|
using Furion.DatabaseAccessor;
|
||||||
using Furion.DatabaseAccessor.Extensions;
|
using Furion.DatabaseAccessor.Extensions;
|
||||||
using Furion.DependencyInjection;
|
using Furion.DependencyInjection;
|
||||||
|
using Furion.DynamicApiController;
|
||||||
|
using Furion.FriendlyException;
|
||||||
using Mapster;
|
using Mapster;
|
||||||
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
@@ -23,30 +26,74 @@ namespace Ewide.Core.Service.Area
|
|||||||
_areaNumberRep = areaNumberRep;
|
_areaNumberRep = areaNumberRep;
|
||||||
_sysCacheService = sysCacheService;
|
_sysCacheService = sysCacheService;
|
||||||
}
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 添加一个区域
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="input"></param>
|
||||||
|
/// <returns></returns>
|
||||||
public async Task AddAreaNumber(AreaNumberInput input)
|
public async Task AddAreaNumber(AreaNumberInput input)
|
||||||
{
|
{
|
||||||
await _areaNumberRep.InsertAsync(input.Adapt<AreaNumber>());
|
await _areaNumberRep.InsertAsync(input.Adapt<AreaNumber>());
|
||||||
}
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 删除一个区域
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="input"></param>
|
||||||
|
/// <returns></returns>
|
||||||
public async Task DeleteAreaNumber(DeleteAreaNumberInput input)
|
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();
|
await areaNumber.DeleteAsync();
|
||||||
}
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 根据区域代码获取区域信息
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="code">区域代码</param>
|
||||||
|
/// <returns></returns>
|
||||||
public async Task<AreaNumber> GetAreaNumber(string code)
|
public async Task<AreaNumber> GetAreaNumber(string code)
|
||||||
{
|
{
|
||||||
return await _areaNumberRep.DetachedEntities.FirstOrDefaultAsync(a => a.Code == code);
|
return await _areaNumberRep.DetachedEntities.FirstOrDefaultAsync(a => a.Code == code);
|
||||||
}
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 获取区域目录树
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
public async Task<List<AreaTreeNode>> GetAreaNumberTree()
|
||||||
|
{
|
||||||
|
return new TreeBuildUtil<AreaTreeNode>().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<List<AreaNumber>> GetAreaNumberWithChildren(string code)
|
public async Task<List<AreaNumber>> GetAreaNumberWithChildren(string code)
|
||||||
{
|
{
|
||||||
return await _areaNumberRep.DetachedEntities.Where(a => a.Code.StartsWith(code)).ToListAsync();
|
return await _areaNumberRep.DetachedEntities.Where(a => a.Code.StartsWith(code)).ToListAsync();
|
||||||
}
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 更新区域信息
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="input"></param>
|
||||||
|
/// <returns></returns>
|
||||||
public async Task UpdateAreaNumber(AreaNumberInput input)
|
public async Task UpdateAreaNumber(AreaNumberInput input)
|
||||||
{
|
{
|
||||||
await _areaNumberRep.UpdateAsync(input.Adapt<AreaNumber>());
|
CheckInput(input);
|
||||||
|
var area = input.Adapt<AreaNumber>();
|
||||||
|
await area.UpdateAsync();
|
||||||
|
}
|
||||||
|
private bool CheckInput(AreaNumberInput input)
|
||||||
|
{
|
||||||
|
//检查level和区域长度
|
||||||
|
if (false)
|
||||||
|
{
|
||||||
|
Oops.Oh("数据异常");
|
||||||
|
}
|
||||||
|
//检查是否有子节点
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,6 +16,14 @@ namespace Ewide.Core.Service.Area.Dto
|
|||||||
public string Note { get; set; }
|
public string Note { get; set; }
|
||||||
public int Sort { 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
|
public class DeleteAreaNumberInput
|
||||||
{
|
{
|
||||||
[Required(ErrorMessage ="区域代码不可为空")]
|
[Required(ErrorMessage ="区域代码不可为空")]
|
||||||
|
|||||||
33
Api/Ewide.Core/Service/Area/Dto/AreaNumberOutput.cs
Normal file
33
Api/Ewide.Core/Service/Area/Dto/AreaNumberOutput.cs
Normal file
@@ -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<AreaTreeNode> Children { get; set; } = new List<AreaTreeNode>();
|
||||||
|
|
||||||
|
public string GetId()
|
||||||
|
{
|
||||||
|
return Code;
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetPid()
|
||||||
|
{
|
||||||
|
return ParentCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SetChildren(IList children)
|
||||||
|
{
|
||||||
|
Children = (List<AreaTreeNode>)children;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -15,5 +15,7 @@ namespace Ewide.Core.Service.Area
|
|||||||
Task UpdateAreaNumber(AreaNumberInput input);
|
Task UpdateAreaNumber(AreaNumberInput input);
|
||||||
Task<AreaNumber> GetAreaNumber(string code);
|
Task<AreaNumber> GetAreaNumber(string code);
|
||||||
Task<List<AreaNumber>> GetAreaNumberWithChildren(string code);
|
Task<List<AreaNumber>> GetAreaNumberWithChildren(string code);
|
||||||
|
|
||||||
|
Task<List<AreaTreeNode>> GetAreaNumberTree();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user