feat():learning后台管理项目初始化
This commit is contained in:
144
internal/api/handlers/page_handler.go
Normal file
144
internal/api/handlers/page_handler.go
Normal file
@@ -0,0 +1,144 @@
|
||||
package handlers
|
||||
|
||||
import (
|
||||
"goalfymax-admin/internal/models"
|
||||
"goalfymax-admin/internal/services"
|
||||
"goalfymax-admin/pkg/utils"
|
||||
"strconv"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
// PageHandler 页面处理器
|
||||
type PageHandler struct {
|
||||
pageService services.PageService
|
||||
response *utils.Response
|
||||
logger *utils.Logger
|
||||
}
|
||||
|
||||
// NewPageHandler 创建页面处理器
|
||||
func NewPageHandler(pageService services.PageService, logger *utils.Logger) *PageHandler {
|
||||
return &PageHandler{
|
||||
pageService: pageService,
|
||||
response: utils.NewResponse(),
|
||||
logger: logger,
|
||||
}
|
||||
}
|
||||
|
||||
// Create 创建页面
|
||||
func (h *PageHandler) Create(c *gin.Context) {
|
||||
var req models.PageCreateRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
h.logger.Error("参数绑定失败", zap.Error(err))
|
||||
h.response.ValidateError(c, err)
|
||||
return
|
||||
}
|
||||
|
||||
page, err := h.pageService.Create(&req)
|
||||
if err != nil {
|
||||
h.logger.Error("创建页面失败", zap.Error(err))
|
||||
h.response.InternalServerError(c, err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
h.response.Success(c, page)
|
||||
}
|
||||
|
||||
// GetByID 根据ID获取页面
|
||||
func (h *PageHandler) GetByID(c *gin.Context) {
|
||||
idStr := c.Param("id")
|
||||
id, err := strconv.ParseUint(idStr, 10, 32)
|
||||
if err != nil {
|
||||
h.logger.Error("页面ID格式错误", zap.Error(err))
|
||||
h.response.BadRequest(c, "无效的页面ID")
|
||||
return
|
||||
}
|
||||
|
||||
page, err := h.pageService.GetByID(uint(id))
|
||||
if err != nil {
|
||||
h.logger.Error("获取页面失败", zap.Error(err))
|
||||
h.response.InternalServerError(c, err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
h.response.Success(c, page)
|
||||
}
|
||||
|
||||
// Update 更新页面
|
||||
func (h *PageHandler) Update(c *gin.Context) {
|
||||
idStr := c.Param("id")
|
||||
id, err := strconv.ParseUint(idStr, 10, 32)
|
||||
if err != nil {
|
||||
h.logger.Error("页面ID格式错误", zap.Error(err))
|
||||
h.response.BadRequest(c, "无效的页面ID")
|
||||
return
|
||||
}
|
||||
|
||||
var req models.PageUpdateRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
h.logger.Error("参数绑定失败", zap.Error(err))
|
||||
h.response.ValidateError(c, err)
|
||||
return
|
||||
}
|
||||
|
||||
page, err := h.pageService.Update(uint(id), &req)
|
||||
if err != nil {
|
||||
h.logger.Error("更新页面失败", zap.Error(err))
|
||||
h.response.InternalServerError(c, err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
h.response.Success(c, page)
|
||||
}
|
||||
|
||||
// Delete 删除页面
|
||||
func (h *PageHandler) Delete(c *gin.Context) {
|
||||
idStr := c.Param("id")
|
||||
id, err := strconv.ParseUint(idStr, 10, 32)
|
||||
if err != nil {
|
||||
h.logger.Error("页面ID格式错误", zap.Error(err))
|
||||
h.response.BadRequest(c, "无效的页面ID")
|
||||
return
|
||||
}
|
||||
|
||||
err = h.pageService.Delete(uint(id))
|
||||
if err != nil {
|
||||
h.logger.Error("删除页面失败", zap.Error(err))
|
||||
h.response.InternalServerError(c, err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
h.response.Success(c, gin.H{"message": "页面删除成功"})
|
||||
}
|
||||
|
||||
// List 获取页面列表
|
||||
func (h *PageHandler) List(c *gin.Context) {
|
||||
var req models.PageListRequest
|
||||
if err := c.ShouldBindQuery(&req); err != nil {
|
||||
h.logger.Error("参数绑定失败", zap.Error(err))
|
||||
h.response.ValidateError(c, err)
|
||||
return
|
||||
}
|
||||
|
||||
pages, total, err := h.pageService.List(&req)
|
||||
if err != nil {
|
||||
h.logger.Error("获取页面列表失败", zap.Error(err))
|
||||
h.response.InternalServerError(c, err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
// 如果没有分页参数,直接返回页面列表
|
||||
if req.Page <= 0 || req.Size <= 0 {
|
||||
h.response.Success(c, pages)
|
||||
return
|
||||
}
|
||||
|
||||
// 有分页参数时返回完整的分页信息
|
||||
h.response.Success(c, gin.H{
|
||||
"pages": pages,
|
||||
"total": total,
|
||||
"page": req.Page,
|
||||
"size": req.Size,
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user