feat: 调整项目层级

This commit is contained in:
2024-11-27 14:30:20 +08:00
parent 5eb78c35c2
commit b02e2d2160
43 changed files with 17 additions and 12 deletions

View File

@@ -0,0 +1,45 @@
import { Injectable } from '@nestjs/common';
import { GrantMenuDto } from '@/modules/system/permission/dto/grant-menu.dto';
import { PrismaService } from '@/prisma/prisma.service';
@Injectable()
export class PermissionService {
constructor(private readonly prisma: PrismaService) {}
async getMenu(id: number) {
const menuIds = await this.prisma.sysMenuPermission.findMany({
select: {
menuId: true,
},
where: {
permission: {
sysRolePermission: {
some: { roleId: id },
},
},
},
});
return menuIds.map((item) => item.menuId);
}
async grantMenu(id: number, { menuIds }: GrantMenuDto) {
await this.prisma.$transaction(async (prisma) => {
// 删除角色对应的权限
await prisma.sysRolePermission.deleteMany({
where: { roleId: id },
});
// 通过菜单id 找出所有权限id
const rolePermIds = await prisma.sysMenuPermission.findMany({
select: { permissionId: true },
where: { menuId: { in: menuIds } },
});
// 根据权限id 关联菜单和权限
if (rolePermIds.length > 0) {
await prisma.sysRolePermission.createMany({
data: rolePermIds.map((item) => ({ ...item, roleId: id })),
});
}
});
}
}