From a3bb8be72ead711fe5d69effd6b76db5bae61197 Mon Sep 17 00:00:00 2001 From: none Date: Mon, 13 Mar 2023 14:48:09 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E9=83=A8=E9=97=A8=E5=88=A0?= =?UTF-8?q?=E9=80=89=E6=A0=B8=E6=9F=A5api?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../backend/DepartmentController.java | 37 +++++++++++++++++++ .../playedu/api/service/CourseService.java | 2 + .../api/service/DepartmentService.java | 4 ++ .../xyz/playedu/api/service/UserService.java | 2 + .../api/service/impl/CourseServiceImpl.java | 5 +++ .../service/impl/DepartmentServiceImpl.java | 15 ++++++++ .../api/service/impl/UserServiceImpl.java | 5 +++ 7 files changed, 70 insertions(+) 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 0ed8f88..b615a3c 100644 --- a/src/main/java/xyz/playedu/api/controller/backend/DepartmentController.java +++ b/src/main/java/xyz/playedu/api/controller/backend/DepartmentController.java @@ -8,11 +8,14 @@ import org.springframework.web.bind.annotation.*; import xyz.playedu.api.PlayEduBContext; import xyz.playedu.api.constant.BPermissionConstant; import xyz.playedu.api.domain.Department; +import xyz.playedu.api.domain.User; 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; +import xyz.playedu.api.service.CourseService; import xyz.playedu.api.service.DepartmentService; +import xyz.playedu.api.service.UserService; import xyz.playedu.api.types.JsonResponse; import java.util.*; @@ -30,6 +33,12 @@ public class DepartmentController { @Autowired private DepartmentService departmentService; + @Autowired + private UserService userService; + + @Autowired + private CourseService courseService; + @Autowired private ApplicationContext ctx; @@ -82,6 +91,34 @@ public class DepartmentController { return JsonResponse.success(); } + @BackendPermissionMiddleware(slug = BPermissionConstant.DEPARTMENT_CUD) + @GetMapping("/{id}/destroy") + public JsonResponse preDestroy(@PathVariable Integer id) { + List courseIds = departmentService.getCourseIdsByDepId(id); + List userIds = departmentService.getUserIdsByDepId(id); + + HashMap data = new HashMap<>(); + data.put("courses", new ArrayList<>()); + data.put("users", new ArrayList<>()); + + if (courseIds != null && courseIds.size() > 0) { + data.put("courses", courseService.chunks(courseIds, new ArrayList<>() {{ + add("id"); + add("title"); + }})); + } + if (userIds != null && userIds.size() > 0) { + data.put("users", userService.chunks(userIds, new ArrayList<>() {{ + add("id"); + add("nickname"); + add("name"); + add("avatar"); + }})); + } + + return JsonResponse.data(data); + } + @BackendPermissionMiddleware(slug = BPermissionConstant.DEPARTMENT_CUD) @DeleteMapping("/{id}") public JsonResponse destroy(@PathVariable Integer id) throws NotFoundException { diff --git a/src/main/java/xyz/playedu/api/service/CourseService.java b/src/main/java/xyz/playedu/api/service/CourseService.java index e49e538..9f67cf1 100644 --- a/src/main/java/xyz/playedu/api/service/CourseService.java +++ b/src/main/java/xyz/playedu/api/service/CourseService.java @@ -38,4 +38,6 @@ public interface CourseService extends IService { void updateClassHour(Integer courseId, Integer classHour); void removeCategoryIdRelate(Integer categoryId); + + List chunks(List ids, List fields); } diff --git a/src/main/java/xyz/playedu/api/service/DepartmentService.java b/src/main/java/xyz/playedu/api/service/DepartmentService.java index c72d4d8..6b59977 100644 --- a/src/main/java/xyz/playedu/api/service/DepartmentService.java +++ b/src/main/java/xyz/playedu/api/service/DepartmentService.java @@ -33,4 +33,8 @@ public interface DepartmentService extends IService { void remoteRelateUsersByDepId(Integer depId); + List getUserIdsByDepId(Integer depId); + + List getCourseIdsByDepId(Integer depId); + } diff --git a/src/main/java/xyz/playedu/api/service/UserService.java b/src/main/java/xyz/playedu/api/service/UserService.java index 479dc64..5101dbd 100644 --- a/src/main/java/xyz/playedu/api/service/UserService.java +++ b/src/main/java/xyz/playedu/api/service/UserService.java @@ -36,4 +36,6 @@ public interface UserService extends IService { List getDepIdsByUserId(Integer userId); void passwordChange(User user, String oldPassword, String newPassword) throws ServiceException; + + List chunks(List ids, List fields); } 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 340e351..0c65de1 100644 --- a/src/main/java/xyz/playedu/api/service/impl/CourseServiceImpl.java +++ b/src/main/java/xyz/playedu/api/service/impl/CourseServiceImpl.java @@ -193,6 +193,11 @@ public class CourseServiceImpl extends ServiceImpl impleme public void removeCategoryIdRelate(Integer categoryId) { courseCategoryService.removeByCategoryId(categoryId); } + + @Override + public List chunks(List ids, List fields) { + return list(query().getWrapper().in("id", ids).select(fields)); + } } diff --git a/src/main/java/xyz/playedu/api/service/impl/DepartmentServiceImpl.java b/src/main/java/xyz/playedu/api/service/impl/DepartmentServiceImpl.java index 4579914..f7e8ce5 100644 --- a/src/main/java/xyz/playedu/api/service/impl/DepartmentServiceImpl.java +++ b/src/main/java/xyz/playedu/api/service/impl/DepartmentServiceImpl.java @@ -5,9 +5,11 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; +import xyz.playedu.api.domain.CourseDepartment; import xyz.playedu.api.domain.Department; import xyz.playedu.api.domain.UserDepartment; import xyz.playedu.api.exception.NotFoundException; +import xyz.playedu.api.service.CourseDepartmentService; import xyz.playedu.api.service.DepartmentService; import xyz.playedu.api.mapper.DepartmentMapper; import org.springframework.stereotype.Service; @@ -29,6 +31,9 @@ public class DepartmentServiceImpl extends ServiceImpl listByParentId(Integer id) { return list(query().getWrapper().eq("parent_id", id).orderByAsc("sort")); @@ -176,6 +181,16 @@ public class DepartmentServiceImpl extends ServiceImpl wrapper = userDepartmentService.query().getWrapper().eq("dep_id", depId); userDepartmentService.remove(wrapper); } + + @Override + public List getUserIdsByDepId(Integer depId) { + return userDepartmentService.list(userDepartmentService.query().getWrapper().eq("dep_id", depId)).stream().map(UserDepartment::getUserId).toList(); + } + + @Override + public List getCourseIdsByDepId(Integer depId) { + return courseDepartmentService.list(courseDepartmentService.query().getWrapper().eq("dep_id", depId)).stream().map(CourseDepartment::getCourseId).toList(); + } } diff --git a/src/main/java/xyz/playedu/api/service/impl/UserServiceImpl.java b/src/main/java/xyz/playedu/api/service/impl/UserServiceImpl.java index 761d52f..0fbfd72 100644 --- a/src/main/java/xyz/playedu/api/service/impl/UserServiceImpl.java +++ b/src/main/java/xyz/playedu/api/service/impl/UserServiceImpl.java @@ -215,6 +215,11 @@ public class UserServiceImpl extends ServiceImpl implements Us setPassword(HelperUtil.MD5(newPassword + user.getSalt())); }}); } + + @Override + public List chunks(List ids, List fields) { + return list(query().getWrapper().in("id", ids).select(fields)); + } }