package controller import ( "context" "github.com/gogf/gf/v2/database/gdb" "36wisdom/biz/model/dto" "36wisdom/biz/service" ) type sceneNode struct{} var SceneNode = &sceneNode{} func (c *sceneNode) Get(ctx context.Context, req *dto.SceneNodeGetReq) (*dto.SceneNodeGetRes, error) { rec, err := service.SceneNode.GetInLevel(ctx, req.NodeId, req.LevelId) if err != nil { return nil, err } res := &dto.SceneNodeGetRes{} if !rec.IsEmpty() { res.SceneNode = sceneNodeItem(rec) } return res, nil } func (c *sceneNode) ListByLevel(ctx context.Context, req *dto.SceneNodeListReq) (*dto.SceneNodeListRes, error) { recs, err := service.SceneNode.ListEnabledByLevel(ctx, req.LevelId) if err != nil { return nil, err } res := &dto.SceneNodeListRes{List: make([]dto.SceneNodeItem, 0, len(recs))} for _, r := range recs { res.List = append(res.List, sceneNodeItem(r)) } return res, nil } func sceneNodeItem(r gdb.Record) dto.SceneNodeItem { return dto.SceneNodeItem{ Id: r["id"].Int64(), LevelId: r["level_id"].Int64(), Title: r["title"].String(), CharacterId: r["character_id"].Int64(), Content: r["content"].String(), Image: r["image"].String(), Audio: r["audio"].String(), NodeType: r["node_type"].Int(), InteractionType: r["interaction_type"].Int(), Config: r["config"].String(), Script: r["script"].String(), ResultType: r["result_type"].Int(), IsEntry: r["is_entry"].Int(), SortOrder: r["sort_order"].Int(), Status: r["status"].Int(), } }