using System.Text.Json.Serialization;
using TakeoutSaaS.Domain.Common.Enums;
using TakeoutSaaS.Domain.Merchants.Enums;
using TakeoutSaaS.Shared.Abstractions.Serialization;
namespace TakeoutSaaS.Application.App.Merchants.Dto;
///
/// 商户详情 DTO。
///
public sealed class MerchantDetailDto
{
///
/// 商户 ID。
///
[JsonConverter(typeof(SnowflakeIdJsonConverter))]
public long Id { get; init; }
///
/// 租户 ID。
///
[JsonConverter(typeof(SnowflakeIdJsonConverter))]
public long TenantId { get; init; }
///
/// 租户名称。
///
public string? TenantName { get; init; }
///
/// 商户名称(品牌名)。
///
public string Name { get; init; } = string.Empty;
///
/// 品牌简称。
///
public string? BrandAlias { get; init; }
///
/// Logo 地址。
///
public string? LogoUrl { get; init; }
///
/// 品类。
///
public string? Category { get; init; }
///
/// 经营模式。
///
public OperatingMode? OperatingMode { get; init; }
///
/// 营业执照号。
///
public string? LicenseNumber { get; init; }
///
/// 法人或负责人。
///
public string? LegalRepresentative { get; init; }
///
/// 税号。
///
public string? TaxNumber { get; init; }
///
/// 省份。
///
public string? Province { get; init; }
///
/// 城市。
///
public string? City { get; init; }
///
/// 区县。
///
public string? District { get; init; }
///
/// 详细地址。
///
public string? Address { get; init; }
///
/// 联系电话。
///
public string? ContactPhone { get; init; }
///
/// 联系邮箱。
///
public string? ContactEmail { get; init; }
///
/// 客服电话。
///
public string? ServicePhone { get; init; }
///
/// 客服邮箱。
///
public string? SupportEmail { get; init; }
///
/// 审核状态。
///
public MerchantStatus Status { get; init; }
///
/// 业务冻结标记。
///
public bool IsFrozen { get; init; }
///
/// 冻结原因。
///
public string? FrozenReason { get; init; }
///
/// 冻结时间。
///
public DateTime? FrozenAt { get; init; }
///
/// 审核通过人。
///
[JsonConverter(typeof(NullableSnowflakeIdJsonConverter))]
public long? ApprovedBy { get; init; }
///
/// 审核通过时间。
///
public DateTime? ApprovedAt { get; init; }
///
/// 门店列表。
///
public IReadOnlyList Stores { get; init; } = [];
///
/// 并发控制版本(PostgreSQL xmin)。
///
public uint RowVersion { get; init; }
///
/// 创建时间。
///
public DateTime CreatedAt { get; init; }
///
/// 创建人。
///
[JsonConverter(typeof(NullableSnowflakeIdJsonConverter))]
public long? CreatedBy { get; init; }
///
/// 更新时间。
///
public DateTime? UpdatedAt { get; init; }
///
/// 更新人。
///
[JsonConverter(typeof(NullableSnowflakeIdJsonConverter))]
public long? UpdatedBy { get; init; }
}