choose 校验节点/选项归属与解锁链,终局在 common.WithLock 内按 技术设计 4.3/4.4 结算:首次到达才结算、连续失败限扣、余额不为负、 完美集齐全终局 +20 并解锁计策卡与下一计;路径流水尽力而为。 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
40 lines
964 B
Go
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
|
|
}
|