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; } }