using HardwarePerformance.Core.Entities; namespace HardwarePerformance.Application.Interfaces { /// /// 产品Repository接口 /// public interface IProductRepository : IRepository { /// /// 根据类别ID获取产品列表(支持分页和排序) /// /// 类别ID /// 页码 /// 每页大小 /// 排序字段 /// 是否升序 /// 产品列表 Task<(IEnumerable products, int totalCount)> GetByCategoryAsync( int categoryId, int pageNumber = 1, int pageSize = 20, string sortBy = "CurrentRank", bool ascending = true); /// /// 搜索产品(按名称、型号、品牌) /// /// 搜索关键词 /// 类别ID(可选) /// 页码 /// 每页大小 /// 产品列表 Task<(IEnumerable products, int totalCount)> SearchAsync( string searchTerm, int? categoryId = null, int pageNumber = 1, int pageSize = 20); /// /// 筛选产品(按性能分数区间、发布年份、品牌) /// /// 类别ID /// 最低分数 /// 最高分数 /// 最早年份 /// 最晚年份 /// 品牌 /// 页码 /// 每页大小 /// 产品列表 Task<(IEnumerable products, int totalCount)> FilterAsync( int categoryId, int? minScore = null, int? maxScore = null, int? minYear = null, int? maxYear = null, string? manufacturer = null, int pageNumber = 1, int pageSize = 20); /// /// 获取产品详情(包含规格参数和性能分数) /// /// 产品ID /// 产品详情 Task GetWithDetailsAsync(int id); /// /// 获取多个产品(用于对比) /// /// 产品ID列表 /// 产品列表 Task> GetByIdsAsync(IEnumerable productIds); /// /// 获取品牌列表 /// /// 类别ID(可选) /// 品牌列表 Task> GetManufacturersAsync(int? categoryId = null); /// /// 获取排名变化历史 /// /// 产品ID /// 月份数 /// 排名历史 Task> GetRankingHistoryAsync(int productId, int months = 12); /// /// 根据制造商获取产品列表 /// /// 制造商名称 /// 类别ID(可选) /// 页码 /// 每页大小 /// 产品列表 Task<(IEnumerable products, int totalCount)> GetByManufacturerAsync( string manufacturer, int? categoryId = null, int pageNumber = 1, int pageSize = 20); /// /// 根据型号获取产品 /// /// 型号 /// 产品 Task GetByModelAsync(string model); /// /// 获取类别中排名前N的产品 /// /// 类别ID /// 数量 /// 产品列表 Task> GetTopNByCategoryAsync(int categoryId, int n); } }