From 194b16c6ec11fd0ce2b51bffe8741fee7f4ffc8a Mon Sep 17 00:00:00 2001 From: dark Date: Sat, 14 Feb 2026 09:08:12 +0800 Subject: [PATCH] feat: add FindOneByPhone and FindOneByUsername --- backend/model/user_model.go | 52 +++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/backend/model/user_model.go b/backend/model/user_model.go index 78ce3e4..006e55b 100644 --- a/backend/model/user_model.go +++ b/backend/model/user_model.go @@ -32,6 +32,19 @@ func FindOne(ctx context.Context, db *gorm.DB, id int64) (*User, error) { return &user, nil } +// FindOneByCasdoorId 根据 Casdoor ID 查询用户 +func FindOneByCasdoorId(ctx context.Context, db *gorm.DB, casdoorId string) (*User, error) { + var user User + result := db.WithContext(ctx).Where("casdoor_id = ?", casdoorId).First(&user) + if result.Error != nil { + if errors.Is(result.Error, gorm.ErrRecordNotFound) { + return nil, ErrNotFound + } + return nil, result.Error + } + return &user, nil +} + // FindOneByEmail 根据邮箱查询用户 func FindOneByEmail(ctx context.Context, db *gorm.DB, email string) (*User, error) { var user User @@ -45,6 +58,32 @@ func FindOneByEmail(ctx context.Context, db *gorm.DB, email string) (*User, erro return &user, nil } +// FindOneByPhone 根据手机号查询用户 +func FindOneByPhone(ctx context.Context, db *gorm.DB, phone string) (*User, error) { + var user User + result := db.WithContext(ctx).Where("phone = ?", phone).First(&user) + if result.Error != nil { + if errors.Is(result.Error, gorm.ErrRecordNotFound) { + return nil, ErrNotFound + } + return nil, result.Error + } + return &user, nil +} + +// FindOneByUsername 根据用户名查询用户 +func FindOneByUsername(ctx context.Context, db *gorm.DB, username string) (*User, error) { + var user User + result := db.WithContext(ctx).Where("username = ?", username).First(&user) + if result.Error != nil { + if errors.Is(result.Error, gorm.ErrRecordNotFound) { + return nil, ErrNotFound + } + return nil, result.Error + } + return &user, nil +} + // Update 更新用户 func Update(ctx context.Context, db *gorm.DB, user *User) error { result := db.WithContext(ctx).Save(user) @@ -57,6 +96,19 @@ func Delete(ctx context.Context, db *gorm.DB, id int64) error { return result.Error } +// FindOneByRole 根据角色查询第一个用户 +func FindOneByRole(ctx context.Context, db *gorm.DB, role string) (*User, error) { + var user User + result := db.WithContext(ctx).Where("role = ?", role).First(&user) + if result.Error != nil { + if errors.Is(result.Error, gorm.ErrRecordNotFound) { + return nil, ErrNotFound + } + return nil, result.Error + } + return &user, nil +} + // FindList 查询用户列表 func FindList(ctx context.Context, db *gorm.DB, page, pageSize int64, keyword string, status int64) ([]User, int64, error) { var users []User