From 5b382a124a7f7cc9359b4101e22a4a2d7063fb3c Mon Sep 17 00:00:00 2001 From: xy <10816187@qq.com> Date: Wed, 27 Nov 2024 15:25:57 +0800 Subject: [PATCH] =?UTF-8?q?refactor=EF=BC=9A=E6=9B=BF=E6=8D=A2=E8=87=AA?= =?UTF-8?q?=E5=A2=9Eid=E4=B8=BAcuid?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- admin/src/api/auth/index.ts | 2 +- admin/src/api/menu/index.ts | 2 +- admin/src/api/permission/index.ts | 4 +- admin/src/api/role/index.ts | 2 +- admin/src/api/user/index.ts | 2 +- admin/src/routes.ts | 16 +++-- admin/src/store/modules/user.ts | 6 +- .../migrations/20241026052827_/migration.sql | 2 - .../migration.sql | 63 +++++++++++------ server/prisma/schema.prisma | 70 ++++++++++++------- server/prisma/seed.ts | 6 +- .../modules/system/auth/auth.controller.ts | 4 +- .../src/modules/system/auth/auth.service.ts | 4 +- .../system/auth/dto/role-permission.dto.ts | 6 +- .../modules/system/auth/dto/user-role.dto.ts | 6 +- .../src/modules/system/files/files.service.ts | 2 +- .../system/menu/dto/create-menu.dto.ts | 4 +- .../modules/system/menu/menu.controller.ts | 4 +- .../src/modules/system/menu/menu.service.ts | 25 ++++--- .../system/permission/dto/grant-menu.dto.ts | 6 +- .../permission/permission.controller.ts | 4 +- .../system/permission/permission.service.ts | 4 +- .../modules/system/role/role.controller.ts | 4 +- .../src/modules/system/role/role.service.ts | 4 +- .../system/user/dto/create-user.dto.ts | 5 +- .../modules/system/user/user.controller.ts | 8 +-- .../src/modules/system/user/user.service.ts | 10 +-- 27 files changed, 161 insertions(+), 114 deletions(-) delete mode 100644 server/prisma/migrations/20241026052827_/migration.sql rename server/prisma/migrations/{20241026034430_ => 20241127070156_init}/migration.sql (62%) diff --git a/admin/src/api/auth/index.ts b/admin/src/api/auth/index.ts index 5e2dbf1..cc2b684 100644 --- a/admin/src/api/auth/index.ts +++ b/admin/src/api/auth/index.ts @@ -9,6 +9,6 @@ export function login(data: LoginData) { } -export function grantUserRoles(userId: number, data) { +export function grantUserRoles(userId: string, data) { return request.post('/auth/userRole/' + userId,data); } diff --git a/admin/src/api/menu/index.ts b/admin/src/api/menu/index.ts index b2db098..7ea5e6e 100644 --- a/admin/src/api/menu/index.ts +++ b/admin/src/api/menu/index.ts @@ -16,6 +16,6 @@ export function updateMenu(data) { return request.patch('/menu/' + data.id, data); } -export function deleteMenu(id: number) { +export function deleteMenu(id: string) { return request.delete('/menu/' + id); } diff --git a/admin/src/api/permission/index.ts b/admin/src/api/permission/index.ts index 78fab1d..c852fc5 100644 --- a/admin/src/api/permission/index.ts +++ b/admin/src/api/permission/index.ts @@ -1,9 +1,9 @@ import request from '@/utils/request'; -export function grantPermission(id: number, menuIds: number[]) { +export function grantPermission(id: string, menuIds: string[]) { return request.patch('/permission/' + id, { menuIds }); } -export function getRoleMenuIds(id: number) { +export function getRoleMenuIds(id: string) { return request.get('/permission/' + id + '/menu'); } diff --git a/admin/src/api/role/index.ts b/admin/src/api/role/index.ts index 8febc65..a7ea3fd 100644 --- a/admin/src/api/role/index.ts +++ b/admin/src/api/role/index.ts @@ -16,6 +16,6 @@ export function updateRole(data) { return request.patch('/role/' + data.id, data); } -export function deleteRole(id: number) { +export function deleteRole(id: string) { return request.delete('/role/' + id); } diff --git a/admin/src/api/user/index.ts b/admin/src/api/user/index.ts index 372bb8d..7151ec2 100644 --- a/admin/src/api/user/index.ts +++ b/admin/src/api/user/index.ts @@ -31,6 +31,6 @@ export function updateUser(data) { /** * 删除用户 * */ -export function deleteUser(id: number) { +export function deleteUser(id: string) { return request.delete('/user/' + id); } diff --git a/admin/src/routes.ts b/admin/src/routes.ts index d88cfc6..85a88d5 100644 --- a/admin/src/routes.ts +++ b/admin/src/routes.ts @@ -12,16 +12,20 @@ export type IRoute = AuthParams & { icon?: string }; -const generatorMenu = (data, parentId = 0) => { +const generatorMenu = (data, parentId?:string) => { const menu = []; for (const item of data) { item.key = item.url; - if (item.parentId === parentId) { - const children = generatorMenu(data, item.id); - if (children.length) { - item.children = children; - } + if(!parentId){ menu.push(item); + }else{ + if (item.parentId === parentId) { + const children = generatorMenu(data, item.id); + if (children.length) { + item.children = children; + } + menu.push(item); + } } } return menu; diff --git a/admin/src/store/modules/user.ts b/admin/src/store/modules/user.ts index 6782b15..09896a1 100644 --- a/admin/src/store/modules/user.ts +++ b/admin/src/store/modules/user.ts @@ -46,13 +46,17 @@ export const createUserStore: StateCreator = (set) => ({ }, logout: async () => { localStorage.removeItem('accessToken'); - window.location.href = '/login'; + set({ userInfo: { permissions: [], menus:[] } }); + + if (location.pathname !== '/login') { + window.location.href = '/login'; + } } }); diff --git a/server/prisma/migrations/20241026052827_/migration.sql b/server/prisma/migrations/20241026052827_/migration.sql deleted file mode 100644 index 7f6b665..0000000 --- a/server/prisma/migrations/20241026052827_/migration.sql +++ /dev/null @@ -1,2 +0,0 @@ --- AlterTable -ALTER TABLE "sys_menu" ADD COLUMN "sort" INTEGER NOT NULL DEFAULT 0; diff --git a/server/prisma/migrations/20241026034430_/migration.sql b/server/prisma/migrations/20241127070156_init/migration.sql similarity index 62% rename from server/prisma/migrations/20241026034430_/migration.sql rename to server/prisma/migrations/20241127070156_init/migration.sql index f75e0c5..f1712ec 100644 --- a/server/prisma/migrations/20241026034430_/migration.sql +++ b/server/prisma/migrations/20241127070156_init/migration.sql @@ -1,22 +1,24 @@ -- CreateTable CREATE TABLE "sys_user" ( - "id" SERIAL NOT NULL, + "id" TEXT NOT NULL, + "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updated_at" TIMESTAMP(3) NOT NULL, "name" TEXT, "account" TEXT NOT NULL, "password" TEXT NOT NULL, "password_salt" TEXT NOT NULL, "status" SMALLINT NOT NULL DEFAULT 0, - "avatar_id" INTEGER, + "avatar_id" TEXT, "gender" SMALLINT NOT NULL DEFAULT 0, - "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updated_at" TIMESTAMP(3) NOT NULL, CONSTRAINT "sys_user_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "sys_role" ( - "id" SERIAL NOT NULL, + "id" TEXT NOT NULL, + "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updated_at" TIMESTAMP(3) NOT NULL, "code" TEXT NOT NULL, "name" TEXT NOT NULL, "status" SMALLINT NOT NULL DEFAULT 0, @@ -26,26 +28,31 @@ CREATE TABLE "sys_role" ( -- CreateTable CREATE TABLE "sys_user_role" ( - "id" SERIAL NOT NULL, - "user_id" INTEGER NOT NULL, - "role_id" INTEGER NOT NULL, + "id" TEXT NOT NULL, + "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updated_at" TIMESTAMP(3) NOT NULL, + "user_id" TEXT NOT NULL, + "role_id" TEXT NOT NULL, CONSTRAINT "sys_user_role_pkey" PRIMARY KEY ("id") ); -- CreateTable -CREATE TABLE "files" ( - "id" SERIAL NOT NULL, +CREATE TABLE "file" ( + "id" TEXT NOT NULL, + "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updated_at" TIMESTAMP(3) NOT NULL, "name" TEXT NOT NULL, "path" TEXT NOT NULL, - "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - CONSTRAINT "files_pkey" PRIMARY KEY ("id") + CONSTRAINT "file_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "sys_permission" ( - "id" SERIAL NOT NULL, + "id" TEXT NOT NULL, + "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updated_at" TIMESTAMP(3) NOT NULL, "type" INTEGER NOT NULL, CONSTRAINT "sys_permission_pkey" PRIMARY KEY ("id") @@ -53,37 +60,49 @@ CREATE TABLE "sys_permission" ( -- CreateTable CREATE TABLE "sys_menu" ( - "id" SERIAL NOT NULL, + "id" TEXT NOT NULL, + "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updated_at" TIMESTAMP(3) NOT NULL, "name" TEXT NOT NULL, "url" TEXT NOT NULL, - "parent_id" INTEGER NOT NULL DEFAULT 0, + "parent_id" TEXT, + "sort" INTEGER NOT NULL DEFAULT 0, CONSTRAINT "sys_menu_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "sys_menu_permission" ( - "id" SERIAL NOT NULL, - "menu_id" INTEGER NOT NULL, - "permission_id" INTEGER NOT NULL, + "id" TEXT NOT NULL, + "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updated_at" TIMESTAMP(3) NOT NULL, + "menu_id" TEXT NOT NULL, + "permission_id" TEXT NOT NULL, CONSTRAINT "sys_menu_permission_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "sys_role_permission" ( - "id" SERIAL NOT NULL, - "role_id" INTEGER NOT NULL, - "permission_id" INTEGER NOT NULL, + "id" TEXT NOT NULL, + "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updated_at" TIMESTAMP(3) NOT NULL, + "role_id" TEXT NOT NULL, + "permission_id" TEXT NOT NULL, CONSTRAINT "sys_role_permission_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "sys_config" ( + "id" TEXT NOT NULL, + "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updated_at" TIMESTAMP(3) NOT NULL, "key" TEXT NOT NULL, "value" TEXT NOT NULL, - "remark" TEXT + "remark" TEXT, + + CONSTRAINT "sys_config_pkey" PRIMARY KEY ("id") ); -- CreateIndex diff --git a/server/prisma/schema.prisma b/server/prisma/schema.prisma index 3ad3915..26471d1 100644 --- a/server/prisma/schema.prisma +++ b/server/prisma/schema.prisma @@ -13,17 +13,17 @@ datasource db { // 系统用户表 model SysUser { - id Int @id @default(autoincrement()) /// 主键id + id String @id @default(cuid()) /// 主键id + createdAt DateTime @default(now()) @map("created_at") /// 创建时间 + updatedAt DateTime @updatedAt @map("updated_at") /// 修改时间 name String? /// 用户姓名 account String @unique /// 账户 password String /// 密码 passwordSalt String @map("password_salt") /// 密码盐 status Int @default(0) @db.SmallInt /// 用户状态 - avatarId Int? @map("avatar_id") /// 用户头像id - avatar Files? @relation(fields: [avatarId], references: [id]) + avatarId String? @map("avatar_id") /// 用户头像id + avatar File? @relation(fields: [avatarId], references: [id]) gender Int @default(0) @db.SmallInt /// 用户性别 0:女 1:男 2:未知 - createdAt DateTime @default(now()) @map("created_at") /// 创建时间 - updatedAt DateTime @updatedAt @map("updated_at") /// 修改时间 userRole SysUserRole[] @@index([avatarId]) @@ -32,7 +32,9 @@ model SysUser { // 系统角色表 model SysRole { - id Int @id @default(autoincrement()) + id String @id @default(cuid()) /// 主键id + createdAt DateTime @default(now()) @map("created_at") /// 创建时间 + updatedAt DateTime @updatedAt @map("updated_at") /// 修改时间 code String @unique name String status Int @default(0) @db.SmallInt /// 角色状态 @@ -44,11 +46,13 @@ model SysRole { // 用户角色关联表 model SysUserRole { - id Int @id @default(autoincrement()) - userId Int @map("user_id") - roleId Int @map("role_id") - user SysUser @relation(fields: [userId], references: [id], onDelete: Cascade) - role SysRole @relation(fields: [roleId], references: [id], onDelete: Cascade) + id String @id @default(cuid()) /// 主键id + createdAt DateTime @default(now()) @map("created_at") /// 创建时间 + updatedAt DateTime @updatedAt @map("updated_at") /// 修改时间 + userId String @map("user_id") + roleId String @map("role_id") + user SysUser @relation(fields: [userId], references: [id], onDelete: Cascade) + role SysRole @relation(fields: [roleId], references: [id], onDelete: Cascade) @@index([userId]) @@index([roleId]) @@ -56,19 +60,22 @@ model SysUserRole { } // 文件表 -model Files { - id Int @id @default(autoincrement()) +model File { + id String @id @default(cuid()) /// 主键id + createdAt DateTime @default(now()) @map("created_at") /// 创建时间 + updatedAt DateTime @updatedAt @map("updated_at") /// 修改时间 name String /// 文件名称 path String - createdAt DateTime @default(now()) @map("created_at") /// 创建时间 sysUser SysUser[] - @@map("files") + @@map("file") } // 权限表 model SysPermission { - id Int @id @default(autoincrement()) + id String @id @default(cuid()) /// 主键id + createdAt DateTime @default(now()) @map("created_at") /// 创建时间 + updatedAt DateTime @updatedAt @map("updated_at") /// 修改时间 type Int sysRolePermission SysRolePermission[] sysMenuPermission SysMenuPermission[] @@ -78,10 +85,12 @@ model SysPermission { // 系统菜单表 model SysMenu { - id Int @id @default(autoincrement()) + id String @id @default(cuid()) /// 主键id + createdAt DateTime @default(now()) @map("created_at") /// 创建时间 + updatedAt DateTime @updatedAt @map("updated_at") /// 修改时间 name String url String - parentId Int @default(0) @map("parent_id") + parentId String? @map("parent_id") sort Int @default(0) sysMenuPermission SysMenuPermission[] @@ -90,9 +99,11 @@ model SysMenu { // 菜单权限关联表 model SysMenuPermission { - id Int @id @default(autoincrement()) - menuId Int @map("menu_id") - permissionId Int @map("permission_id") + id String @id @default(cuid()) /// 主键id + createdAt DateTime @default(now()) @map("created_at") /// 创建时间 + updatedAt DateTime @updatedAt @map("updated_at") /// 修改时间 + menuId String @map("menu_id") + permissionId String @map("permission_id") menu SysMenu @relation(fields: [menuId], references: [id], onDelete: Cascade) permission SysPermission @relation(fields: [permissionId], references: [id], onDelete: Cascade) @@ -103,9 +114,11 @@ model SysMenuPermission { // 角色权限关联表 model SysRolePermission { - id Int @id @default(autoincrement()) - roleId Int @map("role_id") - permissionId Int @map("permission_id") + id String @id @default(cuid()) /// 主键id + createdAt DateTime @default(now()) @map("created_at") /// 创建时间 + updatedAt DateTime @updatedAt @map("updated_at") /// 修改时间 + roleId String @map("role_id") + permissionId String @map("permission_id") role SysRole @relation(fields: [roleId], references: [id], onDelete: Cascade) permission SysPermission @relation(fields: [permissionId], references: [id], onDelete: Cascade) @@ -116,9 +129,12 @@ model SysRolePermission { // 系统配置 model SysConfig { - key String @unique - value String - remark String? + id String @id @default(cuid()) /// 主键id + createdAt DateTime @default(now()) @map("created_at") /// 创建时间 + updatedAt DateTime @updatedAt @map("updated_at") /// 修改时间 + key String @unique + value String + remark String? @@map("sys_config") } diff --git a/server/prisma/seed.ts b/server/prisma/seed.ts index d9edf23..7ef803f 100644 --- a/server/prisma/seed.ts +++ b/server/prisma/seed.ts @@ -18,9 +18,9 @@ async function main() { }, }); const menus = [ - { name: '用户管理', url: 'user', parentId: 0 }, - { name: '角色管理', url: 'role', parentId: 0 }, - { name: '菜单管理', url: 'menu', parentId: 0 }, + { name: '用户管理', url: 'user' }, + { name: '角色管理', url: 'role' }, + { name: '菜单管理', url: 'menu' }, ]; for (const menu of menus) { diff --git a/server/src/modules/system/auth/auth.controller.ts b/server/src/modules/system/auth/auth.controller.ts index 6ca6f87..d09b96d 100644 --- a/server/src/modules/system/auth/auth.controller.ts +++ b/server/src/modules/system/auth/auth.controller.ts @@ -19,12 +19,12 @@ export class AuthController { // 授权用户角色 @Post('userRole/:id') grantUserRole(@Param('id') id: string, @Body() dto: UserRoleDto) { - return this.authService.grantUserRole(+id, dto); + return this.authService.grantUserRole(id, dto); } // 授权角色权限 @Post('rolePermission/:id') grantRolePermission(@Param('id') id: string, @Body() dto: RolePermissionDto) { - return this.authService.grantRolePermission(+id, dto); + return this.authService.grantRolePermission(id, dto); } } diff --git a/server/src/modules/system/auth/auth.service.ts b/server/src/modules/system/auth/auth.service.ts index 09b3d7a..94d3d2c 100644 --- a/server/src/modules/system/auth/auth.service.ts +++ b/server/src/modules/system/auth/auth.service.ts @@ -62,7 +62,7 @@ export class AuthService { return { accessToken }; } - async grantUserRole(id: number, { roleIds }: UserRoleDto) { + async grantUserRole(id: string, { roleIds }: UserRoleDto) { const user = await this.prisma.sysUser.findUnique({ where: { id }, }); @@ -96,7 +96,7 @@ export class AuthService { }); } - async grantRolePermission(id: number, { permissionIds }: RolePermissionDto) { + async grantRolePermission(id: string, { permissionIds }: RolePermissionDto) { const role = await this.prisma.sysRole.findUnique({ where: { id }, }); diff --git a/server/src/modules/system/auth/dto/role-permission.dto.ts b/server/src/modules/system/auth/dto/role-permission.dto.ts index 3d15aa8..0034a7a 100644 --- a/server/src/modules/system/auth/dto/role-permission.dto.ts +++ b/server/src/modules/system/auth/dto/role-permission.dto.ts @@ -1,8 +1,8 @@ -import { ArrayUnique, IsInt, IsNotEmpty } from 'class-validator'; +import { ArrayUnique, IsNotEmpty, IsString } from 'class-validator'; export class RolePermissionDto { @IsNotEmpty() - @IsInt({ each: true }) + @IsString({ each: true }) @ArrayUnique() - permissionIds: number[]; + permissionIds: string[]; } diff --git a/server/src/modules/system/auth/dto/user-role.dto.ts b/server/src/modules/system/auth/dto/user-role.dto.ts index dcfcdd7..1cf8a2f 100644 --- a/server/src/modules/system/auth/dto/user-role.dto.ts +++ b/server/src/modules/system/auth/dto/user-role.dto.ts @@ -1,8 +1,8 @@ -import { ArrayUnique, IsInt, IsNotEmpty } from 'class-validator'; +import { ArrayUnique, IsNotEmpty, IsString } from 'class-validator'; export class UserRoleDto { @IsNotEmpty() - @IsInt({ each: true }) + @IsString({ each: true }) @ArrayUnique() - roleIds: number[]; + roleIds: string[]; } diff --git a/server/src/modules/system/files/files.service.ts b/server/src/modules/system/files/files.service.ts index ed8c7b2..00eee21 100644 --- a/server/src/modules/system/files/files.service.ts +++ b/server/src/modules/system/files/files.service.ts @@ -19,7 +19,7 @@ export class FilesService { const filePath = await this.minioService.uploadFile(file, fileName); - const res = await this.prisma.files.create({ + const res = await this.prisma.file.create({ data: { name: fileName, path: filePath }, }); diff --git a/server/src/modules/system/menu/dto/create-menu.dto.ts b/server/src/modules/system/menu/dto/create-menu.dto.ts index 1ec69ef..0f130aa 100644 --- a/server/src/modules/system/menu/dto/create-menu.dto.ts +++ b/server/src/modules/system/menu/dto/create-menu.dto.ts @@ -10,8 +10,8 @@ export class CreateMenuDto { url: string; @IsOptional() - @IsInt() - parentId?: number; + @IsString() + parentId?: string; @IsOptional() @IsInt() diff --git a/server/src/modules/system/menu/menu.controller.ts b/server/src/modules/system/menu/menu.controller.ts index 2f6629a..bcde46d 100644 --- a/server/src/modules/system/menu/menu.controller.ts +++ b/server/src/modules/system/menu/menu.controller.ts @@ -32,11 +32,11 @@ export class MenuController { @Patch(':id') update(@Param('id') id: string, @Body() updateMenuDto: UpdateMenuDto) { - return this.menuService.update(+id, updateMenuDto); + return this.menuService.update(id, updateMenuDto); } @Delete(':id') - remove(@Param('id') id: number) { + remove(@Param('id') id: string) { return this.menuService.remove(id); } } diff --git a/server/src/modules/system/menu/menu.service.ts b/server/src/modules/system/menu/menu.service.ts index 811a504..47c4c22 100644 --- a/server/src/modules/system/menu/menu.service.ts +++ b/server/src/modules/system/menu/menu.service.ts @@ -9,7 +9,7 @@ import { PermissionType } from '@/common/enum'; export class MenuService { constructor(private readonly prisma: PrismaService) {} - findOne(params: { id?: number; excludeId?: number }) { + findOne(params: { id?: string; excludeId?: string }) { const { id, excludeId } = params; return this.prisma.sysMenu.findFirst({ where: { @@ -19,7 +19,7 @@ export class MenuService { }); } - findOneById(id: number) { + findOneById(id: string) { return this.prisma.sysMenu.findUnique({ where: { id } }); } @@ -35,15 +35,20 @@ export class MenuService { }); } - generatorMenu(data, parentId = 0) { + generatorMenu(data, parentId?: string) { const menu = []; for (const item of data) { - if (item.parentId === parentId) { - const children = this.generatorMenu(data, item.id); - if (children.length) { - item.children = children; - } + // 不存在父id 代表是顶级菜单 + if (!parentId) { menu.push(item); + } else { + if (item.parentId === parentId) { + const children = this.generatorMenu(data, item.id); + if (children.length) { + item.children = children; + } + menu.push(item); + } } } return menu; @@ -69,7 +74,7 @@ export class MenuService { return this.prisma.sysMenu.findMany(query); } - async update(id: number, data: UpdateMenuDto) { + async update(id: string, data: UpdateMenuDto) { const doesExists = await this.findOne({ id }); if (!doesExists) { throw new HttpException('菜单不存在!', HttpStatus.NOT_FOUND); @@ -85,7 +90,7 @@ export class MenuService { await this.prisma.sysMenu.update({ data, where: { id } }); } - async remove(menuId: number) { + async remove(menuId: string) { const doesExists = await this.findOneById(menuId); if (!doesExists) { throw new HttpException('菜单不存在!', HttpStatus.NOT_FOUND); diff --git a/server/src/modules/system/permission/dto/grant-menu.dto.ts b/server/src/modules/system/permission/dto/grant-menu.dto.ts index f852589..68d4d57 100644 --- a/server/src/modules/system/permission/dto/grant-menu.dto.ts +++ b/server/src/modules/system/permission/dto/grant-menu.dto.ts @@ -1,6 +1,6 @@ -import { IsNumber } from 'class-validator'; +import { IsString } from 'class-validator'; export class GrantMenuDto { - @IsNumber({}, { each: true }) - menuIds: number[]; + @IsString({ each: true }) + menuIds: string[]; } diff --git a/server/src/modules/system/permission/permission.controller.ts b/server/src/modules/system/permission/permission.controller.ts index b1d20cc..ba34adf 100644 --- a/server/src/modules/system/permission/permission.controller.ts +++ b/server/src/modules/system/permission/permission.controller.ts @@ -8,12 +8,12 @@ export class PermissionController { constructor(private readonly permissionService: PermissionService) {} @Get(':id/menu') - getMenu(@Param('id') id: number) { + getMenu(@Param('id') id: string) { return this.permissionService.getMenu(id); } @Patch(':id') - grantMenu(@Param('id') id: number, @Body() dto: GrantMenuDto) { + grantMenu(@Param('id') id: string, @Body() dto: GrantMenuDto) { return this.permissionService.grantMenu(id, dto); } } diff --git a/server/src/modules/system/permission/permission.service.ts b/server/src/modules/system/permission/permission.service.ts index c158b51..00d0871 100644 --- a/server/src/modules/system/permission/permission.service.ts +++ b/server/src/modules/system/permission/permission.service.ts @@ -6,7 +6,7 @@ import { PrismaService } from '@/prisma/prisma.service'; export class PermissionService { constructor(private readonly prisma: PrismaService) {} - async getMenu(id: number) { + async getMenu(id: string) { const menuIds = await this.prisma.sysMenuPermission.findMany({ select: { menuId: true, @@ -23,7 +23,7 @@ export class PermissionService { return menuIds.map((item) => item.menuId); } - async grantMenu(id: number, { menuIds }: GrantMenuDto) { + async grantMenu(id: string, { menuIds }: GrantMenuDto) { await this.prisma.$transaction(async (prisma) => { // 删除角色对应的权限 await prisma.sysRolePermission.deleteMany({ diff --git a/server/src/modules/system/role/role.controller.ts b/server/src/modules/system/role/role.controller.ts index e1a5ea9..528a49c 100644 --- a/server/src/modules/system/role/role.controller.ts +++ b/server/src/modules/system/role/role.controller.ts @@ -34,11 +34,11 @@ export class RoleController { @Patch(':id') update(@Param('id') id: string, @Body() dto: UpdateRoleDto) { - return this.roleService.update(+id, dto); + return this.roleService.update(id, dto); } @Delete(':id') remove(@Param('id') id: string) { - return this.roleService.remove(+id); + return this.roleService.remove(id); } } diff --git a/server/src/modules/system/role/role.service.ts b/server/src/modules/system/role/role.service.ts index f9baf54..2a24f7a 100644 --- a/server/src/modules/system/role/role.service.ts +++ b/server/src/modules/system/role/role.service.ts @@ -60,7 +60,7 @@ export class RoleService { }); } - async update(id: number, data: UpdateRoleDto) { + async update(id: string, data: UpdateRoleDto) { const role = await this.findOne({ id }); if (!role) throw new HttpException('角色信息不存在!', HttpStatus.NOT_FOUND); @@ -71,7 +71,7 @@ export class RoleService { }); } - async remove(id: number) { + async remove(id: string) { const role = await this.findOne({ id }); if (!role) throw new HttpException('角色信息不存在!', HttpStatus.NOT_FOUND); diff --git a/server/src/modules/system/user/dto/create-user.dto.ts b/server/src/modules/system/user/dto/create-user.dto.ts index 5d2640b..0b438c4 100644 --- a/server/src/modules/system/user/dto/create-user.dto.ts +++ b/server/src/modules/system/user/dto/create-user.dto.ts @@ -2,6 +2,7 @@ import { IsNotEmpty, IsNumber, IsOptional, + IsString, MaxLength, MinLength, } from 'class-validator'; @@ -17,8 +18,8 @@ export class CreateUserDto { account: string; @IsOptional() - @IsNumber() - avatarId: number; + @IsString() + avatarId: string; @IsNotEmpty() @IsNumber() diff --git a/server/src/modules/system/user/user.controller.ts b/server/src/modules/system/user/user.controller.ts index 7ef8085..b475798 100644 --- a/server/src/modules/system/user/user.controller.ts +++ b/server/src/modules/system/user/user.controller.ts @@ -37,22 +37,22 @@ export class UserController { } @Get(':id') - findOneById(@Param('id') id: number) { + findOneById(@Param('id') id: string) { return this.userService.findOneById(id); } @Patch(':id/password') updatePassword(@Param('id') id: string, @Body() dto: UpdatePasswordDto) { - return this.userService.updatePassword(+id, dto); + return this.userService.updatePassword(id, dto); } @Patch(':id') update(@Param('id') id: string, @Body() dto: UpdateUserDto) { - return this.userService.update(+id, dto); + return this.userService.update(id, dto); } @Delete(':id') remove(@Param('id') id: string) { - return this.userService.remove(+id); + return this.userService.remove(id); } } diff --git a/server/src/modules/system/user/user.service.ts b/server/src/modules/system/user/user.service.ts index a04c792..8cd7e12 100644 --- a/server/src/modules/system/user/user.service.ts +++ b/server/src/modules/system/user/user.service.ts @@ -91,7 +91,7 @@ export class UserService { }; } - async findOneById(id: number) { + async findOneById(id: string) { return this.prisma.sysUser.findUnique({ select: { id: true, @@ -112,7 +112,7 @@ export class UserService { }); } - async getUserInfo(id: number, isAdmin: boolean) { + async getUserInfo(id: string, isAdmin: boolean) { const user = await this.prisma.sysUser.findUnique({ select: { name: true, @@ -154,7 +154,7 @@ export class UserService { }; } - async update(id: number, data: UpdateUserDto) { + async update(id: string, data: UpdateUserDto) { const user = await this.findOne({ id }); if (!user) throw new HttpException('修改失败,用户不存在!', HttpStatus.NOT_FOUND); @@ -178,7 +178,7 @@ export class UserService { } async updatePassword( - id: number, + id: string, { password, newPassword }: UpdatePasswordDto, ) { const user = await this.findOne({ id }); @@ -203,7 +203,7 @@ export class UserService { }); } - async remove(id: number) { + async remove(id: string) { const user = await this.findOne({ id }); if (!user)