Database 使用多供应商市场处理订单

Database 使用多供应商市场处理订单,database,database-design,e-commerce,Database,Database Design,E Commerce,我的计划是,在我的多供应商电子商务网站上,订单将由供应商自己完成。但是,我不想让我的网站用户因为从相同/不同的供应商订购两种产品而感到沮丧。我想为他们提供添加到购物车选项,并只做一次结帐 我的数据库设计技能没有达到标准,我不知道如何在我的数据库中处理这个问题。我现在有两张桌子 订单 Schema::create('order', function (Blueprint $table) { $table->increments('id');

我的计划是,在我的多供应商电子商务网站上,订单将由供应商自己完成。但是,我不想让我的网站用户因为从相同/不同的供应商订购两种产品而感到沮丧。我想为他们提供添加到购物车选项,并只做一次结帐

我的数据库设计技能没有达到标准,我不知道如何在我的数据库中处理这个问题。我现在有两张桌子

订单

 Schema::create('order', function (Blueprint $table) {
            $table->increments('id');
            $table->string('order_number');
            $table->integer('customer_id');
            $table->integer('order_status'); // Does not make sense as if order has products from multiple vendors. There will be different status from each vendor
            $table->timestamps();
        });
订单详情

Schema::create('order_detail', function (Blueprint $table) {
        $table->increments('id');
        $table->integer('order_id')->unsigned();
        $table->string('product_id')->unsigned();
        $table->integer('vendor_id')->unsigned();
        $table->tinyInteger('quantity')->unsiged();
        $table->string('sku');
        $table->integer('order_status_code');
        $table->timestamps();
    });
所以,如果客户在一个订单中购买多个项目。每个项目将在
订单详细信息
表中的行与其
供应商id
链接。假设一个供应商处理订单,而另一个供应商正在等待。我如何反映这是主
订单


感谢客户,这是一次订单。对于供应商来说,他们必须获得一份专门针对他们将要完成的产品的“订单”。这意味着必须按照订单中的每个行项目计算运费(和税)。没有其他方法可以做到这一点,因为您必须单独向供应商付款。因此,主订单将引用供应商订单。跟踪发货完成情况应该是供应商订单的一部分,因为您需要监控不同供应商完成订单的速度和效果


一定要看看亚马逊——从不同的商家那里下一个订单,他们将完成订单——换句话说,亚马逊或prime没有完成订单——然后看看亚马逊如何在订单流程和后续行动中向您展示它。下一步注册成为亚马逊的卖家,并查看所有文档

您需要将数据库拆分为多个表。想想每一张桌子需要知道什么

您创建的订单将放置在您的市场网站上。此订单将包含与客户相关的信息,并且可能包含总数。创建一个单独的订单或“发票”,然后发送给您的供应商将只包含与该供应商相关的项目。供应商不需要知道向其他供应商下的订单或发票。他们只需要知道他们需要完成的项目和将支付的金额

发票可以连接到项目和单位项目以及装运,以防项目在单独的箱子中装运。基本上,你看什么东西需要知道。仓库只需要知道要运送哪些物品、在哪里运送以及何时运送即可。他们不应该知道任何付款细节。店主需要知道他们赚了多少钱,但不需要知道发货情况。如果他们碰巧是同一个人,他们会得到两条信息,但不会在同一个地方

从数据库创建对象时,首先加载订单。然后将发票对象加载到属于该订单的数组中。每个发票将包含一个装运对象数组,该数组包含正在购买的实际项目对象数组

--ORDERS TABLE--
--------------------------------------------------------------------------
ID | Customer ID | Shipping ID | Billing ID | Number | Created | Updated | Checkout | Payment | Token | Currency | Local | Invoices Total | Adj_Total | Total

--INVOICES TABLE--
--------------------------------------------------------------------------
ID | Order ID | Vendor ID | Number | Issued | Items Total | Adj_Total | Total | Coupon ID | Notes | State | Fulfilled

--ITEMS TABLE--
--------------------------------------------------------------------------
ID | Invoice ID | Variant ID | Product ID | Quantity | Unit Price | Unit Total | Adj_Total | Total  | Product Name | Variant Name

--UNITS TABLE--
--------------------------------------------------------------------------
ID | Item ID | Shipment ID | Adj_Total | Created | Updated
您仍然需要编写代码逻辑,在结帐时显示客户1订单。如果您打算对每批货物单独收取运费,他们还需要查看单独的货物,以防允许他们为每批货物选择不同的方法,例如UPS或Fedex

免责声明:

我正在建立一个开源的多供应商数据库 您可能感兴趣的设计。它太大了,不能在这里张贴 但你可以在Reddit上找到它。请随时访问和分享 您的想法和意见,以进一步改善此设计为其他人


我也在想这个问题。。我认为您应该为订单创建两个表。一个用于客户,一个用于供应商。。订单\供应商将参考订单\客户。。每当一个供应商处理订单时,您都会检查其他供应商是否也处理了订单,如果他们也处理了,您就处理客户的订单