完成课程内容Handler

This commit is contained in:
2025-11-01 23:26:53 +08:00
parent 4a9b8f31f4
commit 0adbba7450
8 changed files with 167 additions and 36 deletions

View File

@@ -0,0 +1,3 @@
Name: admin-api
Host: 0.0.0.0
Port: 8888

View File

@@ -4,11 +4,14 @@
package admin package admin
import ( import (
"fmt"
"net/http" "net/http"
"github.com/JACKYMYPERSON/hldrCenter/config" "github.com/JACKYMYPERSON/hldrCenter/config"
"github.com/JACKYMYPERSON/hldrCenter/internal/admin/internal/logic/admin" "github.com/JACKYMYPERSON/hldrCenter/internal/admin/internal/logic/admin"
"github.com/JACKYMYPERSON/hldrCenter/internal/admin/internal/model"
"github.com/JACKYMYPERSON/hldrCenter/internal/admin/internal/types" "github.com/JACKYMYPERSON/hldrCenter/internal/admin/internal/types"
"github.com/zeromicro/go-zero/core/stores/sqlx"
"github.com/zeromicro/go-zero/rest/httpx" "github.com/zeromicro/go-zero/rest/httpx"
) )
@@ -20,7 +23,22 @@ func CreateAdminHandler(cfg *config.Config) http.HandlerFunc {
return return
} }
l := admin.NewCreateAdminLogic(r.Context(), svcCtx) mysqlCfg := cfg.MySQL
dsn := fmt.Sprintf(
"%s:%s@tcp(%s:%d)/%s?charset=%s&parseTime=true&loc=Local",
mysqlCfg.Username,
mysqlCfg.Password,
mysqlCfg.Host,
mysqlCfg.Port,
mysqlCfg.Database,
mysqlCfg.Charset,
)
fmt.Println("接收到articlePost请求")
conn := sqlx.NewSqlConn("mysql", dsn)
AdminModel := model.NewAdminModel(conn)
l := admin.NewCreateAdminLogic(r.Context(), cfg, AdminModel)
resp, err := l.CreateAdmin(&req) resp, err := l.CreateAdmin(&req)
if err != nil { if err != nil {
httpx.ErrorCtx(r.Context(), w, err) httpx.ErrorCtx(r.Context(), w, err)

View File

@@ -4,11 +4,14 @@
package admin package admin
import ( import (
"fmt"
"net/http" "net/http"
"github.com/JACKYMYPERSON/hldrCenter/config" "github.com/JACKYMYPERSON/hldrCenter/config"
"github.com/JACKYMYPERSON/hldrCenter/internal/admin/internal/logic/admin" "github.com/JACKYMYPERSON/hldrCenter/internal/admin/internal/logic/admin"
"github.com/JACKYMYPERSON/hldrCenter/internal/admin/internal/model"
"github.com/JACKYMYPERSON/hldrCenter/internal/admin/internal/types" "github.com/JACKYMYPERSON/hldrCenter/internal/admin/internal/types"
"github.com/zeromicro/go-zero/core/stores/sqlx"
"github.com/zeromicro/go-zero/rest/httpx" "github.com/zeromicro/go-zero/rest/httpx"
) )
@@ -20,7 +23,22 @@ func DeleteAdminHandler(cfg *config.Config) http.HandlerFunc {
return return
} }
l := admin.NewDeleteAdminLogic(r.Context(), svcCtx) mysqlCfg := cfg.MySQL
dsn := fmt.Sprintf(
"%s:%s@tcp(%s:%d)/%s?charset=%s&parseTime=true&loc=Local",
mysqlCfg.Username,
mysqlCfg.Password,
mysqlCfg.Host,
mysqlCfg.Port,
mysqlCfg.Database,
mysqlCfg.Charset,
)
fmt.Println("接收到articlePost请求")
conn := sqlx.NewSqlConn("mysql", dsn)
AdminModel := model.NewAdminModel(conn)
l := admin.NewDeleteAdminLogic(r.Context(), cfg, AdminModel)
resp, err := l.DeleteAdmin(&req) resp, err := l.DeleteAdmin(&req)
if err != nil { if err != nil {
httpx.ErrorCtx(r.Context(), w, err) httpx.ErrorCtx(r.Context(), w, err)

View File

@@ -4,11 +4,14 @@
package admin package admin
import ( import (
"fmt"
"net/http" "net/http"
"github.com/JACKYMYPERSON/hldrCenter/config" "github.com/JACKYMYPERSON/hldrCenter/config"
"github.com/JACKYMYPERSON/hldrCenter/internal/admin/internal/logic/admin" "github.com/JACKYMYPERSON/hldrCenter/internal/admin/internal/logic/admin"
"github.com/JACKYMYPERSON/hldrCenter/internal/admin/internal/model"
"github.com/JACKYMYPERSON/hldrCenter/internal/admin/internal/types" "github.com/JACKYMYPERSON/hldrCenter/internal/admin/internal/types"
"github.com/zeromicro/go-zero/core/stores/sqlx"
"github.com/zeromicro/go-zero/rest/httpx" "github.com/zeromicro/go-zero/rest/httpx"
) )
@@ -20,7 +23,22 @@ func GetAdminHandler(cfg *config.Config) http.HandlerFunc {
return return
} }
l := admin.NewGetAdminLogic(r.Context(), svcCtx) mysqlCfg := cfg.MySQL
dsn := fmt.Sprintf(
"%s:%s@tcp(%s:%d)/%s?charset=%s&parseTime=true&loc=Local",
mysqlCfg.Username,
mysqlCfg.Password,
mysqlCfg.Host,
mysqlCfg.Port,
mysqlCfg.Database,
mysqlCfg.Charset,
)
fmt.Println("接收到articlePost请求")
conn := sqlx.NewSqlConn("mysql", dsn)
AdminModel := model.NewAdminModel(conn)
l := admin.NewGetAdminLogic(r.Context(), cfg, AdminModel)
resp, err := l.GetAdmin(&req) resp, err := l.GetAdmin(&req)
if err != nil { if err != nil {
httpx.ErrorCtx(r.Context(), w, err) httpx.ErrorCtx(r.Context(), w, err)

View File

@@ -4,11 +4,14 @@
package admin package admin
import ( import (
"fmt"
"net/http" "net/http"
"github.com/JACKYMYPERSON/hldrCenter/config" "github.com/JACKYMYPERSON/hldrCenter/config"
"github.com/JACKYMYPERSON/hldrCenter/internal/admin/internal/logic/admin" "github.com/JACKYMYPERSON/hldrCenter/internal/admin/internal/logic/admin"
"github.com/JACKYMYPERSON/hldrCenter/internal/admin/internal/model"
"github.com/JACKYMYPERSON/hldrCenter/internal/admin/internal/types" "github.com/JACKYMYPERSON/hldrCenter/internal/admin/internal/types"
"github.com/zeromicro/go-zero/core/stores/sqlx"
"github.com/zeromicro/go-zero/rest/httpx" "github.com/zeromicro/go-zero/rest/httpx"
) )
@@ -20,7 +23,22 @@ func ListAdminHandler(cfg *config.Config) http.HandlerFunc {
return return
} }
l := admin.NewListAdminLogic(r.Context(), svcCtx) mysqlCfg := cfg.MySQL
dsn := fmt.Sprintf(
"%s:%s@tcp(%s:%d)/%s?charset=%s&parseTime=true&loc=Local",
mysqlCfg.Username,
mysqlCfg.Password,
mysqlCfg.Host,
mysqlCfg.Port,
mysqlCfg.Database,
mysqlCfg.Charset,
)
fmt.Println("接收到articlePost请求")
conn := sqlx.NewSqlConn("mysql", dsn)
AdminModel := model.NewAdminModel(conn)
l := admin.NewListAdminLogic(r.Context(), cfg, AdminModel)
resp, err := l.ListAdmin(&req) resp, err := l.ListAdmin(&req)
if err != nil { if err != nil {
httpx.ErrorCtx(r.Context(), w, err) httpx.ErrorCtx(r.Context(), w, err)

View File

@@ -4,11 +4,14 @@
package admin package admin
import ( import (
"fmt"
"net/http" "net/http"
"github.com/JACKYMYPERSON/hldrCenter/config" "github.com/JACKYMYPERSON/hldrCenter/config"
"github.com/JACKYMYPERSON/hldrCenter/internal/admin/internal/logic/admin" "github.com/JACKYMYPERSON/hldrCenter/internal/admin/internal/logic/admin"
"github.com/JACKYMYPERSON/hldrCenter/internal/admin/internal/model"
"github.com/JACKYMYPERSON/hldrCenter/internal/admin/internal/types" "github.com/JACKYMYPERSON/hldrCenter/internal/admin/internal/types"
"github.com/zeromicro/go-zero/core/stores/sqlx"
"github.com/zeromicro/go-zero/rest/httpx" "github.com/zeromicro/go-zero/rest/httpx"
) )
@@ -20,7 +23,22 @@ func UpdateAdminHandler(cfg *config.Config) http.HandlerFunc {
return return
} }
l := admin.NewUpdateAdminLogic(r.Context(), svcCtx) mysqlCfg := cfg.MySQL
dsn := fmt.Sprintf(
"%s:%s@tcp(%s:%d)/%s?charset=%s&parseTime=true&loc=Local",
mysqlCfg.Username,
mysqlCfg.Password,
mysqlCfg.Host,
mysqlCfg.Port,
mysqlCfg.Database,
mysqlCfg.Charset,
)
fmt.Println("接收到articlePost请求")
conn := sqlx.NewSqlConn("mysql", dsn)
AdminModel := model.NewAdminModel(conn)
l := admin.NewUpdateAdminLogic(r.Context(), cfg, AdminModel)
resp, err := l.UpdateAdmin(&req) resp, err := l.UpdateAdmin(&req)
if err != nil { if err != nil {
httpx.ErrorCtx(r.Context(), w, err) httpx.ErrorCtx(r.Context(), w, err)

View File

@@ -3,48 +3,85 @@
package types package types
type CreateCourseFileReq struct { type AdminInfo struct {
ContentId int `json:"content_id" form:"content_id" validate:"required"` // 关联的内容ID必填 Id int64 `json:"id"` // 用户ID
Title string `json:"title" form:"title" validate:"required,max=255"` // 文件标题必填最长255字符 Username string `json:"username"` // 用户名
FileType string `json:"file_type" form:"file_type" validate:"required,max=30"` // 文件类型必填最长30字符 Password string `json:"password"` // 密码(仅创建/更新时传递
FileUrl string `json:"file_url" form:"file_url" validate:"required,max=255"` // 文件URL必填最长255字符 CoverUrl string `json:"cover_url"` // 封面URL
Intro string `json:"intro"` // 简介
CreateTime string `json:"create_time"` // 创建时间
UpdateTime string `json:"update_time"` // 更新时间
Role string `json:"role"` // 角色super_admin/normal_admin
Status int32 `json:"status"` // 1启用0禁用
} }
type CreateCourseFileResp struct { type BaseResp struct {
Id int `json:"id"` // 新增文件的ID Code int32 `json:"code"` // 0成功非0失败
Message string `json:"message"` // 操作结果信息 Message string `json:"message"` // 提示信息
} }
type DeleteCourseFileReq struct { type CreateAdminData struct {
Id int `json:"id" form:"id" param:"id" validate:"required"` // 文件ID必填从路径参数获取 Id int64 `json:"id"` // 新增的管理员ID
} }
type DeleteCourseFileResp struct { type CreateAdminReq struct {
Message string `json:"message"` // 操作结果信息 Username string `json:"username" form:"username"` // 用户名(必填)
Password string `json:"password" form:"password"` // 密码(必填,需加密)
CoverUrl string `json:"cover_url,optional" form:"cover_url"` // 封面URL可选
Intro string `json:"intro,optional" form:"intro"` // 简介(可选)
Role string `json:"role,optional" form:"role"` // 角色默认normal_admin
Status int32 `json:"status,optional" form:"status"` // 状态默认1
} }
type GetCourseFileReq struct { type CreateAdminResp struct {
Id int `json:"id" form:"id" param:"id" validate:"required"` // 文件ID必填从路径参数获取 BaseResp
Data CreateAdminData `json:"data,optional"` // 业务数据(可选)
} }
type GetCourseFileResp struct { type DeleteAdminReq struct {
Id int `json:"id"` // 文件ID Id int64 `json:"id" form:"id"` // 用户ID必填
ContentId int `json:"content_id"` // 关联的内容ID
Title string `json:"title"` // 文件标题
FileType string `json:"file_type"` // 文件类型
FileUrl string `json:"file_url"` // 文件URL
CreateTime string `json:"create_time"` // 创建时间(格式化字符串)
UpdateTime string `json:"update_time"` // 更新时间(格式化字符串)
} }
type UpdateCourseFileReq struct { type DeleteAdminResp struct {
Id int `json:"id" form:"id" validate:"required"` // 文件ID必填 BaseResp
ContentId int `json:"content_id" form:"content_id"` // 可选更新关联的内容ID
Title string `json:"title" form:"title" validate:"omitempty,max=255"` // 可选:更新标题
FileType string `json:"file_type" form:"file_type" validate:"omitempty,max=30"` // 可选:更新文件类型
FileUrl string `json:"file_url" form:"file_url" validate:"omitempty,max=255"` // 可选更新文件URL
} }
type UpdateCourseFileResp struct { type GetAdminReq struct {
Message string `json:"message"` // 操作结果信息 Id int64 `json:"id" form:"id"` // 用户ID必填
}
type GetAdminResp struct {
BaseResp
Data AdminInfo `json:"data"` // 管理员详情数据
}
type ListAdminData struct {
Total int64 `json:"total"` // 总条数
List []AdminInfo `json:"list"` // 管理员列表
}
type ListAdminReq struct {
Page int32 `json:"page,optional" form:"page"` // 页码默认1
Size int32 `json:"size,optional" form:"size"` // 每页条数默认10
Role string `json:"role,optional" form:"role"` // 按角色筛选
Status int32 `json:"status,optional" form:"status"` // 按状态筛选
}
type ListAdminResp struct {
BaseResp
Data ListAdminData `json:"data"` // 业务数据
}
type UpdateAdminReq struct {
Id int64 `json:"id" form:"id"` // 用户ID必填
Username string `json:"username,optional" form:"username"` // 用户名(可选)
Password string `json:"password,optional" form:"password"` // 密码(可选)
CoverUrl string `json:"cover_url,optional" form:"cover_url"` // 封面URL可选
Intro string `json:"intro,optional" form:"intro"` // 简介(可选)
Role string `json:"role,optional" form:"role"` // 角色(可选)
Status int32 `json:"status,optional" form:"status"` // 状态(可选)
}
type UpdateAdminResp struct {
BaseResp
} }

View File

@@ -24,7 +24,8 @@ func NewAddContentLogic(ctx context.Context, cfg *config.Config, model model.Cou
return &AddContentLogic{ return &AddContentLogic{
Logger: logx.WithContext(ctx), Logger: logx.WithContext(ctx),
ctx: ctx, ctx: ctx,
svcCtx: svcCtx, cfg: cfg,
model: model,
} }
} }