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: "删除新闻成功"}) }