package dao import ( "errors" "opencatd-open/team/model" "time" "gorm.io/gorm" ) // 确保 UserDAO 实现了 UserRepository 接口 var _ UserRepository = (*UserDAO)(nil) // UserRepository 定义用户数据访问操作的接口 type UserRepository interface { Create(user *model.User) error GetByID(id int64) (*model.User, error) GetByUsername(username string) (*model.User, error) Update(user *model.User) error Delete(id int64) error List(offset, limit int) ([]model.User, error) Enable(id int64) error Disable(id int64) error BatchEnable(ids []int64) error BatchDisable(ids []int64) error BatchDelete(ids []int64) error } type UserDAO struct { db *gorm.DB } func NewUserDAO(db *gorm.DB) *UserDAO { return &UserDAO{db: db} } // CreateUser 创建用户 func (dao *UserDAO) Create(user *model.User) error { if user == nil { return errors.New("user is nil") } return dao.db.Create(user).Error } // GetUserByID 根据ID获取用户 func (dao *UserDAO) GetByID(id int64) (*model.User, error) { var user model.User err := dao.db.First(&user, id).Error if err != nil { return nil, err } return &user, nil } // GetUserByUsername 根据用户名获取用户 func (dao *UserDAO) GetByUsername(username string) (*model.User, error) { var user model.User err := dao.db.Where("user_name = ?", username).First(&user).Error if err != nil { return nil, err } return &user, nil } // UpdateUser 更新用户信息 func (dao *UserDAO) Update(user *model.User) error { if user == nil { return errors.New("user is nil") } user.UpdatedAt = time.Now() return dao.db.Save(user).Error } // DeleteUser 删除用户 func (dao *UserDAO) Delete(id int64) error { return dao.db.Delete(&model.User{}, id).Error // return dao.db.Model(&model.User{}).Where("id = ?", id).Update("status", 2).Error } // ListUsers 获取用户列表 func (dao *UserDAO) List(offset, limit int) ([]model.User, error) { var users []model.User err := dao.db.Offset(offset).Limit(limit).Find(&users).Error if err != nil { return nil, err } return users, nil } // EnableUser 启用User func (dao *UserDAO) Enable(id int64) error { return dao.db.Model(&model.User{}).Where("id = ?", id).Update("status", 0).Error } // DisableUser 禁用User func (dao *UserDAO) Disable(id int64) error { return dao.db.Model(&model.User{}).Where("id = ?", id).Update("status", 1).Error } // BatchEnableUsers 批量启用User func (dao *UserDAO) BatchEnable(ids []int64) error { if len(ids) == 0 { return errors.New("ids is empty") } return dao.db.Model(&model.User{}).Where("id IN ?", ids).Update("status", 0).Error } // BatchDisableUsers 批量禁用User func (dao *UserDAO) BatchDisable(ids []int64) error { if len(ids) == 0 { return errors.New("ids is empty") } return dao.db.Model(&model.User{}).Where("id IN ?", ids).Update("status", 1).Error } // BatchDeleteUser 批量删除用户 func (dao *UserDAO) BatchDelete(ids []int64) error { if len(ids) == 0 { return errors.New("ids is empty") } return dao.db.Where("id IN ?", ids).Delete(&model.User{}).Error // return dao.db.Model(&model.User{}).Where("id IN ?", ids).Update("status", 2).Error }