feature:区域信息api控制器

This commit is contained in:
2021-04-27 17:38:29 +08:00
parent d5f47dffde
commit e0d5540ed9
5 changed files with 171 additions and 5 deletions

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

View File

@@ -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;
}
/// <summary>
/// 添加一个区域
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public async Task AddAreaNumber(AreaNumberInput input)
{
await _areaNumberRep.InsertAsync(input.Adapt<AreaNumber>());
}
/// <summary>
/// 删除一个区域
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
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();
}
/// <summary>
/// 根据区域代码获取区域信息
/// </summary>
/// <param name="code">区域代码</param>
/// <returns></returns>
public async Task<AreaNumber> GetAreaNumber(string 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)
{
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)
{
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;
}
}
}

View File

@@ -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 ="区域代码不可为空")]

View 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;
}
}
}

View File

@@ -15,5 +15,7 @@ namespace Ewide.Core.Service.Area
Task UpdateAreaNumber(AreaNumberInput input);
Task<AreaNumber> GetAreaNumber(string code);
Task<List<AreaNumber>> GetAreaNumberWithChildren(string code);
Task<List<AreaTreeNode>> GetAreaNumberTree();
}
}