diff --git a/src/main/java/xyz/playedu/api/bus/CourseBus.java b/src/main/java/xyz/playedu/api/bus/CourseBus.java deleted file mode 100644 index dcd4a94..0000000 --- a/src/main/java/xyz/playedu/api/bus/CourseBus.java +++ /dev/null @@ -1,65 +0,0 @@ -package xyz.playedu.api.bus; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; -import xyz.playedu.api.domain.CategoryCourse; -import xyz.playedu.api.domain.Course; -import xyz.playedu.api.domain.CourseDepartment; -import xyz.playedu.api.service.CategoryCourseService; -import xyz.playedu.api.service.CourseDepartmentService; - -import java.util.ArrayList; -import java.util.List; - -/** - * @Author 杭州白书科技有限公司 - * @create 2023/2/24 17:12 - */ -@Component -public class CourseBus { - - @Autowired - private CourseDepartmentService courseDepartmentService; - - @Autowired - private CategoryCourseService categoryCourseService; - - public void departmentRelate(Course course, Integer[] depIds) { - if (depIds == null || depIds.length == 0) { - return; - } - List courseDepartments = new ArrayList<>(); - for (int i = 0; i < depIds.length; i++) { - CourseDepartment courseDepartment = new CourseDepartment(); - courseDepartment.setCourseId(course.getId()); - courseDepartment.setDepId(depIds[i]); - courseDepartments.add(courseDepartment); - } - courseDepartmentService.saveBatch(courseDepartments); - } - - public void resetDepartmentRelate(Course course, Integer[] depIds) { - courseDepartmentService.removeByCourseId(course.getId()); - departmentRelate(course, depIds); - } - - public void categoryRelate(Course course, Integer[] categoryIds) { - if (categoryIds == null || categoryIds.length == 0) { - return; - } - List categoryCourses = new ArrayList<>(); - for (int i = 0; i < categoryIds.length; i++) { - CategoryCourse categoryCourse = new CategoryCourse(); - categoryCourse.setCourseId(course.getId()); - categoryCourse.setCategoryId(categoryIds[i]); - categoryCourses.add(categoryCourse); - } - categoryCourseService.saveBatch(categoryCourses); - } - - public void resetCategoryRelate(Course course, Integer[] categoryIds) { - categoryCourseService.removeByCourseId(course.getId()); - categoryRelate(course, categoryIds); - } - -} diff --git a/src/main/java/xyz/playedu/api/controller/backend/CourseController.java b/src/main/java/xyz/playedu/api/controller/backend/CourseController.java index 7b3a404..e82978c 100644 --- a/src/main/java/xyz/playedu/api/controller/backend/CourseController.java +++ b/src/main/java/xyz/playedu/api/controller/backend/CourseController.java @@ -8,15 +8,13 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import xyz.playedu.api.PlayEduBackendThreadLocal; -import xyz.playedu.api.bus.CourseBus; import xyz.playedu.api.constant.BPermissionConstant; import xyz.playedu.api.domain.*; import xyz.playedu.api.event.CourseDestroyEvent; +import xyz.playedu.api.exception.NotFoundException; import xyz.playedu.api.middleware.BackendPermissionMiddleware; import xyz.playedu.api.request.backend.CourseRequest; -import xyz.playedu.api.service.CategoryCourseService; import xyz.playedu.api.service.CourseCategoryService; -import xyz.playedu.api.service.CourseDepartmentService; import xyz.playedu.api.service.CourseService; import xyz.playedu.api.types.JsonResponse; import xyz.playedu.api.types.paginate.CoursePaginateFiler; @@ -40,15 +38,6 @@ public class CourseController { @Autowired private CourseCategoryService categoryService;//课程分类 - @Autowired - private CategoryCourseService categoryCourseService;//课程与分类的关联表 - - @Autowired - private CourseDepartmentService courseDepartmentService;//课程与部门的关联表 - - @Autowired - protected CourseBus courseBus; - @Autowired private ApplicationContext ctx; @@ -91,31 +80,17 @@ public class CourseController { @BackendPermissionMiddleware(slug = BPermissionConstant.COURSE) @PostMapping("/create") @Transactional - public JsonResponse store(@RequestBody @Validated CourseRequest request) { - Course course = new Course(); - course.setTitle(request.getTitle()); - course.setThumb(request.getThumb()); - course.setIsShow(request.getIsShow()); - course.setCreatedAt(new Date()); - course.setUpdatedAt(new Date()); - - courseService.save(course); - - courseBus.departmentRelate(course, request.getDepIds()); - courseBus.categoryRelate(course, request.getCategoryIds()); - + public JsonResponse store(@RequestBody @Validated CourseRequest req) { + courseService.createWithCategoryIdsAndDepIds(req.getTitle(), req.getThumb(), req.getIsShow(), req.getCategoryIds(), req.getDepIds()); return JsonResponse.success(); } @BackendPermissionMiddleware(slug = BPermissionConstant.COURSE) @GetMapping("/{id}") - public JsonResponse edit(@PathVariable(name = "id") Integer id) { - Course course = courseService.getById(id); - if (course == null) { - return JsonResponse.error("课程不存在"); - } - List depIds = courseDepartmentService.getDepIdsByCourseId(course.getId()); - List categoryIds = categoryCourseService.getDepIdsByCourseId(course.getId()); + public JsonResponse edit(@PathVariable(name = "id") Integer id) throws NotFoundException { + Course course = courseService.findOrFail(id); + List depIds = courseService.getDepIdsByCourseId(course.getId()); + List categoryIds = courseService.getCategoryIdsByCourseId(course.getId()); HashMap data = new HashMap<>(); data.put("course", course); @@ -128,31 +103,9 @@ public class CourseController { @BackendPermissionMiddleware(slug = BPermissionConstant.COURSE) @PutMapping("/{id}") @Transactional - public JsonResponse update(@PathVariable(name = "id") Integer id, @RequestBody @Validated CourseRequest request) { - Course course = courseService.getById(id); - if (course == null) { - return JsonResponse.error("课程不存在"); - } - - Course newCourse = new Course(); - newCourse.setId(course.getId()); - - if (!course.getTitle().equals(request.getTitle())) { - newCourse.setTitle(request.getTitle()); - } - if (!course.getThumb().equals(request.getThumb())) { - newCourse.setThumb(request.getThumb()); - } - if (!course.getIsShow().equals(request.getIsShow())) { - newCourse.setIsShow(request.getIsShow()); - } - courseService.updateById(newCourse); - - // 清空depIds - courseBus.resetDepartmentRelate(newCourse, request.getDepIds()); - // 清空categoryIds - courseBus.resetCategoryRelate(newCourse, request.getCategoryIds()); - + public JsonResponse update(@PathVariable(name = "id") Integer id, @RequestBody @Validated CourseRequest req) throws NotFoundException { + Course course = courseService.findOrFail(id); + courseService.updateWithCategoryIdsAndDepIds(course, req.getTitle(), req.getThumb(), req.getIsShow(), req.getCategoryIds(), req.getDepIds()); return JsonResponse.success(); } diff --git a/src/main/java/xyz/playedu/api/service/CategoryCourseService.java b/src/main/java/xyz/playedu/api/service/CategoryCourseService.java index 09fb278..1490a58 100644 --- a/src/main/java/xyz/playedu/api/service/CategoryCourseService.java +++ b/src/main/java/xyz/playedu/api/service/CategoryCourseService.java @@ -13,7 +13,7 @@ import java.util.List; public interface CategoryCourseService extends IService { List getCourseIdsByCategoryIds(Integer[] categoryIds); - List getDepIdsByCourseId(Integer id); + List getCategoryIdsByCourseId(Integer id); void removeByCourseId(Integer courseId); } diff --git a/src/main/java/xyz/playedu/api/service/CourseService.java b/src/main/java/xyz/playedu/api/service/CourseService.java index f5dfd75..b4066b1 100644 --- a/src/main/java/xyz/playedu/api/service/CourseService.java +++ b/src/main/java/xyz/playedu/api/service/CourseService.java @@ -2,16 +2,36 @@ package xyz.playedu.api.service; import xyz.playedu.api.domain.Course; import com.baomidou.mybatisplus.extension.service.IService; +import xyz.playedu.api.exception.NotFoundException; import xyz.playedu.api.types.paginate.CoursePaginateFiler; import xyz.playedu.api.types.paginate.PaginationResult; +import java.util.List; + /** -* @author tengteng -* @description 针对表【courses】的数据库操作Service -* @createDate 2023-02-24 14:14:01 -*/ + * @author tengteng + * @description 针对表【courses】的数据库操作Service + * @createDate 2023-02-24 14:14:01 + */ public interface CourseService extends IService { PaginationResult paginate(int page, int size, CoursePaginateFiler filter); + void createWithCategoryIdsAndDepIds(String title, String thumb, Integer isShow, Integer[] categoryIds, Integer[] depIds); + + void updateWithCategoryIdsAndDepIds(Course course, String title, String thumb, Integer isShow, Integer[] categoryIds, Integer[] depIds); + + void relateDepartments(Course course, Integer[] depIds); + + void resetRelateDepartments(Course course, Integer[] depIds); + + void relateCategories(Course course, Integer[] categoryIds); + + void resetRelateCategories(Course course, Integer[] categoryIds); + + Course findOrFail(Integer id) throws NotFoundException; + + List getDepIdsByCourseId(Integer courseId); + + List getCategoryIdsByCourseId(Integer courseId); } diff --git a/src/main/java/xyz/playedu/api/service/impl/CategoryCourseServiceImpl.java b/src/main/java/xyz/playedu/api/service/impl/CategoryCourseServiceImpl.java index 79bdef1..52adb11 100644 --- a/src/main/java/xyz/playedu/api/service/impl/CategoryCourseServiceImpl.java +++ b/src/main/java/xyz/playedu/api/service/impl/CategoryCourseServiceImpl.java @@ -31,7 +31,7 @@ public class CategoryCourseServiceImpl extends ServiceImpl getDepIdsByCourseId(Integer id) { + public List getCategoryIdsByCourseId(Integer id) { List ids = new ArrayList<>(); List categoryCourses = list(query().getWrapper().eq("course_id", id)); if (categoryCourses.size() == 0) { 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 00522f3..912eec9 100644 --- a/src/main/java/xyz/playedu/api/service/impl/CourseServiceImpl.java +++ b/src/main/java/xyz/playedu/api/service/impl/CourseServiceImpl.java @@ -5,7 +5,11 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.transaction.annotation.Transactional; +import xyz.playedu.api.domain.CategoryCourse; import xyz.playedu.api.domain.Course; +import xyz.playedu.api.domain.CourseDepartment; +import xyz.playedu.api.exception.NotFoundException; import xyz.playedu.api.service.CategoryCourseService; import xyz.playedu.api.service.CourseDepartmentService; import xyz.playedu.api.service.CourseService; @@ -15,6 +19,8 @@ import xyz.playedu.api.types.paginate.CoursePaginateFiler; import xyz.playedu.api.types.paginate.PaginationResult; import xyz.playedu.api.util.HelperUtil; +import java.util.ArrayList; +import java.util.Date; import java.util.List; /** @@ -70,6 +76,105 @@ public class CourseServiceImpl extends ServiceImpl impleme return pageResult; } + + @Override + @Transactional + public void createWithCategoryIdsAndDepIds(String title, String thumb, Integer isShow, Integer[] categoryIds, Integer[] depIds) { + Course course = new Course(); + course.setTitle(title); + course.setThumb(thumb); + course.setIsShow(isShow); + course.setCreatedAt(new Date()); + course.setUpdatedAt(new Date()); + + save(course); + + relateCategories(course, categoryIds); + relateDepartments(course, depIds); + } + + @Override + public void relateDepartments(Course course, Integer[] depIds) { + if (depIds == null || depIds.length == 0) { + return; + } + List courseDepartments = new ArrayList<>(); + for (int i = 0; i < depIds.length; i++) { + CourseDepartment courseDepartment = new CourseDepartment(); + courseDepartment.setCourseId(course.getId()); + courseDepartment.setDepId(depIds[i]); + courseDepartments.add(courseDepartment); + } + courseDepartmentService.saveBatch(courseDepartments); + } + + @Override + public void resetRelateDepartments(Course course, Integer[] depIds) { + courseDepartmentService.removeByCourseId(course.getId()); + relateDepartments(course, depIds); + } + + @Override + public void relateCategories(Course course, Integer[] categoryIds) { + if (categoryIds == null || categoryIds.length == 0) { + return; + } + List categoryCourses = new ArrayList<>(); + for (int i = 0; i < categoryIds.length; i++) { + CategoryCourse categoryCourse = new CategoryCourse(); + categoryCourse.setCourseId(course.getId()); + categoryCourse.setCategoryId(categoryIds[i]); + categoryCourses.add(categoryCourse); + } + categoryCourseService.saveBatch(categoryCourses); + } + + @Override + public void resetRelateCategories(Course course, Integer[] categoryIds) { + categoryCourseService.removeByCourseId(course.getId()); + relateCategories(course, categoryIds); + } + + @Override + @Transactional + public void updateWithCategoryIdsAndDepIds(Course course, String title, String thumb, Integer isShow, Integer[] categoryIds, Integer[] depIds) { + Course newCourse = new Course(); + newCourse.setId(course.getId()); + + if (!course.getTitle().equals(title)) { + newCourse.setTitle(title); + } + if (!course.getThumb().equals(thumb)) { + newCourse.setThumb(thumb); + } + if (!course.getIsShow().equals(isShow)) { + newCourse.setIsShow(isShow); + } + + updateById(newCourse); + + resetRelateCategories(newCourse, categoryIds); + resetRelateDepartments(newCourse, depIds); + } + + @Override + public Course findOrFail(Integer id) throws NotFoundException { + Course course = getOne(query().getWrapper().eq("id", id)); + if (course == null) { + throw new NotFoundException("课程不存在"); + } + return course; + } + + @Override + public List getDepIdsByCourseId(Integer courseId) { + return courseDepartmentService.getDepIdsByCourseId(courseId); + } + + @Override + public List getCategoryIdsByCourseId(Integer courseId) { + return categoryCourseService.getCategoryIdsByCourseId(courseId); + } }