-- 设备商品库存表 CREATE TABLE IF NOT EXISTS `t_device_inventory` ( `id` BIGINT NOT NULL COMMENT '主键ID(雪花算法生成)', `device_id` VARCHAR(50) NOT NULL COMMENT '设备ID(SN号)', `product_id` BIGINT NOT NULL COMMENT '商品ID(本地)', `product_code` VARCHAR(50) DEFAULT NULL COMMENT '商品编码(哈哈平台code)', `product_name` VARCHAR(200) DEFAULT NULL COMMENT '商品名称(冗余)', `stock` INT NOT NULL DEFAULT 0 COMMENT '当前库存数量', `shelf_num` INT DEFAULT NULL COMMENT '所在货架层号', `position` VARCHAR(20) DEFAULT NULL COMMENT '货道位置(left/right)', `warning_threshold` INT DEFAULT 5 COMMENT '库存预警阈值', `last_restock_time` DATETIME DEFAULT NULL COMMENT '最后补货时间', `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `version` INT DEFAULT 0 COMMENT '乐观锁版本号', PRIMARY KEY (`id`), UNIQUE KEY `uk_device_product` (`device_id`, `product_id`), INDEX `idx_device_id` (`device_id`), INDEX `idx_product_id` (`product_id`), INDEX `idx_stock` (`stock`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='设备商品库存表'; -- 库存变动日志表 CREATE TABLE IF NOT EXISTS `t_inventory_log` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID', `device_id` VARCHAR(50) NOT NULL COMMENT '设备ID', `product_id` BIGINT NOT NULL COMMENT '商品ID', `product_code` VARCHAR(50) DEFAULT NULL COMMENT '商品编码', `product_name` VARCHAR(200) DEFAULT NULL COMMENT '商品名称', `change_type` TINYINT NOT NULL COMMENT '变动类型:1上货增加,2销售减少,3调整增加,4调整减少,5盘点调整', `change_quantity` INT NOT NULL COMMENT '变动数量(正数增加,负数减少)', `before_stock` INT NOT NULL COMMENT '变动前库存', `after_stock` INT NOT NULL COMMENT '变动后库存', `order_id` VARCHAR(50) DEFAULT NULL COMMENT '关联订单号(销售时)', `activity_id` VARCHAR(50) DEFAULT NULL COMMENT '关联活动号', `operator_id` BIGINT DEFAULT NULL COMMENT '操作人ID', `operator_name` VARCHAR(100) DEFAULT NULL COMMENT '操作人名称', `remark` VARCHAR(500) DEFAULT NULL COMMENT '备注', `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', PRIMARY KEY (`id`), INDEX `idx_device_id` (`device_id`), INDEX `idx_product_id` (`product_id`), INDEX `idx_change_type` (`change_type`), INDEX `idx_create_time` (`create_time`), INDEX `idx_order_id` (`order_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='库存变动日志表'; -- 上货记录表 CREATE TABLE IF NOT EXISTS `t_stock_record` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID', `device_id` VARCHAR(50) NOT NULL COMMENT '设备ID', `activity_id` VARCHAR(50) DEFAULT NULL COMMENT '哈哈平台活动号', `stock_type` TINYINT DEFAULT 1 COMMENT '类型:1上货,2补货', `stocker_id` BIGINT DEFAULT NULL COMMENT '上货员ID', `stocker_name` VARCHAR(100) DEFAULT NULL COMMENT '上货员名称', `stocker_phone` VARCHAR(20) DEFAULT NULL COMMENT '上货员电话', `total_items` INT DEFAULT 0 COMMENT '上货商品种类数', `total_quantity` INT DEFAULT 0 COMMENT '上货总数量', `status` TINYINT DEFAULT 1 COMMENT '状态:1进行中,2已完成,3已取消', `start_time` DATETIME DEFAULT NULL COMMENT '开始时间', `end_time` DATETIME DEFAULT NULL COMMENT '结束时间', `remark` VARCHAR(500) DEFAULT NULL COMMENT '备注', `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`), INDEX `idx_device_id` (`device_id`), INDEX `idx_stocker_id` (`stocker_id`), INDEX `idx_create_time` (`create_time`), INDEX `idx_activity_id` (`activity_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='上货记录表'; -- 上货记录明细表 CREATE TABLE IF NOT EXISTS `t_stock_record_item` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID', `record_id` BIGINT NOT NULL COMMENT '上货记录ID', `device_id` VARCHAR(50) NOT NULL COMMENT '设备ID', `product_id` BIGINT NOT NULL COMMENT '商品ID', `product_code` VARCHAR(50) DEFAULT NULL COMMENT '商品编码', `product_name` VARCHAR(200) DEFAULT NULL COMMENT '商品名称', `shelf_num` INT DEFAULT NULL COMMENT '货架层号', `quantity` INT NOT NULL COMMENT '上货数量', `before_stock` INT DEFAULT 0 COMMENT '上货前库存', `after_stock` INT DEFAULT 0 COMMENT '上货后库存', `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', PRIMARY KEY (`id`), INDEX `idx_record_id` (`record_id`), INDEX `idx_device_product` (`device_id`, `product_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='上货记录明细表'; -- 上货员表 CREATE TABLE IF NOT EXISTS `t_stocker` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID', `name` VARCHAR(100) NOT NULL COMMENT '姓名', `phone` VARCHAR(20) DEFAULT NULL COMMENT '电话', `employee_id` VARCHAR(50) DEFAULT NULL COMMENT '工号', `status` TINYINT DEFAULT 1 COMMENT '状态:1启用,0禁用', `total_tasks` INT DEFAULT 0 COMMENT '累计任务数', `last_task_time` DATETIME DEFAULT NULL COMMENT '最后任务时间', `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`), INDEX `idx_phone` (`phone`), INDEX `idx_status` (`status`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='上货员表'; -- ==================== 补货员新表(v2 独立账号体系) ==================== -- 补货员表(替代 t_stocker,独立账号体系) CREATE TABLE IF NOT EXISTS `t_replenisher` ( `id` BIGINT NOT NULL COMMENT '雪花主键', `name` VARCHAR(50) NOT NULL COMMENT '姓名', `phone` VARCHAR(20) DEFAULT NULL COMMENT '手机号', `employee_id` VARCHAR(50) DEFAULT NULL COMMENT '工号', `wechat_openid` VARCHAR(100) DEFAULT NULL COMMENT '微信OpenID(扫码绑定时回填)', `avatar` VARCHAR(500) DEFAULT NULL COMMENT '头像', `status` TINYINT DEFAULT 1 COMMENT '状态:1-启用 0-禁用', `total_tasks` INT DEFAULT 0 COMMENT '累计任务数', `last_task_time` DATETIME DEFAULT NULL COMMENT '最后任务时间', `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`), INDEX `idx_phone` (`phone`), INDEX `idx_status` (`status`), INDEX `idx_wechat_openid` (`wechat_openid`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='补货员表'; -- 补货员-设备关联表 CREATE TABLE IF NOT EXISTS `t_replenisher_device` ( `id` BIGINT NOT NULL COMMENT '雪花主键', `replenisher_id` BIGINT NOT NULL COMMENT '补货员ID', `device_id` VARCHAR(50) NOT NULL COMMENT '设备SN号', `source` VARCHAR(20) DEFAULT 'MANUAL' COMMENT '绑定来源:MANUAL-手动,QR-扫码绑定,SHOP_INHERIT-门店继承', `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_replenisher_device` (`replenisher_id`, `device_id`), INDEX `idx_device_id` (`device_id`), INDEX `idx_replenisher_id` (`replenisher_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='补货员-设备关联表';