diff --git a/controller/user.go b/controller/user.go index fe596a0..a6798eb 100644 --- a/controller/user.go +++ b/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(), diff --git a/model/user.go b/model/user.go index f943c17..3e7169a 100644 --- a/model/user.go +++ b/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 + 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 - } - } + // 尝试将关键字转换为整数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 + 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 + 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 + 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)