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 }