feat: add tenant admin engagement endpoints

This commit is contained in:
xiong
2026-07-26 19:15:39 +08:00
parent dca6e8c66d
commit 28befc57be
6 changed files with 930 additions and 0 deletions

View File

@@ -1,5 +1,6 @@
using System.Text.Json;
using Tiku.Domain.Common;
using Tiku.Domain.Learning;
using Tiku.Domain.Operations;
using Tiku.Domain.Tenancy;
@@ -47,6 +48,29 @@ public sealed record TenantAdminRoleTemplateFilter(
string? Status = null,
int? Limit = null);
public sealed record TenantAdminBadgeFilter(
string? Category = null,
bool IncludeInactive = false,
int? Limit = null);
public sealed record TenantAdminBadgeGrantFilter(
Guid? UserId = null,
Guid? BadgeId = null,
int? Limit = null);
public sealed record TenantAdminNotificationFilter(
Guid? UserId = null,
string? Status = null,
string? NotificationType = null,
int? Limit = null);
public sealed record TenantAdminFeedbackFilter(
Guid? UserId = null,
string? Status = null,
string? Type = null,
string? Keyword = null,
int? Limit = null);
public sealed record UpsertTenantAdminClassCommand(
Guid? Id,
Guid? RegionId,
@@ -171,6 +195,51 @@ public sealed record UpsertTenantAuthProviderCommand(
string? DisplayName,
JsonElement ConfigPublic);
public sealed record UpsertTenantAdminBadgeCommand(
Guid? Id,
string? LegacyId,
string Name,
string? Description,
string? Category,
string? IconUrl,
int? Level,
string? UnlockType,
string? ConditionField,
string? ConditionOperator,
decimal? ConditionValue,
JsonElement ConditionExtra,
int? Order,
bool? IsActive);
public sealed record GrantTenantAdminBadgeCommand(
Guid UserId,
Guid BadgeId,
string? LegacyId,
string? Note,
DateTimeOffset? GrantedAt,
JsonElement Metadata);
public sealed record UpsertTenantAdminNotificationCommand(
Guid UserId,
string NotificationType,
string? Severity,
string Title,
string Message,
string? ActionLabel,
string? ActionPath,
string? SourceType,
Guid? SourceId,
string? DedupeKey,
JsonElement Metadata);
public sealed record UpdateTenantAdminFeedbackCommand(
Guid FeedbackId,
string? Status,
string? Priority,
string? Resolution,
string? Note,
JsonElement Metadata);
public sealed record TenantAdminClassList(
IReadOnlyCollection<TenantAdminClassItem> Items,
bool Scoped);
@@ -403,6 +472,82 @@ public sealed record TenantAuthProviderItem(
DateTimeOffset CreatedAt,
DateTimeOffset UpdatedAt);
public sealed record TenantAdminBadgeItem(
Guid Id,
string? LegacyId,
string Name,
string? Description,
string? Category,
string? IconUrl,
int? Level,
string? UnlockType,
string? ConditionField,
string? ConditionOperator,
decimal? ConditionValue,
JsonElement ConditionExtra,
int Order,
bool IsActive,
DateTimeOffset CreatedAt,
DateTimeOffset UpdatedAt);
public sealed record TenantAdminBadgeGrantItem(
Guid Id,
string? LegacyId,
Guid? UserId,
string? UserName,
string? UserPhone,
Guid? BadgeId,
string? BadgeName,
string? BadgeCategory,
string? IconUrl,
int? Level,
Guid? GrantedBy,
string? GrantedByName,
string? Note,
DateTimeOffset? GrantedAt,
DateTimeOffset CreatedAt,
DateTimeOffset UpdatedAt);
public sealed record TenantAdminNotificationItem(
Guid Id,
Guid UserId,
string NotificationType,
NotificationStatus Status,
NotificationSeverity Severity,
string Title,
string Message,
string? ActionLabel,
string? ActionPath,
string? SourceType,
Guid? SourceId,
string? DedupeKey,
JsonElement Metadata,
Guid? CreatedBy,
DateTimeOffset? ReadAt,
DateTimeOffset CreatedAt,
DateTimeOffset UpdatedAt);
public sealed record TenantAdminFeedbackItem(
Guid Id,
Guid? UserId,
string? UserName,
string? UserPhone,
Guid? QuestionId,
ReportType? Type,
string? Title,
string? Category,
string? Description,
ReportStatus Status,
ReportPriority Priority,
Guid? HandledBy,
DateTimeOffset? HandledAt,
string? Resolution,
string? Contact,
JsonElement Attachments,
JsonElement Metadata,
DateTimeOffset CreatedAt,
DateTimeOffset UpdatedAt);
public sealed class TenantAdminDirectException(string message, string code) : Exception(message)
{
public string Code { get; } = code;