47 lines
1.3 KiB
TypeScript
47 lines
1.3 KiB
TypeScript
|
|
import { PrismaClient } from '@prisma/client';
|
|||
|
|
|
|||
|
|
const prisma = new PrismaClient();
|
|||
|
|
|
|||
|
|
async function main() {
|
|||
|
|
console.log('🔧 修复重复的赛事活动菜单...\n');
|
|||
|
|
|
|||
|
|
// 查找原来的赛事活动菜单(在赛事管理下的,路径是 /contests/activities)
|
|||
|
|
const oldActivityMenu = await prisma.menu.findFirst({
|
|||
|
|
where: { path: '/contests/activities' }
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
if (oldActivityMenu) {
|
|||
|
|
// 把它改回 contest:read 权限,这样只有管理员能看到
|
|||
|
|
await prisma.menu.update({
|
|||
|
|
where: { id: oldActivityMenu.id },
|
|||
|
|
data: { permission: 'contest:read' }
|
|||
|
|
});
|
|||
|
|
console.log('✅ 原赛事活动菜单权限更新为 contest:read');
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 验证最终结果
|
|||
|
|
console.log('\n📋 最终菜单配置:');
|
|||
|
|
const menus = await prisma.menu.findMany({
|
|||
|
|
where: {
|
|||
|
|
OR: [
|
|||
|
|
{ path: '/contests/activities' },
|
|||
|
|
{ path: '/student-activities' },
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
select: { name: true, path: true, permission: true, parentId: true }
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
menus.forEach(m => {
|
|||
|
|
const type = m.parentId ? '(子菜单)' : '(一级菜单)';
|
|||
|
|
console.log(` - ${m.name} ${type}`);
|
|||
|
|
console.log(` 路径: ${m.path}`);
|
|||
|
|
console.log(` 权限: ${m.permission}`);
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
console.log('\n✅ 修复完成!');
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
main()
|
|||
|
|
.catch(console.error)
|
|||
|
|
.finally(() => prisma.$disconnect());
|