chore
This commit is contained in:
@@ -13,6 +13,7 @@ using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.Extensions.Localization;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Atomx.Admin.Controllers
|
||||
{
|
||||
@@ -60,6 +61,21 @@ namespace Atomx.Admin.Controllers
|
||||
_localizer = localizer;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取省份-城市树形数据
|
||||
/// </summary>
|
||||
/// <param name="search"></param>
|
||||
/// <param name="page"></param>
|
||||
/// <param name="size"></param>
|
||||
/// <returns></returns>
|
||||
[HttpGet("tree/{countryId}")]
|
||||
public async Task<IActionResult> GetAreatree(long countryId)
|
||||
{
|
||||
var result = new ApiResult<List<KeyValueTree>>();
|
||||
var list = await _cacheService.GetAreaTree(countryId);
|
||||
return new JsonResult(result.IsSuccess(list));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 数据查询
|
||||
/// </summary>
|
||||
@@ -67,8 +83,8 @@ namespace Atomx.Admin.Controllers
|
||||
/// <param name="page"></param>
|
||||
/// <param name="size"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost("search")]
|
||||
public IActionResult Search(AreaSearch search, int page, int size = 20)
|
||||
[HttpPost("stateprovince/search")]
|
||||
public async Task<IActionResult> StateProvinceSearch(AreaSearch search, int page, int size = 20)
|
||||
{
|
||||
if (page < 1)
|
||||
{
|
||||
@@ -77,9 +93,83 @@ namespace Atomx.Admin.Controllers
|
||||
var result = new ApiResult<PagingList<AreaItem>>();
|
||||
var list = new PagingList<AreaItem>() { Index = page, Size = size };
|
||||
var countries = new List<Country>();
|
||||
var stateProvices = new List<StateProvince>();
|
||||
|
||||
var query = from p in _dbContext.Areas
|
||||
where p.StateProvinceId == 0
|
||||
select p;
|
||||
|
||||
if (!string.IsNullOrEmpty(search.Name))
|
||||
{
|
||||
query = from p in query
|
||||
where p.Name.Contains(search.Name)
|
||||
select p;
|
||||
}
|
||||
|
||||
if (search.CountryId > 0)
|
||||
{
|
||||
query = from p in query
|
||||
where p.CountryId == search.CountryId
|
||||
select p;
|
||||
}
|
||||
|
||||
list.Count = query.Count();
|
||||
var data = query.OrderByDescending(p => p.DisplayOrder).Skip((page - 1) * size).Take(size).ToList();
|
||||
|
||||
if (search.CountryId > 0)
|
||||
{
|
||||
var country = _dbContext.Countries.SingleOrDefault(p => p.Id == search.CountryId);
|
||||
if (country != null)
|
||||
{
|
||||
countries.Add(country);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
var countryIds = data.Select(p => p.CountryId).Distinct().ToList();
|
||||
countries = _dbContext.Countries.Where(p => countryIds.Contains(p.Id)).ToList();
|
||||
}
|
||||
|
||||
foreach (var item in data)
|
||||
{
|
||||
var model = _mapper.Map<AreaItem>(item);
|
||||
var country = countries.SingleOrDefault(p => p.Id == item.CountryId);
|
||||
if (country != null)
|
||||
{
|
||||
model.CountryName = country.Name;
|
||||
}
|
||||
var state = await _cacheService.GetStateProvince(item.CountryId, item.ParentId);
|
||||
if (state != null)
|
||||
{
|
||||
model.StateProvinceName = state.Name;
|
||||
}
|
||||
list.Items.Add(model);
|
||||
}
|
||||
|
||||
result = result.IsSuccess(list);
|
||||
|
||||
return new JsonResult(result);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 数据查询
|
||||
/// </summary>
|
||||
/// <param name="search"></param>
|
||||
/// <param name="page"></param>
|
||||
/// <param name="size"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost("search")]
|
||||
public async Task<IActionResult> SearchAsync(AreaSearch search, int page, int size = 20)
|
||||
{
|
||||
if (page < 1)
|
||||
{
|
||||
page = 1;
|
||||
}
|
||||
var result = new ApiResult<PagingList<AreaItem>>();
|
||||
var list = new PagingList<AreaItem>() { Index = page, Size = size };
|
||||
var countries = new List<Country>();
|
||||
|
||||
var query = from p in _dbContext.Areas
|
||||
where p.StateProvinceId != 0
|
||||
select p;
|
||||
|
||||
if (!string.IsNullOrEmpty(search.Name))
|
||||
@@ -98,7 +188,7 @@ namespace Atomx.Admin.Controllers
|
||||
if (search.StateProvinceId > 0)
|
||||
{
|
||||
query = from p in query
|
||||
where p.StateProvinceId == search.StateProvinceId
|
||||
where p.ParentId == search.StateProvinceId
|
||||
select p;
|
||||
}
|
||||
list.Count = query.Count();
|
||||
@@ -118,20 +208,6 @@ namespace Atomx.Admin.Controllers
|
||||
countries = _dbContext.Countries.Where(p => countryIds.Contains(p.Id)).ToList();
|
||||
}
|
||||
|
||||
if (search.StateProvinceId > 0)
|
||||
{
|
||||
var state = _dbContext.StateProvinces.SingleOrDefault(p => p.Id == search.StateProvinceId);
|
||||
if (state != null)
|
||||
{
|
||||
stateProvices.Add(state);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
var stateIds = data.Select(p => p.StateProvinceId).Distinct().ToList();
|
||||
stateProvices = _dbContext.StateProvinces.Where(p => stateIds.Contains(p.Id)).ToList();
|
||||
}
|
||||
|
||||
foreach (var item in data)
|
||||
{
|
||||
var model = _mapper.Map<AreaItem>(item);
|
||||
@@ -140,7 +216,7 @@ namespace Atomx.Admin.Controllers
|
||||
{
|
||||
model.CountryName = country.Name;
|
||||
}
|
||||
var state = stateProvices.SingleOrDefault(p => p.Id == item.StateProvinceId);
|
||||
var state = await _cacheService.GetStateProvince(item.CountryId, item.ParentId);
|
||||
if (state != null)
|
||||
{
|
||||
model.StateProvinceName = state.Name;
|
||||
@@ -196,14 +272,13 @@ namespace Atomx.Admin.Controllers
|
||||
return new JsonResult(result);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 新增编辑数据
|
||||
/// </summary>
|
||||
/// <param name="model"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost("save")]
|
||||
public IActionResult AddressEdit(AreaModel model)
|
||||
public IActionResult Edit(AreaModel model)
|
||||
{
|
||||
var result = new ApiResult<bool>();
|
||||
var validation = _validator.Validate(model);
|
||||
@@ -212,15 +287,13 @@ namespace Atomx.Admin.Controllers
|
||||
var message = validation.Errors.FirstOrDefault()?.ErrorMessage ?? string.Empty;
|
||||
return new JsonResult(new ApiResult<string>().IsFail(message, null));
|
||||
}
|
||||
var data = _dbContext.Areas.SingleOrDefault(p => p.CountryId == model.CountryId && p.StateProvinceId == model.StateProvinceId && p.Name == model.Name && p.Id != model.Id);
|
||||
var data = _dbContext.Areas.SingleOrDefault(p => p.CountryId == model.CountryId && p.ParentId == model.ParentId && p.Name == model.Name && p.Id != model.Id);
|
||||
if (data != null)
|
||||
{
|
||||
return new JsonResult(new ApiResult<string>().IsFail("当前站点语言下已经存在这个配置,请认真检查", null));
|
||||
}
|
||||
if (model.Id > 0)
|
||||
{
|
||||
|
||||
|
||||
data = _dbContext.Areas.SingleOrDefault(p => p.Id == model.Id);
|
||||
if (data == null)
|
||||
{
|
||||
@@ -229,7 +302,7 @@ namespace Atomx.Admin.Controllers
|
||||
|
||||
data = _mapper.Map(model, data);
|
||||
|
||||
var parent = _dbContext.Categories.Where(p => p.Id == model.ParentId).SingleOrDefault();
|
||||
var parent = _dbContext.Areas.Where(p => p.Id == model.ParentId).SingleOrDefault();
|
||||
if (parent == null)
|
||||
{
|
||||
data.Depth = 0;
|
||||
@@ -237,6 +310,15 @@ namespace Atomx.Admin.Controllers
|
||||
}
|
||||
else
|
||||
{
|
||||
if (parent.StateProvinceId == 0)
|
||||
{
|
||||
data.StateProvinceId = parent.Id;
|
||||
}
|
||||
else
|
||||
{
|
||||
data.StateProvinceId = parent.StateProvinceId;
|
||||
}
|
||||
|
||||
data.Depth = parent.Depth + 1;
|
||||
data.Path = $"{parent.Path},{data.Id}";
|
||||
}
|
||||
@@ -249,7 +331,7 @@ namespace Atomx.Admin.Controllers
|
||||
data = _mapper.Map<Area>(model);
|
||||
data.Id = _idCreator.CreateId();
|
||||
|
||||
var parent = _dbContext.Categories.Where(p => p.Id == data.ParentId).SingleOrDefault();
|
||||
var parent = _dbContext.Areas.Where(p => p.Id == data.ParentId).SingleOrDefault();
|
||||
if (parent == null)
|
||||
{
|
||||
data.Depth = 0;
|
||||
@@ -257,6 +339,14 @@ namespace Atomx.Admin.Controllers
|
||||
}
|
||||
else
|
||||
{
|
||||
if (parent.StateProvinceId == 0)
|
||||
{
|
||||
data.StateProvinceId = parent.Id;
|
||||
}
|
||||
else
|
||||
{
|
||||
data.StateProvinceId = parent.StateProvinceId;
|
||||
}
|
||||
data.Depth = parent.Depth + 1;
|
||||
data.Path = $"{parent.Path},{data.Id}";
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user