package controller import ( "context" "github.com/gogf/gf/v2/database/gdb" "36wisdom/biz/model/dto" "36wisdom/biz/service" ) type userProgress struct{} var UserProgress = &userProgress{} func (c *userProgress) GetByChildLevel(ctx context.Context, req *dto.UserProgressGetReq) (*dto.UserProgressGetRes, error) { rec, err := service.UserProgress.GetByChildLevel(ctx, req.ChildId, req.LevelId) if err != nil { return nil, err } res := &dto.UserProgressGetRes{} if !rec.IsEmpty() { res.UserProgress = userProgressItem(rec) } return res, nil } func (c *userProgress) ListByChild(ctx context.Context, req *dto.UserProgressListReq) (*dto.UserProgressListRes, error) { recs, err := service.UserProgress.ListByChildLevelIds(ctx, req.ChildId, req.LevelIds) if err != nil { return nil, err } res := &dto.UserProgressListRes{List: make([]dto.UserProgressItem, 0, len(recs))} for _, r := range recs { res.List = append(res.List, userProgressItem(r)) } return res, nil } func userProgressItem(r gdb.Record) dto.UserProgressItem { return dto.UserProgressItem{ Id: r["id"].Int64(), ChildId: r["child_id"].Int64(), LevelId: r["level_id"].Int64(), Stars: r["stars"].Int(), Score: r["score"].Int(), Perfect: r["perfect"].Int(), ContentVersion: r["content_version"].Int(), } }