diff --git a/src/main/java/xyz/playedu/api/controller/backend/CourseCategoryController.java b/src/main/java/xyz/playedu/api/controller/backend/CourseCategoryController.java index e3efd7b..ddc2baf 100644 --- a/src/main/java/xyz/playedu/api/controller/backend/CourseCategoryController.java +++ b/src/main/java/xyz/playedu/api/controller/backend/CourseCategoryController.java @@ -4,6 +4,7 @@ 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.PlayEduBackendThreadLocal; import xyz.playedu.api.constant.BPermissionConstant; import xyz.playedu.api.domain.CourseCategory; import xyz.playedu.api.event.CourseCategoryDestroyEvent; @@ -77,9 +78,7 @@ public class CourseCategoryController { public JsonResponse destroy(@PathVariable Integer id) throws NotFoundException { CourseCategory category = categoryService.findOrFail(id); categoryService.deleteById(category.getId()); - - ctx.publishEvent(new CourseCategoryDestroyEvent(this, id, new Date())); - + ctx.publishEvent(new CourseCategoryDestroyEvent(this, PlayEduBackendThreadLocal.getAdminUserID(), category.getId(), new Date())); return JsonResponse.success(); } diff --git a/src/main/java/xyz/playedu/api/event/CourseCategoryDestroyEvent.java b/src/main/java/xyz/playedu/api/event/CourseCategoryDestroyEvent.java index 4aaf6e7..b6ade39 100644 --- a/src/main/java/xyz/playedu/api/event/CourseCategoryDestroyEvent.java +++ b/src/main/java/xyz/playedu/api/event/CourseCategoryDestroyEvent.java @@ -14,11 +14,13 @@ import java.util.Date; @Getter public class CourseCategoryDestroyEvent extends ApplicationEvent { + private Integer adminId; private Integer categoryId; private Date at; - public CourseCategoryDestroyEvent(Object source, Integer categoryId, Date date) { + public CourseCategoryDestroyEvent(Object source, Integer adminId, Integer categoryId, Date date) { super(source); + this.adminId = adminId; this.categoryId = categoryId; this.at = date; } diff --git a/src/main/java/xyz/playedu/api/listener/CourseCategoryDestroyListener.java b/src/main/java/xyz/playedu/api/listener/CourseCategoryDestroyListener.java index 27ba040..d9a6dfe 100644 --- a/src/main/java/xyz/playedu/api/listener/CourseCategoryDestroyListener.java +++ b/src/main/java/xyz/playedu/api/listener/CourseCategoryDestroyListener.java @@ -1,14 +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.CourseCategoryDestroyEvent; +import xyz.playedu.api.service.CourseService; /** * @Author 杭州白书科技有限公司 * @create 2023/2/24 14:07 */ @Component -@Slf4j public class CourseCategoryDestroyListener { + @Autowired + private CourseService courseService; + + @EventListener + public void resetRelateCourseCategoryId(CourseCategoryDestroyEvent event) { + courseService.removeCategoryIdRelate(event.getCategoryId()); + } + } diff --git a/src/main/java/xyz/playedu/api/service/CourseService.java b/src/main/java/xyz/playedu/api/service/CourseService.java index 1e7eff8..e49e538 100644 --- a/src/main/java/xyz/playedu/api/service/CourseService.java +++ b/src/main/java/xyz/playedu/api/service/CourseService.java @@ -36,4 +36,6 @@ public interface CourseService extends IService { List getCategoryIdsByCourseId(Integer courseId); void updateClassHour(Integer courseId, Integer classHour); + + void removeCategoryIdRelate(Integer categoryId); } diff --git a/src/main/java/xyz/playedu/api/service/impl/CourseServiceImpl.java b/src/main/java/xyz/playedu/api/service/impl/CourseServiceImpl.java index 7772e95..7f443ca 100644 --- a/src/main/java/xyz/playedu/api/service/impl/CourseServiceImpl.java +++ b/src/main/java/xyz/playedu/api/service/impl/CourseServiceImpl.java @@ -183,6 +183,11 @@ public class CourseServiceImpl extends ServiceImpl impleme course.setClassHour(classHour); updateById(course); } + + @Override + public void removeCategoryIdRelate(Integer categoryId) { + categoryCourseService.remove(categoryCourseService.query().getWrapper().eq("category_id", categoryId)); + } }