From aea79d8c5add55191e03e599246306eb26fa779c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=96=8C?= <259278618@qq.com> Date: Thu, 13 Aug 2026 17:00:43 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20FinalSettle=20=E5=A2=9E=E5=8A=A0=20fina?= =?UTF-8?q?l=5Fnode=E2=80=94=E2=80=94=E7=BB=88=E5=B1=80=E8=8A=82=E7=82=B9?= =?UTF-8?q?=E5=89=A7=E6=9C=AC=E9=80=8F=E5=87=BA=EF=BC=88v2.1=20=E7=BB=88?= =?UTF-8?q?=E5=B1=80=E6=BC=94=E7=BB=8E=E6=95=B0=E6=8D=AE=E5=B1=82=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- biz/controller/level_play.go | 4 ++++ biz/model/dto/level_play.go | 5 +++-- biz/service/level_play.go | 7 +++++++ 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/biz/controller/level_play.go b/biz/controller/level_play.go index 53670cd..7c6e8a6 100644 --- a/biz/controller/level_play.go +++ b/biz/controller/level_play.go @@ -34,6 +34,10 @@ func (c *levelPlay) Choose(ctx context.Context, req *dto.ChooseReq) (*dto.Choose NewLevel: settle.NewLevel, BalanceAfter: settle.BalanceAfter, } + if settle.FinalNode != nil { + vo := nodeVO(settle.FinalNode) + res.Final.FinalNode = &vo + } } return res, nil } diff --git a/biz/model/dto/level_play.go b/biz/model/dto/level_play.go index f7ed72c..6c3e703 100644 --- a/biz/model/dto/level_play.go +++ b/biz/model/dto/level_play.go @@ -23,6 +23,7 @@ type FinalSettle struct { Perfect bool `json:"perfect"` UnlockNext bool `json:"unlock_next"` CollectionUnlocked bool `json:"collection_unlocked"` - NewLevel int `json:"new_level"` - BalanceAfter int `json:"balance_after"` + NewLevel int `json:"new_level"` + BalanceAfter int `json:"balance_after"` + FinalNode *NodeVO `json:"final_node"` } diff --git a/biz/service/level_play.go b/biz/service/level_play.go index 011c4b3..b0254d8 100644 --- a/biz/service/level_play.go +++ b/biz/service/level_play.go @@ -40,6 +40,7 @@ type FinalSettle struct { CollectionUnlocked bool NewLevel int BalanceAfter int + FinalNode *Node // 终局节点(含 script,v2.1 前端演绎结局台词后跳结算) } // SettleFinal 纯函数判分(技术设计 4.3/4.4,可单测): @@ -162,6 +163,12 @@ func (s *levelPlay) Choose(ctx context.Context, parentUid, childId, levelId, nod if err != nil { return nil, nil, err } + // v2.1:终局节点剧本随结算返回(前端先演绎结局台词再跳结算页) + finalNode, err := nodeOf(ctx, levelRec, nextRec) + if err != nil { + return nil, nil, err + } + settle.FinalNode = finalNode return nil, settle, nil }