package controller import ( "cms-api/internal/model" "cms-api/internal/service" "github.com/gogf/gf/v2/net/ghttp" "github.com/gogf/gf/v2/util/gconv" ) // 文章控制器 type cArticle struct{} var Article = &cArticle{} // List 获取文章列表(公开接口) func (c *cArticle) List(r *ghttp.Request) { var req *model.ArticleListRequest if err := r.Parse(&req); err != nil { r.Response.WriteJson(&model.Response{Code: 400, Message: "参数解析失败", Data: err.Error()}) return } // 调用文章服务获取列表 articleService := service.Article() result, err := articleService.List(r.Context(), req) if err != nil { r.Response.WriteJson(&model.Response{Code: 500, Message: "获取文章列表失败", Data: err.Error()}) return } r.Response.WriteJson(&model.Response{Code: 200, Message: "获取成功", Data: result}) } // AdminList 获取文章列表(管理后台) func (c *cArticle) AdminList(r *ghttp.Request) { var req *model.ArticleListRequest if err := r.Parse(&req); err != nil { r.Response.WriteJson(&model.Response{Code: 400, Message: "参数解析失败", Data: err.Error()}) return } // 调用文章服务获取管理后台列表 articleService := service.Article() result, err := articleService.List(r.Context(), req) if err != nil { r.Response.WriteJson(&model.Response{Code: 500, Message: "获取文章列表失败", Data: err.Error()}) return } r.Response.WriteJson(&model.Response{Code: 200, Message: "获取成功", Data: result}) } // Create 创建文章 func (c *cArticle) Create(r *ghttp.Request) { var req *model.CreateArticleRequest if err := r.Parse(&req); err != nil { r.Response.WriteJson(&model.Response{Code: 400, Message: "参数解析失败", Data: err.Error()}) return } // 调用文章服务创建文章 articleService := service.Article() err := articleService.Create(r.Context(), req) if err != nil { r.Response.WriteJson(&model.Response{Code: 500, Message: "创建文章失败", Data: err.Error()}) return } r.Response.WriteJson(&model.Response{Code: 200, Message: "创建文章成功"}) } // Detail 获取文章详情(公开接口) func (c *cArticle) Detail(r *ghttp.Request) { id := gconv.Int(r.Get("id")) slug := gconv.String(r.Get("slug")) if id <= 0 && slug == "" { r.Response.WriteJson(&model.Response{Code: 400, Message: "文章ID或别名无效"}) return } // 调用文章服务获取详情 articleService := service.Article() var result *model.Article var err error if id > 0 { result, err = articleService.GetById(r.Context(), id) } else { result, err = articleService.GetBySlug(r.Context(), slug) } if err != nil { r.Response.WriteJson(&model.Response{Code: 500, Message: "获取文章详情失败", Data: err.Error()}) return } if result == nil { r.Response.WriteJson(&model.Response{Code: 404, Message: "文章不存在"}) return } r.Response.WriteJson(&model.Response{Code: 200, Message: "获取成功", Data: result}) } // AdminDetail 获取文章详情(管理后台) func (c *cArticle) AdminDetail(r *ghttp.Request) { id := gconv.Int(r.Get("id")) if id <= 0 { r.Response.WriteJson(&model.Response{Code: 400, Message: "文章ID无效"}) return } // 调用文章服务获取管理后台详情 articleService := service.Article() result, err := articleService.GetById(r.Context(), id) if err != nil { r.Response.WriteJson(&model.Response{Code: 500, Message: "获取文章详情失败", Data: err.Error()}) return } if result == nil { r.Response.WriteJson(&model.Response{Code: 404, Message: "文章不存在"}) return } r.Response.WriteJson(&model.Response{Code: 200, Message: "获取成功", Data: result}) } // Update 更新文章 func (c *cArticle) Update(r *ghttp.Request) { id := gconv.Int(r.Get("id")) if id <= 0 { r.Response.WriteJson(&model.Response{Code: 400, Message: "文章ID无效"}) return } var req *model.UpdateArticleRequest if err := r.Parse(&req); err != nil { r.Response.WriteJson(&model.Response{Code: 400, Message: "参数解析失败", Data: err.Error()}) return } // 调用文章服务更新文章 articleService := service.Article() err := articleService.Update(r.Context(), id, req) if err != nil { r.Response.WriteJson(&model.Response{Code: 500, Message: "更新文章失败", Data: err.Error()}) return } r.Response.WriteJson(&model.Response{Code: 200, Message: "更新文章成功"}) } // Delete 删除文章 func (c *cArticle) Delete(r *ghttp.Request) { id := gconv.Int(r.Get("id")) if id <= 0 { r.Response.WriteJson(&model.Response{Code: 400, Message: "文章ID无效"}) return } // 调用文章服务删除文章 articleService := service.Article() err := articleService.Delete(r.Context(), id) if err != nil { r.Response.WriteJson(&model.Response{Code: 500, Message: "删除文章失败", Data: err.Error()}) return } r.Response.WriteJson(&model.Response{Code: 200, Message: "删除文章成功"}) }