电商场景中的一品多商是如何设计的?

1 个回答

  • 李牧
    不必太张扬,是花自然香。
    ### **一品多商的设计方案(电商场景)** **一品多商**(即一个商品由多个商家销售)在电商系统中较为常见,如京东、天猫等平台都会允许多个商家销售相同的商品。其设计涉及 **商品管理、库存管理、价格策略、订单分配** 等多个核心模块,下面是详细的设计方案。 ## **1. 核心概念** - **商品(SPU)**:标准化的商品信息,例如 iPhone 15。 - **商家(Seller)**:不同的销售方,如官方旗舰店、代理商、第三方店铺等。 - **SKU(Stock Keeping Unit)**:商品的具体销售单元,结合 **商家** 维度后成为 **商家SKU**。 - **价格策略**:不同商家的价格、促销、折扣、优惠券等。 - **库存管理**:商家自己的库存管理,与平台库存同步。 - **订单分配**:用户下单后,如何选择商家进行发货。 ## **2. 数据模型设计** ### **(1) 商品模型** ```sql CREATE TABLE spu ( id BIGINT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(255) NOT NULL COMMENT '商品名称', brand_id BIGINT COMMENT '品牌ID', category_id BIGINT COMMENT '分类ID', description TEXT COMMENT '商品描述', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); ``` ### **(2) 商家信息** ```sql CREATE TABLE seller ( id BIGINT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(255) NOT NULL COMMENT '商家名称', seller_type ENUM('official', 'third_party', 'self') COMMENT '商家类型', rating DECIMAL(3,2) COMMENT '商家评分', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); ``` ### **(3) 商家 SKU(核心)** ```sql CREATE TABLE sku ( id BIGINT PRIMARY KEY AUTO_INCREMENT, spu_id BIGINT NOT NULL COMMENT '关联SPU', seller_id BIGINT NOT NULL COMMENT '商家ID', price DECIMAL(10,2) NOT NULL COMMENT '销售价格', stock INT NOT NULL COMMENT '库存数量', status ENUM('active', 'inactive') DEFAULT 'active' COMMENT '商品状态', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, UNIQUE KEY (spu_id, seller_id) -- 保证一个商品在一个商家只能有一个SKU ); ``` - **为什么 SKU 需要绑定 `spu_id + seller_id`?** - 因为不同商家可能销售相同商品,但他们的 **价格、库存、活动** 是不同的。 ## **3. 价格与促销策略** ### **(1) 商家独立定价** - 同一款商品,不同商家的 **价格可能不同**,甚至可以根据用户类型(新客/老客)设置不同的折扣。 ```sql CREATE TABLE sku_price ( id BIGINT PRIMARY KEY AUTO_INCREMENT, sku_id BIGINT NOT NULL COMMENT '关联SKU', price DECIMAL(10,2) NOT NULL COMMENT '基础价格', discount DECIMAL(5,2) COMMENT '折扣(可选)', promotion_id BIGINT COMMENT '促销活动ID', start_time TIMESTAMP COMMENT '折扣开始时间', end_time TIMESTAMP COMMENT '折扣结束时间', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); ``` ### **(2) 促销活动** 商家可以参与 **平台促销** 或者 **独立促销**: - 平台促销:如双11活动,全网降价。 - 商家促销:如店铺满减、优惠券等。 ```sql CREATE TABLE promotions ( id BIGINT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(255) NOT NULL COMMENT '促销名称', discount_type ENUM('fixed', 'percentage') COMMENT '折扣类型', discount_value DECIMAL(5,2) NOT NULL COMMENT '折扣金额或折扣百分比', start_time TIMESTAMP NOT NULL, end_time TIMESTAMP NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); ``` ## **4. 库存管理** ### **(1) 商家库存表** 库存通常是 **商家级别**,因为不同商家有不同仓库: ```sql CREATE TABLE sku_inventory ( id BIGINT PRIMARY KEY AUTO_INCREMENT, sku_id BIGINT NOT NULL COMMENT 'SKU ID', warehouse_id BIGINT NOT NULL COMMENT '仓库ID', stock INT NOT NULL COMMENT '库存数量', reserved INT NOT NULL DEFAULT 0 COMMENT '已预留库存', updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ); ``` ### **(2) 库存扣减策略** - **下单锁定库存**:下单后立即锁定库存(适用于秒杀、抢购)。 - **支付后扣减库存**:订单支付成功后才扣减库存(适用于一般场景)。 - **发货后减少库存**:当订单发货时才扣减库存(适用于预售模式)。 ## **5. 订单分配逻辑** 用户下单后,需要选择 **哪个商家发货**,一般有以下几种策略: ### **(1) 价格优先** - 选择 **价格最低** 的商家: ```sql SELECT * FROM sku WHERE spu_id = ? ORDER BY price ASC LIMIT 1; ``` ### **(2) 评分优先** - 选择评分最高的商家: ```sql SELECT * FROM sku s JOIN seller sr ON s.seller_id = sr.id WHERE spu_id = ? ORDER BY sr.rating DESC LIMIT 1; ``` ### **(3) 物流优先** - 选择距离最近的仓库(结合仓库配送能力)。 ```sql SELECT * FROM sku_inventory WHERE sku_id = ? ORDER BY warehouse_id LIMIT 1; ``` ### **(4) 自定义策略** 可以结合 **价格、评分、物流** 进行加权计算,最终选择最优商家。 ## **6. 订单与结算** ### **(1) 订单表** 订单需要关联 `sku_id`,以确保购买的是某个 **商家** 的商品: ```sql CREATE TABLE orders ( id BIGINT PRIMARY KEY AUTO_INCREMENT, user_id BIGINT NOT NULL COMMENT '用户ID', sku_id BIGINT NOT NULL COMMENT 'SKU ID', quantity INT NOT NULL COMMENT '购买数量', price DECIMAL(10,2) NOT NULL COMMENT '购买价格', status ENUM('pending', 'paid', 'shipped', 'completed', 'canceled') DEFAULT 'pending' COMMENT '订单状态', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); ``` ### **(2) 结算** 商家结算有两种模式: 1. **佣金模式**:平台抽取一定比例的佣金。 2. **结算账期**:商家每 7/15/30 天结算一次。 ```sql CREATE TABLE settlement ( id BIGINT PRIMARY KEY AUTO_INCREMENT, seller_id BIGINT NOT NULL COMMENT '商家ID', order_id BIGINT NOT NULL COMMENT '订单ID', total_amount DECIMAL(10,2) NOT NULL COMMENT '订单金额', commission DECIMAL(10,2) COMMENT '平台佣金', payout DECIMAL(10,2) COMMENT '实际结算金额', status ENUM('pending', 'processed', 'completed') DEFAULT 'pending' COMMENT '结算状态', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); ``` ## **7. 总结** ✅ **一品多商的关键点:** 1. **商品层级设计**:SPU 统一管理,SKU 绑定商家。 2. **价格与库存独立**:不同商家有独立的价格和库存管理。 3. **智能订单分配**:价格、评分、物流等多个维度选择最优商家。 4. **促销策略灵活**:商家可以独立设置促销,也可以参加平台活动。 5. **结算机制**:支持佣金模式或账期结算。 这套方案可以支撑 **C2C(淘宝)**、**B2C(京东)**、**自营+平台模式(拼多多)** 等多种电商模式。
    发布于 2025-03-12 04:28 •IP属地 河南
    举报
    评论
    收藏