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
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下拉选项
|
|
}
|
|
}
|