优化讲解数据请求与缓存管理
Some checks failed
CI / verify (push) Has been cancelled

This commit is contained in:
lyf
2026-07-16 14:43:57 +08:00
parent 72885b7f54
commit d86845afeb
11 changed files with 259 additions and 137 deletions

View File

@@ -21,11 +21,13 @@ import {
export interface ExplainRepository {
listExplainExhibits(): Promise<MuseumExhibit[]>
listExplainExhibitsByHall(hallId: string): Promise<MuseumExhibit[]>
listExhibits(): Promise<MuseumExhibit[]>
getExhibitById(id: string): Promise<MuseumExhibit | null>
listHalls(): Promise<MuseumHall[]>
getHallById(id: string): Promise<MuseumHall | null>
listGuideStopsByHall(hallId: string): Promise<ExplainGuideStop[]>
listGuideStopsByBusinessUnit(hallId: string, unitId: string): Promise<ExplainGuideStop[]>
listTemporaryBusinessUnitsByHall(hallId: string): Promise<ExplainBusinessUnit[]>
listTracks(): Promise<ExplainTrack[]>
getTrackByExhibitId(exhibitId: string): Promise<ExplainTrack | null>
@@ -45,6 +47,14 @@ export class DefaultExplainRepository implements ExplainRepository {
return this.explainContent.listExplainExhibits()
}
async listExplainExhibitsByHall(hallId: string) {
if (this.explainContent.listExplainExhibitsByHall) {
return this.explainContent.listExplainExhibitsByHall(hallId)
}
const exhibits = await this.listExplainExhibits()
return exhibits.filter((exhibit) => exhibit.hallId === hallId)
}
listExhibits() {
return this.content.listExhibits()
}
@@ -66,6 +76,14 @@ export class DefaultExplainRepository implements ExplainRepository {
return this.explainContent.listGuideStopsByHall?.(hallId) || []
}
async listGuideStopsByBusinessUnit(hallId: string, unitId: string) {
if (this.explainContent.listGuideStopsByBusinessUnit) {
return this.explainContent.listGuideStopsByBusinessUnit(hallId, unitId)
}
const units = await this.listTemporaryBusinessUnitsByHall(hallId)
return units.find((unit) => unit.id === unitId)?.stops || []
}
async listTemporaryBusinessUnitsByHall(hallId: string) {
if (this.explainContent.listTemporaryBusinessUnitsByHall) {
return this.explainContent.listTemporaryBusinessUnitsByHall(hallId)