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.
 
 
 

131 lines
4.5 KiB

using Newtonsoft.Json;
using System.Collections.Generic;
using System.Linq;
using Znyc.Admin.Commons.Cache;
using Znyc.Admin.Commons.Json;
using Znyc.Admin.Commons.Services;
using Znyc.Admin.Security.Dtos;
using Znyc.Admin.Security.Entitys;
using Znyc.Admin.Security.IRepositories;
using Znyc.Admin.Security.IServices;
namespace Znyc.Admin.Security.Services
{
/// <summary>
/// 地区信息
/// </summary>
public class AreaService : BaseService<Area, AreaOutputDto, long>, IAreaService
{
private readonly IAreaRepository _repository;
public AreaService(IAreaRepository repository) : base(repository)
{
_repository = repository;
}
#region 用于uniapp下拉选项
/// <summary>
/// 获取所有可用的地区,用于uniapp下拉选项
/// </summary>
/// <returns></returns>
public List<AreaPickerOutputDto> GetAllByEnable()
{
List<AreaPickerOutputDto> list = new List<AreaPickerOutputDto>();
CacheHelper cacheHelper = new CacheHelper();
list = JsonConvert.DeserializeObject<List<AreaPickerOutputDto>>(cacheHelper.Get("Area_Enable_Uniapp")
.ToJson());
if (list == null || list.Count <= 0)
{
List<Area> listFunction = _repository.GetAllByIsNotDeleteAndEnabledMark("Layers in (0,1,2)")
.OrderBy(t => t.SortCode).ToList();
list = UniappViewJson(listFunction, 0);
cacheHelper.Add("Area_Enable_Uniapp", list);
}
return list;
}
/// <summary>
/// 获取省、市、县/区三级可用的地区,用于uniapp下拉选项
/// </summary>
/// <returns></returns>
public List<AreaPickerOutputDto> GetProvinceToAreaByEnable()
{
List<AreaPickerOutputDto> list = new List<AreaPickerOutputDto>();
CacheHelper cacheHelper = new CacheHelper();
list = JsonConvert.DeserializeObject<List<AreaPickerOutputDto>>(cacheHelper
.Get("Area_ProvinceToArea_Enable_Uniapp").ToJson());
if (list == null || list.Count <= 0)
{
List<Area> listFunctionTemp = _repository.GetAllByIsNotDeleteAndEnabledMark("Layers in (1,2,3)")
.OrderBy(t => t.Id).ToList();
List<Area> listFunction = new List<Area>();
foreach (Area item in listFunctionTemp)
{
if (item.Layers == 1)
{
item.ParentId = 0;
}
listFunction.Add(item);
}
list = UniappViewJson(listFunction, 0);
cacheHelper.Add("Area_ProvinceToArea_Enable_Uniapp", list);
}
return list;
}
/// <summary>
///
/// </summary>
/// <param name="data"></param>
/// <param name="ParentId"></param>
/// <returns></returns>
public List<AreaPickerOutputDto> UniappViewJson(List<Area> data, long ParentId)
{
List<AreaPickerOutputDto> list = new List<AreaPickerOutputDto>();
List<Area> ChildNodeList = data.FindAll(t => t.ParentId == ParentId).ToList();
foreach (Area entity in ChildNodeList)
{
AreaPickerOutputDto treeViewModel = new AreaPickerOutputDto
{
value = entity.Id,
label = entity.FullName,
children = ChildrenUniappViewList(data, entity.Id)
};
list.Add(treeViewModel);
}
return list;
}
/// <summary>
///
/// </summary>
/// <param name="data"></param>
/// <param name="ParentId"></param>
/// <returns></returns>
public List<AreaPickerOutputDto> ChildrenUniappViewList(List<Area> data, long ParentId)
{
List<AreaPickerOutputDto> listChildren = new List<AreaPickerOutputDto>();
List<Area> ChildNodeList = data.FindAll(t => t.ParentId == ParentId).ToList();
foreach (Area entity in ChildNodeList)
{
AreaPickerOutputDto treeViewModel = new AreaPickerOutputDto
{
value = entity.Id,
label = entity.FullName,
children = ChildrenUniappViewList(data, entity.Id)
};
listChildren.Add(treeViewModel);
}
return listChildren;
}
#endregion 用于uniapp下拉选项
}
}