Как можно разбить один заказ на несколько в онлайн-маркетплейсе?

Каковы наилучшие способы разделить и управлять многопродавецким заказом в описанной структуре? Возможны ли следующие подходы? 

1. Разделение заказа на несколько частей с помощью:
   1.1. Добавления parent_id к Order, что заставляет OrderItem быть привязанным к основному и дочернему заказам. Как это реализовать?
   1.2. Создания нескольких заказов с общим токеном для идентификации в платежной системе, что кажется контринтуитивным, так как пользователь формирует одну корзину.

2. Привязка OrderItem к сущности Transaction вместо Order путем записывания transaction_id в OrderItem во время оплаты пользователем. Вероятно ли, что это будет выглядеть как временное решение в данной структуре?
  • 1 декабря 2023 г. 16:49
Ответы на вопрос 2
1. Разделение заказа на несколько частей:
   1.1. Добавление parent_id к Order: В этом подходе основной заказ может быть разбит на несколько дочерних заказов, каждый из которых связан с разными продавцами. Здесь можно использовать parent_id в Order для указания связи между основным и дочерними заказами. Когда пользователь формирует заказ, можно создать отдельные Order с parent_id и связать каждый из них с конкретным продавцом.

   1.2. Создание нескольких заказов с общим токеном: В этом решении, вместо создания отдельных заказов, создается отдельный заказ для каждого продавца, и все они связаны общим токеном. Это позволяет синхронизировать все заказы с одним платежом пользователя и управлять ими как единым целым, несмотря на то, что они формально разделены.

2. Привязка OrderItem к Transaction вместо Order: Этот подход подразумевает, что каждый OrderItem привязывается к отдельной транзакции вместо общего заказа. Это может быть полезно, если каждый продавец обрабатывает свои элементы заказа отдельно, но все же нужно координировать оплату и доставку на уровне пользователя. 

Однако этот подход может стать сложным, если один продавец не может выполнить свою часть в доставке или если возникают другие вопросы в работе продавцов. В этом случае, вам придется управлять этими проблемами внутри каждой отдельной транзакции, а не на уровне общего заказа. Это может стать достаточно сложно, поскольку вам придется координировать между разными продавцами и транзакциями. 

В описанной структуре, оба подхода могут быть вполне рабочими и будут зависеть от конкретной модели бизнеса и требований к операциям. В любом случае, нужно аккуратно проработать управление этими множественными заказами или транзакциями, чтобы обеспечить безопасность платежей и доставку товарав пользователю.
Вы должны поделить заказ по производителям. Для этого сделайте разделение на уровне логики, а не на физическом уровне. Используйте составной ключ, который включает в себя код заказа и код производителя. 
Похожие вопросы