package dao import ( "errors" "opencatd-open/team/model" "gorm.io/gorm" ) // 确保 TokenDAO 实现了 TokenDAOInterface 接口 var _ TokenDAOInterface = (*TokenDAO)(nil) type TokenDAOInterface interface { Create(token *model.Token) error GetByID(id int) (*model.Token, error) GetByKey(key string) (*model.Token, error) GetByUserID(userID int) ([]model.Token, error) Update(token *model.Token) error Delete(id int) error List(offset, limit int) ([]model.Token, error) Disable(id int) error Enable(id int) error BatchDisable(ids []int) error BatchEnable(ids []int) error BatchDelete(ids []int) error } type TokenDAO struct { db *gorm.DB } func NewTokenDAO(db *gorm.DB) *TokenDAO { return &TokenDAO{db: db} } // CreateToken 创建 Token func (dao *TokenDAO) Create(token *model.Token) error { if token == nil { return errors.New("token is nil") } return dao.db.Create(token).Error } // GetTokenByID 根据 ID 获取 Token func (dao *TokenDAO) GetByID(id int) (*model.Token, error) { var token model.Token err := dao.db.First(&token, id).Error if err != nil { return nil, err } return &token, nil } // GetTokenByKey 根据 Key 获取 Token func (dao *TokenDAO) GetByKey(key string) (*model.Token, error) { var token model.Token err := dao.db.Where("key = ?", key).First(&token).Error if err != nil { return nil, err } return &token, nil } // GetTokensByUserID 根据 UserID 获取 Token 列表 func (dao *TokenDAO) GetByUserID(userID int) ([]model.Token, error) { var tokens []model.Token err := dao.db.Where("user_id = ?", userID).Find(&tokens).Error if err != nil { return nil, err } return tokens, nil } // UpdateToken 更新 Token 信息 func (dao *TokenDAO) Update(token *model.Token) error { if token == nil { return errors.New("token is nil") } return dao.db.Save(token).Error } // DeleteToken 删除 Token func (dao *TokenDAO) Delete(id int) error { return dao.db.Delete(&model.Token{}, id).Error } // ListTokens 获取 Token 列表 func (dao *TokenDAO) List(offset, limit int) ([]model.Token, error) { var tokens []model.Token err := dao.db.Offset(offset).Limit(limit).Find(&tokens).Error if err != nil { return nil, err } return tokens, nil } // DisableToken 禁用 Token func (dao *TokenDAO) Disable(id int) error { return dao.db.Model(&model.Token{}).Where("id = ?", id).Update("status", false).Error } // EnableToken 启用 Token func (dao *TokenDAO) Enable(id int) error { return dao.db.Model(&model.Token{}).Where("id = ?", id).Update("status", true).Error } // BatchDisableTokens 批量禁用 Token func (dao *TokenDAO) BatchDisable(ids []int) error { return dao.db.Model(&model.Token{}).Where("id IN ?", ids).Update("status", false).Error } // BatchEnableTokens 批量启用 Token func (dao *TokenDAO) BatchEnable(ids []int) error { return dao.db.Model(&model.Token{}).Where("id IN ?", ids).Update("status", true).Error } // BatchDeleteTokens 批量删除 Token func (dao *TokenDAO) BatchDelete(ids []int) error { return dao.db.Where("id IN ?", ids).Delete(&model.Token{}).Error }