dev #9

Merged
skeris merged 20 commits from dev into staging 2025-08-13 20:36:15 +00:00
7 changed files with 78 additions and 53 deletions
Showing only changes of commit a1f734a87d - Show all commits

@ -74,6 +74,7 @@ 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"
@ -19,13 +21,16 @@ 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
paymentMethodRepository *repository.PaymentMethodRepository
providerMap map[models.PaymentType][]payment_provider.PaymentProvider providerMap map[models.PaymentType][]payment_provider.PaymentProvider
mu sync.RWMutex mu sync.RWMutex
treasurer.UnimplementedTreasurerServiceServer
} }
func NewPaymentController(deps PaymentControllerDeps) (*PaymentController, errors.Error) { func NewPaymentController(deps PaymentControllerDeps) (*PaymentController, errors.Error) {
@ -41,6 +46,7 @@ func NewPaymentController(deps PaymentControllerDeps) (*PaymentController, error
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
}

@ -11,6 +11,7 @@ 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 {
@ -32,6 +33,7 @@ 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

@ -14,6 +14,7 @@ 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
} }

@ -101,6 +101,7 @@ func NewServices(deps ServicesDeps) (*Services, errors.Error) {
}, },
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;
}