Files
36Wisdom/biz/service/scene_node.go
T
2026-08-14 12:13:02 +08:00

34 lines
1.2 KiB
Go

package service
import (
"context"
"github.com/gogf/gf/v2/database/gdb"
"36wisdom/biz/consts"
"36wisdom/biz/dao"
)
type sceneNode struct{}
var SceneNode = &sceneNode{}
// GetInLevel 关卡内启用节点(按节点 id + 关卡 id 精确查询)。
func (s *sceneNode) GetInLevel(ctx context.Context, nodeId, levelId int64) (gdb.Record, error) {
return dao.SceneNode.Model().Ctx(ctx).Cache(contentCache(ctx)).
Where("id", nodeId).Where("level_id", levelId).Where("status", consts.StatusEnabled).One()
}
// ListEnabledByLevel 关卡内启用节点,按 sort_order 升序(内容缓存)。
func (s *sceneNode) ListEnabledByLevel(ctx context.Context, levelId int64) ([]gdb.Record, error) {
return dao.SceneNode.Model().Ctx(ctx).Cache(contentCache(ctx)).
Where("level_id", levelId).Where("status", consts.StatusEnabled).
Order("sort_order ASC").All()
}
// CountFinalsByLevel 关卡内终局节点数(result_type > 0,不缓存)。
func (s *sceneNode) CountFinalsByLevel(ctx context.Context, levelId int64) (int, error) {
return dao.SceneNode.Model().Ctx(ctx).
Where("level_id", levelId).Where("status", consts.StatusEnabled).WhereGT("result_type", 0).Count()
}