From 8b1203d9d20df1a4b4d16cdf0281cca4843ca6d9 Mon Sep 17 00:00:00 2001 From: none Date: Sun, 23 Apr 2023 15:35:26 +0800 Subject: [PATCH] =?UTF-8?q?fixed:=20=E5=AD=A6=E5=91=98=E8=AF=BE=E6=97=B6?= =?UTF-8?q?=E8=AE=B0=E5=BD=95=E5=88=A0=E9=99=A4=E7=9A=84=E7=BA=BF=E4=B8=8A?= =?UTF-8?q?=E8=AF=BE=E8=BF=9B=E5=BA=A6=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../UserCourseHourRecordDestroyListener.java | 11 +---------- .../api/service/UserCourseRecordService.java | 2 ++ .../impl/UserCourseRecordServiceImpl.java | 19 +++++++++++++++++++ 3 files changed, 22 insertions(+), 10 deletions(-) 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); + } }