using GroupService.Domain.Enums; using GroupService.Domain.Events; using GroupService.Domain.ValueObjects; using IM.DomainCommons; namespace GroupService.Domain.Entities { public class GroupInvitation : AggregateRootEntity { /// /// 群聊编号 /// public Guid GroupId { get; private set; } public GroupProfile GroupProfile { get; private set; } /// /// 被邀请用户 /// public Guid UserId { get; private set; } public UserProfile UserProfile { get; private set; } /// /// 邀请用户 /// public Guid OperatorId { get; private set; } public UserProfile OperatorProfile { get; private set; } /// /// 当前状态(0:待被邀请人同意 /// 1:被邀请人已同意) /// public GroupInvitationState State { get; private set; } = GroupInvitationState.Pending; private GroupInvitation() { } public GroupInvitation(Guid groupId, GroupProfile groupProfile, Guid userId, UserProfile userProfile, Guid operatorId, UserProfile operatorProfile) { GroupId = groupId; GroupProfile = groupProfile; UserId = userId; UserProfile = userProfile; OperatorId = operatorId; OperatorProfile = operatorProfile; AddDomainEvent(new GroupInvitationCreateDomainEvent(this)); } public void Accept() { if (State != GroupInvitationState.Pending) return; State = GroupInvitationState.Passed; ModificationTime = DateTime.Now; AddDomainEvent(new GroupInvitationAcceptDomainEvent(this)); } public void Reject() { if (State != GroupInvitationState.Pending) return; State = GroupInvitationState.Reject; ModificationTime = DateTime.Now; } } }