174 lines
4.9 KiB
Go
174 lines
4.9 KiB
Go
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: "删除文章成功"})
|
|
}
|