增加行情接口降级机制:拉不到实时价格时使用成本价作为 fallback
This commit is contained in:
parent
1b8c98b7d6
commit
146212639b
@ -222,11 +222,23 @@ public class PortfolioService : IPortfolioService
|
||||
continue;
|
||||
}
|
||||
|
||||
// 获取实时价格(自动路由数据源)
|
||||
// 获取实时价格(自动路由数据源),失败则降级使用成本价
|
||||
decimal currentPrice = pos.AvgPrice;
|
||||
decimal previousClose = pos.AvgPrice;
|
||||
try
|
||||
{
|
||||
var priceResponse = await _marketDataService.GetPriceAsync(pos.StockCode, pos.AssetType ?? "Stock");
|
||||
if (priceResponse.Price > 0)
|
||||
{
|
||||
currentPrice = priceResponse.Price;
|
||||
previousClose = priceResponse.PreviousClose > 0 ? priceResponse.PreviousClose : currentPrice;
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.LogWarning(ex, "获取标的 {StockCode} 实时价格失败,使用成本价作为当前价", pos.StockCode);
|
||||
}
|
||||
|
||||
decimal currentPrice = priceResponse.Price;
|
||||
decimal previousClose = priceResponse.PreviousClose;
|
||||
decimal currentPositionValue = pos.Shares * currentPrice;
|
||||
decimal costPositionValue = pos.Shares * pos.AvgPrice;
|
||||
decimal todayProfit = previousClose > 0 ? pos.Shares * (currentPrice - previousClose) : 0;
|
||||
@ -289,11 +301,23 @@ public class PortfolioService : IPortfolioService
|
||||
continue;
|
||||
}
|
||||
|
||||
// 获取实时价格(自动路由数据源)
|
||||
// 获取实时价格(自动路由数据源),失败则降级使用成本价
|
||||
decimal currentPrice = pos.AvgPrice;
|
||||
decimal previousClose = pos.AvgPrice;
|
||||
try
|
||||
{
|
||||
var priceResponse = await _marketDataService.GetPriceAsync(pos.StockCode, pos.AssetType ?? "Stock");
|
||||
if (priceResponse.Price > 0)
|
||||
{
|
||||
currentPrice = priceResponse.Price;
|
||||
previousClose = priceResponse.PreviousClose > 0 ? priceResponse.PreviousClose : currentPrice;
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.LogWarning(ex, "获取标的 {StockCode} 实时价格失败,使用成本价作为当前价", pos.StockCode);
|
||||
}
|
||||
|
||||
decimal currentPrice = priceResponse.Price;
|
||||
decimal previousClose = priceResponse.PreviousClose;
|
||||
decimal positionValue = pos.Shares * currentPrice;
|
||||
decimal cost = pos.Shares * pos.AvgPrice;
|
||||
decimal profit = positionValue - cost;
|
||||
@ -551,10 +575,21 @@ public class PortfolioService : IPortfolioService
|
||||
continue;
|
||||
}
|
||||
|
||||
// 获取实时价格(自动路由数据源)
|
||||
// 获取实时价格(自动路由数据源),失败则降级使用成本价
|
||||
decimal currentPrice = pos.AvgPrice;
|
||||
try
|
||||
{
|
||||
var priceResponse = _marketDataService.GetPriceAsync(pos.StockCode, pos.AssetType ?? "Stock").GetAwaiter().GetResult();
|
||||
if (priceResponse.Price > 0)
|
||||
{
|
||||
currentPrice = priceResponse.Price;
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.LogWarning(ex, "获取标的 {StockCode} 实时价格失败,使用成本价计算组合总价值", pos.StockCode);
|
||||
}
|
||||
|
||||
decimal currentPrice = priceResponse.Price;
|
||||
totalPortfolioValue += pos.Shares * currentPrice;
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user