Compare commits

..

2 Commits

4 changed files with 47 additions and 18 deletions

View File

@ -0,0 +1,10 @@
package org.jeecg.modules.aiol.constant;
public class CourseSectionTypeConst {
public static final int VIDEO = 0;
public static final int DOCUMENT = 1;
public static final int EXAM = 2;
public static final int HOMEWORK = 3;
public static final int EXERCISE = 4;
public static final int DISCUSSION = 5;
}

View File

@ -28,6 +28,7 @@ import org.jeecg.modules.aiol.service.IAiolClassService;
import org.jeecg.modules.aiol.service.IAiolEntityPermissionService;
import org.jeecg.modules.aiol.service.IAiolEntityLinkService;
import org.jeecg.modules.aiol.constant.EntityPermissionConst;
import org.jeecg.modules.aiol.constant.CourseSectionTypeConst;
import org.jeecg.modules.aiol.constant.EntityLinkConst;
import org.jeecg.modules.aiol.mapper.AiolCourseSignupMapper;
import org.jeecg.modules.aiol.mapper.AiolCourseTeacherMapper;
@ -471,32 +472,50 @@ public class AiolCourseController extends JeecgController<AiolCourse, IAiolCours
}
@GetMapping("/{courseId}/section_video/{sectionId}")
@Operation(summary = "查询视频章节详情", description = "该接口需要携带用户登录token。根据章节id查询章节详情不同类型的章节返回的内容不同")
@Operation(summary = "查询视频章节的关联对象详情", description = "该接口需要携带用户登录token。根据章节id查询章节详情不同类型的章节返回的内容不同")
public Result<List<AiolResource>> querySectionDetail(@PathVariable(value = "courseId") String courseId,
@PathVariable(value = "sectionId") String sectionId) {
// TODO GC 获取用户id根据courseId判断当前用户是否报名课程只有已报名的课程才能查看章节详情
List<AiolResource> list = aiolCourseService.getCourseSectionDetail(0, sectionId, AiolResource.class);
List<AiolResource> list = aiolCourseService.getCourseSectionDetail(CourseSectionTypeConst.VIDEO, sectionId, AiolResource.class);
return Result.OK(list);
}
@GetMapping("/{courseId}/section_document/{sectionId}")
@Operation(summary = "查询文档章节详情", description = "该接口需要携带用户登录token。根据章节id查询章节详情不同类型的章节返回的内容不同")
@Operation(summary = "查询文档章节的关联对象详情", description = "该接口需要携带用户登录token。根据章节id查询章节详情不同类型的章节返回的内容不同")
public Result<List<AiolResource>> querySectionDocumentDetail(@PathVariable(value = "courseId") String courseId,
@PathVariable(value = "sectionId") String sectionId) {
// TODO GC 获取用户id根据courseId判断当前用户是否报名课程只有已报名的课程才能查看章节详情
List<AiolResource> list = aiolCourseService.getCourseSectionDetail(CourseSectionTypeConst.DOCUMENT, sectionId, AiolResource.class);
return Result.OK(list);
}
List<AiolResource> list = aiolCourseService.getCourseSectionDetail(1, sectionId, AiolResource.class);
@GetMapping("/{courseId}/section_exam/{sectionId}")
@Operation(summary = "查询考试章节的关联对象详情", description = "该接口需要携带用户登录token。根据章节id查询章节详情不同类型的章节返回的内容不同")
public Result<List<AiolExam>> querySectionExamDetail(@PathVariable(value = "courseId") String courseId,
@PathVariable(value = "sectionId") String sectionId) {
List<AiolExam> list = aiolCourseService.getCourseSectionDetail(CourseSectionTypeConst.EXAM, sectionId, AiolExam.class);
return Result.OK(list);
}
@GetMapping("/{courseId}/section_homework/{sectionId}")
@Operation(summary = "查询作业章节详情", description = "该接口需要携带用户登录token。根据章节id查询章节详情不同类型的章节返回的内容不同")
@Operation(summary = "查询作业章节的关联对象详情", description = "该接口需要携带用户登录token。根据章节id查询章节详情不同类型的章节返回的内容不同")
public Result<List<AiolHomework>> querySectionHomeworkDetail(@PathVariable(value = "courseId") String courseId,
@PathVariable(value = "sectionId") String sectionId) {
// TODO GC 获取用户id根据courseId判断当前用户是否报名课程只有已报名的课程才能查看章节详情
List<AiolHomework> list = aiolCourseService.getCourseSectionDetail(CourseSectionTypeConst.HOMEWORK, sectionId, AiolHomework.class);
return Result.OK(list);
}
List<AiolHomework> list = aiolCourseService.getCourseSectionDetail(3, sectionId, AiolHomework.class);
@GetMapping("/{courseId}/section_exercise/{sectionId}")
@Operation(summary = "查询练习章节的关联对象详情", description = "该接口需要携带用户登录token。根据章节id查询章节详情不同类型的章节返回的内容不同")
public Result<List<AiolExam>> querySectionExerciseDetail(@PathVariable(value = "courseId") String courseId,
@PathVariable(value = "sectionId") String sectionId) {
List<AiolExam> list = aiolCourseService.getCourseSectionDetail(CourseSectionTypeConst.EXERCISE, sectionId, AiolExam.class);
return Result.OK(list);
}
@GetMapping("/{courseId}/section_discussion/{sectionId}")
@Operation(summary = "查询讨论章节的关联对象详情", description = "该接口需要携带用户登录token。根据章节id查询章节详情不同类型的章节返回的内容不同")
public Result<List<AiolDiscussion>> querySectionDiscussionDetail(@PathVariable(value = "courseId") String courseId,
@PathVariable(value = "sectionId") String sectionId) {
List<AiolDiscussion> list = aiolCourseService.getCourseSectionDetail(CourseSectionTypeConst.DISCUSSION, sectionId, AiolDiscussion.class);
return Result.OK(list);
}

View File

@ -236,7 +236,7 @@ public class AiolResourceController extends JeecgController<AiolResource, IAiolR
@PostMapping("/video_upload")
@Operation(summary = "课程视频文件上传", description = "课程视频文件上传,创建资源记录并关联到课程")
public Result<Map<String, Object>> upload(
public Result<AiolResource> upload(
@RequestParam("file") MultipartFile file,
@RequestParam("courseId") String courseId,
@RequestParam("name") String name,
@ -292,7 +292,7 @@ public class AiolResourceController extends JeecgController<AiolResource, IAiolR
log.info("视频上传成功: resourceId={}, courseId={}, name={}",
resource.getId(), courseId, name);
return Result.OK(resource.getId());
return Result.OK(resource);
} catch (Exception e) {
log.error("视频上传失败: courseId={}, name={}, error={}",
courseId, name, e.getMessage(), e);
@ -302,7 +302,7 @@ public class AiolResourceController extends JeecgController<AiolResource, IAiolR
@PostMapping("/document_upload")
@Operation(summary = "课程文档文件上传", description = "上传文档文件并关联到课程支持word、ppt、excel、pdf、txt、markdown等格式")
public Result<String> uploadDocument(
public Result<AiolResource> uploadDocument(
@RequestParam("file") MultipartFile file,
@RequestParam("courseId") String courseId,
@RequestParam("name") String name,
@ -359,7 +359,7 @@ public class AiolResourceController extends JeecgController<AiolResource, IAiolR
log.info("文档上传成功: resourceId={}, courseId={}, name={}",
resource.getId(), courseId, name);
return Result.OK(resource.getId());
return Result.OK(resource);
} catch (Exception e) {
log.error("文档上传失败: courseId={}, name={}, error={}",
@ -370,7 +370,7 @@ public class AiolResourceController extends JeecgController<AiolResource, IAiolR
@PostMapping("/image_upload")
@Operation(summary = "课程图片文件上传", description = "上传图片文件并关联到课程支持jpg、jpeg、png、gif、bmp、webp等格式")
public Result<String> uploadImage(
public Result<AiolResource> uploadImage(
@RequestParam("file") MultipartFile file,
@RequestParam("courseId") String courseId,
@RequestParam("name") String name,
@ -427,8 +427,7 @@ public class AiolResourceController extends JeecgController<AiolResource, IAiolR
log.info("图片上传成功: resourceId={}, courseId={}, name={}",
resource.getId(), courseId, name);
return Result.OK(resource.getId());
return Result.OK(resource);
} catch (Exception e) {
log.error("图片上传失败: courseId={}, name={}, error={}",
courseId, name, e.getMessage(), e);

View File

@ -298,7 +298,8 @@ public class AiolUserController {
// 4. 检查邀请码是否对应某个班级
LambdaQueryWrapper<AiolClass> classQuery = new LambdaQueryWrapper<>();
classQuery.eq(AiolClass::getInviteCode, inviteCode);
AiolClass targetClass = aiolClassService.getOne(classQuery);
// 允许存在重复邀请码时仅取第一条避免抛出期望1条结果却查询到多条的异常
AiolClass targetClass = aiolClassService.getOne(classQuery, false);
if (targetClass == null) {
return result.error500("邀请码无效,请检查邀请码是否正确");
}