golang-yitisheng-server/server/modules/yx/controller/yx_volunteer_controller.go

151 lines
4.3 KiB
Go

// Package controller 控制层
package controller
import (
"server/common"
"server/modules/yx/dto"
"server/modules/yx/service"
"server/modules/yx/vo"
"strconv"
"github.com/gin-gonic/gin"
)
type YxVolunteerController struct {
service *service.YxVolunteerService
}
func NewYxVolunteerController() *YxVolunteerController {
return &YxVolunteerController{service: service.NewYxVolunteerService()}
}
// RegisterRoutes 注册路由
func (ctrl *YxVolunteerController) RegisterRoutes(rg *gin.RouterGroup) {
group := rg.Group("/yx-volunteers")
{
group.GET("", ctrl.List)
group.GET("/:id", ctrl.Get)
group.POST("", ctrl.Create)
group.PUT("/:id", ctrl.Update)
group.DELETE("/:id", ctrl.Delete)
}
}
// List 获取志愿列表
// @Summary 获取志愿列表
// @Tags 志愿
// @Param page query int false "页码" default(1)
// @Param size query int false "每页数量" default(10)
// @Success 200 {object} common.Response{data=[]vo.YxVolunteerVO}
// @Router /yx-volunteers [get]
func (ctrl *YxVolunteerController) List(c *gin.Context) {
page, _ := strconv.Atoi(c.DefaultQuery("page", "1"))
size, _ := strconv.Atoi(c.DefaultQuery("size", "10"))
items, total, err := ctrl.service.List(page, size)
if err != nil {
common.Error(c, 500, err.Error())
return
}
// 转换 Entity 到 VO
vos := make([]vo.YxVolunteerVO, len(items))
for i, item := range items {
vos[i] = vo.YxVolunteerVO{
ID: item.ID,
VolunteerName: item.VolunteerName,
ScoreId: item.ScoreId,
CreateType: item.CreateType,
State: item.State,
CreateBy: item.CreateBy,
CreateTime: item.CreateTime,
UpdateBy: item.UpdateBy,
UpdateTime: item.UpdateTime,
SysOrgCode: item.SysOrgCode,
}
}
common.SuccessPage(c, vos, total, page, size)
}
// Get 获取单个志愿
// @Summary 获取单个志愿
// @Tags 志愿
// @Param id path string true "ID"
// @Success 200 {object} common.Response{data=vo.YxVolunteerVO}
// @Router /yx-volunteers/{id} [get]
func (ctrl *YxVolunteerController) Get(c *gin.Context) {
id := c.Param("id")
item, err := ctrl.service.GetByID(id)
if err != nil {
common.Error(c, 404, "未找到记录")
return
}
voItem := vo.YxVolunteerVO{
ID: item.ID,
VolunteerName: item.VolunteerName,
ScoreId: item.ScoreId,
CreateType: item.CreateType,
State: item.State,
CreateBy: item.CreateBy,
CreateTime: item.CreateTime,
UpdateBy: item.UpdateBy,
UpdateTime: item.UpdateTime,
SysOrgCode: item.SysOrgCode,
}
common.Success(c, voItem)
}
// Create 创建志愿
// @Summary 创建志愿
// @Tags 志愿
// @Param request body dto.CreateVolunteerRequest true "志愿信息"
// @Success 200 {object} common.Response{data=vo.YxVolunteerVO}
// @Router /yx-volunteers [post]
func (ctrl *YxVolunteerController) Create(c *gin.Context) {
var req dto.CreateVolunteerRequest
if err := c.ShouldBindJSON(&req); err != nil {
common.Error(c, 400, "参数错误: "+err.Error())
return
}
voItem, err := ctrl.service.CreateVolunteer(&req)
if err != nil {
common.Error(c, 500, err.Error())
return
}
common.Success(c, voItem)
}
// Update 更新志愿
// @Summary 更新志愿
// @Tags 志愿
// @Param id path string true "ID"
// @Param request body dto.UpdateVolunteerRequest true "志愿信息"
// @Success 200 {object} common.Response{data=vo.YxVolunteerVO}
// @Router /yx-volunteers/{id} [put]
func (ctrl *YxVolunteerController) Update(c *gin.Context) {
var req dto.UpdateVolunteerRequest
if err := c.ShouldBindJSON(&req); err != nil {
common.Error(c, 400, "参数错误: "+err.Error())
return
}
voItem, err := ctrl.service.UpdateVolunteer(c.Param("id"), &req)
if err != nil {
common.Error(c, 500, err.Error())
return
}
common.Success(c, voItem)
}
// Delete 删除志愿
// @Summary 删除志愿
// @Tags 志愿
// @Param id path string true "ID"
// @Success 200 {object} common.Response
// @Router /yx-volunteers/{id} [delete]
func (ctrl *YxVolunteerController) Delete(c *gin.Context) {
id := c.Param("id")
if err := ctrl.service.Delete(id); err != nil {
common.Error(c, 500, err.Error())
return
}
common.Success(c, nil)
}