using Apimanager_backend.Data; using Apimanager_backend.Exceptions; using Apimanager_backend.Models; using AutoMapper; using Microsoft.EntityFrameworkCore; namespace Apimanager_backend.Services { public class PaymentConfigService : IPaymentConfigService { private ApiContext _context; private ILogger _logger; private IMapper _mapper; public PaymentConfigService(ApiContext context,ILogger logger,IMapper mapper) { _context = context; _logger = logger; _mapper = mapper; } public async Task AddPaymentAsync(PaymentConfig payment) { bool res = await _context.paymentConfigs.AnyAsync(x => x.PayType == payment.PayType && x.Method == payment.Method); if (res) { throw new BaseException(1006,"该支付方式已存在"); } _context.paymentConfigs.Add(payment); await _context.SaveChangesAsync(); return true; } public async Task> GetAllPaymentAdminAsync() { return await _context.paymentConfigs.ToListAsync(); } public async Task> GetAllPaymentAsync() { var data = await _context.paymentConfigs.Where(x => x.IsEnabled).ToListAsync(); return _mapper.Map>(data); } public Task GetPaymentAdminAsync(PayType payType, PaymentType paymentType) { throw new NotImplementedException(); } public async Task GetPaymentConfigInfoByIdAsync(int id) { var payment = await _context.paymentConfigs.SingleOrDefaultAsync(x => x.Id == id); if(payment is null) { throw new BaseException(1004,"未找到支付接口"); } return payment; } public async Task GetPaymentConfigInfoByTypeAsync(string payType) { if(!Enum.TryParse(payType, true, out PaymentType parsedPayType)) { throw new BaseException(4001, "未配置该支付方式的通道"); } var data = await _context.paymentConfigs.SingleOrDefaultAsync(x => x.Method == parsedPayType); if(data == null) { throw new BaseException(4001, "未配置该支付方式的通道"); } return data; } public async Task UpdatePaymentAsync(PaymentConfig payment) { var paymentConfig = await _context.paymentConfigs.FirstOrDefaultAsync(x => x.Id == payment.Id); if(paymentConfig == null) { _context.paymentConfigs.Add(payment); } else { paymentConfig.AppId = payment.AppId; paymentConfig.SecretKey = payment.SecretKey; paymentConfig.PublicKey = payment.PublicKey; paymentConfig.IsEnabled = payment.IsEnabled; paymentConfig.Url = payment.Url; paymentConfig.Description = payment.Description; paymentConfig.ExtraSettingsJson = payment.ExtraSettingsJson; paymentConfig.GatewayUrl = payment.GatewayUrl; paymentConfig.PayType = payment.PayType; paymentConfig.Method = payment.Method; paymentConfig.NotifyUrl = payment.NotifyUrl; _context.paymentConfigs.Update(paymentConfig); } await _context.SaveChangesAsync(); return true; } } }