using TakeoutSaaS.Domain.Products.Enums;
using TakeoutSaaS.Shared.Abstractions.Entities;

namespace TakeoutSaaS.Domain.Products.Entities;

/// <summary>
/// 商品价格策略，支持会员价/时段价等。
/// </summary>
public sealed class ProductPricingRule : MultiTenantEntityBase
{
    /// <summary>
    /// 所属商品。
    /// </summary>
    public long ProductId { get; set; }

    /// <summary>
    /// 策略类型。
    /// </summary>
    public PricingRuleType RuleType { get; set; } = PricingRuleType.Member;

    /// <summary>
    /// 条件描述（JSON），如会员等级、渠道等。
    /// </summary>
    public string ConditionsJson { get; set; } = string.Empty;

    /// <summary>
    /// 特殊价格。
    /// </summary>
    public decimal Price { get; set; }

    /// <summary>
    /// 生效开始时间。
    /// </summary>
    public DateTime? StartTime { get; set; }

    /// <summary>
    /// 生效结束时间。
    /// </summary>
    public DateTime? EndTime { get; set; }

    /// <summary>
    /// 生效星期（JSON 数组）。
    /// </summary>
    public string? WeekdaysJson { get; set; }

    /// <summary>
    /// 排序值。
    /// </summary>
    public int SortOrder { get; set; } = 100;
}
