-- 碎片合成功能 -- 1. product_categories 新增碎片标记 ALTER TABLE product_categories ADD COLUMN is_fragment TINYINT NOT NULL DEFAULT 0 COMMENT '是否碎片分类:0否 1是'; -- 2. 碎片合成配方表(主表) CREATE TABLE fragment_synthesis_recipes ( id BIGINT PRIMARY KEY AUTO_INCREMENT, created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3), name VARCHAR(100) NOT NULL COMMENT '合成配方名称', description VARCHAR(500) NOT NULL DEFAULT '' COMMENT '合成配方描述', target_product_id BIGINT NOT NULL COMMENT '合成目标商品ID(products.id)', status TINYINT NOT NULL DEFAULT 1 COMMENT '状态:1启用 2禁用', deleted_at DATETIME(3) NULL, INDEX idx_target_product (target_product_id) ) COMMENT '碎片合成配方'; -- 3. 碎片合成配方材料表(子表) CREATE TABLE fragment_synthesis_recipe_materials ( id BIGINT PRIMARY KEY AUTO_INCREMENT, created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), recipe_id BIGINT NOT NULL COMMENT '配方ID(fragment_synthesis_recipes.id)', fragment_product_id BIGINT NOT NULL COMMENT '碎片商品ID(products.id)', required_count INT NOT NULL DEFAULT 1 COMMENT '该碎片所需数量', INDEX idx_recipe (recipe_id), INDEX idx_fragment_product (fragment_product_id) ) COMMENT '碎片合成配方材料'; -- 4. 碎片合成日志表 CREATE TABLE fragment_synthesis_logs ( id BIGINT PRIMARY KEY AUTO_INCREMENT, created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), user_id BIGINT NOT NULL COMMENT '用户ID', recipe_id BIGINT NOT NULL COMMENT '配方ID', consumed_inventory_ids JSON NOT NULL COMMENT '消耗的碎片资产ID列表', produced_inventory_id BIGINT NOT NULL COMMENT '合成产出的资产ID(user_inventory.id)', INDEX idx_user (user_id), INDEX idx_recipe (recipe_id) ) COMMENT '碎片合成日志';