refact:openteam
This commit is contained in:
120
team/dao/token.go
Normal file
120
team/dao/token.go
Normal file
@@ -0,0 +1,120 @@
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user