diff --git a/src/main/java/xyz/playedu/api/checks/AdminPermissionCheck.java b/src/main/java/xyz/playedu/api/checks/AdminPermissionCheck.java index 95d8951..ae5fcda 100644 --- a/src/main/java/xyz/playedu/api/checks/AdminPermissionCheck.java +++ b/src/main/java/xyz/playedu/api/checks/AdminPermissionCheck.java @@ -162,6 +162,15 @@ public class AdminPermissionCheck implements ApplicationRunner { setSlug(BPermissionConstant.USER_LEARN); } }, + new AdminPermission() { + { + setSort(50); + setName("学习-删除"); + setSlug( + BPermissionConstant + .USER_LEARN_DESTROY); + } + }, }); // 线上课 put( diff --git a/src/main/java/xyz/playedu/api/constant/BPermissionConstant.java b/src/main/java/xyz/playedu/api/constant/BPermissionConstant.java index 332aed1..f49bc6d 100644 --- a/src/main/java/xyz/playedu/api/constant/BPermissionConstant.java +++ b/src/main/java/xyz/playedu/api/constant/BPermissionConstant.java @@ -42,6 +42,7 @@ public class BPermissionConstant { public static final String USER_UPDATE = "user-update"; public static final String USER_DESTROY = "user-destroy"; public static final String USER_LEARN = "user-learn"; + public static final String USER_LEARN_DESTROY = "user-learn-destroy"; public static final String COURSE = "course"; public static final String COURSE_USER = "course-user"; 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 ca293de..71b7566 100644 --- a/src/main/java/xyz/playedu/api/controller/backend/UserController.java +++ b/src/main/java/xyz/playedu/api/controller/backend/UserController.java @@ -505,4 +505,25 @@ public class UserController { return JsonResponse.data(data); } + + @BackendPermissionMiddleware(slug = BPermissionConstant.USER_LEARN_DESTROY) + @DeleteMapping("/{id}/learn-course/{courseId}") + @SneakyThrows + public JsonResponse destroyUserCourse( + @PathVariable(name = "id") Integer id, + @PathVariable(name = "courseId") Integer courseId) { + userCourseRecordService.destroy(id, courseId); + return JsonResponse.success(); + } + + @BackendPermissionMiddleware(slug = BPermissionConstant.USER_LEARN_DESTROY) + @DeleteMapping("/{id}/learn-course/{courseId}/hour/{hourId}") + @SneakyThrows + public JsonResponse destroyUserHour( + @PathVariable(name = "id") Integer id, + @PathVariable(name = "courseId") Integer courseId, + @PathVariable(name = "hourId") Integer hourId) { + userCourseHourRecordService.remove(id, courseId, hourId); + return JsonResponse.success(); + } } diff --git a/src/main/java/xyz/playedu/api/service/UserCourseHourRecordService.java b/src/main/java/xyz/playedu/api/service/UserCourseHourRecordService.java index 91e59c9..1a61e59 100644 --- a/src/main/java/xyz/playedu/api/service/UserCourseHourRecordService.java +++ b/src/main/java/xyz/playedu/api/service/UserCourseHourRecordService.java @@ -49,6 +49,8 @@ public interface UserCourseHourRecordService extends IService getUserCourseHourCount( Integer userId, List courseIds, Integer isFinished); diff --git a/src/main/java/xyz/playedu/api/service/UserCourseRecordService.java b/src/main/java/xyz/playedu/api/service/UserCourseRecordService.java index 83603fd..a3f1adb 100644 --- a/src/main/java/xyz/playedu/api/service/UserCourseRecordService.java +++ b/src/main/java/xyz/playedu/api/service/UserCourseRecordService.java @@ -43,6 +43,8 @@ public interface UserCourseRecordService extends IService { void destroy(Integer courseId, List ids); + void destroy(Integer userId, Integer courseId); + void removeByCourseId(Integer courseId); List chunks(List ids, List fields); diff --git a/src/main/java/xyz/playedu/api/service/impl/UserCourseHourRecordServiceImpl.java b/src/main/java/xyz/playedu/api/service/impl/UserCourseHourRecordServiceImpl.java index 1d8c46a..1743325 100644 --- a/src/main/java/xyz/playedu/api/service/impl/UserCourseHourRecordServiceImpl.java +++ b/src/main/java/xyz/playedu/api/service/impl/UserCourseHourRecordServiceImpl.java @@ -153,4 +153,13 @@ public class UserCourseHourRecordServiceImpl return pageResult; } + + @Override + public void remove(Integer userId, Integer courseId, Integer hourId) { + remove( + query().getWrapper() + .eq("user_id", userId) + .eq("course_id", courseId) + .eq("hour_id", hourId)); + } } diff --git a/src/main/java/xyz/playedu/api/service/impl/UserCourseRecordServiceImpl.java b/src/main/java/xyz/playedu/api/service/impl/UserCourseRecordServiceImpl.java index 8047885..fdb8cce 100644 --- a/src/main/java/xyz/playedu/api/service/impl/UserCourseRecordServiceImpl.java +++ b/src/main/java/xyz/playedu/api/service/impl/UserCourseRecordServiceImpl.java @@ -132,4 +132,9 @@ public class UserCourseRecordServiceImpl public List chunks(List ids, List fields) { return list(query().getWrapper().in("id", ids).select(fields)); } + + @Override + public void destroy(Integer userId, Integer courseId) { + remove(query().getWrapper().in("user_id", userId).eq("course_id", courseId)); + } }