Procházet zdrojové kódy

🐛 fix(exam): 修复提交记录code字段来源问题

- 添加ClassroomData实体引用,用于获取班级code
- 从ClassroomData表查询code字段替代原answer中的code
- 修复提交记录code字段值不正确的问题
yourname před 6 měsíci
rodič
revize
44b26ebf62
1 změnil soubory, kde provedl 9 přidání a 1 odebrání
  1. 9 1
      src/server/socket/services/exam.service.ts

+ 9 - 1
src/server/socket/services/exam.service.ts

@@ -3,6 +3,7 @@ import { AuthenticatedSocket } from '../middleware/auth.middleware';
 import { redisService } from './redis.service';
 import { AppDataSource } from '@/server/data-source';
 import { SubmissionRecords } from '@/server/modules/submission/submission-records.entity';
+import { ClassroomData } from '@/server/modules/classroom/classroom-data.entity';
 import debug from 'debug';
 import type { Answer } from '@/client/mobile/components/Exam/types';
 
@@ -198,15 +199,22 @@ export class ExamService {
       }
 
       const submissionRecordsRepository = AppDataSource.getRepository(SubmissionRecords);
+      const classroomDataRepository = AppDataSource.getRepository(ClassroomData);
       const recordsToSave: SubmissionRecords[] = [];
 
+      // 查询ClassroomData获取code字段
+      const classroomData = await classroomDataRepository.findOne({
+        where: { classroomNo: roomId }
+      });
+      const code = classroomData?.code || null;
+
       for (const answer of answers) {
         // 转换Redis中的答案数据为提交记录实体
         const submissionRecord = new SubmissionRecords();
         submissionRecord.classroomNo = roomId;
         submissionRecord.userId = answer.userId || null;
         submissionRecord.score = this.calculateScore(answer);
-        submissionRecord.code = answer.code || null;
+        submissionRecord.code = code; // 使用从ClassroomData获取的code
         submissionRecord.trainingDate = answer.date ? new Date(answer.date) : null;
         submissionRecord.mark = null; // 标记字段,可根据需要设置
         submissionRecord.status = 1; // 状态:1-正常