feat: 🎸 课程章节接口

This commit is contained in:
GoCo 2025-07-25 17:02:39 +08:00
parent 903e7ba861
commit 6771d3298f
4 changed files with 84 additions and 1 deletions

View File

@ -13,4 +13,6 @@ import (
type ILessonV1 interface {
LessonList(ctx context.Context, req *v1.LessonListReq) (res *v1.LessonListRes, err error)
LessonDetail(ctx context.Context, req *v1.LessonDetailReq) (res *v1.LessonDetailRes, err error)
LessonSectionList(ctx context.Context, req *v1.LessonSectionListReq) (res *v1.LessonSectionListRes, err error)
LessonSectionDetail(ctx context.Context, req *v1.LessonSectionDetailReq) (res *v1.LessonSectionDetailRes, err error)
}

View File

@ -25,5 +25,28 @@ type LessonDetailReq struct {
// 查看课程详情响应
type LessonDetailRes struct {
Lesson *entity.Lesson `json:"lesson" dc:"课程"`
*entity.Lesson `dc:"课程"`
}
// 获取课程章节列表请求
type LessonSectionListReq struct {
g.Meta `path:"/lesson/section/list" method:"get" tags:"课程章节" summary:"获取课程章节列表"`
LessonId int64 `json:"lessonId" v:"required#课程ID必填" dc:"课程ID"`
}
// 获取课程章节列表响应
type LessonSectionListRes struct {
List []*entity.LessonSection `json:"list" dc:"课程章节列表"`
Total int `json:"total" dc:"总数"`
}
// 获取课程章节详情请求
type LessonSectionDetailReq struct {
g.Meta `path:"/lesson/section/detail" method:"get" tags:"课程章节" summary:"获取课程章节详情"`
Id int64 `json:"id" v:"required#课程章节ID必填" dc:"课程章节ID"`
}
// 获取课程章节详情响应
type LessonSectionDetailRes struct {
*entity.LessonSection `dc:"课程章节"`
}

View File

@ -0,0 +1,28 @@
package lesson
import (
"context"
"hotgo/internal/dao"
"hotgo/internal/model/entity"
"github.com/gogf/gf/v2/errors/gcode"
"github.com/gogf/gf/v2/errors/gerror"
v1 "hotgo/api/api/lesson/v1"
)
func (c *ControllerV1) LessonSectionDetail(ctx context.Context, req *v1.LessonSectionDetailReq) (res *v1.LessonSectionDetailRes, err error) {
section := new(entity.LessonSection)
err = dao.LessonSection.Ctx(ctx).Where("id = ?", req.Id).Scan(section)
if err != nil {
return nil, gerror.NewCode(gcode.CodeDbOperationError, "数据库错误")
}
if section.Id == 0 {
return nil, gerror.NewCode(gcode.CodeNotFound, "课程章节不存在")
}
res = &v1.LessonSectionDetailRes{
LessonSection: section,
}
return
}

View File

@ -0,0 +1,30 @@
package lesson
import (
"context"
"hotgo/internal/dao"
"hotgo/internal/model/entity"
"github.com/gogf/gf/v2/errors/gcode"
"github.com/gogf/gf/v2/errors/gerror"
v1 "hotgo/api/api/lesson/v1"
)
func (c *ControllerV1) LessonSectionList(ctx context.Context, req *v1.LessonSectionListReq) (res *v1.LessonSectionListRes, err error) {
var list []*entity.LessonSection
err = dao.LessonSection.Ctx(ctx).Where("lesson_id = ?", req.LessonId).Scan(&list)
if err != nil {
return nil, gerror.NewCode(gcode.CodeDbOperationError, "数据库错误")
}
total, err := dao.LessonSection.Ctx(ctx).Where("lesson_id = ?", req.LessonId).Count()
if err != nil {
return nil, gerror.NewCode(gcode.CodeDbOperationError, "统计总数失败")
}
res = &v1.LessonSectionListRes{
List: list,
Total: total,
}
return
}