Files
2025-08-03 00:11:15 +08:00

163 lines
3.4 KiB
Go

package admin
import (
"strconv"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/net/ghttp"
"nl-video-api/internal/service"
"nl-video-api/utility/response"
)
var Banner = cAdminBanner{}
type cAdminBanner struct{}
// Create 创建轮播图
func (c *cAdminBanner) Create(r *ghttp.Request) {
service.Banner.AdminCreate(r)
}
// Update 更新轮播图
func (c *cAdminBanner) Update(r *ghttp.Request) {
var req *service.AdminBannerUpdateReq
if err := r.Parse(&req); err != nil {
response.Error(r, 1001, "参数解析失败: "+err.Error())
return
}
// 从URL路径获取ID
if req.Id == 0 {
idStr := r.Get("id").String()
if id, err := strconv.Atoi(idStr); err == nil {
req.Id = uint(id)
}
}
err := service.Banner.AdminUpdate(r.Context(), req)
if err != nil {
response.Error(r, 1002, err.Error())
return
}
response.Success(r, g.Map{
"message": "更新成功",
})
}
// Delete 删除轮播图
func (c *cAdminBanner) Delete(r *ghttp.Request) {
idStr := r.Get("id").String()
id, err := strconv.Atoi(idStr)
if err != nil || id <= 0 {
response.Error(r, 1001, "轮播图ID无效")
return
}
req := &service.AdminBannerDeleteReq{Id: uint(id)}
err = service.Banner.AdminDelete(r.Context(), req)
if err != nil {
response.Error(r, 1002, err.Error())
return
}
response.Success(r, g.Map{
"message": "删除成功",
})
}
// GetDetail 获取轮播图详情
func (c *cAdminBanner) GetDetail(r *ghttp.Request) {
idStr := r.Get("id").String()
id, err := strconv.Atoi(idStr)
if err != nil || id <= 0 {
response.Error(r, 1001, "轮播图ID无效")
return
}
req := &service.AdminBannerDetailReq{Id: uint(id)}
result, err := service.Banner.AdminGetDetail(r.Context(), req)
if err != nil {
response.Error(r, 1002, err.Error())
return
}
response.Success(r, result)
}
// GetList 获取轮播图列表
func (c *cAdminBanner) GetList(r *ghttp.Request) {
var req *service.AdminBannerListReq
if err := r.Parse(&req); err != nil {
response.Error(r, 1001, "参数解析失败: "+err.Error())
return
}
// 设置默认分页参数
if req.Page <= 0 {
req.Page = 1
}
if req.Size <= 0 {
req.Size = 10
}
result, err := service.Banner.AdminGetList(r.Context(), req)
if err != nil {
response.Error(r, 1002, err.Error())
return
}
response.Success(r, result)
}
// UpdateStatus 更新轮播图状态
func (c *cAdminBanner) UpdateStatus(r *ghttp.Request) {
var req *service.AdminBannerUpdateStatusReq
if err := r.Parse(&req); err != nil {
response.Error(r, 1001, "参数解析失败: "+err.Error())
return
}
// 从URL路径获取ID
if req.Id == 0 {
idStr := r.Get("id").String()
if id, err := strconv.Atoi(idStr); err == nil {
req.Id = uint(id)
}
}
err := service.Banner.AdminUpdateStatus(r.Context(), req)
if err != nil {
response.Error(r, 1002, err.Error())
return
}
response.Success(r, g.Map{
"message": "状态更新成功",
})
}
// BatchDelete 批量删除轮播图
func (c *cAdminBanner) BatchDelete(r *ghttp.Request) {
var req *service.AdminBannerBatchDeleteReq
if err := r.Parse(&req); err != nil {
response.Error(r, 1001, "参数解析失败: "+err.Error())
return
}
if len(req.Ids) == 0 {
response.Error(r, 1001, "轮播图ID列表不能为空")
return
}
err := service.Banner.AdminBatchDelete(r.Context(), req)
if err != nil {
response.Error(r, 1002, err.Error())
return
}
response.Success(r, g.Map{
"message": "批量删除成功",
})
}