Files
36Wisdom/biz/controller/level_play.go
T
adminandClaude Opus 4.7 414c7de007 feat: 分支闯关判分与终局结算(含单测)
choose 校验节点/选项归属与解锁链,终局在 common.WithLock 内按
技术设计 4.3/4.4 结算:首次到达才结算、连续失败限扣、余额不为负、
完美集齐全终局 +20 并解锁计策卡与下一计;路径流水尽力而为。

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-08-13 12:47:01 +08:00

40 lines
964 B
Go

package controller
import (
"context"
"36wisdom/biz/model/dto"
"36wisdom/biz/service"
"36wisdom/common/auth"
)
type levelPlay struct{}
var LevelPlay = &levelPlay{}
func (c *levelPlay) Choose(ctx context.Context, req *dto.ChooseReq) (*dto.ChooseRes, error) {
node, settle, err := service.LevelPlay.Choose(ctx, auth.GetUid(ctx), req.ChildId, req.LevelId, req.NodeId, req.OptionId)
if err != nil {
return nil, err
}
res := &dto.ChooseRes{}
if node != nil {
vo := nodeVO(node)
res.Next = &vo
}
if settle != nil {
res.Final = &dto.FinalSettle{
ResultType: settle.ResultType,
Stars: settle.Stars,
ScoreDelta: settle.ScoreDelta,
Cleared: settle.Cleared,
Perfect: settle.Perfect,
UnlockNext: settle.UnlockNext,
CollectionUnlocked: settle.CollectionUnlocked,
NewLevel: settle.NewLevel,
BalanceAfter: settle.BalanceAfter,
}
}
return res, nil
}