chore: 提交当前变更

This commit is contained in:
2025-11-23 12:47:29 +08:00
parent cd52131c34
commit 429d4fb747
46 changed files with 1864 additions and 63 deletions

View File

@@ -0,0 +1,61 @@
using System.Collections.Generic;
using TakeoutSaaS.Domain.Dictionary.Enums;
using TakeoutSaaS.Shared.Abstractions.Entities;
namespace TakeoutSaaS.Domain.Dictionary.Entities;
/// <summary>
/// 参数字典分组(系统参数/业务参数)。
/// </summary>
public sealed class DictionaryGroup : IMultiTenantEntity, IAuditableEntity
{
/// <summary>
/// 分组 ID。
/// </summary>
public Guid Id { get; set; }
/// <summary>
/// 所属租户(系统参数为 Guid.Empty
/// </summary>
public Guid TenantId { get; set; }
/// <summary>
/// 分组编码(唯一)。
/// </summary>
public string Code { get; set; } = string.Empty;
/// <summary>
/// 分组名称。
/// </summary>
public string Name { get; set; } = string.Empty;
/// <summary>
/// 分组作用域:系统/业务。
/// </summary>
public DictionaryScope Scope { get; set; } = DictionaryScope.Business;
/// <summary>
/// 描述信息。
/// </summary>
public string? Description { get; set; }
/// <summary>
/// 是否启用。
/// </summary>
public bool IsEnabled { get; set; } = true;
/// <summary>
/// 创建时间UTC
/// </summary>
public DateTime CreatedAt { get; set; }
/// <summary>
/// 更新时间UTC
/// </summary>
public DateTime? UpdatedAt { get; set; }
/// <summary>
/// 字典项集合。
/// </summary>
public ICollection<DictionaryItem> Items { get; set; } = new List<DictionaryItem>();
}

View File

@@ -0,0 +1,69 @@
using TakeoutSaaS.Shared.Abstractions.Entities;
namespace TakeoutSaaS.Domain.Dictionary.Entities;
/// <summary>
/// 参数字典项。
/// </summary>
public sealed class DictionaryItem : IMultiTenantEntity, IAuditableEntity
{
/// <summary>
/// 字典项 ID。
/// </summary>
public Guid Id { get; set; }
/// <summary>
/// 所属租户。
/// </summary>
public Guid TenantId { get; set; }
/// <summary>
/// 关联分组 ID。
/// </summary>
public Guid GroupId { get; set; }
/// <summary>
/// 字典项键。
/// </summary>
public string Key { get; set; } = string.Empty;
/// <summary>
/// 字典项值。
/// </summary>
public string Value { get; set; } = string.Empty;
/// <summary>
/// 是否默认项。
/// </summary>
public bool IsDefault { get; set; }
/// <summary>
/// 是否启用。
/// </summary>
public bool IsEnabled { get; set; } = true;
/// <summary>
/// 排序值,越小越靠前。
/// </summary>
public int SortOrder { get; set; }
/// <summary>
/// 描述信息。
/// </summary>
public string? Description { get; set; }
/// <summary>
/// 创建时间UTC
/// </summary>
public DateTime CreatedAt { get; set; }
/// <summary>
/// 更新时间UTC
/// </summary>
public DateTime? UpdatedAt { get; set; }
/// <summary>
/// 导航属性:所属分组。
/// </summary>
public DictionaryGroup? Group { get; set; }
}

View File

@@ -0,0 +1,17 @@
namespace TakeoutSaaS.Domain.Dictionary.Enums;
/// <summary>
/// 参数字典作用域。
/// </summary>
public enum DictionaryScope
{
/// <summary>
/// 系统级参数,所有租户共享。
/// </summary>
System = 1,
/// <summary>
/// 业务级参数,仅当前租户可见。
/// </summary>
Business = 2
}

View File

@@ -0,0 +1,68 @@
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using TakeoutSaaS.Domain.Dictionary.Entities;
using TakeoutSaaS.Domain.Dictionary.Enums;
namespace TakeoutSaaS.Domain.Dictionary.Repositories;
/// <summary>
/// 参数字典仓储契约。
/// </summary>
public interface IDictionaryRepository
{
/// <summary>
/// 依据 ID 获取分组。
/// </summary>
Task<DictionaryGroup?> FindGroupByIdAsync(Guid id, CancellationToken cancellationToken = default);
/// <summary>
/// 依据编码获取分组。
/// </summary>
Task<DictionaryGroup?> FindGroupByCodeAsync(string code, CancellationToken cancellationToken = default);
/// <summary>
/// 搜索分组,可按作用域过滤。
/// </summary>
Task<IReadOnlyList<DictionaryGroup>> SearchGroupsAsync(DictionaryScope? scope, CancellationToken cancellationToken = default);
/// <summary>
/// 新增分组。
/// </summary>
Task AddGroupAsync(DictionaryGroup group, CancellationToken cancellationToken = default);
/// <summary>
/// 删除分组。
/// </summary>
Task RemoveGroupAsync(DictionaryGroup group, CancellationToken cancellationToken = default);
/// <summary>
/// 依据 ID 获取字典项。
/// </summary>
Task<DictionaryItem?> FindItemByIdAsync(Guid id, CancellationToken cancellationToken = default);
/// <summary>
/// 获取某分组下的所有字典项。
/// </summary>
Task<IReadOnlyList<DictionaryItem>> GetItemsByGroupIdAsync(Guid groupId, CancellationToken cancellationToken = default);
/// <summary>
/// 按分组编码集合获取字典项(可包含系统参数)。
/// </summary>
Task<IReadOnlyList<DictionaryItem>> GetItemsByCodesAsync(IEnumerable<string> codes, Guid tenantId, bool includeSystem, CancellationToken cancellationToken = default);
/// <summary>
/// 新增字典项。
/// </summary>
Task AddItemAsync(DictionaryItem item, CancellationToken cancellationToken = default);
/// <summary>
/// 删除字典项。
/// </summary>
Task RemoveItemAsync(DictionaryItem item, CancellationToken cancellationToken = default);
/// <summary>
/// 持久化更改。
/// </summary>
Task SaveChangesAsync(CancellationToken cancellationToken = default);
}

View File

@@ -1,11 +1,11 @@
using System;
using TakeoutSaaS.Shared.Abstractions.Entities;
namespace TakeoutSaaS.Domain.Identity.Entities;
/// <summary>
/// 后台账实体(平台/商户/员工)。
/// 管理后台账实体(平台、租户或商户员工)。
/// </summary>
public sealed class IdentityUser
public sealed class IdentityUser : IMultiTenantEntity
{
/// <summary>
/// 用户 ID。

View File

@@ -1,11 +1,11 @@
using System;
using TakeoutSaaS.Shared.Abstractions.Entities;
namespace TakeoutSaaS.Domain.Identity.Entities;
/// <summary>
/// 小程序用户。
/// 小程序用户实体
/// </summary>
public sealed class MiniUser
public sealed class MiniUser : IMultiTenantEntity
{
/// <summary>
/// 用户 ID。
@@ -18,7 +18,7 @@ public sealed class MiniUser
public string OpenId { get; set; } = string.Empty;
/// <summary>
/// 微信 UnionId可为空。
/// 微信 UnionId为空。
/// </summary>
public string? UnionId { get; set; }