dev #9
@ -72,8 +72,9 @@ func Run(ctx context.Context, config initialize.Config, logger *zap.Logger) (app
|
|||||||
}
|
}
|
||||||
|
|
||||||
controllers, err := initialize.NewControllers(initialize.ControllersDeps{
|
controllers, err := initialize.NewControllers(initialize.ControllersDeps{
|
||||||
Logger: logger,
|
Logger: logger,
|
||||||
Services: *services,
|
Services: *services,
|
||||||
|
Repositories: *repositories,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -5,7 +5,9 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"gitea.pena/PenaSide/treasurer/internal/models/yandex"
|
"gitea.pena/PenaSide/treasurer/internal/models/yandex"
|
||||||
"gitea.pena/PenaSide/treasurer/internal/payment_provider"
|
"gitea.pena/PenaSide/treasurer/internal/payment_provider"
|
||||||
|
"gitea.pena/PenaSide/treasurer/internal/repository"
|
||||||
"gitea.pena/PenaSide/treasurer/internal/utils"
|
"gitea.pena/PenaSide/treasurer/internal/utils"
|
||||||
|
"google.golang.org/protobuf/types/known/emptypb"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
@ -17,15 +19,18 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type PaymentControllerDeps struct {
|
type PaymentControllerDeps struct {
|
||||||
Logger *zap.Logger
|
Logger *zap.Logger
|
||||||
PaymentProviders []payment_provider.PaymentProvider
|
PaymentProviders []payment_provider.PaymentProvider
|
||||||
|
PaymentMethodRepository *repository.PaymentMethodRepository
|
||||||
}
|
}
|
||||||
|
|
||||||
type PaymentController struct {
|
type PaymentController struct {
|
||||||
logger *zap.Logger
|
logger *zap.Logger
|
||||||
paymentProviders []payment_provider.PaymentProvider
|
paymentProviders []payment_provider.PaymentProvider
|
||||||
providerMap map[models.PaymentType][]payment_provider.PaymentProvider
|
paymentMethodRepository *repository.PaymentMethodRepository
|
||||||
mu sync.RWMutex
|
providerMap map[models.PaymentType][]payment_provider.PaymentProvider
|
||||||
|
mu sync.RWMutex
|
||||||
|
treasurer.UnimplementedTreasurerServiceServer
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewPaymentController(deps PaymentControllerDeps) (*PaymentController, errors.Error) {
|
func NewPaymentController(deps PaymentControllerDeps) (*PaymentController, errors.Error) {
|
||||||
@ -38,9 +43,10 @@ func NewPaymentController(deps PaymentControllerDeps) (*PaymentController, error
|
|||||||
}
|
}
|
||||||
|
|
||||||
controller := &PaymentController{
|
controller := &PaymentController{
|
||||||
logger: deps.Logger,
|
logger: deps.Logger,
|
||||||
paymentProviders: deps.PaymentProviders,
|
paymentProviders: deps.PaymentProviders,
|
||||||
providerMap: make(map[models.PaymentType][]payment_provider.PaymentProvider),
|
providerMap: make(map[models.PaymentType][]payment_provider.PaymentProvider),
|
||||||
|
paymentMethodRepository: deps.PaymentMethodRepository,
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, provider := range deps.PaymentProviders {
|
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) {
|
func (r *PaymentController) GetPaymentLinkSberbankB2B(ctx context.Context, in *treasurer.GetPaymentLinkRequest) (*treasurer.GetPaymentLinkResponse, error) {
|
||||||
return r.createPayment(ctx, models.PaymentTypeSberB2B, in)
|
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 {
|
type ControllersDeps struct {
|
||||||
Logger *zap.Logger
|
Logger *zap.Logger
|
||||||
Services Services
|
Services Services
|
||||||
|
Repositories Repositories
|
||||||
}
|
}
|
||||||
|
|
||||||
type Controllers struct {
|
type Controllers struct {
|
||||||
@ -30,8 +31,9 @@ func NewControllers(deps ControllersDeps) (*Controllers, errors.Error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
paymentControllerGRPC, err := grpc.NewPaymentController(grpc.PaymentControllerDeps{
|
paymentControllerGRPC, err := grpc.NewPaymentController(grpc.PaymentControllerDeps{
|
||||||
Logger: deps.Logger,
|
Logger: deps.Logger,
|
||||||
PaymentProviders: deps.Services.PaymentProviders,
|
PaymentProviders: deps.Services.PaymentProviders,
|
||||||
|
PaymentMethodRepository: deps.Repositories.PaymentMethod,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
@ -13,7 +13,8 @@ type RepositoriesDeps struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type Repositories struct {
|
type Repositories struct {
|
||||||
Payment *repository.PaymentRepository
|
Payment *repository.PaymentRepository
|
||||||
|
PaymentMethod *repository.PaymentMethodRepository
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewRepositories(deps RepositoriesDeps) (*Repositories, errors.Error) {
|
func NewRepositories(deps RepositoriesDeps) (*Repositories, errors.Error) {
|
||||||
@ -25,5 +26,10 @@ func NewRepositories(deps RepositoriesDeps) (*Repositories, errors.Error) {
|
|||||||
return nil, err
|
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,
|
WebhooksURL: deps.Config.YooMoneyWebhooksURL,
|
||||||
PaymentsURL: deps.Config.YooMoneyPaymentsURL,
|
PaymentsURL: deps.Config.YooMoneyPaymentsURL,
|
||||||
},
|
},
|
||||||
Repository: deps.Repositories.Payment,
|
Repository: deps.Repositories.Payment,
|
||||||
CallbackService: callbackService,
|
CallbackService: callbackService,
|
||||||
|
PaymentMethodRepository: deps.Repositories.PaymentMethod,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
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;
|
package treasurer;
|
||||||
|
|
||||||
import "google/protobuf/empty.proto";
|
|
||||||
import "google/protobuf/empty.proto";
|
import "google/protobuf/empty.proto";
|
||||||
|
|
||||||
option go_package = "./treasurer";
|
option go_package = "./treasurer";
|
||||||
@ -38,3 +37,32 @@ message GetPaymentLinkResponse {
|
|||||||
message DeleteSavedPaymentMethodsRequest {
|
message DeleteSavedPaymentMethodsRequest {
|
||||||
string UserID = 1;
|
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