const fs = require('fs'); const path = require('path'); // 递归查找所有 .js 文件 function findJsFiles(dir) { let results = []; const list = fs.readdirSync(dir); list.forEach(file => { const filePath = path.join(dir, file); const stat = fs.statSync(filePath); if (stat && stat.isDirectory()) { results = results.concat(findJsFiles(filePath)); } else if (file.endsWith('.js')) { results.push(filePath); } }); return results; } // 更新 controller 中的 ID 字段使用 function updateControllerIds(filePath) { try { let content = fs.readFileSync(filePath, 'utf8'); const originalContent = content; // 定义字段映射关系 const fieldMappings = { 'applyId': 'id', 'taskId': 'id', 'chatId': 'id', 'resumeId': 'id', 'deviceId': 'id' }; // 替换字段名 Object.keys(fieldMappings).forEach(oldField => { const newField = fieldMappings[oldField]; // 替换变量声明和赋值 content = content.replace(new RegExp(`const ${oldField} =`, 'g'), `const ${newField} =`); content = content.replace(new RegExp(`let ${oldField} =`, 'g'), `let ${newField} =`); content = content.replace(new RegExp(`var ${oldField} =`, 'g'), `var ${newField} =`); // 替换对象属性 content = content.replace(new RegExp(`${oldField}:`, 'g'), `${newField}:`); // 替换解构赋值 content = content.replace(new RegExp(`\\{ ${oldField} \\}`, 'g'), `{ ${newField} }`); content = content.replace(new RegExp(`\\{${oldField}\\}`, 'g'), `{${newField}}`); // 替换 where 条件中的字段名 content = content.replace(new RegExp(`where: \\{ ${oldField}:`, 'g'), `where: { ${newField}:`); content = content.replace(new RegExp(`where: \\{${oldField}:`, 'g'), `where: {${newField}:`); // 替换注释中的字段名 content = content.replace(new RegExp(`- ${oldField}`, 'g'), `- ${newField}`); content = content.replace(new RegExp(`${oldField}:`, 'g'), `${newField}:`); }); // 清理多余的空行 content = content.replace(/\n\s*\n\s*\n/g, '\n\n'); if (content !== originalContent) { fs.writeFileSync(filePath, content, 'utf8'); console.log(`已更新: ${filePath}`); return true; } return false; } catch (error) { console.error(`处理文件失败 ${filePath}:`, error.message); return false; } } // 主函数 function main() { const controllerDir = path.join(__dirname, 'api', 'controller_front'); if (!fs.existsSync(controllerDir)) { console.error('Controller 目录不存在:', controllerDir); return; } const jsFiles = findJsFiles(controllerDir); let updatedCount = 0; console.log(`找到 ${jsFiles.length} 个 controller 文件`); jsFiles.forEach(filePath => { if (updateControllerIds(filePath)) { updatedCount++; } }); console.log(`更新完成,共更新 ${updatedCount} 个文件`); } main();