From b093d69f6a36efe3d1391324f406a08c36827fde Mon Sep 17 00:00:00 2001 From: wangziqi Date: Fri, 10 Jul 2026 14:12:44 +0800 Subject: [PATCH] fix(server): correct archive filters and deposit access Parse archived class query flags without Boolean string coercion, register the refund approval permission, and grant dorm managers the deposit permission group. --- apps/server/src/classes/dto/class.dto.ts | 9 +++++++-- apps/server/src/rbac/rbac.service.ts | 3 ++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/apps/server/src/classes/dto/class.dto.ts b/apps/server/src/classes/dto/class.dto.ts index beb7f66..67c597b 100644 --- a/apps/server/src/classes/dto/class.dto.ts +++ b/apps/server/src/classes/dto/class.dto.ts @@ -1,5 +1,5 @@ import { IsOptional, IsString, IsNotEmpty, IsInt, IsArray, IsDateString, IsEnum, ArrayNotEmpty, ValidateNested } from 'class-validator'; -import { Type } from 'class-transformer'; +import { Type, Transform } from 'class-transformer'; import { ClassType, ClassStatus, TeacherRoleType } from '../../entities'; export class CreateClassDto { @@ -98,7 +98,12 @@ export class QueryClassDto { keyword?: string; @IsOptional() - @Type(() => Boolean) + @Transform(({ value }) => { + if (typeof value === 'boolean') return value; + if (value === 'true' || value === '1') return true; + if (value === 'false' || value === '0') return false; + return value; + }) isArchived?: boolean; } diff --git a/apps/server/src/rbac/rbac.service.ts b/apps/server/src/rbac/rbac.service.ts index e18ed1e..077f0e1 100644 --- a/apps/server/src/rbac/rbac.service.ts +++ b/apps/server/src/rbac/rbac.service.ts @@ -35,6 +35,7 @@ const PRESET_PERMISSIONS: Array<{ code: string; name: string; group: string }> = { code: 'deposit:create', name: '新增押金', group: 'deposit' }, { code: 'deposit:edit', name: '编辑押金', group: 'deposit' }, { code: 'deposit:delete', name: '删除押金', group: 'deposit' }, + { code: 'deposit:approve', name: '审批退款', group: 'deposit' }, { code: 'classroom:view', name: '查看教室', group: 'classroom' }, { code: 'classroom:create', name: '新增教室', group: 'classroom' }, { code: 'classroom:edit', name: '编辑教室', group: 'classroom' }, @@ -147,7 +148,7 @@ const PRESET_ROLES: Array<{ code: 'dorm_manager', description: '管理宿舍入住与宿舍信息', isSystem: true, - permissionGroups: ['student', 'room', 'occupancy', 'dashboard'], + permissionGroups: ['student', 'room', 'occupancy', 'deposit', 'dashboard'], }, { name: '教务',