新增国家、州省地区的API
This commit is contained in:
@@ -1,10 +1,17 @@
|
||||
using Atomx.Admin.Services;
|
||||
using Atomx.Admin.Client.Models;
|
||||
using Atomx.Admin.Services;
|
||||
using Atomx.Common.Constants;
|
||||
using Atomx.Common.Entities;
|
||||
using Atomx.Common.Models;
|
||||
using Atomx.Data;
|
||||
using Atomx.Data.CacheServices;
|
||||
using Atomx.Data.Services;
|
||||
using FluentValidation;
|
||||
using MapsterMapper;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.Extensions.Localization;
|
||||
|
||||
namespace Atomx.Admin.Controllers
|
||||
{
|
||||
@@ -13,6 +20,7 @@ namespace Atomx.Admin.Controllers
|
||||
/// </summary>
|
||||
[Route("api/[controller]")]
|
||||
[ApiController]
|
||||
[Authorize]
|
||||
public class AreaController : ControllerBase
|
||||
{
|
||||
private readonly ILogger<AreaController> _logger;
|
||||
@@ -21,7 +29,8 @@ namespace Atomx.Admin.Controllers
|
||||
private readonly IIdentityService _identityService;
|
||||
private readonly IMapper _mapper;
|
||||
private readonly ICacheService _cacheService;
|
||||
|
||||
readonly IValidator<AreaModel> _validator;
|
||||
readonly IStringLocalizer<AreaController> _localizer;
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
@@ -33,7 +42,7 @@ namespace Atomx.Admin.Controllers
|
||||
/// <param name="mapper"></param>
|
||||
/// <param name="jwtSettings"></param>
|
||||
/// <param name="cacheService"></param>
|
||||
public AreaController(ILogger<AreaController> logger, IIdCreatorService idCreator, IIdentityService identityService, DataContext dbContext, IMapper mapper, ICacheService cacheService)
|
||||
public AreaController(ILogger<AreaController> logger, IIdCreatorService idCreator, IIdentityService identityService, DataContext dbContext, IMapper mapper, ICacheService cacheService, IValidator<AreaModel> validator, IStringLocalizer<AreaController> localizer)
|
||||
{
|
||||
_logger = logger;
|
||||
_idCreator = idCreator;
|
||||
@@ -41,6 +50,125 @@ namespace Atomx.Admin.Controllers
|
||||
_dbContext = dbContext;
|
||||
_mapper = mapper;
|
||||
_cacheService = cacheService;
|
||||
_validator = validator;
|
||||
_localizer = localizer;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 数据查询
|
||||
/// </summary>
|
||||
/// <param name="search"></param>
|
||||
/// <param name="page"></param>
|
||||
/// <param name="size"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost("searh")]
|
||||
[Authorize(Policy = Permissions.User.View)]
|
||||
public IActionResult AddressList(AreaSearch search, int page, int size = 20)
|
||||
{
|
||||
if (page < 1)
|
||||
{
|
||||
page = 1;
|
||||
}
|
||||
var result = new ApiResult<PagingList<Area>>();
|
||||
var list = new PagingList<Area>() { Index = page, Size = size };
|
||||
var query = from p in _dbContext.Areas
|
||||
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;
|
||||
}
|
||||
if (search.StateProvinceId > 0)
|
||||
{
|
||||
query = from p in query
|
||||
where p.StateProvinceId == search.StateProvinceId
|
||||
select p;
|
||||
}
|
||||
list.Count = query.Count();
|
||||
list.Items = query.OrderByDescending(p => p.DisplayOrder).Skip((page - 1) * size).Take(size).ToList();
|
||||
|
||||
result = result.IsSuccess(list);
|
||||
|
||||
return new JsonResult(result);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 新增编辑数据
|
||||
/// </summary>
|
||||
/// <param name="model"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost("save")]
|
||||
public IActionResult AddressEdit(AreaModel model)
|
||||
{
|
||||
var result = new ApiResult<bool>();
|
||||
var validation = _validator.Validate(model);
|
||||
if (!validation.IsValid)
|
||||
{
|
||||
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);
|
||||
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)
|
||||
{
|
||||
return new JsonResult(new ApiResult<string>().IsFail("数据不存在", null));
|
||||
}
|
||||
|
||||
data = _mapper.Map(model, data);
|
||||
|
||||
_dbContext.SaveChanges();
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
data = _mapper.Map<Area>(model);
|
||||
data.Id = _idCreator.CreateId();
|
||||
|
||||
_dbContext.Areas.Add(data);
|
||||
_dbContext.SaveChanges();
|
||||
}
|
||||
|
||||
return new JsonResult(new ApiResult<string>().IsSuccess("操作成功"));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 删除数据
|
||||
/// </summary>
|
||||
/// <param name="model"></param>
|
||||
/// <returns></returns>
|
||||
|
||||
[HttpPost("delete")]
|
||||
public async Task<IActionResult> DeleteAsync(long id)
|
||||
{
|
||||
var result = new ApiResult<string>();
|
||||
try
|
||||
{
|
||||
Console.WriteLine($"{id} deleted");
|
||||
var count = _dbContext.Areas.Where(p => p.Id == id).ExecuteDelete();
|
||||
result = result.IsSuccess(count.ToString());
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
result = result.IsFail(ex.Message);
|
||||
_logger.LogError(ex.Message);
|
||||
}
|
||||
return new JsonResult(result);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user