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