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,34 @@
using TakeoutSaaS.Shared.Abstractions.Entities;
namespace TakeoutSaaS.Domain.Membership.Entities;
/// <summary>
/// 成长值变动日志。
/// </summary>
public sealed class MemberGrowthLog : MultiTenantEntityBase
{
/// <summary>
/// 会员标识。
/// </summary>
public Guid MemberId { get; set; }
/// <summary>
/// 变动数量。
/// </summary>
public int ChangeValue { get; set; }
/// <summary>
/// 当前成长值。
/// </summary>
public int CurrentValue { get; set; }
/// <summary>
/// 备注。
/// </summary>
public string? Notes { get; set; }
/// <summary>
/// 发生时间。
/// </summary>
public DateTime OccurredAt { get; set; } = DateTime.UtcNow;
}

View File

@@ -0,0 +1,45 @@
using TakeoutSaaS.Domain.Membership.Enums;
using TakeoutSaaS.Shared.Abstractions.Entities;
namespace TakeoutSaaS.Domain.Membership.Entities;
/// <summary>
/// 积分变动流水。
/// </summary>
public sealed class MemberPointLedger : MultiTenantEntityBase
{
/// <summary>
/// 会员标识。
/// </summary>
public Guid MemberId { get; set; }
/// <summary>
/// 变动数量,可为负值。
/// </summary>
public int ChangeAmount { get; set; }
/// <summary>
/// 变动后余额。
/// </summary>
public int BalanceAfterChange { get; set; }
/// <summary>
/// 变动原因。
/// </summary>
public PointChangeReason Reason { get; set; } = PointChangeReason.Purchase;
/// <summary>
/// 来源 ID订单、活动等
/// </summary>
public Guid? SourceId { get; set; }
/// <summary>
/// 发生时间。
/// </summary>
public DateTime OccurredAt { get; set; } = DateTime.UtcNow;
/// <summary>
/// 过期时间(如适用)。
/// </summary>
public DateTime? ExpireAt { get; set; }
}

View File

@@ -0,0 +1,60 @@
using TakeoutSaaS.Domain.Membership.Enums;
using TakeoutSaaS.Shared.Abstractions.Entities;
namespace TakeoutSaaS.Domain.Membership.Entities;
/// <summary>
/// 会员档案。
/// </summary>
public sealed class MemberProfile : MultiTenantEntityBase
{
/// <summary>
/// 用户标识。
/// </summary>
public Guid UserId { get; set; }
/// <summary>
/// 手机号。
/// </summary>
public string Mobile { get; set; } = string.Empty;
/// <summary>
/// 昵称。
/// </summary>
public string? Nickname { get; set; }
/// <summary>
/// 头像。
/// </summary>
public string? AvatarUrl { get; set; }
/// <summary>
/// 当前会员等级 ID。
/// </summary>
public Guid? MemberTierId { get; set; }
/// <summary>
/// 会员状态。
/// </summary>
public MemberStatus Status { get; set; } = MemberStatus.Active;
/// <summary>
/// 会员积分余额。
/// </summary>
public int PointsBalance { get; set; }
/// <summary>
/// 成长值/经验值。
/// </summary>
public int GrowthValue { get; set; }
/// <summary>
/// 生日。
/// </summary>
public DateTime? BirthDate { get; set; }
/// <summary>
/// 注册时间。
/// </summary>
public DateTime JoinedAt { get; set; } = DateTime.UtcNow;
}

View File

@@ -0,0 +1,29 @@
using TakeoutSaaS.Shared.Abstractions.Entities;
namespace TakeoutSaaS.Domain.Membership.Entities;
/// <summary>
/// 会员等级定义。
/// </summary>
public sealed class MemberTier : MultiTenantEntityBase
{
/// <summary>
/// 等级名称。
/// </summary>
public string Name { get; set; } = string.Empty;
/// <summary>
/// 所需成长值。
/// </summary>
public int RequiredGrowth { get; set; }
/// <summary>
/// 等级权益JSON
/// </summary>
public string BenefitsJson { get; set; } = string.Empty;
/// <summary>
/// 排序值。
/// </summary>
public int SortOrder { get; set; } = 100;
}

View File

@@ -0,0 +1,22 @@
namespace TakeoutSaaS.Domain.Membership.Enums;
/// <summary>
/// 会员状态。
/// </summary>
public enum MemberStatus
{
/// <summary>
/// 正常。
/// </summary>
Active = 0,
/// <summary>
/// 已冻结。
/// </summary>
Frozen = 1,
/// <summary>
/// 已注销。
/// </summary>
Cancelled = 2
}

View File

@@ -0,0 +1,32 @@
namespace TakeoutSaaS.Domain.Membership.Enums;
/// <summary>
/// 积分变动原因。
/// </summary>
public enum PointChangeReason
{
/// <summary>
/// 正常消费获得。
/// </summary>
Purchase = 0,
/// <summary>
/// 活动奖励。
/// </summary>
Promotion = 1,
/// <summary>
/// 签到或任务。
/// </summary>
Task = 2,
/// <summary>
/// 管理员调整。
/// </summary>
Manual = 3,
/// <summary>
/// 抵扣消费。
/// </summary>
Redeem = 4
}