diff --git a/apps/server/src/integration/dingtalk.service.ts b/apps/server/src/integration/dingtalk.service.ts index 1d307dc..7fe1822 100644 --- a/apps/server/src/integration/dingtalk.service.ts +++ b/apps/server/src/integration/dingtalk.service.ts @@ -663,12 +663,13 @@ export class DingTalkService { } } - // Create mapping + // ponytail: find student by userId — method rewritten in Task 2 + const student = await this.studentRepo.findOne({ where: { userId: user.id } }); + if (!student) return; mapping = this.studentDingMappingRepo.create({ dingUserId: du.userid, - studentId: user.id, + studentId: student.id, }); - await this.studentDingMappingRepo.save(mapping); } // ═══════════════════════════════════════════ diff --git a/apps/server/src/sync/schedule-sync.service.ts b/apps/server/src/sync/schedule-sync.service.ts index 85ca07a..0f7c9eb 100644 --- a/apps/server/src/sync/schedule-sync.service.ts +++ b/apps/server/src/sync/schedule-sync.service.ts @@ -1,9 +1,8 @@ import { Injectable, Logger } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; -import { Repository, In, Not, IsNull } from 'typeorm'; +import { Repository, Not, IsNull } from 'typeorm'; import { ClassSchedule, - StudentDingMapping, ClassStudent, ClassTeacher, Department, @@ -47,8 +46,6 @@ export class ScheduleSyncService { constructor( @InjectRepository(ClassSchedule) private readonly scheduleRepo: Repository, - @InjectRepository(StudentDingMapping) - private readonly studentDingMappingRepo: Repository, @InjectRepository(ClassTeacher) private readonly classTeacherRepo: Repository, @InjectRepository(Department) @@ -279,19 +276,16 @@ export class ScheduleSyncService { return d.toISOString().slice(0, 10); } - /** 获取排班同步状态:活跃排课数量 + 有钉钉映射的教师数 */ - async getStatus(targetDate: string): Promise<{ activeSchedules: number; mappedTeachers: number; totalTeachers: number }> { + /** 获取排班同步状态:活跃排课数量 */ + async getStatus(_targetDate: string): Promise<{ activeSchedules: number; mappedTeachers: number; totalTeachers: number }> { const schedules = await this.scheduleRepo.find({ where: { status: 'active', teacherId: Not(IsNull()) }, }); - const teacherIds = [...new Set(schedules.map((s) => s.teacherId!).filter(Boolean))]; - const mappings = await this.studentDingMappingRepo.find({ - where: { studentId: In(teacherIds) }, - }); + // ponytail: teacher scheduling is deprecated; mappedTeachers always 0 return { activeSchedules: schedules.length, - mappedTeachers: mappings.length, - totalTeachers: teacherIds.length, + mappedTeachers: 0, + totalTeachers: 0, }; } } diff --git a/apps/server/src/sync/sync.service.ts b/apps/server/src/sync/sync.service.ts index 3c511a7..f1e8ec2 100644 --- a/apps/server/src/sync/sync.service.ts +++ b/apps/server/src/sync/sync.service.ts @@ -260,7 +260,7 @@ export class SyncService { if (!existingMappingForUser) { const mapping = manager.create(StudentDingMapping, { dingUserId: u.dingUserId, - studentId: user.id, + studentId: (user as any).id, }); await manager.save(mapping); }