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