You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

73 lines
1.8 KiB
Go

package dao
import (
"context"
"github.com/gogf/gf/os/glog"
do "awesomeProject/internal/model/do"
"github.com/gogf/gf/v2/database/gdb"
"github.com/gogf/gf/v2/frame/g"
"awesomeProject/internal/model/entity"
)
// UserDAO 定义了用户数据访问对象。
type UserDAO struct {
DB gdb.DB
}
// NewUserDAO 创建一个新的用户数据访问对象。
func NewUserDAO() *UserDAO {
return &UserDAO{DB: g.DB()}
}
// GetUserByID 根据用户ID从数据库中查询用户信息。
func (d *UserDAO) GetUserByID(ctx context.Context, id int64) (*do.UserDO, error) {
user := &do.UserDO{}
err := d.DB.Model("user").Where("id", id).Scan(user)
if err != nil {
return nil, err
}
return user, nil
}
func newUserByUserDO(user do.UserDO) entity.User {
var userEntity entity.User
gconv.Struct(user, &userEntity)
return userEntity
}
// GetUserByID 根据用户ID从数据库中查询用户信息。
func (d *UserDAO) GetUserByUsernameAndPassword(ctx context.Context, uname string,password string) (entity.User, error) {
user := &do.UserDO{}
err := d.DB.Model("user").Where("uname=? AND password=?", uname,password).Scan(user)
if err != nil {
glog.Error(ctx, "user:" + uname + " not found!")
return nil, err
}
return newUserByUserDO(user), nil
}
// CreateUser 向数据库中插入新用户。
func (d *UserDAO) CreateUser(ctx context.Context, user *do.UserDO) error {
_, err := d.DB.Model("user").Data(user).Insert()
return err
}
// UpdateUser 更新数据库中的用户信息。
func (d *UserDAO) UpdateUser(ctx context.Context, user *do.UserDO) error {
_, err := d.DB.Model("user").Data(user).Where("id", user.UID).Update()
return err
}
// DeleteUser 删除数据库中的用户。
func (d *UserDAO) DeleteUser(ctx context.Context, id int64) error {
_, err := d.DB.Model("user").Where("id", id).Delete()
return err
}