Ver código fonte

fix: update user

CaIon 1 ano atrás
pai
commit
08b5336431
2 arquivos alterados com 39 adições e 33 exclusões
  1. 2 2
      controller/user.go
  2. 37 31
      model/user.go

+ 2 - 2
controller/user.go

@@ -453,7 +453,7 @@ func UpdateUser(c *gin.Context) {
 		updatedUser.Password = "" // rollback to what it should be
 	}
 	updatePassword := updatedUser.Password != ""
-	if err := updatedUser.Update(updatePassword); err != nil {
+	if err := updatedUser.Edit(updatePassword); err != nil {
 		c.JSON(http.StatusOK, gin.H{
 			"success": false,
 			"message": err.Error(),
@@ -726,7 +726,7 @@ func ManageUser(c *gin.Context) {
 		user.Role = common.RoleCommonUser
 	}
 
-	if err := user.UpdateAll(false); err != nil {
+	if err := user.Update(false); err != nil {
 		c.JSON(http.StatusOK, gin.H{
 			"success": false,
 			"message": err.Error(),

+ 37 - 31
model/user.go

@@ -74,35 +74,35 @@ func GetAllUsers(startIdx int, num int) (users []*User, err error) {
 }
 
 func SearchUsers(keyword string, group string) ([]*User, error) {
-    var users []*User
-    var err error
-
-    // 尝试将关键字转换为整数ID
-    keywordInt, err := strconv.Atoi(keyword)
-    if err == nil {
-        // 如果转换成功,按照ID和可选的组别搜索用户
-        query := DB.Unscoped().Omit("password").Where("`id` = ?", keywordInt)
-        if group != "" {
-            query = query.Where("`group` = ?", group)  // 使用反引号包围group
-        }
-        err = query.Find(&users).Error
-        if err != nil || len(users) > 0 {
-            return users, err
-        }
-    }
-
-    err = nil
-
-    query := DB.Unscoped().Omit("password")
-    likeCondition := "`username` LIKE ? OR `email` LIKE ? OR `display_name` LIKE ?"
-    if group != "" {
-        query = query.Where("("+likeCondition+") AND `group` = ?", "%"+keyword+"%", "%"+keyword+"%", "%"+keyword+"%", group)
-    } else {
-        query = query.Where(likeCondition, "%"+keyword+"%", "%"+keyword+"%", "%"+keyword+"%")
-    }
-    err = query.Find(&users).Error
-
-    return users, err
+	var users []*User
+	var err error
+
+	// 尝试将关键字转换为整数ID
+	keywordInt, err := strconv.Atoi(keyword)
+	if err == nil {
+		// 如果转换成功,按照ID和可选的组别搜索用户
+		query := DB.Unscoped().Omit("password").Where("`id` = ?", keywordInt)
+		if group != "" {
+			query = query.Where("`group` = ?", group) // 使用反引号包围group
+		}
+		err = query.Find(&users).Error
+		if err != nil || len(users) > 0 {
+			return users, err
+		}
+	}
+
+	err = nil
+
+	query := DB.Unscoped().Omit("password")
+	likeCondition := "`username` LIKE ? OR `email` LIKE ? OR `display_name` LIKE ?"
+	if group != "" {
+		query = query.Where("("+likeCondition+") AND `group` = ?", "%"+keyword+"%", "%"+keyword+"%", "%"+keyword+"%", group)
+	} else {
+		query = query.Where(likeCondition, "%"+keyword+"%", "%"+keyword+"%", "%"+keyword+"%")
+	}
+	err = query.Find(&users).Error
+
+	return users, err
 }
 
 func GetUserById(id int, selectAll bool) (*User, error) {
@@ -244,7 +244,7 @@ func (user *User) Update(updatePassword bool) error {
 	return err
 }
 
-func (user *User) UpdateAll(updatePassword bool) error {
+func (user *User) Edit(updatePassword bool) error {
 	var err error
 	if updatePassword {
 		user.Password, err = common.Password2Hash(user.Password)
@@ -254,7 +254,13 @@ func (user *User) UpdateAll(updatePassword bool) error {
 	}
 	newUser := *user
 	DB.First(&user, user.Id)
-	err = DB.Model(user).Select("*").Updates(newUser).Error
+	err = DB.Model(user).Updates(map[string]interface{}{
+		"username":     newUser.Username,
+		"password":     newUser.Password,
+		"display_name": newUser.DisplayName,
+		"group":        newUser.Group,
+		"quota":        newUser.Quota,
+	}).Error
 	if err == nil {
 		if common.RedisEnabled {
 			_ = common.RedisSet(fmt.Sprintf("user_group:%d", user.Id), user.Group, time.Duration(UserId2GroupCacheSeconds)*time.Second)