Compare commits
No commits in common. "fba82623af88a0102d0ef3446ef49da2ddd42fdb" and "ce650037db9cac15e181d071de76d647cefc68da" have entirely different histories.
fba82623af
...
ce650037db
@ -16,7 +16,6 @@ namespace Apimanager_backend.Config
|
|||||||
CreateMap<Apipackage, PackageInfoDto>();
|
CreateMap<Apipackage, PackageInfoDto>();
|
||||||
CreateMap<AddPackageDto, Apipackage>();
|
CreateMap<AddPackageDto, Apipackage>();
|
||||||
CreateMap<OrderDto, Order>();
|
CreateMap<OrderDto, Order>();
|
||||||
CreateMap<Order, OrderDto>();
|
|
||||||
CreateMap<PaymentConfig, PaymentConfigDto>();
|
CreateMap<PaymentConfig, PaymentConfigDto>();
|
||||||
CreateMap<EpayResponse, PayReturnData>()
|
CreateMap<EpayResponse, PayReturnData>()
|
||||||
.ForMember(dest => dest.Success, opt => opt.MapFrom(src => src.code == 1))
|
.ForMember(dest => dest.Success, opt => opt.MapFrom(src => src.code == 1))
|
||||||
|
|||||||
@ -31,7 +31,6 @@ namespace Apimanager_backend.Config
|
|||||||
services.AddScoped<ISystemConfigService, SystemConfigService>();
|
services.AddScoped<ISystemConfigService, SystemConfigService>();
|
||||||
services.AddScoped<IPaymentConfigService, PaymentConfigService>();
|
services.AddScoped<IPaymentConfigService, PaymentConfigService>();
|
||||||
services.AddScoped<IPayService, PayService>();
|
services.AddScoped<IPayService, PayService>();
|
||||||
services.AddScoped<ISystemInfoService, SystemInfoService>();
|
|
||||||
services.AddSingleton<ITokenService, TokenService>();
|
services.AddSingleton<ITokenService, TokenService>();
|
||||||
services.AddSingleton<IRefreshTokenService, RefreshTokenService>();
|
services.AddSingleton<IRefreshTokenService, RefreshTokenService>();
|
||||||
services.AddSingleton<IEmailService, EmailService>();
|
services.AddSingleton<IEmailService, EmailService>();
|
||||||
|
|||||||
@ -1,6 +1,5 @@
|
|||||||
using Apimanager_backend.Dtos;
|
using Apimanager_backend.Dtos;
|
||||||
using Apimanager_backend.Exceptions;
|
using Apimanager_backend.Exceptions;
|
||||||
using Apimanager_backend.Models;
|
|
||||||
using Apimanager_backend.Services;
|
using Apimanager_backend.Services;
|
||||||
using Microsoft.AspNetCore.Authorization;
|
using Microsoft.AspNetCore.Authorization;
|
||||||
using Microsoft.AspNetCore.Http;
|
using Microsoft.AspNetCore.Http;
|
||||||
@ -48,7 +47,7 @@ namespace Apimanager_backend.Controllers
|
|||||||
#endregion
|
#endregion
|
||||||
#region 查询API列表
|
#region 查询API列表
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
[Authorize(Roles = "User")]
|
//[Authorize(Roles = "User")]
|
||||||
public async Task<ActionResult<ResponseBase<List<ApiInfoDto>>>> ApiList(int pageIndex,int pageSize,bool desc)
|
public async Task<ActionResult<ResponseBase<List<ApiInfoDto>>>> ApiList(int pageIndex,int pageSize,bool desc)
|
||||||
{
|
{
|
||||||
var list = await apiService.GetApisAsync(pageIndex, pageSize, desc);
|
var list = await apiService.GetApisAsync(pageIndex, pageSize, desc);
|
||||||
@ -176,23 +175,5 @@ namespace Apimanager_backend.Controllers
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
#region 查询API列表(公开)
|
|
||||||
[HttpGet]
|
|
||||||
public async Task<IActionResult> GetApisPublic(int pageIndex,int pageSize,bool desc)
|
|
||||||
{
|
|
||||||
var list = await apiService.GetUserApisAsync(pageIndex, pageSize, desc);
|
|
||||||
var res = new ResponseBase<List<ApiInfoDto>>(1000,"查询成功",list);
|
|
||||||
return Ok(res);
|
|
||||||
}
|
|
||||||
#endregion
|
|
||||||
#region 获取API所属套餐
|
|
||||||
[HttpGet]
|
|
||||||
public async Task<IActionResult> GetApiPackages(int[] apiId)
|
|
||||||
{
|
|
||||||
var list = await apiService.GetApipackageAsync(apiId);
|
|
||||||
var res = new ResponseBase<List<Apipackage>>(1000,"查询成功",list);
|
|
||||||
return Ok(res);
|
|
||||||
}
|
|
||||||
#endregion
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,7 +6,7 @@ using Microsoft.AspNetCore.Mvc;
|
|||||||
|
|
||||||
namespace Apimanager_backend.Controllers
|
namespace Apimanager_backend.Controllers
|
||||||
{
|
{
|
||||||
[Route("api/[controller]/[action]")]
|
[Route("api/[controller][action]")]
|
||||||
[ApiController]
|
[ApiController]
|
||||||
public class OrderController:ControllerBase
|
public class OrderController:ControllerBase
|
||||||
{
|
{
|
||||||
@ -44,23 +44,5 @@ namespace Apimanager_backend.Controllers
|
|||||||
);
|
);
|
||||||
return Ok(responseData);
|
return Ok(responseData);
|
||||||
}
|
}
|
||||||
//获取订单数量
|
|
||||||
[HttpGet]
|
|
||||||
[Authorize(Roles = "Admin")]
|
|
||||||
public async Task<ActionResult<ResponseBase<int>>> GetOrderNum()
|
|
||||||
{
|
|
||||||
var num = await _orderService.GetOrderNumAsync();
|
|
||||||
var res = new ResponseBase<int>(1000,"查询成功",num);
|
|
||||||
return Ok(res);
|
|
||||||
}
|
|
||||||
[HttpGet]
|
|
||||||
[Authorize(Roles = "User")]
|
|
||||||
public async Task<ActionResult<ResponseBase<int>>> GetMyOrderNum()
|
|
||||||
{
|
|
||||||
string userId = User.Claims.First(x => x.Type == "userId").Value;
|
|
||||||
var num = await _orderService.GetOrderNumAsync(int.Parse(userId));
|
|
||||||
var res = new ResponseBase<int>(1000, "查询成功", num);
|
|
||||||
return Ok(res);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -169,13 +169,5 @@ namespace Apimanager_backend.Controllers
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
[HttpPost]
|
|
||||||
[Authorize(Roles = "Admin")]
|
|
||||||
public async Task<IActionResult> SetApiPackageItem(ApiPackageItem apiPackageItem)
|
|
||||||
{
|
|
||||||
await packageService.SetApiPackageItemAsync(apiPackageItem.ApiId,apiPackageItem.ApiPackageId);
|
|
||||||
var res = new ResponseBase<object?>(1000,"操作成功",null);
|
|
||||||
return Ok(res);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -31,13 +31,13 @@ namespace Apimanager_backend.Controllers
|
|||||||
{
|
{
|
||||||
var userId = User.Claims.First(x => x.Type == "userId").Value;
|
var userId = User.Claims.First(x => x.Type == "userId").Value;
|
||||||
//获取支付接口信息
|
//获取支付接口信息
|
||||||
var paymentConfig = await _paymentService.GetPaymentConfigInfoByIdAsync(dto.Id);
|
var paymentConfig = await _paymentService.GetPaymentConfigInfoByTypeAsync(dto.PaymentType.ToString());
|
||||||
//创建订单
|
//创建订单
|
||||||
OrderDto order = new OrderDto();
|
OrderDto order = new OrderDto();
|
||||||
order.Amount = dto.Amount;
|
order.Amount = dto.Amount;
|
||||||
order.OrderType = OrderType.Recharge;
|
order.OrderType = OrderType.Purchase;
|
||||||
order.UserId = int.Parse(userId);
|
order.UserId = int.Parse(userId);
|
||||||
order.PaymentType = paymentConfig.Method;
|
order.PaymentType = dto.PaymentType;
|
||||||
Order orderRes = await _orderService.CreateOrderAsync(order);
|
Order orderRes = await _orderService.CreateOrderAsync(order);
|
||||||
switch (paymentConfig.PayType)
|
switch (paymentConfig.PayType)
|
||||||
{
|
{
|
||||||
@ -93,6 +93,5 @@ namespace Apimanager_backend.Controllers
|
|||||||
return Ok(res);
|
return Ok(res);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,54 +0,0 @@
|
|||||||
using Apimanager_backend.Dtos;
|
|
||||||
using Apimanager_backend.Models;
|
|
||||||
using Apimanager_backend.Services;
|
|
||||||
using Microsoft.AspNetCore.Authorization;
|
|
||||||
using Microsoft.AspNetCore.Http;
|
|
||||||
using Microsoft.AspNetCore.Mvc;
|
|
||||||
|
|
||||||
namespace Apimanager_backend.Controllers
|
|
||||||
{
|
|
||||||
[Route("api/[controller]/[action]")]
|
|
||||||
[ApiController]
|
|
||||||
public class PaymentController : ControllerBase
|
|
||||||
{
|
|
||||||
private IPaymentConfigService _paymentService;
|
|
||||||
private ILogger<PaymentController> _logger;
|
|
||||||
public PaymentController(IPaymentConfigService paymentConfig, ILogger<PaymentController> logger)
|
|
||||||
{
|
|
||||||
_paymentService = paymentConfig;
|
|
||||||
_logger = logger;
|
|
||||||
}
|
|
||||||
[HttpPost]
|
|
||||||
[Authorize(Roles = "Admin")]
|
|
||||||
public async Task<IActionResult> AddPayment(PaymentConfig payment)
|
|
||||||
{
|
|
||||||
await _paymentService.AddPaymentAsync(payment);
|
|
||||||
var res = new ResponseBase<object?>(1000,"添加成功",null);
|
|
||||||
return Ok(res);
|
|
||||||
}
|
|
||||||
[HttpPost]
|
|
||||||
[Authorize(Roles = "Admin")]
|
|
||||||
public async Task<IActionResult> UpdatePayment(PaymentConfig payment)
|
|
||||||
{
|
|
||||||
await _paymentService.UpdatePaymentAsync(payment);
|
|
||||||
var res = new ResponseBase<object?>(1000,"修改成功",null);
|
|
||||||
return Ok(res);
|
|
||||||
}
|
|
||||||
[HttpGet]
|
|
||||||
[Authorize(Roles = "Admin")]
|
|
||||||
public async Task<IActionResult> GetAllPayment()
|
|
||||||
{
|
|
||||||
var list = await _paymentService.GetAllPaymentAdminAsync();
|
|
||||||
var res = new ResponseBase<List<PaymentConfig>>(1000,"查询成功",list);
|
|
||||||
return Ok(res);
|
|
||||||
}
|
|
||||||
[HttpGet]
|
|
||||||
[Authorize(Roles = "User")]
|
|
||||||
public async Task<IActionResult> GetAllPublicPayment()
|
|
||||||
{
|
|
||||||
var list = await _paymentService.GetAllPaymentAsync();
|
|
||||||
var res = new ResponseBase<List<PaymentConfigDto>>(1000, "查询成功", list);
|
|
||||||
return Ok(res);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,27 +0,0 @@
|
|||||||
using Apimanager_backend.Dtos;
|
|
||||||
using Apimanager_backend.Services;
|
|
||||||
using Microsoft.AspNetCore.Authorization;
|
|
||||||
using Microsoft.AspNetCore.Http;
|
|
||||||
using Microsoft.AspNetCore.Mvc;
|
|
||||||
|
|
||||||
namespace Apimanager_backend.Controllers
|
|
||||||
{
|
|
||||||
[Route("api/[controller]/[action]")]
|
|
||||||
[ApiController]
|
|
||||||
public class SystemInfoController : ControllerBase
|
|
||||||
{
|
|
||||||
private readonly ISystemInfoService _systemInfoService;
|
|
||||||
public SystemInfoController(ISystemInfoService systemInfoService)
|
|
||||||
{
|
|
||||||
_systemInfoService = systemInfoService;
|
|
||||||
}
|
|
||||||
[HttpGet]
|
|
||||||
[Authorize(Roles = "Admin")]
|
|
||||||
public async Task<IActionResult> GetInfo()
|
|
||||||
{
|
|
||||||
var info = await _systemInfoService.GetSystemInfoAsync();
|
|
||||||
var res = new ResponseBase<SystemInfoDto>(1000,"查询成功",info);
|
|
||||||
return Ok(res);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -198,7 +198,7 @@ namespace Apimanager_backend.Controllers
|
|||||||
// 9. 返回成功响应
|
// 9. 返回成功响应
|
||||||
return Ok(new ResponseBase<object>(1000, "favicon上传成功", null));
|
return Ok(new ResponseBase<object>(1000, "favicon上传成功", null));
|
||||||
}
|
}
|
||||||
catch (Exception ex) when (!(ex is BaseException))
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
_logger.LogError(ex, "Favicon上传失败");
|
_logger.LogError(ex, "Favicon上传失败");
|
||||||
throw new BaseException(1004, "Favicon上传失败");
|
throw new BaseException(1004, "Favicon上传失败");
|
||||||
|
|||||||
@ -15,11 +15,9 @@ namespace Apimanager_backend.Controllers
|
|||||||
public class UserController : ControllerBase
|
public class UserController : ControllerBase
|
||||||
{
|
{
|
||||||
private readonly IUserService userService;
|
private readonly IUserService userService;
|
||||||
private readonly IUserPackageService _userPackageService;
|
public UserController(IUserService userService)
|
||||||
public UserController(IUserService userService,IUserPackageService userPackageService)
|
|
||||||
{
|
{
|
||||||
this.userService = userService;
|
this.userService = userService;
|
||||||
this._userPackageService = userPackageService;
|
|
||||||
}
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取用户个人信息
|
/// 获取用户个人信息
|
||||||
@ -32,9 +30,9 @@ namespace Apimanager_backend.Controllers
|
|||||||
var userId = User.Claims.First(x => x.Type == "userId").Value;
|
var userId = User.Claims.First(x => x.Type == "userId").Value;
|
||||||
var userInfo = await userService.GetUserAsync(int.Parse(userId));
|
var userInfo = await userService.GetUserAsync(int.Parse(userId));
|
||||||
var res = new ResponseBase<UserInfoDto>(
|
var res = new ResponseBase<UserInfoDto>(
|
||||||
code: 1000,
|
code:1000,
|
||||||
message: "Success",
|
message:"Success",
|
||||||
data: userInfo
|
data:userInfo
|
||||||
);
|
);
|
||||||
return Ok(res);
|
return Ok(res);
|
||||||
}
|
}
|
||||||
@ -44,29 +42,29 @@ namespace Apimanager_backend.Controllers
|
|||||||
/// <param name="dto"></param>
|
/// <param name="dto"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public async Task<ActionResult<ResponseBase<object?>>> Resetpassword([FromBody] ResetPasswordDto dto)
|
public async Task<ActionResult<ResponseBase<object?>>> Resetpassword([FromBody]ResetPasswordDto dto)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
await userService.ResetPasswordAsync(dto.Email, dto.Code, dto.NewPassword);
|
await userService.ResetPasswordAsync(dto.Email, dto.Code, dto.NewPassword);
|
||||||
var res = new ResponseBase<object?>(
|
var res = new ResponseBase<object?>(
|
||||||
code: 1000,
|
code:1000,
|
||||||
message: "Success",
|
message:"Success",
|
||||||
data: null
|
data: null
|
||||||
);
|
);
|
||||||
return Ok(res);
|
return Ok(res);
|
||||||
} catch (BaseException e)
|
}catch(BaseException e)
|
||||||
{
|
{
|
||||||
var res = new ResponseBase<object?>(
|
var res = new ResponseBase<object?>(
|
||||||
code: e.code,
|
code:e.code,
|
||||||
message: e.message,
|
message:e.message,
|
||||||
data: null
|
data:null
|
||||||
);
|
);
|
||||||
return StatusCode(400, res);
|
return StatusCode(400,res);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public async Task<ActionResult<ResponseBase<object?>>> SendResetEmail([FromQuery] string email)
|
public async Task<ActionResult<ResponseBase<object?>>> SendResetEmail([FromQuery]string email)
|
||||||
{
|
{
|
||||||
await userService.SendResetPasswordEmailAsync(email);
|
await userService.SendResetPasswordEmailAsync(email);
|
||||||
var res = new ResponseBase<object?>(
|
var res = new ResponseBase<object?>(
|
||||||
@ -78,37 +76,16 @@ namespace Apimanager_backend.Controllers
|
|||||||
}
|
}
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
[Authorize(Roles = "User")]
|
[Authorize(Roles = "User")]
|
||||||
public async Task<ActionResult<ResponseBase<UserInfoDto?>>> Update([FromBody] UpdateUserDto dto)
|
public async Task<ActionResult<ResponseBase<UserInfoDto?>>> Update([FromBody]UpdateUserDto dto)
|
||||||
{
|
{
|
||||||
var userId = User.Claims.First(x => x.Type == "userId").Value;
|
var userId = User.Claims.First(x => x.Type == "userId").Value;
|
||||||
var userInfo = await userService.UpdateUserAsync(int.Parse(userId), dto);
|
var userInfo = await userService.UpdateUserAsync(int.Parse(userId),dto);
|
||||||
var res = new ResponseBase<object?>(
|
var res = new ResponseBase<object?>(
|
||||||
code: 1000,
|
code:1000,
|
||||||
message: "Success",
|
message:"Success",
|
||||||
data: userInfo
|
data:userInfo
|
||||||
);
|
);
|
||||||
return Ok(res);
|
return Ok(res);
|
||||||
}
|
}
|
||||||
//设置用户apikey
|
|
||||||
[HttpPost]
|
|
||||||
[Authorize(Roles = "User")]
|
|
||||||
public async Task<IActionResult> SetApiKey()
|
|
||||||
{
|
|
||||||
var userId = User.Claims.First(x => x.Type == "userId").Value;
|
|
||||||
var key = await userService.SetUserTokenAsync(int.Parse(userId));
|
|
||||||
var res = new ResponseBase<string>(1000, "操作成功", key);
|
|
||||||
return Ok(res);
|
|
||||||
}
|
|
||||||
//获取已订购套餐
|
|
||||||
[HttpGet]
|
|
||||||
[Authorize(Roles = "User")]
|
|
||||||
public async Task<IActionResult> GetUserPackages()
|
|
||||||
{
|
|
||||||
var userId = User.Claims.First(x => x.Type == "userId").Value;
|
|
||||||
var list = await _userPackageService.GetUserPackagesByUserIdAsync(int.Parse(userId));
|
|
||||||
var res = new ResponseBase<List<UserPackage>>(1000,"查询成功",list);
|
|
||||||
return Ok(res);
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -13,6 +13,5 @@ namespace Apimanager_backend.Dtos
|
|||||||
public bool IsActive { get; set; }
|
public bool IsActive { get; set; }
|
||||||
public Apipackage? Package { get; set; }
|
public Apipackage? Package { get; set; }
|
||||||
public int? PackageId { get; set; }
|
public int? PackageId { get; set; }
|
||||||
public List<ApiRequestExample>? ApiRequestExamples { get; set; }
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5,7 +5,6 @@ namespace Apimanager_backend.Dtos
|
|||||||
{
|
{
|
||||||
public class CreatePaymentDto
|
public class CreatePaymentDto
|
||||||
{
|
{
|
||||||
public int Id { get; set; }
|
|
||||||
public PaymentType PaymentType { get; set; }
|
public PaymentType PaymentType { get; set; }
|
||||||
[Required]
|
[Required]
|
||||||
public decimal Amount { get; set; }
|
public decimal Amount { get; set; }
|
||||||
|
|||||||
@ -41,6 +41,5 @@ namespace Apimanager_backend.Dtos
|
|||||||
public string? Description { get; set; } // varchar(255)
|
public string? Description { get; set; } // varchar(255)
|
||||||
|
|
||||||
public OrderStatus Status { get; set; }
|
public OrderStatus Status { get; set; }
|
||||||
public User? User { get; set; }
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,6 +1,4 @@
|
|||||||
using Apimanager_backend.Models;
|
namespace Apimanager_backend.Dtos
|
||||||
|
|
||||||
namespace Apimanager_backend.Dtos
|
|
||||||
{
|
{
|
||||||
public class PackageInfoDto
|
public class PackageInfoDto
|
||||||
{
|
{
|
||||||
@ -9,7 +7,6 @@ namespace Apimanager_backend.Dtos
|
|||||||
public int CallLimit { get; set; }
|
public int CallLimit { get; set; }
|
||||||
public decimal Price { get; set; }
|
public decimal Price { get; set; }
|
||||||
public int OneMinuteLimit { get; set; }
|
public int OneMinuteLimit { get; set; }
|
||||||
public ICollection<ApiPackageItem> ApiPackageItems { get; set; }
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,22 +0,0 @@
|
|||||||
using Apimanager_backend.Models;
|
|
||||||
using System.ComponentModel.DataAnnotations;
|
|
||||||
|
|
||||||
namespace Apimanager_backend.Dtos
|
|
||||||
{
|
|
||||||
public class PaymentDto
|
|
||||||
{
|
|
||||||
public int Id { get; set; }
|
|
||||||
|
|
||||||
/// <summary>支付方式(如 Alipay、WeChat、Stripe...)</summary>
|
|
||||||
[Required]
|
|
||||||
public PaymentType Method { get; set; } // varchar(50)
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>是否启用此配置</summary>
|
|
||||||
public bool IsEnabled { get; set; } = true;
|
|
||||||
|
|
||||||
/// <summary>备注</summary>
|
|
||||||
public string? Description { get; set; }
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,12 +0,0 @@
|
|||||||
namespace Apimanager_backend.Dtos
|
|
||||||
{
|
|
||||||
public class SystemInfoDto
|
|
||||||
{
|
|
||||||
public int UserCount { get; set; }
|
|
||||||
public int OrderCount { get; set; }
|
|
||||||
public int CallCount { get; set; }
|
|
||||||
public decimal Money { get; set; }
|
|
||||||
public List<UserInfoDto> RecentUser { get; set; }
|
|
||||||
public List<OrderDto> RecentOrder { get; set; }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -12,7 +12,6 @@ namespace Apimanager_backend.Dtos
|
|||||||
public decimal Balance { get; set; }
|
public decimal Balance { get; set; }
|
||||||
public string? Avatar { get; set; }
|
public string? Avatar { get; set; }
|
||||||
public DateTime Created { get; set; }
|
public DateTime Created { get; set; }
|
||||||
public string? ApiKey { get; set; }
|
|
||||||
public List<UserPackage>? Packages { get; set; }
|
public List<UserPackage>? Packages { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -8,11 +8,6 @@ namespace Apimanager_backend.Filters.ExceptionFilter
|
|||||||
{
|
{
|
||||||
public class generalExceptionFilter : IExceptionFilter
|
public class generalExceptionFilter : IExceptionFilter
|
||||||
{
|
{
|
||||||
private ILogger<generalExceptionFilter> _logger;
|
|
||||||
public generalExceptionFilter(ILogger<generalExceptionFilter> logger)
|
|
||||||
{
|
|
||||||
_logger = logger;
|
|
||||||
}
|
|
||||||
public void OnException(ExceptionContext context)
|
public void OnException(ExceptionContext context)
|
||||||
{
|
{
|
||||||
if(context.Exception is BaseException)
|
if(context.Exception is BaseException)
|
||||||
@ -30,20 +25,6 @@ namespace Apimanager_backend.Filters.ExceptionFilter
|
|||||||
};
|
};
|
||||||
context.ExceptionHandled = true;
|
context.ExceptionHandled = true;
|
||||||
}
|
}
|
||||||
if(context.Exception is Exception ex)
|
|
||||||
{
|
|
||||||
_logger.LogError(ex, "系统未处理异常:{Message}", ex.Message);
|
|
||||||
var res = new ResponseBase<object?>(
|
|
||||||
code: 1005,
|
|
||||||
message: "服务器内部错误,请联系管理员。",
|
|
||||||
data: null
|
|
||||||
);
|
|
||||||
context.Result = new JsonResult(res)
|
|
||||||
{
|
|
||||||
StatusCode = 500
|
|
||||||
};
|
|
||||||
context.ExceptionHandled = true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,6 +1,5 @@
|
|||||||
using Apimanager_backend.Data;
|
using Apimanager_backend.Data;
|
||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
using System.Text.Json.Serialization;
|
|
||||||
|
|
||||||
namespace Apimanager_backend.Models
|
namespace Apimanager_backend.Models
|
||||||
{
|
{
|
||||||
@ -58,13 +57,9 @@ namespace Apimanager_backend.Models
|
|||||||
public DateTime CreatedAt { get; set; } = DateTime.UtcNow; // timestamp
|
public DateTime CreatedAt { get; set; } = DateTime.UtcNow; // timestamp
|
||||||
|
|
||||||
//导航属性
|
//导航属性
|
||||||
[JsonIgnore]
|
|
||||||
public Apipackage? Package { get; set; }
|
public Apipackage? Package { get; set; }
|
||||||
[JsonIgnore]
|
public ICollection<ApiPackageItem> ApiPackageItems { get; set; }
|
||||||
public ICollection<ApiPackageItem>? ApiPackageItems { get; set; }
|
public ICollection<ApiCallLog> ApiCalls { get; set; }
|
||||||
[JsonIgnore]
|
public ICollection<ApiRequestExample> ApiRequestExamples { get; set; }
|
||||||
public ICollection<ApiCallLog>? ApiCalls { get; set; }
|
|
||||||
[JsonIgnore]
|
|
||||||
public ICollection<ApiRequestExample>? ApiRequestExamples { get; set; }
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,5 +1,4 @@
|
|||||||
using System.ComponentModel.DataAnnotations.Schema;
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
using System.Text.Json.Serialization;
|
|
||||||
|
|
||||||
namespace Apimanager_backend.Models
|
namespace Apimanager_backend.Models
|
||||||
{
|
{
|
||||||
@ -9,10 +8,9 @@ namespace Apimanager_backend.Models
|
|||||||
public int Id { get; set; }
|
public int Id { get; set; }
|
||||||
|
|
||||||
public int ApiPackageId { get; set; }
|
public int ApiPackageId { get; set; }
|
||||||
[JsonIgnore]
|
public Apipackage ApiPackage { get; set; } = null!;
|
||||||
public Apipackage? ApiPackage { get; set; } = null!;
|
|
||||||
|
|
||||||
public int ApiId { get; set; }
|
public int ApiId { get; set; }
|
||||||
public Api? Api { get; set; } = null!;
|
public Api Api { get; set; } = null!;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,6 +1,5 @@
|
|||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
using System.Text.Json.Serialization;
|
|
||||||
|
|
||||||
namespace Apimanager_backend.Models
|
namespace Apimanager_backend.Models
|
||||||
{
|
{
|
||||||
@ -46,7 +45,6 @@ namespace Apimanager_backend.Models
|
|||||||
//导航属性
|
//导航属性
|
||||||
public ICollection<Api> Apis { get; set; }
|
public ICollection<Api> Apis { get; set; }
|
||||||
public ICollection<ApiPackageItem> ApiPackageItems { get; set; }
|
public ICollection<ApiPackageItem> ApiPackageItems { get; set; }
|
||||||
[JsonIgnore]
|
|
||||||
public ICollection<UserPackage> Packages { get; set; }
|
public ICollection<UserPackage> Packages { get; set; }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,8 +2,8 @@
|
|||||||
{
|
{
|
||||||
public enum OrderType
|
public enum OrderType
|
||||||
{
|
{
|
||||||
Purchase = 0,
|
Recharge,
|
||||||
Recharge = 1,
|
Purchase,
|
||||||
Refund = 2
|
Refund
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5,7 +5,6 @@
|
|||||||
AliPay = 0,
|
AliPay = 0,
|
||||||
WxPay = 1,
|
WxPay = 1,
|
||||||
Bank = 2,
|
Bank = 2,
|
||||||
QQPay =3,
|
QQPay =3
|
||||||
balance = 4
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,5 +1,4 @@
|
|||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
using System.Text.Json.Serialization;
|
|
||||||
|
|
||||||
namespace Apimanager_backend.Models
|
namespace Apimanager_backend.Models
|
||||||
{
|
{
|
||||||
@ -58,12 +57,9 @@ namespace Apimanager_backend.Models
|
|||||||
public DateTime CreatedAt { get; set; } = DateTime.UtcNow; // Timestamp
|
public DateTime CreatedAt { get; set; } = DateTime.UtcNow; // Timestamp
|
||||||
|
|
||||||
//导航属性
|
//导航属性
|
||||||
[JsonIgnore]
|
|
||||||
public ICollection<UserPackage> Packages { get; set; }
|
public ICollection<UserPackage> Packages { get; set; }
|
||||||
[JsonIgnore]
|
|
||||||
public ICollection<OperationLog> operationLogs { get; set; }
|
public ICollection<OperationLog> operationLogs { get; set; }
|
||||||
public ICollection<ApiCallLog> CallLogs { get; set; }
|
public ICollection<ApiCallLog> CallLogs { get; set; }
|
||||||
[JsonIgnore]
|
|
||||||
public ICollection<Order> Orders { get; set; }
|
public ICollection<Order> Orders { get; set; }
|
||||||
public ICollection<UserRole> Roles { get; set; } = new List<UserRole>();
|
public ICollection<UserRole> Roles { get; set; } = new List<UserRole>();
|
||||||
public User(int id,string username,string email,string passHash)
|
public User(int id,string username,string email,string passHash)
|
||||||
|
|||||||
@ -1,6 +1,4 @@
|
|||||||
using System.Text.Json.Serialization;
|
namespace Apimanager_backend.Models
|
||||||
|
|
||||||
namespace Apimanager_backend.Models
|
|
||||||
{
|
{
|
||||||
public class UserPackage
|
public class UserPackage
|
||||||
{/// <summary>
|
{/// <summary>
|
||||||
|
|||||||
@ -127,30 +127,5 @@ namespace Apimanager_backend.Services
|
|||||||
return mapper.Map<ApiInfoDto>(apiInfo);
|
return mapper.Map<ApiInfoDto>(apiInfo);
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
#region 获取用于用户展示的api列表
|
|
||||||
public async Task<List<ApiInfoDto>> GetUserApisAsync(int pageIndex, int pageSize, bool desc)
|
|
||||||
{
|
|
||||||
IQueryable<Api> query = context.Apis.Include(x => x.ApiRequestExamples).AsQueryable();
|
|
||||||
//倒序
|
|
||||||
if (desc)
|
|
||||||
{
|
|
||||||
query.OrderDescending();
|
|
||||||
}
|
|
||||||
//分页
|
|
||||||
query = query.Skip((pageIndex - 1) * pageSize).Take(pageSize);
|
|
||||||
return mapper.Map<List<ApiInfoDto>>(await query.ToListAsync());
|
|
||||||
}
|
|
||||||
#endregion
|
|
||||||
#region 获取API对应的套餐
|
|
||||||
public async Task<List<Apipackage>> GetApipackageAsync(int[] apiId)
|
|
||||||
{
|
|
||||||
if(apiId.Count() == 0)
|
|
||||||
{
|
|
||||||
throw new BaseException(1004,"id不能为空");
|
|
||||||
}
|
|
||||||
var packageItems = await context.apiPackageItems.Include(x => x.ApiPackage).Where(x => apiId.Contains(x.ApiId)).ToListAsync();
|
|
||||||
return packageItems.Select(x => x.ApiPackage).ToList();
|
|
||||||
}
|
|
||||||
#endregion
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5,6 +5,6 @@ namespace Apimanager_backend.Services
|
|||||||
{
|
{
|
||||||
public interface IApiPackageItemService
|
public interface IApiPackageItemService
|
||||||
{
|
{
|
||||||
public Task<List<ApiPackageItem>> GetApiPackageItemsByApiIdAsync(int ApiId);
|
Task<List<ApiPackageItem>> GetApiPackageItemsByApiIdAsync(int ApiId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,5 +1,4 @@
|
|||||||
using Apimanager_backend.Dtos;
|
using Apimanager_backend.Dtos;
|
||||||
using Apimanager_backend.Models;
|
|
||||||
|
|
||||||
namespace Apimanager_backend.Services
|
namespace Apimanager_backend.Services
|
||||||
{
|
{
|
||||||
@ -62,15 +61,6 @@ namespace Apimanager_backend.Services
|
|||||||
/// <param name="endpoint">api路径</param>
|
/// <param name="endpoint">api路径</param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public Task<ApiInfoDto> GetApiInfoByEndpointAsync(string endpoint);
|
public Task<ApiInfoDto> GetApiInfoByEndpointAsync(string endpoint);
|
||||||
/// <summary>
|
|
||||||
/// 获取用于用户展示的api列表
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="pageIndex"></param>
|
|
||||||
/// <param name="pageSize"></param>
|
|
||||||
/// <param name="desc"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
|
|
||||||
public Task<List<ApiInfoDto>> GetUserApisAsync(int pageIndex, int pageSize, bool desc);
|
|
||||||
public Task<List<Apipackage>> GetApipackageAsync(int[] apiId);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -20,6 +20,5 @@ namespace Apimanager_backend.Services
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
Task<Order> CreateOrderAsync(OrderDto order);
|
Task<Order> CreateOrderAsync(OrderDto order);
|
||||||
Task<bool> UpdateOrderAsync(OrderDto order);
|
Task<bool> UpdateOrderAsync(OrderDto order);
|
||||||
Task<int> GetOrderNumAsync(int? userId = null);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -59,7 +59,6 @@ namespace Apimanager_backend.Services
|
|||||||
/// <param name="time"></param>
|
/// <param name="time"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public Task<UserPackage> DecuteUserPackageTimeAsync(int packageId,int userId,TimeSpan time);
|
public Task<UserPackage> DecuteUserPackageTimeAsync(int packageId,int userId,TimeSpan time);
|
||||||
Task<bool> SetApiPackageItemAsync(int apiId,int packageId);
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5,11 +5,6 @@ namespace Apimanager_backend.Services
|
|||||||
public interface IPaymentConfigService
|
public interface IPaymentConfigService
|
||||||
{
|
{
|
||||||
Task<PaymentConfig> GetPaymentConfigInfoByTypeAsync(string payType);
|
Task<PaymentConfig> GetPaymentConfigInfoByTypeAsync(string payType);
|
||||||
Task<PaymentConfig> GetPaymentConfigInfoByIdAsync(int id);
|
|
||||||
Task<PaymentConfig> GetPaymentAdminAsync(PayType payType, PaymentType paymentType);
|
|
||||||
Task<List<PaymentConfigDto>> GetAllPaymentAsync();
|
Task<List<PaymentConfigDto>> GetAllPaymentAsync();
|
||||||
Task<List<PaymentConfig>> GetAllPaymentAdminAsync();
|
|
||||||
Task<bool> AddPaymentAsync(PaymentConfig payment);
|
|
||||||
Task<bool> UpdatePaymentAsync(PaymentConfig payment);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,9 +0,0 @@
|
|||||||
using Apimanager_backend.Dtos;
|
|
||||||
|
|
||||||
namespace Apimanager_backend.Services
|
|
||||||
{
|
|
||||||
public interface ISystemInfoService
|
|
||||||
{
|
|
||||||
Task<SystemInfoDto> GetSystemInfoAsync();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -60,11 +60,5 @@ namespace Apimanager_backend.Services
|
|||||||
/// <param name="url"></param>
|
/// <param name="url"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
Task<bool> UpdateUserAvatarAsync(int userId,string url);
|
Task<bool> UpdateUserAvatarAsync(int userId,string url);
|
||||||
/// <summary>
|
|
||||||
/// 设置用户调用凭证
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="userId"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
Task<string> SetUserTokenAsync(int userId);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -49,29 +49,6 @@ namespace Apimanager_backend.Services
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
public async Task<int> GetOrderNumAsync(int? userId = null)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
int num = 0;
|
|
||||||
if (userId != null)
|
|
||||||
{
|
|
||||||
num = await _apiContext.Orders.CountAsync(x => x.UserId == userId);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
num = await _apiContext.Orders.CountAsync();
|
|
||||||
}
|
|
||||||
return num;
|
|
||||||
}catch(Exception e)
|
|
||||||
{
|
|
||||||
logger.LogError(e, "查询订单数量:{Message}", e.Message);
|
|
||||||
throw new BaseException(1005,"服务器内部错误");
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#region 获取订单列表
|
#region 获取订单列表
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取订单列表
|
/// 获取订单列表
|
||||||
@ -83,10 +60,10 @@ namespace Apimanager_backend.Services
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public async Task<List<Order>> GetOrdersAsync(int pageIndex, int pageSize, bool desc, int? userId)
|
public async Task<List<Order>> GetOrdersAsync(int pageIndex, int pageSize, bool desc, int? userId)
|
||||||
{
|
{
|
||||||
IQueryable<Order> query = _apiContext.Orders.Include(x => x.User).AsQueryable().OrderBy(x => x.Id);
|
IQueryable<Order> query = _apiContext.Orders.AsQueryable().OrderBy(x => x.Id);
|
||||||
if(userId != null)
|
if(userId != null)
|
||||||
{
|
{
|
||||||
query = query.Where(x => x.UserId == userId);
|
query.Where(x => x.UserId == userId);
|
||||||
}
|
}
|
||||||
//倒序
|
//倒序
|
||||||
if (desc)
|
if (desc)
|
||||||
@ -113,12 +90,12 @@ namespace Apimanager_backend.Services
|
|||||||
data.UpdatedAt = DateTime.Now;
|
data.UpdatedAt = DateTime.Now;
|
||||||
data.Status = order.Status;
|
data.Status = order.Status;
|
||||||
data.PaiAt = order.Status == OrderStatus.Completed ? DateTime.Now : null;
|
data.PaiAt = order.Status == OrderStatus.Completed ? DateTime.Now : null;
|
||||||
var user = await _apiContext.Users.FirstOrDefaultAsync(x => x.Id == data.UserId);
|
var user = await _apiContext.Users.FirstOrDefaultAsync(x => x.Id == order.UserId);
|
||||||
if (user == null)
|
if (user == null)
|
||||||
{
|
{
|
||||||
throw new BaseException(2004, "用户未找到");
|
throw new BaseException(2004, "用户未找到");
|
||||||
}
|
}
|
||||||
user.Balance += data.Amount;
|
user.Balance += order.Amount;
|
||||||
_apiContext.Orders.Update(data);
|
_apiContext.Orders.Update(data);
|
||||||
_apiContext.Users.Update(user);
|
_apiContext.Users.Update(user);
|
||||||
await _apiContext.SaveChangesAsync();
|
await _apiContext.SaveChangesAsync();
|
||||||
|
|||||||
@ -139,7 +139,7 @@ namespace Apimanager_backend.Services
|
|||||||
#region 获取套餐列表
|
#region 获取套餐列表
|
||||||
public async Task<List<PackageInfoDto>> GetAllPackagesAsync(int pageIndex, int pageSize, bool desc)
|
public async Task<List<PackageInfoDto>> GetAllPackagesAsync(int pageIndex, int pageSize, bool desc)
|
||||||
{
|
{
|
||||||
IQueryable<Apipackage> query = apiContext.Apipackages.Include(x => x.ApiPackageItems).ThenInclude(x => x.Api).Where(x => true).OrderBy(x => x.Id);
|
IQueryable<Apipackage> query = apiContext.Apipackages.Where(x => true).OrderBy(x => x.Id);
|
||||||
if(desc)
|
if(desc)
|
||||||
{
|
{
|
||||||
query = query.OrderDescending();
|
query = query.OrderDescending();
|
||||||
@ -160,9 +160,9 @@ namespace Apimanager_backend.Services
|
|||||||
public async Task<PackageInfoDto> PackageInfoByIdAsync(int packageId)
|
public async Task<PackageInfoDto> PackageInfoByIdAsync(int packageId)
|
||||||
{
|
{
|
||||||
var packageInfo = await apiContext.Apipackages.FirstOrDefaultAsync(x => x.Id == packageId);
|
var packageInfo = await apiContext.Apipackages.FirstOrDefaultAsync(x => x.Id == packageId);
|
||||||
if (packageInfo == null)
|
if(packageInfo == null)
|
||||||
{
|
{
|
||||||
throw new BaseException(4004, "套餐未找到");
|
throw new BaseException(4004,"套餐未找到");
|
||||||
}
|
}
|
||||||
return mapper.Map<PackageInfoDto>(packageInfo);
|
return mapper.Map<PackageInfoDto>(packageInfo);
|
||||||
}
|
}
|
||||||
@ -197,23 +197,5 @@ namespace Apimanager_backend.Services
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
#region 设置API关联套餐
|
|
||||||
public async Task<bool> SetApiPackageItemAsync(int apiId, int packageId)
|
|
||||||
{
|
|
||||||
var api = await apiContext.Apis.SingleOrDefaultAsync(x => x.Id == apiId);
|
|
||||||
if(api == null)
|
|
||||||
{
|
|
||||||
throw new BaseException(1004,"API不存在");
|
|
||||||
}
|
|
||||||
var package = await apiContext.Apipackages.SingleOrDefaultAsync(x => x.Id == packageId);
|
|
||||||
if(package is null)
|
|
||||||
{
|
|
||||||
throw new BaseException(1004,"套餐不存在");
|
|
||||||
}
|
|
||||||
apiContext.apiPackageItems.Add(new ApiPackageItem() { ApiPackageId = package.Id,ApiId = api.Id});
|
|
||||||
await apiContext.SaveChangesAsync();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
#endregion
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -47,23 +47,10 @@ namespace Apimanager_backend.Services
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
var baseDate = uPackage.ExpiryDate > DateTime.Now ? uPackage.ExpiryDate : DateTime.Now;
|
var baseDate = uPackage.ExpiryDate > DateTime.Now ? uPackage.ExpiryDate : DateTime.Now;
|
||||||
uPackage.ExpiryDate = baseDate.AddMonths(1);
|
|
||||||
uPackage.RemainingCalls += package.CallLimit;
|
|
||||||
_context.UserPackages.Update(uPackage);
|
_context.UserPackages.Update(uPackage);
|
||||||
}
|
}
|
||||||
user.Balance -= package.Price;
|
user.Balance -= package.Price;
|
||||||
_context.Users.Update(user);
|
_context.Users.Update(user);
|
||||||
Order order = new Order()
|
|
||||||
{
|
|
||||||
UserId = user.Id,
|
|
||||||
OrderNumber = OrderNumberGenerator.Generate(user.Id),
|
|
||||||
Amount = package.Price,
|
|
||||||
OrderType = OrderType.Purchase,
|
|
||||||
PaymentType = PaymentType.balance,
|
|
||||||
Status = OrderStatus.Completed,
|
|
||||||
PaiAt = DateTime.Now
|
|
||||||
};
|
|
||||||
_context.Orders.Add(order);
|
|
||||||
await _context.SaveChangesAsync();
|
await _context.SaveChangesAsync();
|
||||||
await transaction.CommitAsync();
|
await transaction.CommitAsync();
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@ -17,45 +17,12 @@ namespace Apimanager_backend.Services
|
|||||||
_logger = logger;
|
_logger = logger;
|
||||||
_mapper = mapper;
|
_mapper = mapper;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<bool> 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<List<PaymentConfig>> GetAllPaymentAdminAsync()
|
|
||||||
{
|
|
||||||
return await _context.paymentConfigs.ToListAsync();
|
|
||||||
}
|
|
||||||
|
|
||||||
public async Task<List<PaymentConfigDto>> GetAllPaymentAsync()
|
public async Task<List<PaymentConfigDto>> GetAllPaymentAsync()
|
||||||
{
|
{
|
||||||
var data = await _context.paymentConfigs.Where(x => x.IsEnabled).ToListAsync();
|
var data = await _context.paymentConfigs.Where(x => x.IsEnabled).ToListAsync();
|
||||||
return _mapper.Map<List<PaymentConfigDto>>(data);
|
return _mapper.Map<List<PaymentConfigDto>>(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Task<PaymentConfig> GetPaymentAdminAsync(PayType payType, PaymentType paymentType)
|
|
||||||
{
|
|
||||||
throw new NotImplementedException();
|
|
||||||
}
|
|
||||||
|
|
||||||
public async Task<PaymentConfig> 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<PaymentConfig> GetPaymentConfigInfoByTypeAsync(string payType)
|
public async Task<PaymentConfig> GetPaymentConfigInfoByTypeAsync(string payType)
|
||||||
{
|
{
|
||||||
if(!Enum.TryParse(payType, true, out PaymentType parsedPayType))
|
if(!Enum.TryParse(payType, true, out PaymentType parsedPayType))
|
||||||
@ -69,31 +36,5 @@ namespace Apimanager_backend.Services
|
|||||||
}
|
}
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<bool> 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;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,70 +0,0 @@
|
|||||||
using Apimanager_backend.Data;
|
|
||||||
using Apimanager_backend.Dtos;
|
|
||||||
using AutoMapper;
|
|
||||||
using Microsoft.EntityFrameworkCore;
|
|
||||||
|
|
||||||
namespace Apimanager_backend.Services
|
|
||||||
{
|
|
||||||
public class SystemInfoService : ISystemInfoService
|
|
||||||
{
|
|
||||||
private readonly ApiContext _context;
|
|
||||||
private readonly IMapper _mapper;
|
|
||||||
public SystemInfoService(ApiContext apiContext,IMapper mapper)
|
|
||||||
{
|
|
||||||
_context = apiContext;
|
|
||||||
_mapper = mapper;
|
|
||||||
}
|
|
||||||
public async Task<SystemInfoDto> GetSystemInfoAsync()
|
|
||||||
{
|
|
||||||
return new SystemInfoDto()
|
|
||||||
{
|
|
||||||
UserCount = await GetUserCount(),
|
|
||||||
OrderCount = await GetOrderCount(),
|
|
||||||
CallCount = await GetCallCount(),
|
|
||||||
Money = await GetMoney(),
|
|
||||||
RecentOrder = await GetRecentOrder(),
|
|
||||||
RecentUser = await GetRecentUser()
|
|
||||||
};
|
|
||||||
}
|
|
||||||
#region 获取用户数量
|
|
||||||
private async Task<int> GetUserCount()
|
|
||||||
{
|
|
||||||
return await _context.Users.CountAsync();
|
|
||||||
}
|
|
||||||
#endregion
|
|
||||||
#region 获取订单数量
|
|
||||||
private async Task<int> GetOrderCount()
|
|
||||||
{
|
|
||||||
return await _context.Orders.CountAsync();
|
|
||||||
}
|
|
||||||
#endregion
|
|
||||||
#region 获取API调用次数
|
|
||||||
private async Task<int> GetCallCount()
|
|
||||||
{
|
|
||||||
return await _context.CallLogs.CountAsync();
|
|
||||||
}
|
|
||||||
#endregion
|
|
||||||
#region 获取最近一周用户
|
|
||||||
private async Task<List<UserInfoDto>> GetRecentUser()
|
|
||||||
{
|
|
||||||
DateTime dateTime = DateTime.Now.AddDays(-7);
|
|
||||||
var users = _context.Users.Where(x => x.CreatedAt >= dateTime);
|
|
||||||
return _mapper.Map<List<UserInfoDto>>(await users.ToListAsync());
|
|
||||||
}
|
|
||||||
#endregion
|
|
||||||
#region 获取最近一周订单
|
|
||||||
private async Task<List<OrderDto>> GetRecentOrder()
|
|
||||||
{
|
|
||||||
DateTime dateTime = DateTime.Now.AddDays(-7);
|
|
||||||
var orders = _context.Orders.Include(x => x.User).Where(x => x.CreatedAt >= dateTime);
|
|
||||||
return _mapper.Map<List<OrderDto>>(await orders.ToListAsync());
|
|
||||||
}
|
|
||||||
#endregion
|
|
||||||
#region 获取金额数
|
|
||||||
public async Task<decimal> GetMoney()
|
|
||||||
{
|
|
||||||
return await _context.Orders.Where(x => x.OrderType == Models.OrderType.Recharge).SumAsync(x => x.Amount);
|
|
||||||
}
|
|
||||||
#endregion
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -10,7 +10,6 @@ using Microsoft.EntityFrameworkCore;
|
|||||||
using Microsoft.EntityFrameworkCore.Diagnostics;
|
using Microsoft.EntityFrameworkCore.Diagnostics;
|
||||||
using StackExchange.Redis;
|
using StackExchange.Redis;
|
||||||
using System.ComponentModel;
|
using System.ComponentModel;
|
||||||
using System.Security.Cryptography;
|
|
||||||
|
|
||||||
namespace Apimanager_backend.Services
|
namespace Apimanager_backend.Services
|
||||||
{
|
{
|
||||||
@ -126,25 +125,5 @@ namespace Apimanager_backend.Services
|
|||||||
await apiContext.SaveChangesAsync();
|
await apiContext.SaveChangesAsync();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
#region 设置用户apikey
|
|
||||||
public async Task<string> SetUserTokenAsync(int userId)
|
|
||||||
{
|
|
||||||
User? user = await apiContext.Users.FirstOrDefaultAsync(x => x.Id == userId);
|
|
||||||
if (user is null)
|
|
||||||
{
|
|
||||||
throw new BaseException(2004,"用户未找到");
|
|
||||||
}
|
|
||||||
var tokenBytes = new byte[32];
|
|
||||||
using (var rng = RandomNumberGenerator.Create())
|
|
||||||
{
|
|
||||||
rng.GetBytes(tokenBytes);
|
|
||||||
}
|
|
||||||
var tokenStr = Convert.ToBase64String(tokenBytes);
|
|
||||||
user.ApiKey = tokenStr;
|
|
||||||
apiContext.Users.Update(user);
|
|
||||||
await apiContext.SaveChangesAsync();
|
|
||||||
return tokenStr;
|
|
||||||
}
|
|
||||||
#endregion
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -37,8 +37,7 @@ namespace Apimanager_backend.Tools
|
|||||||
using var client = new HttpClient();
|
using var client = new HttpClient();
|
||||||
var content = new FormUrlEncodedContent(parameters);
|
var content = new FormUrlEncodedContent(parameters);
|
||||||
var response = await client.PostAsync($"{baseUrl}/mapi.php", content);
|
var response = await client.PostAsync($"{baseUrl}/mapi.php", content);
|
||||||
var responseJson = await response.Content.ReadAsStringAsync();
|
return JsonConvert.DeserializeObject<EpayResponse>(await response.Content.ReadAsStringAsync());
|
||||||
return JsonConvert.DeserializeObject<EpayResponse>(responseJson);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 25 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 25 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 184 KiB |
Loading…
Reference in New Issue
Block a user