Compare commits
2 Commits
161e05dce4
...
27cb883b23
| Author | SHA1 | Date | |
|---|---|---|---|
| 27cb883b23 | |||
| 4ec61e48ca |
@ -16,6 +16,13 @@ public interface CoursePackageMapper extends BaseMapper<CoursePackage> {
|
|||||||
@Update("UPDATE course_package SET usage_count = usage_count + 1 WHERE id = #{coursePackageId}")
|
@Update("UPDATE course_package SET usage_count = usage_count + 1 WHERE id = #{coursePackageId}")
|
||||||
void incrementUsageCount(@Param("coursePackageId") Long 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
|
* @param coursePackageId 课程包 ID
|
||||||
|
|||||||
@ -174,6 +174,7 @@ public class LessonServiceImpl extends ServiceImpl<LessonMapper, Lesson>
|
|||||||
public void startLesson(Long id) {
|
public void startLesson(Long id) {
|
||||||
Lesson lesson = getLessonById(id);
|
Lesson lesson = getLessonById(id);
|
||||||
lesson.setStatus(LessonStatus.IN_PROGRESS.getCode());
|
lesson.setStatus(LessonStatus.IN_PROGRESS.getCode());
|
||||||
|
lesson.setStartDatetime(LocalDateTime.now());
|
||||||
lessonMapper.updateById(lesson);
|
lessonMapper.updateById(lesson);
|
||||||
log.info("课程开始:id={}", id);
|
log.info("课程开始:id={}", id);
|
||||||
}
|
}
|
||||||
@ -183,6 +184,7 @@ public class LessonServiceImpl extends ServiceImpl<LessonMapper, Lesson>
|
|||||||
public void completeLesson(Long id) {
|
public void completeLesson(Long id) {
|
||||||
Lesson lesson = getLessonById(id);
|
Lesson lesson = getLessonById(id);
|
||||||
lesson.setStatus(LessonStatus.COMPLETED.getCode());
|
lesson.setStatus(LessonStatus.COMPLETED.getCode());
|
||||||
|
lesson.setEndDatetime(LocalDateTime.now());
|
||||||
lessonMapper.updateById(lesson);
|
lessonMapper.updateById(lesson);
|
||||||
log.info("课程完成:id={}", id);
|
log.info("课程完成:id={}", id);
|
||||||
|
|
||||||
@ -200,6 +202,12 @@ public class LessonServiceImpl extends ServiceImpl<LessonMapper, Lesson>
|
|||||||
lesson.setStatus(LessonStatus.CANCELLED.getCode());
|
lesson.setStatus(LessonStatus.CANCELLED.getCode());
|
||||||
lessonMapper.updateById(lesson);
|
lessonMapper.updateById(lesson);
|
||||||
log.info("课程取消:id={}", id);
|
log.info("课程取消:id={}", id);
|
||||||
|
|
||||||
|
// 更新课程包统计:使用次数 -1(取消的课程不计入使用)
|
||||||
|
if (lesson.getCourseId() != null) {
|
||||||
|
coursePackageMapper.decrementUsageCount(lesson.getCourseId());
|
||||||
|
log.info("课程包使用次数 -1: courseId={}", lesson.getCourseId());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@ -0,0 +1,37 @@
|
|||||||
|
-- -----------------------------------------------------
|
||||||
|
-- V10: 更新课程包统计数据
|
||||||
|
-- 说明:根据 lesson 表实际数据更新 course_package 的 usage_count 和 teacher_count
|
||||||
|
-- 时间:2026-03-20
|
||||||
|
-- -----------------------------------------------------
|
||||||
|
|
||||||
|
-- 1. 更新 usage_count:统计 status != 'cancelled' 的课程数
|
||||||
|
UPDATE course_package cp
|
||||||
|
SET usage_count = (
|
||||||
|
SELECT COUNT(*)
|
||||||
|
FROM lesson l
|
||||||
|
WHERE l.course_id = cp.id
|
||||||
|
AND l.status != 'cancelled'
|
||||||
|
AND l.deleted = 0
|
||||||
|
)
|
||||||
|
WHERE cp.deleted = 0;
|
||||||
|
|
||||||
|
-- 2. 更新 teacher_count:统计 status = 'completed' 的课程中去重教师数
|
||||||
|
UPDATE course_package cp
|
||||||
|
SET teacher_count = (
|
||||||
|
SELECT COUNT(DISTINCT l.teacher_id)
|
||||||
|
FROM lesson l
|
||||||
|
WHERE l.course_id = cp.id
|
||||||
|
AND l.status = 'completed'
|
||||||
|
AND l.teacher_id IS NOT NULL
|
||||||
|
AND l.deleted = 0
|
||||||
|
)
|
||||||
|
WHERE cp.deleted = 0;
|
||||||
|
|
||||||
|
-- 3. 处理 NULL 值,确保字段为 0 而不是 NULL
|
||||||
|
UPDATE course_package cp
|
||||||
|
SET usage_count = 0
|
||||||
|
WHERE usage_count IS NULL AND deleted = 0;
|
||||||
|
|
||||||
|
UPDATE course_package cp
|
||||||
|
SET teacher_count = 0
|
||||||
|
WHERE teacher_count IS NULL AND deleted = 0;
|
||||||
Loading…
Reference in New Issue
Block a user