51 lines
1.3 KiB
Go
51 lines
1.3 KiB
Go
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(),
|
|
}
|
|
}
|