feat: 扩展领域模型与配置

This commit is contained in:
贺爱泽
2025-12-01 13:26:05 +08:00
parent a08804658b
commit 5ddad07658
148 changed files with 8519 additions and 2 deletions

View File

@@ -0,0 +1,120 @@
using TakeoutSaaS.Domain.Merchants.Enums;
using TakeoutSaaS.Shared.Abstractions.Entities;
namespace TakeoutSaaS.Domain.Merchants.Entities;
/// <summary>
/// 商户主体信息,承载入驻和资质审核结果。
/// </summary>
public sealed class Merchant : MultiTenantEntityBase
{
/// <summary>
/// 品牌名称(对外展示)。
/// </summary>
public string BrandName { get; set; } = string.Empty;
/// <summary>
/// 品牌简称或别名。
/// </summary>
public string? BrandAlias { get; set; }
/// <summary>
/// 品牌 Logo。
/// </summary>
public string? LogoUrl { get; set; }
/// <summary>
/// 品牌所属品类,如火锅、咖啡等。
/// </summary>
public string? Category { get; set; }
/// <summary>
/// 营业执照号。
/// </summary>
public string? BusinessLicenseNumber { get; set; }
/// <summary>
/// 营业执照扫描件地址。
/// </summary>
public string? BusinessLicenseImageUrl { get; set; }
/// <summary>
/// 税号/统一社会信用代码。
/// </summary>
public string? TaxNumber { get; set; }
/// <summary>
/// 法人或负责人姓名。
/// </summary>
public string? LegalPerson { get; set; }
/// <summary>
/// 联系电话。
/// </summary>
public string ContactPhone { get; set; } = string.Empty;
/// <summary>
/// 联系邮箱。
/// </summary>
public string? ContactEmail { get; set; }
/// <summary>
/// 客服电话。
/// </summary>
public string? ServicePhone { get; set; }
/// <summary>
/// 客服邮箱。
/// </summary>
public string? SupportEmail { get; set; }
/// <summary>
/// 所在省份。
/// </summary>
public string? Province { get; set; }
/// <summary>
/// 所在城市。
/// </summary>
public string? City { get; set; }
/// <summary>
/// 所在区县。
/// </summary>
public string? District { get; set; }
/// <summary>
/// 详细地址。
/// </summary>
public string? Address { get; set; }
/// <summary>
/// 经度信息。
/// </summary>
public double? Longitude { get; set; }
/// <summary>
/// 纬度信息。
/// </summary>
public double? Latitude { get; set; }
/// <summary>
/// 入驻状态。
/// </summary>
public MerchantStatus Status { get; set; } = MerchantStatus.Pending;
/// <summary>
/// 审核备注或驳回原因。
/// </summary>
public string? ReviewRemarks { get; set; }
/// <summary>
/// 入驻时间。
/// </summary>
public DateTime? JoinedAt { get; set; }
/// <summary>
/// 最近一次审核时间。
/// </summary>
public DateTime? LastReviewedAt { get; set; }
}

View File

@@ -0,0 +1,55 @@
using TakeoutSaaS.Domain.Merchants.Enums;
using TakeoutSaaS.Shared.Abstractions.Entities;
namespace TakeoutSaaS.Domain.Merchants.Entities;
/// <summary>
/// 商户合同记录。
/// </summary>
public sealed class MerchantContract : MultiTenantEntityBase
{
/// <summary>
/// 所属商户标识。
/// </summary>
public Guid MerchantId { get; set; }
/// <summary>
/// 合同编号。
/// </summary>
public string ContractNumber { get; set; } = string.Empty;
/// <summary>
/// 合同状态。
/// </summary>
public ContractStatus Status { get; set; } = ContractStatus.Draft;
/// <summary>
/// 合同开始时间。
/// </summary>
public DateTime StartDate { get; set; }
/// <summary>
/// 合同结束时间。
/// </summary>
public DateTime EndDate { get; set; }
/// <summary>
/// 合同文件存储地址。
/// </summary>
public string FileUrl { get; set; } = string.Empty;
/// <summary>
/// 签署时间。
/// </summary>
public DateTime? SignedAt { get; set; }
/// <summary>
/// 终止时间。
/// </summary>
public DateTime? TerminatedAt { get; set; }
/// <summary>
/// 终止原因。
/// </summary>
public string? TerminationReason { get; set; }
}

View File

@@ -0,0 +1,50 @@
using TakeoutSaaS.Domain.Merchants.Enums;
using TakeoutSaaS.Shared.Abstractions.Entities;
namespace TakeoutSaaS.Domain.Merchants.Entities;
/// <summary>
/// 商户提交的资质或证照材料。
/// </summary>
public sealed class MerchantDocument : MultiTenantEntityBase
{
/// <summary>
/// 所属商户标识。
/// </summary>
public Guid MerchantId { get; set; }
/// <summary>
/// 证照类型。
/// </summary>
public MerchantDocumentType DocumentType { get; set; } = MerchantDocumentType.BusinessLicense;
/// <summary>
/// 审核状态。
/// </summary>
public MerchantDocumentStatus Status { get; set; } = MerchantDocumentStatus.Pending;
/// <summary>
/// 证照文件链接。
/// </summary>
public string FileUrl { get; set; } = string.Empty;
/// <summary>
/// 证照编号。
/// </summary>
public string? DocumentNumber { get; set; }
/// <summary>
/// 签发日期。
/// </summary>
public DateTime? IssuedAt { get; set; }
/// <summary>
/// 到期日期。
/// </summary>
public DateTime? ExpiresAt { get; set; }
/// <summary>
/// 审核备注或驳回原因。
/// </summary>
public string? Remarks { get; set; }
}

View File

@@ -0,0 +1,55 @@
using TakeoutSaaS.Domain.Merchants.Enums;
using TakeoutSaaS.Shared.Abstractions.Entities;
namespace TakeoutSaaS.Domain.Merchants.Entities;
/// <summary>
/// 商户员工账号,支持门店维度分配。
/// </summary>
public sealed class MerchantStaff : MultiTenantEntityBase
{
/// <summary>
/// 所属商户标识。
/// </summary>
public Guid MerchantId { get; set; }
/// <summary>
/// 可选的关联门店 ID。
/// </summary>
public Guid? StoreId { get; set; }
/// <summary>
/// 员工姓名。
/// </summary>
public string Name { get; set; } = string.Empty;
/// <summary>
/// 手机号。
/// </summary>
public string Phone { get; set; } = string.Empty;
/// <summary>
/// 邮箱地址。
/// </summary>
public string? Email { get; set; }
/// <summary>
/// 登录账号 ID指向统一身份体系
/// </summary>
public Guid? IdentityUserId { get; set; }
/// <summary>
/// 员工角色类型。
/// </summary>
public StaffRoleType RoleType { get; set; } = StaffRoleType.FrontDesk;
/// <summary>
/// 员工状态。
/// </summary>
public StaffStatus Status { get; set; } = StaffStatus.Active;
/// <summary>
/// 自定义权限JSON
/// </summary>
public string? PermissionsJson { get; set; }
}

View File

@@ -0,0 +1,27 @@
namespace TakeoutSaaS.Domain.Merchants.Enums;
/// <summary>
/// 商户合同状态。
/// </summary>
public enum ContractStatus
{
/// <summary>
/// 草拟中。
/// </summary>
Draft = 0,
/// <summary>
/// 已生效。
/// </summary>
Active = 1,
/// <summary>
/// 已到期。
/// </summary>
Expired = 2,
/// <summary>
/// 已解除。
/// </summary>
Terminated = 3
}

View File

@@ -0,0 +1,27 @@
namespace TakeoutSaaS.Domain.Merchants.Enums;
/// <summary>
/// 证照审核状态。
/// </summary>
public enum MerchantDocumentStatus
{
/// <summary>
/// 等待审核。
/// </summary>
Pending = 0,
/// <summary>
/// 审核通过。
/// </summary>
Approved = 1,
/// <summary>
/// 审核驳回。
/// </summary>
Rejected = 2,
/// <summary>
/// 已过期待更新。
/// </summary>
Expired = 3
}

View File

@@ -0,0 +1,27 @@
namespace TakeoutSaaS.Domain.Merchants.Enums;
/// <summary>
/// 商户证照类型。
/// </summary>
public enum MerchantDocumentType
{
/// <summary>
/// 营业执照。
/// </summary>
BusinessLicense = 0,
/// <summary>
/// 餐饮服务许可证。
/// </summary>
CateringPermit = 1,
/// <summary>
/// 税务登记证。
/// </summary>
TaxCertificate = 2,
/// <summary>
/// 其他补充资质。
/// </summary>
Other = 99
}

View File

@@ -0,0 +1,12 @@
namespace TakeoutSaaS.Domain.Merchants.Enums;
/// <summary>
/// 商户入驻状态。
/// </summary>
public enum MerchantStatus
{
Pending = 0,
Approved = 1,
Rejected = 2,
Frozen = 3
}

View File

@@ -0,0 +1,32 @@
namespace TakeoutSaaS.Domain.Merchants.Enums;
/// <summary>
/// 商户员工角色。
/// </summary>
public enum StaffRoleType
{
/// <summary>
/// 管理员。
/// </summary>
Admin = 0,
/// <summary>
/// 前台收银。
/// </summary>
FrontDesk = 1,
/// <summary>
/// 后厨制作。
/// </summary>
Kitchen = 2,
/// <summary>
/// 配送骑手。
/// </summary>
Courier = 3,
/// <summary>
/// 运营人员。
/// </summary>
Operator = 4
}

View File

@@ -0,0 +1,22 @@
namespace TakeoutSaaS.Domain.Merchants.Enums;
/// <summary>
/// 员工账号状态。
/// </summary>
public enum StaffStatus
{
/// <summary>
/// 正常在职。
/// </summary>
Active = 0,
/// <summary>
/// 停用。
/// </summary>
Disabled = 1,
/// <summary>
/// 已离职。
/// </summary>
Resigned = 2
}