using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Znyc.Cloudcar.Admin.Commons.Cache;
using Znyc.Cloudcar.Admin.Commons.Mapping;
using Znyc.Cloudcar.Admin.Commons.Services;
using Znyc.Cloudcar.Admin.Security.Dtos;
using Znyc.Cloudcar.Admin.Security.Entitys;
using Znyc.Cloudcar.Admin.Security.IRepositories;
using Znyc.Cloudcar.Admin.Security.IServices;
namespace Znyc.Cloudcar.Admin.Security.Services
{
///
/// 行业岗位服务
///
public class IndustryJobsService : BaseService,
IIndustryJobsService
{
private readonly IIndustryJobsRepository _industryJobsRepository;
public IndustryJobsService(
IIndustryJobsRepository industryJobsRepository
) : base(industryJobsRepository)
{
_industryJobsRepository = industryJobsRepository;
}
///
/// 获取组织机构适用于Vue 树形列表
///
///
public async Task> GetAllIndustryJobsTreeTable()
{
List reslist = new List();
IEnumerable elist = await _industryJobsRepository.GetAllAsync();
List list = elist.OrderBy(t => t.Sort).ToList();
List oneIndustryJobsList = list.FindAll(t => t.ParentId == 0);
foreach (IndustryJobsEntity item in oneIndustryJobsList)
{
IndustryJobsTreeTableDto industryJobsTreeTable = new IndustryJobsTreeTableDto();
industryJobsTreeTable = item.MapTo();
industryJobsTreeTable.Childers = GetSubIndustryJobs(list, item.Id).ToList();
reslist.Add(industryJobsTreeTable);
}
await GetListByIdAsync(0);
await GetAllListAsync();
return reslist;
}
///
/// 获取子集,递归调用
///
///
/// 父级Id
///
private List GetSubIndustryJobs(List data, long ParentId)
{
List list = new List();
IndustryJobsTreeTableDto industryJobsOutputDto = new IndustryJobsTreeTableDto();
List ChilList = data.FindAll(t => t.ParentId == ParentId);
foreach (IndustryJobsEntity entity in ChilList)
{
industryJobsOutputDto = entity.MapTo();
industryJobsOutputDto.Childers = GetSubIndustryJobs(data, entity.Id).OrderBy(t => t.Sort)
.MapTo();
list.Add(industryJobsOutputDto);
}
return list;
}
///
/// 查询行业岗位(树状)
///
///
public async Task> GetListByIdAsync(long id)
{
CacheHelper cacheHelper = new CacheHelper();
List list = cacheHelper.Get>("industryjobs:list");
if (list == null || list.Count < 1)
{
list = new List();
IEnumerable industryJobsList = await repository.GetListWhereAsync(" IsDeleted=0 and IsEnabled=1 order by Sort");
List jobsList = industryJobsList.MapTo();
foreach (IndustryJobsOutputDto item in jobsList.Where(x => x.ParentId == 0))
{
IndustryJobsListOutputDto industryJobsListOutput = new IndustryJobsListOutputDto
{
Id = item.Id,
Name = item.Name,
ParentId = item.ParentId,
Sort = item.Sort,
Childers = jobsList.Where(x => x.ParentId == item.Id).ToList()
};
list.Add(industryJobsListOutput);
}
cacheHelper.Add("industryjobs:list", list);
}
if (id > -1)
{
list = list.FindAll(x => x.ParentId == id).ToList();
}
return list;
}
///
/// 根据id查询行业岗位
///
///
///
public async Task GetByIdAsync(long id)
{
CacheHelper cacheHelper = new CacheHelper();
List list = cacheHelper.Get>("allindustryjobs:list");
if (list == null || list.Count < 1)
{
IEnumerable industryJobsList = await repository.GetListWhereAsync(" IsDeleted=0 and IsEnabled=1 order by Sort");
list = industryJobsList.MapTo();
cacheHelper.Add("allindustryjobs:list", list);
}
IndustryJobsOutputDto result = list.Find(x => x.Id == id);
return result;
}
///
/// 查询所有行业岗位
///
///
public async Task> GetAllListAsync()
{
CacheHelper cacheHelper = new CacheHelper();
List list = cacheHelper.Get>("allindustryjobs:list");
if (list == null || list.Count < 1)
{
IEnumerable industryJobsList = await repository.GetListWhereAsync(" IsDeleted=0 and IsEnabled=1 order by Sort");
list = industryJobsList.MapTo();
cacheHelper.Add("allindustryjobs:list", list);
}
return list;
}
}
}