mirror of
https://github.com/3ybactuk/marketplace-go-service-project.git
synced 2025-10-30 14:03:45 +03:00
64 lines
1.3 KiB
Go
64 lines
1.3 KiB
Go
package loms
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
|
|
"route256/cart/internal/domain/entity"
|
|
"route256/cart/internal/domain/model"
|
|
"route256/cart/internal/infra/tracing"
|
|
|
|
pbLoms "route256/pkg/api/loms/v1"
|
|
)
|
|
|
|
type Service struct {
|
|
grpcClient pbLoms.LOMSClient
|
|
}
|
|
|
|
func NewLomsService(grpcClient pbLoms.LOMSClient) *Service {
|
|
return &Service{
|
|
grpcClient: grpcClient,
|
|
}
|
|
}
|
|
|
|
func (s *Service) OrderCreate(ctx context.Context, cart *model.Cart) (int64, error) {
|
|
ctx, span := tracing.Tracer().Start(ctx, "Loms.OrderCreate")
|
|
defer span.End()
|
|
|
|
items := make([]*pbLoms.OrderItem, len(cart.Items))
|
|
for i, item := range cart.Items {
|
|
items[i] = &pbLoms.OrderItem{
|
|
Sku: int64(item.Product.Sku),
|
|
Count: item.Count,
|
|
}
|
|
}
|
|
|
|
req := &pbLoms.OrderCreateRequest{
|
|
UserId: int64(cart.UserID),
|
|
Items: items,
|
|
}
|
|
|
|
resp, err := s.grpcClient.OrderCreate(ctx, req)
|
|
if err != nil {
|
|
return 0, fmt.Errorf("grpcClient.OrderCreate: %w", err)
|
|
}
|
|
|
|
return resp.OrderId, nil
|
|
}
|
|
|
|
func (s *Service) StocksInfo(ctx context.Context, sku entity.Sku) (uint32, error) {
|
|
ctx, span := tracing.Tracer().Start(ctx, "Loms.StocksInfo")
|
|
defer span.End()
|
|
|
|
req := &pbLoms.StocksInfoRequest{
|
|
Sku: int64(sku),
|
|
}
|
|
|
|
resp, err := s.grpcClient.StocksInfo(ctx, req)
|
|
if err != nil {
|
|
return 0, fmt.Errorf("grpcClient.StocksInfo: %w", err)
|
|
}
|
|
|
|
return resp.Count, nil
|
|
}
|