80 lines
2.8 KiB
C#
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();
|
|
}
|
|
} |