246 lines
8.2 KiB
C#
246 lines
8.2 KiB
C#
using Atomx.Admin.Client.Models;
|
|
using Atomx.Admin.Services;
|
|
using Atomx.Common.Entities;
|
|
using Atomx.Common.Models;
|
|
using Atomx.Data;
|
|
using Atomx.Data.Services;
|
|
using Atomx.Utils.Extension;
|
|
using FluentValidation;
|
|
using MapsterMapper;
|
|
using Microsoft.AspNetCore.Authorization;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using Microsoft.Extensions.Localization;
|
|
|
|
namespace Atomx.Admin.Controllers
|
|
{
|
|
[Route("api/[controller]")]
|
|
[ApiController]
|
|
[Authorize]
|
|
public class AppVersionController : ControllerBase
|
|
{
|
|
readonly ILogger<AppVersionController> _logger;
|
|
readonly IIdentityService _identityService;
|
|
readonly IIdCreatorService _idCreator;
|
|
readonly IMapper _mapper;
|
|
readonly DataContext _dbContext;
|
|
readonly IValidator<AppVersionModel> _validator;
|
|
readonly IStringLocalizer<AppVersionController> _localizer;
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="logger"></param>
|
|
/// <param name="identityService"></param>
|
|
/// <param name="idCreator"></param>
|
|
/// <param name="adminService"></param>
|
|
/// <param name="mapper"></param>
|
|
public AppVersionController(ILogger<AppVersionController> logger, IIdentityService identityService, IIdCreatorService idCreator,
|
|
IMapper mapper, DataContext dataContext, IValidator<AppVersionModel> validator, IStringLocalizer<AppVersionController> stringLocalizer)
|
|
{
|
|
_logger = logger;
|
|
_identityService = identityService;
|
|
_idCreator = idCreator;
|
|
_mapper = mapper;
|
|
_dbContext = dataContext;
|
|
_validator = validator;
|
|
_localizer = stringLocalizer;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 查询接口
|
|
/// </summary>
|
|
/// <param name="search"></param>
|
|
/// <param name="page"></param>
|
|
/// <param name="size"></param>
|
|
/// <returns></returns>
|
|
[HttpPost("search")]
|
|
|
|
public IActionResult Search(AppVersionSearch search, int page, int size = 20)
|
|
{
|
|
var startTime = search.RangeTime[0];
|
|
if (startTime != null)
|
|
{
|
|
search.StartTime = startTime.Value.ConvertStartDateUTCTime();
|
|
}
|
|
try
|
|
{
|
|
var endTime = search.RangeTime[1];
|
|
if (endTime != null)
|
|
{
|
|
search.EndTime = endTime.Value.ConvertEndDateUTCTime();
|
|
}
|
|
}
|
|
catch
|
|
{
|
|
search.EndTime = null;
|
|
}
|
|
|
|
var result = new ApiResult<PagingList<AppVersion>>();
|
|
try
|
|
{
|
|
var pager = new PagingList<AppVersion>() { Size = size, Index = page < 1 ? 1 : page };
|
|
|
|
var query = from p in _dbContext.AppVersions
|
|
select p;
|
|
if (!string.IsNullOrEmpty(search.Name))
|
|
{
|
|
query = from p in query
|
|
where p.AppName.Contains(search.Name)
|
|
select p;
|
|
}
|
|
if (!string.IsNullOrEmpty(search.Status))
|
|
{
|
|
var status = search.Status.ToInt();
|
|
query = from p in query
|
|
where p.Status == status
|
|
select p;
|
|
}
|
|
if (search.StartTime.HasValue)
|
|
{
|
|
query = from p in query
|
|
where p.CreateTime >= search.StartTime.Value.ToUniversalTime()
|
|
select p;
|
|
}
|
|
if (search.EndTime.HasValue)
|
|
{
|
|
query = from p in query
|
|
where p.CreateTime <= search.EndTime.Value.ToUniversalTime()
|
|
select p;
|
|
}
|
|
|
|
pager.Count = query.Count();
|
|
|
|
pager.Items = query.OrderByDescending(p => p.CreateTime).Skip((pager.Index - 1) * size).Take(size).ToList();
|
|
result = result.IsSuccess(pager);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
result = result.IsFail(ex.Message);
|
|
_logger.LogError(ex.Message);
|
|
}
|
|
return new JsonResult(result);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 根据id获取数据
|
|
/// </summary>
|
|
/// <param name="id"></param>
|
|
/// <returns></returns>
|
|
[HttpGet("{id:long}")]
|
|
public IActionResult Get(long id)
|
|
{
|
|
var result = new ApiResult<AppVersion>();
|
|
try
|
|
{
|
|
var data = _dbContext.AppVersions.Where(p => p.Id == id).SingleOrDefault();
|
|
result = result.IsSuccess(data);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
result = result.IsFail(ex.Message);
|
|
_logger.LogError(ex.Message);
|
|
}
|
|
return new JsonResult(result);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 新增数据
|
|
/// </summary>
|
|
/// <param name="model"></param>
|
|
/// <returns></returns>
|
|
[HttpPost("add")]
|
|
public IActionResult Add(AppVersionModel model)
|
|
{
|
|
var result = new ApiResult<string>();
|
|
var validation = _validator.Validate(model);
|
|
if (!validation.IsValid)
|
|
{
|
|
var message = validation.Errors.FirstOrDefault()?.ErrorMessage ?? string.Empty;
|
|
result = result.IsFail(message, null);
|
|
return new JsonResult(result);
|
|
}
|
|
|
|
try
|
|
{
|
|
model.Id = _idCreator.CreateId();
|
|
var data = _mapper.Map<AppVersion>(model);
|
|
data.CreateTime = DateTime.UtcNow;
|
|
|
|
_dbContext.AppVersions.Add(data);
|
|
int count = _dbContext.SaveChanges();
|
|
result = result.IsSuccess(count.ToString());
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
result = result.IsFail(ex.Message);
|
|
_logger.LogError(ex.Message);
|
|
}
|
|
return new JsonResult(result);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 编辑数据
|
|
/// </summary>
|
|
/// <param name="model"></param>
|
|
/// <returns></returns>
|
|
[HttpPost("edit")]
|
|
public IActionResult Edit(AppVersionModel model)
|
|
{
|
|
var result = new ApiResult<string>();
|
|
var validation = _validator.Validate(model);
|
|
if (!validation.IsValid)
|
|
{
|
|
var message = validation.Errors.FirstOrDefault()?.ErrorMessage;
|
|
result = result.IsFail(message ?? string.Empty, null);
|
|
return new JsonResult(result);
|
|
}
|
|
|
|
var data = _dbContext.AppVersions.SingleOrDefault(p => p.Id == model.Id);
|
|
if (data == null)
|
|
{
|
|
result = result.IsFail("数据不存在");
|
|
return new JsonResult(result);
|
|
}
|
|
data = _mapper.Map(model, data);
|
|
data.UpdateTime = DateTime.UtcNow;
|
|
|
|
try
|
|
{
|
|
int count = _dbContext.SaveChanges();
|
|
result = result.IsSuccess(count.ToString());
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
result = result.IsFail(ex.Message);
|
|
_logger.LogError(ex.Message);
|
|
Console.WriteLine(ex.Message);
|
|
}
|
|
return new JsonResult(result);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 删除指定ID的数据
|
|
/// </summary>
|
|
/// <param name="id"></param>
|
|
/// <returns></returns>
|
|
[HttpPost("delete/{id:long}")]
|
|
public IActionResult Delete(long id)
|
|
{
|
|
var result = new ApiResult<string>();
|
|
try
|
|
{
|
|
var count = _dbContext.AppVersions.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);
|
|
}
|
|
|
|
}
|
|
}
|