added init payment method repository
This commit is contained in:
parent
e30209c739
commit
a1f734a87d
@ -72,8 +72,9 @@ func Run(ctx context.Context, config initialize.Config, logger *zap.Logger) (app
|
||||
}
|
||||
|
||||
controllers, err := initialize.NewControllers(initialize.ControllersDeps{
|
||||
Logger: logger,
|
||||
Services: *services,
|
||||
Logger: logger,
|
||||
Services: *services,
|
||||
Repositories: *repositories,
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
|
@ -5,7 +5,9 @@ import (
|
||||
"fmt"
|
||||
"gitea.pena/PenaSide/treasurer/internal/models/yandex"
|
||||
"gitea.pena/PenaSide/treasurer/internal/payment_provider"
|
||||
"gitea.pena/PenaSide/treasurer/internal/repository"
|
||||
"gitea.pena/PenaSide/treasurer/internal/utils"
|
||||
"google.golang.org/protobuf/types/known/emptypb"
|
||||
"strconv"
|
||||
"strings"
|
||||
"sync"
|
||||
@ -17,15 +19,18 @@ import (
|
||||
)
|
||||
|
||||
type PaymentControllerDeps struct {
|
||||
Logger *zap.Logger
|
||||
PaymentProviders []payment_provider.PaymentProvider
|
||||
Logger *zap.Logger
|
||||
PaymentProviders []payment_provider.PaymentProvider
|
||||
PaymentMethodRepository *repository.PaymentMethodRepository
|
||||
}
|
||||
|
||||
type PaymentController struct {
|
||||
logger *zap.Logger
|
||||
paymentProviders []payment_provider.PaymentProvider
|
||||
providerMap map[models.PaymentType][]payment_provider.PaymentProvider
|
||||
mu sync.RWMutex
|
||||
logger *zap.Logger
|
||||
paymentProviders []payment_provider.PaymentProvider
|
||||
paymentMethodRepository *repository.PaymentMethodRepository
|
||||
providerMap map[models.PaymentType][]payment_provider.PaymentProvider
|
||||
mu sync.RWMutex
|
||||
treasurer.UnimplementedTreasurerServiceServer
|
||||
}
|
||||
|
||||
func NewPaymentController(deps PaymentControllerDeps) (*PaymentController, errors.Error) {
|
||||
@ -38,9 +43,10 @@ func NewPaymentController(deps PaymentControllerDeps) (*PaymentController, error
|
||||
}
|
||||
|
||||
controller := &PaymentController{
|
||||
logger: deps.Logger,
|
||||
paymentProviders: deps.PaymentProviders,
|
||||
providerMap: make(map[models.PaymentType][]payment_provider.PaymentProvider),
|
||||
logger: deps.Logger,
|
||||
paymentProviders: deps.PaymentProviders,
|
||||
providerMap: make(map[models.PaymentType][]payment_provider.PaymentProvider),
|
||||
paymentMethodRepository: deps.PaymentMethodRepository,
|
||||
}
|
||||
|
||||
for _, provider := range deps.PaymentProviders {
|
||||
@ -126,3 +132,17 @@ func (r *PaymentController) GetPaymentLinkSberPay(ctx context.Context, in *treas
|
||||
func (r *PaymentController) GetPaymentLinkSberbankB2B(ctx context.Context, in *treasurer.GetPaymentLinkRequest) (*treasurer.GetPaymentLinkResponse, error) {
|
||||
return r.createPayment(ctx, models.PaymentTypeSberB2B, in)
|
||||
}
|
||||
|
||||
func (r *PaymentController) DeleteSavedPaymentMethods(ctx context.Context, in *treasurer.DeleteSavedPaymentMethodsRequest) (*emptypb.Empty, error) {
|
||||
if in.UserID == "" {
|
||||
r.logger.Error("empty user id provided")
|
||||
return nil, errors.GRPC("user id is required", errors.NewWithMessage("user id is required", errors.ErrInvalidArgs))
|
||||
}
|
||||
|
||||
err := r.paymentMethodRepository.DeleteByUserID(ctx, in.UserID)
|
||||
if err != nil {
|
||||
r.logger.Error("failed to delete payment methods", zap.Error(err), zap.String("userId", in.UserID))
|
||||
return nil, errors.GRPC("failed to delete payment methods", errors.NewWithMessage("failed to delete payment methods", errors.ErrInternalError))
|
||||
}
|
||||
return &emptypb.Empty{}, nil
|
||||
}
|
||||
|
@ -9,8 +9,9 @@ import (
|
||||
)
|
||||
|
||||
type ControllersDeps struct {
|
||||
Logger *zap.Logger
|
||||
Services Services
|
||||
Logger *zap.Logger
|
||||
Services Services
|
||||
Repositories Repositories
|
||||
}
|
||||
|
||||
type Controllers struct {
|
||||
@ -30,8 +31,9 @@ func NewControllers(deps ControllersDeps) (*Controllers, errors.Error) {
|
||||
}
|
||||
|
||||
paymentControllerGRPC, err := grpc.NewPaymentController(grpc.PaymentControllerDeps{
|
||||
Logger: deps.Logger,
|
||||
PaymentProviders: deps.Services.PaymentProviders,
|
||||
Logger: deps.Logger,
|
||||
PaymentProviders: deps.Services.PaymentProviders,
|
||||
PaymentMethodRepository: deps.Repositories.PaymentMethod,
|
||||
})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
@ -13,7 +13,8 @@ type RepositoriesDeps struct {
|
||||
}
|
||||
|
||||
type Repositories struct {
|
||||
Payment *repository.PaymentRepository
|
||||
Payment *repository.PaymentRepository
|
||||
PaymentMethod *repository.PaymentMethodRepository
|
||||
}
|
||||
|
||||
func NewRepositories(deps RepositoriesDeps) (*Repositories, errors.Error) {
|
||||
@ -25,5 +26,10 @@ func NewRepositories(deps RepositoriesDeps) (*Repositories, errors.Error) {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &Repositories{Payment: paymentRepository}, nil
|
||||
paymentMethod := repository.NewPaymentMethodRepository(repository.PaymentMethodRepositoryDeps{
|
||||
Logger: deps.Logger,
|
||||
Collection: deps.Database.Collection("payment_methods"),
|
||||
})
|
||||
|
||||
return &Repositories{Payment: paymentRepository, PaymentMethod: paymentMethod}, nil
|
||||
}
|
||||
|
@ -99,8 +99,9 @@ func NewServices(deps ServicesDeps) (*Services, errors.Error) {
|
||||
WebhooksURL: deps.Config.YooMoneyWebhooksURL,
|
||||
PaymentsURL: deps.Config.YooMoneyPaymentsURL,
|
||||
},
|
||||
Repository: deps.Repositories.Payment,
|
||||
CallbackService: callbackService,
|
||||
Repository: deps.Repositories.Payment,
|
||||
CallbackService: callbackService,
|
||||
PaymentMethodRepository: deps.Repositories.PaymentMethod,
|
||||
})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
@ -1,33 +0,0 @@
|
||||
syntax = "proto3";
|
||||
|
||||
package treasurer;
|
||||
|
||||
option go_package = "./treasurer";
|
||||
|
||||
message MainPaymentSettings {
|
||||
string Currency = 1;
|
||||
int64 Amount = 2;
|
||||
repeated string CallbackHostGRPC = 3;
|
||||
string ReturnURL = 4;
|
||||
string UserID = 5;
|
||||
string ClientIP = 6;
|
||||
Customer Customer = 7;
|
||||
repeated Item Items = 8;
|
||||
bool Auto = 9;
|
||||
bool Recurrent = 10;
|
||||
}
|
||||
|
||||
message Customer {
|
||||
string FullName = 1;
|
||||
string INN = 2;
|
||||
string Email = 3;
|
||||
string Phone = 4;
|
||||
}
|
||||
|
||||
message Item {
|
||||
string Description = 1;
|
||||
string Measure = 2;
|
||||
string Quantity = 3;
|
||||
string Money = 4;
|
||||
string Currency = 5;
|
||||
}
|
@ -2,7 +2,6 @@ syntax = "proto3";
|
||||
|
||||
package treasurer;
|
||||
|
||||
import "google/protobuf/empty.proto";
|
||||
import "google/protobuf/empty.proto";
|
||||
|
||||
option go_package = "./treasurer";
|
||||
@ -38,3 +37,32 @@ message GetPaymentLinkResponse {
|
||||
message DeleteSavedPaymentMethodsRequest {
|
||||
string UserID = 1;
|
||||
}
|
||||
|
||||
|
||||
message MainPaymentSettings {
|
||||
string Currency = 1;
|
||||
int64 Amount = 2;
|
||||
repeated string CallbackHostGRPC = 3;
|
||||
string ReturnURL = 4;
|
||||
string UserID = 5;
|
||||
string ClientIP = 6;
|
||||
Customer Customer = 7;
|
||||
repeated Item Items = 8;
|
||||
bool Auto = 9;
|
||||
bool Recurrent = 10;
|
||||
}
|
||||
|
||||
message Customer {
|
||||
string FullName = 1;
|
||||
string INN = 2;
|
||||
string Email = 3;
|
||||
string Phone = 4;
|
||||
}
|
||||
|
||||
message Item {
|
||||
string Description = 1;
|
||||
string Measure = 2;
|
||||
string Quantity = 3;
|
||||
string Money = 4;
|
||||
string Currency = 5;
|
||||
}
|
Loading…
Reference in New Issue
Block a user