itfx/src/InterfaceForward.Application/Services/Parameter/FormParameterService.cs

80 lines
2.8 KiB
C#

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;
/// <summary>
/// 表单参数配置
/// </summary>
[ApiExplorerSettings(GroupName = "参数服务")]
public class FormParameterService : ApplicationService
{
private readonly IBasicRepository<FormParameterEntity> _formParameterRepository;
public FormParameterService(IBasicRepository<FormParameterEntity> formParameterRepository)
{
_formParameterRepository = formParameterRepository;
}
/// <summary>
/// 获取参数列表
/// </summary>
/// <param name="interfaceId">接口id</param>
/// <returns></returns>
[HttpGet("FormParameter/GetParameterList")]
public async Task<List<FormParameterItem>> GetParameterListAsync([Required] int interfaceId)
{
var formList = await _formParameterRepository.GetListAsync(x => x.InterfaceId == interfaceId);
return ObjectMapper.Map<List<FormParameterEntity>, List<FormParameterItem>>(formList);
}
/// <summary>
/// 创建表单参数
/// </summary>
/// <param name="list"></param>
/// <param name="interfaceId">接口id</param>
internal async Task CreateParametersAsync(List<FormParameterInput> list, int interfaceId)
{
if (list.Count <= 0) return;
var formEntities = ObjectMapper.Map<List<FormParameterInput>, List<FormParameterEntity>>(list);
formEntities.ForEach(x => x.InterfaceId = interfaceId);
await _formParameterRepository.InsertRangeAsync(formEntities);
}
/// <summary>
/// 维护表单参数 增、删、改
/// </summary>
/// <param name="list"></param>
/// <param name="interfaceId">接口id</param>
internal async Task MaintainParametersAsync(List<FormParameterInput> 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<FormParameterInput>, List<FormParameterEntity>>(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();
}
}