-- ============================================================ -- 迁移:cms_website.template_id 字段语义变更 -- ------------------------------------------------------------ -- 旧语义:template_id 存的是「克隆来源租户UID」(如 10257), -- 由 CmsWebsiteServiceImpl.create() 写入并用作建站克隆来源。 -- 新语义:template_id = 真正的模板ID(cms_template.id,1~6), -- 由 CmsTemplateController.use() 按租户写入,前端据此渲染 template-XX。 -- 克隆来源改由新字段 clone_tenant_id 承载,与模板ID彻底解耦。 -- ============================================================ -- 1) 将原 template_id 列重命名为 clone_tenant_id(保留克隆来源,建站克隆逻辑依赖它) ALTER TABLE cms_website CHANGE COLUMN template_id clone_tenant_id INT(11) DEFAULT NULL COMMENT '克隆来源租户UID(原 template_id 语义)'; -- 2) 新增真正的模板ID列(cms_template.id,1~6) ALTER TABLE cms_website ADD COLUMN template_id INT(11) DEFAULT NULL COMMENT '模板ID(cms_template.id,1~6,对应前端 template-XX)'; -- 3) 迁移存量数据:克隆来源租户UID → 对应 cms_template.id -- 已知映射(各模板的克隆参考租户;如与实际库不符请按实调整): UPDATE cms_website SET template_id = 5 WHERE clone_tenant_id = 10257; -- 10257 = template-05 参考租户 -- UPDATE cms_website SET template_id = ? WHERE clone_tenant_id = ?; -- 其余模板参考租户 → 对应 cms_template.id -- 4) 核查:列出尚未迁移的存量行(template_id 为空但 clone_tenant_id 非空) -- 这些站点在管理员于后台「模板选择器」重新选用一次后会自动写入正确 template_id; -- 在重新选用前会临时回落到默认模板(template-01),不会丢数据。 -- SELECT website_id, tenant_id, clone_tenant_id -- FROM cms_website -- WHERE template_id IS NULL AND clone_tenant_id IS NOT NULL; -- ============================================================ -- 配套代码改动(已完成,供复核): -- - CmsWebsite.java:新增 cloneTenantId 字段;templateId 注释更正为「模板ID」 -- - CmsWebsiteServiceImpl.create():克隆来源改用 cloneTenantId; -- 新站点 template_id 取克隆来源站点自身已选定的模板(迁移后= cms_template.id) -- - CmsTemplateController.use()/current():改为读写 cms_website.template_id(按租户隔离), -- 不再写 app_product.template_id -- - 前端 useTemplate.ts:解析优先级调整为 站点(cms_website) > 应用(app_product), -- 避免共享产品级残留值盖掉租户级选择 -- - 前端 utils/index.ts:移除临时 TEMPLATE_ID_MAP,toTemplateKey 直接支持 1~6 -- ============================================================