From f574831f157274bae67b87a004c7e479fe3d40ee Mon Sep 17 00:00:00 2001 From: GoCo Date: Fri, 25 Jul 2025 16:11:30 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=F0=9F=8E=B8=20=E8=AF=BE=E7=A8=8B?= =?UTF-8?q?=E5=88=97=E8=A1=A8&=E8=AF=BE=E7=A8=8B=E8=AF=A6=E6=83=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/api/api/lesson/lesson.go | 16 ++++++++++ server/api/api/lesson/v1/lesson.go | 29 +++++++++++++++++ .../internal/controller/api/lesson/lesson.go | 5 +++ .../controller/api/lesson/lesson_new.go | 15 +++++++++ .../api/lesson/lesson_v1_lesson_detail.go | 27 ++++++++++++++++ .../api/lesson/lesson_v1_lesson_list.go | 31 +++++++++++++++++++ server/internal/router/api.go | 4 ++- 7 files changed, 126 insertions(+), 1 deletion(-) create mode 100644 server/api/api/lesson/lesson.go create mode 100644 server/api/api/lesson/v1/lesson.go create mode 100644 server/internal/controller/api/lesson/lesson.go create mode 100644 server/internal/controller/api/lesson/lesson_new.go create mode 100644 server/internal/controller/api/lesson/lesson_v1_lesson_detail.go create mode 100644 server/internal/controller/api/lesson/lesson_v1_lesson_list.go diff --git a/server/api/api/lesson/lesson.go b/server/api/api/lesson/lesson.go new file mode 100644 index 0000000..5aac3d5 --- /dev/null +++ b/server/api/api/lesson/lesson.go @@ -0,0 +1,16 @@ +// ================================================================================= +// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT. +// ================================================================================= + +package lesson + +import ( + "context" + + "hotgo/api/api/lesson/v1" +) + +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) +} diff --git a/server/api/api/lesson/v1/lesson.go b/server/api/api/lesson/v1/lesson.go new file mode 100644 index 0000000..df5ea1d --- /dev/null +++ b/server/api/api/lesson/v1/lesson.go @@ -0,0 +1,29 @@ +package v1 + +import ( + "hotgo/internal/model/entity" + + "github.com/gogf/gf/v2/frame/g" +) + +// 获取课程列表请求 +type LessonListReq struct { + g.Meta `path:"/lesson/list" method:"get" tags:"课程" summary:"获取课程列表"` +} + +// 获取课程列表响应 +type LessonListRes struct { + List []*entity.Lesson `json:"list" dc:"课程列表"` + Total int `json:"total" dc:"总数"` +} + +// 查看课程详情请求 +type LessonDetailReq struct { + g.Meta `path:"/lesson/detail" method:"get" tags:"课程" summary:"查看课程详情"` + Id int64 `json:"id" v:"required#课程ID必填" dc:"课程ID"` +} + +// 查看课程详情响应 +type LessonDetailRes struct { + Lesson *entity.Lesson `json:"lesson" dc:"课程"` +} diff --git a/server/internal/controller/api/lesson/lesson.go b/server/internal/controller/api/lesson/lesson.go new file mode 100644 index 0000000..6f99448 --- /dev/null +++ b/server/internal/controller/api/lesson/lesson.go @@ -0,0 +1,5 @@ +// ================================================================================= +// This is auto-generated by GoFrame CLI tool only once. Fill this file as you wish. +// ================================================================================= + +package lesson diff --git a/server/internal/controller/api/lesson/lesson_new.go b/server/internal/controller/api/lesson/lesson_new.go new file mode 100644 index 0000000..33a7917 --- /dev/null +++ b/server/internal/controller/api/lesson/lesson_new.go @@ -0,0 +1,15 @@ +// ================================================================================= +// This is auto-generated by GoFrame CLI tool only once. Fill this file as you wish. +// ================================================================================= + +package lesson + +import ( + "hotgo/api/api/lesson" +) + +type ControllerV1 struct{} + +func NewV1() lesson.ILessonV1 { + return &ControllerV1{} +} diff --git a/server/internal/controller/api/lesson/lesson_v1_lesson_detail.go b/server/internal/controller/api/lesson/lesson_v1_lesson_detail.go new file mode 100644 index 0000000..a6fbe79 --- /dev/null +++ b/server/internal/controller/api/lesson/lesson_v1_lesson_detail.go @@ -0,0 +1,27 @@ +package lesson + +import ( + "context" + + "github.com/gogf/gf/v2/errors/gcode" + "github.com/gogf/gf/v2/errors/gerror" + + v1 "hotgo/api/api/lesson/v1" + "hotgo/internal/dao" + "hotgo/internal/model/entity" +) + +func (c *ControllerV1) LessonDetail(ctx context.Context, req *v1.LessonDetailReq) (res *v1.LessonDetailRes, err error) { + lesson := new(entity.Lesson) + err = dao.Lesson.Ctx(ctx).Where("id = ?", req.Id).Scan(lesson) + if err != nil { + return nil, gerror.NewCode(gcode.CodeDbOperationError, "数据库错误") + } + if lesson.Id == 0 { + return nil, gerror.NewCode(gcode.CodeNotFound, "课程不存在") + } + res = &v1.LessonDetailRes{ + Lesson: lesson, + } + return +} diff --git a/server/internal/controller/api/lesson/lesson_v1_lesson_list.go b/server/internal/controller/api/lesson/lesson_v1_lesson_list.go new file mode 100644 index 0000000..ebec340 --- /dev/null +++ b/server/internal/controller/api/lesson/lesson_v1_lesson_list.go @@ -0,0 +1,31 @@ +package lesson + +import ( + "context" + + v1 "hotgo/api/api/lesson/v1" + "hotgo/internal/dao" + "hotgo/internal/model/entity" + + "github.com/gogf/gf/v2/errors/gcode" + "github.com/gogf/gf/v2/errors/gerror" +) + +func (c *ControllerV1) LessonList(ctx context.Context, req *v1.LessonListReq) (res *v1.LessonListRes, err error) { + // 查询课程列表 + var list []*entity.Lesson + err = dao.Lesson.Ctx(ctx).Scan(&list) + if err != nil { + return nil, gerror.NewCode(gcode.CodeDbOperationError, "数据库错误") + } + // 统计总数 + total, err := dao.Lesson.Ctx(ctx).Count() + if err != nil { + return nil, gerror.NewCode(gcode.CodeDbOperationError, "统计总数失败") + } + res = &v1.LessonListRes{ + List: list, + Total: total, + } + return +} diff --git a/server/internal/router/api.go b/server/internal/router/api.go index f01c304..c954785 100644 --- a/server/internal/router/api.go +++ b/server/internal/router/api.go @@ -8,6 +8,7 @@ package router import ( "context" "hotgo/internal/consts" + "hotgo/internal/controller/api/lesson" "hotgo/internal/controller/api/member" "hotgo/internal/controller/api/pay" "hotgo/internal/controller/api/users" @@ -31,7 +32,8 @@ func Api(ctx context.Context, group *ghttp.RouterGroup) { group.Group(simple.RouterPrefix(ctx, consts.AppApi), func(group *ghttp.RouterGroup) { group.Bind( - users.NewV1(), // 前台用户 + users.NewV1(), // 前台用户 + lesson.NewV1(), // 课程 ) }) }