// Package controller 控制器层 package controller import ( "strconv" "server/common" "server/modules/system/entity" "server/modules/system/service" "github.com/gin-gonic/gin" ) type SysUserController struct { service *service.SysUserService } func NewSysUserController() *SysUserController { return &SysUserController{service: service.NewSysUserService()} } func (ctrl *SysUserController) RegisterRoutes(r *gin.RouterGroup) { r.GET("/sys-users", ctrl.List) r.GET("/sys-users/:id", ctrl.GetByID) r.POST("/sys-users", ctrl.Create) r.PUT("/sys-users/:id", ctrl.Update) r.PATCH("/sys-users/:id", ctrl.UpdateFields) r.DELETE("/sys-users/:id", ctrl.Delete) r.PUT("/sys-users/:id/password", ctrl.UpdatePassword) } // @Summary 获取用户列表 // @Tags 用户管理 // @Param page query int false "页码" // @Param size query int false "每页数量" // @Success 200 {object} common.Response // @Router /sys-users [get] func (ctrl *SysUserController) List(c *gin.Context) { // var user *entity.LoginUser = common.GetLoginUser(c) // log.Printf(user.Username) 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 } common.SuccessPage(c, items, total, page, size) } // @Summary 获取单个用户 // @Tags 用户管理 // @Param id path string true "用户ID" // @Success 200 {object} common.Response // @Router /sys-users/{id} [get] func (ctrl *SysUserController) GetByID(c *gin.Context) { item, err := ctrl.service.GetByID(c.Param("id")) if err != nil { common.Error(c, 404, "未找到") return } common.Success(c, item) } // @Summary 创建用户 // @Tags 用户管理 // @Param item body entity.SysUser true "用户信息" // @Success 200 {object} common.Response // @Router /sys-users [post] func (ctrl *SysUserController) Create(c *gin.Context) { var item entity.SysUser if err := c.ShouldBindJSON(&item); err != nil { common.Error(c, 400, "参数错误") return } // 设置创建人 item.CreateBy = common.GetLoginUserID(c) if err := ctrl.service.Create(&item); err != nil { common.Error(c, 500, err.Error()) return } common.Success(c, item) } // @Summary 更新用户 // @Tags 用户管理 // @Param id path string true "用户ID" // @Param item body entity.SysUser true "用户信息" // @Success 200 {object} common.Response // @Router /sys-users/{id} [put] func (ctrl *SysUserController) Update(c *gin.Context) { var item entity.SysUser if err := c.ShouldBindJSON(&item); err != nil { common.Error(c, 400, "参数错误") return } item.ID = c.Param("id") item.UpdateBy = common.GetLoginUserID(c) if err := ctrl.service.Update(&item); 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 /sys-users/{id} [patch] func (ctrl *SysUserController) 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 /sys-users/{id} [delete] func (ctrl *SysUserController) 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) } // UpdatePasswordRequest 修改密码请求 type UpdatePasswordRequest struct { OldPassword string `json:"oldPassword" binding:"required"` NewPassword string `json:"newPassword" binding:"required"` } // @Summary 修改密码 // @Tags 用户管理 // @Param id path string true "用户ID" // @Param request body UpdatePasswordRequest true "密码信息" // @Success 200 {object} common.Response // @Router /sys-users/{id}/password [put] func (ctrl *SysUserController) UpdatePassword(c *gin.Context) { var req UpdatePasswordRequest if err := c.ShouldBindJSON(&req); err != nil { common.Error(c, 400, "参数错误") return } if err := ctrl.service.UpdatePassword(c.Param("id"), req.OldPassword, req.NewPassword); err != nil { common.Error(c, 400, err.Error()) return } common.Success(c, nil) }