You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
52 lines
1.4 KiB
52 lines
1.4 KiB
using SqlSugar;
|
|
using Wood.Data.Repository;
|
|
using Wood.Entity;
|
|
using Wood.Entity.SystemManage;
|
|
|
|
namespace Wood.Service.SystemManage.Manager
|
|
{
|
|
/// <summary>
|
|
/// orgManager
|
|
/// </summary>
|
|
public class OrgManager : ApiManager<OrgEntity>, ITransient
|
|
{
|
|
/// <summary>
|
|
/// orgManager
|
|
/// </summary>
|
|
/// <param name="repository"></param>
|
|
public OrgManager(SqlSugarRepository<OrgEntity> repository) : base(repository)
|
|
{
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取所有的子id 包括自己
|
|
/// </summary>
|
|
/// <param name="orgId">父级id</param>
|
|
/// <returns></returns>
|
|
public async Task<List<long>> GetChildrenIds(long orgId)
|
|
{
|
|
return (await AsQueryable().ToChildListAsync(it => it.ParentId, orgId)).Select(it => it.Id).ToList();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 根据名称获取机构部门
|
|
/// </summary>
|
|
/// <param name="path">路径 以/分割</param>
|
|
/// <returns></returns>
|
|
public async Task<List<OrgEntity>> GetOrgsByPath(string path)
|
|
{
|
|
string[] paths = path.Split('/');
|
|
List<OrgEntity>? es =await AsRepository().GetListAsync(it => paths.Contains( it.OrgName));
|
|
if (paths.Length == 1)
|
|
return es;
|
|
else
|
|
{
|
|
IEnumerable<OrgEntity> parent = es.Where(it => it.OrgName == paths[0]);
|
|
for (int i = 1; i < paths.Length; i++)
|
|
parent= es.Where(it=>it.OrgName == paths[i]&&parent.Any(p=>p.Id==it.ParentId));
|
|
|
|
return parent.ToList();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|