This commit is contained in:
2026-04-30 17:49:07 +08:00
parent 805d6f8cae
commit 9d684cb7b3
615 changed files with 15368 additions and 6172 deletions

View File

@@ -33,9 +33,10 @@ use spacetime_client::{
BigFishAgentMessageRecord, BigFishAnchorItemRecord, BigFishAnchorPackRecord,
BigFishAssetCoverageRecord, BigFishAssetGenerateRecordInput, BigFishAssetSlotRecord,
BigFishBackgroundBlueprintRecord, BigFishDraftCompileRecordInput, BigFishGameDraftRecord,
BigFishLevelBlueprintRecord, BigFishMessageSubmitRecordInput, BigFishPlayReportRecordInput,
BigFishRuntimeParamsRecord, BigFishSessionCreateRecordInput, BigFishSessionRecord,
BigFishWorkRemixRecordInput, BigFishWorkSummaryRecord, SpacetimeClientError,
BigFishLevelBlueprintRecord, BigFishLikeReportRecordInput, BigFishMessageSubmitRecordInput,
BigFishPlayReportRecordInput, BigFishRuntimeParamsRecord, BigFishSessionCreateRecordInput,
BigFishSessionRecord, BigFishWorkRemixRecordInput, BigFishWorkSummaryRecord,
SpacetimeClientError,
};
use tokio::time::sleep;
@@ -60,6 +61,7 @@ use crate::{
http_error::AppError,
request_context::RequestContext,
state::AppState,
work_author::resolve_work_author_by_user_id,
};
pub async fn create_big_fish_session(
@@ -144,7 +146,7 @@ pub async fn get_big_fish_works(
BigFishWorksResponse {
items: items
.into_iter()
.map(map_big_fish_work_summary_response)
.map(|item| map_big_fish_work_summary_response(&state, item))
.collect(),
},
))
@@ -176,7 +178,7 @@ pub async fn list_big_fish_gallery(
BigFishWorksResponse {
items: items
.into_iter()
.map(map_big_fish_work_summary_response)
.map(|item| map_big_fish_work_summary_response(&state, item))
.collect(),
},
))
@@ -203,7 +205,7 @@ pub async fn delete_big_fish_work(
BigFishWorksResponse {
items: items
.into_iter()
.map(map_big_fish_work_summary_response)
.map(|item| map_big_fish_work_summary_response(&state, item))
.collect(),
},
))
@@ -245,7 +247,38 @@ pub async fn record_big_fish_play(
BigFishWorksResponse {
items: items
.into_iter()
.map(map_big_fish_work_summary_response)
.map(|item| map_big_fish_work_summary_response(&state, item))
.collect(),
},
))
}
pub async fn record_big_fish_gallery_like(
State(state): State<AppState>,
Path(session_id): Path<String>,
Extension(request_context): Extension<RequestContext>,
Extension(authenticated): Extension<AuthenticatedAccessToken>,
) -> Result<Json<Value>, Response> {
ensure_non_empty(&request_context, &session_id, "sessionId")?;
let items = state
.spacetime_client()
.record_big_fish_like(BigFishLikeReportRecordInput {
session_id,
user_id: authenticated.claims().user_id().to_string(),
liked_at_micros: current_utc_micros(),
})
.await
.map_err(|error| {
big_fish_error_response(&request_context, map_big_fish_client_error(error))
})?;
Ok(json_success_body(
Some(&request_context),
BigFishWorksResponse {
items: items
.into_iter()
.map(|item| map_big_fish_work_summary_response(&state, item))
.collect(),
},
))
@@ -924,12 +957,15 @@ fn map_big_fish_agent_message_response(
}
fn map_big_fish_work_summary_response(
state: &AppState,
item: BigFishWorkSummaryRecord,
) -> BigFishWorkSummaryResponse {
let author = resolve_work_author_by_user_id(state, &item.owner_user_id, None, None);
BigFishWorkSummaryResponse {
work_id: item.work_id,
source_session_id: item.source_session_id,
owner_user_id: item.owner_user_id,
author_display_name: author.display_name,
title: item.title,
subtitle: item.subtitle,
summary: item.summary,