using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Znyc.Recruitment.Admin.Commons.Cache; using Znyc.Recruitment.Admin.Commons.Mapping; using Znyc.Recruitment.Admin.Commons.Services; using Znyc.Recruitment.Admin.Security.Dtos; using Znyc.Recruitment.Admin.Security.Entitys; using Znyc.Recruitment.Admin.Security.IRepositories; using Znyc.Recruitment.Admin.Security.IServices; namespace Znyc.Recruitment.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; } } }