Files
online_sys/frontend_财经商贸/updateLuoHaoyuProfile.js

150 lines
4.9 KiB
JavaScript
Raw Permalink Normal View History

import fs from 'fs';
import path from 'path';
import { fileURLToPath } from 'url';
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
// 读取财经商贸个人档案数据
const financeProfileData = JSON.parse(
fs.readFileSync(path.join(__dirname, '网页未导入数据/财经商贸产业/财经商贸个人档案.json'), 'utf-8')
);
// 读取头像列表
const avatarList = JSON.parse(
fs.readFileSync(path.join(__dirname, '网页未导入数据/头像列表.json'), 'utf-8')
);
// 找到罗浩宇的数据
const luoHaoyu = financeProfileData.find(s => s["学员名称"] === "罗浩宇");
if (!luoHaoyu) {
console.error("未找到罗浩宇的数据");
process.exit(1);
}
// 为罗浩宇选择一个专业的头像选择第25个
const luoHaoyuAvatar = avatarList[24].url;
console.log("罗浩宇的数据:");
console.log("- 学号:", luoHaoyu["学号"]);
console.log("- 学校:", luoHaoyu["学校名称"]);
console.log("- 专业:", luoHaoyu["专业名称"]);
console.log("- 学分:", luoHaoyu["学分"]);
console.log("- 排名:", luoHaoyu["班级排名"]);
console.log("- MBTI", luoHaoyu["MBTI"]);
console.log("- 垂直方向:", luoHaoyu["垂直方向"]);
console.log("- 新头像:", luoHaoyuAvatar);
// 读取mockData.js文件
const mockDataPath = path.join(__dirname, 'src/data/mockData.js');
let mockDataContent = fs.readFileSync(mockDataPath, 'utf-8');
// 备份原文件
const backupPath = path.join(__dirname, 'src/data', `mockData.js.backup_${new Date().toISOString().replace(/[:.]/g, '-')}`);
fs.copyFileSync(mockDataPath, backupPath);
console.log(`\n备份已创建: ${backupPath}`);
// 1. 更新user对象侧边栏显示
const userObjectStr = ` user: {
name: "罗浩宇",
avatar: "${luoHaoyuAvatar}",
role: "学生",
studentId: "${luoHaoyu["学号"]}",
school: "${luoHaoyu["学校名称"]}",
major: "${luoHaoyu["专业名称"]}",
credits: ${luoHaoyu["学分"]},
classRank: ${luoHaoyu["班级排名"]},
mbti: "${luoHaoyu["MBTI"]}",
verticalDirection: "${luoHaoyu["垂直方向"]}",
industry: "财经商贸"
},`;
// 替换user对象
mockDataContent = mockDataContent.replace(
/user:\s*\{[^}]*\},/s,
userObjectStr
);
// 2. 更新profile对象个人基本信息
const profileObjectStr = ` profile: {
name: "罗浩宇",
gender: "男",
studentId: "${luoHaoyu["学号"]}",
avatar: "${luoHaoyuAvatar}",
school: "${luoHaoyu["学校名称"]}",
major: "${luoHaoyu["专业名称"]}",
courses: ["复合能力培养", "财经商贸方向", "电子商务", "数字营销"],
className: "财经商贸",
studyPhase: "复合能力培养",
badges: {
credits: ${luoHaoyu["学分"]},
classRank: ${luoHaoyu["班级排名"]},
mbti: "${luoHaoyu["MBTI"]}",
},`;
// 替换profile对象的开头部分
mockDataContent = mockDataContent.replace(
/profile:\s*\{[^}]*badges:\s*\{[^}]*\},/s,
profileObjectStr
);
// 3. 更新profileOverview中的studentInfo
const studentInfoPattern = /studentInfo:\s*\{[^}]*myRank:\s*\{[^}]*\},[^}]*\},/gs;
// 查找所有的studentInfo并替换
const studentInfoStr = ` studentInfo: {
name: "罗浩宇",
realName: "罗浩宇",
studentId: "${luoHaoyu["学号"]}",
studentNo: "${luoHaoyu["学号"]}",
avatar: "${luoHaoyuAvatar}",
school: "${luoHaoyu["学校名称"]}",
major: "${luoHaoyu["专业名称"]}",
className: "财经商贸班",
grade: "2023级",
studyPhase: "复合能力培养",
stageName: "${luoHaoyu["垂直方向"]}",
mbti: "${luoHaoyu["MBTI"]}",
mbtiType: "${luoHaoyu["MBTI"]}",
enrollmentDate: "2023-09-01",
expectedGraduation: "2026-06-30",
credits: ${luoHaoyu["学分"]},
gpa: 4.2,
classRank: ${luoHaoyu["班级排名"]},
totalStudents: 10,
myRank: {
rank: ${luoHaoyu["班级排名"]},
score: ${luoHaoyu["学分"]},
},
},`;
// 替换所有的studentInfo
mockDataContent = mockDataContent.replace(studentInfoPattern, studentInfoStr);
// 4. 更新排名数据中罗浩宇的头像
// 查找罗浩宇在topStudents和rankings中的记录并更新头像
const luoHaoyuPattern = new RegExp(
`("name":\\s*"罗浩宇"[^}]*?"avatar":\\s*)"[^"]*"`,
'g'
);
mockDataContent = mockDataContent.replace(luoHaoyuPattern, `$1"${luoHaoyuAvatar}"`);
// 同时处理studentName的情况
const luoHaoyuPattern2 = new RegExp(
`("studentName":\\s*"罗浩宇"[^}]*?"avatar":\\s*)"[^"]*"`,
'g'
);
mockDataContent = mockDataContent.replace(luoHaoyuPattern2, `$1"${luoHaoyuAvatar}"`);
// 写入更新后的文件
fs.writeFileSync(mockDataPath, mockDataContent, 'utf-8');
console.log('\n✅ 成功更新罗浩宇的个人信息');
console.log('更新了以下位置:');
console.log('- user对象侧边栏');
console.log('- profile对象个人基本信息');
console.log('- profileOverview.studentInfo个人档案');
console.log('- 班级排名中的头像');