-- 商品入库 + 库存流水(共享) -- 依据:doc/店铺后台/库存管理/商品入库/商品入库技术方案.md v1.0 -- 入库单主表 CREATE TABLE IF NOT EXISTS `biz_stock_inbound` ( `inbound_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '入库单ID', `inbound_no` varchar(32) NOT NULL COMMENT '入库单号(IN+yyyyMMdd+6位)', `shop_id` bigint(20) NOT NULL COMMENT '店铺ID', `inbound_type` char(1) NOT NULL COMMENT '0新增商品规格 1采购 2退货 3其他', `remark` varchar(200) DEFAULT NULL COMMENT '备注', `operator_id` bigint(20) NOT NULL COMMENT '经办人用户ID', `operator_name` varchar(64) NOT NULL DEFAULT '' COMMENT '经办人登录名快照', `inbound_time` datetime NOT NULL COMMENT '入库确认时间', `create_by` varchar(64) DEFAULT '' COMMENT '创建者', `create_time` datetime DEFAULT NULL COMMENT '创建时间', PRIMARY KEY (`inbound_id`), UNIQUE KEY `uk_inbound_no` (`inbound_no`), KEY `idx_shop_time` (`shop_id`, `inbound_time`), KEY `idx_shop_type` (`shop_id`, `inbound_type`, `inbound_time`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商品入库单'; -- 入库单明细 CREATE TABLE IF NOT EXISTS `biz_stock_inbound_item` ( `item_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '明细ID', `inbound_id` bigint(20) NOT NULL COMMENT '入库单ID', `goods_id` bigint(20) NOT NULL COMMENT '商品ID', `sku_id` bigint(20) DEFAULT NULL COMMENT 'SKU ID(多规格预留)', `goods_name` varchar(200) NOT NULL COMMENT '商品名称快照', `main_pic` varchar(512) NOT NULL DEFAULT '' COMMENT '主图快照', `spec_text` varchar(256) DEFAULT NULL COMMENT '规格展示文案', `quantity` int(11) NOT NULL COMMENT '入库数量', `stock_before` int(11) NOT NULL COMMENT '变化前库存', `stock_after` int(11) NOT NULL COMMENT '变化后库存', PRIMARY KEY (`item_id`), KEY `idx_inbound_id` (`inbound_id`), KEY `idx_goods_id` (`goods_id`, `inbound_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商品入库单明细'; -- 库存流水(入库/出库/调整/订单共用) CREATE TABLE IF NOT EXISTS `biz_stock_log` ( `log_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '流水ID', `shop_id` bigint(20) NOT NULL COMMENT '店铺ID', `goods_id` bigint(20) NOT NULL COMMENT '商品ID', `sku_id` bigint(20) DEFAULT NULL COMMENT 'SKU ID(预留)', `goods_name` varchar(200) NOT NULL COMMENT '商品名称快照', `spec_text` varchar(256) DEFAULT NULL COMMENT '规格展示文案', `direction` char(1) NOT NULL COMMENT '1入库 2出库', `change_reason` varchar(32) NOT NULL COMMENT '变化原因编码', `change_qty` int(11) NOT NULL COMMENT '变化量(正数)', `stock_before` int(11) NOT NULL COMMENT '变化前库存', `stock_after` int(11) NOT NULL COMMENT '变化后库存', `ref_type` varchar(16) NOT NULL COMMENT 'INBOUND/OUTBOUND/ADJUST/ORDER/GOODS', `ref_id` bigint(20) DEFAULT NULL COMMENT '关联业务主键', `ref_no` varchar(32) DEFAULT NULL COMMENT '关联业务单号', `operator_id` bigint(20) DEFAULT NULL COMMENT '操作人ID', `operator_name` varchar(64) DEFAULT '' COMMENT '操作人登录名', `create_time` datetime NOT NULL COMMENT '操作时间', PRIMARY KEY (`log_id`), KEY `idx_shop_time` (`shop_id`, `create_time`), KEY `idx_goods_time` (`shop_id`, `goods_id`, `create_time`), KEY `idx_ref` (`ref_type`, `ref_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='库存流水';