| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229 |
- // src/api/checkin.ts
- import { request } from '@/utils/request';
- // --- 类型定义 ---
- // 创建签到任务请求体
- interface CreateCheckinRequest {
- teacherId: string;
- courseId: string | number | null;
- classIds: string[];
- signType: 'NUMBER' | 'QR';
- signCode?: string;
- time?: number | null;
- }
- // 创建签到任务返回的单个任务项的接口
- interface CreateCheckinTaskItem {
- id: string | number;
- teacherId: string | number;
- courseId: string | number;
- classId: string | number;
- createTime: string;
- endTime: string | null;
- signType: 'NUMBER' | 'QR';
- status: 'NOT_START' | 'PROCESSING' | 'FINISHED' | 'CANCELLED' | string;
- totalNumber: number;
- signedNumber: number;
- signCode: string;
- classIds?: string;
- }
- export type CreateCheckinResponse = CreateCheckinTaskItem[];
- // 学生记录接口
- interface SignRecord {
- id: string | number;
- officialNumber: string;
- studentName: string;
- signTaskId: string | number;
- signInTime: string | null;
- signStatus: 'NOT_SIGNED' | 'SIGNED' | 'FINISHED' | string;
- }
- // 教师端获取签到状态的返回类型
- interface GetCheckinStatusResponse {
- totalNumber: number;
- signedNumber: number;
- createdTime: string;
- endTime: string | null;
- status: 'NOT_START' | 'PROCESSING' | 'FINISHED' | 'CANCELLED' | string;
- signCode: string;
- signType?: 'NUMBER' | 'QR';
- signRecords: SignRecord[];
- }
- // 获取某个班级签到任务详情的返回类型
- export type GetClassCheckinDetailsResponse = CreateCheckinTaskItem[];
- export type GetQrCodeResponse = string;
- // 结束签到参数
- interface EndCheckinParams {
- signTaskId: string | number;
- teacherId: string | number;
- }
- // 获取学生班级信息的返回类型
- interface StudentClass {
- classId: string | number;
- className: string;
- stuNumber: number;
- classTime: string;
- teacherId: string | number;
- }
- export type GetStudentClassesResponse = StudentClass[];
- // 获取教师所有签到任务响应
- export type GetAllTeacherCheckinTasksResponse = CreateCheckinTaskItem[];
- // 学生 - 获取活跃签到任务响应
- export type GetActiveCheckinResponse = SignRecord[];
- // 学生 - 提交签到请求体
- interface SubmitCheckinRequest {
- officialNumber: string | number;
- signTaskId: string | number;
- signCode: string;
- type: string; // 提交的签到类型 NUMBER/QR
- }
- // 【关键新增】教师 - 获取所有课程响应
- interface TeacherCourse {
- courseId: number;
- courseName: string;
- description: string;
- startTime: string;
- endTime: string;
- teacherPid: number;
- teacherNames: string[];
- // ... 其他字段
- }
- export type GetAllTeacherCoursesResponse = TeacherCourse[];
- // 【关键新增】获取课程下的所有班级响应
- interface CourseClass {
- classId: number;
- className: string;
- classTime: string;
- stuNumber: number;
- teacherId: number;
- // ... 其他字段
- }
- export type GetClassesByCourseIdResponse = CourseClass[];
- // --- API 接口封装 ---
- export const createCheckinApi = (data: CreateCheckinRequest): Promise<CreateCheckinResponse> => {
- return request<CreateCheckinResponse>({
- url: '/sign/create',
- method: 'POST',
- data
- });
- };
- export const getCheckinStatusApi = (signTaskId: string | number): Promise<GetCheckinStatusResponse> => {
- return request<GetCheckinStatusResponse>({
- url: `/sign/status/${signTaskId}`,
- method: 'GET'
- });
- };
- // 获取教师所有课程的API
- export const getAllTeacherCoursesApi = (teacherPid: string | number): Promise<GetAllTeacherCoursesResponse> => {
- return request<GetAllTeacherCoursesResponse>({
- url: `/course/all/teacher`,
- method: 'GET',
- params: { teacherPid }
- });
- };
- //获取课程下的所有班级的API
- export const getClassesByCourseIdApi = (courseId: string | number): Promise<GetClassesByCourseIdResponse> => {
- return request<GetClassesByCourseIdResponse>({
- url: `/class/course/${courseId}`,
- method: 'GET'
- });
- };
- export const endCheckinApi = (params: EndCheckinParams): Promise<void> => {
- return request<void>({
- url: '/sign/end',
- method: 'POST',
- params,
- data: {}
- });
- };
- // // 【关键新增】获取二维码内容的API
- // export const getQrCodeApi = (signTaskId: string | number, expire: number): Promise<GetQrCodeResponse> => {
- // return request<GetQrCodeResponse>({
- // url: `/sign/qr`,
- // method: 'GET',
- // params: { signTaskId, expire }
- // });
- // };
- export const getActiveCheckinApi = (params: { officialNumber: string | number }): Promise<GetActiveCheckinResponse> => {
- return request<GetActiveCheckinResponse>({
- url: '/sign/active',
- method: 'GET',
- params
- });
- };
- // 获取某个班级签到任务详情的API
- export const getClassCheckinDetailsApi = (classId: string | number): Promise<GetClassCheckinDetailsResponse> => {
- return request<GetClassCheckinDetailsResponse>({
- url: `/sign/class/${classId}`,
- method: 'GET'
- });
- };
- // 获取学生班级信息的API
- export const getClassByStudentApi = (officialNumber: string | number): Promise<GetStudentClassesResponse> => {
- return request<GetStudentClassesResponse>({
- url: `/class/student/${officialNumber}`,
- method: 'GET'
- });
- };
- //获取某个具体班级信息的API
- export const getClassByClassIdApi = (classId: string | number):Promise<StudentClass> =>{
- return request<StudentClass>({
- url:`/class/${classId}`,
- method: 'GET'
- });
- };
-
- export const submitCheckinApi = (data: SubmitCheckinRequest): Promise<void> => {
- return request<void>({
- url: '/sign/submit',
- method: 'POST',
- data
- });
- };
- // 获取教师所有签到任务的API
- export const getAllTeacherCheckinTasksApi = (teacherId: string | number): Promise<GetAllTeacherCheckinTasksResponse> => {
- return request<GetAllTeacherCheckinTasksResponse>({
- url: `/sign/all`,
- method: 'GET',
- params: { teacherId }
- });
- };
- // 获取学生个人签到状态
- export const getStudentStatusApi = (signTaskId: string | number, officialNumber: string | number): Promise<string> => {
- return request<string>({
- url: `/sign/status/student/${signTaskId}`,
- method: 'GET',
- params: { officialNumber }
- });
- };
|