using ContactService.Domain.Events; using IM.DomainCommons; namespace ContactService.Domain.Entities { public class FriendRequest : AggregateRootEntity { /// /// 申请人 /// public Guid OwnerId { get; private set; } /// /// 被申请人 /// public Guid TargetId { get; private set; } /// /// 申请附言 /// public string Description { get; private set; } = "申请添加好友"; /// /// 申请状态(0:待通过,1:拒绝,2:同意,3:拉黑) /// public FriendRequestStatus State { get; private set; } = FriendRequestStatus.Pending; /// /// 备注 /// public string? RemarkName { get; private set; } private FriendRequest() { } public FriendRequest(Guid ownerId, Guid targetId, string? description, string? remarkName) { OwnerId = ownerId; TargetId = targetId; Description = description ?? Description; RemarkName = remarkName; AddDomainEvent(new FriendRequestCreatedDomainEvent(this)); } public void Accept(string remarkName) { if (State != FriendRequestStatus.Pending) { throw new DomainException("只能处理待处理的好友请求"); } State = FriendRequestStatus.Passed; AddDomainEvent(new FriendRequestStateUpdateDomainEvent(this,remarkName)); } public void Reject() { if (State != FriendRequestStatus.Pending) { throw new DomainException("只能处理待处理的好友请求"); } State = FriendRequestStatus.Declined; AddDomainEvent(new FriendRequestStateUpdateDomainEvent(this)); } public void Block() { if (State != FriendRequestStatus.Pending) { throw new DomainException("只能处理待处理的好友请求"); } State = FriendRequestStatus.Blocked; AddDomainEvent(new FriendRequestStateUpdateDomainEvent(this)); } } }