forked from xiongyuxing/tiku-backend.net
feat: add student engagement endpoints
This commit is contained in:
@@ -73,9 +73,85 @@ public sealed record ExamCountdownList(
|
||||
Guid? RegionId,
|
||||
Guid? SchoolId);
|
||||
|
||||
public sealed record ProfileNotificationQuery(string? Status = null, int? Limit = null);
|
||||
|
||||
public sealed record ProfileNotificationItem(
|
||||
Guid Id,
|
||||
string NotificationType,
|
||||
string Status,
|
||||
string Severity,
|
||||
string Title,
|
||||
string Message,
|
||||
string? ActionLabel,
|
||||
string? ActionPath,
|
||||
string? SourceType,
|
||||
Guid? SourceId,
|
||||
JsonElement Metadata,
|
||||
DateTimeOffset? ReadAt,
|
||||
DateTimeOffset CreatedAt);
|
||||
|
||||
public sealed record ProfileNotificationList(
|
||||
IReadOnlyCollection<ProfileNotificationItem> Items,
|
||||
IReadOnlyDictionary<string, int> Summary);
|
||||
|
||||
public sealed record UpdateNotificationStatusCommand(
|
||||
IReadOnlyCollection<Guid> NotificationIds,
|
||||
string? Status);
|
||||
|
||||
public sealed record BadgeQuery(bool IncludeLocked = false, string? Category = null, int? Limit = null);
|
||||
|
||||
public sealed record BadgeItem(
|
||||
Guid Id,
|
||||
string Name,
|
||||
string? Description,
|
||||
string? Category,
|
||||
string? IconUrl,
|
||||
int? Level,
|
||||
string? UnlockType,
|
||||
JsonElement ConditionExtra,
|
||||
bool IsUnlocked,
|
||||
DateTimeOffset? GrantedAt,
|
||||
string? Note,
|
||||
int Order);
|
||||
|
||||
public sealed record BadgeList(IReadOnlyCollection<BadgeItem> Items, int Total, int Unlocked, bool IncludeLocked);
|
||||
|
||||
public sealed record FeedbackQuery(string? Status = null, string? Type = null, int? Limit = null);
|
||||
|
||||
public sealed record FeedbackItem(
|
||||
Guid Id,
|
||||
Guid? QuestionId,
|
||||
string? Type,
|
||||
string? Title,
|
||||
string? Category,
|
||||
string? Description,
|
||||
string Status,
|
||||
string Priority,
|
||||
string? Contact,
|
||||
JsonElement Attachments,
|
||||
JsonElement Metadata,
|
||||
DateTimeOffset CreatedAt,
|
||||
DateTimeOffset UpdatedAt);
|
||||
|
||||
public sealed record SubmitFeedbackCommand(
|
||||
Guid? QuestionId,
|
||||
string? Type,
|
||||
string? Category,
|
||||
string? Title,
|
||||
string Description,
|
||||
string? Priority,
|
||||
string? Contact,
|
||||
JsonElement Attachments,
|
||||
JsonElement Metadata);
|
||||
|
||||
public interface IProfileService
|
||||
{
|
||||
Task<StudentProfileItem> GetMeAsync(ProfileActor actor, ProfileQuery query, CancellationToken cancellationToken = default);
|
||||
Task<StudentProfileItem> UpdateMeAsync(ProfileActor actor, UpdateProfileCommand command, CancellationToken cancellationToken = default);
|
||||
Task<ExamCountdownList> GetExamCountdownsAsync(ProfileActor actor, ProfileQuery query, CancellationToken cancellationToken = default);
|
||||
Task<ProfileNotificationList> GetNotificationsAsync(ProfileActor actor, ProfileNotificationQuery query, CancellationToken cancellationToken = default);
|
||||
Task<ProfileNotificationList> UpdateNotificationStatusAsync(ProfileActor actor, UpdateNotificationStatusCommand command, CancellationToken cancellationToken = default);
|
||||
Task<BadgeList> GetBadgesAsync(ProfileActor actor, BadgeQuery query, CancellationToken cancellationToken = default);
|
||||
Task<IReadOnlyCollection<FeedbackItem>> GetFeedbacksAsync(ProfileActor actor, FeedbackQuery query, CancellationToken cancellationToken = default);
|
||||
Task<FeedbackItem> SubmitFeedbackAsync(ProfileActor actor, SubmitFeedbackCommand command, CancellationToken cancellationToken = default);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user