151 lines
3.7 KiB
Go
151 lines
3.7 KiB
Go
package service
|
|
|
|
import (
|
|
"errors"
|
|
"opencatd-open/internal/dao"
|
|
"opencatd-open/internal/model"
|
|
"time"
|
|
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
var _ ApiKeyService = (*ApiKeyServiceImpl)(nil)
|
|
|
|
type ApiKeyService interface {
|
|
Create(apiKey *model.ApiKey) error
|
|
GetByID(id int64) (*model.ApiKey, error)
|
|
GetByName(name string) (*model.ApiKey, error)
|
|
GetByApiKey(apiKeyValue string) (*model.ApiKey, error)
|
|
Update(apiKey *model.ApiKey) error
|
|
Delete(id int64) error
|
|
List(limit, offset int, status string) ([]*model.ApiKey, error)
|
|
ListWithFilters(limit, offset int, filters map[string]interface{}) ([]*model.ApiKey, int64, error)
|
|
BatchEnable(ids []int64) error
|
|
BatchDisable(ids []int64) error
|
|
BatchDelete(ids []int64) error
|
|
Count() (int64, error)
|
|
}
|
|
|
|
type ApiKeyServiceImpl struct {
|
|
db *gorm.DB
|
|
apiKeyRepo dao.ApiKeyRepository
|
|
}
|
|
|
|
func NewApiKeyService(db *gorm.DB, apiKeyDao dao.ApiKeyRepository) ApiKeyService {
|
|
return &ApiKeyServiceImpl{apiKeyRepo: apiKeyDao, db: db}
|
|
}
|
|
|
|
func (s *ApiKeyServiceImpl) Create(apiKey *model.ApiKey) error {
|
|
if apiKey == nil {
|
|
return errors.New("apiKey不能为空")
|
|
}
|
|
if apiKey.Name == nil {
|
|
return errors.New("apiKey名称不能为空")
|
|
}
|
|
if apiKey.ApiKey == nil {
|
|
return errors.New("apiKey值不能为空")
|
|
}
|
|
apiKey.CreatedAt = time.Now().Unix()
|
|
apiKey.UpdatedAt = time.Now().Unix()
|
|
|
|
return s.apiKeyRepo.Create(apiKey)
|
|
}
|
|
|
|
func (s *ApiKeyServiceImpl) GetByID(id int64) (*model.ApiKey, error) {
|
|
if id <= 0 {
|
|
return nil, errors.New("id 必须大于 0")
|
|
}
|
|
return s.apiKeyRepo.GetByID(id)
|
|
}
|
|
|
|
func (s *ApiKeyServiceImpl) GetByName(name string) (*model.ApiKey, error) {
|
|
if name == "" {
|
|
return nil, errors.New("name 不能为空")
|
|
}
|
|
return s.apiKeyRepo.GetByName(name)
|
|
}
|
|
|
|
func (s *ApiKeyServiceImpl) GetByApiKey(apiKeyValue string) (*model.ApiKey, error) {
|
|
if apiKeyValue == "" {
|
|
return nil, errors.New("apiKeyValue 不能为空")
|
|
}
|
|
return s.apiKeyRepo.GetByApiKey(apiKeyValue)
|
|
}
|
|
|
|
func (s *ApiKeyServiceImpl) Update(apiKey *model.ApiKey) error {
|
|
if apiKey == nil {
|
|
return errors.New("apiKey不能为空")
|
|
}
|
|
if apiKey.ID <= 0 {
|
|
return errors.New("apiKey ID 必须大于 0")
|
|
}
|
|
return s.apiKeyRepo.Update(apiKey)
|
|
}
|
|
|
|
func (s *ApiKeyServiceImpl) Delete(id int64) error {
|
|
if id <= 0 {
|
|
return errors.New("id 必须大于 0")
|
|
}
|
|
return s.apiKeyRepo.BatchDelete([]int64{id})
|
|
}
|
|
|
|
func (s *ApiKeyServiceImpl) List(offset, limit int, status string) ([]*model.ApiKey, error) {
|
|
if offset < 0 {
|
|
offset = 0
|
|
}
|
|
if limit <= 0 {
|
|
limit = 20 // 设置默认值
|
|
}
|
|
return s.apiKeyRepo.List(offset, limit, status)
|
|
}
|
|
|
|
func (s *ApiKeyServiceImpl) ListWithFilters(offset, limit int, filters map[string]interface{}) ([]*model.ApiKey, int64, error) {
|
|
if offset < 0 {
|
|
offset = 0
|
|
}
|
|
if limit <= 0 {
|
|
limit = 20 // 设置默认值
|
|
}
|
|
|
|
return s.apiKeyRepo.ListWithFilters(offset, limit, filters)
|
|
}
|
|
|
|
func (s *ApiKeyServiceImpl) Enable(id int64) error {
|
|
if id <= 0 {
|
|
return errors.New("id 必须大于 0")
|
|
}
|
|
return s.apiKeyRepo.BatchEnable([]int64{id})
|
|
}
|
|
|
|
func (s *ApiKeyServiceImpl) Disable(id int64) error {
|
|
if id <= 0 {
|
|
return errors.New("id 必须大于 0")
|
|
}
|
|
return s.apiKeyRepo.BatchDisable([]int64{id})
|
|
}
|
|
|
|
func (s *ApiKeyServiceImpl) BatchEnable(ids []int64) error {
|
|
if len(ids) == 0 {
|
|
return errors.New("ids 不能为空")
|
|
}
|
|
return s.apiKeyRepo.BatchEnable(ids)
|
|
}
|
|
|
|
func (s *ApiKeyServiceImpl) BatchDisable(ids []int64) error {
|
|
if len(ids) == 0 {
|
|
return errors.New("ids 不能为空")
|
|
}
|
|
return s.apiKeyRepo.BatchDisable(ids)
|
|
}
|
|
|
|
func (s *ApiKeyServiceImpl) BatchDelete(ids []int64) error {
|
|
if len(ids) == 0 {
|
|
return errors.New("ids 不能为空")
|
|
}
|
|
return s.apiKeyRepo.BatchDelete(ids)
|
|
}
|
|
|
|
func (s *ApiKeyServiceImpl) Count() (int64, error) {
|
|
return s.apiKeyRepo.Count()
|
|
}
|