library-picturebook-activity/backend/scripts/check-tenant-menus.ts
2026-01-09 18:14:35 +08:00

50 lines
1.4 KiB
TypeScript

import { PrismaClient } from '@prisma/client';
const prisma = new PrismaClient();
async function main() {
// 获取所有赛事活动相关菜单
const activityMenus = await prisma.menu.findMany({
where: { path: { startsWith: '/student-activities' } },
orderBy: { sort: 'asc' }
});
console.log('📋 赛事活动相关菜单:');
activityMenus.forEach(m => {
console.log(` ID: ${m.id} | ${m.name} | ${m.path}`);
});
// 获取租户1的菜单分配
console.log('\n📋 租户1的菜单分配:');
const tenantMenus = await prisma.tenantMenu.findMany({
where: { tenantId: 1 },
include: { menu: true }
});
const assignedMenuIds = tenantMenus.map(tm => tm.menuId);
// 检查哪些赛事活动菜单已分配
console.log('\n赛事活动菜单分配状态:');
activityMenus.forEach(m => {
const assigned = assignedMenuIds.includes(m.id);
console.log(` ${assigned ? '✅' : '❌'} ${m.name} (ID: ${m.id})`);
});
// 补充分配缺失的菜单
console.log('\n📝 补充分配缺失的菜单...');
for (const menu of activityMenus) {
if (!assignedMenuIds.includes(menu.id)) {
await prisma.tenantMenu.create({
data: { tenantId: 1, menuId: menu.id }
});
console.log(` ✅ 已分配: ${menu.name}`);
}
}
console.log('\n✅ 完成!');
}
main()
.catch(console.error)
.finally(() => prisma.$disconnect());