From 4f268732be7a3968a823f0a5f3702884f47cd35e Mon Sep 17 00:00:00 2001 From: none Date: Tue, 21 Mar 2023 16:44:37 +0800 Subject: [PATCH] =?UTF-8?q?added:=20=E8=AF=BE=E6=97=B6=E6=89=B9=E9=87=8F?= =?UTF-8?q?=E5=88=9B=E5=BB=BA=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../backend/CourseHourController.java | 35 +++++++++++++++++++ .../backend/CourseHourMultiRequest.java | 26 ++++++++++++++ 2 files changed, 61 insertions(+) create mode 100644 src/main/java/xyz/playedu/api/request/backend/CourseHourMultiRequest.java diff --git a/src/main/java/xyz/playedu/api/controller/backend/CourseHourController.java b/src/main/java/xyz/playedu/api/controller/backend/CourseHourController.java index 44868ae..6887f6d 100644 --- a/src/main/java/xyz/playedu/api/controller/backend/CourseHourController.java +++ b/src/main/java/xyz/playedu/api/controller/backend/CourseHourController.java @@ -2,6 +2,7 @@ package xyz.playedu.api.controller.backend; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; +import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import xyz.playedu.api.PlayEduBCtx; @@ -13,6 +14,7 @@ import xyz.playedu.api.event.CourseHourCreatedEvent; import xyz.playedu.api.event.CourseHourDestroyEvent; import xyz.playedu.api.exception.NotFoundException; import xyz.playedu.api.middleware.BackendPermissionMiddleware; +import xyz.playedu.api.request.backend.CourseHourMultiRequest; import xyz.playedu.api.request.backend.CourseHourRequest; import xyz.playedu.api.request.backend.CourseHourSortRequest; import xyz.playedu.api.service.CourseChapterService; @@ -79,6 +81,39 @@ public class CourseHourController { return JsonResponse.success(); } + @BackendPermissionMiddleware(slug = BPermissionConstant.COURSE) + @PostMapping("/create-batch") + @Transactional + public JsonResponse storeMulti(@PathVariable(name = "courseId") Integer courseId, @RequestBody @Validated CourseHourMultiRequest req) { + if (req.getHours().size() == 0) { + return JsonResponse.error("参数为空"); + } + + List hours = new ArrayList<>(); + Date now = new Date(); + + for (CourseHourMultiRequest.CourseHourItem item : req.getHours()) { + hours.add(new CourseHour() {{ + setCourseId(courseId); + setChapterId(item.getChapterId()); + setSort(item.getSort()); + setType(item.getType()); + setRid(item.getRid()); + setTitle(item.getTitle()); + setDuration(item.getDuration()); + setCreatedAt(now); + }}); + } + + hourService.saveBatch(hours); + + // 只需要发布一次event就可以了 + CourseHour firstHour = hours.get(0); + ctx.publishEvent(new CourseHourCreatedEvent(this, PlayEduBCtx.getAdminUserID(), firstHour.getCourseId(), firstHour.getChapterId(), firstHour.getId())); + + return JsonResponse.success(); + } + @BackendPermissionMiddleware(slug = BPermissionConstant.COURSE) @GetMapping("/{id}") public JsonResponse edit(@PathVariable(name = "courseId") Integer courseId, @PathVariable(name = "id") Integer id) throws NotFoundException { diff --git a/src/main/java/xyz/playedu/api/request/backend/CourseHourMultiRequest.java b/src/main/java/xyz/playedu/api/request/backend/CourseHourMultiRequest.java new file mode 100644 index 0000000..74fffac --- /dev/null +++ b/src/main/java/xyz/playedu/api/request/backend/CourseHourMultiRequest.java @@ -0,0 +1,26 @@ +package xyz.playedu.api.request.backend; + +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.util.List; + +/** + * @Author 杭州白书科技有限公司 + * @create 2023/3/21 16:33 + */ +@Data +public class CourseHourMultiRequest { + @Data + public class CourseHourItem { + private Integer chapterId; + private String title; + private Integer duration; + private Integer sort; + private String type; + private Integer rid; + } + + @NotNull(message = "hours参数不存在") + private List hours; +}