添加课程资源和课程教室的Handler
This commit is contained in:
34
server/internal/course_teacher/courseteacherapi.go
Normal file
34
server/internal/course_teacher/courseteacherapi.go
Normal file
@@ -0,0 +1,34 @@
|
||||
// Code scaffolded by goctl. Safe to edit.
|
||||
// goctl 1.9.1
|
||||
|
||||
package main
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
|
||||
"github.com/JACKYMYPERSON/hldrCenter/internal/course_teacher/internal/config"
|
||||
"github.com/JACKYMYPERSON/hldrCenter/internal/course_teacher/internal/handler"
|
||||
"github.com/JACKYMYPERSON/hldrCenter/internal/course_teacher/internal/svc"
|
||||
|
||||
"github.com/zeromicro/go-zero/core/conf"
|
||||
"github.com/zeromicro/go-zero/rest"
|
||||
)
|
||||
|
||||
var configFile = flag.String("f", "etc/courseteacherapi.yaml", "the config file")
|
||||
|
||||
func main() {
|
||||
flag.Parse()
|
||||
|
||||
var c config.Config
|
||||
conf.MustLoad(*configFile, &c)
|
||||
|
||||
server := rest.MustNewServer(c.RestConf)
|
||||
defer server.Stop()
|
||||
|
||||
ctx := svc.NewServiceContext(c)
|
||||
handler.RegisterHandlers(server, ctx)
|
||||
|
||||
fmt.Printf("Starting server at %s:%d...\n", c.Host, c.Port)
|
||||
server.Start()
|
||||
}
|
||||
3
server/internal/course_teacher/etc/courseteacherapi.yaml
Normal file
3
server/internal/course_teacher/etc/courseteacherapi.yaml
Normal file
@@ -0,0 +1,3 @@
|
||||
Name: course_teacher_api
|
||||
Host: 0.0.0.0
|
||||
Port: 8888
|
||||
10
server/internal/course_teacher/internal/config/config.go
Normal file
10
server/internal/course_teacher/internal/config/config.go
Normal file
@@ -0,0 +1,10 @@
|
||||
// Code scaffolded by goctl. Safe to edit.
|
||||
// goctl 1.9.1
|
||||
|
||||
package config
|
||||
|
||||
import "github.com/zeromicro/go-zero/rest"
|
||||
|
||||
type Config struct {
|
||||
rest.RestConf
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
// Code scaffolded by goctl. Safe to edit.
|
||||
// goctl 1.9.1
|
||||
|
||||
package course_teacher
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"github.com/JACKYMYPERSON/hldrCenter/internal/course_teacher/internal/logic/course_teacher"
|
||||
"github.com/JACKYMYPERSON/hldrCenter/internal/course_teacher/internal/svc"
|
||||
"github.com/JACKYMYPERSON/hldrCenter/internal/course_teacher/internal/types"
|
||||
"github.com/zeromicro/go-zero/rest/httpx"
|
||||
)
|
||||
|
||||
func CreateCourseTeacherHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
var req types.CreateCourseTeacherReq
|
||||
if err := httpx.Parse(r, &req); err != nil {
|
||||
httpx.ErrorCtx(r.Context(), w, err)
|
||||
return
|
||||
}
|
||||
|
||||
l := course_teacher.NewCreateCourseTeacherLogic(r.Context(), svcCtx)
|
||||
resp, err := l.CreateCourseTeacher(&req)
|
||||
if err != nil {
|
||||
httpx.ErrorCtx(r.Context(), w, err)
|
||||
} else {
|
||||
httpx.OkJsonCtx(r.Context(), w, resp)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
// Code scaffolded by goctl. Safe to edit.
|
||||
// goctl 1.9.1
|
||||
|
||||
package course_teacher
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"github.com/JACKYMYPERSON/hldrCenter/internal/course_teacher/internal/logic/course_teacher"
|
||||
"github.com/JACKYMYPERSON/hldrCenter/internal/course_teacher/internal/svc"
|
||||
"github.com/JACKYMYPERSON/hldrCenter/internal/course_teacher/internal/types"
|
||||
"github.com/zeromicro/go-zero/rest/httpx"
|
||||
)
|
||||
|
||||
func DeleteCourseTeacherHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
var req types.DeleteCourseTeacherReq
|
||||
if err := httpx.Parse(r, &req); err != nil {
|
||||
httpx.ErrorCtx(r.Context(), w, err)
|
||||
return
|
||||
}
|
||||
|
||||
l := course_teacher.NewDeleteCourseTeacherLogic(r.Context(), svcCtx)
|
||||
resp, err := l.DeleteCourseTeacher(&req)
|
||||
if err != nil {
|
||||
httpx.ErrorCtx(r.Context(), w, err)
|
||||
} else {
|
||||
httpx.OkJsonCtx(r.Context(), w, resp)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
// Code scaffolded by goctl. Safe to edit.
|
||||
// goctl 1.9.1
|
||||
|
||||
package course_teacher
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"github.com/JACKYMYPERSON/hldrCenter/internal/course_teacher/internal/logic/course_teacher"
|
||||
"github.com/JACKYMYPERSON/hldrCenter/internal/course_teacher/internal/svc"
|
||||
"github.com/JACKYMYPERSON/hldrCenter/internal/course_teacher/internal/types"
|
||||
"github.com/zeromicro/go-zero/rest/httpx"
|
||||
)
|
||||
|
||||
func GetCourseTeacherHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
var req types.GetCourseTeacherReq
|
||||
if err := httpx.Parse(r, &req); err != nil {
|
||||
httpx.ErrorCtx(r.Context(), w, err)
|
||||
return
|
||||
}
|
||||
|
||||
l := course_teacher.NewGetCourseTeacherLogic(r.Context(), svcCtx)
|
||||
resp, err := l.GetCourseTeacher(&req)
|
||||
if err != nil {
|
||||
httpx.ErrorCtx(r.Context(), w, err)
|
||||
} else {
|
||||
httpx.OkJsonCtx(r.Context(), w, resp)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
// Code scaffolded by goctl. Safe to edit.
|
||||
// goctl 1.9.1
|
||||
|
||||
package course_teacher
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"github.com/JACKYMYPERSON/hldrCenter/internal/course_teacher/internal/logic/course_teacher"
|
||||
"github.com/JACKYMYPERSON/hldrCenter/internal/course_teacher/internal/svc"
|
||||
"github.com/JACKYMYPERSON/hldrCenter/internal/course_teacher/internal/types"
|
||||
"github.com/zeromicro/go-zero/rest/httpx"
|
||||
)
|
||||
|
||||
func ListCourseTeacherHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
var req types.ListCourseTeacherReq
|
||||
if err := httpx.Parse(r, &req); err != nil {
|
||||
httpx.ErrorCtx(r.Context(), w, err)
|
||||
return
|
||||
}
|
||||
|
||||
l := course_teacher.NewListCourseTeacherLogic(r.Context(), svcCtx)
|
||||
resp, err := l.ListCourseTeacher(&req)
|
||||
if err != nil {
|
||||
httpx.ErrorCtx(r.Context(), w, err)
|
||||
} else {
|
||||
httpx.OkJsonCtx(r.Context(), w, resp)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
// Code scaffolded by goctl. Safe to edit.
|
||||
// goctl 1.9.1
|
||||
|
||||
package course_teacher
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"github.com/JACKYMYPERSON/hldrCenter/internal/course_teacher/internal/logic/course_teacher"
|
||||
"github.com/JACKYMYPERSON/hldrCenter/internal/course_teacher/internal/svc"
|
||||
"github.com/JACKYMYPERSON/hldrCenter/internal/course_teacher/internal/types"
|
||||
"github.com/zeromicro/go-zero/rest/httpx"
|
||||
)
|
||||
|
||||
func UpdateCourseTeacherHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
var req types.UpdateCourseTeacherReq
|
||||
if err := httpx.Parse(r, &req); err != nil {
|
||||
httpx.ErrorCtx(r.Context(), w, err)
|
||||
return
|
||||
}
|
||||
|
||||
l := course_teacher.NewUpdateCourseTeacherLogic(r.Context(), svcCtx)
|
||||
resp, err := l.UpdateCourseTeacher(&req)
|
||||
if err != nil {
|
||||
httpx.ErrorCtx(r.Context(), w, err)
|
||||
} else {
|
||||
httpx.OkJsonCtx(r.Context(), w, resp)
|
||||
}
|
||||
}
|
||||
}
|
||||
46
server/internal/course_teacher/internal/handler/routes.go
Normal file
46
server/internal/course_teacher/internal/handler/routes.go
Normal file
@@ -0,0 +1,46 @@
|
||||
// Code generated by goctl. DO NOT EDIT.
|
||||
// goctl 1.9.1
|
||||
|
||||
package handler
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
course_teacher "github.com/JACKYMYPERSON/hldrCenter/internal/course_teacher/internal/handler/course_teacher"
|
||||
"github.com/JACKYMYPERSON/hldrCenter/internal/course_teacher/internal/svc"
|
||||
|
||||
"github.com/zeromicro/go-zero/rest"
|
||||
)
|
||||
|
||||
func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) {
|
||||
server.AddRoutes(
|
||||
[]rest.Route{
|
||||
{
|
||||
Method: http.MethodPost,
|
||||
Path: "/",
|
||||
Handler: course_teacher.CreateCourseTeacherHandler(serverCtx),
|
||||
},
|
||||
{
|
||||
Method: http.MethodPut,
|
||||
Path: "/",
|
||||
Handler: course_teacher.UpdateCourseTeacherHandler(serverCtx),
|
||||
},
|
||||
{
|
||||
Method: http.MethodGet,
|
||||
Path: "/:id",
|
||||
Handler: course_teacher.GetCourseTeacherHandler(serverCtx),
|
||||
},
|
||||
{
|
||||
Method: http.MethodDelete,
|
||||
Path: "/:id",
|
||||
Handler: course_teacher.DeleteCourseTeacherHandler(serverCtx),
|
||||
},
|
||||
{
|
||||
Method: http.MethodPost,
|
||||
Path: "/list",
|
||||
Handler: course_teacher.ListCourseTeacherHandler(serverCtx),
|
||||
},
|
||||
},
|
||||
rest.WithPrefix("/api/course-teacher"),
|
||||
)
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
// Code scaffolded by goctl. Safe to edit.
|
||||
// goctl 1.9.1
|
||||
|
||||
package course_teacher
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/JACKYMYPERSON/hldrCenter/internal/course_teacher/internal/svc"
|
||||
"github.com/JACKYMYPERSON/hldrCenter/internal/course_teacher/internal/types"
|
||||
|
||||
"github.com/zeromicro/go-zero/core/logx"
|
||||
)
|
||||
|
||||
type CreateCourseTeacherLogic struct {
|
||||
logx.Logger
|
||||
ctx context.Context
|
||||
svcCtx *svc.ServiceContext
|
||||
}
|
||||
|
||||
func NewCreateCourseTeacherLogic(ctx context.Context, svcCtx *svc.ServiceContext) *CreateCourseTeacherLogic {
|
||||
return &CreateCourseTeacherLogic{
|
||||
Logger: logx.WithContext(ctx),
|
||||
ctx: ctx,
|
||||
svcCtx: svcCtx,
|
||||
}
|
||||
}
|
||||
|
||||
func (l *CreateCourseTeacherLogic) CreateCourseTeacher(req *types.CreateCourseTeacherReq) (resp *types.CreateCourseTeacherResp, err error) {
|
||||
// todo: add your logic here and delete this line
|
||||
|
||||
return
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
// Code scaffolded by goctl. Safe to edit.
|
||||
// goctl 1.9.1
|
||||
|
||||
package course_teacher
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/JACKYMYPERSON/hldrCenter/internal/course_teacher/internal/svc"
|
||||
"github.com/JACKYMYPERSON/hldrCenter/internal/course_teacher/internal/types"
|
||||
|
||||
"github.com/zeromicro/go-zero/core/logx"
|
||||
)
|
||||
|
||||
type DeleteCourseTeacherLogic struct {
|
||||
logx.Logger
|
||||
ctx context.Context
|
||||
svcCtx *svc.ServiceContext
|
||||
}
|
||||
|
||||
func NewDeleteCourseTeacherLogic(ctx context.Context, svcCtx *svc.ServiceContext) *DeleteCourseTeacherLogic {
|
||||
return &DeleteCourseTeacherLogic{
|
||||
Logger: logx.WithContext(ctx),
|
||||
ctx: ctx,
|
||||
svcCtx: svcCtx,
|
||||
}
|
||||
}
|
||||
|
||||
func (l *DeleteCourseTeacherLogic) DeleteCourseTeacher(req *types.DeleteCourseTeacherReq) (resp *types.DeleteCourseTeacherResp, err error) {
|
||||
// todo: add your logic here and delete this line
|
||||
|
||||
return
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
// Code scaffolded by goctl. Safe to edit.
|
||||
// goctl 1.9.1
|
||||
|
||||
package course_teacher
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/JACKYMYPERSON/hldrCenter/internal/course_teacher/internal/svc"
|
||||
"github.com/JACKYMYPERSON/hldrCenter/internal/course_teacher/internal/types"
|
||||
|
||||
"github.com/zeromicro/go-zero/core/logx"
|
||||
)
|
||||
|
||||
type GetCourseTeacherLogic struct {
|
||||
logx.Logger
|
||||
ctx context.Context
|
||||
svcCtx *svc.ServiceContext
|
||||
}
|
||||
|
||||
func NewGetCourseTeacherLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetCourseTeacherLogic {
|
||||
return &GetCourseTeacherLogic{
|
||||
Logger: logx.WithContext(ctx),
|
||||
ctx: ctx,
|
||||
svcCtx: svcCtx,
|
||||
}
|
||||
}
|
||||
|
||||
func (l *GetCourseTeacherLogic) GetCourseTeacher(req *types.GetCourseTeacherReq) (resp *types.GetCourseTeacherResp, err error) {
|
||||
// todo: add your logic here and delete this line
|
||||
|
||||
return
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
// Code scaffolded by goctl. Safe to edit.
|
||||
// goctl 1.9.1
|
||||
|
||||
package course_teacher
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/JACKYMYPERSON/hldrCenter/internal/course_teacher/internal/svc"
|
||||
"github.com/JACKYMYPERSON/hldrCenter/internal/course_teacher/internal/types"
|
||||
|
||||
"github.com/zeromicro/go-zero/core/logx"
|
||||
)
|
||||
|
||||
type ListCourseTeacherLogic struct {
|
||||
logx.Logger
|
||||
ctx context.Context
|
||||
svcCtx *svc.ServiceContext
|
||||
}
|
||||
|
||||
func NewListCourseTeacherLogic(ctx context.Context, svcCtx *svc.ServiceContext) *ListCourseTeacherLogic {
|
||||
return &ListCourseTeacherLogic{
|
||||
Logger: logx.WithContext(ctx),
|
||||
ctx: ctx,
|
||||
svcCtx: svcCtx,
|
||||
}
|
||||
}
|
||||
|
||||
func (l *ListCourseTeacherLogic) ListCourseTeacher(req *types.ListCourseTeacherReq) (resp *types.ListCourseTeacherResp, err error) {
|
||||
// todo: add your logic here and delete this line
|
||||
|
||||
return
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
// Code scaffolded by goctl. Safe to edit.
|
||||
// goctl 1.9.1
|
||||
|
||||
package course_teacher
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/JACKYMYPERSON/hldrCenter/internal/course_teacher/internal/svc"
|
||||
"github.com/JACKYMYPERSON/hldrCenter/internal/course_teacher/internal/types"
|
||||
|
||||
"github.com/zeromicro/go-zero/core/logx"
|
||||
)
|
||||
|
||||
type UpdateCourseTeacherLogic struct {
|
||||
logx.Logger
|
||||
ctx context.Context
|
||||
svcCtx *svc.ServiceContext
|
||||
}
|
||||
|
||||
func NewUpdateCourseTeacherLogic(ctx context.Context, svcCtx *svc.ServiceContext) *UpdateCourseTeacherLogic {
|
||||
return &UpdateCourseTeacherLogic{
|
||||
Logger: logx.WithContext(ctx),
|
||||
ctx: ctx,
|
||||
svcCtx: svcCtx,
|
||||
}
|
||||
}
|
||||
|
||||
func (l *UpdateCourseTeacherLogic) UpdateCourseTeacher(req *types.UpdateCourseTeacherReq) (resp *types.UpdateCourseTeacherResp, err error) {
|
||||
// todo: add your logic here and delete this line
|
||||
|
||||
return
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
// Code scaffolded by goctl. Safe to edit.
|
||||
// goctl 1.9.1
|
||||
|
||||
package svc
|
||||
|
||||
import (
|
||||
"github.com/JACKYMYPERSON/hldrCenter/internal/course_teacher/internal/config"
|
||||
)
|
||||
|
||||
type ServiceContext struct {
|
||||
Config config.Config
|
||||
}
|
||||
|
||||
func NewServiceContext(c config.Config) *ServiceContext {
|
||||
return &ServiceContext{
|
||||
Config: c,
|
||||
}
|
||||
}
|
||||
71
server/internal/course_teacher/internal/types/types.go
Normal file
71
server/internal/course_teacher/internal/types/types.go
Normal file
@@ -0,0 +1,71 @@
|
||||
// Code generated by goctl. DO NOT EDIT.
|
||||
// goctl 1.9.1
|
||||
|
||||
package types
|
||||
|
||||
type CreateCourseTeacherReq struct {
|
||||
CourseId int `json:"course_id" form:"course_id" validate:"required"` // 关联课程ID(必填,外键)
|
||||
TeacherId int `json:"teacher_id" form:"teacher_id" validate:"required"` // 教师ID(必填,关联用户表)
|
||||
Name string `json:"name" form:"name" validate:"required,max=100"` // 教师姓名(必填,最长100字符)
|
||||
Title string `json:"title" form:"title" validate:"omitempty,max=200"` // 教师头衔(可选,最长200字符)
|
||||
Avatar string `json:"avatar" form:"avatar" validate:"omitempty,max=512"` // 头像URL(可选,最长512字符)
|
||||
Intro string `json:"intro" form:"intro"` // 教师简介(可选,文本)
|
||||
Sort int `json:"sort" form:"sort" validate:"omitempty,min=0"` // 排序(可选,默认0)
|
||||
}
|
||||
|
||||
type CreateCourseTeacherResp struct {
|
||||
Id int `json:"id"` // 新增关联ID
|
||||
Message string `json:"message"` // 操作结果信息
|
||||
}
|
||||
|
||||
type DeleteCourseTeacherReq struct {
|
||||
Id int `json:"id" form:"id" path:"id" validate:"required"` // 关联ID(必填,路径参数)
|
||||
}
|
||||
|
||||
type DeleteCourseTeacherResp struct {
|
||||
Message string `json:"message"` // 操作结果信息
|
||||
}
|
||||
|
||||
type GetCourseTeacherReq struct {
|
||||
Id int `json:"id" form:"id" path:"id" validate:"required"` // 关联ID(必填,路径参数)
|
||||
}
|
||||
|
||||
type GetCourseTeacherResp struct {
|
||||
Id int `json:"id"` // 关联ID(主键)
|
||||
CourseId int `json:"course_id"` // 关联课程ID
|
||||
TeacherId int `json:"teacher_id"` // 教师ID
|
||||
Name string `json:"name"` // 教师姓名
|
||||
Title string `json:"title"` // 教师头衔
|
||||
Avatar string `json:"avatar"` // 头像URL
|
||||
Intro string `json:"intro"` // 教师简介
|
||||
Sort int `json:"sort"` // 排序
|
||||
}
|
||||
|
||||
type ListCourseTeacherReq struct {
|
||||
CourseId int `json:"course_id" form:"course_id" validate:"omitempty"` // 可选筛选:按课程ID查询
|
||||
TeacherId int `json:"teacher_id" form:"teacher_id" validate:"omitempty"` // 可选筛选:按教师ID查询
|
||||
Page int `json:"page" form:"page" validate:"required,min=1"` // 页码(必填,从1开始)
|
||||
PageSize int `json:"page_size" form:"page_size" validate:"required,min=1,max=100"` // 每页条数(1-100)
|
||||
}
|
||||
|
||||
type ListCourseTeacherResp struct {
|
||||
Total int `json:"total"` // 总条数
|
||||
List []GetCourseTeacherResp `json:"list"` // 教学团队列表
|
||||
Page int `json:"page"` // 当前页码
|
||||
PageSize int `json:"page_size"` // 每页条数
|
||||
}
|
||||
|
||||
type UpdateCourseTeacherReq struct {
|
||||
Id int `json:"id" form:"id" validate:"required"` // 关联ID(必填)
|
||||
CourseId int `json:"course_id" form:"course_id" validate:"omitempty"` // 可选更新:课程ID
|
||||
TeacherId int `json:"teacher_id" form:"teacher_id" validate:"omitempty"` // 可选更新:教师ID
|
||||
Name string `json:"name" form:"name" validate:"omitempty,max=100"` // 可选更新:教师姓名
|
||||
Title string `json:"title" form:"title" validate:"omitempty,max=200"` // 可选更新:教师头衔
|
||||
Avatar string `json:"avatar" form:"avatar" validate:"omitempty,max=512"` // 可选更新:头像URL
|
||||
Intro string `json:"intro" form:"intro"` // 可选更新:教师简介
|
||||
Sort int `json:"sort" form:"sort" validate:"omitempty,min=0"` // 可选更新:排序
|
||||
}
|
||||
|
||||
type UpdateCourseTeacherResp struct {
|
||||
Message string `json:"message"` // 操作结果信息
|
||||
}
|
||||
Reference in New Issue
Block a user