feat: add ClassesService with CRUD + student/teacher management

This commit is contained in:
2026-07-05 18:59:09 +08:00
parent e1d9ce9709
commit c378cc45f8
3 changed files with 320 additions and 0 deletions

View File

@@ -0,0 +1,113 @@
import { IsOptional, IsString, IsNotEmpty, IsInt, IsArray, IsDateString } from 'class-validator';
export class CreateClassDto {
@IsString() @IsNotEmpty()
name: string;
@IsString() @IsNotEmpty()
code: string;
@IsOptional() @IsInt()
departmentId?: number;
@IsString() @IsNotEmpty()
classType: string;
@IsOptional() @IsDateString()
startDate?: string;
@IsOptional() @IsDateString()
endDate?: string;
@IsOptional() @IsString()
status?: string;
@IsOptional() @IsInt()
headTeacherId?: number;
@IsOptional() @IsInt()
lifeTeacherId?: number;
@IsOptional() @IsInt()
academicTeacherId?: number;
@IsOptional() @IsInt()
maxStudents?: number;
@IsOptional() @IsString()
notes?: string;
@IsOptional() @IsArray()
studentIds?: number[];
@IsOptional() @IsArray()
teachers?: Array<{ userId: number; roleType: string; subject?: string }>;
}
export class UpdateClassDto {
@IsOptional() @IsString()
name?: string;
@IsOptional() @IsString()
code?: string;
@IsOptional() @IsInt()
departmentId?: number;
@IsOptional() @IsString()
classType?: string;
@IsOptional() @IsDateString()
startDate?: string;
@IsOptional() @IsDateString()
endDate?: string;
@IsOptional() @IsString()
status?: string;
@IsOptional() @IsInt()
headTeacherId?: number;
@IsOptional() @IsInt()
lifeTeacherId?: number;
@IsOptional() @IsInt()
academicTeacherId?: number;
@IsOptional() @IsInt()
maxStudents?: number;
@IsOptional() @IsString()
notes?: string;
}
export class QueryClassDto {
@IsOptional() @IsInt()
departmentId?: number;
@IsOptional() @IsString()
status?: string;
@IsOptional() @IsString()
classType?: string;
@IsOptional() @IsString()
keyword?: string;
}
export class AddStudentsDto {
@IsArray() @IsInt({ each: true })
studentIds: number[];
}
export class AddTeacherDto {
@IsInt()
userId: number;
@IsString()
roleType: string;
@IsOptional() @IsString()
subject?: string;
}