diff --git a/src/main/java/xyz/playedu/api/controller/backend/DepartmentController.java b/src/main/java/xyz/playedu/api/controller/backend/DepartmentController.java index 19a222c..b4220b7 100644 --- a/src/main/java/xyz/playedu/api/controller/backend/DepartmentController.java +++ b/src/main/java/xyz/playedu/api/controller/backend/DepartmentController.java @@ -2,11 +2,13 @@ package xyz.playedu.api.controller.backend; import lombok.extern.slf4j.Slf4j; 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.bus.DepartmentBus; import xyz.playedu.api.constant.BPermissionConstant; import xyz.playedu.api.domain.Department; +import xyz.playedu.api.event.DepartmentDestroyEvent; import xyz.playedu.api.exception.NotFoundException; import xyz.playedu.api.middleware.BackendPermissionMiddleware; import xyz.playedu.api.request.backend.DepartmentRequest; @@ -31,6 +33,9 @@ public class DepartmentController { @Autowired private DepartmentBus departmentBus; + @Autowired + private ApplicationContext ctx; + @BackendPermissionMiddleware(slug = BPermissionConstant.DEPARTMENT_INDEX) @GetMapping("/index") public JsonResponse index() { @@ -90,6 +95,9 @@ public class DepartmentController { public JsonResponse destroy(@PathVariable Integer id) throws NotFoundException { Department department = departmentService.findOrFail(id); departmentService.deleteById(department.getId()); + + ctx.publishEvent(new DepartmentDestroyEvent(this, id, new Date())); + return JsonResponse.success(); } diff --git a/src/main/java/xyz/playedu/api/controller/backend/UserController.java b/src/main/java/xyz/playedu/api/controller/backend/UserController.java index af35157..9ba48ea 100644 --- a/src/main/java/xyz/playedu/api/controller/backend/UserController.java +++ b/src/main/java/xyz/playedu/api/controller/backend/UserController.java @@ -213,4 +213,9 @@ public class UserController { return JsonResponse.success(); } + @PostMapping("/store-batch") + public JsonResponse batchStore() { + return null; + } + } diff --git a/src/main/java/xyz/playedu/api/event/DepartmentDestroyEvent.java b/src/main/java/xyz/playedu/api/event/DepartmentDestroyEvent.java new file mode 100644 index 0000000..238cc6d --- /dev/null +++ b/src/main/java/xyz/playedu/api/event/DepartmentDestroyEvent.java @@ -0,0 +1,25 @@ +package xyz.playedu.api.event; + +import lombok.Getter; +import lombok.Setter; +import org.springframework.context.ApplicationEvent; + +import java.util.Date; + +/** + * @Author 杭州白书科技有限公司 + * @create 2023/2/23 15:27 + */ +@Getter +@Setter +public class DepartmentDestroyEvent extends ApplicationEvent { + + private Integer depId; + private Date at; + + public DepartmentDestroyEvent(Object source, Integer depId, Date date) { + super(source); + this.depId = depId; + this.at = date; + } +} diff --git a/src/main/java/xyz/playedu/api/listener/DepartmentDestroyListener.java b/src/main/java/xyz/playedu/api/listener/DepartmentDestroyListener.java new file mode 100644 index 0000000..b415c53 --- /dev/null +++ b/src/main/java/xyz/playedu/api/listener/DepartmentDestroyListener.java @@ -0,0 +1,26 @@ +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.core.annotation.Order; +import org.springframework.stereotype.Component; +import xyz.playedu.api.event.DepartmentDestroyEvent; +import xyz.playedu.api.service.UserDepartmentService; + +/** + * @Author 杭州白书科技有限公司 + * @create 2023/2/23 15:28 + */ +@Component +@Slf4j +public class DepartmentDestroyListener { + @Autowired + private UserDepartmentService userDepartmentService; + + @Order(1) + @EventListener + public void updateLoginInfo(DepartmentDestroyEvent event) { + userDepartmentService.removeByDepId(event.getDepId()); + } +} diff --git a/src/main/java/xyz/playedu/api/service/UserDepartmentService.java b/src/main/java/xyz/playedu/api/service/UserDepartmentService.java index a7b253c..e7c9468 100644 --- a/src/main/java/xyz/playedu/api/service/UserDepartmentService.java +++ b/src/main/java/xyz/playedu/api/service/UserDepartmentService.java @@ -11,4 +11,5 @@ import com.baomidou.mybatisplus.extension.service.IService; public interface UserDepartmentService extends IService { void removeByUserId(Integer userId); + void removeByDepId(Integer depId); } diff --git a/src/main/java/xyz/playedu/api/service/impl/UserDepartmentServiceImpl.java b/src/main/java/xyz/playedu/api/service/impl/UserDepartmentServiceImpl.java index 8a9b76a..79231cf 100644 --- a/src/main/java/xyz/playedu/api/service/impl/UserDepartmentServiceImpl.java +++ b/src/main/java/xyz/playedu/api/service/impl/UserDepartmentServiceImpl.java @@ -18,6 +18,11 @@ public class UserDepartmentServiceImpl extends ServiceImpl