// 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) }