添加项目文件。

This commit is contained in:
2026-05-09 17:06:30 +08:00
parent c60f5fe117
commit 720ef957d4
378 changed files with 14843 additions and 0 deletions
+13
View File
@@ -0,0 +1,13 @@
using MassTransit;
using Microsoft.AspNetCore.Identity;
namespace IdentityService.Domain.Entities
{
public class Role : IdentityRole<Guid>
{
public Role()
{
Id = NewId.NextGuid();
}
}
}
+130
View File
@@ -0,0 +1,130 @@
using IdentityService.Domain.Events;
using IM.DomainCommons;
using MassTransit;
using MediatR;
using Microsoft.AspNetCore.Identity;
using System.ComponentModel.DataAnnotations.Schema;
namespace IdentityService.Domain.Entities
{
public class User : IdentityUser<Guid>, IHasCreationTime, IHasDeletionTime, ISoftDelete, IDomainEvents, IHasModificationTime
{
[NotMapped]
public List<INotification> domainEvents = [];
/// <summary>
/// 用户昵称
/// </summary>
public string NickName { get; private set; } = null!;
/// <summary>
/// 用户签名
/// </summary>
public string Description { get; private set; } = "";
/// <summary>
/// 地区
/// </summary>
public string Region { get; private set; } = "未知地区";
/// <summary>
/// 用户在线状态
/// 0(默认):不在线
/// 1:在线
/// </summary>
//public UserOnlineState OnlineStatus { get; private set; }
/// <summary>
/// 账户状态
/// (0:未激活,1:正常,2:封禁)
/// </summary>
public UserState Status { get; private set; }
/// <summary>
/// 用户头像链接
/// </summary>
public string? Avatar { get; private set; }
public DateTimeOffset CreationTime { get; private set; } = DateTime.Now;
public DateTimeOffset? Deletion { get; private set; }
public bool IsDeleted { get; private set; }
public DateTimeOffset? ModificationTime { get; private set; }
private User() { }
public User(string username, string nickName)
{
Id = NewId.NextGuid();
UserName = username;
NickName = nickName;
}
public void Ban(string reason)
{
if (this.Status == UserState.Banned) return;
this.Status = UserState.Banned;
AddDomainEvent(new UserBannedDomainEvent(this.Id, reason));
}
public void Update(string? nickName, string? region, string? avatar, string? desc)
{
if (nickName != null)
{
if (nickName.Trim() == string.Empty) throw new DomainException("昵称不可为空");
if (nickName.Length > 20) throw new DomainException("昵称不可大于20");
this.NickName = nickName;
}
if (region != null)
{
if (region.Trim() == string.Empty) throw new DomainException("地区不可为空");
if (region.Length > 20) throw new DomainException("地区不可大于20");
this.Region = region;
}
if (avatar != null)
{
this.Avatar = avatar;
}
if (desc != null)
{
this.Description = desc;
}
ModificationTime = DateTime.Now;
AddDomainEvent(new UserProfileUpdateDomainEvent(this));
}
public void SoftDelete()
{
this.IsDeleted = true;
}
public IEnumerable<INotification> GetDomainEvents()
{
return domainEvents;
}
public void AddDomainEvent(INotification eventItem)
{
domainEvents.Add(eventItem);
}
public void AddDomainEventIfAbsent(INotification eventItem)
{
if (!domainEvents.Contains(eventItem))
{
domainEvents.Add(eventItem);
}
}
public void ClearDomainEvents()
{
domainEvents.Clear();
}
}
}