第一版完成
This commit is contained in:
159
internal/controller/news.go
Normal file
159
internal/controller/news.go
Normal file
@@ -0,0 +1,159 @@
|
||||
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 cNews struct{}
|
||||
|
||||
var News = &cNews{}
|
||||
|
||||
// List 获取新闻列表(公开接口)
|
||||
func (c *cNews) List(r *ghttp.Request) {
|
||||
var req *model.NewsListRequest
|
||||
if err := r.Parse(&req); err != nil {
|
||||
r.Response.WriteJson(&model.Response{Code: 400, Message: "参数解析失败", Data: err.Error()})
|
||||
return
|
||||
}
|
||||
|
||||
// 调用新闻服务获取列表
|
||||
newsService := service.News()
|
||||
result, err := newsService.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 *cNews) AdminList(r *ghttp.Request) {
|
||||
var req *model.NewsListRequest
|
||||
if err := r.Parse(&req); err != nil {
|
||||
r.Response.WriteJson(&model.Response{Code: 400, Message: "参数解析失败", Data: err.Error()})
|
||||
return
|
||||
}
|
||||
|
||||
// 调用新闻服务获取列表(暂时使用相同方法)
|
||||
newsService := service.News()
|
||||
result, err := newsService.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 *cNews) Create(r *ghttp.Request) {
|
||||
r.Response.WriteJson(&model.Response{Code: 200, Message: "功能开发中"})
|
||||
}
|
||||
|
||||
// Detail 获取新闻详情(公开接口)
|
||||
func (c *cNews) 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
|
||||
}
|
||||
|
||||
// 调用新闻服务获取详情
|
||||
newsService := service.News()
|
||||
var result *model.News
|
||||
var err error
|
||||
|
||||
if id > 0 {
|
||||
result, err = newsService.GetById(r.Context(), id)
|
||||
} else {
|
||||
result, err = newsService.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 *cNews) AdminDetail(r *ghttp.Request) {
|
||||
id := gconv.Int(r.Get("id"))
|
||||
if id <= 0 {
|
||||
r.Response.WriteJson(&model.Response{Code: 400, Message: "新闻ID无效"})
|
||||
return
|
||||
}
|
||||
|
||||
// 调用新闻服务获取管理后台详情
|
||||
newsService := service.News()
|
||||
result, err := newsService.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 *cNews) 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.UpdateNewsRequest
|
||||
if err := r.Parse(&req); err != nil {
|
||||
r.Response.WriteJson(&model.Response{Code: 400, Message: "参数解析失败", Data: err.Error()})
|
||||
return
|
||||
}
|
||||
|
||||
// 调用新闻服务更新新闻
|
||||
newsService := service.News()
|
||||
err := newsService.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 *cNews) Delete(r *ghttp.Request) {
|
||||
id := gconv.Int(r.Get("id"))
|
||||
if id <= 0 {
|
||||
r.Response.WriteJson(&model.Response{Code: 400, Message: "新闻ID无效"})
|
||||
return
|
||||
}
|
||||
|
||||
// 调用新闻服务删除新闻
|
||||
newsService := service.News()
|
||||
err := newsService.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: "删除新闻成功"})
|
||||
}
|
||||
Reference in New Issue
Block a user