fix: API路由重构以匹配前端期望
1. 创建交易: POST /api/v1/portfolio/{id}/transactions -> POST /api/v1/portfolio/transactions
- portfolioId 改为在 body 中传递
2. 新增计算净值端点: POST /api/v1/portfolio/{id}/nav-history/calculate
前端 API 格式已完全对齐
This commit is contained in:
parent
a0817081a8
commit
f7d346c0ae
@ -270,18 +270,56 @@ public class PortfolioController : ControllerBase
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 创建交易(买入/卖出)
|
||||
/// 计算投资组合当日净值
|
||||
/// </summary>
|
||||
[HttpPost("{id}/transactions")]
|
||||
public async Task<ActionResult<ApiResponse<TransactionItem>>> CreateTransaction(
|
||||
string id,
|
||||
[FromBody] CreateTransactionRequest request)
|
||||
[HttpPost("{id}/nav-history/calculate")]
|
||||
public async Task<ActionResult<ApiResponse<object>>> CalculateDailyNav(string id)
|
||||
{
|
||||
var userId = GetCurrentUserId();
|
||||
|
||||
try
|
||||
{
|
||||
var transaction = await _portfolioFacade.CreateTransactionAsync(id, request, userId);
|
||||
var success = await _portfolioFacade.CalculateDailyNavAsync(id);
|
||||
return Ok(new ApiResponse<object>
|
||||
{
|
||||
code = Models.StatusCodes.Success,
|
||||
data = new { portfolioId = id, calculated = success },
|
||||
message = success ? "净值计算成功" : "净值计算失败"
|
||||
});
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return BadRequest(new ApiResponse<object>
|
||||
{
|
||||
code = Models.StatusCodes.BadRequest,
|
||||
data = null,
|
||||
message = ex.Message
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 创建交易(买入/卖出)
|
||||
/// </summary>
|
||||
[HttpPost("transactions")]
|
||||
public async Task<ActionResult<ApiResponse<TransactionItem>>> CreateTransaction(
|
||||
[FromBody] CreateTransactionRequest request)
|
||||
{
|
||||
var userId = GetCurrentUserId();
|
||||
|
||||
if (string.IsNullOrEmpty(request.PortfolioId))
|
||||
{
|
||||
return BadRequest(new ApiResponse<TransactionItem>
|
||||
{
|
||||
code = Models.StatusCodes.BadRequest,
|
||||
data = null,
|
||||
message = "portfolioId 不能为空"
|
||||
});
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
var transaction = await _portfolioFacade.CreateTransactionAsync(request.PortfolioId, request, userId);
|
||||
return Ok(new ApiResponse<TransactionItem>
|
||||
{
|
||||
code = Models.StatusCodes.Success,
|
||||
|
||||
@ -61,4 +61,9 @@ public interface IPortfolioFacade
|
||||
/// 获取用户总资产
|
||||
/// </summary>
|
||||
Task<TotalAssetsResponse> GetTotalAssetsAsync(string userId);
|
||||
|
||||
/// <summary>
|
||||
/// 计算投资组合当日净值
|
||||
/// </summary>
|
||||
Task<bool> CalculateDailyNavAsync(string portfolioId);
|
||||
}
|
||||
|
||||
@ -195,4 +195,13 @@ public class PortfolioFacade : IPortfolioFacade
|
||||
_logger.LogInformation("获取用户总资产: {UserId}", userId);
|
||||
return await _portfolioService.GetTotalAssetsAsync(userId);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 计算投资组合当日净值
|
||||
/// </summary>
|
||||
public async Task<bool> CalculateDailyNavAsync(string portfolioId)
|
||||
{
|
||||
_logger.LogInformation("计算投资组合当日净值: {PortfolioId}", portfolioId);
|
||||
return await _navService.CalculateAndSaveDailyNavAsync(portfolioId);
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user