feat: 扩展领域模型与配置
This commit is contained in:
@@ -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; }
|
||||
}
|
||||
@@ -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; }
|
||||
}
|
||||
@@ -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; }
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
Reference in New Issue
Block a user