feat: 菜品菜单查询与子资源替换完善

This commit is contained in:
2025-12-04 10:42:58 +08:00
parent de5f13ec83
commit b8d93337f2
25 changed files with 1133 additions and 10 deletions

View File

@@ -1,3 +1,4 @@
using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
@@ -19,48 +20,88 @@ public interface IProductRepository
/// <summary>
/// 按分类与状态筛选商品列表。
/// </summary>
Task<IReadOnlyList<Product>> SearchAsync(long tenantId, long? storeId, long? categoryId, ProductStatus? status, CancellationToken cancellationToken = default);
Task<IReadOnlyList<Product>> SearchAsync(long tenantId, long? storeId, long? categoryId, ProductStatus? status, CancellationToken cancellationToken = default, DateTime? updatedAfter = null);
/// <summary>
/// 获取租户下的商品分类。
/// </summary>
Task<IReadOnlyList<ProductCategory>> GetCategoriesAsync(long tenantId, CancellationToken cancellationToken = default);
/// <summary>
/// 获取门店商品分类。
/// </summary>
Task<IReadOnlyList<ProductCategory>> GetCategoriesByStoreAsync(long tenantId, long storeId, bool onlyEnabled = true, CancellationToken cancellationToken = default);
/// <summary>
/// 获取商品 SKU。
/// </summary>
Task<IReadOnlyList<ProductSku>> GetSkusAsync(long productId, long tenantId, CancellationToken cancellationToken = default);
/// <summary>
/// 批量获取商品 SKU。
/// </summary>
Task<IReadOnlyList<ProductSku>> GetSkusByProductIdsAsync(IReadOnlyCollection<long> productIds, long tenantId, CancellationToken cancellationToken = default);
/// <summary>
/// 获取商品加料组与选项。
/// </summary>
Task<IReadOnlyList<ProductAddonGroup>> GetAddonGroupsAsync(long productId, long tenantId, CancellationToken cancellationToken = default);
/// <summary>
/// 批量获取商品加料组。
/// </summary>
Task<IReadOnlyList<ProductAddonGroup>> GetAddonGroupsByProductIdsAsync(IReadOnlyCollection<long> productIds, long tenantId, CancellationToken cancellationToken = default);
/// <summary>
/// 获取商品加料选项。
/// </summary>
Task<IReadOnlyList<ProductAddonOption>> GetAddonOptionsAsync(long productId, long tenantId, CancellationToken cancellationToken = default);
/// <summary>
/// 批量获取商品加料选项。
/// </summary>
Task<IReadOnlyList<ProductAddonOption>> GetAddonOptionsByGroupIdsAsync(IReadOnlyCollection<long> addonGroupIds, long tenantId, CancellationToken cancellationToken = default);
/// <summary>
/// 获取商品规格组与选项。
/// </summary>
Task<IReadOnlyList<ProductAttributeGroup>> GetAttributeGroupsAsync(long productId, long tenantId, CancellationToken cancellationToken = default);
/// <summary>
/// 批量获取商品规格组。
/// </summary>
Task<IReadOnlyList<ProductAttributeGroup>> GetAttributeGroupsByProductIdsAsync(IReadOnlyCollection<long> productIds, long tenantId, CancellationToken cancellationToken = default);
/// <summary>
/// 获取商品规格选项。
/// </summary>
Task<IReadOnlyList<ProductAttributeOption>> GetAttributeOptionsAsync(long productId, long tenantId, CancellationToken cancellationToken = default);
/// <summary>
/// 批量获取商品规格选项。
/// </summary>
Task<IReadOnlyList<ProductAttributeOption>> GetAttributeOptionsByGroupIdsAsync(IReadOnlyCollection<long> attributeGroupIds, long tenantId, CancellationToken cancellationToken = default);
/// <summary>
/// 获取商品媒资。
/// </summary>
Task<IReadOnlyList<ProductMediaAsset>> GetMediaAssetsAsync(long productId, long tenantId, CancellationToken cancellationToken = default);
/// <summary>
/// 批量获取商品媒资。
/// </summary>
Task<IReadOnlyList<ProductMediaAsset>> GetMediaAssetsByProductIdsAsync(IReadOnlyCollection<long> productIds, long tenantId, CancellationToken cancellationToken = default);
/// <summary>
/// 获取商品定价规则。
/// </summary>
Task<IReadOnlyList<ProductPricingRule>> GetPricingRulesAsync(long productId, long tenantId, CancellationToken cancellationToken = default);
/// <summary>
/// 批量获取商品定价规则。
/// </summary>
Task<IReadOnlyList<ProductPricingRule>> GetPricingRulesByProductIdsAsync(IReadOnlyCollection<long> productIds, long tenantId, CancellationToken cancellationToken = default);
/// <summary>
/// 新增分类。
/// </summary>