f
This commit is contained in:
@@ -21,6 +21,8 @@ import (
|
||||
product_entities "hyapi-server/internal/domains/product/entities"
|
||||
product_services "hyapi-server/internal/domains/product/services"
|
||||
user_repositories "hyapi-server/internal/domains/user/repositories"
|
||||
securityEntities "hyapi-server/internal/domains/security/entities"
|
||||
securityServices "hyapi-server/internal/domains/security/services"
|
||||
task_entities "hyapi-server/internal/infrastructure/task/entities"
|
||||
"hyapi-server/internal/infrastructure/task/interfaces"
|
||||
"hyapi-server/internal/shared/crypto"
|
||||
@@ -83,6 +85,7 @@ type ApiApplicationServiceImpl struct {
|
||||
contractInfoService user_repositories.ContractInfoRepository
|
||||
productManagementService *product_services.ProductManagementService
|
||||
userRepo user_repositories.UserRepository
|
||||
blacklistService *securityServices.BlacklistService
|
||||
txManager *database.TransactionManager
|
||||
config *config.Config
|
||||
logger *zap.Logger
|
||||
@@ -112,6 +115,7 @@ func NewApiApplicationService(
|
||||
subscriptionService *product_services.ProductSubscriptionService,
|
||||
exportManager *export.ExportManager,
|
||||
balanceAlertService finance_services.BalanceAlertService,
|
||||
blacklistService *securityServices.BlacklistService,
|
||||
) ApiApplicationService {
|
||||
service := &ApiApplicationServiceImpl{
|
||||
apiCallService: apiCallService,
|
||||
@@ -121,6 +125,7 @@ func NewApiApplicationService(
|
||||
apiCallRepository: apiCallRepository,
|
||||
productManagementService: productManagementService,
|
||||
userRepo: userRepo,
|
||||
blacklistService: blacklistService,
|
||||
txManager: txManager,
|
||||
config: config,
|
||||
logger: logger,
|
||||
@@ -218,6 +223,24 @@ func (s *ApiApplicationServiceImpl) validateApiCall(ctx context.Context, cmd *co
|
||||
return nil, ErrFrozenAccount
|
||||
}
|
||||
|
||||
if platformUser, err := s.userRepo.GetByID(ctx, apiUser.UserId); err == nil {
|
||||
if platformUser.IsOnBlacklist() {
|
||||
s.logger.Error("账号已列入黑名单", zap.String("userId", apiUser.UserId))
|
||||
if s.blacklistService != nil {
|
||||
s.blacklistService.RecordHit(&securityEntities.BlacklistHitRecord{
|
||||
HitType: securityEntities.HitTypeUserAPI,
|
||||
UserID: apiUser.UserId,
|
||||
Phone: platformUser.Phone,
|
||||
IP: cmd.ClientIP,
|
||||
Path: cmd.ApiName,
|
||||
Method: "POST",
|
||||
Reason: platformUser.BlacklistReason,
|
||||
})
|
||||
}
|
||||
return nil, ErrBlacklistedAccount
|
||||
}
|
||||
}
|
||||
|
||||
// 验证产品是否启用
|
||||
if !product.IsEnabled {
|
||||
s.logger.Error("产品未启用", zap.String("product_code", product.Code))
|
||||
@@ -440,6 +463,9 @@ func (s *ApiApplicationServiceImpl) asyncRecordFailure(ctx context.Context, apiC
|
||||
errorMsg = err.Error()
|
||||
case errors.Is(err, ErrFrozenAccount):
|
||||
errorType = entities.ApiCallErrorFrozenAccount
|
||||
case errors.Is(err, ErrBlacklistedAccount):
|
||||
errorType = entities.ApiCallErrorFrozenAccount
|
||||
errorMsg = err.Error()
|
||||
case errors.Is(err, ErrInvalidIP):
|
||||
errorType = entities.ApiCallErrorInvalidIP
|
||||
case errors.Is(err, ErrArrears):
|
||||
|
||||
Reference in New Issue
Block a user