package user import ( "net/http" "strconv" "task-track-backend/model" "github.com/gin-gonic/gin" "gorm.io/gorm" ) func (h *UserHandler) UpdateUser(c *gin.Context) { id, err := strconv.ParseUint(c.Param("id"), 10, 32) if err != nil { c.JSON(http.StatusBadRequest, gin.H{ "code": 400, "message": "Invalid user ID", }) return } var updateData model.User if err := c.ShouldBindJSON(&updateData); err != nil { c.JSON(http.StatusBadRequest, gin.H{ "code": 400, "message": "Invalid request data", "error": err.Error(), }) return } // 检查用户是否存在 var user model.User if err := h.db.First(&user, id).Error; err != nil { if err == gorm.ErrRecordNotFound { c.JSON(http.StatusNotFound, gin.H{ "code": 404, "message": "User not found", }) return } c.JSON(http.StatusInternalServerError, gin.H{ "code": 500, "message": "Failed to find user", "error": err.Error(), }) return } // 更新用户信息 if err := h.db.Model(&user).Updates(updateData).Error; err != nil { c.JSON(http.StatusInternalServerError, gin.H{ "code": 500, "message": "Failed to update user", "error": err.Error(), }) return } c.JSON(http.StatusOK, gin.H{ "code": 200, "message": "User updated successfully", "data": user, }) }