// Package controller 控制器层 package controller import ( "strconv" "server/common" "server/modules/yx/dto" "server/modules/yx/service" yxVO "server/modules/yx/vo" "github.com/gin-gonic/gin" ) type YxCalculationMajorController struct { service *service.YxCalculationMajorService } func NewYxCalculationMajorController() *YxCalculationMajorController { return &YxCalculationMajorController{service: service.NewYxCalculationMajorService()} } // _ 确保 vo 包被导入(用于 Swagger 注解) var _ = yxVO.YxCalculationMajorVO{} func (ctrl *YxCalculationMajorController) RegisterRoutes(r *gin.RouterGroup) { r.GET("/yx-calculation-majors", ctrl.List) r.GET("/yx-calculation-majors/:id", ctrl.GetByID) r.POST("/yx-calculation-majors", ctrl.Create) r.PUT("/yx-calculation-majors/:id", ctrl.Update) r.PATCH("/yx-calculation-majors/:id", ctrl.UpdateFields) r.DELETE("/yx-calculation-majors/:id", ctrl.Delete) r.POST("/yx-calculation-majors/batch", ctrl.BatchCreate) r.DELETE("/yx-calculation-majors/batch", ctrl.BatchDelete) } // @Summary 获取计算专业列表 // @Tags 计算专业 // @Param page query int false "页码" // @Param size query int false "每页数量" // @Success 200 {object} common.Response{data=[]vo.YxCalculationMajorVO} // @Router /yx-calculation-majors [get] func (ctrl *YxCalculationMajorController) List(c *gin.Context) { page, _ := strconv.Atoi(c.DefaultQuery("page", "1")) size, _ := strconv.Atoi(c.DefaultQuery("size", "10")) items, total, err := ctrl.service.ListCalculationMajors(page, size) if err != nil { common.Error(c, 500, err.Error()) return } common.SuccessPage(c, items, total, page, size) } // @Summary 获取单个计算专业 // @Tags 计算专业 // @Param id path string true "ID" // @Success 200 {object} common.Response{data=vo.YxCalculationMajorVO} // @Router /yx-calculation-majors/{id} [get] func (ctrl *YxCalculationMajorController) GetByID(c *gin.Context) { item, err := ctrl.service.GetCalculationMajorByID(c.Param("id")) if err != nil { common.Error(c, 404, "未找到") return } common.Success(c, item) } // @Summary 创建计算专业 // @Tags 计算专业 // @Param request body dto.CreateCalculationMajorRequest true "计算专业信息" // @Success 200 {object} common.Response{data=vo.YxCalculationMajorVO} // @Router /yx-calculation-majors [post] func (ctrl *YxCalculationMajorController) Create(c *gin.Context) { var req dto.CreateCalculationMajorRequest if err := c.ShouldBindJSON(&req); err != nil { common.Error(c, 400, "参数错误: "+err.Error()) return } item, err := ctrl.service.CreateCalculationMajor(&req) if err != nil { common.Error(c, 500, err.Error()) return } common.Success(c, item) } // @Summary 更新计算专业 // @Tags 计算专业 // @Param id path string true "ID" // @Param request body dto.UpdateCalculationMajorRequest true "计算专业信息" // @Success 200 {object} common.Response{data=vo.YxCalculationMajorVO} // @Router /yx-calculation-majors/{id} [put] func (ctrl *YxCalculationMajorController) Update(c *gin.Context) { var req dto.UpdateCalculationMajorRequest if err := c.ShouldBindJSON(&req); err != nil { common.Error(c, 400, "参数错误: "+err.Error()) return } item, err := ctrl.service.UpdateCalculationMajor(c.Param("id"), &req) if err != nil { common.Error(c, 500, err.Error()) return } common.Success(c, item) } // @Summary 动态字段更新 // @Tags 计算专业 // @Param id path string true "ID" // @Param fields body map[string]interface{} true "要更新的字段" // @Success 200 {object} common.Response // @Router /yx-calculation-majors/{id} [patch] func (ctrl *YxCalculationMajorController) UpdateFields(c *gin.Context) { var fields map[string]interface{} if err := c.ShouldBindJSON(&fields); err != nil { common.Error(c, 400, "参数错误") return } if err := ctrl.service.UpdateFields(c.Param("id"), fields); err != nil { common.Error(c, 500, err.Error()) return } common.Success(c, nil) } // @Summary 删除计算专业 // @Tags 计算专业 // @Param id path string true "ID" // @Success 200 {object} common.Response // @Router /yx-calculation-majors/{id} [delete] func (ctrl *YxCalculationMajorController) Delete(c *gin.Context) { if err := ctrl.service.Delete(c.Param("id")); err != nil { common.Error(c, 500, err.Error()) return } common.Success(c, nil) } // @Summary 批量创建计算专业 // @Tags 计算专业 // @Param items body []dto.CreateCalculationMajorRequest true "计算专业列表" // @Success 200 {object} common.Response // @Router /yx-calculation-majors/batch [post] func (ctrl *YxCalculationMajorController) BatchCreate(c *gin.Context) { var reqs []dto.CreateCalculationMajorRequest if err := c.ShouldBindJSON(&reqs); err != nil { common.Error(c, 400, "参数错误") return } if err := ctrl.service.BatchCreateCalculationMajors(&reqs); err != nil { common.Error(c, 500, err.Error()) return } common.Success(c, nil) } // @Summary 批量删除计算专业 // @Tags 计算专业 // @Param ids body []string true "ID列表" // @Success 200 {object} common.Response // @Router /yx-calculation-majors/batch [delete] func (ctrl *YxCalculationMajorController) BatchDelete(c *gin.Context) { var ids []string if err := c.ShouldBindJSON(&ids); err != nil { common.Error(c, 400, "参数错误") return } if err := ctrl.service.BatchDelete(ids); err != nil { common.Error(c, 500, err.Error()) return } common.Success(c, nil) }