forked from xiongyuxing/tiku-backend.net
258 lines
10 KiB
C#
258 lines
10 KiB
C#
using System.Text.Json;
|
|
using Tiku.Domain.Common;
|
|
|
|
namespace Tiku.Domain.Operations;
|
|
|
|
public sealed class Banner : AuditableTenantEntity
|
|
{
|
|
public Guid? RegionId { get; set; }
|
|
public string? LegacyId { get; set; }
|
|
public string? Title { get; set; }
|
|
public string? Subtitle { get; set; }
|
|
public string? Content { get; set; }
|
|
public string? ButtonText { get; set; }
|
|
public string? ButtonLink { get; set; }
|
|
public string? BackgroundColor { get; set; }
|
|
public string? BorderColor { get; set; }
|
|
public int SortOrder { get; set; }
|
|
public bool IsActive { get; set; } = true;
|
|
}
|
|
|
|
public sealed class Faq : AuditableTenantEntity
|
|
{
|
|
public Guid? RegionId { get; set; }
|
|
public string? LegacyId { get; set; }
|
|
public string? Question { get; set; }
|
|
public string? Answer { get; set; }
|
|
public int SortOrder { get; set; }
|
|
public bool IsActive { get; set; } = true;
|
|
}
|
|
|
|
public sealed class Announcement : AuditableTenantEntity
|
|
{
|
|
public string? LegacyId { get; set; }
|
|
public string? Content { get; set; }
|
|
public string? Link { get; set; }
|
|
public string? BackgroundColor { get; set; }
|
|
public int SortOrder { get; set; }
|
|
public bool IsActive { get; set; } = true;
|
|
}
|
|
|
|
public sealed class AuditLog : Entity
|
|
{
|
|
public Guid? TenantId { get; set; }
|
|
public Guid? ActorUserId { get; set; }
|
|
public string Action { get; set; } = string.Empty;
|
|
public string? TargetType { get; set; }
|
|
public string? TargetId { get; set; }
|
|
public JsonElement Details { get; set; } = JsonDefaults.Object();
|
|
public string? IpAddress { get; set; }
|
|
public string? UserAgent { get; set; }
|
|
public DateTimeOffset CreatedAt { get; set; } = DateTimeOffset.UtcNow;
|
|
}
|
|
|
|
public sealed class BackendPermission : AuditableEntity
|
|
{
|
|
public string Code { get; set; } = string.Empty;
|
|
public string Name { get; set; } = string.Empty;
|
|
public BackendPermissionArea Area { get; set; } = BackendPermissionArea.Tenant;
|
|
public string Module { get; set; } = string.Empty;
|
|
public string? Description { get; set; }
|
|
public bool IsSystem { get; set; } = true;
|
|
public int SortOrder { get; set; } = 100;
|
|
}
|
|
|
|
public sealed class BackendMenu : AuditableEntity
|
|
{
|
|
public string Code { get; set; } = string.Empty;
|
|
public string? ParentCode { get; set; }
|
|
public string Title { get; set; } = string.Empty;
|
|
public BackendPermissionArea Area { get; set; } = BackendPermissionArea.Tenant;
|
|
public string? Path { get; set; }
|
|
public string? Icon { get; set; }
|
|
public string? PermissionCode { get; set; }
|
|
public int SortOrder { get; set; } = 100;
|
|
public bool IsActive { get; set; } = true;
|
|
}
|
|
|
|
public sealed class TenantBackendRole : AuditableTenantEntity
|
|
{
|
|
public string Code { get; set; } = string.Empty;
|
|
public string Name { get; set; } = string.Empty;
|
|
public BackendRoleStatus Status { get; set; } = BackendRoleStatus.Active;
|
|
public bool IsSystem { get; set; }
|
|
public string? Description { get; set; }
|
|
public JsonElement DataScope { get; set; } = JsonDefaults.Object();
|
|
}
|
|
|
|
public sealed class TenantBackendRolePermission : Entity, ITenantOwned
|
|
{
|
|
public Guid TenantId { get; set; }
|
|
public Guid RoleId { get; set; }
|
|
public string PermissionCode { get; set; } = string.Empty;
|
|
public DateTimeOffset CreatedAt { get; set; } = DateTimeOffset.UtcNow;
|
|
}
|
|
|
|
public sealed class TenantBackendRoleMenu : Entity, ITenantOwned
|
|
{
|
|
public Guid TenantId { get; set; }
|
|
public Guid RoleId { get; set; }
|
|
public string MenuCode { get; set; } = string.Empty;
|
|
public DateTimeOffset CreatedAt { get; set; } = DateTimeOffset.UtcNow;
|
|
}
|
|
|
|
public sealed class TenantBackendUserRole : Entity, ITenantOwned
|
|
{
|
|
public Guid TenantId { get; set; }
|
|
public Guid UserId { get; set; }
|
|
public Guid RoleId { get; set; }
|
|
public DateTimeOffset CreatedAt { get; set; } = DateTimeOffset.UtcNow;
|
|
}
|
|
|
|
public sealed class PlatformBackendRole : AuditableEntity
|
|
{
|
|
public string Code { get; set; } = string.Empty;
|
|
public string Name { get; set; } = string.Empty;
|
|
public BackendRoleStatus Status { get; set; } = BackendRoleStatus.Active;
|
|
public bool IsSystem { get; set; }
|
|
public string? Description { get; set; }
|
|
}
|
|
|
|
public sealed class PlatformBackendRolePermission : Entity
|
|
{
|
|
public Guid RoleId { get; set; }
|
|
public string PermissionCode { get; set; } = string.Empty;
|
|
public DateTimeOffset CreatedAt { get; set; } = DateTimeOffset.UtcNow;
|
|
}
|
|
|
|
public sealed class PlatformBackendRoleMenu : Entity
|
|
{
|
|
public Guid RoleId { get; set; }
|
|
public string MenuCode { get; set; } = string.Empty;
|
|
public DateTimeOffset CreatedAt { get; set; } = DateTimeOffset.UtcNow;
|
|
}
|
|
|
|
public sealed class PlatformBackendUserRole : Entity
|
|
{
|
|
public Guid UserId { get; set; }
|
|
public Guid RoleId { get; set; }
|
|
public DateTimeOffset CreatedAt { get; set; } = DateTimeOffset.UtcNow;
|
|
}
|
|
|
|
public sealed class BackgroundJob : AuditableTenantEntity
|
|
{
|
|
public string JobType { get; set; } = string.Empty;
|
|
public BackgroundJobStatus Status { get; set; } = BackgroundJobStatus.Pending;
|
|
public JsonElement Payload { get; set; } = JsonDefaults.Object();
|
|
public int RetryCount { get; set; }
|
|
public int MaxRetries { get; set; } = 3;
|
|
public string? LockedBy { get; set; }
|
|
public DateTimeOffset? LockExpiresAt { get; set; }
|
|
public DateTimeOffset? RunAfter { get; set; }
|
|
public DateTimeOffset? StartedAt { get; set; }
|
|
public DateTimeOffset? CompletedAt { get; set; }
|
|
public string? LastError { get; set; }
|
|
public Guid? OutputAssetId { get; set; }
|
|
public JsonElement Result { get; set; } = JsonDefaults.Object();
|
|
}
|
|
|
|
public sealed class UserNotification : AuditableTenantEntity
|
|
{
|
|
public Guid UserId { get; set; }
|
|
public Guid? SourceId { get; set; }
|
|
public Guid? CreatedBy { get; set; }
|
|
public string NotificationType { get; set; } = string.Empty;
|
|
public NotificationStatus Status { get; set; } = NotificationStatus.Unread;
|
|
public NotificationSeverity Severity { get; set; } = NotificationSeverity.Info;
|
|
public string Title { get; set; } = string.Empty;
|
|
public string Message { get; set; } = string.Empty;
|
|
public string? ActionLabel { get; set; }
|
|
public string? ActionPath { get; set; }
|
|
public string? SourceType { get; set; }
|
|
public string? DedupeKey { get; set; }
|
|
public JsonElement Metadata { get; set; } = JsonDefaults.Object();
|
|
public DateTimeOffset? ReadAt { get; set; }
|
|
}
|
|
|
|
public sealed class Badge : AuditableTenantEntity
|
|
{
|
|
public string? LegacyId { get; set; }
|
|
public string Name { get; set; } = string.Empty;
|
|
public string? Description { get; set; }
|
|
public string? Category { get; set; }
|
|
public string? IconUrl { get; set; }
|
|
public int? Level { get; set; }
|
|
public string? UnlockType { get; set; }
|
|
public string? ConditionField { get; set; }
|
|
public string? ConditionOperator { get; set; }
|
|
public decimal? ConditionValue { get; set; }
|
|
public JsonElement ConditionExtra { get; set; } = JsonDefaults.Object();
|
|
public int SortOrder { get; set; }
|
|
public bool IsActive { get; set; } = true;
|
|
}
|
|
|
|
public sealed class UserBadge : AuditableTenantEntity
|
|
{
|
|
public Guid? UserId { get; set; }
|
|
public Guid? BadgeId { get; set; }
|
|
public Guid? GrantedBy { get; set; }
|
|
public string? LegacyId { get; set; }
|
|
public string? Note { get; set; }
|
|
public DateTimeOffset? GrantedAt { get; set; }
|
|
}
|
|
|
|
public sealed class TenantContentNotification : AuditableTenantEntity
|
|
{
|
|
public Guid? AdoptionId { get; set; }
|
|
public Guid? SourceQuestionBankId { get; set; }
|
|
public Guid? CreatedBy { get; set; }
|
|
public Guid? ReadBy { get; set; }
|
|
public TenantContentNotificationType NotificationType { get; set; } = TenantContentNotificationType.PublicQuestionBankSynced;
|
|
public TenantContentNotificationStatus Status { get; set; } = TenantContentNotificationStatus.Unread;
|
|
public NotificationSeverity Severity { get; set; } = NotificationSeverity.Info;
|
|
public string Title { get; set; } = string.Empty;
|
|
public string Message { get; set; } = string.Empty;
|
|
public string? ActionLabel { get; set; }
|
|
public string? ActionPath { get; set; }
|
|
public string? DedupeKey { get; set; }
|
|
public JsonElement Metadata { get; set; } = JsonDefaults.Object();
|
|
public DateTimeOffset? ReadAt { get; set; }
|
|
public DateTimeOffset? ResolvedAt { get; set; }
|
|
}
|
|
|
|
public sealed class TenantThemeTemplate : AuditableEntity
|
|
{
|
|
public string Code { get; set; } = string.Empty;
|
|
public string Name { get; set; } = string.Empty;
|
|
public string? Description { get; set; }
|
|
public string? PreviewImageUrl { get; set; }
|
|
public JsonElement Theme { get; set; } = JsonDefaults.Object();
|
|
public JsonElement PublicAssets { get; set; } = JsonDefaults.Object();
|
|
public TenantThemeTemplateStatus Status { get; set; } = TenantThemeTemplateStatus.Active;
|
|
public int SortOrder { get; set; } = 100;
|
|
}
|
|
|
|
public sealed class TenantThemeConfig : AuditableTenantEntity
|
|
{
|
|
public string? ActiveTemplateCode { get; set; }
|
|
public JsonElement ActiveTheme { get; set; } = JsonDefaults.Object();
|
|
public JsonElement ActivePublicAssets { get; set; } = JsonDefaults.Object();
|
|
public string? DraftTemplateCode { get; set; }
|
|
public JsonElement DraftTheme { get; set; } = JsonDefaults.Object();
|
|
public JsonElement DraftPublicAssets { get; set; } = JsonDefaults.Object();
|
|
public TenantThemeConfigStatus Status { get; set; } = TenantThemeConfigStatus.Published;
|
|
public DateTimeOffset? PublishedAt { get; set; }
|
|
public Guid? PublishedBy { get; set; }
|
|
public Guid? DraftUpdatedBy { get; set; }
|
|
}
|
|
|
|
public enum NotificationStatus { Unread, Read, Dismissed, Archived }
|
|
public enum NotificationSeverity { Info, Success, Warning, Error }
|
|
public enum TenantContentNotificationType { PublicQuestionBankSynced, PublicQuestionBankConflict }
|
|
public enum TenantContentNotificationStatus { Unread, Read, Dismissed, Resolved }
|
|
public enum TenantThemeTemplateStatus { Active, Disabled }
|
|
public enum TenantThemeConfigStatus { Draft, Published }
|
|
public enum BackendPermissionArea { Platform, Tenant, Both }
|
|
public enum BackendRoleStatus { Active, Disabled, Archived }
|
|
public enum BackgroundJobStatus { Pending, Processing, Succeeded, Failed, Cancelled }
|