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,45 @@
using TakeoutSaaS.Domain.Distribution.Enums;
using TakeoutSaaS.Shared.Abstractions.Entities;
namespace TakeoutSaaS.Domain.Distribution.Entities;
/// <summary>
/// 分销订单记录。
/// </summary>
public sealed class AffiliateOrder : MultiTenantEntityBase
{
/// <summary>
/// 推广人标识。
/// </summary>
public Guid AffiliatePartnerId { get; set; }
/// <summary>
/// 关联订单。
/// </summary>
public Guid OrderId { get; set; }
/// <summary>
/// 用户 ID。
/// </summary>
public Guid BuyerUserId { get; set; }
/// <summary>
/// 订单金额。
/// </summary>
public decimal OrderAmount { get; set; }
/// <summary>
/// 预计佣金。
/// </summary>
public decimal EstimatedCommission { get; set; }
/// <summary>
/// 当前状态。
/// </summary>
public AffiliateOrderStatus Status { get; set; } = AffiliateOrderStatus.Pending;
/// <summary>
/// 结算完成时间。
/// </summary>
public DateTime? SettledAt { get; set; }
}

View File

@@ -0,0 +1,45 @@
using TakeoutSaaS.Domain.Distribution.Enums;
using TakeoutSaaS.Shared.Abstractions.Entities;
namespace TakeoutSaaS.Domain.Distribution.Entities;
/// <summary>
/// 分销/推广合作伙伴。
/// </summary>
public sealed class AffiliatePartner : MultiTenantEntityBase
{
/// <summary>
/// 用户 ID如绑定平台账号
/// </summary>
public Guid? UserId { get; set; }
/// <summary>
/// 昵称或渠道名称。
/// </summary>
public string DisplayName { get; set; } = string.Empty;
/// <summary>
/// 联系电话。
/// </summary>
public string? Phone { get; set; }
/// <summary>
/// 渠道类型。
/// </summary>
public AffiliateChannelType ChannelType { get; set; } = AffiliateChannelType.Personal;
/// <summary>
/// 分成比例0-1
/// </summary>
public decimal CommissionRate { get; set; }
/// <summary>
/// 当前状态。
/// </summary>
public AffiliateStatus Status { get; set; } = AffiliateStatus.Pending;
/// <summary>
/// 审核备注。
/// </summary>
public string? Remarks { get; set; }
}

View File

@@ -0,0 +1,40 @@
using TakeoutSaaS.Domain.Distribution.Enums;
using TakeoutSaaS.Shared.Abstractions.Entities;
namespace TakeoutSaaS.Domain.Distribution.Entities;
/// <summary>
/// 佣金结算记录。
/// </summary>
public sealed class AffiliatePayout : MultiTenantEntityBase
{
/// <summary>
/// 合作伙伴标识。
/// </summary>
public Guid AffiliatePartnerId { get; set; }
/// <summary>
/// 结算周期描述。
/// </summary>
public string Period { get; set; } = string.Empty;
/// <summary>
/// 结算金额。
/// </summary>
public decimal Amount { get; set; }
/// <summary>
/// 状态。
/// </summary>
public PayoutStatus Status { get; set; } = PayoutStatus.Pending;
/// <summary>
/// 打款时间。
/// </summary>
public DateTime? PaidAt { get; set; }
/// <summary>
/// 备注。
/// </summary>
public string? Remarks { get; set; }
}

View File

@@ -0,0 +1,27 @@
namespace TakeoutSaaS.Domain.Distribution.Enums;
/// <summary>
/// 推广渠道类型。
/// </summary>
public enum AffiliateChannelType
{
/// <summary>
/// 个人。
/// </summary>
Personal = 0,
/// <summary>
/// 自媒体。
/// </summary>
Media = 1,
/// <summary>
/// 门店地推。
/// </summary>
Offline = 2,
/// <summary>
/// 第三方联盟。
/// </summary>
Alliance = 3
}

View File

@@ -0,0 +1,27 @@
namespace TakeoutSaaS.Domain.Distribution.Enums;
/// <summary>
/// 分销订单状态。
/// </summary>
public enum AffiliateOrderStatus
{
/// <summary>
/// 待成交通知。
/// </summary>
Pending = 0,
/// <summary>
/// 已完成待结算。
/// </summary>
AwaitingPayout = 1,
/// <summary>
/// 已结算。
/// </summary>
Settled = 2,
/// <summary>
/// 因退款失效。
/// </summary>
Invalidated = 3
}

View File

@@ -0,0 +1,27 @@
namespace TakeoutSaaS.Domain.Distribution.Enums;
/// <summary>
/// 合作伙伴状态。
/// </summary>
public enum AffiliateStatus
{
/// <summary>
/// 待审核。
/// </summary>
Pending = 0,
/// <summary>
/// 已激活。
/// </summary>
Active = 1,
/// <summary>
/// 已冻结。
/// </summary>
Suspended = 2,
/// <summary>
/// 已退出。
/// </summary>
Closed = 3
}

View File

@@ -0,0 +1,22 @@
namespace TakeoutSaaS.Domain.Distribution.Enums;
/// <summary>
/// 佣金结算状态。
/// </summary>
public enum PayoutStatus
{
/// <summary>
/// 待打款。
/// </summary>
Pending = 0,
/// <summary>
/// 已打款。
/// </summary>
Paid = 1,
/// <summary>
/// 已驳回。
/// </summary>
Rejected = 2
}