fix: 课程包统计逻辑修正
1. CoursePackageMapper: 新增 decrementUsageCount 方法 - 课程取消时减少使用次数 2. LessonServiceImpl: 完善课程状态变更时的统计 - cancelLesson: 取消时 usage_count -1 - startLesson: 设置 startDatetime - completeLesson: 完成时设置 endDatetime 统计口径: - usage_count: status != 'cancelled' 的课程数(创建时 +1,取消时 -1) - teacher_count: status = 'completed' 的课程中去重教师数
This commit is contained in:
parent
161e05dce4
commit
4ec61e48ca
@ -16,6 +16,13 @@ public interface CoursePackageMapper extends BaseMapper<CoursePackage> {
|
||||
@Update("UPDATE course_package SET usage_count = usage_count + 1 WHERE id = #{coursePackageId}")
|
||||
void incrementUsageCount(@Param("coursePackageId") Long coursePackageId);
|
||||
|
||||
/**
|
||||
* 减少课程包使用次数(课程取消时调用)
|
||||
* @param coursePackageId 课程包 ID
|
||||
*/
|
||||
@Update("UPDATE course_package SET usage_count = GREATEST(usage_count - 1, 0) WHERE id = #{coursePackageId}")
|
||||
void decrementUsageCount(@Param("coursePackageId") Long coursePackageId);
|
||||
|
||||
/**
|
||||
* 更新课程包教师数量(去重统计已完成课程的教师)
|
||||
* @param coursePackageId 课程包 ID
|
||||
|
||||
@ -174,6 +174,7 @@ public class LessonServiceImpl extends ServiceImpl<LessonMapper, Lesson>
|
||||
public void startLesson(Long id) {
|
||||
Lesson lesson = getLessonById(id);
|
||||
lesson.setStatus(LessonStatus.IN_PROGRESS.getCode());
|
||||
lesson.setStartDatetime(LocalDateTime.now());
|
||||
lessonMapper.updateById(lesson);
|
||||
log.info("课程开始:id={}", id);
|
||||
}
|
||||
@ -183,6 +184,7 @@ public class LessonServiceImpl extends ServiceImpl<LessonMapper, Lesson>
|
||||
public void completeLesson(Long id) {
|
||||
Lesson lesson = getLessonById(id);
|
||||
lesson.setStatus(LessonStatus.COMPLETED.getCode());
|
||||
lesson.setEndDatetime(LocalDateTime.now());
|
||||
lessonMapper.updateById(lesson);
|
||||
log.info("课程完成:id={}", id);
|
||||
|
||||
@ -200,6 +202,12 @@ public class LessonServiceImpl extends ServiceImpl<LessonMapper, Lesson>
|
||||
lesson.setStatus(LessonStatus.CANCELLED.getCode());
|
||||
lessonMapper.updateById(lesson);
|
||||
log.info("课程取消:id={}", id);
|
||||
|
||||
// 更新课程包统计:使用次数 -1(取消的课程不计入使用)
|
||||
if (lesson.getCourseId() != null) {
|
||||
coursePackageMapper.decrementUsageCount(lesson.getCourseId());
|
||||
log.info("课程包使用次数 -1: courseId={}", lesson.getCourseId());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Loading…
Reference in New Issue
Block a user