using JNPF.Common.Enums;
using JNPF.DependencyInjection;
using JNPF.DynamicApiController;
using JNPF.FriendlyException;
using JNPF.Systems.Entitys.Dto.ComFields;
using JNPF.Systems.Entitys.System;
using Mapster;
using Microsoft.AspNetCore.Mvc;
using SqlSugar;
namespace JNPF.Systems;
///
/// 常用字段
/// 版 本:V3.2
/// 版 权:拓通智联科技有限公司(http://www.tuotong-tech.com)
/// 日 期:2021-06-01.
///
[ApiDescriptionSettings(Tag = "System", Name = "CommonFields", Order = 201)]
[Route("api/system/[controller]")]
public class ComFieldsService : IDynamicApiController, ITransient
{
///
/// 服务基础仓储.
///
private readonly ISqlSugarRepository _repository;
///
/// 初始化一个类型的新实例.
///
public ComFieldsService(ISqlSugarRepository repository)
{
_repository = repository;
}
#region Get
///
/// 信息.
///
/// 请求参数.
///
[HttpGet("{id}")]
public async Task GetInfo(string id)
{
var data = await _repository.GetFirstAsync(x => x.Id == id && x.DeleteMark == null);
return data.Adapt();
}
///
/// 列表.
///
///
[HttpGet("")]
public async Task GetList()
{
var data = await _repository.AsQueryable().Where(x => x.DeleteMark == null).OrderBy(x => x.SortCode).ToListAsync();
return new { list = data.Adapt>() };
}
#endregion
#region Post
///
/// 新增.
///
/// 请求参数.
///
[HttpPost("")]
public async Task Create([FromBody] ComFieldsCrInput input)
{
if (await _repository.IsAnyAsync(x => x.Field.ToLower() == input.field.ToLower() && x.DeleteMark == null))
throw Oops.Oh(ErrorCode.COM1004);
var entity = input.Adapt();
var isOk = await _repository.AsInsertable(entity).IgnoreColumns(ignoreNullColumn: true).CallEntityMethod(m => m.Creator()).ExecuteCommandAsync();
if (isOk < 1)
throw Oops.Oh(ErrorCode.COM1000);
}
///
/// 删除.
///
/// 主键.
///
[HttpDelete("{id}")]
public async Task Delete(string id)
{
var entity = await _repository.GetFirstAsync(x => x.Id == id && x.DeleteMark == null);
if (entity == null)
throw Oops.Oh(ErrorCode.COM1005);
var isOk = await _repository.AsUpdateable(entity).CallEntityMethod(m => m.Delete()).UpdateColumns(it => new { it.DeleteMark, it.DeleteTime, it.DeleteUserId }).ExecuteCommandHasChangeAsync();
if (!isOk)
throw Oops.Oh(ErrorCode.COM1002);
}
///
/// 修改.
///
/// id.
/// 请求参数.
///
[HttpPut("{id}")]
public async Task Update_Api(string id, [FromBody] ComFieldsUpInput input)
{
if (await _repository.IsAnyAsync(x => x.Id != id && x.Field.ToLower() == input.field.ToLower() && x.DeleteMark == null))
throw Oops.Oh(ErrorCode.COM1004);
var entity = input.Adapt();
var isOk = await _repository.AsUpdateable(entity).IgnoreColumns(ignoreAllNullColumns: true).CallEntityMethod(m => m.LastModify()).ExecuteCommandHasChangeAsync();
if (!isOk)
throw Oops.Oh(ErrorCode.COM1001);
}
#endregion
}