34 lines
1.2 KiB
Go
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()
|
|
}
|