using System;
using System.Collections.Generic;
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 RegionService : BaseService, IRegionService
{
private readonly IRegionRepository _regionRepository;
public RegionService(IRegionRepository regionRepository) : base(regionRepository)
{
_regionRepository = regionRepository;
}
///
/// 查询省市区缓存
///
///
public async Task> GetAllRegionList()
{
CacheHelper cacheHelper = new CacheHelper();
List list = cacheHelper.Get>("region:list ");
if (list == null)
{
list = await AsyncRegionCache();
}
return list;
}
///
/// 同步地区缓存
///
///
public async Task> AsyncRegionCache()
{
List regionList = new List();
CacheHelper cacheHelper = new CacheHelper();
IEnumerable list = await _regionRepository.GetListWhereAsync(" ParentId=0");
foreach (RegionEntity item in list)
{
RegionOutputDto regionListOutputs = new RegionOutputDto
{
RegionId = item.RegionId,
Name = item.Name,
ParentId = item.ParentId
};
string where = string.Format(@" IsDeleted = 0 and ParentId = {0}", item.RegionId);
IEnumerable regions = await _regionRepository.GetListWhereAsync(where);
regionListOutputs.Childers = regions.MapTo();
regionList.Add(regionListOutputs);
}
cacheHelper.Add("region:list ", regionList, TimeSpan.FromDays(30));
return regionList;
}
}
}