From 3371d3477b66949d9c3590a115ac712d58a6215f Mon Sep 17 00:00:00 2001 From: xiaoCJ <406612557@qq.com> Date: Tue, 16 Jul 2024 17:19:34 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=B9=E4=B8=BA=E6=A8=A1=E7=B3=8A=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/CourseConfigController.java | 2 +- .../LearningResourceController.java | 37 ++++- .../controller/api/CaseApi.java | 22 ++- .../controller/api/ObjectiveApi.java | 23 ++-- .../controller/api/ResourceApi.java | 126 ++++++++++++++++-- .../mapper/SysResourceMapper.java | 3 +- .../resources/mapper/SysResourceMapper.xml | 3 + 7 files changed, 188 insertions(+), 28 deletions(-) diff --git a/src/main/java/com/sztzjy/resource_center/controller/CourseConfigController.java b/src/main/java/com/sztzjy/resource_center/controller/CourseConfigController.java index 0caedeb..1b6b489 100644 --- a/src/main/java/com/sztzjy/resource_center/controller/CourseConfigController.java +++ b/src/main/java/com/sztzjy/resource_center/controller/CourseConfigController.java @@ -132,7 +132,7 @@ public class CourseConfigController { @RequestParam Integer index, @RequestParam Integer size) { PageHelper.startPage(index, size); - List sysResourceDtos = sysResourceMapper.selectResource(oneID, twoID, threeID); + List sysResourceDtos = sysResourceMapper.selectResource(oneID, twoID, threeID,null); PageInfo pageInfo = new PageInfo(sysResourceDtos); return new ResultEntity>(pageInfo); } diff --git a/src/main/java/com/sztzjy/resource_center/controller/LearningResourceController.java b/src/main/java/com/sztzjy/resource_center/controller/LearningResourceController.java index a73c42f..e125965 100644 --- a/src/main/java/com/sztzjy/resource_center/controller/LearningResourceController.java +++ b/src/main/java/com/sztzjy/resource_center/controller/LearningResourceController.java @@ -7,6 +7,7 @@ import com.sztzjy.resource_center.entity.SysResource; import com.sztzjy.resource_center.entity.dto.SysResourceDto; import com.sztzjy.resource_center.mapper.SysResourceMapper; import com.sztzjy.resource_center.util.ResultEntity; +import com.sztzjy.resource_center.util.file.IFileUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; @@ -35,7 +36,8 @@ public class LearningResourceController { private SysResourceMapper sysResourceMapper; @Value("${file.path}") private String filePath; - + @Autowired + private IFileUtil fileUtil; @AnonymousAccess @@ -63,10 +65,22 @@ public class LearningResourceController { } + //下载资源文件 + @GetMapping("downloadResource") + @ApiOperation("下载资源文件") + @AnonymousAccess + public void downloadResource(@ApiParam("资源ID") @RequestParam String resourceId, HttpServletResponse response) { + SysResource sysResource = sysResourceMapper.selectByPrimaryKey(resourceId); + if ("课件".equals(sysResource.getResourceType())) { + fileUtil.download(response, sysResource.getResourceName(), sysResource.getUrl()); + } + } + + @GetMapping("/getResource") @ApiOperation("预览/获取视频或课件") @AnonymousAccess - public ResponseEntity streamVideo(@ApiParam("资源ID") @RequestParam String id,HttpServletResponse response) { + public ResponseEntity streamVideo(@ApiParam("资源ID") @RequestParam String id, HttpServletResponse response) { SysResource sysResource = sysResourceMapper.selectByPrimaryKey(id); String url = sysResource.getUrl(); @@ -83,17 +97,26 @@ public class LearningResourceController { return ResponseEntity.notFound().build(); } } else if ("课件".equals(sysResource.getResourceType())) { -// fileUtil.getPdf(response, name, url); if (videoFile.exists()) { -// Path path = Paths.get(videoPath); FileSystemResource fileSystemResource = new FileSystemResource(videoFile); - return ResponseEntity.ok() - .contentType(MediaType.parseMediaType("application/pdf")) - .body(fileSystemResource); + if (url.endsWith("pptx")) { + return ResponseEntity.ok() + .contentType(MediaType.parseMediaType("application/vnd.openxmlformats-officedocument.presentationml.presentation")) + .body(fileSystemResource); + } else if (url.endsWith("ppt")) { + return ResponseEntity.ok() + .contentType(MediaType.parseMediaType("application/vnd.ms-powerpoint")) + .body(fileSystemResource); + } else { + return ResponseEntity.ok() + .contentType(MediaType.parseMediaType("application/pdf")) + .body(fileSystemResource); + } } else { return ResponseEntity.notFound().build(); } } return ResponseEntity.notFound().build(); } + } diff --git a/src/main/java/com/sztzjy/resource_center/controller/api/CaseApi.java b/src/main/java/com/sztzjy/resource_center/controller/api/CaseApi.java index 143626b..8dbd304 100644 --- a/src/main/java/com/sztzjy/resource_center/controller/api/CaseApi.java +++ b/src/main/java/com/sztzjy/resource_center/controller/api/CaseApi.java @@ -235,8 +235,18 @@ public class CaseApi { * 根据三级ID查询案例题集合 * 方法名:selectCaseByChapterId * 参数:threeId - * return:List + * return:List */ + //案例题步骤内容查看 caseStepId + @PostMapping("selectCaseByChapterId") + @ApiOperation("根据三级ID查询案例题集合") + public List selectCaseByChapterId(@RequestParam String threeId) { + SysCaseQuestionExample example = new SysCaseQuestionExample(); + example.createCriteria().andThreeIdEqualTo(threeId); + List list = caseQuestionMapper.selectByExample(example); + return list; + } + /** * 根据案例题IDList 查询案例题步骤并排序 @@ -244,5 +254,13 @@ public class CaseApi { * 参数:caseIdList * return:List */ - + @PostMapping("selectCaseStepListBatchByIdListAndSort") + @ApiOperation("查询案例题步骤并排序") + public List selectCaseByChapterId(@RequestParam List caseIdList) { + SysCaseQuestionStepExample example = new SysCaseQuestionStepExample(); + example.createCriteria().andCaseIdIn(caseIdList); + example.setOrderByClause("sort"); + List sysCaseQuestionStepWithBLOBs = caseQuestionStepMapper.selectByExampleWithBLOBs(example); + return sysCaseQuestionStepWithBLOBs; + } } diff --git a/src/main/java/com/sztzjy/resource_center/controller/api/ObjectiveApi.java b/src/main/java/com/sztzjy/resource_center/controller/api/ObjectiveApi.java index 142bc72..f450ef3 100644 --- a/src/main/java/com/sztzjy/resource_center/controller/api/ObjectiveApi.java +++ b/src/main/java/com/sztzjy/resource_center/controller/api/ObjectiveApi.java @@ -9,7 +9,6 @@ import com.sztzjy.resource_center.entity.dto.SysObjectiveQuestionsDto; import com.sztzjy.resource_center.mapper.SysObjectiveQuestionsMapper; import com.sztzjy.resource_center.mapper.SysOneCatalogMapper; import com.sztzjy.resource_center.mapper.SysTopicAndCourseMapper; -import com.sztzjy.resource_center.util.ResultEntity; import com.sztzjy.resource_center.util.file.IFileUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -19,7 +18,6 @@ import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.ss.usermodel.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; -import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -164,12 +162,12 @@ public class ObjectiveApi { @ApiOperation("课程配置/题目条件查询") @PostMapping("selectObjectiveList") //todo 关于老师删除的题库如何查询 private PageInfo selectObjectiveList(@RequestParam Integer index, - @RequestParam Integer size, - @RequestParam(required = false) String courseId, - @RequestParam(required = false) String chapterId, - @RequestParam(required = false) String type, - @RequestParam String schoolId, - @ApiParam("题干") @RequestParam(required = false) String content) { + @RequestParam Integer size, + @RequestParam(required = false) String courseId, + @RequestParam(required = false) String chapterId, + @RequestParam(required = false) String type, + @RequestParam String schoolId, + @ApiParam("题干") @RequestParam(required = false) String content) { PageHelper.startPage(index, size); List list = sysObjectiveQuestionMapper.getTopicByConfig(null, courseId, chapterId, type, schoolId, content); PageInfo pageInfo = new PageInfo(list); @@ -304,4 +302,13 @@ public class ObjectiveApi { * 参数:objectIdList * return:List */ + @AnonymousAccess + @ApiOperation("根据客观题IDList批量查询客观题") + @PostMapping("selectBatchByIdList") + private List selectBatchByIdList(@RequestParam List objectIdList) { + SysObjectiveQuestionsExample example = new SysObjectiveQuestionsExample(); + example.createCriteria().andObjectiveIdIn(objectIdList); + List sysObjectiveQuestions = sysObjectiveQuestionMapper.selectByExample(example); + return sysObjectiveQuestions; + } } diff --git a/src/main/java/com/sztzjy/resource_center/controller/api/ResourceApi.java b/src/main/java/com/sztzjy/resource_center/controller/api/ResourceApi.java index ab02025..0bfaa03 100644 --- a/src/main/java/com/sztzjy/resource_center/controller/api/ResourceApi.java +++ b/src/main/java/com/sztzjy/resource_center/controller/api/ResourceApi.java @@ -1,19 +1,117 @@ package com.sztzjy.resource_center.controller.api; +import cn.hutool.core.util.IdUtil; +import com.sztzjy.resource_center.annotation.AnonymousAccess; +import com.sztzjy.resource_center.entity.SysOneCatalog; +import com.sztzjy.resource_center.entity.SysOneCatalogExample; +import com.sztzjy.resource_center.entity.SysResource; +import com.sztzjy.resource_center.entity.SysResourceAndCourse; +import com.sztzjy.resource_center.entity.dto.SysResourceDto; +import com.sztzjy.resource_center.mapper.SysCaseQuestionMapper; +import com.sztzjy.resource_center.mapper.SysOneCatalogMapper; +import com.sztzjy.resource_center.mapper.SysResourceAndCourseMapper; +import com.sztzjy.resource_center.mapper.SysResourceMapper; +import com.sztzjy.resource_center.util.file.IFileUtil; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import java.util.Date; +import java.util.List; @RestController @Api(tags = "资源方面API") @RequestMapping("api/tea/ResourceApi") public class ResourceApi { + + @Autowired + private SysResourceMapper sysResourceMapper; + @Autowired + private SysResourceAndCourseMapper sysResourceAndCourseMapper; + @Autowired + private SysCaseQuestionMapper sysCaseQuestionMapper; + @Autowired + SysOneCatalogMapper oneCatalogMapper; + @Autowired + private IFileUtil fileUtil; + + + private SysOneCatalog getSysOneCatalogs(String systemOwner) { + SysOneCatalogExample example = new SysOneCatalogExample(); + example.createCriteria().andOneNameEqualTo(systemOwner); + List sysOneCatalogs = oneCatalogMapper.selectByExample(example); + return sysOneCatalogs.get(0); + } + + /** * 上传资源文件 * 方法名:uploadResource - * 参数:MultipartFile schoolId courseId resourceType systemOwner + * 参数:MultipartFile schoolId twoId resourceType systemOwner * return: boolean */ + @AnonymousAccess + @ApiOperation("上传资源文件") + @PostMapping("uploadResource") + public Boolean uploadResource(@RequestParam MultipartFile file, + @RequestParam String schoolId, + @RequestParam String twoId, + @RequestParam String twoName, + @RequestParam String resourceType, + @RequestParam String systemOwner) { + if (file == null) { + return false; + } + //取到文件后缀名 + String fileName = file.getName(); + int lastIndex = fileName.lastIndexOf("."); + String extension = fileName.substring(lastIndex); + + SysResource sysResource = new SysResource(); + //判断文件type //todo 格式可能不够全 + if (extension.equals(".pdf") || extension.equals(".ppt") || extension.equals(".pptx") + || extension.equals(".xlsx") || extension.equals(".xls") + || extension.equals(".doc") || extension.equals(".docx")) { + sysResource.setResourceType("课件"); + } else if (extension.equals(".mp4") || extension.equals(".wmv") || extension.equals(".avi")) { + sysResource.setResourceType("视频"); + } else { + return false; + } + String url = fileUtil.upload(file); + String uuid = IdUtil.randomUUID(); + sysResource.setResourceId(uuid); + sysResource.setUrl(url); + sysResource.setSource(schoolId); //管理员或者 xx学校 + sysResource.setResourceName(fileName); + sysResource.setStatus(1); + sysResource.setCreateTime(new Date()); //todo 测试修改资源之后 新增时间会不会变化,有变化就错了 + sysResourceMapper.insert(sysResource); + + //绑定资源的对应关系 + try { + SysResourceAndCourse sysResourceAndCourse = new SysResourceAndCourse(); + SysOneCatalog sysOneCatalogs = getSysOneCatalogs(systemOwner); + String oneId = sysOneCatalogs.getOneId(); + sysResourceAndCourse.setId(IdUtil.randomUUID()); + sysResourceAndCourse.setOneId(oneId); + sysResourceAndCourse.setTwoId(twoId); + sysResourceAndCourse.setOneName(systemOwner); + sysResourceAndCourse.setTwoName(twoName); + sysResourceAndCourse.setResourceId(uuid); //资源ID + sysResourceAndCourseMapper.insert(sysResourceAndCourse); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + return true; + } + /** * 查看资源文件列表 @@ -21,6 +119,15 @@ public class ResourceApi { * 参数:schoolId twoId oneId * return: List */ + @AnonymousAccess + @ApiOperation("查看资源文件列表") + @PostMapping("selectResource") + public List selectResource(@RequestParam String oneId, //这里传的是一级的名称 + @RequestParam String twoId, + @RequestParam String schoolId) { + SysOneCatalog sysOneCatalogs = getSysOneCatalogs(oneId); + return sysResourceMapper.selectResource(sysOneCatalogs.getOneId(), twoId, null, schoolId); + } /** * 根据章节查看资源文件列表 @@ -28,12 +135,13 @@ public class ResourceApi { * 参数:threeId oneId * return: List */ - - /** - * 资源文件下载 - * 方法名:downloadResource - * 参数:resourceDataName resourceId response - * return: void - * method GET - */ + @AnonymousAccess + @ApiOperation("根据章节查看资源文件列表") + @PostMapping("selectResourceByChapterId") + public List selectResourceByChapterId(@RequestParam String oneId, //这里传的是一级的名称 + @RequestParam String threeId, + @RequestParam String source) { + SysOneCatalog sysOneCatalogs = getSysOneCatalogs(oneId); + return sysResourceMapper.selectResource(sysOneCatalogs.getOneId(), null, threeId, source); + } } diff --git a/src/main/java/com/sztzjy/resource_center/mapper/SysResourceMapper.java b/src/main/java/com/sztzjy/resource_center/mapper/SysResourceMapper.java index 608fa72..6b28a63 100644 --- a/src/main/java/com/sztzjy/resource_center/mapper/SysResourceMapper.java +++ b/src/main/java/com/sztzjy/resource_center/mapper/SysResourceMapper.java @@ -36,7 +36,8 @@ public interface SysResourceMapper { List selectResource(@Param("oneId") String oneId, @Param("twoId") String twoId, - @Param("threeId") String threeId); + @Param("threeId") String threeId, + @Param("source") String source); List selectResourceByRepeat(@Param("oneId") String oneId, @Param("twoId") String twoId, diff --git a/src/main/resources/mapper/SysResourceMapper.xml b/src/main/resources/mapper/SysResourceMapper.xml index e2258f1..2bae0ac 100644 --- a/src/main/resources/mapper/SysResourceMapper.xml +++ b/src/main/resources/mapper/SysResourceMapper.xml @@ -415,6 +415,9 @@ and sc.three_id = #{threeId} + + and sr.source = #{source} + order by sr.create_time