feat(product): complete combo and detail editing data model
All checks were successful
Build and Deploy TenantApi / build-and-deploy (push) Successful in 47s
All checks were successful
Build and Deploy TenantApi / build-and-deploy (push) Successful in 47s
This commit is contained in:
@@ -128,6 +128,21 @@ public sealed class Product : MultiTenantEntityBase
|
||||
/// </summary>
|
||||
public string? Description { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 排序权重,越大越靠前。
|
||||
/// </summary>
|
||||
public int SortWeight { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 库存预警值。
|
||||
/// </summary>
|
||||
public int? WarningStock { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 打包费(元/份)。
|
||||
/// </summary>
|
||||
public decimal? PackingFee { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 支持堂食。
|
||||
/// </summary>
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
using TakeoutSaaS.Shared.Abstractions.Entities;
|
||||
|
||||
namespace TakeoutSaaS.Domain.Products.Entities;
|
||||
|
||||
/// <summary>
|
||||
/// 套餐分组。
|
||||
/// </summary>
|
||||
public sealed class ProductComboGroup : MultiTenantEntityBase
|
||||
{
|
||||
/// <summary>
|
||||
/// 套餐商品 ID。
|
||||
/// </summary>
|
||||
public long ProductId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 分组名称。
|
||||
/// </summary>
|
||||
public string Name { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 最小选择数。
|
||||
/// </summary>
|
||||
public int MinSelect { get; set; } = 1;
|
||||
|
||||
/// <summary>
|
||||
/// 最大选择数。
|
||||
/// </summary>
|
||||
public int MaxSelect { get; set; } = 1;
|
||||
|
||||
/// <summary>
|
||||
/// 排序值。
|
||||
/// </summary>
|
||||
public int SortOrder { get; set; } = 100;
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
using TakeoutSaaS.Shared.Abstractions.Entities;
|
||||
|
||||
namespace TakeoutSaaS.Domain.Products.Entities;
|
||||
|
||||
/// <summary>
|
||||
/// 套餐分组内商品。
|
||||
/// </summary>
|
||||
public sealed class ProductComboGroupItem : MultiTenantEntityBase
|
||||
{
|
||||
/// <summary>
|
||||
/// 所属套餐分组 ID。
|
||||
/// </summary>
|
||||
public long ComboGroupId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 商品 ID。
|
||||
/// </summary>
|
||||
public long ProductId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 数量。
|
||||
/// </summary>
|
||||
public int Quantity { get; set; } = 1;
|
||||
|
||||
/// <summary>
|
||||
/// 排序值。
|
||||
/// </summary>
|
||||
public int SortOrder { get; set; } = 100;
|
||||
}
|
||||
@@ -51,4 +51,9 @@ public sealed class ProductSku : MultiTenantEntityBase
|
||||
/// 排序值。
|
||||
/// </summary>
|
||||
public int SortOrder { get; set; } = 100;
|
||||
|
||||
/// <summary>
|
||||
/// 是否启用。
|
||||
/// </summary>
|
||||
public bool IsEnabled { get; set; } = true;
|
||||
}
|
||||
|
||||
@@ -153,6 +153,26 @@ public interface IProductRepository
|
||||
/// </summary>
|
||||
Task<IReadOnlyList<ProductSku>> GetSkusByProductIdsAsync(IReadOnlyCollection<long> productIds, long tenantId, CancellationToken cancellationToken = default);
|
||||
|
||||
/// <summary>
|
||||
/// 获取商品套餐分组。
|
||||
/// </summary>
|
||||
Task<IReadOnlyList<ProductComboGroup>> GetComboGroupsAsync(long productId, long tenantId, CancellationToken cancellationToken = default);
|
||||
|
||||
/// <summary>
|
||||
/// 批量获取商品套餐分组。
|
||||
/// </summary>
|
||||
Task<IReadOnlyList<ProductComboGroup>> GetComboGroupsByProductIdsAsync(IReadOnlyCollection<long> productIds, long tenantId, CancellationToken cancellationToken = default);
|
||||
|
||||
/// <summary>
|
||||
/// 获取套餐分组内商品。
|
||||
/// </summary>
|
||||
Task<IReadOnlyList<ProductComboGroupItem>> GetComboGroupItemsAsync(long productId, long tenantId, CancellationToken cancellationToken = default);
|
||||
|
||||
/// <summary>
|
||||
/// 批量获取套餐分组内商品。
|
||||
/// </summary>
|
||||
Task<IReadOnlyList<ProductComboGroupItem>> GetComboGroupItemsByGroupIdsAsync(IReadOnlyCollection<long> comboGroupIds, long tenantId, CancellationToken cancellationToken = default);
|
||||
|
||||
/// <summary>
|
||||
/// 获取商品加料组与选项。
|
||||
/// </summary>
|
||||
@@ -291,6 +311,15 @@ public interface IProductRepository
|
||||
/// <returns>异步任务。</returns>
|
||||
Task AddSkusAsync(IEnumerable<ProductSku> skus, CancellationToken cancellationToken = default);
|
||||
|
||||
/// <summary>
|
||||
/// 新增套餐分组与分组商品。
|
||||
/// </summary>
|
||||
/// <param name="groups">套餐分组集合。</param>
|
||||
/// <param name="items">分组商品集合。</param>
|
||||
/// <param name="cancellationToken">取消标记。</param>
|
||||
/// <returns>异步任务。</returns>
|
||||
Task AddComboGroupsAsync(IEnumerable<ProductComboGroup> groups, IEnumerable<ProductComboGroupItem> items, CancellationToken cancellationToken = default);
|
||||
|
||||
/// <summary>
|
||||
/// 新增加料组与选项。
|
||||
/// </summary>
|
||||
@@ -405,6 +434,15 @@ public interface IProductRepository
|
||||
/// <returns>异步任务。</returns>
|
||||
Task RemoveSkusAsync(long productId, long tenantId, CancellationToken cancellationToken = default);
|
||||
|
||||
/// <summary>
|
||||
/// 删除商品下的套餐分组及分组商品。
|
||||
/// </summary>
|
||||
/// <param name="productId">商品 ID。</param>
|
||||
/// <param name="tenantId">租户 ID。</param>
|
||||
/// <param name="cancellationToken">取消标记。</param>
|
||||
/// <returns>异步任务。</returns>
|
||||
Task RemoveComboGroupsAsync(long productId, long tenantId, CancellationToken cancellationToken = default);
|
||||
|
||||
/// <summary>
|
||||
/// 删除模板下的规格做法选项。
|
||||
/// </summary>
|
||||
|
||||
Reference in New Issue
Block a user