From ab9e8da4b8f890e79f3675796eb95e6a55aa27db Mon Sep 17 00:00:00 2001 From: none Date: Tue, 4 Apr 2023 10:35:08 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=AD=A6=E5=91=98=E7=9A=84?= =?UTF-8?q?=E5=AD=A6=E4=B9=A0=E8=AE=B0=E5=BD=95=E5=88=A0=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../backend/CourseUserController.java | 16 ++++++++++- .../event/UserCourseRecordDestroyEvent.java | 27 +++++++++++++++++++ .../UserCourseRecordDestroyListener.java | 25 +++++++++++++++++ .../service/UserCourseHourRecordService.java | 2 ++ .../api/service/UserCourseRecordService.java | 2 ++ .../impl/UserCourseHourRecordServiceImpl.java | 5 ++++ .../impl/UserCourseRecordServiceImpl.java | 5 ++++ 7 files changed, 81 insertions(+), 1 deletion(-) create mode 100644 src/main/java/xyz/playedu/api/event/UserCourseRecordDestroyEvent.java create mode 100644 src/main/java/xyz/playedu/api/listener/UserCourseRecordDestroyListener.java diff --git a/src/main/java/xyz/playedu/api/controller/backend/CourseUserController.java b/src/main/java/xyz/playedu/api/controller/backend/CourseUserController.java index 534eee6..a588df0 100644 --- a/src/main/java/xyz/playedu/api/controller/backend/CourseUserController.java +++ b/src/main/java/xyz/playedu/api/controller/backend/CourseUserController.java @@ -2,9 +2,11 @@ package xyz.playedu.api.controller.backend; import org.apache.commons.collections4.MapUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.ApplicationContext; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import xyz.playedu.api.domain.UserCourseRecord; +import xyz.playedu.api.event.UserCourseRecordDestroyEvent; import xyz.playedu.api.request.backend.CourseUserDestroyRequest; import xyz.playedu.api.service.UserCourseRecordService; import xyz.playedu.api.service.UserService; @@ -12,7 +14,9 @@ import xyz.playedu.api.types.JsonResponse; import xyz.playedu.api.types.paginate.CourseUserPaginateFilter; import xyz.playedu.api.types.paginate.PaginationResult; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; /** * @Author 杭州白书科技有限公司 @@ -28,6 +32,9 @@ public class CourseUserController { @Autowired private UserService userService; + @Autowired + private ApplicationContext ctx; + @GetMapping("/index") public JsonResponse index(@PathVariable(name = "courseId") Integer courseId, @RequestParam HashMap params) { Integer page = MapUtils.getInteger(params, "page", 1); @@ -61,7 +68,14 @@ public class CourseUserController { if (req.getIds().size() == 0) { return JsonResponse.error("请选择需要删除的数据"); } - userCourseRecordService.destroy(courseId, req.getIds()); + List records = userCourseRecordService.chunks(req.getIds(), new ArrayList<>() {{ + add("user_id"); + add("id"); + }}); + for (UserCourseRecord record : records) { + userCourseRecordService.removeById(record); + ctx.publishEvent(new UserCourseRecordDestroyEvent(this, record.getUserId(), courseId)); + } return JsonResponse.success(); } diff --git a/src/main/java/xyz/playedu/api/event/UserCourseRecordDestroyEvent.java b/src/main/java/xyz/playedu/api/event/UserCourseRecordDestroyEvent.java new file mode 100644 index 0000000..84dcc74 --- /dev/null +++ b/src/main/java/xyz/playedu/api/event/UserCourseRecordDestroyEvent.java @@ -0,0 +1,27 @@ +package xyz.playedu.api.event; + +import lombok.Getter; +import lombok.Setter; +import org.springframework.context.ApplicationEvent; + +import java.util.Date; + +/** + * @Author 杭州白书科技有限公司 + * @create 2023/4/4 10:12 + */ +@Getter +@Setter +public class UserCourseRecordDestroyEvent extends ApplicationEvent { + + private Integer userId; + private Integer courseId; + private Date createdAt; + + public UserCourseRecordDestroyEvent(Object source, Integer userId, Integer courseId) { + super(source); + this.userId = userId; + this.courseId = courseId; + this.createdAt = new Date(); + } +} diff --git a/src/main/java/xyz/playedu/api/listener/UserCourseRecordDestroyListener.java b/src/main/java/xyz/playedu/api/listener/UserCourseRecordDestroyListener.java new file mode 100644 index 0000000..8fabe01 --- /dev/null +++ b/src/main/java/xyz/playedu/api/listener/UserCourseRecordDestroyListener.java @@ -0,0 +1,25 @@ +package xyz.playedu.api.listener; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.event.EventListener; +import org.springframework.stereotype.Component; +import xyz.playedu.api.event.UserCourseRecordDestroyEvent; +import xyz.playedu.api.service.UserCourseHourRecordService; + +/** + * @Author 杭州白书科技有限公司 + * @create 2023/4/4 10:16 + */ +@Component +public class UserCourseRecordDestroyListener { + + @Autowired + private UserCourseHourRecordService userCourseHourRecordService; + + @EventListener + public void emptyUserCourseHourRecords(UserCourseRecordDestroyEvent event) { + userCourseHourRecordService.remove(event.getUserId(), event.getCourseId()); + } + +} diff --git a/src/main/java/xyz/playedu/api/service/UserCourseHourRecordService.java b/src/main/java/xyz/playedu/api/service/UserCourseHourRecordService.java index ea0dfbc..7013d72 100644 --- a/src/main/java/xyz/playedu/api/service/UserCourseHourRecordService.java +++ b/src/main/java/xyz/playedu/api/service/UserCourseHourRecordService.java @@ -24,5 +24,7 @@ public interface UserCourseHourRecordService extends IService getUserCourseHourCount(Integer userId, List courseIds, Integer isFinished); } diff --git a/src/main/java/xyz/playedu/api/service/UserCourseRecordService.java b/src/main/java/xyz/playedu/api/service/UserCourseRecordService.java index 9594a25..42227b1 100644 --- a/src/main/java/xyz/playedu/api/service/UserCourseRecordService.java +++ b/src/main/java/xyz/playedu/api/service/UserCourseRecordService.java @@ -25,4 +25,6 @@ public interface UserCourseRecordService extends IService { void destroy(Integer courseId, List ids); void removeByCourseId(Integer courseId); + + List chunks(List ids, List fields); } diff --git a/src/main/java/xyz/playedu/api/service/impl/UserCourseHourRecordServiceImpl.java b/src/main/java/xyz/playedu/api/service/impl/UserCourseHourRecordServiceImpl.java index f6ccb96..8fad222 100644 --- a/src/main/java/xyz/playedu/api/service/impl/UserCourseHourRecordServiceImpl.java +++ b/src/main/java/xyz/playedu/api/service/impl/UserCourseHourRecordServiceImpl.java @@ -99,6 +99,11 @@ public class UserCourseHourRecordServiceImpl extends ServiceImpl chunks(List ids, List fields) { + return list(query().getWrapper().in("id", ids).select(fields)); + } }