Răsfoiți Sursa

♻️ refactor(permission): add entity relationships and fix query condition

- add ManyToOne relationship between RolePermission and Role entities
- add ManyToOne relationship between RolePermission and Permission entities
- fix column name in where condition from rolePermission.roleId to rolePermission.role_id
- set unsigned: true for Role entity's primary key column

♻️ refactor(role): modify primary key definition

- set unsigned: true for Role entity's id column to ensure consistency with other tables
yourname 7 luni în urmă
părinte
comite
98bb50efe4

+ 9 - 1
src/server/modules/permissions/permission.entity.ts

@@ -1,5 +1,6 @@
-import { Entity, PrimaryGeneratedColumn, Column, OneToMany, CreateDateColumn, UpdateDateColumn } from 'typeorm';
+import { Entity, PrimaryGeneratedColumn, Column, OneToMany, ManyToOne, JoinColumn, CreateDateColumn, UpdateDateColumn } from 'typeorm';
 import { z } from '@hono/zod-openapi';
 import { z } from '@hono/zod-openapi';
+import { Role } from '@/server/modules/users/role.entity';
 
 
 export enum PermissionType {
 export enum PermissionType {
   MODULE = 'module',      // 模块权限
   MODULE = 'module',      // 模块权限
@@ -63,8 +64,15 @@ export class RolePermission {
   id!: number;
   id!: number;
 
 
   @Column({ name: 'role_id', type: 'int', unsigned: true, comment: '角色ID' })
   @Column({ name: 'role_id', type: 'int', unsigned: true, comment: '角色ID' })
+  @ManyToOne(() => Role)
+  @JoinColumn({ name: 'role_id' })
+  role!: Role;
   roleId!: number;
   roleId!: number;
 
 
+  @ManyToOne(() => Permission)
+  @JoinColumn({ name: 'permission_id' })
+  permission!: Permission;
+
   @Column({ name: 'permission_id', type: 'int', unsigned: true, comment: '权限ID' })
   @Column({ name: 'permission_id', type: 'int', unsigned: true, comment: '权限ID' })
   permissionId!: number;
   permissionId!: number;
 
 

+ 1 - 1
src/server/modules/permissions/permission.service.ts

@@ -55,7 +55,7 @@ export class PermissionService {
           'rolePermission',
           'rolePermission',
           'permission.id = rolePermission.permissionId'
           'permission.id = rolePermission.permissionId'
         )
         )
-        .where('rolePermission.roleId IN (:...roleIds)', { roleIds })
+        .where('rolePermission.role_id IN (:...roleIds)', { roleIds })
         .andWhere('permission.isActive = 1')
         .andWhere('permission.isActive = 1')
         .getMany();
         .getMany();
 
 

+ 1 - 1
src/server/modules/users/role.entity.ts

@@ -26,7 +26,7 @@ export const UpdateRoleDto = RoleSchema.partial();
 
 
 @Entity({ name: 'role' })
 @Entity({ name: 'role' })
 export class Role {
 export class Role {
-  @PrimaryGeneratedColumn()
+  @PrimaryGeneratedColumn({ unsigned: true })
   id!: number;
   id!: number;
 
 
   @Column({ type: 'varchar', length: 50, unique: true })
   @Column({ type: 'varchar', length: 50, unique: true })