Merge branch 'master' of http://118.178.224.202:3000/ewide/ewide_core
This commit is contained in:
128
Api/Ewide.Core/Service/Area/AreaCodeService.cs
Normal file
128
Api/Ewide.Core/Service/Area/AreaCodeService.cs
Normal file
@@ -0,0 +1,128 @@
|
||||
using Ewide.Core.Service.Area.Dto;
|
||||
using Furion.DatabaseAccessor;
|
||||
using Furion.DatabaseAccessor.Extensions;
|
||||
using Furion.DependencyInjection;
|
||||
using Furion.FriendlyException;
|
||||
using Mapster;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Ewide.Core.Service.Area
|
||||
{
|
||||
public class AreaCodeService : IAreaCodeService, ITransient
|
||||
{
|
||||
private readonly IRepository<SysAreaCode> _areaCodeRep;
|
||||
private readonly IRepository<SysOrg> _sysOrgRep;
|
||||
private readonly ISysCacheService _sysCacheService;
|
||||
|
||||
public AreaCodeService(IRepository<SysAreaCode> AreaCodeRep, ISysCacheService sysCacheService, IRepository<SysOrg> sysOrgRep)
|
||||
{
|
||||
_areaCodeRep = AreaCodeRep;
|
||||
_sysCacheService = sysCacheService;
|
||||
_sysOrgRep = sysOrgRep;
|
||||
}
|
||||
/// <summary>
|
||||
/// 添加一个区域
|
||||
/// </summary>
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
public async Task AddAreaCode(AreaCodeInput input)
|
||||
{
|
||||
CheckInput(input);
|
||||
await _areaCodeRep.InsertNowAsync(input.Adapt<SysAreaCode>());
|
||||
await _sysCacheService.SetAreaCode(await _areaCodeRep.DetachedEntities.ToListAsync());
|
||||
}
|
||||
/// <summary>
|
||||
/// 删除一个区域
|
||||
/// </summary>
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
public async Task DeleteAreaCode(DeleteAreaCodeInput input)
|
||||
{
|
||||
var AreaCode = await _areaCodeRep.FirstOrDefaultAsync(p => p.Code == input.Code);
|
||||
if (await _sysOrgRep.DetachedEntities.AnyAsync(o => o.AreaNumberCode == input.Code))
|
||||
{
|
||||
throw Oops.Oh("不能删除已包含区域的组织");
|
||||
}
|
||||
await AreaCode.DeleteNowAsync();
|
||||
await _sysCacheService.SetAreaCode(await _areaCodeRep.DetachedEntities.ToListAsync());
|
||||
}
|
||||
/// <summary>
|
||||
/// 根据区域代码获取区域信息
|
||||
/// </summary>
|
||||
/// <param name="code">区域代码</param>
|
||||
/// <returns></returns>
|
||||
public async Task<SysAreaCode> GetAreaCode(string code)
|
||||
{
|
||||
var cachedAreaCodes = await _sysCacheService.GetAreaCode();
|
||||
if (cachedAreaCodes == null || cachedAreaCodes.Count < 0)
|
||||
{
|
||||
cachedAreaCodes = await _areaCodeRep.DetachedEntities.ToListAsync();
|
||||
await _sysCacheService.SetAreaCode(cachedAreaCodes);
|
||||
}
|
||||
return cachedAreaCodes.FirstOrDefault(a => a.Code == code);
|
||||
}
|
||||
/// <summary>
|
||||
/// 获取区域目录树
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public async Task<List<AreaTreeNode>> GetAreaCodeTree()
|
||||
{
|
||||
var cachedAreaCodes = await _sysCacheService.GetAreaCode();
|
||||
if (cachedAreaCodes == null || cachedAreaCodes.Count < 0)
|
||||
{
|
||||
cachedAreaCodes = await _areaCodeRep.DetachedEntities.ToListAsync();
|
||||
await _sysCacheService.SetAreaCode(cachedAreaCodes);
|
||||
}
|
||||
return new TreeBuildUtil<AreaTreeNode>().DoTreeBuild(cachedAreaCodes.Select(u => new AreaTreeNode
|
||||
{
|
||||
Code = u.Code,
|
||||
ParentCode = u.ParentCode,
|
||||
Name = u.Name,
|
||||
LevelType = u.LevelType,
|
||||
Note = u.Note
|
||||
}).ToList());
|
||||
}
|
||||
|
||||
public async Task<List<SysAreaCode>> GetAreaCodeWithChildren(string code)
|
||||
{
|
||||
return await _areaCodeRep.DetachedEntities.Where(a => a.Code.StartsWith(code)).ToListAsync();
|
||||
}
|
||||
|
||||
public async Task<dynamic> QueryAreaCodePageList(AreaCodeInput input)
|
||||
{
|
||||
var AreaCodes = await _areaCodeRep.DetachedEntities
|
||||
.Where(input.LevelType.HasValue ,a=>a.LevelType == input.LevelType)
|
||||
.Where(!string.IsNullOrEmpty(input.Code),a=>a.Code.StartsWith(input.Code))
|
||||
.Where(!string.IsNullOrEmpty(input.ShowCode),a =>a.ShowCode.StartsWith(input.ShowCode))
|
||||
.Where(!string.IsNullOrEmpty(input.Name),a =>a.Name.StartsWith(input.Name))
|
||||
.Select(p => p.Adapt<SysAreaCode>()).ToPagedListAsync(input.PageNo, input.PageSize);
|
||||
return XnPageResult<SysAreaCode>.PageResult(AreaCodes);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 更新区域信息
|
||||
/// </summary>
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
public async Task UpdateAreaCode(AreaCodeInput input)
|
||||
{
|
||||
CheckInput(input);
|
||||
var area = input.Adapt<SysAreaCode>();
|
||||
await area.UpdateNowAsync();
|
||||
await _sysCacheService.SetAreaCode(await _areaCodeRep.DetachedEntities.ToListAsync());
|
||||
}
|
||||
private bool CheckInput(AreaCodeInput input)
|
||||
{
|
||||
//检查level和区域长度
|
||||
if (false)
|
||||
{
|
||||
throw Oops.Oh("数据异常");
|
||||
}
|
||||
//检查是否有子节点
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,121 +0,0 @@
|
||||
using Ewide.Core.Entity;
|
||||
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;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Ewide.Core.Service.Area
|
||||
{
|
||||
public class AreaNumberService : IAreaNumberService, ITransient
|
||||
{
|
||||
private readonly IRepository<AreaNumber> _areaNumberRep;
|
||||
private readonly IRepository<SysOrg> _sysOrgRep;
|
||||
private readonly ISysCacheService _sysCacheService;
|
||||
|
||||
public AreaNumberService(IRepository<AreaNumber> areaNumberRep, ISysCacheService sysCacheService, IRepository<SysOrg> sysOrgRep)
|
||||
{
|
||||
_areaNumberRep = areaNumberRep;
|
||||
_sysCacheService = sysCacheService;
|
||||
_sysOrgRep = sysOrgRep;
|
||||
}
|
||||
/// <summary>
|
||||
/// 添加一个区域
|
||||
/// </summary>
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
public async Task AddAreaNumber(AreaNumberInput input)
|
||||
{
|
||||
CheckInput(input);
|
||||
await _areaNumberRep.InsertNowAsync(input.Adapt<AreaNumber>());
|
||||
await _sysCacheService.SetAreaNumber(await _areaNumberRep.DetachedEntities.ToListAsync());
|
||||
}
|
||||
/// <summary>
|
||||
/// 删除一个区域
|
||||
/// </summary>
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
public async Task DeleteAreaNumber(DeleteAreaNumberInput input)
|
||||
{
|
||||
var areaNumber = await _areaNumberRep.FirstOrDefaultAsync(p => p.Code == input.Code);
|
||||
if (await _sysOrgRep.DetachedEntities.AnyAsync(o => o.AreaNumberCode == input.Code))
|
||||
{
|
||||
throw Oops.Oh("不能删除已包含区域的组织");
|
||||
}
|
||||
await areaNumber.DeleteNowAsync();
|
||||
await _sysCacheService.SetAreaNumber(await _areaNumberRep.DetachedEntities.ToListAsync());
|
||||
}
|
||||
/// <summary>
|
||||
/// 根据区域代码获取区域信息
|
||||
/// </summary>
|
||||
/// <param name="code">区域代码</param>
|
||||
/// <returns></returns>
|
||||
public async Task<AreaNumber> GetAreaNumber(string code)
|
||||
{
|
||||
var cachedAreaNumbers = await _sysCacheService.GetAreaNumber();
|
||||
if (cachedAreaNumbers == null || cachedAreaNumbers.Count < 0)
|
||||
{
|
||||
cachedAreaNumbers = await _areaNumberRep.DetachedEntities.ToListAsync();
|
||||
await _sysCacheService.SetAreaNumber(cachedAreaNumbers);
|
||||
}
|
||||
return cachedAreaNumbers.FirstOrDefault(a => a.Code == code);
|
||||
}
|
||||
/// <summary>
|
||||
/// 获取区域目录树
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public async Task<List<AreaTreeNode>> GetAreaNumberTree()
|
||||
{
|
||||
var cachedAreaNumbers = await _sysCacheService.GetAreaNumber();
|
||||
if (cachedAreaNumbers == null || cachedAreaNumbers.Count < 0)
|
||||
{
|
||||
cachedAreaNumbers = await _areaNumberRep.DetachedEntities.ToListAsync();
|
||||
await _sysCacheService.SetAreaNumber(cachedAreaNumbers);
|
||||
}
|
||||
return new TreeBuildUtil<AreaTreeNode>().DoTreeBuild(cachedAreaNumbers.Select(u => new AreaTreeNode
|
||||
{
|
||||
Code = u.Code,
|
||||
ParentCode = u.ParentCode,
|
||||
Name = u.Name,
|
||||
LevelType = u.LevelType,
|
||||
Note = u.Note
|
||||
}).ToList());
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
CheckInput(input);
|
||||
var area = input.Adapt<AreaNumber>();
|
||||
await area.UpdateNowAsync();
|
||||
await _sysCacheService.SetAreaNumber(await _areaNumberRep.DetachedEntities.ToListAsync());
|
||||
}
|
||||
private bool CheckInput(AreaNumberInput input)
|
||||
{
|
||||
//检查level和区域长度
|
||||
if (false)
|
||||
{
|
||||
throw Oops.Oh("数据异常");
|
||||
}
|
||||
//检查是否有子节点
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -7,24 +7,24 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace Ewide.Core.Service.Area.Dto
|
||||
{
|
||||
public class AreaNumberInput
|
||||
public class AreaCodeInput : XnInputBase
|
||||
{
|
||||
public string Code { get; set; }
|
||||
public string ShowCode { get; set; }
|
||||
public string Name { get; set; }
|
||||
public int LevelType { get; set; }
|
||||
public int? LevelType { get; set; }
|
||||
public string Note { get; set; }
|
||||
public int Sort { get; set; }
|
||||
}
|
||||
public class UpdateAreaNumberInput
|
||||
public class UpdateAreaCodeInput
|
||||
{
|
||||
public string ShowCode { get; set; }
|
||||
public string Name { get; set; }
|
||||
public int LevelType { get; set; }
|
||||
public int? LevelType { get; set; }
|
||||
public string Note { get; set; }
|
||||
public int Sort { get; set; }
|
||||
}
|
||||
public class DeleteAreaNumberInput
|
||||
public class DeleteAreaCodeInput
|
||||
{
|
||||
[Required(ErrorMessage ="区域代码不可为空")]
|
||||
public string Code { get; set; }
|
||||
@@ -7,11 +7,11 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace Ewide.Core.Service.Area.Dto
|
||||
{
|
||||
public class AreaNumberOutput:AreaNumberInput
|
||||
public class AreaCodeOutput:AreaCodeInput
|
||||
{
|
||||
public string ParentCode { get; set; }
|
||||
}
|
||||
public class AreaTreeNode : AreaNumberOutput, ITreeNode
|
||||
public class AreaTreeNode : AreaCodeOutput, ITreeNode
|
||||
{
|
||||
public List<AreaTreeNode> Children { get; set; } = new List<AreaTreeNode>();
|
||||
|
||||
23
Api/Ewide.Core/Service/Area/IAreaCodeService.cs
Normal file
23
Api/Ewide.Core/Service/Area/IAreaCodeService.cs
Normal file
@@ -0,0 +1,23 @@
|
||||
using Ewide.Core.Service.Area.Dto;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Ewide.Core.Service.Area
|
||||
{
|
||||
public interface IAreaCodeService
|
||||
{
|
||||
Task AddAreaCode(AreaCodeInput input);
|
||||
Task DeleteAreaCode(DeleteAreaCodeInput input);
|
||||
Task UpdateAreaCode(AreaCodeInput input);
|
||||
Task<SysAreaCode> GetAreaCode(string code);
|
||||
Task<List<SysAreaCode>> GetAreaCodeWithChildren(string code);
|
||||
|
||||
Task<List<AreaTreeNode>> GetAreaCodeTree();
|
||||
|
||||
Task<dynamic> QueryAreaCodePageList([FromQuery] AreaCodeInput input);
|
||||
}
|
||||
}
|
||||
@@ -1,21 +0,0 @@
|
||||
using Ewide.Core.Entity;
|
||||
using Ewide.Core.Service.Area.Dto;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Ewide.Core.Service.Area
|
||||
{
|
||||
public interface IAreaNumberService
|
||||
{
|
||||
Task AddAreaNumber(AreaNumberInput input);
|
||||
Task DeleteAreaNumber(DeleteAreaNumberInput input);
|
||||
Task UpdateAreaNumber(AreaNumberInput input);
|
||||
Task<AreaNumber> GetAreaNumber(string code);
|
||||
Task<List<AreaNumber>> GetAreaNumberWithChildren(string code);
|
||||
|
||||
Task<List<AreaTreeNode>> GetAreaNumberTree();
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,4 @@
|
||||
using Ewide.Core.Entity;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Ewide.Core.Service
|
||||
@@ -15,8 +14,8 @@ namespace Ewide.Core.Service
|
||||
Task SetDataScope(string userId, List<string> dataScopes);
|
||||
Task SetMenu(string userId, string appCode, List<AntDesignTreeNode> menus);
|
||||
Task SetPermission(string userId, List<string> permissions);
|
||||
Task<List<AreaNumber>> GetAreaNumber();
|
||||
Task SetAreaNumber(List<AreaNumber> areaNumbers);
|
||||
Task<List<SysAreaCode>> GetAreaCode();
|
||||
Task SetAreaCode(List<SysAreaCode> areaCodes);
|
||||
Task<bool> SetAsync(string key, object value);
|
||||
Task<string> GetAsync(string key);
|
||||
Task<T> GetAsync<T>(string key);
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
using Ewide.Core.Entity;
|
||||
using Furion.DependencyInjection;
|
||||
using Furion.DependencyInjection;
|
||||
using Furion.DynamicApiController;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.Extensions.Options;
|
||||
@@ -166,14 +165,14 @@ namespace Ewide.Core.Service
|
||||
{
|
||||
return _cache.GetAsync<T>(key);
|
||||
}
|
||||
public Task<List<AreaNumber>> GetAreaNumber()
|
||||
public Task<List<SysAreaCode>> GetAreaCode()
|
||||
{
|
||||
return _cache.GetAsync<List<AreaNumber>>(CommonConst.CACHE_AREA_NUMBER);
|
||||
return _cache.GetAsync<List<SysAreaCode>>(CommonConst.CACHE_AREA_CODE);
|
||||
}
|
||||
|
||||
public async Task SetAreaNumber(List<AreaNumber> areaNumbers)
|
||||
public async Task SetAreaCode(List<SysAreaCode> areaCodes)
|
||||
{
|
||||
await _cache.SetAsync(CommonConst.CACHE_AREA_NUMBER,areaNumbers);
|
||||
await _cache.SetAsync(CommonConst.CACHE_AREA_CODE, areaCodes);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
using Ewide.Core.Entity;
|
||||
using Furion;
|
||||
using Furion;
|
||||
using Furion.DatabaseAccessor;
|
||||
using Furion.DatabaseAccessor.Extensions;
|
||||
using Furion.DependencyInjection;
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
using Ewide.Core.Entity;
|
||||
using Ewide.Core.Service.User;
|
||||
using Furion.DatabaseAccessor;
|
||||
using Furion.DatabaseAccessor;
|
||||
using Furion.DatabaseAccessor.Extensions;
|
||||
using Furion.DependencyInjection;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
using Ewide.Core.Entity;
|
||||
using Ewide.Core.Service.Role;
|
||||
using Ewide.Core.Service.Role;
|
||||
using Furion.DatabaseAccessor;
|
||||
using Furion.DatabaseAccessor.Extensions;
|
||||
using Furion.DependencyInjection;
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
using Ewide.Core.Entity;
|
||||
using Furion.DatabaseAccessor;
|
||||
using Furion.DatabaseAccessor;
|
||||
using Furion.DatabaseAccessor.Extensions;
|
||||
using Furion.DependencyInjection;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
Reference in New Issue
Block a user