using AssetManager.Data;
using AssetManager.Models.DTOs;
using Microsoft.Extensions.Logging;
using SqlSugar;
namespace AssetManager.Services;
///
/// 股票代码服务实现
///
public class TickerService : ITickerService
{
private readonly ILogger _logger;
private readonly ISqlSugarClient _db;
public TickerService(ILogger logger, ISqlSugarClient db)
{
_logger = logger;
_db = db;
}
///
/// 模糊搜索股票代码
///
public async Task> SearchTickerAsync(string keyword, int limit = 20)
{
_logger.LogInformation($"Search ticker with keyword: {keyword}, limit: {limit}");
if (string.IsNullOrWhiteSpace(keyword))
{
return new List();
}
// 模糊搜索:ticker 包含 keyword 或者 exchange 包含 keyword 或者 name 包含 keyword
var results = await _db.Queryable()
.Where(t => t.Ticker.Contains(keyword) || t.Exchange.Contains(keyword) || (t.Name != null && t.Name.Contains(keyword)))
.Take(limit)
.OrderBy(t => t.Ticker)
.Select(t => new TickerSearchResult
{
Ticker = t.Ticker,
Name = t.Name,
Exchange = t.Exchange,
AssetType = t.AssetType,
PriceCurrency = t.PriceCurrency
})
.ToListAsync();
return results;
}
}