using System.ComponentModel.DataAnnotations;
using InterfaceForward.Application.Helpers;
using InterfaceForward.Domain.Shared.Dtos;
using InterfaceForward.Domain.Shared.Enum;
using InterfaceForward.Repositories;
using InterfaceForward.Repositories.Parameter.Entities;
using Microsoft.AspNetCore.Mvc;
namespace InterfaceForward.Application.Services.Parameter;
///
/// 表单参数配置
///
[ApiExplorerSettings(GroupName = "参数服务")]
public class FormParameterService : ApplicationService
{
private readonly IBasicRepository _formParameterRepository;
public FormParameterService(IBasicRepository formParameterRepository)
{
_formParameterRepository = formParameterRepository;
}
///
/// 获取参数列表
///
/// 接口id
///
[HttpGet("FormParameter/GetParameterList")]
public async Task> GetParameterListAsync([Required] int interfaceId)
{
var formList = await _formParameterRepository.GetListAsync(x => x.InterfaceId == interfaceId);
return ObjectMapper.Map, List>(formList);
}
///
/// 创建表单参数
///
///
/// 接口id
internal async Task CreateParametersAsync(List list, int interfaceId)
{
var formEntities = ObjectMapper.Map, List>(list);
formEntities.ForEach(x => x.InterfaceId = interfaceId);
await _formParameterRepository.InsertRangeAsync(formEntities);
}
///
/// 维护表单参数 增、删、改
///
///
/// 接口id
internal async Task MaintainParametersAsync(List list, int interfaceId)
{
if (list.Count == 0) return;
using var ts = TransacationHelper.GetReadCommitted();
// 删除
var delIds = list.Where(x => x.OptionType == OptionType.删除)
.Select(x => x.Id);
await _formParameterRepository.SoftDeleteAsync(x => delIds.Contains(x.Id));
// 更新
var updEntities =
ObjectMapper.Map, List>(list
.Where(x => x.OptionType == OptionType.修改).ToList());
await _formParameterRepository.UpdateRangeAsync(updEntities, x => new
{
x.Name, x.Value, x.Description
});
// 创建
await CreateParametersAsync(list.Where(x => x.OptionType == OptionType.新增).ToList()
, interfaceId);
ts.Complete();
}
}