fix: fix SearchUsers not working if using PostgreSQL

Signed-off-by: wozulong <>
This commit is contained in:
wozulong 2024-11-05 14:28:39 +08:00
parent c6d5245c5c
commit f113e1874e

View File

@ -91,13 +91,18 @@ func SearchUsers(keyword string, group string) ([]*User, error) {
var users []*User var users []*User
var err error var err error
groupCol := "`group`"
if common.UsingPostgreSQL {
groupCol = `"group"`
}
// 尝试将关键字转换为整数ID // 尝试将关键字转换为整数ID
keywordInt, err := strconv.Atoi(keyword) keywordInt, err := strconv.Atoi(keyword)
if err == nil { if err == nil {
// 如果转换成功按照ID和可选的组别搜索用户 // 如果转换成功按照ID和可选的组别搜索用户
query := DB.Unscoped().Omit("password").Where("`id` = ?", keywordInt) query := DB.Unscoped().Omit("password").Where("id = ?", keywordInt)
if group != "" { if group != "" {
query = query.Where("`group` = ?", group) // 使用反引号包围group query = query.Where(groupCol+" = ?", group) // 使用反引号包围group
} }
err = query.Find(&users).Error err = query.Find(&users).Error
if err != nil || len(users) > 0 { if err != nil || len(users) > 0 {
@ -108,9 +113,9 @@ func SearchUsers(keyword string, group string) ([]*User, error) {
err = nil err = nil
query := DB.Unscoped().Omit("password") query := DB.Unscoped().Omit("password")
likeCondition := "`username` LIKE ? OR `email` LIKE ? OR `display_name` LIKE ?" likeCondition := "username LIKE ? OR email LIKE ? OR display_name LIKE ?"
if group != "" { if group != "" {
query = query.Where("("+likeCondition+") AND `group` = ?", "%"+keyword+"%", "%"+keyword+"%", "%"+keyword+"%", group) query = query.Where("("+likeCondition+") AND "+groupCol+" = ?", "%"+keyword+"%", "%"+keyword+"%", "%"+keyword+"%", group)
} else { } else {
query = query.Where(likeCondition, "%"+keyword+"%", "%"+keyword+"%", "%"+keyword+"%") query = query.Where(likeCondition, "%"+keyword+"%", "%"+keyword+"%", "%"+keyword+"%")
} }