77 lines
2.8 KiB
JavaScript
77 lines
2.8 KiB
JavaScript
|
|
const fs = require('fs');
|
|||
|
|
|
|||
|
|
// 新的头像URL选择
|
|||
|
|
const newAvatars = {
|
|||
|
|
// 袁嘉宇 - 使用id=15的头像(不同风格)
|
|||
|
|
'袁嘉宇': 'https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/avatar/douyin/54461d443f4927823b56661d0aa6205b.jpg',
|
|||
|
|
// 第1名 - 许思涵 - 使用id=10的头像
|
|||
|
|
'许思涵': 'https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/avatar/douyin/3255be536cf8fb3ddece6cb2733a0c6b.jpg',
|
|||
|
|
// 第2名 - 沈子墨 - 使用id=12的头像
|
|||
|
|
'沈子墨': 'https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/avatar/douyin/377cc7767c3c9401c3987c844ce73e4b.jpg',
|
|||
|
|
// 第3名 - 冯欣怡 - 使用id=14的头像
|
|||
|
|
'冯欣怡': 'https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/avatar/douyin/457cfa8e557879e14d54f13dc226a11e.jpg'
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
// 读取mockData.js
|
|||
|
|
const mockDataPath = './src/data/mockData.js';
|
|||
|
|
let mockDataContent = fs.readFileSync(mockDataPath, 'utf-8');
|
|||
|
|
|
|||
|
|
// 备份
|
|||
|
|
const backupPath = `${mockDataPath}.backup_avatars_${new Date().toISOString().replace(/[:.]/g, '-')}`;
|
|||
|
|
fs.writeFileSync(backupPath, mockDataContent);
|
|||
|
|
console.log(`✅ 已创建备份:${backupPath}`);
|
|||
|
|
|
|||
|
|
// 更新user中的袁嘉宇头像
|
|||
|
|
mockDataContent = mockDataContent.replace(
|
|||
|
|
/user:\s*{[\s\S]*?avatar:\s*"[^"]+"/,
|
|||
|
|
(match) => {
|
|||
|
|
return match.replace(
|
|||
|
|
/avatar:\s*"[^"]+"/,
|
|||
|
|
`avatar: "${newAvatars['袁嘉宇']}"`
|
|||
|
|
);
|
|||
|
|
}
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
// 更新classRanking中的头像
|
|||
|
|
for (const [name, url] of Object.entries(newAvatars)) {
|
|||
|
|
// 使用更精确的正则表达式来匹配每个学生的数据块
|
|||
|
|
const namePattern = new RegExp(
|
|||
|
|
`(name|studentName):\\s*"${name}"[\\s\\S]*?avatar:\\s*"[^"]+"`,
|
|||
|
|
'g'
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
mockDataContent = mockDataContent.replace(namePattern, (match) => {
|
|||
|
|
return match.replace(/avatar:\s*"[^"]+"/, `avatar: "${url}"`);
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 同样需要更新ClassRankModal组件中的头像映射
|
|||
|
|
const modalPath = './src/components/ClassRankModal/index.jsx';
|
|||
|
|
let modalContent = fs.readFileSync(modalPath, 'utf-8');
|
|||
|
|
|
|||
|
|
// 备份ClassRankModal
|
|||
|
|
const modalBackup = `${modalPath}.backup_avatars_${new Date().toISOString().replace(/[:.]/g, '-')}`;
|
|||
|
|
fs.writeFileSync(modalBackup, modalContent);
|
|||
|
|
|
|||
|
|
// 更新ClassRankModal中的头像映射
|
|||
|
|
for (const [name, url] of Object.entries(newAvatars)) {
|
|||
|
|
const casePattern = new RegExp(
|
|||
|
|
`case\\s*"${name}":[\\s\\S]*?avatarUrl\\s*=\\s*"[^"]+"`,
|
|||
|
|
'g'
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
modalContent = modalContent.replace(casePattern, (match) => {
|
|||
|
|
return match.replace(/avatarUrl\s*=\s*"[^"]+"/, `avatarUrl = "${url}"`);
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 写回文件
|
|||
|
|
fs.writeFileSync(mockDataPath, mockDataContent);
|
|||
|
|
fs.writeFileSync(modalPath, modalContent);
|
|||
|
|
|
|||
|
|
console.log('✅ 头像更新完成!');
|
|||
|
|
console.log('\n更新的头像:');
|
|||
|
|
console.log('- 袁嘉宇(个人信息): 新头像');
|
|||
|
|
console.log('- 许思涵(第1名): 新头像');
|
|||
|
|
console.log('- 沈子墨(第2名): 新头像');
|
|||
|
|
console.log('- 冯欣怡(第3名): 新头像');
|