添加项目文件。
This commit is contained in:
@@ -0,0 +1,116 @@
|
||||
using GroupService.Domain.Enums;
|
||||
using GroupService.Domain.Events;
|
||||
using IM.DomainCommons;
|
||||
|
||||
namespace GroupService.Domain.Entities
|
||||
{
|
||||
public class Group : AggregateRootEntity
|
||||
{
|
||||
/// <summary>
|
||||
/// 群聊名称
|
||||
/// </summary>
|
||||
public string Name { get; private set; } = "新建群聊";
|
||||
|
||||
/// <summary>
|
||||
/// 群主
|
||||
/// </summary>
|
||||
public Guid GroupMaster { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// 群权限
|
||||
/// (0:需管理员同意,1:任意人可加群,2:不允许任何人加入)
|
||||
/// </summary>
|
||||
public GroupAuthorityType Authority { get; private set; } = GroupAuthorityType.REQUIRE_CONSENT;
|
||||
|
||||
/// <summary>
|
||||
/// 全员禁言(false允许发言,true全员禁言)
|
||||
/// </summary>
|
||||
public bool AllMembersBanned { get; private set; } = false;
|
||||
|
||||
/// <summary>
|
||||
/// 群聊状态
|
||||
/// (1:正常,2:封禁)
|
||||
/// </summary>
|
||||
public GroupState Status { get; private set; } = GroupState.Normal;
|
||||
|
||||
/// <summary>
|
||||
/// 群公告
|
||||
/// </summary>
|
||||
public string Announcement { get; private set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 群头像
|
||||
/// </summary>
|
||||
public string? Avatar { get; private set; } = "https://ts1.tc.mm.bing.net/th/id/OIP-C.XiB9NHwI57WPmotCbXuwawAAAA?rs=1&pid=ImgDetMain&o=7&rm=3";
|
||||
public long MaxSequenceId { get; private set; } = 0;
|
||||
public string LastMessage { get; private set; } = string.Empty;
|
||||
public string LastSenderName { get; private set; } = string.Empty;
|
||||
|
||||
private Group() { }
|
||||
|
||||
public Group(Guid groupMaster, string name = "新建群聊")
|
||||
{
|
||||
Name = name;
|
||||
GroupMaster = groupMaster;
|
||||
AddDomainEvent(new GroupCreateDomainEvent(this));
|
||||
}
|
||||
|
||||
public void setAllMembersBanned(bool isBanned)
|
||||
{
|
||||
if (isBanned == AllMembersBanned) return;
|
||||
|
||||
AllMembersBanned = isBanned;
|
||||
|
||||
AddDomainEvent(new AllMembersBannedDomainEvent(this));
|
||||
}
|
||||
|
||||
public void Ban()
|
||||
{
|
||||
Status = GroupState.Blocked;
|
||||
ModificationTime = DateTime.Now;
|
||||
AddDomainEvent(new GroupBlockedDomainEvent(this));
|
||||
}
|
||||
|
||||
public void Update(string? name, GroupAuthorityType? groupAuthority, string? announcement, string? avatar)
|
||||
{
|
||||
bool isChanged = false;
|
||||
if (name != null)
|
||||
{
|
||||
Name = name;
|
||||
isChanged = true;
|
||||
}
|
||||
|
||||
if (groupAuthority != null)
|
||||
{
|
||||
Authority = groupAuthority.Value;
|
||||
isChanged = true;
|
||||
}
|
||||
|
||||
if (announcement != null)
|
||||
{
|
||||
Announcement = announcement;
|
||||
isChanged = true;
|
||||
}
|
||||
if (avatar != null)
|
||||
{
|
||||
Avatar = avatar;
|
||||
isChanged = true;
|
||||
}
|
||||
|
||||
if (isChanged)
|
||||
{
|
||||
ModificationTime = DateTime.Now;
|
||||
AddDomainEvent(new GroupUpdateDomainEvent(this));
|
||||
}
|
||||
}
|
||||
|
||||
public void UpdateLastMsg(long maxSequenceId, string lastMsg, string lastSenderName)
|
||||
{
|
||||
MaxSequenceId = maxSequenceId;
|
||||
LastMessage = lastMsg;
|
||||
LastSenderName = lastSenderName;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user