src/ApiGateways/Mobile.Bff.Shopping/aggregator/Services/OrderingService.cs

(开头部分) 2KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

namespace Microsoft.eShopOnContainers.Mobile.Shopping.HttpAggregator.Services;

public class OrderingService : IOrderingService
{
    private readonly OrderingGrpc.OrderingGrpcClient _orderingGrpcClient;
    private readonly ILogger<OrderingService> _logger;

    public OrderingService(OrderingGrpc.OrderingGrpcClient orderingGrpcClient, ILogger<OrderingService> logger)
    {
        _orderingGrpcClient = orderingGrpcClient;
        _logger = logger;
    }

    public async Task<OrderData> GetOrderDraftAsync(BasketData basketData)
    {
        _logger.LogDebug(" grpc client created, basketData={@basketData}", basketData);

        var command = MapToOrderDraftCommand(basketData);
        var response = await _orderingGrpcClient.CreateOrderDraftFromBasketDataAsync(command);
        _logger.LogDebug(" grpc response: {@response}", response);

        return MapToResponse(response, basketData);
    }

    private OrderData MapToResponse(GrpcOrdering.OrderDraftDTO orderDraft, BasketData basketData)
    {
        if (orderDraft == null)
        {
            return null;
        }

        var data = new OrderData
        {
            Buyer = basketData.BuyerId,
            Total = (decimal)orderDraft.Total,
        };

        orderDraft.OrderItems.ToList().ForEach(o => data.OrderItems.Add(new OrderItemData
        {
            Discount = (decimal)o.Discount,
            PictureUrl = o.PictureUrl,
            ProductId = o.ProductId,
            ProductName = o.ProductName,
            UnitPrice = (decimal)o.UnitPrice,
            Units = o.Units,
        }));

        return data;
    }

    private CreateOrderDraftCommand MapToOrderDraftCommand(BasketData basketData)
    {
        var command = new CreateOrderDraftCommand
        {
            BuyerId = basketData.BuyerId,
        };

        basketData.Items.ForEach(i => command.Items.Add(new BasketItem
        {
            Id = i.Id,
后面还有 12 行代码,解锁后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明

AI 解读 AI

登录后可用,每次 10 算力,解读结果公开显示在下面。

还没有人解读过这个文件。