2025-01-27 22:43:15 +08:00
|
|
|
import { db, EnrollmentStatus, PostType } from '@nice/common';
|
2025-01-03 09:24:46 +08:00
|
|
|
|
|
|
|
// 更新课程评价统计
|
|
|
|
export async function updateCourseReviewStats(courseId: string) {
|
2025-01-27 22:43:15 +08:00
|
|
|
const reviews = await db.post.findMany({
|
|
|
|
where: {
|
|
|
|
courseId,
|
|
|
|
type: PostType.COURSE_REVIEW,
|
|
|
|
deletedAt: null,
|
|
|
|
},
|
|
|
|
select: { rating: true },
|
|
|
|
});
|
|
|
|
const numberOfReviews = reviews.length;
|
|
|
|
const averageRating =
|
|
|
|
numberOfReviews > 0
|
|
|
|
? reviews.reduce((sum, review) => sum + review.rating, 0) /
|
|
|
|
numberOfReviews
|
|
|
|
: 0;
|
2025-01-03 09:24:46 +08:00
|
|
|
|
2025-01-27 22:43:15 +08:00
|
|
|
return db.course.update({
|
|
|
|
where: { id: courseId },
|
|
|
|
data: {
|
|
|
|
// numberOfReviews,
|
|
|
|
//averageRating,
|
|
|
|
},
|
|
|
|
});
|
2025-01-03 09:24:46 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
// 更新课程注册统计
|
|
|
|
export async function updateCourseEnrollmentStats(courseId: string) {
|
2025-01-27 22:43:15 +08:00
|
|
|
const completedEnrollments = await db.enrollment.count({
|
|
|
|
where: {
|
|
|
|
courseId,
|
|
|
|
status: EnrollmentStatus.COMPLETED,
|
|
|
|
},
|
|
|
|
});
|
|
|
|
const totalEnrollments = await db.enrollment.count({
|
|
|
|
where: { courseId },
|
|
|
|
});
|
|
|
|
const completionRate =
|
|
|
|
totalEnrollments > 0 ? (completedEnrollments / totalEnrollments) * 100 : 0;
|
|
|
|
return db.course.update({
|
|
|
|
where: { id: courseId },
|
|
|
|
data: {
|
|
|
|
// numberOfStudents: totalEnrollments,
|
|
|
|
// completionRate,
|
|
|
|
},
|
|
|
|
});
|
2025-01-03 09:24:46 +08:00
|
|
|
}
|