diff --git a/src/main/java/xyz/playedu/api/listener/UserCourseHourRecordDestroyListener.java b/src/main/java/xyz/playedu/api/listener/UserCourseHourRecordDestroyListener.java index 4eba267..f3ce656 100644 --- a/src/main/java/xyz/playedu/api/listener/UserCourseHourRecordDestroyListener.java +++ b/src/main/java/xyz/playedu/api/listener/UserCourseHourRecordDestroyListener.java @@ -21,7 +21,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.event.EventListener; import org.springframework.stereotype.Component; -import xyz.playedu.api.domain.UserCourseRecord; import xyz.playedu.api.event.UserCourseHourRecordDestroyEvent; import xyz.playedu.api.service.UserCourseRecordService; @@ -38,14 +37,6 @@ public class UserCourseHourRecordDestroyListener { @EventListener public void updateUserCourseRecord(UserCourseHourRecordDestroyEvent e) { - UserCourseRecord record = userCourseRecordService.find(e.getUserId(), e.getCourseId()); - if (record == null) { - return; - } - userCourseRecordService.storeOrUpdate( - record.getUserId(), - record.getCourseId(), - record.getHourCount(), - record.getFinishedCount() - 1); + userCourseRecordService.decrease(e.getUserId(), e.getCourseId(), 1); } } diff --git a/src/main/java/xyz/playedu/api/service/UserCourseRecordService.java b/src/main/java/xyz/playedu/api/service/UserCourseRecordService.java index a3f1adb..ed2e702 100644 --- a/src/main/java/xyz/playedu/api/service/UserCourseRecordService.java +++ b/src/main/java/xyz/playedu/api/service/UserCourseRecordService.java @@ -48,4 +48,6 @@ public interface UserCourseRecordService extends IService { void removeByCourseId(Integer courseId); List chunks(List ids, List fields); + + void decrease(Integer userId, Integer courseId, int count); } diff --git a/src/main/java/xyz/playedu/api/service/impl/UserCourseRecordServiceImpl.java b/src/main/java/xyz/playedu/api/service/impl/UserCourseRecordServiceImpl.java index fdb8cce..b1b9c0f 100644 --- a/src/main/java/xyz/playedu/api/service/impl/UserCourseRecordServiceImpl.java +++ b/src/main/java/xyz/playedu/api/service/impl/UserCourseRecordServiceImpl.java @@ -137,4 +137,23 @@ public class UserCourseRecordServiceImpl public void destroy(Integer userId, Integer courseId) { remove(query().getWrapper().in("user_id", userId).eq("course_id", courseId)); } + + @Override + public void decrease(Integer userId, Integer courseId, int count) { + UserCourseRecord record = find(userId, courseId); + if (record == null) { + return; + } + + int finishedCount = record.getFinishedCount() - count; + + UserCourseRecord newRecord = new UserCourseRecord(); + newRecord.setId(record.getId()); + newRecord.setFinishedCount(finishedCount); + newRecord.setFinishedAt(null); + newRecord.setProgress(finishedCount * 100 / record.getHourCount()); + newRecord.setIsFinished(0); + + updateById(newRecord); + } }