feat: 基础模块

注册登录
用户管理
角色管理
部门管理
消息管理
接口管理
菜单管理
字典管理
缓存管理
请求日志
系统设置
版本信息
代码生成
This commit is contained in:
tk
2023-11-17 18:54:31 +08:00
parent 18b4d7547a
commit d26e4c77cc
755 changed files with 30416 additions and 42743 deletions

View File

@ -16,9 +16,7 @@ public record Sys_Api : ImmutableEntity<string>, IFieldSummary
[Navigate(nameof(ParentId))]
public IEnumerable<Sys_Api> Children { get; init; }
/// <summary>
/// 唯一编码
/// </summary>
/// <inheritdoc cref="IFieldPrimary{T}.Id" />
[JsonIgnore]
[Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_127, IsIdentity = false, IsPrimary = true, Position = 1)]
public override string Id { get; init; }
@ -42,7 +40,9 @@ public record Sys_Api : ImmutableEntity<string>, IFieldSummary
/// </summary>
[JsonIgnore]
[Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_31)]
#pragma warning disable CA1716
public virtual string Namespace { get; init; }
#pragma warning restore CA1716
/// <summary>
/// 父编号

View File

@ -44,6 +44,13 @@ public record Sys_Dept : VersionEntity, IFieldEnabled, IFieldSummary, IFieldSort
[Navigate(ManyToMany = typeof(Sys_RoleDept))]
public ICollection<Sys_Role> Roles { get; init; }
/// <summary>
/// 发送给此部门的站内信集合
/// </summary>
[JsonIgnore]
[Navigate(ManyToMany = typeof(Sys_SiteMsgDept))]
public ICollection<Sys_SiteMsg> SiteMsgs { get; init; }
/// <summary>
/// 排序值,越大越前
/// </summary>

View File

@ -7,7 +7,7 @@ namespace NetAdmin.Domain.DbMaps.Sys;
/// <summary>
/// 菜单表
/// </summary>
[Table(Name = "Sys_Menu")]
[Table(Name = Chars.FLG_TABLE_NAME_PREFIX + nameof(Sys_Menu))]
[Index($"idx_{{tablename}}_{nameof(Name)}", nameof(Name), true)]
public record Sys_Menu : VersionEntity, IFieldSort
{

View File

@ -6,7 +6,7 @@ namespace NetAdmin.Domain.DbMaps.Sys;
/// <summary>
/// 请求日志表
/// </summary>
[Table(Name = "Sys_RequestLog")]
[Table(Name = Chars.FLG_TABLE_NAME_PREFIX + nameof(Sys_RequestLog))]
public record Sys_RequestLog : ImmutableEntity, IFieldCreatedClient
{
/// <summary>

View File

@ -68,6 +68,13 @@ public record Sys_Role : VersionEntity, IFieldSort, IFieldEnabled, IFieldSummary
[Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_31)]
public virtual string Name { get; init; }
/// <summary>
/// 发送给此角色的站内信集合
/// </summary>
[JsonIgnore]
[Navigate(ManyToMany = typeof(Sys_SiteMsgRole))]
public ICollection<Sys_SiteMsg> SiteMsgs { get; init; }
/// <summary>
/// 排序值,越大越前
/// </summary>

View File

@ -0,0 +1,101 @@
using NetAdmin.Domain.DbMaps.Dependency;
using NetAdmin.Domain.DbMaps.Dependency.Fields;
using NetAdmin.Domain.Dto.Sys.SiteMsg;
using NetAdmin.Domain.Enums.Sys;
namespace NetAdmin.Domain.DbMaps.Sys;
/// <summary>
/// 站内信表
/// </summary>
[Table(Name = Chars.FLG_TABLE_NAME_PREFIX + nameof(Sys_SiteMsg))]
public record Sys_SiteMsg : VersionEntity, IRegister, IFieldSummary
{
/// <summary>
/// 消息内容
/// </summary>
[JsonIgnore]
[Column(DbType = Chars.FLG_DB_FIELD_TYPE_TEXT)]
public virtual string Content { get; init; }
/// <summary>
/// 消息-创建者映射
/// </summary>
[JsonIgnore]
[Navigate(nameof(CreatedUserId))]
public virtual Sys_User Creator { get; init; }
/// <summary>
/// 消息-部门映射
/// </summary>
[JsonIgnore]
[Navigate(ManyToMany = typeof(Sys_SiteMsgDept))]
public virtual ICollection<Sys_Dept> Depts { get; init; }
/// <summary>
/// 消息-标记映射
/// </summary>
[JsonIgnore]
[Navigate(nameof(Sys_SiteMsgFlag.SiteMsgId))]
public ICollection<Sys_SiteMsgFlag> Flags { get; set; }
/// <summary>
/// 消息类型
/// </summary>
[JsonIgnore]
public virtual SiteMsgTypes MsgType { get; init; }
/// <summary>
/// 消息-角色映射
/// </summary>
[JsonIgnore]
[Navigate(ManyToMany = typeof(Sys_SiteMsgRole))]
public virtual ICollection<Sys_Role> Roles { get; init; }
/// <summary>
/// 消息摘要
/// </summary>
[JsonIgnore]
[Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)]
public virtual string Summary { get; init; }
/// <summary>
/// 消息主题
/// </summary>
[JsonIgnore]
[Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)]
public virtual string Title { get; init; }
/// <summary>
/// 消息-用户映射
/// </summary>
[JsonIgnore]
[Navigate(ManyToMany = typeof(Sys_SiteMsgUser))]
public virtual ICollection<Sys_User> Users { get; init; }
/// <inheritdoc />
public void Register(TypeAdapterConfig config)
{
_ = config.ForType<CreateSiteMsgReq, Sys_SiteMsg>()
.Map( //
d => d.Summary, s => s.Content.RemoveHtmlTag().HtmlDe().Sub(0, 100))
.Map( //
d => d.Roles
, s => s.RoleIds.NullOrEmpty()
? Array.Empty<Sys_Role>()
: s.RoleIds.Select(x => new Sys_Role { Id = x }))
.Map( //
d => d.Users
, s => s.UserIds.NullOrEmpty()
? Array.Empty<Sys_User>()
: s.UserIds.Select(x => new Sys_User { Id = x }))
.Map( //
d => d.Depts
, s => s.DeptIds.NullOrEmpty()
? Array.Empty<Sys_Dept>()
: s.DeptIds.Select(x => new Sys_Dept { Id = x }))
//
;
}
}

View File

@ -0,0 +1,37 @@
using NetAdmin.Domain.DbMaps.Dependency;
namespace NetAdmin.Domain.DbMaps.Sys;
/// <summary>
/// 站内信-部门映射表
/// </summary>
[Table(Name = Chars.FLG_TABLE_NAME_PREFIX + nameof(Sys_SiteMsgDept))]
[Index($"idx_{{tablename}}_{nameof(DeptId)}_{nameof(SiteMsgId)}", $"{nameof(DeptId)},{nameof(SiteMsgId)}", true)]
public record Sys_SiteMsgDept : ImmutableEntity
{
/// <summary>
/// 关联的部门
/// </summary>
[JsonIgnore]
public Sys_Dept Dept { get; init; }
/// <summary>
/// 部门编号
/// </summary>
[JsonIgnore]
[Column]
public virtual long DeptId { get; init; }
/// <summary>
/// 关联的站内信
/// </summary>
[JsonIgnore]
public Sys_SiteMsg SiteMsg { get; init; }
/// <summary>
/// 站内信编号
/// </summary>
[JsonIgnore]
[Column]
public virtual long SiteMsgId { get; init; }
}

View File

@ -0,0 +1,29 @@
using NetAdmin.Domain.DbMaps.Dependency;
namespace NetAdmin.Domain.DbMaps.Sys;
/// <summary>
/// 站内信标记表
/// </summary>
[Table(Name = Chars.FLG_TABLE_NAME_PREFIX + nameof(Sys_SiteMsgFlag))]
[Index($"idx_{{tablename}}_{nameof(SiteMsgId)}_{nameof(UserId)}", $"{nameof(SiteMsgId)},{nameof(UserId)}", true)]
public record Sys_SiteMsgFlag : MutableEntity
{
/// <summary>
/// 站内信编号
/// </summary>
[JsonIgnore]
public virtual long SiteMsgId { get; set; }
/// <summary>
/// 用户编号
/// </summary>
[JsonIgnore]
public virtual long UserId { get; set; }
/// <summary>
/// 用户站内信状态
/// </summary>
[JsonIgnore]
public virtual UserSiteMsgStatues UserSiteMsgStatus { get; set; }
}

View File

@ -0,0 +1,37 @@
using NetAdmin.Domain.DbMaps.Dependency;
namespace NetAdmin.Domain.DbMaps.Sys;
/// <summary>
/// 站内信-角色映射表
/// </summary>
[Table(Name = Chars.FLG_TABLE_NAME_PREFIX + nameof(Sys_SiteMsgRole))]
[Index($"idx_{{tablename}}_{nameof(RoleId)}_{nameof(SiteMsgId)}", $"{nameof(RoleId)},{nameof(SiteMsgId)}", true)]
public record Sys_SiteMsgRole : ImmutableEntity
{
/// <summary>
/// 关联的角色
/// </summary>
[JsonIgnore]
public Sys_Role Role { get; init; }
/// <summary>
/// 角色编号
/// </summary>
[JsonIgnore]
[Column]
public virtual long RoleId { get; init; }
/// <summary>
/// 关联的站内信
/// </summary>
[JsonIgnore]
public Sys_SiteMsg SiteMsg { get; init; }
/// <summary>
/// 站内信编号
/// </summary>
[JsonIgnore]
[Column]
public virtual long SiteMsgId { get; init; }
}

View File

@ -0,0 +1,37 @@
using NetAdmin.Domain.DbMaps.Dependency;
namespace NetAdmin.Domain.DbMaps.Sys;
/// <summary>
/// 站内信-用户映射表
/// </summary>
[Table(Name = Chars.FLG_TABLE_NAME_PREFIX + nameof(Sys_SiteMsgUser))]
[Index($"idx_{{tablename}}_{nameof(UserId)}_{nameof(SiteMsgId)}", $"{nameof(UserId)},{nameof(SiteMsgId)}", true)]
public record Sys_SiteMsgUser : ImmutableEntity
{
/// <summary>
/// 关联的站内信
/// </summary>
[JsonIgnore]
public Sys_SiteMsg SiteMsg { get; init; }
/// <summary>
/// 站内信编号
/// </summary>
[JsonIgnore]
[Column]
public virtual long SiteMsgId { get; init; }
/// <summary>
/// 关联的用户
/// </summary>
[JsonIgnore]
public Sys_User User { get; init; }
/// <summary>
/// 用户编号
/// </summary>
[JsonIgnore]
[Column]
public virtual long UserId { get; init; }
}

View File

@ -60,7 +60,7 @@ public record Sys_User : VersionEntity, IFieldSummary, IFieldEnabled, IRegister
/// </summary>
[JsonIgnore]
[Column]
public Guid Password { get; set; }
public Guid Password { get; init; }
/// <summary>
/// 用户档案
@ -75,6 +75,13 @@ public record Sys_User : VersionEntity, IFieldSummary, IFieldEnabled, IRegister
[Navigate(ManyToMany = typeof(Sys_UserRole))]
public ICollection<Sys_Role> Roles { get; init; }
/// <summary>
/// 发送给此用户的站内信集合
/// </summary>
[JsonIgnore]
[Navigate(ManyToMany = typeof(Sys_SiteMsgUser))]
public ICollection<Sys_SiteMsg> SiteMsgs { get; init; }
/// <summary>
/// 描述
/// </summary>

View File

@ -6,7 +6,7 @@ namespace NetAdmin.Domain.DbMaps.Sys;
/// <summary>
/// 用户档案表
/// </summary>
[Table(Name = "Sys_UserProfile")]
[Table(Name = Chars.FLG_TABLE_NAME_PREFIX + nameof(Sys_UserProfile))]
public record Sys_UserProfile : VersionEntity, IRegister
{
/// <summary>