feat: 扩展领域模型与配置
This commit is contained in:
120
src/Domain/TakeoutSaaS.Domain/Merchants/Entities/Merchant.cs
Normal file
120
src/Domain/TakeoutSaaS.Domain/Merchants/Entities/Merchant.cs
Normal 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; }
|
||||
}
|
||||
@@ -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; }
|
||||
}
|
||||
@@ -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; }
|
||||
}
|
||||
@@ -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; }
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
namespace TakeoutSaaS.Domain.Merchants.Enums;
|
||||
|
||||
/// <summary>
|
||||
/// 商户入驻状态。
|
||||
/// </summary>
|
||||
public enum MerchantStatus
|
||||
{
|
||||
Pending = 0,
|
||||
Approved = 1,
|
||||
Rejected = 2,
|
||||
Frozen = 3
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
22
src/Domain/TakeoutSaaS.Domain/Merchants/Enums/StaffStatus.cs
Normal file
22
src/Domain/TakeoutSaaS.Domain/Merchants/Enums/StaffStatus.cs
Normal 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
|
||||
}
|
||||
Reference in New Issue
Block a user