2024-08-02 19:48:38 +08:00
|
|
|
|
import { Job } from 'bullmq';
|
2024-12-30 08:26:40 +08:00
|
|
|
|
import { Logger } from '@nestjs/common';
|
2025-01-06 08:45:23 +08:00
|
|
|
|
import { ObjectType } from '@nice/common';
|
2025-02-06 16:32:52 +08:00
|
|
|
|
// import {
|
|
|
|
|
|
// updateCourseEnrollmentStats,
|
|
|
|
|
|
// updateCourseReviewStats,
|
|
|
|
|
|
// } from '@server/models/course/utils';
|
|
|
|
|
|
import { QueueJobType } from '../types';
|
2025-04-22 15:29:39 +08:00
|
|
|
|
// import {
|
|
|
|
|
|
// updateCourseEnrollmentStats,
|
|
|
|
|
|
// updateCourseReviewStats,
|
|
|
|
|
|
// updateParentLectureStats,
|
|
|
|
|
|
// } from '@server/models/post/utils';
|
|
|
|
|
|
// import {
|
|
|
|
|
|
// updatePostViewCount,
|
|
|
|
|
|
// updateTotalCourseViewCount,
|
|
|
|
|
|
// } from '../models/post/utils';
|
|
|
|
|
|
// const logger = new Logger('QueueWorker');
|
|
|
|
|
|
// export default async function processJob(job: Job<any, any, QueueJobType>) {
|
|
|
|
|
|
// try {
|
|
|
|
|
|
// if (job.name === QueueJobType.UPDATE_STATS) {
|
|
|
|
|
|
// const { sectionId, courseId, type } = job.data;
|
|
|
|
|
|
// // 处理 section 统计
|
|
|
|
|
|
// if (sectionId) {
|
|
|
|
|
|
// await updateParentLectureStats(sectionId);
|
|
|
|
|
|
// logger.debug(`Updated section stats for sectionId: ${sectionId}`);
|
|
|
|
|
|
// }
|
|
|
|
|
|
// // 如果没有 courseId,提前返回
|
|
|
|
|
|
// if (!courseId) {
|
|
|
|
|
|
// return;
|
|
|
|
|
|
// }
|
|
|
|
|
|
// // 处理 course 相关统计
|
|
|
|
|
|
// switch (type) {
|
|
|
|
|
|
// case ObjectType.LECTURE:
|
|
|
|
|
|
// await updateParentLectureStats(courseId);
|
|
|
|
|
|
// break;
|
|
|
|
|
|
// case ObjectType.ENROLLMENT:
|
|
|
|
|
|
// await updateCourseEnrollmentStats(courseId);
|
|
|
|
|
|
// break;
|
|
|
|
|
|
// case ObjectType.POST:
|
|
|
|
|
|
// await updateCourseReviewStats(courseId);
|
|
|
|
|
|
// break;
|
|
|
|
|
|
// default:
|
|
|
|
|
|
// logger.warn(`Unknown update stats type: ${type}`);
|
|
|
|
|
|
// }
|
2024-08-02 19:48:38 +08:00
|
|
|
|
|
2025-04-22 15:29:39 +08:00
|
|
|
|
// logger.debug(
|
|
|
|
|
|
// `Updated course stats for courseId: ${courseId}, type: ${type}`,
|
|
|
|
|
|
// );
|
|
|
|
|
|
// }
|
|
|
|
|
|
// if (job.name === QueueJobType.UPDATE_POST_VISIT_COUNT) {
|
|
|
|
|
|
// await updatePostViewCount(job.data.id, job.data.type);
|
|
|
|
|
|
// }
|
|
|
|
|
|
// if (job.name === QueueJobType.UPDATE_POST_STATE) {
|
|
|
|
|
|
// await updatePostViewCount(job.data.id, job.data.type);
|
|
|
|
|
|
// }
|
|
|
|
|
|
// if (job.name === QueueJobType.UPDATE_TOTAL_COURSE_VIEW_COUNT) {
|
|
|
|
|
|
// await updateTotalCourseViewCount(job.data.type);
|
|
|
|
|
|
// }
|
|
|
|
|
|
// } catch (error: any) {
|
|
|
|
|
|
// logger.error(
|
|
|
|
|
|
// `Error processing stats update job: ${error.message}`,
|
|
|
|
|
|
// error.stack,
|
|
|
|
|
|
// );
|
|
|
|
|
|
// }
|
|
|
|
|
|
// }
|