using LifePayment.Application.Contracts; using LifePayment.Domain.Models; using LifePayment.Domain.Shared; using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Volo.Abp.Application.Services; using Volo.Abp.Domain.Repositories; namespace LifePayment.Application { public class AreaService : ApplicationService, IAreaService { private readonly IRepository _areaRepository; public AreaService( IRepository areaRepository) { _areaRepository = areaRepository; } public async Task> GetAreaList(GetAreaListInput input) { var query = _areaRepository.Where(s => (input.NeedTown || s.Layer != LifePaymentConstant.AreaLayerType.镇) && s.IsEnable).Select(r => new AreaDto { AreaCode = r.AreaCode, ParentCode = r.ParentId, AreaName = r.AreaName, Layer = r.Layer, Sort = r.Sort, }); if (input != null) { if (input.Layer.HasValue) { query = query.Where(s => s.Layer == input.Layer); } if (input.ParentCode.HasValue) { query = query.Where(s => s.ParentCode == input.ParentCode); } } return await query.ToListAsync(); } public async Task> GetRegionalManagementList() { var result = new List(); var area = await _areaRepository.Where(r => r.Layer != LifePaymentConstant.AreaLayerType.镇 && r.IsEnable).Select(s => new { s.AreaCode, s.AreaName, s.Layer, s.Sort, s.ParentId, s.QuickQuery, s.SimpleSpelling }).ToListAsync(); result = area.Where(r => r.Layer == LifePaymentConstant.AreaLayerType.省).Select(s => new AreaInfo { AreaCode = s.AreaCode, AreaName = s.AreaName, Layer = s.Layer, Sort = s.Sort, ParentId = s.ParentId, QuickQuery = s.QuickQuery, SimpleSpelling = s.SimpleSpelling, Children = area.Where(r => r.Layer == LifePaymentConstant.AreaLayerType.市 && r.ParentId == s.AreaCode).Select(s => new AreaInfo { AreaCode = s.AreaCode, AreaName = s.AreaName, Layer = s.Layer, Sort = s.Sort, ParentId = s.ParentId, QuickQuery = s.QuickQuery, SimpleSpelling = s.SimpleSpelling, Children = area.Where(d => d.Layer == LifePaymentConstant.AreaLayerType.区县 && d.ParentId == s.AreaCode).Select(s => new AreaInfo { AreaCode = s.AreaCode, AreaName = s.AreaName, Layer = s.Layer, Sort = s.Sort, ParentId = s.ParentId, QuickQuery = s.QuickQuery, SimpleSpelling = s.SimpleSpelling, }).ToList() }).ToList() }).ToList(); return result; } } }