From d7c0d0b04e5982674c08cb9abd40d06c185a48ca Mon Sep 17 00:00:00 2001 From: mayiming <1627832236@qq.com> Date: Fri, 31 Oct 2025 13:24:07 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=AF=BE=E7=A8=8B=E7=9A=84ap?= =?UTF-8?q?i=E5=92=8Csql?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/api/course.api | 75 +++++++++++++++++++++++++++++++++++++++++++ server/sql/course.sql | 11 +++++++ 2 files changed, 86 insertions(+) create mode 100644 server/api/course.api create mode 100644 server/sql/course.sql diff --git a/server/api/course.api b/server/api/course.api new file mode 100644 index 00000000..26aecc9f --- /dev/null +++ b/server/api/course.api @@ -0,0 +1,75 @@ +// 课程请求结构体 +type CreateCourseReq { + Title string `json:"title" validate:"required"` // 课程标题 + Subtitle string `json:"subtitle"` // 课程副标题 + CoverUrl string `json:"cover_url"` // 课程封面图URL + Intro string `json:"intro"` // 课程简介 + Status int8 `json:"status" default:"1"` // 课程状态(0删除,1-已发布) +} + +type UpdateCourseReq { + Id int64 `json:"id" validate:"required"` // 课程ID + Title string `json:"title"` // 课程标题 + Subtitle string `json:"subtitle"` // 课程副标题 + CoverUrl string `json:"cover_url"` // 课程封面图URL + Intro string `json:"intro"` // 课程简介 + Status int8 `json:"status"` // 课程状态(0删除,1-已发布) +} + +type GetCourseReq { + Id int64 `json:"id" validate:"required"` // 课程ID +} + +type DeleteCourseReq { + Id int64 `json:"id" validate:"required"` // 课程ID +} + +type ListCourseReq { + Page int `json:"page" default:"1"` // 页码 + Size int `json:"size" default:"10"` // 每页数量 + Status int8 `json:"status"` // 课程状态筛选 + Keyword string `json:"keyword"` // 搜索关键词(标题/副标题) +} + +// 课程响应结构体 +type CourseResp { + Id int64 `json:"id"` // 课程ID + Title string `json:"title"` // 课程标题 + Subtitle string `json:"subtitle"` // 课程副标题 + CoverUrl string `json:"cover_url"` // 课程封面图URL + Intro string `json:"intro"` // 课程简介 + Status int8 `json:"status"` // 课程状态 + CreateTime string `json:"create_time"` // 创建时间 + UpdateTime string `json:"update_time"` // 更新时间 +} + +type ListCourseResp { + Total int64 `json:"total"` // 总条数 + List []CourseResp `json:"list"` // 课程列表 +} + +type BaseResp { + Code int `json:"code"` // 状态码(0成功,非0失败) + Msg string `json:"msg"` // 提示信息 +} + +@server ( + group: course +) +service course-api { + @handler CreateCourseHandler + post /api/courses (CreateCourseReq) returns (BaseResp) + + @handler UpdateCourseHandler + put /api/courses (UpdateCourseReq) returns (BaseResp) + + @handler GetCourseHandler + get /api/courses/:id (GetCourseReq) returns (CourseResp) + + @handler DeleteCourseHandler + delete /api/courses/:id (DeleteCourseReq) returns (BaseResp) + + @handler ListCourseHandler + get /api/courses (ListCourseReq) returns (ListCourseResp) +} + diff --git a/server/sql/course.sql b/server/sql/course.sql new file mode 100644 index 00000000..ff75c8f4 --- /dev/null +++ b/server/sql/course.sql @@ -0,0 +1,11 @@ +CREATE TABLE `course` ( + `id` int NOT NULL AUTO_INCREMENT COMMENT '课程ID(主键)', + `title` varchar(255) NOT NULL COMMENT '课程标题', + `subtitle` varchar(255) DEFAULT '' COMMENT '课程副标题', + `cover_url` varchar(512) DEFAULT '' COMMENT '课程封面图URL', + `intro` text COMMENT '课程简介(对应“课程简介”模块)', + `status` tinyint DEFAULT 1 COMMENT '课程状态(0删除,1-已发布)', + `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='课程主表'; \ No newline at end of file