import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn, } from 'typeorm'; import { UserRole } from '../../user/user-role.enum'; /** * 角色表 * is_system = true: 系统内置角色(SUPER_ADMIN/TENANT_ADMIN/USER),不可删除 * tenant_id = null: 系统级角色(所有租户可见) * tenant_id != null: 租户自定义角色 */ @Entity('roles') export class Role { @PrimaryGeneratedColumn('uuid') id: string; @Column({ unique: true, length: 50 }) name: string; @Column({ type: 'text', nullable: true }) description: string; /** 是否为系统内置角色 */ @Column({ name: 'is_system', default: false }) isSystem: boolean; /** 关联的内置角色 enum(仅 is_system=true 时有值) */ @Column({ name: 'base_role', type: 'simple-enum', enum: UserRole, nullable: true, }) baseRole: UserRole | null; /** 所属租户:null=系统级,非 null=租户自定义 */ @Column({ name: 'tenant_id', nullable: true, type: 'text' }) tenantId: string | null; @CreateDateColumn({ name: 'created_at' }) createdAt: Date; @UpdateDateColumn({ name: 'updated_at' }) updatedAt: Date; }