v0.1
This commit is contained in:
69
internal/domains/api/services/api_call_aggregate_service.go
Normal file
69
internal/domains/api/services/api_call_aggregate_service.go
Normal file
@@ -0,0 +1,69 @@
|
||||
package services
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"tyapi-server/internal/domains/api/entities"
|
||||
repo "tyapi-server/internal/domains/api/repositories"
|
||||
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
// ApiCallAggregateService 聚合服务,管理ApiCall生命周期
|
||||
type ApiCallAggregateService interface {
|
||||
CreateApiCall(accessId, requestParams, clientIp string) (*entities.ApiCall, error)
|
||||
LoadApiCall(ctx context.Context, id string) (*entities.ApiCall, error)
|
||||
SaveApiCall(ctx context.Context, call *entities.ApiCall) error
|
||||
}
|
||||
|
||||
type ApiCallAggregateServiceImpl struct {
|
||||
apiUserRepo repo.ApiUserRepository
|
||||
apiCallRepo repo.ApiCallRepository
|
||||
}
|
||||
|
||||
func NewApiCallAggregateService(apiUserRepo repo.ApiUserRepository, apiCallRepo repo.ApiCallRepository) ApiCallAggregateService {
|
||||
return &ApiCallAggregateServiceImpl{
|
||||
apiUserRepo: apiUserRepo,
|
||||
apiCallRepo: apiCallRepo,
|
||||
}
|
||||
}
|
||||
|
||||
// NewApiCall 创建ApiCall
|
||||
func (s *ApiCallAggregateServiceImpl) CreateApiCall(accessId, requestParams, clientIp string) (*entities.ApiCall, error) {
|
||||
return entities.NewApiCall(accessId, requestParams, clientIp)
|
||||
}
|
||||
|
||||
// GetApiCallById 查询ApiCall
|
||||
func (s *ApiCallAggregateServiceImpl) LoadApiCall(ctx context.Context, id string) (*entities.ApiCall, error) {
|
||||
return s.apiCallRepo.FindById(ctx, id)
|
||||
}
|
||||
|
||||
// SaveApiCall 保存ApiCall
|
||||
func (s *ApiCallAggregateServiceImpl) SaveApiCall(ctx context.Context, call *entities.ApiCall) error {
|
||||
// 先尝试查找现有记录
|
||||
existingCall, err := s.apiCallRepo.FindById(ctx, call.ID)
|
||||
if err != nil {
|
||||
if err == gorm.ErrRecordNotFound {
|
||||
// 记录不存在,执行创建
|
||||
err = s.apiCallRepo.Create(ctx, call)
|
||||
if err != nil {
|
||||
return fmt.Errorf("创建ApiCall失败: %w", err)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
// 其他错误
|
||||
return fmt.Errorf("查询ApiCall失败: %w", err)
|
||||
}
|
||||
|
||||
// 记录存在,执行更新
|
||||
if existingCall != nil {
|
||||
err = s.apiCallRepo.Update(ctx, call)
|
||||
if err != nil {
|
||||
return fmt.Errorf("更新ApiCall失败: %w", err)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// 理论上不会到达这里,但为了安全起见
|
||||
return s.apiCallRepo.Create(ctx, call)
|
||||
}
|
||||
Reference in New Issue
Block a user