feat: add permission hierarchy tree

This commit is contained in:
2025-12-06 11:53:14 +08:00
parent d34f92ea1d
commit 37dc23f0c1
16 changed files with 1014 additions and 2 deletions

View File

@@ -0,0 +1,58 @@
using System.Text.Json.Serialization;
using TakeoutSaaS.Shared.Abstractions.Serialization;
namespace TakeoutSaaS.Application.Identity.Contracts;
/// <summary>
/// 权限树节点 DTO。
/// </summary>
public sealed record PermissionTreeDto
{
/// <summary>
/// 权限 ID雪花序列化为字符串
/// </summary>
[JsonConverter(typeof(SnowflakeIdJsonConverter))]
public long Id { get; init; }
/// <summary>
/// 租户 ID雪花序列化为字符串
/// </summary>
[JsonConverter(typeof(SnowflakeIdJsonConverter))]
public long TenantId { get; init; }
/// <summary>
/// 父级权限 ID。
/// </summary>
[JsonConverter(typeof(SnowflakeIdJsonConverter))]
public long ParentId { get; init; }
/// <summary>
/// 排序值,值越小越靠前。
/// </summary>
public int SortOrder { get; init; }
/// <summary>
/// 权限类型group/leaf
/// </summary>
public string Type { get; init; } = string.Empty;
/// <summary>
/// 权限名称。
/// </summary>
public string Name { get; init; } = string.Empty;
/// <summary>
/// 权限编码(租户内唯一)。
/// </summary>
public string Code { get; init; } = string.Empty;
/// <summary>
/// 描述。
/// </summary>
public string? Description { get; init; }
/// <summary>
/// 子节点集合。
/// </summary>
public IReadOnlyList<PermissionTreeDto> Children { get; init; } = Array.Empty<PermissionTreeDto>();
}