【问题标题】:Handling orders with Multi Vendor Marketplace使用多供应商市场处理订单
【发布时间】:2020-02-10 04:18:20
【问题描述】:

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

我的数据库设计技能达不到标准,我不知道应该如何在我的数据库中处理这种情况。我现在有两张桌子

订购

 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();
    });

因此,如果客户在一个订单中购买了多件商品。每个项目将在order_detail 表中与其vendor_id 链接。假设一个供应商处理了订单,而另一个供应商正在等待处理。我如何反映这是主要的order 表?

谢谢

【问题讨论】:

  • 我也想知道这个问题。我认为您应该为订单创建 2 个表。一个用于客户,一个用于供应商.. orders_vendors 将引用 orders_customers.. 每当供应商处理订单时,您检查所有其他供应商是否也处理了如果他们处理了,您处理 customers_order

标签: database database-design e-commerce


【解决方案1】:

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

您创建了一个将放置在您的市场网站上的订单。该订单将包含与客户相关的信息,并且可能包含总数。创建一个单独的订单或“发票”,然后您发送给您的供应商将仅包含与该供应商相关的项目。供应商不需要知道其他供应商的订单或发票。他们只需要知道他们需要履行的项目以及他们将获得的钱。

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

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

--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 上找到它。请随时访问和分享 您的想法和意见,以便为其他人进一步改进此设计。

https://www.reddit.com/r/Database/comments/f1d4fx/marketplace_database_design/

【讨论】:

    【解决方案2】:

    对于客户来说,它是一个订单。对于供应商,他们必须获得专门针对他们将要履行的产品的“订单”。这意味着必须根据订单中的每个订单项计算运费(和税费)。没有其他方法可以做到这一点,因为您必须单独向供应商付款。所以主订单将参考供应商订单。跟踪运输履行应该是供应商订单的一部分,因为您需要监控不同供应商完成订单的速度和效果。

    一定要查看亚马逊 - 从将履行订单的不同商家处订购一个订单 - 换句话说,亚马逊或 Prime 不履行 - 看看亚马逊如何在订单流程和在跟进中。接下来注册成为亚马逊卖家并查看所有文档。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-18
      • 1970-01-01
      • 1970-01-01
      • 2023-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多