diff --git a/AssetManager.Services/PortfolioFacade.cs b/AssetManager.Services/PortfolioFacade.cs index 6b3809f..12583de 100644 --- a/AssetManager.Services/PortfolioFacade.cs +++ b/AssetManager.Services/PortfolioFacade.cs @@ -81,7 +81,22 @@ public class PortfolioFacade : IPortfolioFacade throw new UnauthorizedAccessException("组合不存在或无权访问"); } - return await _portfolioService.CreateTransactionAsync(portfolioId, request, userId); + var transaction = await _portfolioService.CreateTransactionAsync(portfolioId, request, userId); + + // 交易完成后,异步触发净值更新 + _ = Task.Run(async () => + { + try + { + await _navService.CalculateAndSaveDailyNavAsync(portfolioId); + } + catch (Exception ex) + { + _logger.LogWarning(ex, "交易后净值更新失败: {PortfolioId}", portfolioId); + } + }); + + return transaction; } public async Task> GetTransactionsAsync(string portfolioId, GetTransactionsRequest request, string userId) @@ -167,7 +182,26 @@ public class PortfolioFacade : IPortfolioFacade } } - return await _portfolioService.CreatePortfolioAsync(request, userId); + var response = await _portfolioService.CreatePortfolioAsync(request, userId); + + // 如果创建了持仓,自动触发净值计算 + if (request.Stocks != null && request.Stocks.Any()) + { + _logger.LogInformation("新组合包含持仓,触发净值计算: {PortfolioId}", response.Id); + _ = Task.Run(async () => + { + try + { + await _navService.CalculateAndSaveDailyNavAsync(response.Id); + } + catch (Exception ex) + { + _logger.LogWarning(ex, "新组合净值计算失败: {PortfolioId}", response.Id); + } + }); + } + + return response; } ///