From 4ec61e48cada70cd7fc4f26ab2fcb9a726b0c241 Mon Sep 17 00:00:00 2001 From: En Date: Fri, 20 Mar 2026 14:36:12 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E8=AF=BE=E7=A8=8B=E5=8C=85=E7=BB=9F?= =?UTF-8?q?=E8=AE=A1=E9=80=BB=E8=BE=91=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. CoursePackageMapper: 新增 decrementUsageCount 方法 - 课程取消时减少使用次数 2. LessonServiceImpl: 完善课程状态变更时的统计 - cancelLesson: 取消时 usage_count -1 - startLesson: 设置 startDatetime - completeLesson: 完成时设置 endDatetime 统计口径: - usage_count: status != 'cancelled' 的课程数(创建时 +1,取消时 -1) - teacher_count: status = 'completed' 的课程中去重教师数 --- .../com/reading/platform/mapper/CoursePackageMapper.java | 7 +++++++ .../reading/platform/service/impl/LessonServiceImpl.java | 8 ++++++++ 2 files changed, 15 insertions(+) diff --git a/reading-platform-java/src/main/java/com/reading/platform/mapper/CoursePackageMapper.java b/reading-platform-java/src/main/java/com/reading/platform/mapper/CoursePackageMapper.java index 8c4329d..84dbc51 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/mapper/CoursePackageMapper.java +++ b/reading-platform-java/src/main/java/com/reading/platform/mapper/CoursePackageMapper.java @@ -16,6 +16,13 @@ public interface CoursePackageMapper extends BaseMapper { @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 diff --git a/reading-platform-java/src/main/java/com/reading/platform/service/impl/LessonServiceImpl.java b/reading-platform-java/src/main/java/com/reading/platform/service/impl/LessonServiceImpl.java index 0403635..0fdc016 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/service/impl/LessonServiceImpl.java +++ b/reading-platform-java/src/main/java/com/reading/platform/service/impl/LessonServiceImpl.java @@ -174,6 +174,7 @@ public class LessonServiceImpl extends ServiceImpl 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 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 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