From bb95bd444eb4a5406174593b4b150a17d082b94c Mon Sep 17 00:00:00 2001 From: Alan <3052806735@qq.com> Date: Sat, 3 Aug 2024 18:27:15 +0800 Subject: [PATCH 01/13] =?UTF-8?q?=E8=AF=BE=E7=A8=8B=E7=9B=AE=E6=A0=87?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E4=BB=A3=E7=A0=81=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../teaching/backend/common/ErrorCode.java | 2 +- .../controller/courses/CoursesController.java | 17 +--- .../courses/ObjectiveContentsController.java | 1 - .../courses/CourseObjectivesServiceImpl.java | 40 ++++---- .../impl/courses/CoursesServiceImpl.java | 98 ++++++++++--------- .../ObjectiveContentKnowServiceImpl.java | 29 +++--- .../courses/ObjectiveContentsServiceImpl.java | 2 +- .../teaching/backend/utils/CourseCode.java | 4 +- 8 files changed, 93 insertions(+), 100 deletions(-) diff --git a/src/main/java/com/teaching/backend/common/ErrorCode.java b/src/main/java/com/teaching/backend/common/ErrorCode.java index 4b2a66e..95830fb 100644 --- a/src/main/java/com/teaching/backend/common/ErrorCode.java +++ b/src/main/java/com/teaching/backend/common/ErrorCode.java @@ -18,7 +18,7 @@ public enum ErrorCode { STUDENT_NOT_EXIT(40006, "缺少学生信息"), COURSES_NOT_EXIT(40007, "缺少课程信息"), CONTENT_NOT_EXIT(40008, "内容id不存在"), - KNOWS_EXIT(40009, "该项下面存在关联的知识点"), + KNOWS_EXIT(40009, "该项下面存在关联的知识点,请在删除关联的知识点后再来操作!"), INVALID_ROLE(400010, "角色不存在"), NOT_LOGIN_ERROR(40100, "未登录"), diff --git a/src/main/java/com/teaching/backend/controller/courses/CoursesController.java b/src/main/java/com/teaching/backend/controller/courses/CoursesController.java index 07fb7f2..8840c0c 100644 --- a/src/main/java/com/teaching/backend/controller/courses/CoursesController.java +++ b/src/main/java/com/teaching/backend/controller/courses/CoursesController.java @@ -3,19 +3,14 @@ package com.teaching.backend.controller.courses; import com.teaching.backend.common.BaseResponse; import com.teaching.backend.common.CommonResult; -import com.teaching.backend.common.ErrorCode; import com.teaching.backend.common.ResultUtils; -import com.teaching.backend.exception.BusinessException; - import com.teaching.backend.filter.ValidateParams; import com.teaching.backend.model.dto.courses.CoursesDTO; import com.teaching.backend.model.dto.courses.PageDTO; - import com.teaching.backend.model.entity.courses.Courses; import com.teaching.backend.model.entity.umsAdmin.UmsStudent; import com.teaching.backend.model.query.CourseQuery; import com.teaching.backend.model.vo.courses.CoursesVO; -import com.teaching.backend.model.vo.umsAdmin.UmsStudentVO; import com.teaching.backend.service.courses.ICoursesService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -24,7 +19,9 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; -import java.util.*; +import java.util.HashMap; +import java.util.LinkedHashSet; +import java.util.Map; /** *

@@ -87,7 +84,6 @@ public class CoursesController { @ApiOperation("查询课程列表") @ValidateParams({"userId"}) @GetMapping("/page") -// @PostMapping("/page") public BaseResponse> getCourses(CourseQuery courseQuery){ PageDTO coursesList = coursesService.queryCourses(courseQuery); return ResultUtils.success(coursesList); @@ -97,9 +93,6 @@ public class CoursesController { @ValidateParams({"id"}) @GetMapping("/{id}") public BaseResponse getByIdCourse(@PathVariable String id){ - if(id==null){ - throw new BusinessException(ErrorCode.PARAMS_ERROR,"课程id为空"); - } Courses course = coursesService.getById(id); CoursesDTO coursesDTO = new CoursesDTO(); BeanUtils.copyProperties(course,coursesDTO); @@ -114,16 +107,12 @@ public class CoursesController { return ResultUtils.success("编辑成功"); } - //TODO:删除功能暂未完善,数据缺失 - // 暂时发现有个漏洞 就是目标关联的有知识点的时候还是可以直接删除 - // (当有内容的时候本来就是得先删除内容--关联也有知识点 所以内容下面的不用校验 ) @ApiOperation("根据id删除课程") @ValidateParams({"id"}) @DeleteMapping("/{id}") public BaseResponse deleteCourses(@PathVariable String id){ coursesService.deleteBatchByIds(id); -// coursesService.removeBatchByIds(ids); return ResultUtils.success("删除成功"); } diff --git a/src/main/java/com/teaching/backend/controller/courses/ObjectiveContentsController.java b/src/main/java/com/teaching/backend/controller/courses/ObjectiveContentsController.java index 17a9462..cbe1c5e 100644 --- a/src/main/java/com/teaching/backend/controller/courses/ObjectiveContentsController.java +++ b/src/main/java/com/teaching/backend/controller/courses/ObjectiveContentsController.java @@ -39,7 +39,6 @@ public class ObjectiveContentsController { @ValidateParams({"id"}) @DeleteMapping("/{id}") public BaseResponse deleteContent(@PathVariable String id){ -// objectiveContentsService.removeById(id); String data = objectiveContentsService.deleteById(id); return ResultUtils.success(data); } diff --git a/src/main/java/com/teaching/backend/service/impl/courses/CourseObjectivesServiceImpl.java b/src/main/java/com/teaching/backend/service/impl/courses/CourseObjectivesServiceImpl.java index f5682e6..435f710 100644 --- a/src/main/java/com/teaching/backend/service/impl/courses/CourseObjectivesServiceImpl.java +++ b/src/main/java/com/teaching/backend/service/impl/courses/CourseObjectivesServiceImpl.java @@ -25,6 +25,8 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import static com.teaching.backend.utils.CourseCode.TOTAL_OBJECTIVE_HAS_NO_CHILD; + /** *

* 服务实现类 @@ -54,33 +56,33 @@ public class CourseObjectivesServiceImpl extends ServiceImpl() .eq(CourseObjectives::getPid, pid) .eq(CourseObjectives::getType, type)); + if (count==CourseCode.OBJECTIVE_EXIT.getValue()){ throw new BusinessException(ErrorCode.CONTENT_EXISTS,"该类型的目标已存在,禁止重复添加!"); } - if (type!=CourseCode.SI_ZHENG_TYPE.getValue()){ + + if (!type.equals(CourseCode.SI_ZHENG_TYPE.getValue())){ Long sz = SZ_EXIT(courseObjectivesDTO); if (sz!=CourseCode.SI_ZHENG_EXIT.getValue()){ throw new BusinessException(ErrorCode.PARAMS_ILLEGAL,"请在添加完思政目标以后再添加此类型目标!"); } } - courseObjectivesMapper.insert(courseObjectivesNew); + //插入新的课程目标 + int insert = courseObjectivesMapper.insert(courseObjectivesNew); + //插入数据以后要把总体目标那边的haschild改成1 + if (insert>0){ + CourseObjectives courseObjectivesOld = courseObjectivesMapper.selectById(pid); + if (courseObjectivesOld.getHasChild() == TOTAL_OBJECTIVE_HAS_NO_CHILD.getValue()) { + courseObjectivesOld.setHasChild(1); + courseObjectivesMapper.updateById(courseObjectivesOld); + } + } return "添加成功"; - - //往表里面写分项目标 -// courseObjectivesMapper.insert(courseObjectivesNew); -// //插入数据以后要把总体目标那边的haschild改成1 -// CourseObjectives courseObjectivesOld = courseObjectivesMapper.selectById(pid); -// courseObjectivesOld.setHasChild(1); -// courseObjectivesMapper.updateById(courseObjectivesOld); } private Long SZ_EXIT(CourseObjectivesDTO courseObjectivesDTO) { @@ -110,7 +112,7 @@ public class CourseObjectivesServiceImpl extends ServiceImpl() .eq(ObjectiveContentKnow::getObjectiveOrContent, id)); if(count > CourseCode.KNOWS_EXIT.getValue()){ @@ -121,9 +123,9 @@ public class CourseObjectivesServiceImpl extends ServiceImpl queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(CourseObjectives::getPid, pid); Long countSZ = courseObjectivesMapper.selectCount(queryWrapper); - if (countSZ==CourseCode.SI_ZHENG_EXIT.getValue()){ + if (countSZ.equals(CourseCode.SI_ZHENG_EXIT.getValue())){ Long countContentsSZ = getCount(id); - if (countContentsSZ<(CourseCode.CONTENT_EXIT.getValue())) + if (countContentsSZ == (CourseCode.CONTENT_EXIT.getValue())) { // 删除操作和更新父目标状态 deleteObjectiveAndUpdateParent(id, pid); @@ -140,7 +142,7 @@ public class CourseObjectivesServiceImpl extends ServiceImpl impl @Override @Transactional public String saveCourseWithObjective(CoursesDTO coursesDTO) { -// String teacher = coursesDTO.getTeacher(); -// if (teacher == null || teacher.equals("")) { -// throw new BusinessException(ErrorCode.USERNAME_NOT_EXIT); -// } + // 初始化并生成新的课程ID Courses courses = new Courses(); String courseId = UUID.randomUUID().toString().replace("-", ""); - CourseObjectives courseObjectives = new CourseObjectives(); + // 拷贝属性并设置创建时间和ID BeanUtils.copyProperties(coursesDTO, courses); courses.setCreateTime(LocalDateTime.now()); courses.setId(courseId); + + // 检查课程代码是否已存在 String code = coursesDTO.getCode(); - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("code", code); - Long count = coursesMapper.selectCount(queryWrapper); - if (count == 0) { - int insert = coursesMapper.insert(courses); - if (insert > 0) { - Courses coursesNew = coursesMapper.selectById(courseId); - courseObjectives.setCourseId(courseId); - courseObjectives.setType(CourseCode.TOTAL_OBJECTIVE_TYPE.getValue()); -// courseObjectives.setName(coursesNew.getName() + "课程总体目标"); - int insertTotal = courseObjectivesMapper.insert(courseObjectives); - if (insertTotal>0){ - CourseObjectives courseTotalObjectives = courseObjectivesMapper.selectOne - (new LambdaQueryWrapper().eq(CourseObjectives::getCourseId, courseId)); - String courseTotalObjectivesId = courseTotalObjectives.getId(); - List objectivesTypes = objectivesTypeMapper.selectList(new LambdaQueryWrapper()); - ArrayList courseObjectivesFList = new ArrayList<>(); - CourseObjectives courseObjectivesF = null; - for (ObjectivesType objectivesType : objectivesTypes) { - Integer typeId = objectivesType.getId(); - if (!typeId.equals(CourseCode.TOTAL_OBJECTIVE_TYPE.getValue())){ -// String typeName = objectivesType.getTypeName(); - courseObjectivesF = new CourseObjectives(); - courseObjectivesF.setType(typeId); -// courseObjectivesF.setName(typeName); - courseObjectivesF.setPid(courseTotalObjectivesId); - courseObjectivesFList.add(courseObjectivesF); - } - } - courseObjectivesMapper.insertBatch(courseObjectivesFList); - courseTotalObjectives.setHasChild(1); - courseObjectivesMapper.updateById(courseTotalObjectives); - } - } - return "添加成功"; - } else { + Long count = query().eq("code", code).count(); + if (count > 0) { throw new BusinessException(ErrorCode.OPERATION_ERROR, "这个课程已经存在了!请联系系统相关人员为您导入课程数据!"); } + // 插入课程信息 + int insert = coursesMapper.insert(courses); + if (insert <= 0) { + throw new BusinessException(ErrorCode.OPERATION_ERROR, "课程插入失败!"); + } + + // 插入课程目标信息 + CourseObjectives courseObjectives = new CourseObjectives(); + courseObjectives.setCourseId(courseId); + courseObjectives.setType(CourseCode.TOTAL_OBJECTIVE_TYPE.getValue()); + int insertTotal = courseObjectivesMapper.insert(courseObjectives); + if (insertTotal <= 0) { + throw new BusinessException(ErrorCode.OPERATION_ERROR, "课程目标插入失败!"); + } + + // 获取插入后的课程目标信息 + CourseObjectives courseTotalObjectives = courseObjectivesMapper.selectOne( + new LambdaQueryWrapper().eq(CourseObjectives::getCourseId, courseId) + ); + String courseTotalObjectivesId = courseTotalObjectives.getId(); + + // 获取所有目标类型并插入子目标 + List objectivesTypes = objectivesTypeMapper.selectList(new LambdaQueryWrapper<>()); + ArrayList courseObjectivesFList = new ArrayList<>(); + for (ObjectivesType objectivesType : objectivesTypes) { + if (!objectivesType.getId().equals(CourseCode.TOTAL_OBJECTIVE_TYPE.getValue())) { + CourseObjectives courseObjectivesF = new CourseObjectives(); + courseObjectivesF.setType(objectivesType.getId()); + courseObjectivesF.setPid(courseTotalObjectivesId); + courseObjectivesFList.add(courseObjectivesF); + } + } + + // 批量插入子目标并更新父目标的hasChild字段 + if (!courseObjectivesFList.isEmpty()) { + courseObjectivesMapper.insertBatch(courseObjectivesFList); + courseTotalObjectives.setHasChild(1); + courseObjectivesMapper.updateById(courseTotalObjectives); + } + + return "添加成功"; } + @Override public PageDTO queryCourses(CourseQuery courseQuery) { -// int roleId = Integer.parseInt(umsUserMapper.selectOne(new LambdaQueryWrapper() -// .eq(UmsUser::getUsername, courseQuery.getUsername())).getRoleId()); UmsUser umsUser = umsUserMapper.selectById(courseQuery.getUserId()); if (umsUser == null){ throw new BusinessException(ErrorCode.PARAMS_USER_NOTEXISTS); @@ -187,9 +193,11 @@ public class CoursesServiceImpl extends ServiceImpl impl Page p = lambdaQuery() .like(courseQuery.getName() != null, Courses::getName, courseQuery.getName()) .apply("FIND_IN_SET({0}, teacher)", courseQuery.getUserId()) - .eq(courseQuery.getCategory() != null && !courseQuery.getCategory().isEmpty(), Courses::getCategory, courseQuery.getCategory()) + .eq(StringUtils.hasText(courseQuery.getCategory()), Courses::getCategory, courseQuery.getCategory()) +// .eq(courseQuery.getCategory() != null && !courseQuery.getCategory().isEmpty(), Courses::getCategory, courseQuery.getCategory()) .eq(courseQuery.getNature() != null && !courseQuery.getNature().isEmpty(), Courses::getNature, courseQuery.getNature()) .eq(courseQuery.getAssessmenttype() != null &&!courseQuery.getAssessmenttype().isEmpty(), Courses::getAssessmenttype, courseQuery.getAssessmenttype()) + .select(Courses::getId,Courses::getTeacher,Courses::getImg,Courses::getName,Courses::getCredit,Courses::getClasshours) .page(page); return PageDTO.of(p,CoursesVO.class); } @@ -204,6 +212,7 @@ public class CoursesServiceImpl extends ServiceImpl impl Page p = lambdaQuery() .like(courseQuery.getName() != null, Courses::getName, courseQuery.getName()) .in(Courses::getId, coursesList) + .select(Courses::getId,Courses::getTeacher,Courses::getImg,Courses::getName,Courses::getCredit,Courses::getClasshours) .page(page); return PageDTO.of(p, CoursesVO.class); } @@ -215,6 +224,7 @@ public class CoursesServiceImpl extends ServiceImpl impl .eq(courseQuery.getNature() != null && !courseQuery.getNature().isEmpty(), Courses::getNature, courseQuery.getNature()) .eq(courseQuery.getAssessmenttype() != null &&!courseQuery.getAssessmenttype().isEmpty(), Courses::getAssessmenttype, courseQuery.getAssessmenttype()) .apply(courseQuery.getTeacher() != null && !courseQuery.getTeacher().isEmpty(), "FIND_IN_SET({0}, teacher)", courseQuery.getTeacher()) + .select(Courses::getId,Courses::getTeacher,Courses::getImg,Courses::getName,Courses::getCredit,Courses::getClasshours) .page(page); return PageDTO.of(p, CoursesVO.class); } diff --git a/src/main/java/com/teaching/backend/service/impl/courses/ObjectiveContentKnowServiceImpl.java b/src/main/java/com/teaching/backend/service/impl/courses/ObjectiveContentKnowServiceImpl.java index f62b99a..13720df 100644 --- a/src/main/java/com/teaching/backend/service/impl/courses/ObjectiveContentKnowServiceImpl.java +++ b/src/main/java/com/teaching/backend/service/impl/courses/ObjectiveContentKnowServiceImpl.java @@ -18,6 +18,7 @@ import com.teaching.backend.service.courses.IObjectiveContentKnowService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; import java.math.BigDecimal; import java.math.RoundingMode; @@ -71,7 +72,6 @@ public class ObjectiveContentKnowServiceImpl extends ServiceImpl objectiveContentKnows = objectiveContentKnowMapper.selectList( new LambdaQueryWrapper() .eq(ObjectiveContentKnow::getObjectiveOrContent, objectiveOrContentId)); @@ -105,16 +100,16 @@ public class ObjectiveContentKnowServiceImpl extends ServiceImpl objectiveContents = objectiveContentsMapper.selectList( - new LambdaQueryWrapper() + List objectiveContents = objectiveContentsMapper.selectList(new LambdaQueryWrapper() .eq(ObjectiveContents::getObjectiveId, objectiveOrContentId)); // 如果存在分项目标内容,处理并计算每个内容的相关数据 - if (objectiveContents != null && !objectiveContents.isEmpty()) { + if (!CollectionUtils.isEmpty(objectiveContents)) { List contentKnowVOs = objectiveContents.stream() .map(content -> createObjectiveContentKnowVO(content.getId(), objectiveContentKnowMapper.selectList( new LambdaQueryWrapper() @@ -123,10 +118,10 @@ public class ObjectiveContentKnowServiceImpl extends ServiceImpl { - BigDecimal contentPercentage = calculatePercentage(contentKnowVO.getKnowsTime(), classhours); - contentKnowVO.setPersent(contentPercentage + "%"); - }); +// contentKnowVOs.forEach(contentKnowVO -> { +// BigDecimal contentPercentage = calculatePercentage(contentKnowVO.getKnowsTime(), classhours); +// contentKnowVO.setPersent(contentPercentage + "%"); +// }); // 设置内容的知识点数据 objectiveContentKnowVO.setContentKnowsData(contentKnowVOs); @@ -168,6 +163,4 @@ public class ObjectiveContentKnowServiceImpl extends ServiceImpl0 ? "删除成功!" : "删除失败!"; + return delete > 0 ? "删除成功!" : "删除失败!"; } } diff --git a/src/main/java/com/teaching/backend/utils/CourseCode.java b/src/main/java/com/teaching/backend/utils/CourseCode.java index d736cd4..b7b2465 100644 --- a/src/main/java/com/teaching/backend/utils/CourseCode.java +++ b/src/main/java/com/teaching/backend/utils/CourseCode.java @@ -4,14 +4,14 @@ public enum CourseCode { HAS_CHILD(1, "存在子节点"), OBJECTIVE_EXIT(1,"目标存在"), - CONTENT_EXIT(1, "存在内容"), + CONTENT_EXIT(0, "不存在内容"), SI_ZHENG_TYPE(1, "思政目标类型"), SI_ZHENG_EXIT(1, "思政目标存在"), KNOWS_EXIT(0, "存在关联的知识点"), TEACHER_ROLE_ID(1, "教师的角色id是1"), TOTAL_OBJECTIVE_TYPE(0, "课程总目标"), - + TOTAL_OBJECTIVE_HAS_NO_CHILD(0, "课程总目标下面没有分项目标"), Total_EXIT(0, "课程总目标"), COURSE_UPDATING(1, "课程正在修改中"); From 58d8f0b1cb9ec866ac3bbd1af8b0d5a3bc8562ef Mon Sep 17 00:00:00 2001 From: wenyu441069198 <14186472+wenyu441069198@user.noreply.gitee.com> Date: Mon, 5 Aug 2024 15:52:12 +0800 Subject: [PATCH 02/13] =?UTF-8?q?=E5=AD=A6=E4=B9=A0=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 19 ++++ .../NonStaticResourceHttpRequestHandler.java | 23 ++++ .../records/BaseSourceApiController.java | 46 ++++++++ .../backend/controller/records/Bf.java | 56 ++++++++++ .../KnowledgeLearningRecordController.java | 33 +++++- .../ResourceLearningRecordController.java | 58 +++++++++- .../model/dto/upload/UploadFileParamsDto.java | 32 ++++++ .../records/KnowledgeLearningRecord.java | 4 +- .../records/ResourceLearningRecord.java | 4 + .../vo/records/CourseLearningRecordsVo.java | 4 + .../vo/records/KnowledgeLearningRecordVo.java | 37 +++++++ .../vo/records/ResourceLearingRecordVo.java | 29 +++++ .../CourseLearningRecordServiceImpl.java | 6 +- .../KnowledgeLearningRecordServiceImpl.java | 49 ++++++++- .../ResourceLearningRecordServiceImpl.java | 53 ++++++++- .../IKnowledgeLearningRecordService.java | 8 ++ .../IResourceLearningRecordService.java | 7 ++ src/test/java/com/teaching/MinioTest.java | 101 ++++++++++++++++++ 18 files changed, 555 insertions(+), 14 deletions(-) create mode 100644 src/main/java/com/teaching/backend/config/NonStaticResourceHttpRequestHandler.java create mode 100644 src/main/java/com/teaching/backend/controller/records/BaseSourceApiController.java create mode 100644 src/main/java/com/teaching/backend/controller/records/Bf.java create mode 100644 src/main/java/com/teaching/backend/model/dto/upload/UploadFileParamsDto.java create mode 100644 src/main/java/com/teaching/backend/model/vo/records/KnowledgeLearningRecordVo.java create mode 100644 src/main/java/com/teaching/backend/model/vo/records/ResourceLearingRecordVo.java create mode 100644 src/test/java/com/teaching/MinioTest.java diff --git a/pom.xml b/pom.xml index bfd5080..3fd02d0 100644 --- a/pom.xml +++ b/pom.xml @@ -221,6 +221,25 @@ commons-lang 2.6 + + + + + commons-fileupload + commons-fileupload + 1.3.1 + + + org.apache.httpcomponents + httpcore + 4.4.10 + + + org.apache.httpcomponents + httpclient + 4.5.6 + + diff --git a/src/main/java/com/teaching/backend/config/NonStaticResourceHttpRequestHandler.java b/src/main/java/com/teaching/backend/config/NonStaticResourceHttpRequestHandler.java new file mode 100644 index 0000000..69b9ac9 --- /dev/null +++ b/src/main/java/com/teaching/backend/config/NonStaticResourceHttpRequestHandler.java @@ -0,0 +1,23 @@ +package com.teaching.backend.config; + +import org.springframework.core.io.FileSystemResource; +import org.springframework.core.io.Resource; +import org.springframework.stereotype.Component; +import org.springframework.web.servlet.resource.ResourceHttpRequestHandler; + +import javax.servlet.http.HttpServletRequest; + +/** + * @author longge93 + */ +@Component +public class NonStaticResourceHttpRequestHandler extends ResourceHttpRequestHandler { + + public final static String ATTR_FILE = "NON-STATIC-FILE"; + + @Override + protected Resource getResource(HttpServletRequest request) { + String filePath = (String) request.getAttribute(ATTR_FILE); + return new FileSystemResource(filePath); + } +} diff --git a/src/main/java/com/teaching/backend/controller/records/BaseSourceApiController.java b/src/main/java/com/teaching/backend/controller/records/BaseSourceApiController.java new file mode 100644 index 0000000..5253649 --- /dev/null +++ b/src/main/java/com/teaching/backend/controller/records/BaseSourceApiController.java @@ -0,0 +1,46 @@ +package com.teaching.backend.controller.records; + +import com.teaching.backend.config.NonStaticResourceHttpRequestHandler; +import org.mybatis.logging.Logger; +import org.mybatis.logging.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.nio.charset.StandardCharsets; + +@RestController +@RequestMapping(value = "/api/baseResource") +public class BaseSourceApiController { + + + @Autowired + private NonStaticResourceHttpRequestHandler nonStaticResourceHttpRequestHandler; + + + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + + @RequestMapping(value = "/video", method = RequestMethod.GET) + public void video( + HttpServletRequest request, + HttpServletResponse response + ) { + try { + String path = "D:/Users/Desktop/image/剪映/7.18/7月20.mp4"; + File file = new File(path); + if (file.exists()) { + request.setAttribute(NonStaticResourceHttpRequestHandler.ATTR_FILE, path); + nonStaticResourceHttpRequestHandler.handleRequest(request, response); + } else { + response.setStatus(HttpServletResponse.SC_NOT_FOUND); + response.setCharacterEncoding(StandardCharsets.UTF_8.toString()); + } + } catch (Exception e) { + + } + } +} diff --git a/src/main/java/com/teaching/backend/controller/records/Bf.java b/src/main/java/com/teaching/backend/controller/records/Bf.java new file mode 100644 index 0000000..f0a8d95 --- /dev/null +++ b/src/main/java/com/teaching/backend/controller/records/Bf.java @@ -0,0 +1,56 @@ +package com.teaching.backend.controller.records; + + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import java.io.FileInputStream; +import java.io.OutputStream; + +@RestController +@RequestMapping("/api/bf") +public class Bf { + /** + * 根据本地图片全路径,响应给浏览器1个图片流 + */ + @RequestMapping("/showImage") + public void showImage(HttpServletResponse response, @RequestParam("fileName")String fileName) { + System.out.println(fileName); + show(response,fileName,"image"); + } + + /** + * 根据本地视频全路径,响应给浏览器1个视频 + */ + @RequestMapping("/showVideo") + public void showVideo(HttpServletResponse response, @RequestParam("fileName")String fileName) { + show(response,fileName,"video"); + } + + /** + * 响应文件 + * @param response + * @param fileName 文件全路径 + * @param type 响应流类型 + */ + public void show(HttpServletResponse response, String fileName,String type){ + try{ + FileInputStream fis = new FileInputStream(fileName); // 以byte流的方式打开文件 + int i=fis.available(); //得到文件大小 + System.out.println(i); + byte data[]=new byte[i]; + fis.read(data); //读数据 + response.setContentType(type+"/*"); //设置返回的文件类型 + OutputStream toClient=response.getOutputStream(); //得到向客户端输出二进制数据的对象 + toClient.write(data); //输出数据 + toClient.flush(); + toClient.close(); + fis.close(); + }catch(Exception e){ + e.printStackTrace(); + System.out.println("文件不存在"); + } + } +} diff --git a/src/main/java/com/teaching/backend/controller/records/KnowledgeLearningRecordController.java b/src/main/java/com/teaching/backend/controller/records/KnowledgeLearningRecordController.java index da94b8d..7d6aba9 100644 --- a/src/main/java/com/teaching/backend/controller/records/KnowledgeLearningRecordController.java +++ b/src/main/java/com/teaching/backend/controller/records/KnowledgeLearningRecordController.java @@ -1,5 +1,6 @@ package com.teaching.backend.controller.records; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.teaching.backend.common.BaseResponse; import com.teaching.backend.common.ResultUtils; import com.teaching.backend.filter.ValidateParams; @@ -7,12 +8,10 @@ import com.teaching.backend.model.entity.records.CourseLearningRecord; import com.teaching.backend.model.entity.records.KnowledgeLearningRecord; import com.teaching.backend.service.impl.records.KnowledgeLearningRecordServiceImpl; import io.swagger.annotations.ApiOperation; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import java.util.List; @RestController @RequestMapping("/api/knowledgelearning") @@ -27,4 +26,30 @@ public class KnowledgeLearningRecordController { return knowledgeLearningRecordService.saveCoursesRecords(knowledgeLearningRecord); } + /** + * 获取当前登录用户的学习知识点记录 + * @param pagenum + * @param pagesize + * @return + */ + @ApiOperation("根据用户id查询学习记录") + @ValidateParams({"userId"}) + @GetMapping("/page") + public BaseResponse getAll(@RequestParam(value = "pagenum", defaultValue = "1") int pagenum, + @RequestParam(value = "pagesize", defaultValue = "10") int pagesize, + @RequestParam String userId, + @RequestParam String courseId){ + return knowledgeLearningRecordService.getPage(pagenum, pagesize, userId, courseId); + } + + /** + * 根据ids删除 + * @param ids + * @return + */ + @ApiOperation("学习记录删除") + @DeleteMapping("/delete") + public BaseResponse deleteRecords(@RequestParam List ids){ + return knowledgeLearningRecordService.removeKnowledgeRecord(ids); + } } diff --git a/src/main/java/com/teaching/backend/controller/records/ResourceLearningRecordController.java b/src/main/java/com/teaching/backend/controller/records/ResourceLearningRecordController.java index efbb8f2..98ddfe4 100644 --- a/src/main/java/com/teaching/backend/controller/records/ResourceLearningRecordController.java +++ b/src/main/java/com/teaching/backend/controller/records/ResourceLearningRecordController.java @@ -1,18 +1,23 @@ package com.teaching.backend.controller.records; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.teaching.backend.common.BaseResponse; import com.teaching.backend.common.ResultUtils; +import com.teaching.backend.filter.ValidateParams; import com.teaching.backend.model.entity.records.KnowledgeLearningRecord; import com.teaching.backend.model.entity.records.ResourceLearningRecord; import com.teaching.backend.service.impl.records.KnowledgeLearningRecordServiceImpl; import com.teaching.backend.service.impl.records.ResourceLearningRecordServiceImpl; import io.swagger.annotations.ApiOperation; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.http.MediaType; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.util.List; @RestController @RequestMapping("/api/resourcelearningrecords") @@ -26,4 +31,49 @@ public class ResourceLearningRecordController { public BaseResponse saveResourceRecords(@RequestBody ResourceLearningRecord resourceLearningRecord) { return resourceLearningRecordService.saveCoursesRecords(resourceLearningRecord); } + + /** + * 获取当前登录用户的学习资源记录 + * @param pagenum + * @param pagesize + * @return + */ + @ApiOperation("根据用户id查询学习记录") + @ValidateParams({"userId"}) + @GetMapping("/page") + public BaseResponse getAll(@RequestParam(value = "pagenum", defaultValue = "1") int pagenum, + @RequestParam(value = "pagesize", defaultValue = "10") int pagesize, + @RequestParam String userId, + @RequestParam String courseId, + @RequestParam String knowledgeId){ + return resourceLearningRecordService.getPage(pagenum, pagesize, userId, knowledgeId,courseId); + + } + /** + * 根据ids删除 + * @param ids + * @return + */ + @ApiOperation("学习记录删除") + @DeleteMapping("/delete") + public BaseResponse deleteRecords(@RequestParam List ids){ + return resourceLearningRecordService.removeResourceRecord(ids); + } + + @ApiOperation("上传图片") + @PostMapping(value = "/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) + public BaseResponse upload(@RequestPart("filedata") MultipartFile filedata){ + //调用ser + + //源文件 +// File sourseFile = (File) file; + return ResultUtils.success("hello"); + }; + + @GetMapping("/bf") + public BaseResponse bf(@RequestParam String path, File file,HttpServletRequest request, HttpServletResponse response){ + File sourseFile = new File(path); + return ResultUtils.success(path); + }; + } diff --git a/src/main/java/com/teaching/backend/model/dto/upload/UploadFileParamsDto.java b/src/main/java/com/teaching/backend/model/dto/upload/UploadFileParamsDto.java new file mode 100644 index 0000000..c5a84bf --- /dev/null +++ b/src/main/java/com/teaching/backend/model/dto/upload/UploadFileParamsDto.java @@ -0,0 +1,32 @@ +package com.teaching.backend.model.dto.upload; + +import lombok.Data; + +@Data +public class UploadFileParamsDto { + /** + * 文件名称 + */ + private String filename; + + /** + * 文件类型(文档,音频,视频) + */ + private String fileType; + /** + * 文件大小 + */ + private Long fileSize; + /** + * 标签 + */ + private String tags; + /** + * 上传人 + */ + private String username; + /** + * 备注 + */ + private String remark; +} diff --git a/src/main/java/com/teaching/backend/model/entity/records/KnowledgeLearningRecord.java b/src/main/java/com/teaching/backend/model/entity/records/KnowledgeLearningRecord.java index 7d1f11c..37b4cab 100644 --- a/src/main/java/com/teaching/backend/model/entity/records/KnowledgeLearningRecord.java +++ b/src/main/java/com/teaching/backend/model/entity/records/KnowledgeLearningRecord.java @@ -37,8 +37,8 @@ public class KnowledgeLearningRecord implements Serializable { @TableField("knowledge_id") private String knowledgeId; - @ApiModelProperty(value = "知识点id") - @TableField("knowledge_id") + @ApiModelProperty(value = "知识点名称") + @TableField("knowledge_name") private String knowledgeName; @ApiModelProperty(value = "课程id") diff --git a/src/main/java/com/teaching/backend/model/entity/records/ResourceLearningRecord.java b/src/main/java/com/teaching/backend/model/entity/records/ResourceLearningRecord.java index c33d691..d7dd115 100644 --- a/src/main/java/com/teaching/backend/model/entity/records/ResourceLearningRecord.java +++ b/src/main/java/com/teaching/backend/model/entity/records/ResourceLearningRecord.java @@ -37,6 +37,10 @@ public class ResourceLearningRecord implements Serializable { @TableField("resource_id") private String resourceId; + @ApiModelProperty(value = "资源名称") + @TableField("resource_name") + private String resourceName; + @ApiModelProperty(value = "知识点id") @TableField("knowledge_id") private String knowledgeId; diff --git a/src/main/java/com/teaching/backend/model/vo/records/CourseLearningRecordsVo.java b/src/main/java/com/teaching/backend/model/vo/records/CourseLearningRecordsVo.java index 1260a73..acd047f 100644 --- a/src/main/java/com/teaching/backend/model/vo/records/CourseLearningRecordsVo.java +++ b/src/main/java/com/teaching/backend/model/vo/records/CourseLearningRecordsVo.java @@ -17,6 +17,10 @@ public class CourseLearningRecordsVo { * 课程学习id */ private String id; + /** + * 课程id + */ + private String courseId; /** * 课程名称 */ diff --git a/src/main/java/com/teaching/backend/model/vo/records/KnowledgeLearningRecordVo.java b/src/main/java/com/teaching/backend/model/vo/records/KnowledgeLearningRecordVo.java new file mode 100644 index 0000000..c550f19 --- /dev/null +++ b/src/main/java/com/teaching/backend/model/vo/records/KnowledgeLearningRecordVo.java @@ -0,0 +1,37 @@ +package com.teaching.backend.model.vo.records; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +@Data +@ApiModel(description = "知识点学习记录") +public class KnowledgeLearningRecordVo { + /** + * 知识点学习id + */ + private String id; + /** + * 课程id + */ + private String coursesId; + /** + * 知识点id + */ + private String knowledgeId; + /** + * 知识点名称 + */ + private String knowledgeName; + /** + * 用户id + */ + private String userId; + /** + * 学习人数 + */ + private Integer number; + /** + * 学习时间 + */ + private String time; +} diff --git a/src/main/java/com/teaching/backend/model/vo/records/ResourceLearingRecordVo.java b/src/main/java/com/teaching/backend/model/vo/records/ResourceLearingRecordVo.java new file mode 100644 index 0000000..09a738e --- /dev/null +++ b/src/main/java/com/teaching/backend/model/vo/records/ResourceLearingRecordVo.java @@ -0,0 +1,29 @@ +package com.teaching.backend.model.vo.records; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +@Data +@ApiModel(description = "资源学习记录") +public class ResourceLearingRecordVo { + /** + * 资源学习id + */ + private String id; + /** + * 资源名称 + */ + private String resourceName; + /** + * 用户id + */ + private String userId; + /** + * 学习人数 + */ + private Integer number; + /** + * 学习时间 + */ + private String time; +} diff --git a/src/main/java/com/teaching/backend/service/impl/records/CourseLearningRecordServiceImpl.java b/src/main/java/com/teaching/backend/service/impl/records/CourseLearningRecordServiceImpl.java index b8e4809..2ce1a62 100644 --- a/src/main/java/com/teaching/backend/service/impl/records/CourseLearningRecordServiceImpl.java +++ b/src/main/java/com/teaching/backend/service/impl/records/CourseLearningRecordServiceImpl.java @@ -61,19 +61,21 @@ public class CourseLearningRecordServiceImpl extends ServiceImpl 0){ //自己没学过,人数加1 if (count1 == 0){ courseLearningNumberService.update().setSql("number = number + 1").eq("course_id",courseId).update(); -// System.out.println("用户:"+userId+"第一次学这门课"); + //System.out.println("用户:"+userId+"第一次学这门课"); } + //System.out.println("重复学习"); }else { //该课程第一次被学,人数设置为1 CourseLearningNumber courseLearningNumber = new CourseLearningNumber(); courseLearningNumber.setNumber(1); courseLearningNumber.setCourseId(courseId); courseLearningNumberService.save(courseLearningNumber); + //System.out.println("该课程第一次被学习"); } //设置人数 String numberId = courseLearningNumberService.query().eq("course_id", courseId).one().getId(); diff --git a/src/main/java/com/teaching/backend/service/impl/records/KnowledgeLearningRecordServiceImpl.java b/src/main/java/com/teaching/backend/service/impl/records/KnowledgeLearningRecordServiceImpl.java index fe3d252..c26e3d9 100644 --- a/src/main/java/com/teaching/backend/service/impl/records/KnowledgeLearningRecordServiceImpl.java +++ b/src/main/java/com/teaching/backend/service/impl/records/KnowledgeLearningRecordServiceImpl.java @@ -2,20 +2,30 @@ package com.teaching.backend.service.impl.records; +import cn.hutool.core.bean.BeanUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.teaching.backend.common.BaseResponse; import com.teaching.backend.common.ResultUtils; import com.teaching.backend.mapper.records.KnowledgeLearningRecordMapper; import com.teaching.backend.model.entity.KnowGraph.KnowledgeLearningNumber; import com.teaching.backend.model.entity.courses.CourseLearningNumber; + import com.teaching.backend.model.entity.records.KnowledgeLearningRecord; + +import com.teaching.backend.model.vo.records.KnowledgeLearningRecordVo; import com.teaching.backend.service.impl.courses.CourseLearningNumberServiceImpl; import com.teaching.backend.service.impl.knowledge.KnowledgeLearningNumberServiceImpl; import com.teaching.backend.service.records.IKnowledgeLearningRecordService; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.text.SimpleDateFormat; import java.time.LocalDateTime; +import java.time.ZoneId; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; /** *

@@ -44,7 +54,10 @@ public class KnowledgeLearningRecordServiceImpl extends ServiceImpl 0){ //自己没学过,人数加1 if (count1 == 0){ @@ -68,4 +81,38 @@ public class KnowledgeLearningRecordServiceImpl extends ServiceImpl getPage(int pagenum, int pagesize, String userId, String courseId) { + //格式化时间 + String strDateFormat = "yyyy-MM-dd HH:mm:ss"; + SimpleDateFormat sdf = new SimpleDateFormat(strDateFormat); + //分页查询 + Page page = query() + .orderByDesc("times") + .eq("user_id", userId) + .eq("courses_id",courseId).page(new Page<>(pagenum, pagesize)); + Page page1 = new Page<>(); + List records = page.getRecords(); + BeanUtil.copyProperties(page, page1); + List recordsVos = new ArrayList<>(); + //copy集合 + records.forEach(knowledgeLearningRecord -> { + KnowledgeLearningRecordVo knowledgeLearningRecordVo = new KnowledgeLearningRecordVo(); + BeanUtil.copyProperties(knowledgeLearningRecord,knowledgeLearningRecordVo); + Date date = Date.from(knowledgeLearningRecord.getTimes().atZone(ZoneId.systemDefault()).toInstant()); + knowledgeLearningRecordVo.setTime(sdf.format(date)); +// //填充学习人数 + knowledgeLearningRecordVo.setNumber(knowledgeLearningNumberService.getById(knowledgeLearningRecord.getNumber()).getNumber()); + recordsVos.add(knowledgeLearningRecordVo); + }); + page1.setRecords(recordsVos); + return ResultUtils.success(page1); + } + + @Override + public BaseResponse removeKnowledgeRecord(List ids) { + removeByIds(ids); + return ResultUtils.success("删除成功!"); + } } diff --git a/src/main/java/com/teaching/backend/service/impl/records/ResourceLearningRecordServiceImpl.java b/src/main/java/com/teaching/backend/service/impl/records/ResourceLearningRecordServiceImpl.java index 1220371..14270e6 100644 --- a/src/main/java/com/teaching/backend/service/impl/records/ResourceLearningRecordServiceImpl.java +++ b/src/main/java/com/teaching/backend/service/impl/records/ResourceLearningRecordServiceImpl.java @@ -1,18 +1,28 @@ package com.teaching.backend.service.impl.records; +import cn.hutool.core.bean.BeanUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.teaching.backend.common.BaseResponse; import com.teaching.backend.common.ResultUtils; import com.teaching.backend.mapper.records.ResourceLearningRecordMapper; +import com.teaching.backend.model.entity.records.KnowledgeLearningRecord; import com.teaching.backend.model.entity.records.ResourceLearningRecord; import com.teaching.backend.model.entity.resource.ResourceLearningNumber; +import com.teaching.backend.model.vo.records.KnowledgeLearningRecordVo; +import com.teaching.backend.model.vo.records.ResourceLearingRecordVo; import com.teaching.backend.service.impl.resource.ResourceLearningNumberServiceImpl; import com.teaching.backend.service.records.IResourceLearningRecordService; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.text.SimpleDateFormat; import java.time.LocalDateTime; +import java.time.ZoneId; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; /** *

@@ -44,7 +54,11 @@ public class ResourceLearningRecordServiceImpl extends ServiceImpl 0){ //自己没学过,人数加1 if (count1 == 0){ @@ -73,4 +87,41 @@ public class ResourceLearningRecordServiceImpl extends ServiceImpl getPage(int pagenum, int pagesize, String userId, String knowledgeId, String courseId) { +//格式化时间 + String strDateFormat = "yyyy-MM-dd HH:mm:ss"; + SimpleDateFormat sdf = new SimpleDateFormat(strDateFormat); + //分页查询 + Page page = query() + .orderByDesc("times") + .eq("user_id", userId) + .eq("knowledge_id",knowledgeId) + .eq("courses_id",courseId).page(new Page<>(pagenum, pagesize)); + Page page1 = new Page<>(); + List records = page.getRecords(); + BeanUtil.copyProperties(page, page1); + List recordsVos = new ArrayList<>(); + //copy集合 + records.forEach(resourceLearningRecord -> { + ResourceLearingRecordVo resourceLearingRecordVo = new ResourceLearingRecordVo(); + BeanUtil.copyProperties(resourceLearningRecord,resourceLearingRecordVo); + Date date = Date.from(resourceLearningRecord.getTimes().atZone(ZoneId.systemDefault()).toInstant()); + resourceLearingRecordVo.setTime(sdf.format(date)); +// //填充学习人数 + resourceLearingRecordVo.setNumber(resourceLearningNumberService.getById(resourceLearningRecord.getNumber()).getNumber()); + recordsVos.add(resourceLearingRecordVo); + }); + page1.setRecords(recordsVos); + return ResultUtils.success(page1); + } + + @Override + public BaseResponse removeResourceRecord(List ids) { + removeByIds(ids); + return ResultUtils.success("删除成功!"); + } + + } diff --git a/src/main/java/com/teaching/backend/service/records/IKnowledgeLearningRecordService.java b/src/main/java/com/teaching/backend/service/records/IKnowledgeLearningRecordService.java index ac279a5..252d176 100644 --- a/src/main/java/com/teaching/backend/service/records/IKnowledgeLearningRecordService.java +++ b/src/main/java/com/teaching/backend/service/records/IKnowledgeLearningRecordService.java @@ -1,10 +1,13 @@ package com.teaching.backend.service.records; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.teaching.backend.common.BaseResponse; import com.teaching.backend.model.entity.records.KnowledgeLearningRecord; +import java.util.List; + /** *

* 服务类 @@ -16,4 +19,9 @@ import com.teaching.backend.model.entity.records.KnowledgeLearningRecord; public interface IKnowledgeLearningRecordService extends IService { BaseResponse saveCoursesRecords(KnowledgeLearningRecord knowledgeLearningRecord); + + BaseResponse getPage(int pagenum, int pagesize, String userId, String courseId); + + BaseResponse removeKnowledgeRecord(List ids); } + diff --git a/src/main/java/com/teaching/backend/service/records/IResourceLearningRecordService.java b/src/main/java/com/teaching/backend/service/records/IResourceLearningRecordService.java index 2b53014..1282e23 100644 --- a/src/main/java/com/teaching/backend/service/records/IResourceLearningRecordService.java +++ b/src/main/java/com/teaching/backend/service/records/IResourceLearningRecordService.java @@ -1,10 +1,13 @@ package com.teaching.backend.service.records; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.teaching.backend.common.BaseResponse; import com.teaching.backend.model.entity.records.ResourceLearningRecord; +import java.util.List; + /** *

* 服务类 @@ -16,4 +19,8 @@ import com.teaching.backend.model.entity.records.ResourceLearningRecord; public interface IResourceLearningRecordService extends IService { BaseResponse saveCoursesRecords(ResourceLearningRecord resourceLearningRecord); + + BaseResponse getPage(int pagenum, int pagesize, String userId, String knowledgeId, String courseId); + + BaseResponse removeResourceRecord(List ids); } diff --git a/src/test/java/com/teaching/MinioTest.java b/src/test/java/com/teaching/MinioTest.java new file mode 100644 index 0000000..cbdb77d --- /dev/null +++ b/src/test/java/com/teaching/MinioTest.java @@ -0,0 +1,101 @@ +package com.teaching; + +import org.junit.jupiter.api.Test; +import org.springframework.util.DigestUtils; + +import java.io.*; +import java.util.Arrays; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; + +public class MinioTest { + //分块测试 + @Test + public void testChunk() throws IOException { + //源文件 + File sourseFile = new File("D:/Users/Desktop/image/剪映/7.18/7月20.mp4"); + //分块文件存储路径 + String chunkFilePath = "D:/Users/Desktop/image/剪映/7.18/chunk/"; + //分块文件大小 + int chunkSize = 1024 * 1024 * 1; + //分块文件个数 + int chunkNum = (int) Math.ceil(sourseFile.length() * 1.0 / chunkSize); + //使用流从源文件读数据,向分块文件中写数据 + RandomAccessFile raf_r = new RandomAccessFile(sourseFile, "r"); + //缓存区 + byte[] bytes = new byte[1024]; + for (int i = 0; i < chunkNum; i++) { + File chunkFile = new File(chunkFilePath + i); + //分块文件写入流 + RandomAccessFile raf_rw = new RandomAccessFile(chunkFile, "rw"); + int len = -1; + while((len=raf_r.read(bytes)) != -1){ + raf_rw.write(bytes, 0, len); + if (chunkFile.length() >= chunkSize){ + break; + } + } + raf_rw.close(); + } + raf_r.close(); + } + + //将分块进行合并 + @Test + public void testMerge() throws IOException { + //块文件目录 + File chunkFolder = new File("D:\\Users\\Desktop\\image\\剪映\\7.18\\chunk"); + //源文件 + File sourseFile = new File("D:/Users/Desktop/image/剪映/7.18/7月20.mp4"); + //合并后的文件 + File mergeFile = new File("D:/Users/Desktop/image/剪映/7.18/7月20_merge.mp4"); + + //取出所有分块文件 + File[] files = chunkFolder.listFiles(); + //将数组转成list + List fileList = Arrays.asList(files); + //对分块文件排序 + Collections.sort(fileList, new Comparator() { + @Override + public int compare(File o1, File o2) { + return Integer.parseInt(o1.getName()) - Integer.parseInt(o2.getName()); //升序 + } + }); + //向合并文件写的流 + RandomAccessFile raf_rw = new RandomAccessFile(mergeFile, "rw"); + //缓存区 + byte[] bytes = new byte[1024]; + //遍历分块文件,向合并的文件写 + for (File file : fileList) { + //读分块的流 + RandomAccessFile raf_r = new RandomAccessFile(file, "r"); + int len = -1; + while((len = raf_r.read(bytes)) != -1){ + raf_rw.write(bytes, 0, len); + } + raf_r.close(); + } + raf_rw.close(); + //合并文件完成后对合并的文件校验 + FileInputStream fileInputStream_merge = new FileInputStream(mergeFile); + FileInputStream fileInputStream_source = new FileInputStream(sourseFile); + String md5_merge = DigestUtils.md5DigestAsHex(fileInputStream_merge); + String md5_source = DigestUtils.md5DigestAsHex(fileInputStream_source); + if (md5_merge.equals(md5_source)){ + System.out.println("文件合并成功!"); + } + } + + //将分块文件上传到minio + public void uploadChunk(){ + + } + + //调用minio接口合并分块 + + + //批量清理分块文件 + + +} From cd9df0f9aae0d3ddf4962241058aef885bd00ec8 Mon Sep 17 00:00:00 2001 From: wenyu441069198 <14186472+wenyu441069198@user.noreply.gitee.com> Date: Mon, 5 Aug 2024 16:21:18 +0800 Subject: [PATCH 03/13] =?UTF-8?q?=E8=82=96=E6=B5=B7=E5=8D=97=E5=AD=A6?= =?UTF-8?q?=E7=94=9F=E5=88=97=E8=A1=A8=E5=B0=8F=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../backend/controller/courses/CoursesController.java | 4 ++-- .../records/KnowledgeLearningRecordController.java | 2 ++ .../teaching/backend/service/courses/ICoursesService.java | 2 +- .../backend/service/impl/courses/CoursesServiceImpl.java | 6 ++++-- 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/teaching/backend/controller/courses/CoursesController.java b/src/main/java/com/teaching/backend/controller/courses/CoursesController.java index 8840c0c..9809dd5 100644 --- a/src/main/java/com/teaching/backend/controller/courses/CoursesController.java +++ b/src/main/java/com/teaching/backend/controller/courses/CoursesController.java @@ -131,8 +131,8 @@ public class CoursesController { @ApiOperation("查询学生列表") @PostMapping("/studentList") - public CommonResult> getStudentList(CourseQuery courseQuery){ - LinkedHashSet umsStudentList = coursesService.queryStudentList(courseQuery); + public CommonResult> getStudentList(@RequestParam String userId){ + LinkedHashSet umsStudentList = coursesService.queryStudentList(userId); return CommonResult.success(umsStudentList); } diff --git a/src/main/java/com/teaching/backend/controller/records/KnowledgeLearningRecordController.java b/src/main/java/com/teaching/backend/controller/records/KnowledgeLearningRecordController.java index 7d6aba9..867889c 100644 --- a/src/main/java/com/teaching/backend/controller/records/KnowledgeLearningRecordController.java +++ b/src/main/java/com/teaching/backend/controller/records/KnowledgeLearningRecordController.java @@ -52,4 +52,6 @@ public class KnowledgeLearningRecordController { public BaseResponse deleteRecords(@RequestParam List ids){ return knowledgeLearningRecordService.removeKnowledgeRecord(ids); } + + } diff --git a/src/main/java/com/teaching/backend/service/courses/ICoursesService.java b/src/main/java/com/teaching/backend/service/courses/ICoursesService.java index 9a06641..11ec74f 100644 --- a/src/main/java/com/teaching/backend/service/courses/ICoursesService.java +++ b/src/main/java/com/teaching/backend/service/courses/ICoursesService.java @@ -46,5 +46,5 @@ public interface ICoursesService extends IService { Map getPagePageSize2(int page, int pageSize); - LinkedHashSet queryStudentList(CourseQuery courseQuery); + LinkedHashSet queryStudentList(String userId); } diff --git a/src/main/java/com/teaching/backend/service/impl/courses/CoursesServiceImpl.java b/src/main/java/com/teaching/backend/service/impl/courses/CoursesServiceImpl.java index 3504a58..dc52e6d 100644 --- a/src/main/java/com/teaching/backend/service/impl/courses/CoursesServiceImpl.java +++ b/src/main/java/com/teaching/backend/service/impl/courses/CoursesServiceImpl.java @@ -352,8 +352,10 @@ public class CoursesServiceImpl extends ServiceImpl impl } @Override - public LinkedHashSet queryStudentList(CourseQuery courseQuery) { - String roleId = umsUserMapper.getbyIdRoleId(courseQuery.getUserId()); + public LinkedHashSet queryStudentList(String userId) { + String roleId = umsUserMapper.getbyIdRoleId(userId); + CourseQuery courseQuery = new CourseQuery(); + courseQuery.setUserId(userId); if (roleId.equals("1")){ PageDTO queryCourses = queryCourses(courseQuery); List coursesList = queryCourses.getList(); From a1f4aaa646aa0c555ad062f7a93bbe0e63ff5173 Mon Sep 17 00:00:00 2001 From: wenyu441069198 <14186472+wenyu441069198@user.noreply.gitee.com> Date: Mon, 5 Aug 2024 16:54:56 +0800 Subject: [PATCH 04/13] =?UTF-8?q?=E8=82=96=E6=B5=B7=E5=8D=97=E5=AD=A6?= =?UTF-8?q?=E7=94=9F=E5=88=97=E8=A1=A8=E8=BF=94=E5=9B=9E=E5=80=BC=E5=B0=8F?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/courses/CoursesController.java | 5 ++- .../courses/PersonalCenterStudentListVO.java | 44 +++++++++++++++++++ .../service/courses/ICoursesService.java | 3 +- .../impl/courses/CoursesServiceImpl.java | 12 +++-- 4 files changed, 58 insertions(+), 6 deletions(-) create mode 100644 src/main/java/com/teaching/backend/model/vo/courses/PersonalCenterStudentListVO.java diff --git a/src/main/java/com/teaching/backend/controller/courses/CoursesController.java b/src/main/java/com/teaching/backend/controller/courses/CoursesController.java index 9809dd5..7e14395 100644 --- a/src/main/java/com/teaching/backend/controller/courses/CoursesController.java +++ b/src/main/java/com/teaching/backend/controller/courses/CoursesController.java @@ -11,6 +11,7 @@ import com.teaching.backend.model.entity.courses.Courses; import com.teaching.backend.model.entity.umsAdmin.UmsStudent; import com.teaching.backend.model.query.CourseQuery; import com.teaching.backend.model.vo.courses.CoursesVO; +import com.teaching.backend.model.vo.courses.PersonalCenterStudentListVO; import com.teaching.backend.service.courses.ICoursesService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -131,8 +132,8 @@ public class CoursesController { @ApiOperation("查询学生列表") @PostMapping("/studentList") - public CommonResult> getStudentList(@RequestParam String userId){ - LinkedHashSet umsStudentList = coursesService.queryStudentList(userId); + public CommonResult> getStudentList(@RequestParam String userId){ + LinkedHashSet umsStudentList = coursesService.queryStudentList(userId); return CommonResult.success(umsStudentList); } diff --git a/src/main/java/com/teaching/backend/model/vo/courses/PersonalCenterStudentListVO.java b/src/main/java/com/teaching/backend/model/vo/courses/PersonalCenterStudentListVO.java new file mode 100644 index 0000000..e0fe434 --- /dev/null +++ b/src/main/java/com/teaching/backend/model/vo/courses/PersonalCenterStudentListVO.java @@ -0,0 +1,44 @@ +package com.teaching.backend.model.vo.courses; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.List; + +/** + *

+ * + *

+ * + * @author zjh + * @since 2024-06-12 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +public class PersonalCenterStudentListVO implements Serializable { + + + /** + * 头像 + */ + private String icon; + + /** + * 姓名 + */ + private String name; + + /** + * 学号 + */ + private String number; + +} diff --git a/src/main/java/com/teaching/backend/service/courses/ICoursesService.java b/src/main/java/com/teaching/backend/service/courses/ICoursesService.java index 11ec74f..dcd643c 100644 --- a/src/main/java/com/teaching/backend/service/courses/ICoursesService.java +++ b/src/main/java/com/teaching/backend/service/courses/ICoursesService.java @@ -8,6 +8,7 @@ import com.teaching.backend.model.entity.courses.Courses; import com.teaching.backend.model.entity.umsAdmin.UmsStudent; import com.teaching.backend.model.query.CourseQuery; import com.teaching.backend.model.vo.courses.CoursesVO; +import com.teaching.backend.model.vo.courses.PersonalCenterStudentListVO; import com.teaching.backend.model.vo.umsAdmin.UmsStudentVO; import javax.servlet.http.HttpServletResponse; @@ -46,5 +47,5 @@ public interface ICoursesService extends IService { Map getPagePageSize2(int page, int pageSize); - LinkedHashSet queryStudentList(String userId); + LinkedHashSet queryStudentList(String userId); } diff --git a/src/main/java/com/teaching/backend/service/impl/courses/CoursesServiceImpl.java b/src/main/java/com/teaching/backend/service/impl/courses/CoursesServiceImpl.java index dc52e6d..454688b 100644 --- a/src/main/java/com/teaching/backend/service/impl/courses/CoursesServiceImpl.java +++ b/src/main/java/com/teaching/backend/service/impl/courses/CoursesServiceImpl.java @@ -29,6 +29,7 @@ import com.teaching.backend.model.entity.umsAdmin.UmsUser; import com.teaching.backend.model.query.CourseQuery; import com.teaching.backend.model.vo.courses.CourseObjectivesTreeVO; import com.teaching.backend.model.vo.courses.CoursesVO; +import com.teaching.backend.model.vo.courses.PersonalCenterStudentListVO; import com.teaching.backend.model.vo.umsAdmin.UmsStudentVO; import com.teaching.backend.service.courses.ICoursesService; import com.teaching.backend.utils.CourseCode; @@ -352,7 +353,7 @@ public class CoursesServiceImpl extends ServiceImpl impl } @Override - public LinkedHashSet queryStudentList(String userId) { + public LinkedHashSet queryStudentList(String userId) { String roleId = umsUserMapper.getbyIdRoleId(userId); CourseQuery courseQuery = new CourseQuery(); courseQuery.setUserId(userId); @@ -360,7 +361,7 @@ public class CoursesServiceImpl extends ServiceImpl impl PageDTO queryCourses = queryCourses(courseQuery); List coursesList = queryCourses.getList(); List courseIds = coursesList.stream().map(CoursesVO::getId).collect(Collectors.toList()); - LinkedHashSet studentNameList = new LinkedHashSet<>(); + LinkedHashSet studentNameList = new LinkedHashSet<>(); for (String courseId : courseIds) { List studentUsernames = studentCoursesMapper.selectBatchSomeStudent(courseId); List courseLearningRecordList = new ArrayList<>(); @@ -371,7 +372,12 @@ public class CoursesServiceImpl extends ServiceImpl impl courseLearningRecordList = courseLearningRecordList.stream().sorted(Comparator.comparing(CourseLearningRecord::getTimes).reversed()).collect(Collectors.toList()); for (CourseLearningRecord courseLearningRecord : courseLearningRecordList) { UmsStudent umsStudent = umsStudentMapper.selectByUserId(Integer.valueOf(courseLearningRecord.getUserId())); - studentNameList.add(umsStudent); + UmsUser user = umsUserMapper.selectById(courseLearningRecord.getUserId()); + PersonalCenterStudentListVO pcsl = new PersonalCenterStudentListVO(); + pcsl.setName(umsStudent.getName()); + pcsl.setNumber(umsStudent.getNumber()); + pcsl.setIcon(user.getIcon()); + studentNameList.add(pcsl); } } return studentNameList; From 2bd2968cc653a157b4140a0e8a856f49da560485 Mon Sep 17 00:00:00 2001 From: wenyu441069198 <14186472+wenyu441069198@user.noreply.gitee.com> Date: Mon, 5 Aug 2024 17:55:00 +0800 Subject: [PATCH 05/13] =?UTF-8?q?=E8=82=96=E6=B5=B7=E5=8D=97=E4=B8=AA?= =?UTF-8?q?=E4=BA=BA=E4=BF=A1=E6=81=AF=E6=94=B6=E8=97=8F=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../favour/SeCourseFavourController.java | 4 +-- .../CourseLearningRecordController.java | 2 +- .../mapper/favour/SeCourseFavourMapper.java | 6 +++-- .../service/favour/SeCourseFavourService.java | 2 +- .../favour/SeCourseFavourServiceImpl.java | 26 ++++++++++++------- .../mapper/CourseLearningRecordMapper.xml | 5 ++-- .../resources/mapper/SeCourseFavourMapper.xml | 4 +-- 7 files changed, 28 insertions(+), 21 deletions(-) diff --git a/src/main/java/com/teaching/backend/controller/favour/SeCourseFavourController.java b/src/main/java/com/teaching/backend/controller/favour/SeCourseFavourController.java index 5a61c49..fe2548b 100644 --- a/src/main/java/com/teaching/backend/controller/favour/SeCourseFavourController.java +++ b/src/main/java/com/teaching/backend/controller/favour/SeCourseFavourController.java @@ -99,8 +99,8 @@ public class SeCourseFavourController { */ @ApiOperation("查询最新收藏") @PostMapping("/newCollect") - public CommonResult newCollect(@RequestParam String userId) { - CoursesVO newCoursesVO = seCourseFavourService.queryNewCollect(userId); + public CommonResult> newCollect(@RequestParam String userId) { + List newCoursesVO = seCourseFavourService.queryNewCollect(userId); if (newCoursesVO == null){ CommonResult.failed("用户或角色错误"); } diff --git a/src/main/java/com/teaching/backend/controller/records/CourseLearningRecordController.java b/src/main/java/com/teaching/backend/controller/records/CourseLearningRecordController.java index 808cb8e..ed7b1b3 100644 --- a/src/main/java/com/teaching/backend/controller/records/CourseLearningRecordController.java +++ b/src/main/java/com/teaching/backend/controller/records/CourseLearningRecordController.java @@ -61,7 +61,7 @@ public class CourseLearningRecordController { * 个人中心课程列表 * @return */ - @ApiOperation("查询前4的课程") + @ApiOperation("按新旧排序查询的课程列表") @PostMapping("/courseList") public CommonResult> courseList(@RequestParam String userId) { List coursesVOList = courseLearningRecordService.queryCourseList(userId); diff --git a/src/main/java/com/teaching/backend/mapper/favour/SeCourseFavourMapper.java b/src/main/java/com/teaching/backend/mapper/favour/SeCourseFavourMapper.java index 3c9c766..55adb81 100644 --- a/src/main/java/com/teaching/backend/mapper/favour/SeCourseFavourMapper.java +++ b/src/main/java/com/teaching/backend/mapper/favour/SeCourseFavourMapper.java @@ -4,15 +4,17 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.teaching.backend.model.entity.courses.Courses; import com.teaching.backend.model.entity.favour.SeCourseFavour; +import java.util.List; + /** * 课程点赞数据库操作 */ public interface SeCourseFavourMapper extends BaseMapper { - String queryAllNewCollectCourse(); + List queryAllNewCollectCourse(); - String queryStudentNewCollectCourse(String userId); + List queryStudentNewCollectCourse(String userId); } diff --git a/src/main/java/com/teaching/backend/service/favour/SeCourseFavourService.java b/src/main/java/com/teaching/backend/service/favour/SeCourseFavourService.java index 9723cbf..a8d1076 100644 --- a/src/main/java/com/teaching/backend/service/favour/SeCourseFavourService.java +++ b/src/main/java/com/teaching/backend/service/favour/SeCourseFavourService.java @@ -61,5 +61,5 @@ public interface SeCourseFavourService extends IService { * @param userId * @return */ - CoursesVO queryNewCollect(String userId); + List queryNewCollect(String userId); } diff --git a/src/main/java/com/teaching/backend/service/impl/favour/SeCourseFavourServiceImpl.java b/src/main/java/com/teaching/backend/service/impl/favour/SeCourseFavourServiceImpl.java index bebe162..a260644 100644 --- a/src/main/java/com/teaching/backend/service/impl/favour/SeCourseFavourServiceImpl.java +++ b/src/main/java/com/teaching/backend/service/impl/favour/SeCourseFavourServiceImpl.java @@ -156,21 +156,27 @@ public class SeCourseFavourServiceImpl extends ServiceImpl queryNewCollect(String userId) { String roleId = umsUserMapper.getbyIdRoleId(userId); - CoursesVO coursesVO = new CoursesVO(); + List coursesList = new ArrayList<>(); if (roleId.equals("1")){ //老师 - String courseId = seCourseFavourMapper.queryAllNewCollectCourse(); - Courses courses = coursesMapper.selectById(courseId); - BeanUtil.copyProperties(courses,coursesVO); - return coursesVO; + List courseIdList = seCourseFavourMapper.queryAllNewCollectCourse(); + for (String courseId : courseIdList) { + Courses courses = coursesMapper.selectById(courseId); + coursesList.add(courses); + } + List coursesVOList = BeanUtil.copyToList(coursesList, CoursesVO.class); + return coursesVOList; }else if (roleId.equals("2")){ //学生 - String courseId = seCourseFavourMapper.queryStudentNewCollectCourse(userId); - Courses courses = coursesMapper.selectById(courseId); - BeanUtil.copyProperties(courses,coursesVO); - return coursesVO; + List courseIdList = seCourseFavourMapper.queryStudentNewCollectCourse(userId); + for (String courseId : courseIdList) { + Courses courses = coursesMapper.selectById(courseId); + coursesList.add(courses); + } + List coursesVOList = BeanUtil.copyToList(coursesList,CoursesVO.class); + return coursesVOList; }else { return null; } diff --git a/src/main/resources/mapper/CourseLearningRecordMapper.xml b/src/main/resources/mapper/CourseLearningRecordMapper.xml index 65d9f52..d117fc7 100644 --- a/src/main/resources/mapper/CourseLearningRecordMapper.xml +++ b/src/main/resources/mapper/CourseLearningRecordMapper.xml @@ -19,14 +19,13 @@ course_learning_number cln ORDER BY number - DESC LIMIT 4; + DESC; diff --git a/src/main/resources/mapper/SeCourseFavourMapper.xml b/src/main/resources/mapper/SeCourseFavourMapper.xml index 26ae03d..f310d5d 100644 --- a/src/main/resources/mapper/SeCourseFavourMapper.xml +++ b/src/main/resources/mapper/SeCourseFavourMapper.xml @@ -10,7 +10,7 @@ se_course_favour scf ORDER BY createtime - DESC LIMIT 1; + DESC; From a4ae842a4acf7a7ff32d39e4e7893b9c8c39aa65 Mon Sep 17 00:00:00 2001 From: wenyu441069198 <14186472+wenyu441069198@user.noreply.gitee.com> Date: Tue, 6 Aug 2024 09:49:54 +0800 Subject: [PATCH 06/13] =?UTF-8?q?=E8=82=96=E6=B5=B7=E5=8D=97=E8=AE=BF?= =?UTF-8?q?=E9=97=AE=E8=AE=B0=E5=BD=95=E6=8E=A5=E5=8F=A3=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/umsAdmin/ReportController.java | 4 ++-- .../impl/report/ReportServiceImpl.java | 20 ++++++++++++------- .../backend/service/report/ReportService.java | 2 +- 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/teaching/backend/controller/umsAdmin/ReportController.java b/src/main/java/com/teaching/backend/controller/umsAdmin/ReportController.java index 15b86c9..06deea1 100644 --- a/src/main/java/com/teaching/backend/controller/umsAdmin/ReportController.java +++ b/src/main/java/com/teaching/backend/controller/umsAdmin/ReportController.java @@ -35,9 +35,9 @@ public class ReportController { */ @PostMapping("/receptionBrowse") @ApiOperation("接收每日浏览量") - public CommonResult receptionBrowse(@RequestBody ReportDTO reportDTO){ + public CommonResult receptionBrowse(){ - boolean receptionBrowse = reportService.getReceptionBrowse(reportDTO); + boolean receptionBrowse = reportService.getReceptionBrowse(); if (receptionBrowse == false){ return CommonResult.failed(); } diff --git a/src/main/java/com/teaching/backend/service/impl/report/ReportServiceImpl.java b/src/main/java/com/teaching/backend/service/impl/report/ReportServiceImpl.java index 3cabf56..e3ee1a3 100644 --- a/src/main/java/com/teaching/backend/service/impl/report/ReportServiceImpl.java +++ b/src/main/java/com/teaching/backend/service/impl/report/ReportServiceImpl.java @@ -59,13 +59,19 @@ public class ReportServiceImpl extends ServiceImpl impleme } @Override - public boolean getReceptionBrowse(ReportDTO reportDTO) { - if (reportDTO.getCreateTime() == null || reportDTO.getPageView() == null){ - return false; - } - boolean todayBrowse = reportMapper.addTodayBrowse(reportDTO); - if (todayBrowse == false){ - return false; + public boolean getReceptionBrowse() { + //查询今日有无记录 + List list = lambdaQuery().eq(Report::getCreateTime, LocalDate.now()).list(); + + if (list.size() > 0){ + //有,给记录加一 + update().setSql("page_view = page_view + 1").eq("create_time",LocalDate.now()).update(); + }else { + //无,创建一个记录 + Report report = new Report(); + report.setCreateTime(LocalDate.now()); + report.setPageView("1"); + save(report); } return true; } diff --git a/src/main/java/com/teaching/backend/service/report/ReportService.java b/src/main/java/com/teaching/backend/service/report/ReportService.java index 5fbe678..74c1fcc 100644 --- a/src/main/java/com/teaching/backend/service/report/ReportService.java +++ b/src/main/java/com/teaching/backend/service/report/ReportService.java @@ -17,5 +17,5 @@ public interface ReportService extends IService { * 接收每日浏览量 * @return */ - boolean getReceptionBrowse(ReportDTO reportDTO); + boolean getReceptionBrowse(); } From 5a4749ae9d33238de58250d84af8330031580a57 Mon Sep 17 00:00:00 2001 From: wenyu441069198 <14186472+wenyu441069198@user.noreply.gitee.com> Date: Tue, 6 Aug 2024 16:19:03 +0800 Subject: [PATCH 07/13] =?UTF-8?q?=E8=82=96=E6=B5=B7=E5=8D=97=E4=B8=AA?= =?UTF-8?q?=E4=BA=BA=E4=B8=AD=E5=BF=83=E5=AD=A6=E4=B9=A0=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=EF=BC=88=E7=9F=A5=E8=AF=86=E7=82=B9=EF=BC=89=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../KnowledgeLearningRecordController.java | 18 +++++++ .../KnowledgeLearningRecordMapper.java | 5 ++ .../backend/model/vo/knowGraph/KnowVO.java | 1 - .../KnowledgeLearningRecordServiceImpl.java | 52 +++++++++++++++++++ .../IKnowledgeLearningRecordService.java | 3 ++ .../mapper/KnowledgeLearningRecordMapper.xml | 20 +++++++ 6 files changed, 98 insertions(+), 1 deletion(-) create mode 100644 src/main/resources/mapper/KnowledgeLearningRecordMapper.xml diff --git a/src/main/java/com/teaching/backend/controller/records/KnowledgeLearningRecordController.java b/src/main/java/com/teaching/backend/controller/records/KnowledgeLearningRecordController.java index 867889c..dac49ac 100644 --- a/src/main/java/com/teaching/backend/controller/records/KnowledgeLearningRecordController.java +++ b/src/main/java/com/teaching/backend/controller/records/KnowledgeLearningRecordController.java @@ -2,10 +2,13 @@ package com.teaching.backend.controller.records; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.teaching.backend.common.BaseResponse; +import com.teaching.backend.common.CommonResult; import com.teaching.backend.common.ResultUtils; import com.teaching.backend.filter.ValidateParams; import com.teaching.backend.model.entity.records.CourseLearningRecord; import com.teaching.backend.model.entity.records.KnowledgeLearningRecord; +import com.teaching.backend.model.vo.courses.CoursesVO; +import com.teaching.backend.model.vo.knowGraph.KnowVO; import com.teaching.backend.service.impl.records.KnowledgeLearningRecordServiceImpl; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; @@ -53,5 +56,20 @@ public class KnowledgeLearningRecordController { return knowledgeLearningRecordService.removeKnowledgeRecord(ids); } + /** + * 获取学习最多的知识点 + * + * @return + */ + @ApiOperation("查询学习最多的知识点") + @PostMapping("/studyMaxKnowledge") + public CommonResult> studyMaxKnowledge(@RequestParam String userId) { + List knowVO = knowledgeLearningRecordService.queryMaxKnowledge(userId); + if (knowVO == null){ + CommonResult.failed("用户或角色错误"); + } + return CommonResult.success(knowVO); + } + } diff --git a/src/main/java/com/teaching/backend/mapper/records/KnowledgeLearningRecordMapper.java b/src/main/java/com/teaching/backend/mapper/records/KnowledgeLearningRecordMapper.java index d9dbbe5..78f4ada 100644 --- a/src/main/java/com/teaching/backend/mapper/records/KnowledgeLearningRecordMapper.java +++ b/src/main/java/com/teaching/backend/mapper/records/KnowledgeLearningRecordMapper.java @@ -4,6 +4,8 @@ package com.teaching.backend.mapper.records; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.teaching.backend.model.entity.records.KnowledgeLearningRecord; +import java.util.List; + /** *

* Mapper 接口 @@ -14,4 +16,7 @@ import com.teaching.backend.model.entity.records.KnowledgeLearningRecord; */ public interface KnowledgeLearningRecordMapper extends BaseMapper { + List queryStudyKnowledgeMaxNumber(); + + List queryStudyMaxKnowledgeId(String userId); } diff --git a/src/main/java/com/teaching/backend/model/vo/knowGraph/KnowVO.java b/src/main/java/com/teaching/backend/model/vo/knowGraph/KnowVO.java index d6a60a2..beaa1a2 100644 --- a/src/main/java/com/teaching/backend/model/vo/knowGraph/KnowVO.java +++ b/src/main/java/com/teaching/backend/model/vo/knowGraph/KnowVO.java @@ -3,7 +3,6 @@ package com.teaching.backend.model.vo.knowGraph; import lombok.Data; import java.io.Serializable; -import java.util.List; @Data diff --git a/src/main/java/com/teaching/backend/service/impl/records/KnowledgeLearningRecordServiceImpl.java b/src/main/java/com/teaching/backend/service/impl/records/KnowledgeLearningRecordServiceImpl.java index c26e3d9..da5e2be 100644 --- a/src/main/java/com/teaching/backend/service/impl/records/KnowledgeLearningRecordServiceImpl.java +++ b/src/main/java/com/teaching/backend/service/impl/records/KnowledgeLearningRecordServiceImpl.java @@ -8,15 +8,23 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.teaching.backend.common.BaseResponse; import com.teaching.backend.common.ResultUtils; import com.teaching.backend.mapper.records.KnowledgeLearningRecordMapper; +import com.teaching.backend.mapper.umsAdmin.UmsUserMapper; +import com.teaching.backend.model.entity.KnowGraph.Know; import com.teaching.backend.model.entity.KnowGraph.KnowledgeLearningNumber; +import com.teaching.backend.model.entity.Knowtemp.Knowtemp; import com.teaching.backend.model.entity.courses.CourseLearningNumber; +import com.teaching.backend.model.entity.courses.Courses; import com.teaching.backend.model.entity.records.KnowledgeLearningRecord; +import com.teaching.backend.model.vo.courses.CoursesVO; +import com.teaching.backend.model.vo.knowGraph.KnowVO; import com.teaching.backend.model.vo.records.KnowledgeLearningRecordVo; +import com.teaching.backend.service.KnowGraph.KnowService; import com.teaching.backend.service.impl.courses.CourseLearningNumberServiceImpl; import com.teaching.backend.service.impl.knowledge.KnowledgeLearningNumberServiceImpl; import com.teaching.backend.service.records.IKnowledgeLearningRecordService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -39,6 +47,12 @@ import java.util.List; public class KnowledgeLearningRecordServiceImpl extends ServiceImpl implements IKnowledgeLearningRecordService { @Resource private KnowledgeLearningNumberServiceImpl knowledgeLearningNumberService; + @Autowired + private UmsUserMapper umsUserMapper; + @Autowired + private KnowledgeLearningRecordMapper knowledgeLearningRecordMapper; + @Resource + private KnowService knowService; @Override public BaseResponse saveCoursesRecords(KnowledgeLearningRecord knowledgeLearningRecord) { @@ -115,4 +129,42 @@ public class KnowledgeLearningRecordServiceImpl extends ServiceImpl queryMaxKnowledge(String userId) { + String roleId = umsUserMapper.getbyIdRoleId(userId); + List coursesList = new ArrayList<>(); + KnowVO knowVO = null; + if (roleId.equals("1")){ + //老师 + List knowledgeIdList = knowledgeLearningRecordMapper.queryStudyKnowledgeMaxNumber(); + for (String knowledgeId : knowledgeIdList) { + BaseResponse knowledge = knowService.query(Long.valueOf(knowledgeId)); + if (knowledge.getData() != null){ + knowVO = new KnowVO(); + knowVO.setId(knowledge.getData().getId()); + knowVO.setLabel(knowledge.getData().getName()); + knowVO.setColor(knowledge.getData().getInfo()); + coursesList.add(knowVO); + } + } + return coursesList; + }else if (roleId.equals("2")){ + //学生 + List knowledgeIdList = knowledgeLearningRecordMapper.queryStudyMaxKnowledgeId(userId); + for (String knowledgeId : knowledgeIdList) { + BaseResponse knowledge = knowService.query(Long.valueOf(knowledgeId)); + if (knowledge.getData() != null) { + knowVO = new KnowVO(); + knowVO.setId(knowledge.getData().getId()); + knowVO.setLabel(knowledge.getData().getName()); + knowVO.setColor(knowledge.getData().getInfo()); + coursesList.add(knowVO); + } + } + return coursesList; + }else { + return null; + } + } } diff --git a/src/main/java/com/teaching/backend/service/records/IKnowledgeLearningRecordService.java b/src/main/java/com/teaching/backend/service/records/IKnowledgeLearningRecordService.java index 252d176..977aad0 100644 --- a/src/main/java/com/teaching/backend/service/records/IKnowledgeLearningRecordService.java +++ b/src/main/java/com/teaching/backend/service/records/IKnowledgeLearningRecordService.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.teaching.backend.common.BaseResponse; import com.teaching.backend.model.entity.records.KnowledgeLearningRecord; +import com.teaching.backend.model.vo.knowGraph.KnowVO; import java.util.List; @@ -23,5 +24,7 @@ public interface IKnowledgeLearningRecordService extends IService getPage(int pagenum, int pagesize, String userId, String courseId); BaseResponse removeKnowledgeRecord(List ids); + + List queryMaxKnowledge(String userId); } diff --git a/src/main/resources/mapper/KnowledgeLearningRecordMapper.xml b/src/main/resources/mapper/KnowledgeLearningRecordMapper.xml new file mode 100644 index 0000000..3ea0405 --- /dev/null +++ b/src/main/resources/mapper/KnowledgeLearningRecordMapper.xml @@ -0,0 +1,20 @@ + + + + + + + From 6329dec57dd278dcd3f1995f368c272e299a237a Mon Sep 17 00:00:00 2001 From: wenyu441069198 <14186472+wenyu441069198@user.noreply.gitee.com> Date: Tue, 6 Aug 2024 20:22:24 +0800 Subject: [PATCH 08/13] =?UTF-8?q?=E8=82=96=E6=B5=B7=E5=8D=97=E6=B5=8F?= =?UTF-8?q?=E8=A7=88=E5=B0=8F=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../teaching/backend/controller/umsAdmin/ReportController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/teaching/backend/controller/umsAdmin/ReportController.java b/src/main/java/com/teaching/backend/controller/umsAdmin/ReportController.java index 06deea1..439ea74 100644 --- a/src/main/java/com/teaching/backend/controller/umsAdmin/ReportController.java +++ b/src/main/java/com/teaching/backend/controller/umsAdmin/ReportController.java @@ -33,7 +33,7 @@ public class ReportController { * 接收每日浏览量 * @return */ - @PostMapping("/receptionBrowse") + @GetMapping("/receptionBrowse") @ApiOperation("接收每日浏览量") public CommonResult receptionBrowse(){ From e7c9fcbd077aff4f64653787d89dd0c88fa2be32 Mon Sep 17 00:00:00 2001 From: wenyu441069198 <14186472+wenyu441069198@user.noreply.gitee.com> Date: Tue, 6 Aug 2024 20:52:06 +0800 Subject: [PATCH 09/13] =?UTF-8?q?=E8=82=96=E6=B5=B7=E5=8D=97=E6=B5=8F?= =?UTF-8?q?=E8=A7=88=E5=B0=8F=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/report/ReportServiceImpl.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/teaching/backend/service/impl/report/ReportServiceImpl.java b/src/main/java/com/teaching/backend/service/impl/report/ReportServiceImpl.java index e3ee1a3..dd42ddc 100644 --- a/src/main/java/com/teaching/backend/service/impl/report/ReportServiceImpl.java +++ b/src/main/java/com/teaching/backend/service/impl/report/ReportServiceImpl.java @@ -11,6 +11,7 @@ import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.time.LocalDate; +import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.List; @@ -24,7 +25,7 @@ public class ReportServiceImpl extends ServiceImpl impleme @Override public BrowseReportVO getBrowseStatistics() { //存放访问的前一天至前七天的每天对应的日期 - List dateList = new ArrayList<>(); + List dateList = new ArrayList<>(); //存放这个月访问的前一天至前七天的每天对应的浏览量 List ThisMonthBrowseList = new ArrayList<>(); //存放上个月访问的前一天至前七天的每天对应的浏览量 @@ -36,7 +37,9 @@ public class ReportServiceImpl extends ServiceImpl impleme // 获取前七天的日期 for (int i = 1; i <= 7; i++) { LocalDate day = end.minusDays(i); - dateList.add(day); + // 定义一个仅包含月日的格式化器 + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM-dd"); + dateList.add(day.format(formatter)); //查询今天对应的浏览量 String browse = reportMapper.getBrowseByTime(day); @@ -47,6 +50,8 @@ public class ReportServiceImpl extends ServiceImpl impleme LocalDate lastMonth = lastMonthToday.minusDays(i); //查询上个月的今天对应的浏览量 String lastMonthBrowse = reportMapper.getBrowseByTime(lastMonth); + + LastMonthBrowseList.add(lastMonthBrowse); } @@ -62,7 +67,7 @@ public class ReportServiceImpl extends ServiceImpl impleme public boolean getReceptionBrowse() { //查询今日有无记录 List list = lambdaQuery().eq(Report::getCreateTime, LocalDate.now()).list(); - + if (list.size() > 0){ //有,给记录加一 update().setSql("page_view = page_view + 1").eq("create_time",LocalDate.now()).update(); From f4e78612f79276e0dcf9a31dde90033736000bdb Mon Sep 17 00:00:00 2001 From: wenyu441069198 <14186472+wenyu441069198@user.noreply.gitee.com> Date: Wed, 7 Aug 2024 17:23:07 +0800 Subject: [PATCH 10/13] =?UTF-8?q?=E6=96=87=E4=BB=B6=E4=B8=8A=E4=BC=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../KnowledgeLearningRecordController.java | 15 ++- .../ResourceLearningRecordController.java | 27 +++- .../KnowledgeLearningRecordMapper.java | 6 + .../records/ResourceLearningRecordMapper.java | 6 + .../KnowledgeLearningRecordServiceImpl.java | 15 ++- .../IKnowledgeLearningRecordService.java | 2 + .../com/teaching/backend/utils/Constants.java | 5 + .../teaching/backend/utils/UploadUtils.java | 115 ++++++++++++++++++ src/test/java/com/teaching/test.java | 37 ++++++ 9 files changed, 221 insertions(+), 7 deletions(-) create mode 100644 src/main/java/com/teaching/backend/utils/Constants.java create mode 100644 src/main/java/com/teaching/backend/utils/UploadUtils.java create mode 100644 src/test/java/com/teaching/test.java diff --git a/src/main/java/com/teaching/backend/controller/records/KnowledgeLearningRecordController.java b/src/main/java/com/teaching/backend/controller/records/KnowledgeLearningRecordController.java index dac49ac..f723a2d 100644 --- a/src/main/java/com/teaching/backend/controller/records/KnowledgeLearningRecordController.java +++ b/src/main/java/com/teaching/backend/controller/records/KnowledgeLearningRecordController.java @@ -5,9 +5,9 @@ import com.teaching.backend.common.BaseResponse; import com.teaching.backend.common.CommonResult; import com.teaching.backend.common.ResultUtils; import com.teaching.backend.filter.ValidateParams; +import com.teaching.backend.mapper.records.KnowledgeLearningRecordMapper; import com.teaching.backend.model.entity.records.CourseLearningRecord; import com.teaching.backend.model.entity.records.KnowledgeLearningRecord; -import com.teaching.backend.model.vo.courses.CoursesVO; import com.teaching.backend.model.vo.knowGraph.KnowVO; import com.teaching.backend.service.impl.records.KnowledgeLearningRecordServiceImpl; import io.swagger.annotations.ApiOperation; @@ -21,6 +21,8 @@ import java.util.List; public class KnowledgeLearningRecordController { @Resource private KnowledgeLearningRecordServiceImpl knowledgeLearningRecordService; + @Resource + private KnowledgeLearningRecordMapper knowledgeLearningRecordMapper; @ApiOperation("添加知识点学习记录") // @ValidateParams({"userId","type","coursesId"}) @@ -56,6 +58,17 @@ public class KnowledgeLearningRecordController { return knowledgeLearningRecordService.removeKnowledgeRecord(ids); } + /** + * 统计单个学生学习知识点数量 + * @param userId + * @return + */ + @ApiOperation("统计单个学生学习知识点数量") + @GetMapping("/countknowledgenumber") + public BaseResponse countKnowledgeNumber(@RequestParam String userId) { + return ResultUtils.success(knowledgeLearningRecordMapper.selectDistinctKnowledgeIdsByUser(userId).size()); + } + /** * 获取学习最多的知识点 * diff --git a/src/main/java/com/teaching/backend/controller/records/ResourceLearningRecordController.java b/src/main/java/com/teaching/backend/controller/records/ResourceLearningRecordController.java index 98ddfe4..e025d4d 100644 --- a/src/main/java/com/teaching/backend/controller/records/ResourceLearningRecordController.java +++ b/src/main/java/com/teaching/backend/controller/records/ResourceLearningRecordController.java @@ -4,10 +4,12 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.teaching.backend.common.BaseResponse; import com.teaching.backend.common.ResultUtils; import com.teaching.backend.filter.ValidateParams; +import com.teaching.backend.mapper.records.ResourceLearningRecordMapper; import com.teaching.backend.model.entity.records.KnowledgeLearningRecord; import com.teaching.backend.model.entity.records.ResourceLearningRecord; import com.teaching.backend.service.impl.records.KnowledgeLearningRecordServiceImpl; import com.teaching.backend.service.impl.records.ResourceLearningRecordServiceImpl; +import com.teaching.backend.utils.UploadUtils; import io.swagger.annotations.ApiOperation; import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.*; @@ -17,6 +19,7 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.File; +import java.io.IOException; import java.util.List; @RestController @@ -24,6 +27,10 @@ import java.util.List; public class ResourceLearningRecordController { @Resource private ResourceLearningRecordServiceImpl resourceLearningRecordService; + @Resource + private ResourceLearningRecordMapper resourceLearningRecordMapper; + + @ApiOperation("添加资源学习记录") // @ValidateParams({"userId","type","coursesId"}) @@ -60,11 +67,27 @@ public class ResourceLearningRecordController { return resourceLearningRecordService.removeResourceRecord(ids); } + /** + * 统计单个学生学习资源数量 + * @param userId + * @return + */ + @ApiOperation("统计单个学生学习资源数量") + @GetMapping("/countresourcenumber") + public BaseResponse countResourceNumber(@RequestParam String userId) { + return ResultUtils.success(resourceLearningRecordMapper.selectDistinctResourceIdsByUser(userId).size()); + } + + @ApiOperation("上传图片") @PostMapping(value = "/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) - public BaseResponse upload(@RequestPart("filedata") MultipartFile filedata){ + public BaseResponse upload(@RequestPart("filedata") MultipartFile filedata) throws IOException { //调用ser - + System.out.println(filedata.getResource()); + System.out.println(UploadUtils.saveFileByDirectory(filedata)); +// File file = filedata.getResource().getFile(); +// UploadUtils.Chunk(file); +// UploadUtils.Merge(file); //源文件 // File sourseFile = (File) file; return ResultUtils.success("hello"); diff --git a/src/main/java/com/teaching/backend/mapper/records/KnowledgeLearningRecordMapper.java b/src/main/java/com/teaching/backend/mapper/records/KnowledgeLearningRecordMapper.java index 78f4ada..2ddda90 100644 --- a/src/main/java/com/teaching/backend/mapper/records/KnowledgeLearningRecordMapper.java +++ b/src/main/java/com/teaching/backend/mapper/records/KnowledgeLearningRecordMapper.java @@ -3,6 +3,10 @@ package com.teaching.backend.mapper.records; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.teaching.backend.model.entity.records.KnowledgeLearningRecord; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; import java.util.List; @@ -16,6 +20,8 @@ import java.util.List; */ public interface KnowledgeLearningRecordMapper extends BaseMapper { + @Select("SELECT knowledge_id FROM knowledge_learning_record WHERE user_id = #{userId} GROUP BY knowledge_id") + List selectDistinctKnowledgeIdsByUser(@Param("userId") String userId); List queryStudyKnowledgeMaxNumber(); List queryStudyMaxKnowledgeId(String userId); diff --git a/src/main/java/com/teaching/backend/mapper/records/ResourceLearningRecordMapper.java b/src/main/java/com/teaching/backend/mapper/records/ResourceLearningRecordMapper.java index c1235c1..4f7151f 100644 --- a/src/main/java/com/teaching/backend/mapper/records/ResourceLearningRecordMapper.java +++ b/src/main/java/com/teaching/backend/mapper/records/ResourceLearningRecordMapper.java @@ -3,6 +3,10 @@ package com.teaching.backend.mapper.records; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.teaching.backend.model.entity.records.ResourceLearningRecord; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -13,5 +17,7 @@ import com.teaching.backend.model.entity.records.ResourceLearningRecord; * @since 2024-07-24 */ public interface ResourceLearningRecordMapper extends BaseMapper { + @Select("SELECT resource_id FROM resource_learning_record WHERE user_id = #{userId} GROUP BY resource_id") + List selectDistinctResourceIdsByUser(@Param("userId") String userId); } diff --git a/src/main/java/com/teaching/backend/service/impl/records/KnowledgeLearningRecordServiceImpl.java b/src/main/java/com/teaching/backend/service/impl/records/KnowledgeLearningRecordServiceImpl.java index da5e2be..0c10b1f 100644 --- a/src/main/java/com/teaching/backend/service/impl/records/KnowledgeLearningRecordServiceImpl.java +++ b/src/main/java/com/teaching/backend/service/impl/records/KnowledgeLearningRecordServiceImpl.java @@ -72,13 +72,18 @@ public class KnowledgeLearningRecordServiceImpl extends ServiceImpl 0){ + if (count > 0){//有人学过 //自己没学过,人数加1 if (count1 == 0){ - knowledgeLearningNumberService.update().setSql("number = number + 1").eq("course_id", courseId).eq("knowledge_id",knowledgeId).update(); -// System.out.println("用户:"+userId+"第一次学这门课"); + //该知识点学习人数 + knowledgeLearningNumberService.update() + .setSql("number = number + 1") + .eq("course_id", courseId) + .eq("knowledge_id",knowledgeId).update(); + System.out.println("用户:"+userId+":第一次学这门课"); + } - }else { + }else {//没人学过(自己肯定也没学) //该课程第一次被学,人数设置为1 KnowledgeLearningNumber knowledgeLearningNumber = new KnowledgeLearningNumber(); knowledgeLearningNumber.setNumber(1); @@ -96,6 +101,7 @@ public class KnowledgeLearningRecordServiceImpl extends ServiceImpl getPage(int pagenum, int pagesize, String userId, String courseId) { //格式化时间 @@ -167,4 +173,5 @@ public class KnowledgeLearningRecordServiceImpl extends ServiceImpl removeKnowledgeRecord(List ids); + List queryMaxKnowledge(String userId); } diff --git a/src/main/java/com/teaching/backend/utils/Constants.java b/src/main/java/com/teaching/backend/utils/Constants.java new file mode 100644 index 0000000..821d3f2 --- /dev/null +++ b/src/main/java/com/teaching/backend/utils/Constants.java @@ -0,0 +1,5 @@ +package com.teaching.backend.utils; + +public class Constants { + public static final String UPLOAD_URL = "E:\\workspace\\file\\"; +} diff --git a/src/main/java/com/teaching/backend/utils/UploadUtils.java b/src/main/java/com/teaching/backend/utils/UploadUtils.java new file mode 100644 index 0000000..bd844af --- /dev/null +++ b/src/main/java/com/teaching/backend/utils/UploadUtils.java @@ -0,0 +1,115 @@ +package com.teaching.backend.utils; + +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.io.FilenameUtils; +import org.apache.commons.io.FileUtils; +import org.springframework.util.DigestUtils; +import org.springframework.web.multipart.MultipartFile; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.RandomAccessFile; +import java.util.*; + +import static com.teaching.backend.utils.Constants.UPLOAD_URL; + +@Slf4j +//文件上传工具类 +public class UploadUtils { + + public static String saveFileByDirectory (MultipartFile file) { + String url = ""; + try { + // 将文件保存在服务器目录中 + // 文件名称 + String uuid = UUID.randomUUID().toString(); + // 得到上传文件后缀 + String originalName = file.getOriginalFilename(); + String ext = "." + FilenameUtils.getExtension(originalName); + // 新生成的文件名称 + String fileName = uuid + ext; + // 复制文件 + File targetFile = new File(UPLOAD_URL, fileName); + url = UPLOAD_URL + fileName; + FileUtils.writeByteArrayToFile(targetFile, file.getBytes()); + System.out.println("保存成功"); + } catch (IOException e) { + log.error("保存文件到服务器(本地)失败",e); + } + return url; + } + + public static void Chunk(File sourseFile) throws IOException { +// //源文件 +// File sourseFile = new File("D:/Users/Desktop/image/剪映/7.18/7月20.mp4"); + //分块文件存储路径 + String chunkFilePath = "E:\\workspace\\chunk"; + //分块文件大小 + int chunkSize = 1024 * 1024 * 1; + //分块文件个数 + int chunkNum = (int) Math.ceil(sourseFile.length() * 1.0 / chunkSize); + //使用流从源文件读数据,向分块文件中写数据 + RandomAccessFile raf_r = new RandomAccessFile(sourseFile, "r"); + //缓存区 + byte[] bytes = new byte[1024]; + for (int i = 0; i < chunkNum; i++) { + File chunkFile = new File(chunkFilePath + i); + //分块文件写入流 + RandomAccessFile raf_rw = new RandomAccessFile(chunkFile, "rw"); + int len = -1; + while((len=raf_r.read(bytes)) != -1){ + raf_rw.write(bytes, 0, len); + if (chunkFile.length() >= chunkSize){ + break; + } + } + raf_rw.close(); + } + raf_r.close(); + } + + public static void Merge(File sourseFile) throws IOException { + //块文件目录 + File chunkFolder = new File("E:\\workspace\\chunk"); +// //源文件 +// File sourseFile = new File("D:/Users/Desktop/image/剪映/7.18/7月20.mp4"); + //合并后的文件 + File mergeFile = new File("E:\\workspace\\file\\"+sourseFile.getName()); + + //取出所有分块文件 + File[] files = chunkFolder.listFiles(); + //将数组转成list + List fileList = Arrays.asList(files); + //对分块文件排序 + Collections.sort(fileList, new Comparator() { + @Override + public int compare(File o1, File o2) { + return Integer.parseInt(o1.getName()) - Integer.parseInt(o2.getName()); //升序 + } + }); + //向合并文件写的流 + RandomAccessFile raf_rw = new RandomAccessFile(mergeFile, "rw"); + //缓存区 + byte[] bytes = new byte[1024]; + //遍历分块文件,向合并的文件写 + for (File file : fileList) { + //读分块的流 + RandomAccessFile raf_r = new RandomAccessFile(file, "r"); + int len = -1; + while((len = raf_r.read(bytes)) != -1){ + raf_rw.write(bytes, 0, len); + } + raf_r.close(); + } + raf_rw.close(); + //合并文件完成后对合并的文件校验 + FileInputStream fileInputStream_merge = new FileInputStream(mergeFile); + FileInputStream fileInputStream_source = new FileInputStream(sourseFile); + String md5_merge = DigestUtils.md5DigestAsHex(fileInputStream_merge); + String md5_source = DigestUtils.md5DigestAsHex(fileInputStream_source); + if (md5_merge.equals(md5_source)){ + System.out.println("文件合并成功!"); + } + } +} diff --git a/src/test/java/com/teaching/test.java b/src/test/java/com/teaching/test.java new file mode 100644 index 0000000..9fe8f16 --- /dev/null +++ b/src/test/java/com/teaching/test.java @@ -0,0 +1,37 @@ +package com.teaching; + + +import lombok.extern.slf4j.Slf4j; +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +import javax.annotation.Resource; + +@Slf4j +@SpringBootTest +public class test { + + @Resource + private KnowledgeLearningCountServiceImpl knowledgeLearningCountService; + @Test + public void countknowledge(){ + String userId = "2"; +// System.out.println(knowledgeLearningCountService.list()); +// List list = knowledgeLearningCountService.query().eq("user_id", userId).list(); +// HashSet set = new HashSet<>(list); +// System.out.println(set.size()); +// Long count = knowledgeLearningCountService.query().eq("user_id", userId).count(); +// if (count == 0){ +// KnowledgeLearningCount knowledgeLearningCount = new KnowledgeLearningCount(); +// knowledgeLearningCount.setUserId(userId); +// knowledgeLearningCount.setNumber(1); +// knowledgeLearningCountService.save(knowledgeLearningCount); +// }else { +// //该用户学习知识点数+1 +// boolean is = knowledgeLearningCountService.update() +// .setSql("number = "+set.size()) +// .eq("user_id", userId).update(); +// System.out.println(is); +// } + } +} From e72468ec03414f90e97698afda75e29a806ac3c2 Mon Sep 17 00:00:00 2001 From: wenyu441069198 <14186472+wenyu441069198@user.noreply.gitee.com> Date: Wed, 7 Aug 2024 17:24:17 +0800 Subject: [PATCH 11/13] test --- src/test/java/com/teaching/test.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/test/java/com/teaching/test.java b/src/test/java/com/teaching/test.java index 9fe8f16..6d75620 100644 --- a/src/test/java/com/teaching/test.java +++ b/src/test/java/com/teaching/test.java @@ -11,8 +11,7 @@ import javax.annotation.Resource; @SpringBootTest public class test { - @Resource - private KnowledgeLearningCountServiceImpl knowledgeLearningCountService; + @Test public void countknowledge(){ String userId = "2"; From c02e61d35ff91c82fbe0d5ca455bd0376eb0abf1 Mon Sep 17 00:00:00 2001 From: youahng <2998465706@qq.com> Date: Wed, 7 Aug 2024 20:18:00 +0800 Subject: [PATCH 12/13] =?UTF-8?q?=E5=A4=A7=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 6 + .../teaching/backend/config/CorsConfig.java | 1 + .../backend/config/SecurityConfig.java | 16 + .../backend/constant/ViewContentTypeEnum.java | 74 +++ .../controller/Know/KnowController.java | 129 ++++++ .../controller/KnowGraph/KnowController.java | 164 ------- .../KnowGraph/KnowGraphController.java | 56 --- .../KnowGraph/ResourcesController.java | 90 ---- .../controller/Knowtmp/KnowtmpController.java | 51 +++ .../ResourceLearningRecordController.java | 12 +- .../resource/ResourceController.java | 81 +++- .../mapper/KnowGraph/KnowRepository.java | 78 ---- .../mapper/KnowGraph/ResourcesRepository.java | 43 -- .../mapper/Knowtemp/KnowtempMapper.java | 15 - .../mapper/Knowtemp/KnowtmpMapper.java | 18 + .../backend/mapper/know/KnowRepository.java | 66 +++ .../ResourceLearningNumberMapper.java | 17 - .../mapper/resource/ResourcesMapper.java | 20 - .../mapper/resource/ResourcesRepository.java | 64 +++ .../{KnowGraph => Know}/BaseKnowReturn.java | 4 +- .../KnowChapterCreateRequest.java | 4 +- .../KnowCourseCreateRequest.java | 4 +- .../dto/{KnowGraph => Know}/KnowRequest.java | 4 +- .../KnowUpdateRequest.java | 4 +- .../RelationshipKnowRequest.java | 2 +- .../RelationshipResourceRequest.java | 2 +- .../dto/KnowGraph/ResourceUpdateRequest.java | 22 - .../dto/KnowGraph/ResourcesAddRequest.java | 19 - .../model/dto/KnowGraph/ResourcesRequest.java | 15 - .../{Knowtemp => Knowtmp}/KnowtempAdd.java | 6 +- .../{Knowtemp => Knowtmp}/KnowtempUpdate.java | 5 +- .../dto/resource/BucketPolicyConfigDto.java | 31 ++ .../model/dto/resource/ResourceUploadDto.java | 22 + .../backend/model/entity/chapter/Chapter.java | 6 +- .../entity/{KnowGraph => know}/Know.java | 4 +- .../{KnowGraph => know}/KnowChapter.java | 5 +- .../{KnowGraph => know}/KnowCourse.java | 3 +- .../entity/{KnowGraph => know}/Links.java | 2 +- .../Knowtemp.java => knowtmp/Knowtmp.java} | 10 +- .../model/entity/resource/Resource.java | 47 -- .../resource/ResourceLearningNumber.java | 47 -- .../{KnowGraph => resource}/Resources.java | 8 +- .../backend/service/Know/KnowService.java | 74 +++ .../service/KnowGraph/KnowGraphService.java | 138 ------ .../service/KnowGraph/KnowService.java | 431 ------------------ .../service/KnowGraph/ResourcesService.java | 107 ----- .../impl/chapter/ChapterServiceImpl.java | 22 +- .../impl/courses/CoursesServiceImpl.java | 3 - .../service/impl/know/knowServiceImpl.java | 252 ++++++++++ .../impl/knowtmp/KnowtmpServiceImpl.java | 73 +++ .../ResourceLearningRecordServiceImpl.java | 96 ++-- .../ResourceLearningNumberServiceImpl.java | 22 - .../impl/resource/ResourceServiceImpl.java | 171 ++++++- .../service/knowtmp/KnowtmpService.java | 28 ++ .../IResourceLearningRecordService.java | 2 +- .../IResourceLearningNumberService.java | 17 - .../service/resource/ResourceService.java | 33 +- .../teaching/backend/utils/MinioUtils.java | 154 +++++++ .../utils/knowGraph/AddNeoKnowByCourse.java | 35 -- src/main/resources/application.yml | 9 + 60 files changed, 1391 insertions(+), 1553 deletions(-) create mode 100644 src/main/java/com/teaching/backend/constant/ViewContentTypeEnum.java create mode 100644 src/main/java/com/teaching/backend/controller/Know/KnowController.java delete mode 100644 src/main/java/com/teaching/backend/controller/KnowGraph/KnowController.java delete mode 100644 src/main/java/com/teaching/backend/controller/KnowGraph/KnowGraphController.java delete mode 100644 src/main/java/com/teaching/backend/controller/KnowGraph/ResourcesController.java create mode 100644 src/main/java/com/teaching/backend/controller/Knowtmp/KnowtmpController.java delete mode 100644 src/main/java/com/teaching/backend/mapper/KnowGraph/KnowRepository.java delete mode 100644 src/main/java/com/teaching/backend/mapper/KnowGraph/ResourcesRepository.java delete mode 100644 src/main/java/com/teaching/backend/mapper/Knowtemp/KnowtempMapper.java create mode 100644 src/main/java/com/teaching/backend/mapper/Knowtemp/KnowtmpMapper.java create mode 100644 src/main/java/com/teaching/backend/mapper/know/KnowRepository.java delete mode 100644 src/main/java/com/teaching/backend/mapper/resource/ResourceLearningNumberMapper.java delete mode 100644 src/main/java/com/teaching/backend/mapper/resource/ResourcesMapper.java create mode 100644 src/main/java/com/teaching/backend/mapper/resource/ResourcesRepository.java rename src/main/java/com/teaching/backend/model/dto/{KnowGraph => Know}/BaseKnowReturn.java (80%) rename src/main/java/com/teaching/backend/model/dto/{KnowGraph => Know}/KnowChapterCreateRequest.java (70%) rename src/main/java/com/teaching/backend/model/dto/{KnowGraph => Know}/KnowCourseCreateRequest.java (70%) rename src/main/java/com/teaching/backend/model/dto/{KnowGraph => Know}/KnowRequest.java (63%) rename src/main/java/com/teaching/backend/model/dto/{KnowGraph => Know}/KnowUpdateRequest.java (68%) rename src/main/java/com/teaching/backend/model/dto/{KnowGraph => Know}/RelationshipKnowRequest.java (84%) rename src/main/java/com/teaching/backend/model/dto/{KnowGraph => Know}/RelationshipResourceRequest.java (84%) delete mode 100644 src/main/java/com/teaching/backend/model/dto/KnowGraph/ResourceUpdateRequest.java delete mode 100644 src/main/java/com/teaching/backend/model/dto/KnowGraph/ResourcesAddRequest.java delete mode 100644 src/main/java/com/teaching/backend/model/dto/KnowGraph/ResourcesRequest.java rename src/main/java/com/teaching/backend/model/dto/{Knowtemp => Knowtmp}/KnowtempAdd.java (55%) rename src/main/java/com/teaching/backend/model/dto/{Knowtemp => Knowtmp}/KnowtempUpdate.java (73%) create mode 100644 src/main/java/com/teaching/backend/model/dto/resource/BucketPolicyConfigDto.java create mode 100644 src/main/java/com/teaching/backend/model/dto/resource/ResourceUploadDto.java rename src/main/java/com/teaching/backend/model/entity/{KnowGraph => know}/Know.java (88%) rename src/main/java/com/teaching/backend/model/entity/{KnowGraph => know}/KnowChapter.java (85%) rename src/main/java/com/teaching/backend/model/entity/{KnowGraph => know}/KnowCourse.java (89%) rename src/main/java/com/teaching/backend/model/entity/{KnowGraph => know}/Links.java (91%) rename src/main/java/com/teaching/backend/model/entity/{Knowtemp/Knowtemp.java => knowtmp/Knowtmp.java} (65%) delete mode 100644 src/main/java/com/teaching/backend/model/entity/resource/Resource.java delete mode 100644 src/main/java/com/teaching/backend/model/entity/resource/ResourceLearningNumber.java rename src/main/java/com/teaching/backend/model/entity/{KnowGraph => resource}/Resources.java (82%) create mode 100644 src/main/java/com/teaching/backend/service/Know/KnowService.java delete mode 100644 src/main/java/com/teaching/backend/service/KnowGraph/KnowGraphService.java delete mode 100644 src/main/java/com/teaching/backend/service/KnowGraph/KnowService.java delete mode 100644 src/main/java/com/teaching/backend/service/KnowGraph/ResourcesService.java create mode 100644 src/main/java/com/teaching/backend/service/impl/know/knowServiceImpl.java create mode 100644 src/main/java/com/teaching/backend/service/impl/knowtmp/KnowtmpServiceImpl.java delete mode 100644 src/main/java/com/teaching/backend/service/impl/resource/ResourceLearningNumberServiceImpl.java create mode 100644 src/main/java/com/teaching/backend/service/knowtmp/KnowtmpService.java delete mode 100644 src/main/java/com/teaching/backend/service/resource/IResourceLearningNumberService.java create mode 100644 src/main/java/com/teaching/backend/utils/MinioUtils.java delete mode 100644 src/main/java/com/teaching/backend/utils/knowGraph/AddNeoKnowByCourse.java diff --git a/pom.xml b/pom.xml index bfd5080..19e0375 100644 --- a/pom.xml +++ b/pom.xml @@ -45,6 +45,12 @@ poi-ooxml + + + io.minio + minio + 8.2.1 + commons-fileupload diff --git a/src/main/java/com/teaching/backend/config/CorsConfig.java b/src/main/java/com/teaching/backend/config/CorsConfig.java index 9703e85..ba5230f 100644 --- a/src/main/java/com/teaching/backend/config/CorsConfig.java +++ b/src/main/java/com/teaching/backend/config/CorsConfig.java @@ -11,6 +11,7 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @Configuration public class CorsConfig implements WebMvcConfigurer { + @Override public void addCorsMappings(CorsRegistry registry) { // 覆盖所有请求 diff --git a/src/main/java/com/teaching/backend/config/SecurityConfig.java b/src/main/java/com/teaching/backend/config/SecurityConfig.java index 6e5b527..41c5947 100644 --- a/src/main/java/com/teaching/backend/config/SecurityConfig.java +++ b/src/main/java/com/teaching/backend/config/SecurityConfig.java @@ -12,6 +12,8 @@ import org.springframework.security.config.http.SessionCreationPolicy; import org.springframework.security.web.SecurityFilterChain; import org.springframework.security.web.access.intercept.FilterSecurityInterceptor; import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; +import org.springframework.security.web.firewall.HttpFirewall; +import org.springframework.security.web.firewall.StrictHttpFirewall; /** @@ -35,6 +37,20 @@ public class SecurityConfig { @Autowired(required = false) private DynamicSecurityFilter dynamicSecurityFilter; + /** + * 配置地址栏不能识别 // 的情况 + * @return + */ + @Bean + public HttpFirewall allowUrlEncodedSlashHttpFirewall() { + StrictHttpFirewall firewall = new StrictHttpFirewall(); + //此处可添加别的规则,目前只设置 允许双 // + firewall.setAllowUrlEncodedDoubleSlash(true); + return firewall; + } + + + @Bean SecurityFilterChain filterChain(HttpSecurity httpSecurity) throws Exception { ExpressionUrlAuthorizationConfigurer.ExpressionInterceptUrlRegistry registry = httpSecurity diff --git a/src/main/java/com/teaching/backend/constant/ViewContentTypeEnum.java b/src/main/java/com/teaching/backend/constant/ViewContentTypeEnum.java new file mode 100644 index 0000000..cb5b6b2 --- /dev/null +++ b/src/main/java/com/teaching/backend/constant/ViewContentTypeEnum.java @@ -0,0 +1,74 @@ +package com.teaching.backend.constant; + +import org.apache.commons.lang3.StringUtils; + +import java.util.HashMap; +import java.util.Map; + +/** + * @Author:youhang + * @Date:2024-08-07-9:14 + * @Description: + */ +public enum ViewContentTypeEnum { + DEFAULT("default","application/octet-stream"), + PNG("png", "image/png"), + JPEG("jpeg", "image/jpeg"), + JPG("jpg", "image/jpeg"), + GIF("gif", "image/gif"), + WBMP("wbmp", "image/vnd.wap.wbmp"), + TIFF("tiff", "image/tiff"), + JFIF("jfif", "image/jpeg"), + TIF("tif", "image/tiff"), + FAX("fax", "image/fax"), + JPE("jpe", "image/jpeg"), + NET("net", "image/pnetvue"), + RP("rp", "image/vnd.rn-realpix"), + ICO("ico", "image/x-icon"); + + private String prefix; + + private String type; + + private static final Map ENUM_MAP = new HashMap<>(); + + static { + ViewContentTypeEnum[] values = values(); + for (ViewContentTypeEnum value : values) { + ENUM_MAP.put(value.getPrefix(), value); + } + } + + public static String getTypeByPrefix(String prefix) { + ViewContentTypeEnum viewContentTypeEnum = ENUM_MAP.get(prefix); + if (viewContentTypeEnum == null) { + return prefix; + } + return viewContentTypeEnum.getType(); + } + + public static String getContentType(String prefix){ + if(StringUtils.isEmpty(prefix)){ + return DEFAULT.getType(); + } + prefix = prefix.substring(prefix.lastIndexOf(".") + 1); + String type = getTypeByPrefix(prefix); + if (StringUtils.isNotEmpty(type)) { + return type; + } + return DEFAULT.getType(); + } + + ViewContentTypeEnum(String prefix, String type) { + this.prefix = prefix; + this.type = type; + } + + public String getPrefix() { + return prefix; + } + + public String getType() { + return type; + } +} diff --git a/src/main/java/com/teaching/backend/controller/Know/KnowController.java b/src/main/java/com/teaching/backend/controller/Know/KnowController.java new file mode 100644 index 0000000..ee8b95d --- /dev/null +++ b/src/main/java/com/teaching/backend/controller/Know/KnowController.java @@ -0,0 +1,129 @@ +package com.teaching.backend.controller.Know; + +/** + * @Author:youhang + * @Date:2024-06-09-9:55 + * @Description: + */ +import com.teaching.backend.common.BaseResponse; + +import com.teaching.backend.model.dto.Know.*; +import com.teaching.backend.model.entity.know.Know; +import com.teaching.backend.model.entity.know.KnowChapter; +import com.teaching.backend.model.entity.know.KnowCourse; +import com.teaching.backend.model.entity.resource.Resources; +import com.teaching.backend.model.vo.knowGraph.KnowVO1; + +import com.teaching.backend.service.Know.KnowService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.Set; + + +@RestController +@RequestMapping("/knowNeo") +public class KnowController { + + @Autowired + private KnowService knowService; + + // 添加知识点 + @PostMapping("/addKnow") + BaseResponse addKnow(@RequestBody KnowRequest knowRequest){ + return knowService.addKnow(knowRequest); + } + + // 修改知识点 + @PostMapping("/updateKnow") + BaseResponse updateKnow(@RequestBody KnowUpdateRequest knowUpdateRequest){ + return knowService.updateKnow(knowUpdateRequest); + } + + // 删除知识点 + @GetMapping("/deleteKnow") + BaseResponse deleteKnow(@RequestParam Long id){ + return knowService.deleteKnow(id); + } + + //查询知识点通过id + @GetMapping("/queryKnow") + BaseResponse queryKnow(@RequestParam Long id){ + return knowService.queryKnow(id); + } + + //====================================== + + // 添加课程 + @PostMapping("/addCourse") + BaseResponse addCourse(@RequestBody KnowCourseCreateRequest knowCourseCreateRequest){ + return knowService.addCourse(knowCourseCreateRequest); + } + + // 修改课程 + @PostMapping("/updateCourse") + BaseResponse updateCourse(@RequestBody KnowCourseCreateRequest knowCourseCreateRequest){ + return knowService.updateCourse(knowCourseCreateRequest); + } + + + // 删除课程 + @PostMapping("/deleteCourse") + BaseResponse deleteCourse(@RequestParam String courseId){ + return knowService.deleteCourse(courseId); + } + + //查询课程通过courseid + @GetMapping ("/queryCourse") + BaseResponse queryCourse(@RequestParam String courseId){ + return knowService.queryCourse(courseId); + } + + + //========================= + + // 添加章节 + @PostMapping("/addChapter") + BaseResponse addChapter(@RequestBody KnowChapterCreateRequest knowChapterCreateRequest){ + return knowService.addChapter(knowChapterCreateRequest); + } + + // 修改章节 + @PostMapping("/updateChapter") + BaseResponse updateChapter(@RequestBody KnowChapterCreateRequest knowChapterCreateRequest){ + return knowService.updateChapter(knowChapterCreateRequest); + } + + // 删除章节 + @GetMapping("/deleteChapter") + BaseResponse deleteChapter(@RequestParam Long chapterId){ + return knowService.deleteChapter(chapterId); + } + + //查询章节通过chapterId + @PostMapping("/queryChapter") + BaseResponse queryChapter(@RequestParam Long chapterId){ + return knowService.queryChapter(chapterId); + } + + //===================== + + //获取课程下的所有知识点 + @GetMapping("/getAllKnowByCourseId") + BaseKnowReturn getAllKnowByCourseId(@RequestParam String id){ + return knowService.getAllKnowByCourseId(id); + } + + //获取课程下的所有资源 + @GetMapping("/getAllResourcesByCourseId") + BaseResponse> getAllResourcesByCourseId(@RequestParam String id){ + return knowService.getAllResourcesByCourseId(id); + } + + //获取知识点下二级的所有资源 + @GetMapping("/getSecondResources") + Set getSecondResources(@RequestParam Long id){ + return knowService.getSecondResources(id); + } + +} diff --git a/src/main/java/com/teaching/backend/controller/KnowGraph/KnowController.java b/src/main/java/com/teaching/backend/controller/KnowGraph/KnowController.java deleted file mode 100644 index 261bf7b..0000000 --- a/src/main/java/com/teaching/backend/controller/KnowGraph/KnowController.java +++ /dev/null @@ -1,164 +0,0 @@ -package com.teaching.backend.controller.KnowGraph; - -/** - * @Author:youhang - * @Date:2024-06-09-9:55 - * @Description: - */ -import com.teaching.backend.common.BaseResponse; - -import com.teaching.backend.common.ResultUtils; -import com.teaching.backend.model.dto.KnowGraph.BaseKnowReturn; -import com.teaching.backend.model.dto.Knowtemp.KnowtempAdd; -import com.teaching.backend.model.dto.Knowtemp.KnowtempUpdate; -import com.teaching.backend.model.entity.Knowtemp.Knowtemp; -import com.teaching.backend.model.vo.knowGraph.KnowVO; -import com.teaching.backend.model.vo.knowGraph.KnowVO1; -import com.teaching.backend.service.KnowGraph.KnowService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; - -import java.util.List; -import java.util.Set; - - -@RestController -@RequestMapping("/know") -public class KnowController { - - @Autowired - private KnowService knowService; - - //根据 章节id 创建知识点到mysql中 - @PostMapping("/add") - public BaseResponse add(@RequestBody KnowtempAdd knowtempAdd) { - return knowService.add(knowtempAdd); - } - - @PostMapping("/update") - public BaseResponse update(@RequestBody KnowtempUpdate knowtempUpdate) { - return knowService.update(knowtempUpdate); - } - @PostMapping("/delete") - public BaseResponse delete(@RequestParam Long id) { - return knowService.delete(id); - } - @PostMapping("/query") - public BaseResponse query(@RequestParam Long id) { - return knowService.query(id); - } - - //根据 课程id 从chapter表中获取List 章节 - @PostMapping("/addAll") - public BaseResponse addAll(@RequestParam String id) { - return knowService.saveKnowToNeo(id); - } - - // 改变节点关系 - @PostMapping("/update/relationship") - public BaseResponse updateRelationship(@RequestParam Long id, @RequestParam List ids, @RequestParam String relationship) { - return knowService.updateRelationship(id,ids,relationship); - } - - //获取该节点下所有的节点 - @GetMapping("/all") - public BaseResponse getKnowAll(@RequestParam String id) { - BaseKnowReturn baseKnowReturn =knowService.getKnowAll(id); - return ResultUtils.success(baseKnowReturn); - } - @GetMapping("/getAllByCourseId") - public BaseResponse> getKnowByCourseId(String id) { - return knowService.getKnowByCourseId(id); - } -// //根据 id查询所关联的所有结点 -// @PostMapping ("/query/{id}") -// public List queryKnowAllKnowById(@PathVariable Long id) { -// return knowService.queryKnowAllKnowById(id); -// } -// -// //添加知识点 -// @PostMapping("/add") -// public BaseResponse createKnow(@RequestBody KnowRequest knowRequest) { -// return knowService.createKnow(knowRequest); -// } -// //修改知识点 -// @PostMapping ("/update") -// public BaseResponse updateKnow(@RequestBody KnowUpdateRequest knowUpdateRequest) { -// return knowService.updateKnow(knowUpdateRequest); -// } -// //删除知识点 -// @GetMapping ("delete/{id}") -// public BaseResponse deleteKnow(@PathVariable Long id) { -// return knowService.deleteKnow(id); -// } -// -// //添加知识点 - 课程 -// @PostMapping("/add/KnowCourse") -// public BaseResponse createCourseKnow(@RequestBody Courses courses) { -// return knowService.createCourseKnow(courses); -// } -// -// //修改知识点 - 课程 -// @PostMapping("/update/KnowCourse") -// public BaseResponse updateCourseKnow(@RequestBody Courses courses) { -// return knowService.createCourseKnow(courses); -// } -// -// //删除知识点 - 课程 -// @PostMapping("/delete/KnowCourse") -// public BaseResponse deleteCourseKnow(@RequestParam String courseId) { -// return knowService.deleteCourseKnow(courseId); -// } -// -// //添加知识点 - 章节 -// @PostMapping("/addKnowChapter") -// public BaseResponse createKnowChapter(@RequestBody Chapter chapter) { -// return knowService.createKnowChapter(chapter); -// } -// -// //修改知识点 - 章节 -// @PostMapping("/update/KnowChapter") -// public BaseResponse updateKnowChapter(@RequestBody Chapter chapter) { -// return knowService.updateKnowChapter(chapter); -// } -// //删除知识点 - 章节 -// @PostMapping("/delete/KnowChapter") -// public BaseResponse deleteKnowChapter(@RequestParam Long chapterId) { -// return knowService.deleteKnowChapter(chapterId); -// } -// -// @GetMapping("/KnowBychapterId") -// public Set queryByChapterId(@RequestParam Long chapterId) { -// return knowService.queryByChapterId(chapterId); -// } -// -// -// -// //添加知识点与知识点的关系 related -// @PostMapping ("/addKnowRelatedKnow") -// public BaseResponse addKnowRelatedKnow(@RequestBody RelationshipKnowRequest relationshipKnowRequest) { -// return knowService.addKnowRelatedKnow(relationshipKnowRequest); -// } -// -// //添加知识点与知识点的关系 fatherandSon -// @PostMapping ("/addKnowFatherAndSonKnow") -// public BaseResponse addKnowFatherAndSonKnow(@RequestBody RelationshipKnowRequest relationshipKnowRequest) { -// return knowService.addKnowFatherAndSonKnow(relationshipKnowRequest); -// } -// -// //获取该节点下所有的节点 -// @GetMapping("/all") -// public BaseResponse getKnowAll(@RequestParam String id) { -// BaseKnowReturn baseKnowReturn =knowService.getKnowAll(id); -// return ResultUtils.success(baseKnowReturn); -// } -// -// //返回该节点以及二级节点 -// @GetMapping("/KnowById") -// public BaseResponse getKnowById(@RequestParam Long id) { -// BaseKnowReturn baseKnowReturn =knowService.getKnowById(id); -// return ResultUtils.success(baseKnowReturn); -// } - - -} diff --git a/src/main/java/com/teaching/backend/controller/KnowGraph/KnowGraphController.java b/src/main/java/com/teaching/backend/controller/KnowGraph/KnowGraphController.java deleted file mode 100644 index dcbc2d8..0000000 --- a/src/main/java/com/teaching/backend/controller/KnowGraph/KnowGraphController.java +++ /dev/null @@ -1,56 +0,0 @@ -//package com.teaching.backend.controller.KnowGraph; -// -//import com.teaching.backend.common.BaseResponse; -//import com.teaching.backend.model.dto.Knowtemp.KnowtempAdd; -//import com.teaching.backend.model.dto.Knowtemp.KnowtempUpdate; -//import com.teaching.backend.model.entity.KnowGraph.Know; -//import com.teaching.backend.model.entity.Knowtemp.Knowtemp; -//import com.teaching.backend.model.entity.chapter.Chapter; -//import com.teaching.backend.service.KnowGraph.KnowGraphService; -//import io.swagger.models.auth.In; -//import org.springframework.beans.factory.annotation.Autowired; -//import org.springframework.web.bind.annotation.*; -// -//import java.util.List; -// -///** -// * @Author:youhang -// * @Date:2024-07-29-10:32 -// * @Description: -// */ -//@RestController -//@RequestMapping("/knowGraph") -//public class KnowGraphController { -// -// @Autowired -// private KnowGraphService knowGraphService; -// -// //add knowtemp -// @PostMapping("/add") -// public BaseResponse add(@RequestBody KnowtempAdd knowtempAdd) { -// return knowGraphService.add(knowtempAdd); -// } -// -// @PostMapping("/update") -// public BaseResponse update(@RequestBody KnowtempUpdate knowtempUpdate) { -// return knowGraphService.update(knowtempUpdate); -// } -// @PostMapping("/delete") -// public BaseResponse delete(@RequestParam Integer id) { -// return knowGraphService.delete(id); -// } -// @PostMapping("/query") -// public BaseResponse query(@RequestParam Integer id) { -// return knowGraphService.query(id); -// } -// -// -// //根据 课程id 从chapter表中获取List 章节 -// @PostMapping("/addAll") -// public BaseResponse addAll(@PathVariable String id) { -// return knowGraphService.saveKnowToNeo(id); -// } -// -// -// -//} diff --git a/src/main/java/com/teaching/backend/controller/KnowGraph/ResourcesController.java b/src/main/java/com/teaching/backend/controller/KnowGraph/ResourcesController.java deleted file mode 100644 index f8411eb..0000000 --- a/src/main/java/com/teaching/backend/controller/KnowGraph/ResourcesController.java +++ /dev/null @@ -1,90 +0,0 @@ -package com.teaching.backend.controller.KnowGraph; - -/** - * @Author:youhang - * @Date:2024-06-09-9:55 - * @Description: - */ - - -import com.teaching.backend.common.BaseResponse; -import com.teaching.backend.model.dto.KnowGraph.*; -import com.teaching.backend.model.entity.KnowGraph.Know; - -import com.teaching.backend.model.entity.KnowGraph.Resources; - -import com.teaching.backend.service.KnowGraph.ResourcesService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; -import org.springframework.web.multipart.MultipartFile; - -import javax.servlet.http.HttpServletRequest; -import java.io.File; -import java.util.List; -import java.util.Set; - - -@RestController -@RequestMapping("/resources") -public class ResourcesController { - - @Autowired - private ResourcesService resourcesService; - - //添加知识点 - @PostMapping("/upload") - public BaseResponse uploadFile(@RequestParam("file")MultipartFile file) { - return resourcesService.uploadFile(file); - } - - - //根据 id查询所关联的resources结点 - @PostMapping ("/query/{id}") - public List queryKnowAllKnowById(@PathVariable Long id) { - return resourcesService.queryKnowAllResources(id); - } - - //添加资源 - @PostMapping("/add") - public Resources createResources(@RequestBody ResourcesAddRequest resourceAddRequest) { - return resourcesService.createResource(resourceAddRequest); - } - - //添加知识点 - 课程 - @PostMapping("/addKnowResources") - public void createCourseKnow(@RequestBody RelationshipResourceRequest relationshipResourceRequest) { - resourcesService.addKnowWithResources(relationshipResourceRequest); - } - - //修改知识点 - @PostMapping ("/update") - public Resources updateKnow(@RequestBody ResourceUpdateRequest resourceUpdateRequest ) { - return resourcesService.updateResources(resourceUpdateRequest); - } - - - //删除知识点 - @GetMapping ("delete/{id}") - public void deleteResource(@PathVariable Long id) { - resourcesService.deleteResources(id); - } - - //添加知识点与资源的关系 - @PostMapping ("/addKnowResourcesResources") - public void addKnowWithResource(@RequestBody RelationshipResourceRequest relationshipResourceRequest) { - resourcesService.addKnowWithResources(relationshipResourceRequest); - } - - @GetMapping ("queryCourseKnow/{KnowId}") - public Set queryCourseKnowToResources(@PathVariable Long KnowId) { - return resourcesService.queryCourseKnowToResources(KnowId); - } - - @GetMapping ("queryBesidesKnowToResources/{KnowId}") - public List queryBesidesKnowToResources(@PathVariable Long KnowId) { - return resourcesService.queryBesidesKnowToResources(KnowId); - } - - - -} diff --git a/src/main/java/com/teaching/backend/controller/Knowtmp/KnowtmpController.java b/src/main/java/com/teaching/backend/controller/Knowtmp/KnowtmpController.java new file mode 100644 index 0000000..8b28b1b --- /dev/null +++ b/src/main/java/com/teaching/backend/controller/Knowtmp/KnowtmpController.java @@ -0,0 +1,51 @@ +package com.teaching.backend.controller.Knowtmp; + +import com.teaching.backend.common.BaseResponse; +import com.teaching.backend.model.dto.Knowtmp.KnowtempAdd; +import com.teaching.backend.model.dto.Knowtmp.KnowtempUpdate; +import com.teaching.backend.model.entity.knowtmp.Knowtmp; +import com.teaching.backend.service.knowtmp.KnowtmpService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Author:youhang + * @Date:2024-08-07-19:38 + * @Description: + */ +@RestController +@RequestMapping("/knowtmp") +public class KnowtmpController { + + @Autowired + private KnowtmpService knowtmpService; + + + // 添加知识点 + @PostMapping("/addKnow") + BaseResponse add(@RequestBody KnowtempAdd knowtempAdd){ + return knowtmpService.add(knowtempAdd); + } + + + //修改知识点 + @PostMapping("/updateKnow") + BaseResponse update(@RequestBody KnowtempUpdate knowtempUpdate){ + return knowtmpService.update(knowtempUpdate); + } + + + //删除知识点 + @GetMapping("/deleteKnow") + BaseResponse delete(Long id){ + return knowtmpService.delete(id); + } + + //查询通过chapterId List + @GetMapping("/queryKnow") + BaseResponse> queryByChapterId(Long chapterId){ + return knowtmpService.queryByChapterId(chapterId); + } +} diff --git a/src/main/java/com/teaching/backend/controller/records/ResourceLearningRecordController.java b/src/main/java/com/teaching/backend/controller/records/ResourceLearningRecordController.java index efbb8f2..77adf9d 100644 --- a/src/main/java/com/teaching/backend/controller/records/ResourceLearningRecordController.java +++ b/src/main/java/com/teaching/backend/controller/records/ResourceLearningRecordController.java @@ -20,10 +20,10 @@ public class ResourceLearningRecordController { @Resource private ResourceLearningRecordServiceImpl resourceLearningRecordService; - @ApiOperation("添加资源学习记录") -// @ValidateParams({"userId","type","coursesId"}) - @PostMapping("/saverecords") - public BaseResponse saveResourceRecords(@RequestBody ResourceLearningRecord resourceLearningRecord) { - return resourceLearningRecordService.saveCoursesRecords(resourceLearningRecord); - } +// @ApiOperation("添加资源学习记录") +//// @ValidateParams({"userId","type","coursesId"}) +// @PostMapping("/saverecords") +// public BaseResponse saveResourceRecords(@RequestBody ResourceLearningRecord resourceLearningRecord) { +// return resourceLearningRecordService.saveCoursesRecords(resourceLearningRecord); +// } } diff --git a/src/main/java/com/teaching/backend/controller/resource/ResourceController.java b/src/main/java/com/teaching/backend/controller/resource/ResourceController.java index 16102ee..71b0884 100644 --- a/src/main/java/com/teaching/backend/controller/resource/ResourceController.java +++ b/src/main/java/com/teaching/backend/controller/resource/ResourceController.java @@ -1,52 +1,83 @@ package com.teaching.backend.controller.resource; -import com.teaching.backend.common.BaseResponse; -import com.teaching.backend.common.ResultUtils; -import com.teaching.backend.service.KnowGraph.ResourcesService; +/** + * @Author:youhang + * @Date:2024-06-09-9:55 + * @Description: + */ + +import com.teaching.backend.common.BaseResponse; +import com.teaching.backend.model.dto.resource.ResourceUploadDto; +import com.teaching.backend.model.entity.resource.Resources; import com.teaching.backend.service.resource.ResourceService; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.io.InputStreamResource; +import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; +import java.util.List; +import java.util.Set; -import java.io.*; -/** - * ClassName: CommonController - * Package: com.teaching.backend.controller - * Description: - * - * @Author 姜钧瀚 - * @Create 2024/6/1 10:30 - * @Version 1.0 - */ @RestController @RequestMapping("/resource") public class ResourceController { @Autowired - private ResourcesService resourcesService; + private ResourceService resourceService; + //添加知识点 @PostMapping("/upload") - public BaseResponse uploadFile(@RequestParam("file")MultipartFile file) { - return resourcesService.uploadFile(file); + @ResponseBody + public BaseResponse uploadFile(@RequestPart("file") MultipartFile file) { + return resourceService.upload(file); } + //删除资源 + @GetMapping ("delete") + @ResponseBody + public BaseResponse deleteResource(@RequestParam("filename") String filename) { + return resourceService.delete(filename); + } + @GetMapping("/read") + public ResponseEntity readFile(@RequestParam String filename) { + return resourceService.readFile(filename); + } + @GetMapping("/addRelationship/BetweenCourseAndResources") + public BaseResponse addResourcesAndKnowByCourseId(@RequestParam String courseId, @RequestParam List resourcesIds){ + return resourceService.addResourcesAndKnowByCourseId(courseId,resourcesIds); + } + @GetMapping("/addRelationship/BetweenChapterAndResources") + public BaseResponse addResourcesAndKnowByChapterId(@RequestParam Long chapterId,@RequestParam List resourcesIds){ + return resourceService.addResourcesAndKnowByChapterId(chapterId,resourcesIds); + } + @GetMapping("/addRelationship/BetweenKnowAndResources") + public BaseResponse addResourcesAndKnowById(@RequestParam Long id, @RequestParam List resourcesIds){ + return resourceService.addResourcesAndKnowById(id,resourcesIds); + } -} - - - - - - - + //查询课程下资源 + @GetMapping("/queryByCourseId") + Set queryResourcesByCourseId(String courseId){ + return resourceService.queryResourcesByCourseId(courseId); + } + //查询章节下资源 + @GetMapping("/queryByChapterId") + Set queryResourcesByChapterId(Long chapterId){ + return resourceService.queryResourcesByChapterId(chapterId); + } + //查询二级节点下资源 + @GetMapping("/queryBesidesKnow") + Set queryBesidesKnowToResources(Long KnowId){ + return resourceService.queryBesidesKnowToResources(KnowId); + } +} diff --git a/src/main/java/com/teaching/backend/mapper/KnowGraph/KnowRepository.java b/src/main/java/com/teaching/backend/mapper/KnowGraph/KnowRepository.java deleted file mode 100644 index cbfbcf6..0000000 --- a/src/main/java/com/teaching/backend/mapper/KnowGraph/KnowRepository.java +++ /dev/null @@ -1,78 +0,0 @@ -package com.teaching.backend.mapper.KnowGraph; - -/** - * @Author:youhang - * @Date:2024-06-09-8:59 - * @Description: - */ - - -import com.teaching.backend.model.dto.KnowGraph.KnowCourseCreateRequest; -import com.teaching.backend.model.entity.KnowGraph.Know; -import com.teaching.backend.model.entity.KnowGraph.KnowChapter; -import com.teaching.backend.model.entity.KnowGraph.KnowCourse; -import org.springframework.data.neo4j.repository.Neo4jRepository; -import org.springframework.data.neo4j.repository.query.Query; - -import java.util.List; -import java.util.Set; - -public interface KnowRepository extends Neo4jRepository { - - - @Query("MATCH (p:Know) where ID(p) = $id RETURN count(p);") - Boolean deleteKnow(Long id); - - - @Query("MATCH (p:Know), (c:Know) WHERE ID(p) = $id AND ID(c) IN $KnowIds CREATE (p)-[r:FatherAndSon]->(c) return r") - int addKnowFatherAndSonKnow(Long id, List KnowIds); - - @Query("MATCH(n)-[r:related]->(nn:Know) where ID(nn) = $id RETURN n") - List queryKnowAllKnowById(Long id); - - - @Query("CREATE (n:Know {name: $name, courseId: $courseId,info:$info}) return count(n)") - int createKnowCourse(String courseId, String name, String info); - - @Query("MATCH (p:Know {courseId:$courseId }) SET p.name = $name set p.info= $info RETURN p;") - Boolean updateKnowCourse(String courseId, String name, String info); - - @Query("MATCH (p:Know {courseId:$courseId }) RETURN count(p);") - Boolean deleteKnowCourse(String courseId); - - @Query("CREATE (n:Know {name: $name, chapterId: $chapterId,info:$info}) return count(n)") - int createKnowChapter(Long chapterId, String name, String info); - - @Query("MATCH (p:Know {chapterId:$chapterId }) SET p.name = $name set p.info= $info RETURN p;") - Boolean updateKnowChapter(Long chapterId, String name, String info); - - @Query("MATCH (p:Know {chapterId:$chapterId }) RETURN count(p);") - Boolean deleteKnowChapter(Long chapterId); - - @Query("MATCH(n:Know)-[r:FatherAndSon*]->(nn:Know) where n.chapterId = $chapterId RETURN nn") - Set queryByChapterId(Long chapterId); - - - //在章节表里面添加章与课程的关系 - @Query("MATCH (p:Know), (c:Know) WHERE p.courseId = $courseId AND c.chapterId = $ChapterId CREATE (p)-[r:FatherAndSon]->(c) return count(r)") - int addChapterAndCourse(String courseId, Long ChapterId); - - //添加章与节的关系 - @Query("MATCH (p:Know), (c:Know) WHERE p.chapterId = $ChapterId1 AND c.chapterId = $ChapterId2 CREATE (p)-[r:FatherAndSon]->(c) return count(r)") - int addChapterAndCourse( Long ChapterId1, Long ChapterId2); - - //创造知识点并,添加节与知识点的关系 - @Query("MATCH (p:Know) WHERE p.chapterId = $ChapterId CREATE (c:Know{name:$name,info:$info}),(p)-[r:FatherAndSon]->(c) return count(r)") - int CreateKnowaddChapter( Long ChapterId, String name,String info); - - @Query("MATCH (p:Know), (c:Know) WHERE ID(p) = $id AND ID(c) IN $KnowIds CREATE (p)-[r:FatherAndSon]->(c),(c)-[:related]->(p) return count(r)") - int addKnowWithFaherAndSon(Long id, List KnowIds); - - @Query("MATCH (p:Know), (c:Know) WHERE ID(p) = $id AND ID(c) IN $KnowIds CREATE (p)-[r:related]->(c),(c)-[:related]->(p) return count(r)") - int addKnowWithRelated(Long id, List KnowIds); - - @Query("MATCH (p:Know), (c:Know) WHERE ID(p) = $id AND ID(c) IN $KnowIds CREATE (p)-[r:PreCondition]->(c),(c)-[:related]->(p) return count(r)") - int addKnowWithPreCondition(Long id, List KnowIds); - - -} diff --git a/src/main/java/com/teaching/backend/mapper/KnowGraph/ResourcesRepository.java b/src/main/java/com/teaching/backend/mapper/KnowGraph/ResourcesRepository.java deleted file mode 100644 index b4609af..0000000 --- a/src/main/java/com/teaching/backend/mapper/KnowGraph/ResourcesRepository.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.teaching.backend.mapper.KnowGraph; - -/** - * @Author:youhang - * @Date:2024-06-09-8:59 - * @Description: - */ -import java.util.concurrent.*; - -import com.teaching.backend.model.entity.KnowGraph.Know; - -import com.teaching.backend.model.entity.KnowGraph.Resources; -import org.neo4j.driver.Result; -import org.springframework.data.neo4j.repository.Neo4jRepository; -import org.springframework.data.neo4j.repository.query.Query; - -import java.util.List; -import java.util.Set; - -public interface ResourcesRepository extends Neo4jRepository { - - - @Query("MATCH(n:Resources) where n.resourcesId = $resourcesId RETURN n") - Resources queryResources(Long resourcesId); - - - @Query("MATCH (p:Know), (c:Resources) WHERE ID(p) = $id AND ID(c) in $ResourcesIds CREATE (p)-[r:resources]->(c)") - void addResourceResourcesKnow(Long id, List ResourcesIds); - - - @Query("MATCH(n:Know)-[r:resources]->(nn:Resources) where ID(nn) = $id RETURN nn") - List queryResourceAllId(Long id); - - @Query("MATCH p = (a:Know)-[rels*]-(b:Resources) WHERE ID(a) = $KnowId and ANY(rel IN rels WHERE TYPE(rel) = 'resources') RETURN b") - Set queryCourseKnowToResources(Long KnowId); - - @Query("MATCH (p:Know)-[:FatherAndSon]->(n:Know)-[:resources]->(m:Resources) WHERE ID(p) = $KnowId RETURN m") - Set queryBesidesKnowToResources(Long KnowId); - - @Query(" MATCH (p:Know)-[:resources]->(m:Resources) WHERE ID(p) = 272 RETURN m") - Set queryKnowToResources(Long KnowId); - -} diff --git a/src/main/java/com/teaching/backend/mapper/Knowtemp/KnowtempMapper.java b/src/main/java/com/teaching/backend/mapper/Knowtemp/KnowtempMapper.java deleted file mode 100644 index 38c1cab..0000000 --- a/src/main/java/com/teaching/backend/mapper/Knowtemp/KnowtempMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.teaching.backend.mapper.Knowtemp; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.teaching.backend.model.entity.Knowtemp.Knowtemp; - -/** - * 课程点赞数据库操作 - */ -public interface KnowtempMapper extends BaseMapper { - -} - - - - diff --git a/src/main/java/com/teaching/backend/mapper/Knowtemp/KnowtmpMapper.java b/src/main/java/com/teaching/backend/mapper/Knowtemp/KnowtmpMapper.java new file mode 100644 index 0000000..5aee0cb --- /dev/null +++ b/src/main/java/com/teaching/backend/mapper/Knowtemp/KnowtmpMapper.java @@ -0,0 +1,18 @@ +package com.teaching.backend.mapper.Knowtemp; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.teaching.backend.model.entity.knowtmp.Knowtmp; +import org.apache.ibatis.annotations.Mapper; + + +/** + * + */ +@Mapper +public interface KnowtmpMapper extends BaseMapper { + +} + + + + diff --git a/src/main/java/com/teaching/backend/mapper/know/KnowRepository.java b/src/main/java/com/teaching/backend/mapper/know/KnowRepository.java new file mode 100644 index 0000000..9871a0d --- /dev/null +++ b/src/main/java/com/teaching/backend/mapper/know/KnowRepository.java @@ -0,0 +1,66 @@ +package com.teaching.backend.mapper.know; + +/** + * @Author:youhang + * @Date:2024-06-09-8:59 + * @Description: + */ + + +import com.teaching.backend.model.entity.know.Know; +import com.teaching.backend.model.entity.know.KnowChapter; +import com.teaching.backend.model.entity.know.KnowCourse; +import com.teaching.backend.model.entity.resource.Resources; +import org.springframework.data.neo4j.repository.Neo4jRepository; +import org.springframework.data.neo4j.repository.query.Query; + +import java.util.Set; + +public interface KnowRepository extends Neo4jRepository { + + @Query("CREATE (n:Know {name: $name,info:$info}) return count(n)") + int addKnow(String name,String info); + + + @Query("MATCH ID(p:Know) = $id SET p.name = $name set p.info= $info RETURN count(p);") + int updateKnow(Long id, String name, String info); + + @Query("MATCH ID(p:Know) = $id delete p RETURN count(p);") + int deleteKnow(Long id); + + @Query("MATCH ID(p:Know) = $id RETURN p;") + Know queryKnow(Long id); + + //============================= + + @Query("CREATE (n:Know {name: $name, courseId: $courseId,info:$info}) return count(n)") + int addCourse(String courseId, String name, String info); + + @Query("MATCH (p:Know {courseId:$courseId }) SET p.name = $name set p.info= $info RETURN count(p);") + int updateCourse(String courseId, String name, String info); + + @Query("MATCH (p:Know {courseId:$courseId }) delete p RETURN count(p);") + int deleteCourse(String courseId); + + @Query("MATCH (p:Know {courseId:$courseId }) RETURN p;") + KnowCourse queryCourse(String courseId); + + //==================== + + @Query("CREATE (n:Know {name: $name, chapterId:$chapterId,info:$info}) return count(n)") + int addChapter(Long chapterId, String name, String info); + + @Query("MATCH (p:Know {chapterId:$chapterId }) SET p.name = $name set p.info= $info RETURN count(p);") + int updateChapter(Long chapterId, String name, String info); + + @Query("MATCH (p:Know {chapterId:$chapterId }) delete p RETURN count(p);") + int deleteChapter(Long chapterId); + + @Query("MATCH (p:Know {chapterId:$chapterId }) RETURN p;") + KnowChapter queryChapter(Long chapterId); + + //查询二级节点下资源 + @Query("MATCH (p:Know)-[:FatherAndSon]->(n:Know)-[:resources]->(m:Resources) WHERE ID(p) = $id RETURN m") + Set queryBesidesKnowToResources(Long id); + +} diff --git a/src/main/java/com/teaching/backend/mapper/resource/ResourceLearningNumberMapper.java b/src/main/java/com/teaching/backend/mapper/resource/ResourceLearningNumberMapper.java deleted file mode 100644 index 8542b97..0000000 --- a/src/main/java/com/teaching/backend/mapper/resource/ResourceLearningNumberMapper.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.teaching.backend.mapper.resource; - - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.teaching.backend.model.entity.resource.ResourceLearningNumber; - -/** - *

- * Mapper 接口 - *

- * - * @author author - * @since 2024-07-29 - */ -public interface ResourceLearningNumberMapper extends BaseMapper { - -} diff --git a/src/main/java/com/teaching/backend/mapper/resource/ResourcesMapper.java b/src/main/java/com/teaching/backend/mapper/resource/ResourcesMapper.java deleted file mode 100644 index de072b2..0000000 --- a/src/main/java/com/teaching/backend/mapper/resource/ResourcesMapper.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.teaching.backend.mapper.resource; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; - -import com.teaching.backend.model.entity.resource.Resource; -import org.apache.ibatis.annotations.Mapper; - -/** - * ClassName: FileTableMapper - * Package: com.teaching.backend.mapper - * Description: - * - * @Author 姜钧瀚 - * @Create 2024/6/4 11:51 - * @Version 1.0 - */ -@Mapper -public interface ResourcesMapper extends BaseMapper { - -} diff --git a/src/main/java/com/teaching/backend/mapper/resource/ResourcesRepository.java b/src/main/java/com/teaching/backend/mapper/resource/ResourcesRepository.java new file mode 100644 index 0000000..16286ed --- /dev/null +++ b/src/main/java/com/teaching/backend/mapper/resource/ResourcesRepository.java @@ -0,0 +1,64 @@ +package com.teaching.backend.mapper.resource; + +/** + * @Author:youhang + * @Date:2024-06-09-8:59 + * @Description: + */ + + +import com.teaching.backend.model.entity.resource.Resources; +import org.springframework.data.neo4j.repository.Neo4jRepository; +import org.springframework.data.neo4j.repository.query.Query; + +import java.util.List; +import java.util.Set; + +public interface ResourcesRepository extends Neo4jRepository { + + //删除资源节点 + @Query("MATCH(n:Resources) where n.name = $name DETACH DELETE n RETURN COUNT(n) >0;") + Boolean deleteByobjectName(String name); + + //添加课程与资源关系 + @Query("MATCH (p:Know), (c:Resources) WHERE p.courseId = $courseId AND ID(c) in $resourcesIds CREATE (p)-[r:resources]->(c) return count(r)") + int addResourcesAndKnowByCourseId(String courseId, List resourcesIds); + + + //添加章节与资源关系 + @Query("MATCH (p:Know), (c:Resources) WHERE p.chapterId = $chapterId AND ID(c) in $resourcesIds CREATE (p)-[r:resources]->(c) return count(r)") + int addResourcesAndKnowByChapterId(Long chapterId, List resourcesIds); + + //添加知识点与资源关系 + @Query("MATCH (p:Know), (c:Resources) WHERE ID(p) = $id AND ID(c) in $resourcesIds CREATE (p)-[r:resources]->(c) return count(r)") + int addResourcesAndKnowById(Long id, List resourcesIds); + + //查询课程下资源 + @Query("MATCH p = (a:Know)-[rels*]-(b:Resources) WHERE a.courseId = $courseId and ANY(rel IN rels WHERE TYPE(rel) = 'resources') RETURN b") + Set queryResourcesByCourseId(String courseId); + + //查询章节下资源 + @Query("MATCH p = (a:Know)-[rels*]-(b:Resources) WHERE a.chapterId = chapterId and ANY(rel IN rels WHERE TYPE(rel) = 'resources') RETURN b") + Set queryResourcesByChapterId(Long chapterId); + + //查询二级节点下资源 + @Query("MATCH (p:Know)-[:FatherAndSon]->(n:Know)-[:resources]->(m:Resources) WHERE ID(p) = $KnowId RETURN m") + Set queryBesidesKnowToResources(Long KnowId); + + + + +// +// +// @Query("MATCH(n:Know)-[r:resources]->(nn:Resources) where ID(nn) = $id RETURN nn") +// List queryResourceAllId(Long id); +// +// @Query("MATCH p = (a:Know)-[rels*]-(b:Resources) WHERE ID(a) = $KnowId and ANY(rel IN rels WHERE TYPE(rel) = 'resources') RETURN b") +// Set queryCourseKnowToResources(Long KnowId); +// + +// +// @Query(" MATCH (p:Know)-[:resources]->(m:Resources) WHERE ID(p) = 272 RETURN m") +// Set queryKnowToResources(Long KnowId); + +} diff --git a/src/main/java/com/teaching/backend/model/dto/KnowGraph/BaseKnowReturn.java b/src/main/java/com/teaching/backend/model/dto/Know/BaseKnowReturn.java similarity index 80% rename from src/main/java/com/teaching/backend/model/dto/KnowGraph/BaseKnowReturn.java rename to src/main/java/com/teaching/backend/model/dto/Know/BaseKnowReturn.java index 8dc8bef..03e31df 100644 --- a/src/main/java/com/teaching/backend/model/dto/KnowGraph/BaseKnowReturn.java +++ b/src/main/java/com/teaching/backend/model/dto/Know/BaseKnowReturn.java @@ -1,4 +1,4 @@ -package com.teaching.backend.model.dto.KnowGraph; +package com.teaching.backend.model.dto.Know; /** * @Author:youhang @@ -7,7 +7,7 @@ package com.teaching.backend.model.dto.KnowGraph; */ -import com.teaching.backend.model.entity.KnowGraph.Links; +import com.teaching.backend.model.entity.know.Links; import com.teaching.backend.model.vo.knowGraph.KnowVO; import lombok.AllArgsConstructor; import lombok.Data; diff --git a/src/main/java/com/teaching/backend/model/dto/KnowGraph/KnowChapterCreateRequest.java b/src/main/java/com/teaching/backend/model/dto/Know/KnowChapterCreateRequest.java similarity index 70% rename from src/main/java/com/teaching/backend/model/dto/KnowGraph/KnowChapterCreateRequest.java rename to src/main/java/com/teaching/backend/model/dto/Know/KnowChapterCreateRequest.java index 85f542b..293b44c 100644 --- a/src/main/java/com/teaching/backend/model/dto/KnowGraph/KnowChapterCreateRequest.java +++ b/src/main/java/com/teaching/backend/model/dto/Know/KnowChapterCreateRequest.java @@ -1,10 +1,8 @@ -package com.teaching.backend.model.dto.KnowGraph; +package com.teaching.backend.model.dto.Know; import lombok.Data; -import org.springframework.data.neo4j.core.schema.Property; import java.io.Serializable; -import java.util.List; @Data public class KnowChapterCreateRequest implements Serializable { diff --git a/src/main/java/com/teaching/backend/model/dto/KnowGraph/KnowCourseCreateRequest.java b/src/main/java/com/teaching/backend/model/dto/Know/KnowCourseCreateRequest.java similarity index 70% rename from src/main/java/com/teaching/backend/model/dto/KnowGraph/KnowCourseCreateRequest.java rename to src/main/java/com/teaching/backend/model/dto/Know/KnowCourseCreateRequest.java index 9e15c8e..61815f2 100644 --- a/src/main/java/com/teaching/backend/model/dto/KnowGraph/KnowCourseCreateRequest.java +++ b/src/main/java/com/teaching/backend/model/dto/Know/KnowCourseCreateRequest.java @@ -1,10 +1,8 @@ -package com.teaching.backend.model.dto.KnowGraph; +package com.teaching.backend.model.dto.Know; import lombok.Data; -import org.springframework.data.neo4j.core.schema.Property; import java.io.Serializable; -import java.util.List; @Data public class KnowCourseCreateRequest implements Serializable { diff --git a/src/main/java/com/teaching/backend/model/dto/KnowGraph/KnowRequest.java b/src/main/java/com/teaching/backend/model/dto/Know/KnowRequest.java similarity index 63% rename from src/main/java/com/teaching/backend/model/dto/KnowGraph/KnowRequest.java rename to src/main/java/com/teaching/backend/model/dto/Know/KnowRequest.java index 13061f1..14f8492 100644 --- a/src/main/java/com/teaching/backend/model/dto/KnowGraph/KnowRequest.java +++ b/src/main/java/com/teaching/backend/model/dto/Know/KnowRequest.java @@ -1,10 +1,8 @@ -package com.teaching.backend.model.dto.KnowGraph; +package com.teaching.backend.model.dto.Know; import lombok.Data; -import org.springframework.data.neo4j.core.schema.Property; import java.io.Serializable; -import java.util.List; @Data public class KnowRequest implements Serializable { diff --git a/src/main/java/com/teaching/backend/model/dto/KnowGraph/KnowUpdateRequest.java b/src/main/java/com/teaching/backend/model/dto/Know/KnowUpdateRequest.java similarity index 68% rename from src/main/java/com/teaching/backend/model/dto/KnowGraph/KnowUpdateRequest.java rename to src/main/java/com/teaching/backend/model/dto/Know/KnowUpdateRequest.java index e3955d2..feb2520 100644 --- a/src/main/java/com/teaching/backend/model/dto/KnowGraph/KnowUpdateRequest.java +++ b/src/main/java/com/teaching/backend/model/dto/Know/KnowUpdateRequest.java @@ -1,10 +1,8 @@ -package com.teaching.backend.model.dto.KnowGraph; +package com.teaching.backend.model.dto.Know; import lombok.Data; -import org.springframework.data.neo4j.core.schema.Property; import java.io.Serializable; -import java.util.List; @Data public class KnowUpdateRequest implements Serializable { diff --git a/src/main/java/com/teaching/backend/model/dto/KnowGraph/RelationshipKnowRequest.java b/src/main/java/com/teaching/backend/model/dto/Know/RelationshipKnowRequest.java similarity index 84% rename from src/main/java/com/teaching/backend/model/dto/KnowGraph/RelationshipKnowRequest.java rename to src/main/java/com/teaching/backend/model/dto/Know/RelationshipKnowRequest.java index ff3b1ae..d4d0bda 100644 --- a/src/main/java/com/teaching/backend/model/dto/KnowGraph/RelationshipKnowRequest.java +++ b/src/main/java/com/teaching/backend/model/dto/Know/RelationshipKnowRequest.java @@ -1,4 +1,4 @@ -package com.teaching.backend.model.dto.KnowGraph; +package com.teaching.backend.model.dto.Know; import lombok.Data; diff --git a/src/main/java/com/teaching/backend/model/dto/KnowGraph/RelationshipResourceRequest.java b/src/main/java/com/teaching/backend/model/dto/Know/RelationshipResourceRequest.java similarity index 84% rename from src/main/java/com/teaching/backend/model/dto/KnowGraph/RelationshipResourceRequest.java rename to src/main/java/com/teaching/backend/model/dto/Know/RelationshipResourceRequest.java index 3d46088..d7b7708 100644 --- a/src/main/java/com/teaching/backend/model/dto/KnowGraph/RelationshipResourceRequest.java +++ b/src/main/java/com/teaching/backend/model/dto/Know/RelationshipResourceRequest.java @@ -1,4 +1,4 @@ -package com.teaching.backend.model.dto.KnowGraph; +package com.teaching.backend.model.dto.Know; import lombok.Data; diff --git a/src/main/java/com/teaching/backend/model/dto/KnowGraph/ResourceUpdateRequest.java b/src/main/java/com/teaching/backend/model/dto/KnowGraph/ResourceUpdateRequest.java deleted file mode 100644 index 4775269..0000000 --- a/src/main/java/com/teaching/backend/model/dto/KnowGraph/ResourceUpdateRequest.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.teaching.backend.model.dto.KnowGraph; - -import lombok.Data; - -/** - * @Author:youhang - * @Date:2024-07-25-8:39 - * @Description: - */ -@Data -public class ResourceUpdateRequest { - - private Long id; - - private String name; - - - private Integer type; - - - private String path; -} diff --git a/src/main/java/com/teaching/backend/model/dto/KnowGraph/ResourcesAddRequest.java b/src/main/java/com/teaching/backend/model/dto/KnowGraph/ResourcesAddRequest.java deleted file mode 100644 index 32b408d..0000000 --- a/src/main/java/com/teaching/backend/model/dto/KnowGraph/ResourcesAddRequest.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.teaching.backend.model.dto.KnowGraph; - -import lombok.Data; -import org.springframework.data.neo4j.core.schema.Property; - -/** - * @Author:youhang - * @Date:2024-07-25-8:39 - * @Description: - */ -@Data -public class ResourcesAddRequest { - - private String name; - - private Integer type; - - private String path; -} diff --git a/src/main/java/com/teaching/backend/model/dto/KnowGraph/ResourcesRequest.java b/src/main/java/com/teaching/backend/model/dto/KnowGraph/ResourcesRequest.java deleted file mode 100644 index 37e4bdf..0000000 --- a/src/main/java/com/teaching/backend/model/dto/KnowGraph/ResourcesRequest.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.teaching.backend.model.dto.KnowGraph; - -import lombok.Data; -import org.springframework.web.multipart.MultipartFile; - -/** - * @Author:youhang - * @Date:2024-07-25-8:39 - * @Description: - */ -@Data -public class ResourcesRequest { - - private MultipartFile file; -} diff --git a/src/main/java/com/teaching/backend/model/dto/Knowtemp/KnowtempAdd.java b/src/main/java/com/teaching/backend/model/dto/Knowtmp/KnowtempAdd.java similarity index 55% rename from src/main/java/com/teaching/backend/model/dto/Knowtemp/KnowtempAdd.java rename to src/main/java/com/teaching/backend/model/dto/Knowtmp/KnowtempAdd.java index 953db74..3c09119 100644 --- a/src/main/java/com/teaching/backend/model/dto/Knowtemp/KnowtempAdd.java +++ b/src/main/java/com/teaching/backend/model/dto/Knowtmp/KnowtempAdd.java @@ -1,8 +1,5 @@ -package com.teaching.backend.model.dto.Knowtemp; +package com.teaching.backend.model.dto.Knowtmp; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; import lombok.Data; import java.io.Serializable; @@ -24,7 +21,6 @@ public class KnowtempAdd implements Serializable { private Long chapterid; - private String courseid; private Integer ordernum; diff --git a/src/main/java/com/teaching/backend/model/dto/Knowtemp/KnowtempUpdate.java b/src/main/java/com/teaching/backend/model/dto/Knowtmp/KnowtempUpdate.java similarity index 73% rename from src/main/java/com/teaching/backend/model/dto/Knowtemp/KnowtempUpdate.java rename to src/main/java/com/teaching/backend/model/dto/Knowtmp/KnowtempUpdate.java index 427aa4b..2002e75 100644 --- a/src/main/java/com/teaching/backend/model/dto/Knowtemp/KnowtempUpdate.java +++ b/src/main/java/com/teaching/backend/model/dto/Knowtmp/KnowtempUpdate.java @@ -1,6 +1,5 @@ -package com.teaching.backend.model.dto.Knowtemp; +package com.teaching.backend.model.dto.Knowtmp; -import io.swagger.models.auth.In; import lombok.Data; import java.io.Serializable; @@ -23,8 +22,6 @@ public class KnowtempUpdate implements Serializable { private String info; private Long chapterid; - private String courseid; - private Integer ordernum; diff --git a/src/main/java/com/teaching/backend/model/dto/resource/BucketPolicyConfigDto.java b/src/main/java/com/teaching/backend/model/dto/resource/BucketPolicyConfigDto.java new file mode 100644 index 0000000..3242d3a --- /dev/null +++ b/src/main/java/com/teaching/backend/model/dto/resource/BucketPolicyConfigDto.java @@ -0,0 +1,31 @@ +package com.teaching.backend.model.dto.resource; + +import lombok.Builder; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.List; + +/** + * Minio Bucket访问策略配置 + * Created by macro on 2020/8/11. + */ +@Data +@EqualsAndHashCode +@Builder +public class BucketPolicyConfigDto { + + private String Version; + private List Statement; + + @Data + @EqualsAndHashCode + @Builder + public static class Statement { + private String Effect; + private String Principal; + private String Action; + private String Resource; + + } +} diff --git a/src/main/java/com/teaching/backend/model/dto/resource/ResourceUploadDto.java b/src/main/java/com/teaching/backend/model/dto/resource/ResourceUploadDto.java new file mode 100644 index 0000000..0fd2f4d --- /dev/null +++ b/src/main/java/com/teaching/backend/model/dto/resource/ResourceUploadDto.java @@ -0,0 +1,22 @@ +package com.teaching.backend.model.dto.resource; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 文件上传返回结果 + * Created by macro on 2019/12/25. + */ +@Data +@EqualsAndHashCode +public class ResourceUploadDto { + + + private String url; + + + private String name; + + private String objectName; +} diff --git a/src/main/java/com/teaching/backend/model/entity/chapter/Chapter.java b/src/main/java/com/teaching/backend/model/entity/chapter/Chapter.java index 4cadcb9..c7d6e80 100644 --- a/src/main/java/com/teaching/backend/model/entity/chapter/Chapter.java +++ b/src/main/java/com/teaching/backend/model/entity/chapter/Chapter.java @@ -4,8 +4,8 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import com.teaching.backend.model.entity.KnowGraph.Know; -import com.teaching.backend.model.entity.Knowtemp.Knowtemp; + +import com.teaching.backend.model.entity.knowtmp.Knowtmp; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; @@ -90,7 +90,7 @@ public class Chapter implements Serializable { @ApiModelProperty(value = "知识点") @TableField(exist = false) - private List knowledgePoints; // 用于存储章节下的知识点 + private List knowledgePoints; // 用于存储章节下的知识点 } diff --git a/src/main/java/com/teaching/backend/model/entity/KnowGraph/Know.java b/src/main/java/com/teaching/backend/model/entity/know/Know.java similarity index 88% rename from src/main/java/com/teaching/backend/model/entity/KnowGraph/Know.java rename to src/main/java/com/teaching/backend/model/entity/know/Know.java index 10eff7f..b570705 100644 --- a/src/main/java/com/teaching/backend/model/entity/KnowGraph/Know.java +++ b/src/main/java/com/teaching/backend/model/entity/know/Know.java @@ -1,4 +1,4 @@ -package com.teaching.backend.model.entity.KnowGraph; +package com.teaching.backend.model.entity.know; import lombok.Data; import org.springframework.data.neo4j.core.schema.GeneratedValue; @@ -7,7 +7,6 @@ import org.springframework.data.neo4j.core.schema.Node; import org.springframework.data.neo4j.core.schema.Property; import java.io.Serializable; -import java.util.List; @Node @Data @@ -20,7 +19,6 @@ public class Know implements Serializable { @GeneratedValue private Long id; - /** * 知识点名称 */ diff --git a/src/main/java/com/teaching/backend/model/entity/KnowGraph/KnowChapter.java b/src/main/java/com/teaching/backend/model/entity/know/KnowChapter.java similarity index 85% rename from src/main/java/com/teaching/backend/model/entity/KnowGraph/KnowChapter.java rename to src/main/java/com/teaching/backend/model/entity/know/KnowChapter.java index 3454ed0..07e330a 100644 --- a/src/main/java/com/teaching/backend/model/entity/KnowGraph/KnowChapter.java +++ b/src/main/java/com/teaching/backend/model/entity/know/KnowChapter.java @@ -1,4 +1,4 @@ -package com.teaching.backend.model.entity.KnowGraph; +package com.teaching.backend.model.entity.know; import lombok.Data; import org.springframework.data.neo4j.core.schema.GeneratedValue; @@ -7,7 +7,6 @@ import org.springframework.data.neo4j.core.schema.Node; import org.springframework.data.neo4j.core.schema.Property; import java.io.Serializable; -import java.util.List; @Node @Data @@ -24,7 +23,7 @@ public class KnowChapter implements Serializable { /** * 章节id */ - private String chapterId; + private Long chapterId; /** diff --git a/src/main/java/com/teaching/backend/model/entity/KnowGraph/KnowCourse.java b/src/main/java/com/teaching/backend/model/entity/know/KnowCourse.java similarity index 89% rename from src/main/java/com/teaching/backend/model/entity/KnowGraph/KnowCourse.java rename to src/main/java/com/teaching/backend/model/entity/know/KnowCourse.java index 5860524..f85d1d2 100644 --- a/src/main/java/com/teaching/backend/model/entity/KnowGraph/KnowCourse.java +++ b/src/main/java/com/teaching/backend/model/entity/know/KnowCourse.java @@ -1,4 +1,4 @@ -package com.teaching.backend.model.entity.KnowGraph; +package com.teaching.backend.model.entity.know; import lombok.Data; import org.springframework.data.neo4j.core.schema.GeneratedValue; @@ -7,7 +7,6 @@ import org.springframework.data.neo4j.core.schema.Node; import org.springframework.data.neo4j.core.schema.Property; import java.io.Serializable; -import java.util.List; @Node @Data diff --git a/src/main/java/com/teaching/backend/model/entity/KnowGraph/Links.java b/src/main/java/com/teaching/backend/model/entity/know/Links.java similarity index 91% rename from src/main/java/com/teaching/backend/model/entity/KnowGraph/Links.java rename to src/main/java/com/teaching/backend/model/entity/know/Links.java index 139c1dd..b8d47ec 100644 --- a/src/main/java/com/teaching/backend/model/entity/KnowGraph/Links.java +++ b/src/main/java/com/teaching/backend/model/entity/know/Links.java @@ -1,4 +1,4 @@ -package com.teaching.backend.model.entity.KnowGraph; +package com.teaching.backend.model.entity.know; import lombok.Data; import org.springframework.data.neo4j.core.schema.GeneratedValue; diff --git a/src/main/java/com/teaching/backend/model/entity/Knowtemp/Knowtemp.java b/src/main/java/com/teaching/backend/model/entity/knowtmp/Knowtmp.java similarity index 65% rename from src/main/java/com/teaching/backend/model/entity/Knowtemp/Knowtemp.java rename to src/main/java/com/teaching/backend/model/entity/knowtmp/Knowtmp.java index 4538b48..1668352 100644 --- a/src/main/java/com/teaching/backend/model/entity/Knowtemp/Knowtemp.java +++ b/src/main/java/com/teaching/backend/model/entity/knowtmp/Knowtmp.java @@ -1,13 +1,9 @@ -package com.teaching.backend.model.entity.Knowtemp; +package com.teaching.backend.model.entity.knowtmp; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import io.swagger.models.auth.In; import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.experimental.Accessors; import java.io.Serializable; @@ -20,7 +16,7 @@ import java.io.Serializable; * @since 2024-05-31 */ @Data -public class Knowtemp implements Serializable { +public class Knowtmp implements Serializable { @TableField(exist = false) private static final long serialVersionUID = 1L; @@ -36,7 +32,5 @@ public class Knowtemp implements Serializable { private Long chapterid; - private String courseid; - } diff --git a/src/main/java/com/teaching/backend/model/entity/resource/Resource.java b/src/main/java/com/teaching/backend/model/entity/resource/Resource.java deleted file mode 100644 index 0b0a9da..0000000 --- a/src/main/java/com/teaching/backend/model/entity/resource/Resource.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.teaching.backend.model.entity.resource; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; -import lombok.ToString; - -import java.util.stream.Stream; - -/** - * ClassName: FileTable - * Package: com.teaching.backend.model.entity - * Description: - * - * @Author youhang - * @Create 2024/6/4 11:48 - * @Version 1.0 - */ -@Data -@TableName("Resource") -public class Resource { - private static final long serialVersionUID = 1L; - - /** - * 内部编号 - */ - @TableId(value = "id", type = IdType.ASSIGN_ID) - private String id; - private String name; - private int type; - private int status; - private String tags; - private String path; - - /** - * 简介 - */ - private String description; - - /** - * 封面 - */ - private String img; -} diff --git a/src/main/java/com/teaching/backend/model/entity/resource/ResourceLearningNumber.java b/src/main/java/com/teaching/backend/model/entity/resource/ResourceLearningNumber.java deleted file mode 100644 index 4ae2ee2..0000000 --- a/src/main/java/com/teaching/backend/model/entity/resource/ResourceLearningNumber.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.teaching.backend.model.entity.resource; - -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableId; -import java.io.Serializable; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.experimental.Accessors; - -/** - *

- * - *

- * - * @author author - * @since 2024-07-29 - */ -@Data -@EqualsAndHashCode(callSuper = false) -@Accessors(chain = true) -@TableName("resource_learning_number") -@ApiModel(value="ResourceLearningNumber对象", description="") -public class ResourceLearningNumber implements Serializable { - - private static final long serialVersionUID = 1L; - - @ApiModelProperty(value = "资源学习记录id") - @TableId(value = "id", type = IdType.ASSIGN_ID) - private String id; - - @ApiModelProperty(value = "课程id") - private String courseId; - - @ApiModelProperty(value = "知识点id") - private String knowledgeId; - - @ApiModelProperty(value = "资源id") - private String resourceId; - - @ApiModelProperty(value = "学习人数") - private Integer number; - - -} diff --git a/src/main/java/com/teaching/backend/model/entity/KnowGraph/Resources.java b/src/main/java/com/teaching/backend/model/entity/resource/Resources.java similarity index 82% rename from src/main/java/com/teaching/backend/model/entity/KnowGraph/Resources.java rename to src/main/java/com/teaching/backend/model/entity/resource/Resources.java index bacbe59..c2cc9bb 100644 --- a/src/main/java/com/teaching/backend/model/entity/KnowGraph/Resources.java +++ b/src/main/java/com/teaching/backend/model/entity/resource/Resources.java @@ -1,4 +1,4 @@ -package com.teaching.backend.model.entity.KnowGraph; +package com.teaching.backend.model.entity.resource; import lombok.Data; import org.springframework.data.neo4j.core.schema.GeneratedValue; @@ -18,13 +18,13 @@ public class Resources { @GeneratedValue private Long id; - @Property private String name; + @Property - private Integer type; + private Integer status; @Property - private String path; + private String url; } diff --git a/src/main/java/com/teaching/backend/service/Know/KnowService.java b/src/main/java/com/teaching/backend/service/Know/KnowService.java new file mode 100644 index 0000000..14cdb91 --- /dev/null +++ b/src/main/java/com/teaching/backend/service/Know/KnowService.java @@ -0,0 +1,74 @@ +package com.teaching.backend.service.Know; + +import com.teaching.backend.common.BaseResponse; +import com.teaching.backend.model.dto.Know.*; +import com.teaching.backend.model.entity.know.Know; +import com.teaching.backend.model.entity.know.KnowChapter; +import com.teaching.backend.model.entity.know.KnowCourse; +import com.teaching.backend.model.entity.resource.Resources; +import com.teaching.backend.model.vo.knowGraph.KnowVO1; + +import java.util.Set; + +/** + * @Author:youhang + * @Date:2024-08-07-15:50 + * @Description: + */ +public interface KnowService { + + // 添加知识点 + BaseResponse addKnow(KnowRequest knowRequest); + + // 修改知识点 + BaseResponse updateKnow(KnowUpdateRequest knowUpdateRequest); + + // 删除知识点 + BaseResponse deleteKnow(Long id); + + //查询知识点通过id + BaseResponse queryKnow(Long id); + + //====================================== + + // 添加课程 + BaseResponse addCourse(KnowCourseCreateRequest knowCourseCreateRequest); + + // 修改课程 + BaseResponse updateCourse(KnowCourseCreateRequest knowCourseCreateRequest); + + + // 删除课程 + BaseResponse deleteCourse(String courseId); + + //查询课程通过courseid + BaseResponse queryCourse(String courseId); + + + //========================= + + // 添加章节 + BaseResponse addChapter(KnowChapterCreateRequest knowChapterCreateRequest); + + // 修改章节 + BaseResponse updateChapter(KnowChapterCreateRequest knowChapterCreateRequest); + + // 删除章节 + BaseResponse deleteChapter(Long chapterId); + + //查询章节通过chapterId + BaseResponse queryChapter(Long chapterId); + + //===================== + + //获取课程下的所有知识点 + BaseKnowReturn getAllKnowByCourseId(String id); + + //获取课程下的所有资源 + BaseResponse> getAllResourcesByCourseId(String id); + + //获取知识点下二级的所有资源 + Set getSecondResources(Long id); + + +} diff --git a/src/main/java/com/teaching/backend/service/KnowGraph/KnowGraphService.java b/src/main/java/com/teaching/backend/service/KnowGraph/KnowGraphService.java deleted file mode 100644 index 8797762..0000000 --- a/src/main/java/com/teaching/backend/service/KnowGraph/KnowGraphService.java +++ /dev/null @@ -1,138 +0,0 @@ -//package com.teaching.backend.service.KnowGraph; -// -//import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -//import com.teaching.backend.common.BaseResponse; -//import com.teaching.backend.common.ErrorCode; -//import com.teaching.backend.common.ResultUtils; -//import com.teaching.backend.mapper.KnowGraph.KnowRepository; -//import com.teaching.backend.mapper.Knowtemp.KnowtempMapper; -//import com.teaching.backend.mapper.chapter.ChapterMapper; -//import com.teaching.backend.mapper.courses.CoursesMapper; -//import com.teaching.backend.model.dto.Knowtemp.KnowtempAdd; -//import com.teaching.backend.model.dto.Knowtemp.KnowtempUpdate; -//import com.teaching.backend.model.entity.KnowGraph.Know; -//import com.teaching.backend.model.entity.Knowtemp.Knowtemp; -//import com.teaching.backend.model.entity.chapter.Chapter; -//import com.teaching.backend.model.entity.courses.Courses; -//import org.springframework.beans.factory.annotation.Autowired; -//import org.springframework.stereotype.Service; -// -//import java.time.LocalDateTime; -//import java.util.ArrayList; -//import java.util.List; -// -///** -// * @Author:youhang -// * @Date:2024-07-29-10:33 -// * @Description: -// */ -//@Service -//public class KnowGraphService { -// -// @Autowired -// private ChapterMapper chapterMapper; -// -// @Autowired -// private KnowtempMapper knowtempMapper; -// -// @Autowired -// private CoursesMapper coursesMapper; -// -// @Autowired -// private KnowRepository knowRepository; -// -// public BaseResponse add(KnowtempAdd knowtempAdd){ -// String name = knowtempAdd.getName(); -// String info = knowtempAdd.getInfo(); -// Integer chapterId = knowtempAdd.getChapterId(); -// -// Knowtemp knowtemp = new Knowtemp(); -// knowtemp.setName(name); -// knowtemp.setInfo(info); -// knowtemp.setChapterId(chapterId); -// int insert = knowtempMapper.insert(knowtemp); -// if(insert > 0){ -// return ResultUtils.success("添加成功"); -// } -// return ResultUtils.error(ErrorCode.OPERATION_ERROR); -// } -// -//// public BaseResponse update(KnowtempUpdate knowtempUpdate){ -//// Integer id = knowtempUpdate.getId(); -//// String name = knowtempUpdate.getName(); -//// String info = knowtempUpdate.getInfo(); -//// Integer chapterId = knowtempUpdate.getChapterId(); -//// Knowtemp knowtemp = new Knowtemp(); -//// knowtemp = knowtempMapper.selectById(id); -//// if(knowtemp == null){ -//// return ResultUtils.error(ErrorCode.NOT_FOUND_ERROR); -//// } -//// knowtemp.setName(name); -//// knowtemp.setInfo(info); -//// knowtemp.setChapterId(chapterId); -//// int insert = knowtempMapper.updateById(knowtemp); -//// if(insert > 0){ -//// return ResultUtils.success("修改成功"); -//// } -//// return ResultUtils.error(ErrorCode.OPERATION_ERROR); -//// } -//// -//// public BaseResponse delete(Integer id){ -//// Knowtemp knowtemp = new Knowtemp(); -//// knowtemp = knowtempMapper.selectById(id); -//// if(knowtemp == null){ -//// return ResultUtils.error(ErrorCode.NOT_FOUND_ERROR); -//// } -//// int insert = knowtempMapper.deleteById(id); -//// if(insert > 0){ -//// return ResultUtils.success("删除成功"); -//// } -//// return ResultUtils.error(ErrorCode.OPERATION_ERROR); -//// } -//// -//// public BaseResponse query(Integer id){ -//// Knowtemp knowtemp = new Knowtemp(); -//// knowtemp = knowtempMapper.selectById(id); -//// if(knowtemp != null){ -//// return ResultUtils.success(knowtemp); -//// } -//// return ResultUtils.error(ErrorCode.NOT_FOUND_ERROR); -//// } -// -// -//// public BaseResponse saveKnowToNeo(String id) { -//// Courses courses = coursesMapper.selectById(id); -//// int f = knowRepository.createKnowCourse(courses.getId(),courses.getName(),courses.getDescription()); -//// if(f <= 0)return ResultUtils.error(ErrorCode.OPERATION_ERROR); -//// -//// List chapterList = chapterMapper.selectSectionsByCourseId(id); -//// for (int i = 0; i < chapterList.size(); i++) { -//// Chapter chapter = chapterList.get(i); -//// f = knowRepository.createKnowChapter(chapter.getId(),chapter.getName(),chapter.getContent()); -//// if(f <= 0)return ResultUtils.error(ErrorCode.OPERATION_ERROR); -//// } -//// for (int i = 0; i < chapterList.size(); i++) { -//// Chapter chapter = chapterList.get(i); -//// if("".equals(chapter.getPid())){ -//// f = knowRepository.addCourseFatherAndSonKnow(chapter.getCourseId(),chapter.getId()); -//// if(f <= 0)return ResultUtils.error(ErrorCode.OPERATION_ERROR); -//// }else{ -//// f = knowRepository.addChapterFatherAndSonKnow(chapter.getPid(),chapter.getId()); -//// if(f <= 0)return ResultUtils.error(ErrorCode.OPERATION_ERROR); -//// } -//// -//// } -//// QueryWrapper queryWrapper = new QueryWrapper<>(); -//// queryWrapper.eq("courseid",id); -//// List list = knowtempMapper.selectList(queryWrapper); -//// for (int j = 0; j < list.size(); j++) { -//// Knowtemp knowtemp = list.get(j); -//// f = knowRepository.addFatherAndSonKnow(knowtemp.getChapterId(),knowtemp.getName(),knowtemp.getInfo()); -//// if(f <= 0)return ResultUtils.error(ErrorCode.OPERATION_ERROR); -//// } -//// -//// return ResultUtils.success("添加成功"); -//// } -// -// -//} diff --git a/src/main/java/com/teaching/backend/service/KnowGraph/KnowService.java b/src/main/java/com/teaching/backend/service/KnowGraph/KnowService.java deleted file mode 100644 index b74a779..0000000 --- a/src/main/java/com/teaching/backend/service/KnowGraph/KnowService.java +++ /dev/null @@ -1,431 +0,0 @@ -package com.teaching.backend.service.KnowGraph; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.teaching.backend.common.BaseResponse; -import com.teaching.backend.common.ErrorCode; -import com.teaching.backend.common.ResultUtils; -import com.teaching.backend.mapper.KnowGraph.KnowRepository; -import com.teaching.backend.mapper.Knowtemp.KnowtempMapper; -import com.teaching.backend.mapper.chapter.ChapterMapper; -import com.teaching.backend.mapper.courses.CoursesMapper; -import com.teaching.backend.model.dto.KnowGraph.*; -import com.teaching.backend.model.dto.Knowtemp.KnowtempAdd; -import com.teaching.backend.model.dto.Knowtemp.KnowtempUpdate; -import com.teaching.backend.model.dto.chapter.ChapterDTO; -import com.teaching.backend.model.dto.courses.CoursesDTO; -import com.teaching.backend.model.entity.KnowGraph.Know; -import com.teaching.backend.model.entity.KnowGraph.KnowChapter; -import com.teaching.backend.model.entity.KnowGraph.KnowCourse; -import com.teaching.backend.model.entity.KnowGraph.Links; -import com.teaching.backend.model.entity.Knowtemp.Knowtemp; -import com.teaching.backend.model.entity.chapter.Chapter; -import com.teaching.backend.model.entity.courses.Courses; -import com.teaching.backend.model.vo.knowGraph.KnowVO; -import com.teaching.backend.model.vo.knowGraph.KnowVO1; -import org.neo4j.driver.internal.InternalRelationship; -import org.neo4j.driver.types.Node; -import org.springframework.beans.BeanUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.neo4j.core.Neo4jClient; -import org.springframework.stereotype.Service; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestParam; - -import javax.annotation.Resource; -import java.time.LocalDateTime; -import java.util.*; - -/** - * @Author:youhang - * @Date:2024-07-21-14:46 - * @Description: - */ -@Service -public class KnowService { - @Autowired - private KnowRepository knowRepository; - @Autowired - private ChapterMapper chapterMapper; - - @Autowired - private KnowtempMapper knowtempMapper; - - @Autowired - private CoursesMapper coursesMapper; - - @Resource - private Neo4jClient neo4jClient; - - public BaseResponse add(KnowtempAdd knowtempAdd){ - String name = knowtempAdd.getName(); - String info = knowtempAdd.getInfo(); - Long chapterId = knowtempAdd.getChapterid(); - String courseid = knowtempAdd.getCourseid(); - Knowtemp knowtemp = new Knowtemp(); - knowtemp.setName(name); - knowtemp.setInfo(info); - knowtemp.setChapterid(chapterId); - knowtemp.setCourseid(courseid); - int insert = knowtempMapper.insert(knowtemp); - if(insert > 0){ - return ResultUtils.success("添加成功"); - } - return ResultUtils.error(ErrorCode.OPERATION_ERROR); - } - public BaseResponse update(KnowtempUpdate knowtempUpdate){ - Long id = knowtempUpdate.getId(); - String name = knowtempUpdate.getName(); - String info = knowtempUpdate.getInfo(); - Long chapterId = knowtempUpdate.getChapterid(); - String courseid = knowtempUpdate.getCourseid(); - Knowtemp knowtemp = new Knowtemp(); - knowtemp = knowtempMapper.selectById(id); - if(knowtemp == null){ - return ResultUtils.error(ErrorCode.NOT_FOUND_ERROR); - } - knowtemp.setName(name); - knowtemp.setInfo(info); - knowtemp.setChapterid(chapterId); - knowtemp.setCourseid(courseid); - int insert = knowtempMapper.updateById(knowtemp); - if(insert > 0){ - return ResultUtils.success("修改成功"); - } - return ResultUtils.error(ErrorCode.OPERATION_ERROR); - } - - public BaseResponse delete(Long id){ - Knowtemp knowtemp = new Knowtemp(); - knowtemp = knowtempMapper.selectById(id); - if(knowtemp == null){ - return ResultUtils.error(ErrorCode.NOT_FOUND_ERROR); - } - int insert = knowtempMapper.deleteById(id); - if(insert > 0){ - return ResultUtils.success("删除成功"); - } - return ResultUtils.error(ErrorCode.OPERATION_ERROR); - } - - public BaseResponse query(Long id){ - Knowtemp knowtemp = new Knowtemp(); - knowtemp = knowtempMapper.selectById(id); - if(knowtemp != null){ - return ResultUtils.success(knowtemp); - } - return ResultUtils.error(ErrorCode.NOT_FOUND_ERROR); - } - - public BaseResponse saveKnowToNeo(String id) { - Courses courses = coursesMapper.selectById(id); - int f = knowRepository.createKnowCourse(courses.getId(),courses.getName(),courses.getDescription()); - if(f <= 0)return ResultUtils.error(ErrorCode.OPERATION_ERROR); - - List chapterList = chapterMapper.selectSectionsByCourseId(id); - for (int i = 0; i < chapterList.size(); i++) { - Chapter chapter = chapterList.get(i); - f = knowRepository.createKnowChapter(chapter.getId(),chapter.getName(),chapter.getContent()); - if(f <= 0)return ResultUtils.error(ErrorCode.OPERATION_ERROR); - } - for (int i = 0; i < chapterList.size(); i++) { - Chapter chapter = chapterList.get(i); - if(chapter.getPid()== 0){ - f = knowRepository.addChapterAndCourse(chapter.getCourseId(),chapter.getId()); - if(f <= 0)return ResultUtils.error(ErrorCode.OPERATION_ERROR); - }else{ - f = knowRepository.addChapterAndCourse(chapter.getPid(),chapter.getId()); - if(f <= 0)return ResultUtils.error(ErrorCode.OPERATION_ERROR); - } - - } - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("courseid",id); - List list = knowtempMapper.selectList(queryWrapper); - for (int j = 0; j < list.size(); j++) { - Knowtemp knowtemp = list.get(j); - f = knowRepository.CreateKnowaddChapter(knowtemp.getChapterid(),knowtemp.getName(),knowtemp.getInfo()); - if(f <= 0)return ResultUtils.error(ErrorCode.OPERATION_ERROR); - } - - return ResultUtils.success("添加成功"); - } - - public BaseResponse updateRelationship(Long id,List ids,String relationship){ - //必须先学id1的知识点才能学习id2的知识点 - int f = -1; - if("PreCondition".equals(relationship)){ - f = knowRepository.addKnowWithPreCondition(id,ids); - if(f<=0)return ResultUtils.error(ErrorCode.ADD_RELATION_FAILED); - } else if ("FatherAndSon".equals(relationship)) { - f = knowRepository.addKnowWithFaherAndSon(id,ids); - if(f<=0)return ResultUtils.error(ErrorCode.ADD_RELATION_FAILED); - }else{ - f = knowRepository.addKnowWithRelated(id,ids); - if(f<=0)return ResultUtils.error(ErrorCode.ADD_RELATION_FAILED); - } - return ResultUtils.success("添加成功"); - } - - - public BaseKnowReturn getKnowAll(String id) { - Collection> all = - neo4jClient.query( "match(n:Know)-[r*0..]->(p:Know) where n.courseId = '"+id+"' return n as `n`,r as `r`,p as `p`,length(r) as `d`").fetch().all(); - - MapcolorChoose = new HashMap<>(); - String color[] = new String[10]; - String[] colorList = {"#91CC75", "#5470C6", "#FAC858", "#EE6666", "#73C0DE", "#EA7CCC", "#5577FF", "#5577FF", "#9DBFFF", "#78A7FF"}; - for (int i = 0; i < 10; i++) { - colorChoose.put((long) i,colorList[i]); - } - - Iterator> iterator = all.iterator(); - Set knowList = new HashSet<>(); - SetlinksList = new HashSet<>(); - KnowVO knowVO; - List node2 = new ArrayList<>(); - Links links; - int p = 0; - while (iterator.hasNext()) { - Map element = iterator.next(); - knowVO = new KnowVO(); - Node node1 = (Node) element.get("p"); - - Long group = (Long) element.get("d"); - knowVO.setColor(colorChoose.get(group)); - - Long id1 = node1.id(); - String name1 = node1.get("name").asString(); - knowVO.setId(id1); - knowVO.setLabel(name1); - - knowList.add(knowVO); - - node2 = (List) element.get("r"); - for (int i = 0; i < node2.size(); i++) { - InternalRelationship e = (InternalRelationship) node2.get(i); - links = new Links(); - links.setId(e.id()); - links.setSource(e.startNodeId()); - links.setTarget(e.endNodeId()); - links.setLabel(e.type()); - linksList.add(links); - } - - - } - BaseKnowReturn baseKnowReturn = new BaseKnowReturn(knowList,linksList); - return baseKnowReturn; - } - - - public BaseResponse> getKnowByCourseId(String id) { - Collection> all = - neo4jClient.query( "match(n:Know)-[r*0..]->(p:Know) where n.courseId = '"+id+"' return p as `p`").fetch().all(); - Iterator> iterator = all.iterator(); - Set knowList = new HashSet<>(); - KnowVO1 knowVO; - while (iterator.hasNext()) { - Map element = iterator.next(); - knowVO = new KnowVO1(); - Node node1 = (Node) element.get("p"); - Long id1 = node1.id(); - String name1 = node1.get("name").asString(); - knowVO.setId(id1); - knowVO.setLabel(name1); - knowList.add(knowVO); - } - return ResultUtils.success(knowList); - } - -// public List queryKnowAllKnowById(Long id) { -// return knowRepository.queryKnowAllKnowById(id); -// } -// -// -// public BaseResponse createKnow(KnowRequest knowRequest ) { -// String name = knowRequest.getName(); -// String info = knowRequest.getInfo(); -// if("".equals(name) || name.length()<=0){ -// return ResultUtils.error(ErrorCode.PARAMS_EMPTY); -// } -// Know know = new Know(); -// BeanUtils.copyProperties(knowRequest,know); -// return ResultUtils.success(knowRepository.save(know)) ; -// } -// -// public BaseResponse updateKnow(KnowUpdateRequest knowUpdateRequest ) { -// Know know = new Know(); -// try { -// know = knowRepository.findById(knowUpdateRequest.getId()).orElseThrow(() -> new RuntimeException("知识点 not found")); -// }catch (RuntimeException e){ -// return ResultUtils.error(ErrorCode.NOT_FOUND_ERROR); -// } -// String name = knowUpdateRequest.getName(); -// String info = knowUpdateRequest.getInfo(); -// if("".equals(name) || name.length()<=0){ -// return ResultUtils.error(ErrorCode.PARAMS_EMPTY); -// } -// BeanUtils.copyProperties(knowUpdateRequest,know); -// return ResultUtils.success(knowRepository.save(know)); -// } -// public BaseResponse deleteKnow(Long id) { -// Boolean f = knowRepository.deleteKnow(id); -// if(f)return ResultUtils.success("删除成功"); -// return ResultUtils.error(ErrorCode.DELETE_FAILED); -// } -// -// -// -// public BaseResponse createCourseKnow( Courses courses) { -// String courseId = courses.getId(); -// String name = courses.getName(); -// String description = courses.getDescription(); -// return ResultUtils.success(knowRepository.createKnowCourse(courseId,name,description)); -// } -// -// public BaseResponse deleteCourseKnow( String courseId) { -// boolean f = knowRepository.deleteKnowCourse(courseId); -// if(f)return ResultUtils.success("删除成功"); -// return ResultUtils.error(ErrorCode.DELETE_FAILED); -// } -// -// public Boolean updateCourseKnow( Courses courses) { -// String id = courses.getId(); -// String name = courses.getName(); -// String description = courses.getDescription(); -// return knowRepository.updateKnowCourse(id,name,description); -// -// } -// -// public BaseResponse createKnowChapter(Chapter chapter) { -// return ResultUtils.success(knowRepository.createKnowChapter(chapter.getId(), chapter.getName(), chapter.getContent())); -// -// } -// public BaseResponse updateKnowChapter(Chapter chapter) { -// return ResultUtils.success(knowRepository.createKnowChapter(chapter.getId(), chapter.getName(), chapter.getContent())); -// } -// public BaseResponse deleteKnowChapter(Long chapterId) { -// boolean f = knowRepository.deleteKnowChapter(chapterId); -// if(f)return ResultUtils.success("删除成功"); -// return ResultUtils.error(ErrorCode.DELETE_FAILED); -// } -// public Set queryByChapterId(Long chapterId){ -// Set knows = knowRepository.queryByChapterId(chapterId); -// return knows; -// } -// -// -// -// public BaseResponse addKnowRelatedKnow(RelationshipKnowRequest relationshipKnowRequest) { -// int num = knowRepository.addKnowRelatedKnow(relationshipKnowRequest.getId(),relationshipKnowRequest.getKnowIds()); -// if(num == relationshipKnowRequest.getKnowIds().size())return ResultUtils.success("添加关系成功,共添加了"+num+" 条关系"); -// return ResultUtils.error(ErrorCode.DELETE_RELATIONSHIP_FAILED); -// } -// public BaseResponse addKnowFatherAndSonKnow( RelationshipKnowRequest relationshipKnowRequest) { -// int num = knowRepository.addKnowFatherAndSonKnow(relationshipKnowRequest.getId(),relationshipKnowRequest.getKnowIds()); -// if(num == relationshipKnowRequest.getKnowIds().size())return ResultUtils.success("添加关系成功,共添加了"+num+" 条关系"); -// return ResultUtils.error(ErrorCode.DELETE_RELATIONSHIP_FAILED); -// } -// -// -// public BaseKnowReturn getKnowAll(String id) { -// Collection> all = -// neo4jClient.query( "match(n:Know)-[r*0..]->(p:Know) where n.courseId = '"+id+"' return n as `n`,r as `r`,p as `p`,length(r) as `d`").fetch().all(); -// -// MapcolorChoose = new HashMap<>(); -// String color[] = new String[10]; -// String[] colorList = {"#91CC75", "#5470C6", "#FAC858", "#EE6666", "#73C0DE", "#EA7CCC", "#5577FF", "#5577FF", "#9DBFFF", "#78A7FF"}; -// for (int i = 0; i < 10; i++) { -// colorChoose.put((long) i,colorList[i]); -// } -// -// Iterator> iterator = all.iterator(); -// Set knowList = new HashSet<>(); -// SetlinksList = new HashSet<>(); -// KnowVO knowVO; -// List node2 = new ArrayList<>(); -// Links links; -// int p = 0; -// while (iterator.hasNext()) { -// Map element = iterator.next(); -// knowVO = new KnowVO(); -// Node node1 = (Node) element.get("p"); -// -// Long group = (Long) element.get("d"); -// knowVO.setColor(colorChoose.get(group)); -// -// Long id1 = node1.id(); -// String name1 = node1.get("name").asString(); -// knowVO.setId(id1); -// knowVO.setLabel(name1); -// -// knowList.add(knowVO); -// -// node2 = (List) element.get("r"); -// for (int i = 0; i < node2.size(); i++) { -// InternalRelationship e = (InternalRelationship) node2.get(i); -// links = new Links(); -// links.setId(e.id()); -// links.setSource(e.startNodeId()); -// links.setTarget(e.endNodeId()); -// links.setLabel(e.type()); -// linksList.add(links); -// } -// -// -// } -// BaseKnowReturn baseKnowReturn = new BaseKnowReturn(knowList,linksList); -// System.out.println(baseKnowReturn); -// return baseKnowReturn; -// } -// -// public BaseKnowReturn getKnowById(Long id) { -// Collection> all = -// neo4jClient.query( "match(n:Know)-[r*0..2]->(p:Know) where ID(n) = "+id+" return n as `n`,r as `r`,p as `p`,length(r) as `d`").fetch().all(); -// MapcolorChoose = new HashMap<>(); -// String color[] = new String[10]; -// String[] colorList = {"#91CC75", "#5470C6", "#FAC858", "#EE6666", "#73C0DE", "#EA7CCC", "#5577FF", "#5577FF", "#9DBFFF", "#78A7FF"}; -// for (int i = 0; i < 10; i++) { -// colorChoose.put((long) i,colorList[i]); -// } -// -// Iterator> iterator = all.iterator(); -// Set knowList = new HashSet<>(); -// SetlinksList = new HashSet<>(); -// KnowVO knowVO; -// List node2 = new ArrayList<>(); -// Links links; -// int p = 0; -// while (iterator.hasNext()) { -// Map element = iterator.next(); -// -// knowVO = new KnowVO(); -// Node node1 = (Node) element.get("p"); -// Long group = (Long) element.get("d"); -// knowVO.setColor(colorChoose.get(group)); -// Long id1 = node1.id(); -// String name1 = node1.get("name").asString(); -// knowVO.setId(id1); -// knowVO.setLabel(name1); -// knowList.add(knowVO); -// -// node2 = (List) element.get("r"); -// for (int i = 0; i < node2.size(); i++) { -// InternalRelationship e = (InternalRelationship) node2.get(i); -// links = new Links(); -// links.setId(e.id()); -// links.setSource(e.startNodeId()); -// links.setTarget(e.endNodeId()); -// links.setLabel(e.type()); -// linksList.add(links); -// } -// -// -// } -// BaseKnowReturn baseKnowReturn = new BaseKnowReturn(knowList,linksList); -// System.out.println(baseKnowReturn); -// return baseKnowReturn; -// } - - -} diff --git a/src/main/java/com/teaching/backend/service/KnowGraph/ResourcesService.java b/src/main/java/com/teaching/backend/service/KnowGraph/ResourcesService.java deleted file mode 100644 index ffe73b4..0000000 --- a/src/main/java/com/teaching/backend/service/KnowGraph/ResourcesService.java +++ /dev/null @@ -1,107 +0,0 @@ -package com.teaching.backend.service.KnowGraph; - -import cn.hutool.core.io.FileUtil; -import cn.hutool.http.HttpRequest; -import cn.hutool.http.HttpResponse; -import com.teaching.backend.common.BaseResponse; -import com.teaching.backend.common.ErrorCode; -import com.teaching.backend.common.ResultUtils; -import com.teaching.backend.mapper.KnowGraph.ResourcesRepository; -import com.teaching.backend.model.dto.KnowGraph.*; -import com.teaching.backend.model.entity.KnowGraph.Resources; -import com.teaching.backend.utils.FileUtils; -import org.springframework.beans.BeanUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.neo4j.core.Neo4jClient; -import org.springframework.stereotype.Service; -import org.springframework.web.multipart.MultipartFile; -import org.springframework.web.multipart.commons.CommonsMultipartFile; - -import javax.annotation.Resource; -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.nio.charset.StandardCharsets; -import java.util.*; - -/** - * @Author:youhang - * @Date:2024-07-21-14:46 - * @Description: - */ -@Service -public class ResourcesService { - private static final String GLOBAL_CODE_DIR_NAME = "tempFile"; - - @Autowired - private ResourcesRepository resourcesRepository; - @Resource - private Neo4jClient neo4jClient; - - - public List queryKnowAllResources(Long id) { - return resourcesRepository.queryResourceAllId(id); - } - - - public Resources createResource(ResourcesAddRequest resourceAddRequest ) { - String name = resourceAddRequest.getName(); - Integer type = resourceAddRequest.getType(); - String path = resourceAddRequest.getPath(); - Resources resources = new Resources(); - BeanUtils.copyProperties(resourceAddRequest,resources); - return resourcesRepository.save(resources); - } - - - public void deleteResources(Long id) { - resourcesRepository.deleteById(id); - } - - public Resources updateResources(ResourceUpdateRequest resourceUpdateRequest ) { - Resources resources = new Resources(); - resources = resourcesRepository.findById(resourceUpdateRequest.getId()).orElseThrow(() -> new RuntimeException("知识点 not found")); - BeanUtils.copyProperties(resourceUpdateRequest,resources); - return resourcesRepository.save(resources); - } - - - public void addKnowWithResources( RelationshipResourceRequest relationshipResourceRequest) { - resourcesRepository.addResourceResourcesKnow(relationshipResourceRequest.getId(),relationshipResourceRequest.getResourceIds()); - } - - public Set queryCourseKnowToResources(Long KnowId){ - return resourcesRepository.queryCourseKnowToResources(KnowId); - } - - public List queryBesidesKnowToResources(Long KnowId){ - ListmultipartFileList = new ArrayList<>(); - SetresourcesSet = resourcesRepository.queryBesidesKnowToResources(KnowId); - resourcesSet = resourcesRepository.queryKnowToResources(KnowId); - Iteratoriterator = resourcesSet.iterator(); - while (iterator.hasNext()){ - Resources resources = iterator.next(); - MultipartFile multipartFile = FileUtils.fileUrlConvertToMultipartFile(resources.getPath()); - multipartFileList.add(multipartFile); - } - return multipartFileList; - } - - public BaseResponse uploadFile(MultipartFile file) { - String userDir = System.getProperty("user.dir"); - String globalFilePathName = userDir + File.separator + GLOBAL_CODE_DIR_NAME; - if (!FileUtil.exist(globalFilePathName)) { - FileUtil.mkdir(globalFilePathName); - } - // 把用户的文件隔离存放 - File userCodeFile = null; - try { - String userCodeParentPath = globalFilePathName + File.separator + UUID.randomUUID(); - String userCodePath = userCodeParentPath + File.separator + file.getOriginalFilename(); - userCodeFile = FileUtil.writeFromStream(file.getInputStream(), userCodePath); - } catch (Exception e) { - return ResultUtils.error(ErrorCode.UPLOAD_FAILED); - } - return ResultUtils.success(userCodeFile.getPath()); - } -} diff --git a/src/main/java/com/teaching/backend/service/impl/chapter/ChapterServiceImpl.java b/src/main/java/com/teaching/backend/service/impl/chapter/ChapterServiceImpl.java index eea5e3d..3e869b7 100644 --- a/src/main/java/com/teaching/backend/service/impl/chapter/ChapterServiceImpl.java +++ b/src/main/java/com/teaching/backend/service/impl/chapter/ChapterServiceImpl.java @@ -7,13 +7,16 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.teaching.backend.common.ErrorCode; import com.teaching.backend.exception.BusinessException; -import com.teaching.backend.mapper.Knowtemp.KnowtempMapper; + +import com.teaching.backend.mapper.Knowtemp.KnowtmpMapper; import com.teaching.backend.mapper.chapter.ChapterMapper; import com.teaching.backend.model.dto.chapter.ChapterDTO; -import com.teaching.backend.model.entity.Knowtemp.Knowtemp; + import com.teaching.backend.model.entity.chapter.Chapter; +import com.teaching.backend.model.entity.knowtmp.Knowtmp; import com.teaching.backend.model.vo.chapter.ChapterVo; -import com.teaching.backend.service.KnowGraph.KnowService; + +import com.teaching.backend.service.Know.KnowService; import com.teaching.backend.service.chapter.IChapterService; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -34,12 +37,11 @@ public class ChapterServiceImpl extends ServiceImpl impl private ChapterMapper chapterMapper; @Autowired - private KnowtempMapper knowtempMapper; + private KnowtmpMapper knowtmpMapper; // private int count=0; List list=new ArrayList<>(); - @Autowired - private KnowService knowService; + @Override public String updateNumShow(Chapter chapter) { @@ -206,10 +208,10 @@ public class ChapterServiceImpl extends ServiceImpl impl .collect(Collectors.toList()); chapter.setChildren(sortedChildren); - QueryWrapperqueryWrapper = new QueryWrapper<>(); + QueryWrapperqueryWrapper = new QueryWrapper<>(); for (Chapter child : sortedChildren) { queryWrapper.eq("chapterId",child.getId()); - List knows = knowtempMapper.selectList(queryWrapper); + List knows = knowtmpMapper.selectList(queryWrapper); child.setKnowledgePoints(new ArrayList<>(knows)); loadKnowledgePointsRecursively(child); @@ -417,9 +419,9 @@ public class ChapterServiceImpl extends ServiceImpl impl if (count>0){ throw new BusinessException(ErrorCode.OPERATION_ERROR,"存在子章节,无法删除"); } - QueryWrapperqueryWrapper1 = new QueryWrapper<>(); + QueryWrapperqueryWrapper1 = new QueryWrapper<>(); queryWrapper1.eq("chapterId",id); - List knows = knowtempMapper.selectList(queryWrapper1); + List knows = knowtmpMapper.selectList(queryWrapper1); if (!knows.isEmpty()) { throw new BusinessException(ErrorCode.OPERATION_ERROR, "子章节下存在知识点,无法删除"); diff --git a/src/main/java/com/teaching/backend/service/impl/courses/CoursesServiceImpl.java b/src/main/java/com/teaching/backend/service/impl/courses/CoursesServiceImpl.java index eac87ef..48f83c4 100644 --- a/src/main/java/com/teaching/backend/service/impl/courses/CoursesServiceImpl.java +++ b/src/main/java/com/teaching/backend/service/impl/courses/CoursesServiceImpl.java @@ -32,7 +32,6 @@ import com.teaching.backend.model.vo.courses.CoursesVO; import com.teaching.backend.model.vo.umsAdmin.UmsStudentVO; import com.teaching.backend.service.courses.ICoursesService; import com.teaching.backend.utils.CourseCode; -import com.teaching.backend.utils.knowGraph.AddNeoKnowByCourse; import org.apache.poi.xwpf.usermodel.*; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -91,8 +90,6 @@ public class CoursesServiceImpl extends ServiceImpl impl @Autowired private LearningRecordsMapper learningRecordsMapper; @Autowired - private AddNeoKnowByCourse addNeoKnowByCourse; - @Autowired CourseLearningRecordMapper courseLearningRecordMapper; diff --git a/src/main/java/com/teaching/backend/service/impl/know/knowServiceImpl.java b/src/main/java/com/teaching/backend/service/impl/know/knowServiceImpl.java new file mode 100644 index 0000000..ae58db6 --- /dev/null +++ b/src/main/java/com/teaching/backend/service/impl/know/knowServiceImpl.java @@ -0,0 +1,252 @@ +package com.teaching.backend.service.impl.know; + +import com.teaching.backend.common.BaseResponse; +import com.teaching.backend.common.ErrorCode; +import com.teaching.backend.common.ResultUtils; +import com.teaching.backend.mapper.know.KnowRepository; +import com.teaching.backend.model.dto.Know.*; +import com.teaching.backend.model.entity.know.Know; +import com.teaching.backend.model.entity.know.KnowChapter; +import com.teaching.backend.model.entity.know.KnowCourse; +import com.teaching.backend.model.entity.know.Links; +import com.teaching.backend.model.entity.resource.Resources; +import com.teaching.backend.model.vo.knowGraph.KnowVO; +import com.teaching.backend.model.vo.knowGraph.KnowVO1; +import com.teaching.backend.service.Know.KnowService; +import org.neo4j.driver.internal.InternalRelationship; +import org.neo4j.driver.types.Node; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.neo4j.core.Neo4jClient; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.*; + +/** + * @Author:youhang + * @Date:2024-08-07-15:47 + * @Description: + */ +@Service +public class knowServiceImpl implements KnowService { + + @Autowired + private KnowRepository knowRepository; + + @Resource + private Neo4jClient neo4jClient; + + @Override + public BaseResponse addKnow(KnowRequest knowRequest) { + Know know = new Know(); + BeanUtils.copyProperties(knowRequest,know); + int f = knowRepository.addKnow(know.getName(),know.getInfo()); + if(f > 0){ + return ResultUtils.success("添加知识点成功"); + }else{ + return ResultUtils.error(ErrorCode.OPERATION_ERROR,"添加知识点失败"); + } + } + + @Override + public BaseResponse updateKnow(KnowUpdateRequest knowUpdateRequest) { + Know know = new Know(); + BeanUtils.copyProperties(knowUpdateRequest,know); + int f = knowRepository.updateKnow(know.getId(),know.getName(),know.getInfo()); + if(f > 0){ + return ResultUtils.success("修改知识点成功"); + }else{ + return ResultUtils.error(ErrorCode.OPERATION_ERROR,"修改知识点失败"); + } + } + + @Override + public BaseResponse deleteKnow(Long id) { + // todo 判断知识点存在否 + int f = knowRepository.deleteKnow(id); + if(f > 0){ + return ResultUtils.success("删除知识点成功"); + }else{ + return ResultUtils.error(ErrorCode.OPERATION_ERROR,"删除知识点失败"); + } + + } + + @Override + public BaseResponse queryKnow(Long id) { + Know know = knowRepository.queryKnow(id); + return ResultUtils.success(know); + } + + //======================== + + @Override + public BaseResponse addCourse(KnowCourseCreateRequest knowCourseCreateRequest) { + KnowCourse knowCourse = new KnowCourse(); + BeanUtils.copyProperties(knowCourseCreateRequest,knowCourse); + int f = knowRepository.addCourse(knowCourse.getCourseId(),knowCourse.getName(),knowCourse.getInfo()); + if(f > 0){ + return ResultUtils.success("添加知识点成功"); + }else{ + return ResultUtils.error(ErrorCode.OPERATION_ERROR,"添加知识点失败"); + } + } + + @Override + public BaseResponse updateCourse(KnowCourseCreateRequest knowCourseCreateRequest) { + KnowCourse knowCourse = new KnowCourse(); + BeanUtils.copyProperties(knowCourseCreateRequest,knowCourse); + int f = knowRepository.updateCourse(knowCourse.getCourseId(),knowCourse.getName(),knowCourse.getInfo()); + if(f > 0){ + return ResultUtils.success("修改知识点成功"); + }else{ + return ResultUtils.error(ErrorCode.OPERATION_ERROR,"修改知识点失败"); + } + } + + @Override + public BaseResponse deleteCourse(String courseId) { + + int f = knowRepository.deleteCourse(courseId); + if(f > 0){ + return ResultUtils.success("删除知识点成功"); + }else{ + return ResultUtils.error(ErrorCode.OPERATION_ERROR,"删除知识点失败"); + } + } + + @Override + public BaseResponse queryCourse(String courseId) { + KnowCourse Knowcourse = knowRepository.queryCourse(courseId); + return ResultUtils.success(Knowcourse); + } + + //========================= + + + + @Override + public BaseResponse addChapter(KnowChapterCreateRequest knowChapterCreateRequest) { + KnowChapter knowChapter = new KnowChapter(); + BeanUtils.copyProperties(knowChapterCreateRequest,knowChapter); + int f = knowRepository.addChapter(knowChapter.getChapterId(),knowChapter.getName(),knowChapter.getInfo()); + if(f > 0){ + return ResultUtils.success("添加知识点成功"); + }else{ + return ResultUtils.error(ErrorCode.OPERATION_ERROR,"添加知识点失败"); + } + } + + @Override + public BaseResponse updateChapter(KnowChapterCreateRequest knowChapterCreateRequest) { + KnowChapter knowChapter = new KnowChapter(); + BeanUtils.copyProperties(knowChapterCreateRequest,knowChapter); + int f = knowRepository.updateChapter(knowChapter.getChapterId(),knowChapter.getName(),knowChapter.getInfo()); + if(f > 0){ + return ResultUtils.success("修改知识点成功"); + }else{ + return ResultUtils.error(ErrorCode.OPERATION_ERROR,"修改知识点失败"); + } + } + + @Override + public BaseResponse deleteChapter(Long chapterId) { + int f = knowRepository.deleteChapter(chapterId); + if(f > 0){ + return ResultUtils.success("删除知识点成功"); + }else{ + return ResultUtils.error(ErrorCode.OPERATION_ERROR,"删除知识点失败"); + } + } + + @Override + public BaseResponse queryChapter(Long chapterId) { + KnowChapter knowChapter = knowRepository.queryChapter(chapterId); + return ResultUtils.success(knowChapter); + } + + //=============== + + //获取课程下的所有知识点 + @Override + public BaseKnowReturn getAllKnowByCourseId(String id) { + Collection> all = + neo4jClient.query( "match(n:Know)-[r*0..]->(p:Know) where n.courseId = '"+id+"' return n as `n`,r as `r`,p as `p`,length(r) as `d`").fetch().all(); + + MapcolorChoose = new HashMap<>(); + String color[] = new String[10]; + String[] colorList = {"#91CC75", "#5470C6", "#FAC858", "#EE6666", "#73C0DE", "#EA7CCC", "#5577FF", "#5577FF", "#9DBFFF", "#78A7FF"}; + for (int i = 0; i < 10; i++) { + colorChoose.put((long) i,colorList[i]); + } + + Iterator> iterator = all.iterator(); + Set knowList = new HashSet<>(); + SetlinksList = new HashSet<>(); + KnowVO knowVO; + List node2 = new ArrayList<>(); + Links links; + int p = 0; + while (iterator.hasNext()) { + Map element = iterator.next(); + knowVO = new KnowVO(); + Node node1 = (Node) element.get("p"); + + Long group = (Long) element.get("d"); + knowVO.setColor(colorChoose.get(group)); + + Long id1 = node1.id(); + String name1 = node1.get("name").asString(); + knowVO.setId(id1); + knowVO.setLabel(name1); + + knowList.add(knowVO); + + node2 = (List) element.get("r"); + for (int i = 0; i < node2.size(); i++) { + InternalRelationship e = (InternalRelationship) node2.get(i); + links = new Links(); + links.setId(e.id()); + links.setSource(e.startNodeId()); + links.setTarget(e.endNodeId()); + links.setLabel(e.type()); + linksList.add(links); + } + + + } + BaseKnowReturn baseKnowReturn = new BaseKnowReturn(knowList,linksList); + return baseKnowReturn; + } + + //获取课程下的所有资源 + @Override + public BaseResponse> getAllResourcesByCourseId(String id) { + Collection> all = + neo4jClient.query( "match(n:Know)-[r*0..]->(p:Know) where n.courseId = '"+id+"' return p as `p`").fetch().all(); + Iterator> iterator = all.iterator(); + Set knowList = new HashSet<>(); + KnowVO1 knowVO; + while (iterator.hasNext()) { + Map element = iterator.next(); + knowVO = new KnowVO1(); + Node node1 = (Node) element.get("p"); + Long id1 = node1.id(); + String name1 = node1.get("name").asString(); + knowVO.setId(id1); + knowVO.setLabel(name1); + knowList.add(knowVO); + } + return ResultUtils.success(knowList); + } + + //获取知识点下二级的所有资源 + @Override + public Set getSecondResources(Long id) { + SetresourcesSet ; + resourcesSet = knowRepository.queryBesidesKnowToResources(id); + return resourcesSet; + } + +} diff --git a/src/main/java/com/teaching/backend/service/impl/knowtmp/KnowtmpServiceImpl.java b/src/main/java/com/teaching/backend/service/impl/knowtmp/KnowtmpServiceImpl.java new file mode 100644 index 0000000..a1b9ddd --- /dev/null +++ b/src/main/java/com/teaching/backend/service/impl/knowtmp/KnowtmpServiceImpl.java @@ -0,0 +1,73 @@ +package com.teaching.backend.service.impl.knowtmp; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.teaching.backend.common.BaseResponse; +import com.teaching.backend.common.ErrorCode; +import com.teaching.backend.common.ResultUtils; +import com.teaching.backend.mapper.Knowtemp.KnowtmpMapper; +import com.teaching.backend.model.dto.Knowtmp.KnowtempAdd; +import com.teaching.backend.model.dto.Knowtmp.KnowtempUpdate; +import com.teaching.backend.model.entity.knowtmp.Knowtmp; +import com.teaching.backend.service.knowtmp.KnowtmpService; +import org.checkerframework.checker.units.qual.A; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * @Author:youhang + * @Date:2024-08-07-19:40 + * @Description: + */ +@Service +public class KnowtmpServiceImpl implements KnowtmpService { + + @Autowired + private KnowtmpMapper knowtmpMapper; + + @Override + public BaseResponse add(KnowtempAdd knowtempAdd) { + Knowtmp knowtmp = new Knowtmp(); + BeanUtils.copyProperties(knowtempAdd,knowtmp); + int f = knowtmpMapper.insert(knowtmp); + if(f > 0){ + return ResultUtils.success("添加成功"); + }else{ + return ResultUtils.error(ErrorCode.OPERATION_ERROR,"添加失败"); + } + } + + @Override + public BaseResponse update(KnowtempUpdate knowtempUpdate) { + Knowtmp knowtmp = new Knowtmp(); + BeanUtils.copyProperties(knowtempUpdate,knowtmp); + int f = knowtmpMapper.updateById(knowtmp); + if(f > 0){ + return ResultUtils.success("修改成功"); + }else{ + return ResultUtils.error(ErrorCode.OPERATION_ERROR,"修改失败"); + } + } + + @Override + public BaseResponse delete(Long id) { + // todo 查询 id + int f = knowtmpMapper.deleteById(id); + if(f > 0){ + return ResultUtils.success("删除成功"); + }else{ + return ResultUtils.error(ErrorCode.OPERATION_ERROR,"删除失败"); + } + } + + @Override + public BaseResponse> queryByChapterId(Long chapterId) { + Knowtmp knowtmp = new Knowtmp(); + final QueryWrapper knowtmpQueryWrapper = new QueryWrapper<>(); + knowtmpQueryWrapper.eq("chapterId",chapterId); + List knowtmps = knowtmpMapper.selectList(knowtmpQueryWrapper); + return ResultUtils.success(knowtmps); + } +} diff --git a/src/main/java/com/teaching/backend/service/impl/records/ResourceLearningRecordServiceImpl.java b/src/main/java/com/teaching/backend/service/impl/records/ResourceLearningRecordServiceImpl.java index 1220371..c69e71d 100644 --- a/src/main/java/com/teaching/backend/service/impl/records/ResourceLearningRecordServiceImpl.java +++ b/src/main/java/com/teaching/backend/service/impl/records/ResourceLearningRecordServiceImpl.java @@ -6,8 +6,6 @@ import com.teaching.backend.common.BaseResponse; import com.teaching.backend.common.ResultUtils; import com.teaching.backend.mapper.records.ResourceLearningRecordMapper; import com.teaching.backend.model.entity.records.ResourceLearningRecord; -import com.teaching.backend.model.entity.resource.ResourceLearningNumber; -import com.teaching.backend.service.impl.resource.ResourceLearningNumberServiceImpl; import com.teaching.backend.service.records.IResourceLearningRecordService; import org.springframework.stereotype.Service; @@ -25,52 +23,52 @@ import java.time.LocalDateTime; @Service public class ResourceLearningRecordServiceImpl extends ServiceImpl implements IResourceLearningRecordService { - @Resource - private ResourceLearningNumberServiceImpl resourceLearningNumberService; +// @Resource +// private ResourceLearningNumberServiceImpl resourceLearningNumberService; - @Override - public BaseResponse saveCoursesRecords(ResourceLearningRecord resourceLearningRecord) { - //课程id - String courseId = resourceLearningRecord.getCoursesId(); - String knowledgeId = resourceLearningRecord.getKnowledgeId(); - String resourceId = resourceLearningRecord.getResourceId(); - String userId = resourceLearningRecord.getUserId(); - //1.生成学习时间 - resourceLearningRecord.setTimes(LocalDateTime.now()); - //2.设置人数 - //2.1查人数 - Long count = resourceLearningNumberService.query() - .eq("course_id", courseId) - .eq("knowledge_id",knowledgeId) - .eq("resource_id",resourceId).count(); - //2.2判断自己是否学习过 - Long count1 = query().eq("user_id", userId).count(); - if (count > 0){ - //自己没学过,人数加1 - if (count1 == 0){ - resourceLearningNumberService.update().setSql("number = number + 1") - .eq("course_id",courseId) - .eq("knowledge_id",knowledgeId) - .eq("resource_id",resourceId).update(); -// System.out.println("用户:"+userId+"第一次学这门课"); - } - }else { - //该课程第一次被学,人数设置为1 - ResourceLearningNumber resourceLearningNumber = new ResourceLearningNumber(); - resourceLearningNumber.setNumber(1); - resourceLearningNumber.setCourseId(courseId); - resourceLearningNumber.setKnowledgeId(knowledgeId); - resourceLearningNumber.setResourceId(resourceId); - resourceLearningNumberService.save(resourceLearningNumber); - } - //设置人数 - String numberId = resourceLearningNumberService.query() - .eq("course_id", courseId) - .eq("knowledge_id",knowledgeId) - .eq("resource_id",resourceId).one().getId(); - resourceLearningRecord.setNumber(numberId); - //保存记录 - save(resourceLearningRecord); - return ResultUtils.success("添加成功"); - } +// @Override +// public BaseResponse saveCoursesRecords(ResourceLearningRecord resourceLearningRecord) { +// //课程id +// String courseId = resourceLearningRecord.getCoursesId(); +// String knowledgeId = resourceLearningRecord.getKnowledgeId(); +// String resourceId = resourceLearningRecord.getResourceId(); +// String userId = resourceLearningRecord.getUserId(); +// //1.生成学习时间 +// resourceLearningRecord.setTimes(LocalDateTime.now()); +// //2.设置人数 +// //2.1查人数 +// Long count = resourceLearningNumberService.query() +// .eq("course_id", courseId) +// .eq("knowledge_id",knowledgeId) +// .eq("resource_id",resourceId).count(); +// //2.2判断自己是否学习过 +// Long count1 = query().eq("user_id", userId).count(); +// if (count > 0){ +// //自己没学过,人数加1 +// if (count1 == 0){ +// resourceLearningNumberService.update().setSql("number = number + 1") +// .eq("course_id",courseId) +// .eq("knowledge_id",knowledgeId) +// .eq("resource_id",resourceId).update(); +//// System.out.println("用户:"+userId+"第一次学这门课"); +// } +// }else { +// //该课程第一次被学,人数设置为1 +// ResourceLearningNumber resourceLearningNumber = new ResourceLearningNumber(); +// resourceLearningNumber.setNumber(1); +// resourceLearningNumber.setCourseId(courseId); +// resourceLearningNumber.setKnowledgeId(knowledgeId); +// resourceLearningNumber.setResourceId(resourceId); +// resourceLearningNumberService.save(resourceLearningNumber); +// } +// //设置人数 +// String numberId = resourceLearningNumberService.query() +// .eq("course_id", courseId) +// .eq("knowledge_id",knowledgeId) +// .eq("resource_id",resourceId).one().getId(); +// resourceLearningRecord.setNumber(numberId); +// //保存记录 +// save(resourceLearningRecord); +// return ResultUtils.success("添加成功"); +// } } diff --git a/src/main/java/com/teaching/backend/service/impl/resource/ResourceLearningNumberServiceImpl.java b/src/main/java/com/teaching/backend/service/impl/resource/ResourceLearningNumberServiceImpl.java deleted file mode 100644 index 72f2136..0000000 --- a/src/main/java/com/teaching/backend/service/impl/resource/ResourceLearningNumberServiceImpl.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.teaching.backend.service.impl.resource; - - - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.teaching.backend.mapper.resource.ResourceLearningNumberMapper; -import com.teaching.backend.model.entity.resource.ResourceLearningNumber; -import com.teaching.backend.service.resource.IResourceLearningNumberService; -import org.springframework.stereotype.Service; - -/** - *

- * 服务实现类 - *

- * - * @author author - * @since 2024-07-29 - */ -@Service -public class ResourceLearningNumberServiceImpl extends ServiceImpl implements IResourceLearningNumberService { - -} diff --git a/src/main/java/com/teaching/backend/service/impl/resource/ResourceServiceImpl.java b/src/main/java/com/teaching/backend/service/impl/resource/ResourceServiceImpl.java index f97adf8..b8ba096 100644 --- a/src/main/java/com/teaching/backend/service/impl/resource/ResourceServiceImpl.java +++ b/src/main/java/com/teaching/backend/service/impl/resource/ResourceServiceImpl.java @@ -1,45 +1,168 @@ package com.teaching.backend.service.impl.resource; -import cn.hutool.core.io.FileUtil; -import com.teaching.backend.mapper.KnowGraph.ResourcesRepository; -import com.teaching.backend.mapper.resource.ResourcesMapper; -import com.teaching.backend.model.entity.KnowGraph.Resources; -import com.teaching.backend.model.entity.resource.Resource; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.json.JSONUtil; +import com.teaching.backend.common.BaseResponse; +import com.teaching.backend.common.ErrorCode; +import com.teaching.backend.common.ResultUtils; +import com.teaching.backend.constant.ViewContentTypeEnum; + +import com.teaching.backend.mapper.resource.ResourcesRepository; +import com.teaching.backend.model.dto.resource.BucketPolicyConfigDto; +import com.teaching.backend.model.dto.resource.ResourceUploadDto; +import com.teaching.backend.model.entity.resource.Resources; import com.teaching.backend.service.resource.ResourceService; -import org.springframework.beans.BeanUtils; +import com.teaching.backend.utils.MinioUtils; +import io.minio.*; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.core.io.InputStreamResource; +import org.springframework.data.neo4j.core.Neo4jClient; +import org.springframework.http.HttpHeaders; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Service; +import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.multipart.MultipartFile; -import java.io.File; -import java.util.UUID; +import javax.annotation.Resource; +import java.io.InputStream; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + /** * @Author:youhang * @Date:2024-07-26-13:58 * @Description: */ +@Service public class ResourceServiceImpl implements ResourceService { - private static final String GLOBAL_CODE_DIR_NAME = "tempFile"; + @Autowired private ResourcesRepository resourcesRepository; - private ResourcesMapper resourcesMapper; + private static final Logger LOGGER = LoggerFactory.getLogger(ResourceService.class); + + @Autowired + private MinioUtils minioUtils; + + @Value("${minio.endpoint}") + private String ENDPOINT; + + @Value("${minio.bucketName}") + private String BUCKET_NAME; + @Value("${minio.accessKey}") + private String ACCESS_KEY; + @Value("${minio.secretKey}") + private String SECRET_KEY; + + + @Resource + private Neo4jClient neo4jClient; + + @Override + public BaseResponse upload(MultipartFile file) { + ResourceUploadDto resourceUploadDto = minioUtils.upload(file); + if (resourceUploadDto == null) { + return ResultUtils.error(ErrorCode.OPERATION_ERROR, "上传失败"); + } + String url = resourceUploadDto.getUrl(); + String name = resourceUploadDto.getName(); + String objectName = resourceUploadDto.getObjectName(); + + //添加到图数据库中 + Resources resource = new Resources(); + resource.setName(objectName); + resource.setStatus(0); + resource.setUrl(url); + resourcesRepository.save(resource); + + return ResultUtils.success(resourceUploadDto); + } + + @Override + public BaseResponse delete(String objectName) { + try { + minioUtils.delete(objectName); + }catch (Exception e){ + e.printStackTrace(); + LOGGER.info("删除失败,故障"); + } + //删除图数据库 + boolean f = resourcesRepository.deleteByobjectName(objectName); + if (f) { + return ResultUtils.success("删除成功"); + } else { + return ResultUtils.error(ErrorCode.OPERATION_ERROR, "图数据库删除失败"); + } + } + + public ResponseEntity readFile(String filename) { + return minioUtils.readFile(filename); + } @Override - public String upload(MultipartFile file) { - String userDir = System.getProperty("user.dir"); - String globalFilePathName = userDir + File.separator + GLOBAL_CODE_DIR_NAME; - if (!FileUtil.exist(globalFilePathName)) { - FileUtil.mkdir(globalFilePathName); + public BaseResponse addResourcesAndKnowByCourseId(String courseId, List resourcesIds){ + // todo 查询课程是否存在 ,资源是否存在 + int count = resourcesRepository.addResourcesAndKnowByCourseId(courseId,resourcesIds); + if(count == resourcesIds.size()){ + return ResultUtils.success("添加关系成功"); + }else{ + return ResultUtils.error(ErrorCode.OPERATION_ERROR,"添加失败"); } - // 把用户的代码隔离存放 - File userCodeFile = null; - try { - String userCodeParentPath = globalFilePathName + File.separator + UUID.randomUUID(); - String userCodePath = userCodeParentPath + File.separator + file.getOriginalFilename(); - userCodeFile = FileUtil.writeFromStream(file.getInputStream(), userCodePath); - } catch (Exception e) { - System.out.println("失败"); + } + @Override + public BaseResponse addResourcesAndKnowByChapterId(Long chapterId, List resourcesIds){ + // todo 查询章节是否存在 ,资源是否存在 + int count = resourcesRepository.addResourcesAndKnowByChapterId(chapterId,resourcesIds); + if(count == resourcesIds.size()){ + return ResultUtils.success("添加关系成功"); + }else{ + return ResultUtils.error(ErrorCode.OPERATION_ERROR,"添加失败"); } - return userCodeFile.getPath(); } + @Override + public BaseResponse addResourcesAndKnowById(Long id, List resourcesIds){ + // todo 查询知识点是否存在 ,资源是否存在 + int count = resourcesRepository.addResourcesAndKnowById(id,resourcesIds); + if(count == resourcesIds.size()){ + return ResultUtils.success("添加关系成功"); + }else{ + return ResultUtils.error(ErrorCode.OPERATION_ERROR,"添加失败"); + } + } + @Override + //查询课程下资源 + public Set queryResourcesByCourseId(String courseId){ + // todo 判空,查询 + SetresourcesSet; + resourcesSet = resourcesRepository.queryResourcesByCourseId(courseId); + return resourcesSet; + } + @Override + //查询章节下资源 + public Set queryResourcesByChapterId(Long chapterId){ + // todo 判空,查询 + SetresourcesSet ; + resourcesSet = resourcesRepository.queryResourcesByChapterId(chapterId); + return resourcesSet; + } + + @Override + //查询二级节点下资源 + public Set queryBesidesKnowToResources(Long KnowId){ + // todo 判空,查询 + SetresourcesSet ; + resourcesSet = resourcesRepository.queryBesidesKnowToResources(KnowId); + return resourcesSet; + } + + + } diff --git a/src/main/java/com/teaching/backend/service/knowtmp/KnowtmpService.java b/src/main/java/com/teaching/backend/service/knowtmp/KnowtmpService.java new file mode 100644 index 0000000..aad7b68 --- /dev/null +++ b/src/main/java/com/teaching/backend/service/knowtmp/KnowtmpService.java @@ -0,0 +1,28 @@ +package com.teaching.backend.service.knowtmp; + +import com.teaching.backend.common.BaseResponse; +import com.teaching.backend.model.dto.Knowtmp.KnowtempAdd; +import com.teaching.backend.model.dto.Knowtmp.KnowtempUpdate; +import com.teaching.backend.model.entity.knowtmp.Knowtmp; + +import java.util.List; + +/** + * @Author:youhang + * @Date:2024-08-07-15:09 + * @Description: + */ +public interface KnowtmpService { + // 添加知识点 + BaseResponse add(KnowtempAdd knowtempAdd); + + //修改知识点 + BaseResponse update(KnowtempUpdate knowtempUpdate); + + //删除知识点 + BaseResponse delete(Long id); + + //查询通过chapterId List + BaseResponse> queryByChapterId(Long chapterId); + +} diff --git a/src/main/java/com/teaching/backend/service/records/IResourceLearningRecordService.java b/src/main/java/com/teaching/backend/service/records/IResourceLearningRecordService.java index 2b53014..9ea73bc 100644 --- a/src/main/java/com/teaching/backend/service/records/IResourceLearningRecordService.java +++ b/src/main/java/com/teaching/backend/service/records/IResourceLearningRecordService.java @@ -15,5 +15,5 @@ import com.teaching.backend.model.entity.records.ResourceLearningRecord; */ public interface IResourceLearningRecordService extends IService { - BaseResponse saveCoursesRecords(ResourceLearningRecord resourceLearningRecord); +// BaseResponse saveCoursesRecords(ResourceLearningRecord resourceLearningRecord); } diff --git a/src/main/java/com/teaching/backend/service/resource/IResourceLearningNumberService.java b/src/main/java/com/teaching/backend/service/resource/IResourceLearningNumberService.java deleted file mode 100644 index f35e1f4..0000000 --- a/src/main/java/com/teaching/backend/service/resource/IResourceLearningNumberService.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.teaching.backend.service.resource; - - -import com.baomidou.mybatisplus.extension.service.IService; -import com.teaching.backend.model.entity.resource.ResourceLearningNumber; - -/** - *

- * 服务类 - *

- * - * @author author - * @since 2024-07-29 - */ -public interface IResourceLearningNumberService extends IService { - -} diff --git a/src/main/java/com/teaching/backend/service/resource/ResourceService.java b/src/main/java/com/teaching/backend/service/resource/ResourceService.java index 1a0036e..a916e24 100644 --- a/src/main/java/com/teaching/backend/service/resource/ResourceService.java +++ b/src/main/java/com/teaching/backend/service/resource/ResourceService.java @@ -1,17 +1,44 @@ package com.teaching.backend.service.resource; -import org.springframework.stereotype.Service; + +import com.teaching.backend.common.BaseResponse; +import com.teaching.backend.model.dto.resource.ResourceUploadDto; +import com.teaching.backend.model.entity.resource.Resources; +import org.springframework.core.io.InputStreamResource; +import org.springframework.data.neo4j.repository.query.Query; +import org.springframework.http.ResponseEntity; import org.springframework.web.multipart.MultipartFile; +import java.util.List; +import java.util.Set; + /** * @Author:youhang * @Date:2024-07-26-13:55 * @Description: */ -@Service + public interface ResourceService { - public String upload(MultipartFile file); + BaseResponse upload(MultipartFile file) ; + + BaseResponse delete(String filename) ; + + ResponseEntity readFile(String filename); + BaseResponse addResourcesAndKnowByCourseId(String courseId, List resourcesIds); + + BaseResponse addResourcesAndKnowByChapterId(Long chapterId, List resourcesIds); + + BaseResponse addResourcesAndKnowById(Long id, List resourcesIds); + + //查询课程下资源 + Set queryResourcesByCourseId(String courseId); + + //查询章节下资源 + Set queryResourcesByChapterId(Long chapterId); + + //查询二级节点下资源 + Set queryBesidesKnowToResources(Long KnowId); } diff --git a/src/main/java/com/teaching/backend/utils/MinioUtils.java b/src/main/java/com/teaching/backend/utils/MinioUtils.java new file mode 100644 index 0000000..e422d2a --- /dev/null +++ b/src/main/java/com/teaching/backend/utils/MinioUtils.java @@ -0,0 +1,154 @@ +package com.teaching.backend.utils; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.json.JSONUtil; +import com.teaching.backend.common.BaseResponse; +import com.teaching.backend.common.ErrorCode; +import com.teaching.backend.common.ResultUtils; +import com.teaching.backend.constant.ViewContentTypeEnum; +import com.teaching.backend.model.dto.resource.BucketPolicyConfigDto; +import com.teaching.backend.model.dto.resource.ResourceUploadDto; +import com.teaching.backend.model.entity.resource.Resources; +import com.teaching.backend.service.resource.ResourceService; +import io.minio.*; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.core.io.InputStreamResource; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Component; +import org.springframework.web.multipart.MultipartFile; + +import java.io.File; +import java.io.InputStream; +import java.text.SimpleDateFormat; +import java.util.Date; + +/** + * @Author:youhang + * @Date:2024-08-07-11:38 + * @Description: + */ +@Component +public class MinioUtils { + + private static final Logger LOGGER = LoggerFactory.getLogger(MinioUtils.class); + + @Value("${filename.maxlength}") + private int MAX_FILENAMELENGTH; + + @Value("${minio.endpoint}") + private String ENDPOINT; + + @Value("${minio.bucketName}") + private String BUCKET_NAME; + @Value("${minio.accessKey}") + private String ACCESS_KEY; + @Value("${minio.secretKey}") + private String SECRET_KEY; + + public ResourceUploadDto upload(MultipartFile file) { + ResourceUploadDto minioUploadDto = new ResourceUploadDto(); + try { + //创建一个MinIO的Java客户端 + MinioClient minioClient =MinioClient.builder() + .endpoint(ENDPOINT) + .credentials(ACCESS_KEY,SECRET_KEY) + .build(); + boolean isExist = minioClient.bucketExists(BucketExistsArgs.builder().bucket(BUCKET_NAME).build()); + if (isExist) { + LOGGER.info("存储桶已经存在!"); + } else { + //创建存储桶并设置只读权限 + minioClient.makeBucket(MakeBucketArgs.builder().bucket(BUCKET_NAME).build()); + BucketPolicyConfigDto bucketPolicyConfigDto = createBucketPolicyConfigDto(BUCKET_NAME); + SetBucketPolicyArgs setBucketPolicyArgs = SetBucketPolicyArgs.builder() + .bucket(BUCKET_NAME) + .config(JSONUtil.toJsonStr(bucketPolicyConfigDto)) + .build(); + minioClient.setBucketPolicy(setBucketPolicyArgs); + } + String filename = file.getOriginalFilename(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyymmddhhmmss"); + // todo 字符串截取 + int dotIndex = filename.lastIndexOf('.'); + String prefix = filename.substring(0,dotIndex); + String suffix = filename.substring(dotIndex+1,filename.length()); + if(prefix.length() > MAX_FILENAMELENGTH){ + prefix = prefix.substring(0,MAX_FILENAMELENGTH); + } + filename = prefix+"-"+sdf.format(new Date())+"."+suffix; + sdf = new SimpleDateFormat("yyyyMMdd"); + // 设置存储对象名称 + String objectName = sdf.format(new Date()) + "/" + suffix + "/" + filename; + // 使用putObject上传一个文件到存储桶中 + PutObjectArgs putObjectArgs = PutObjectArgs.builder() + .bucket(BUCKET_NAME) + .object(objectName) + .contentType(ViewContentTypeEnum.getContentType(objectName)) + .stream(file.getInputStream(), file.getSize(), ObjectWriteArgs.MIN_MULTIPART_SIZE).build(); + minioClient.putObject(putObjectArgs); + LOGGER.info("文件上传成功!"); + minioUploadDto.setName(filename); + minioUploadDto.setUrl(ENDPOINT + "/" + BUCKET_NAME + "/" + objectName); + minioUploadDto.setObjectName(objectName); + } catch (Exception e) { + e.printStackTrace(); + LOGGER.info("上传发生错误: {}!", e.getMessage()); + } + return minioUploadDto; + } + + /** + * 创建存储桶的访问策略,设置为只读权限 + */ + private BucketPolicyConfigDto createBucketPolicyConfigDto(String bucketName) { + BucketPolicyConfigDto.Statement statement = BucketPolicyConfigDto.Statement.builder() + .Effect("Allow") + .Principal("*") + .Action("s3:GetObject") + .Resource("arn:aws:s3:::"+bucketName+"/*.**").build(); + return BucketPolicyConfigDto.builder() + .Version("2012-10-17") + .Statement(CollUtil.toList(statement)) + .build(); + } + + + public void delete(String objectName) throws Exception { + MinioClient minioClient = MinioClient.builder() + .endpoint(ENDPOINT) + .credentials(ACCESS_KEY,SECRET_KEY) + .build(); + minioClient.removeObject(RemoveObjectArgs.builder().bucket(BUCKET_NAME).object(objectName).build()); + } + + + + + public ResponseEntity readFile(String filename) { + try { + // 创建MinIO客户端 + MinioClient minioClient = MinioClient.builder() + .endpoint(ENDPOINT) + .credentials(ACCESS_KEY, SECRET_KEY) + .build(); + + // 获取文件流 + GetObjectResponse objectResponse = minioClient.getObject(GetObjectArgs.builder() + .bucket(BUCKET_NAME) // 替换为你实际的存储桶名称 + .object(filename) + .build()); + + InputStream inputStream = objectResponse; + return ResponseEntity.ok() + .body(new InputStreamResource(inputStream)); + } catch (Exception e) { + e.printStackTrace(); + return ResponseEntity.notFound().build(); + } + } + + + +} diff --git a/src/main/java/com/teaching/backend/utils/knowGraph/AddNeoKnowByCourse.java b/src/main/java/com/teaching/backend/utils/knowGraph/AddNeoKnowByCourse.java deleted file mode 100644 index 89a779c..0000000 --- a/src/main/java/com/teaching/backend/utils/knowGraph/AddNeoKnowByCourse.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.teaching.backend.utils.knowGraph; - -import com.teaching.backend.common.BaseResponse; -import com.teaching.backend.model.dto.chapter.ChapterDTO; -import com.teaching.backend.model.dto.courses.CoursesDTO; -import com.teaching.backend.model.entity.KnowGraph.KnowChapter; -import com.teaching.backend.model.entity.KnowGraph.KnowCourse; -import com.teaching.backend.model.entity.chapter.Chapter; -import com.teaching.backend.model.entity.courses.Courses; -import com.teaching.backend.service.KnowGraph.KnowService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestParam; - -/** - * @Author:youhang - * @Date:2024-07-26-17:57 - * @Description: - */ -@Component -public class AddNeoKnowByCourse { - - @Autowired - private KnowService knowService; - -// public BaseResponse addCourse(String courseId , String name, String description){ -// return knowService.createCourseKnow( courseId , name, description); -// } - -// public BaseResponse addChapter(Chapter chapter){ -// return knowService.createKnowChapter(chapter); -// } - -} diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 2419d7c..d0c7383 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -80,3 +80,12 @@ aliyun: accessKeyId: LTAI5tFkdu3y5WddxbjgaG2F accessKeySecret: 1xUchxUTlmUBoTV5JQIrKsVjSkmsLF bucketName: ceshi132132 + +minio: + endpoint: http://39.106.16.162:9090 #MinIO服务所在地址 + bucketName: teaching # 存储桶名称 + accessKey: minioadmin # 访问的key + secretKey: minioadmin # 访问的秘钥 + +filename: + maxlength: 10 From 0592c2ed53ed1ce976136194d8f162147b112561 Mon Sep 17 00:00:00 2001 From: youahng <2998465706@qq.com> Date: Wed, 7 Aug 2024 20:27:38 +0800 Subject: [PATCH 13/13] =?UTF-8?q?=E6=96=87=E5=AE=87=E7=9A=84=E5=AD=A6?= =?UTF-8?q?=E4=B9=A0=E8=AE=B0=E5=BD=95controller=E6=B3=A8=E9=87=8A?= =?UTF-8?q?=E4=BA=86-=E7=88=86=E7=BA=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/Knowtmp/KnowtmpController.java | 5 + .../ResourceLearningRecordController.java | 204 +++++++------- .../impl/knowtmp/KnowtmpServiceImpl.java | 6 + .../KnowledgeLearningRecordServiceImpl.java | 15 +- .../ResourceLearningRecordServiceImpl.java | 254 +++++++++--------- .../service/knowtmp/KnowtmpService.java | 3 + 6 files changed, 252 insertions(+), 235 deletions(-) diff --git a/src/main/java/com/teaching/backend/controller/Knowtmp/KnowtmpController.java b/src/main/java/com/teaching/backend/controller/Knowtmp/KnowtmpController.java index 8b28b1b..dbb122a 100644 --- a/src/main/java/com/teaching/backend/controller/Knowtmp/KnowtmpController.java +++ b/src/main/java/com/teaching/backend/controller/Knowtmp/KnowtmpController.java @@ -43,6 +43,11 @@ public class KnowtmpController { return knowtmpService.delete(id); } + //查询通过chapterId List + @GetMapping("/query") + BaseResponse query(Long id){ + return knowtmpService.query(id); + } //查询通过chapterId List @GetMapping("/queryKnow") BaseResponse> queryByChapterId(Long chapterId){ diff --git a/src/main/java/com/teaching/backend/controller/records/ResourceLearningRecordController.java b/src/main/java/com/teaching/backend/controller/records/ResourceLearningRecordController.java index e025d4d..29a3aca 100644 --- a/src/main/java/com/teaching/backend/controller/records/ResourceLearningRecordController.java +++ b/src/main/java/com/teaching/backend/controller/records/ResourceLearningRecordController.java @@ -1,102 +1,102 @@ -package com.teaching.backend.controller.records; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.teaching.backend.common.BaseResponse; -import com.teaching.backend.common.ResultUtils; -import com.teaching.backend.filter.ValidateParams; -import com.teaching.backend.mapper.records.ResourceLearningRecordMapper; -import com.teaching.backend.model.entity.records.KnowledgeLearningRecord; -import com.teaching.backend.model.entity.records.ResourceLearningRecord; -import com.teaching.backend.service.impl.records.KnowledgeLearningRecordServiceImpl; -import com.teaching.backend.service.impl.records.ResourceLearningRecordServiceImpl; -import com.teaching.backend.utils.UploadUtils; -import io.swagger.annotations.ApiOperation; -import org.springframework.http.MediaType; -import org.springframework.web.bind.annotation.*; -import org.springframework.web.multipart.MultipartFile; - -import javax.annotation.Resource; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.IOException; -import java.util.List; - -@RestController -@RequestMapping("/api/resourcelearningrecords") -public class ResourceLearningRecordController { - @Resource - private ResourceLearningRecordServiceImpl resourceLearningRecordService; - @Resource - private ResourceLearningRecordMapper resourceLearningRecordMapper; - - - - @ApiOperation("添加资源学习记录") -// @ValidateParams({"userId","type","coursesId"}) - @PostMapping("/saverecords") - public BaseResponse saveResourceRecords(@RequestBody ResourceLearningRecord resourceLearningRecord) { - return resourceLearningRecordService.saveCoursesRecords(resourceLearningRecord); - } - - /** - * 获取当前登录用户的学习资源记录 - * @param pagenum - * @param pagesize - * @return - */ - @ApiOperation("根据用户id查询学习记录") - @ValidateParams({"userId"}) - @GetMapping("/page") - public BaseResponse getAll(@RequestParam(value = "pagenum", defaultValue = "1") int pagenum, - @RequestParam(value = "pagesize", defaultValue = "10") int pagesize, - @RequestParam String userId, - @RequestParam String courseId, - @RequestParam String knowledgeId){ - return resourceLearningRecordService.getPage(pagenum, pagesize, userId, knowledgeId,courseId); - - } - /** - * 根据ids删除 - * @param ids - * @return - */ - @ApiOperation("学习记录删除") - @DeleteMapping("/delete") - public BaseResponse deleteRecords(@RequestParam List ids){ - return resourceLearningRecordService.removeResourceRecord(ids); - } - - /** - * 统计单个学生学习资源数量 - * @param userId - * @return - */ - @ApiOperation("统计单个学生学习资源数量") - @GetMapping("/countresourcenumber") - public BaseResponse countResourceNumber(@RequestParam String userId) { - return ResultUtils.success(resourceLearningRecordMapper.selectDistinctResourceIdsByUser(userId).size()); - } - - - @ApiOperation("上传图片") - @PostMapping(value = "/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) - public BaseResponse upload(@RequestPart("filedata") MultipartFile filedata) throws IOException { - //调用ser - System.out.println(filedata.getResource()); - System.out.println(UploadUtils.saveFileByDirectory(filedata)); -// File file = filedata.getResource().getFile(); -// UploadUtils.Chunk(file); -// UploadUtils.Merge(file); - //源文件 -// File sourseFile = (File) file; - return ResultUtils.success("hello"); - }; - - @GetMapping("/bf") - public BaseResponse bf(@RequestParam String path, File file,HttpServletRequest request, HttpServletResponse response){ - File sourseFile = new File(path); - return ResultUtils.success(path); - }; - -} +//package com.teaching.backend.controller.records; +// +//import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +//import com.teaching.backend.common.BaseResponse; +//import com.teaching.backend.common.ResultUtils; +//import com.teaching.backend.filter.ValidateParams; +//import com.teaching.backend.mapper.records.ResourceLearningRecordMapper; +//import com.teaching.backend.model.entity.records.KnowledgeLearningRecord; +//import com.teaching.backend.model.entity.records.ResourceLearningRecord; +//import com.teaching.backend.service.impl.records.KnowledgeLearningRecordServiceImpl; +//import com.teaching.backend.service.impl.records.ResourceLearningRecordServiceImpl; +//import com.teaching.backend.utils.UploadUtils; +//import io.swagger.annotations.ApiOperation; +//import org.springframework.http.MediaType; +//import org.springframework.web.bind.annotation.*; +//import org.springframework.web.multipart.MultipartFile; +// +//import javax.annotation.Resource; +//import javax.servlet.http.HttpServletRequest; +//import javax.servlet.http.HttpServletResponse; +//import java.io.File; +//import java.io.IOException; +//import java.util.List; +// +//@RestController +//@RequestMapping("/api/resourcelearningrecords") +//public class ResourceLearningRecordController { +// @Resource +// private ResourceLearningRecordServiceImpl resourceLearningRecordService; +// @Resource +// private ResourceLearningRecordMapper resourceLearningRecordMapper; +// +// +// +// @ApiOperation("添加资源学习记录") +//// @ValidateParams({"userId","type","coursesId"}) +// @PostMapping("/saverecords") +// public BaseResponse saveResourceRecords(@RequestBody ResourceLearningRecord resourceLearningRecord) { +// return resourceLearningRecordService.saveCoursesRecords(resourceLearningRecord); +// } +// +// /** +// * 获取当前登录用户的学习资源记录 +// * @param pagenum +// * @param pagesize +// * @return +// */ +// @ApiOperation("根据用户id查询学习记录") +// @ValidateParams({"userId"}) +// @GetMapping("/page") +// public BaseResponse getAll(@RequestParam(value = "pagenum", defaultValue = "1") int pagenum, +// @RequestParam(value = "pagesize", defaultValue = "10") int pagesize, +// @RequestParam String userId, +// @RequestParam String courseId, +// @RequestParam String knowledgeId){ +// return resourceLearningRecordService.getPage(pagenum, pagesize, userId, knowledgeId,courseId); +// +// } +// /** +// * 根据ids删除 +// * @param ids +// * @return +// */ +// @ApiOperation("学习记录删除") +// @DeleteMapping("/delete") +// public BaseResponse deleteRecords(@RequestParam List ids){ +// return resourceLearningRecordService.removeResourceRecord(ids); +// } +// +// /** +// * 统计单个学生学习资源数量 +// * @param userId +// * @return +// */ +// @ApiOperation("统计单个学生学习资源数量") +// @GetMapping("/countresourcenumber") +// public BaseResponse countResourceNumber(@RequestParam String userId) { +// return ResultUtils.success(resourceLearningRecordMapper.selectDistinctResourceIdsByUser(userId).size()); +// } +// +// +// @ApiOperation("上传图片") +// @PostMapping(value = "/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) +// public BaseResponse upload(@RequestPart("filedata") MultipartFile filedata) throws IOException { +// //调用ser +// System.out.println(filedata.getResource()); +// System.out.println(UploadUtils.saveFileByDirectory(filedata)); +//// File file = filedata.getResource().getFile(); +//// UploadUtils.Chunk(file); +//// UploadUtils.Merge(file); +// //源文件 +//// File sourseFile = (File) file; +// return ResultUtils.success("hello"); +// }; +// +// @GetMapping("/bf") +// public BaseResponse bf(@RequestParam String path, File file,HttpServletRequest request, HttpServletResponse response){ +// File sourseFile = new File(path); +// return ResultUtils.success(path); +// }; +// +//} diff --git a/src/main/java/com/teaching/backend/service/impl/knowtmp/KnowtmpServiceImpl.java b/src/main/java/com/teaching/backend/service/impl/knowtmp/KnowtmpServiceImpl.java index a1b9ddd..8165dae 100644 --- a/src/main/java/com/teaching/backend/service/impl/knowtmp/KnowtmpServiceImpl.java +++ b/src/main/java/com/teaching/backend/service/impl/knowtmp/KnowtmpServiceImpl.java @@ -62,6 +62,12 @@ public class KnowtmpServiceImpl implements KnowtmpService { } } + @Override + public BaseResponse query(Long id) { + Knowtmp knowtmp = knowtmpMapper.selectById(id); + return ResultUtils.success(knowtmp); + } + @Override public BaseResponse> queryByChapterId(Long chapterId) { Knowtmp knowtmp = new Knowtmp(); diff --git a/src/main/java/com/teaching/backend/service/impl/records/KnowledgeLearningRecordServiceImpl.java b/src/main/java/com/teaching/backend/service/impl/records/KnowledgeLearningRecordServiceImpl.java index 0c10b1f..cfe8d3e 100644 --- a/src/main/java/com/teaching/backend/service/impl/records/KnowledgeLearningRecordServiceImpl.java +++ b/src/main/java/com/teaching/backend/service/impl/records/KnowledgeLearningRecordServiceImpl.java @@ -9,20 +9,23 @@ import com.teaching.backend.common.BaseResponse; import com.teaching.backend.common.ResultUtils; import com.teaching.backend.mapper.records.KnowledgeLearningRecordMapper; import com.teaching.backend.mapper.umsAdmin.UmsUserMapper; -import com.teaching.backend.model.entity.KnowGraph.Know; + import com.teaching.backend.model.entity.KnowGraph.KnowledgeLearningNumber; -import com.teaching.backend.model.entity.Knowtemp.Knowtemp; + import com.teaching.backend.model.entity.courses.CourseLearningNumber; import com.teaching.backend.model.entity.courses.Courses; +import com.teaching.backend.model.entity.knowtmp.Knowtmp; import com.teaching.backend.model.entity.records.KnowledgeLearningRecord; import com.teaching.backend.model.vo.courses.CoursesVO; import com.teaching.backend.model.vo.knowGraph.KnowVO; import com.teaching.backend.model.vo.records.KnowledgeLearningRecordVo; -import com.teaching.backend.service.KnowGraph.KnowService; + +import com.teaching.backend.service.Know.KnowService; import com.teaching.backend.service.impl.courses.CourseLearningNumberServiceImpl; import com.teaching.backend.service.impl.knowledge.KnowledgeLearningNumberServiceImpl; +import com.teaching.backend.service.knowtmp.KnowtmpService; import com.teaching.backend.service.records.IKnowledgeLearningRecordService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -52,7 +55,7 @@ public class KnowledgeLearningRecordServiceImpl extends ServiceImpl saveCoursesRecords(KnowledgeLearningRecord knowledgeLearningRecord) { @@ -145,7 +148,7 @@ public class KnowledgeLearningRecordServiceImpl extends ServiceImpl knowledgeIdList = knowledgeLearningRecordMapper.queryStudyKnowledgeMaxNumber(); for (String knowledgeId : knowledgeIdList) { - BaseResponse knowledge = knowService.query(Long.valueOf(knowledgeId)); + BaseResponse knowledge = knowtmpService.query(Long.valueOf(knowledgeId)); if (knowledge.getData() != null){ knowVO = new KnowVO(); knowVO.setId(knowledge.getData().getId()); @@ -159,7 +162,7 @@ public class KnowledgeLearningRecordServiceImpl extends ServiceImpl knowledgeIdList = knowledgeLearningRecordMapper.queryStudyMaxKnowledgeId(userId); for (String knowledgeId : knowledgeIdList) { - BaseResponse knowledge = knowService.query(Long.valueOf(knowledgeId)); + BaseResponse knowledge = knowtmpService.query(Long.valueOf(knowledgeId)); if (knowledge.getData() != null) { knowVO = new KnowVO(); knowVO.setId(knowledge.getData().getId()); diff --git a/src/main/java/com/teaching/backend/service/impl/records/ResourceLearningRecordServiceImpl.java b/src/main/java/com/teaching/backend/service/impl/records/ResourceLearningRecordServiceImpl.java index 14270e6..be8672c 100644 --- a/src/main/java/com/teaching/backend/service/impl/records/ResourceLearningRecordServiceImpl.java +++ b/src/main/java/com/teaching/backend/service/impl/records/ResourceLearningRecordServiceImpl.java @@ -1,127 +1,127 @@ -package com.teaching.backend.service.impl.records; - - -import cn.hutool.core.bean.BeanUtil; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.teaching.backend.common.BaseResponse; -import com.teaching.backend.common.ResultUtils; -import com.teaching.backend.mapper.records.ResourceLearningRecordMapper; -import com.teaching.backend.model.entity.records.KnowledgeLearningRecord; -import com.teaching.backend.model.entity.records.ResourceLearningRecord; -import com.teaching.backend.model.entity.resource.ResourceLearningNumber; -import com.teaching.backend.model.vo.records.KnowledgeLearningRecordVo; -import com.teaching.backend.model.vo.records.ResourceLearingRecordVo; -import com.teaching.backend.service.impl.resource.ResourceLearningNumberServiceImpl; -import com.teaching.backend.service.records.IResourceLearningRecordService; -import org.springframework.stereotype.Service; - -import javax.annotation.Resource; -import java.text.SimpleDateFormat; -import java.time.LocalDateTime; -import java.time.ZoneId; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; - -/** - *

- * 服务实现类 - *

- * - * @author author - * @since 2024-07-24 - */ -@Service -public class ResourceLearningRecordServiceImpl extends ServiceImpl implements IResourceLearningRecordService { - - @Resource - private ResourceLearningNumberServiceImpl resourceLearningNumberService; - - @Override - public BaseResponse saveCoursesRecords(ResourceLearningRecord resourceLearningRecord) { - //课程id - String courseId = resourceLearningRecord.getCoursesId(); - String knowledgeId = resourceLearningRecord.getKnowledgeId(); - String resourceId = resourceLearningRecord.getResourceId(); - String userId = resourceLearningRecord.getUserId(); - //1.生成学习时间 - resourceLearningRecord.setTimes(LocalDateTime.now()); - //2.设置人数 - //2.1查人数 - Long count = resourceLearningNumberService.query() - .eq("course_id", courseId) - .eq("knowledge_id",knowledgeId) - .eq("resource_id",resourceId).count(); - //2.2判断自己是否学习过 - Long count1 = query() - .eq("user_id", userId) - .eq("courses_id", courseId) - .eq("knowledge_id",knowledgeId) - .eq("resource_id",resourceId).count(); - if (count > 0){ - //自己没学过,人数加1 - if (count1 == 0){ - resourceLearningNumberService.update().setSql("number = number + 1") - .eq("course_id",courseId) - .eq("knowledge_id",knowledgeId) - .eq("resource_id",resourceId).update(); -// System.out.println("用户:"+userId+"第一次学这门课"); - } - }else { - //该课程第一次被学,人数设置为1 - ResourceLearningNumber resourceLearningNumber = new ResourceLearningNumber(); - resourceLearningNumber.setNumber(1); - resourceLearningNumber.setCourseId(courseId); - resourceLearningNumber.setKnowledgeId(knowledgeId); - resourceLearningNumber.setResourceId(resourceId); - resourceLearningNumberService.save(resourceLearningNumber); - } - //设置人数 - String numberId = resourceLearningNumberService.query() - .eq("course_id", courseId) - .eq("knowledge_id",knowledgeId) - .eq("resource_id",resourceId).one().getId(); - resourceLearningRecord.setNumber(numberId); - //保存记录 - save(resourceLearningRecord); - return ResultUtils.success("添加成功"); - } - - @Override - public BaseResponse getPage(int pagenum, int pagesize, String userId, String knowledgeId, String courseId) { -//格式化时间 - String strDateFormat = "yyyy-MM-dd HH:mm:ss"; - SimpleDateFormat sdf = new SimpleDateFormat(strDateFormat); - //分页查询 - Page page = query() - .orderByDesc("times") - .eq("user_id", userId) - .eq("knowledge_id",knowledgeId) - .eq("courses_id",courseId).page(new Page<>(pagenum, pagesize)); - Page page1 = new Page<>(); - List records = page.getRecords(); - BeanUtil.copyProperties(page, page1); - List recordsVos = new ArrayList<>(); - //copy集合 - records.forEach(resourceLearningRecord -> { - ResourceLearingRecordVo resourceLearingRecordVo = new ResourceLearingRecordVo(); - BeanUtil.copyProperties(resourceLearningRecord,resourceLearingRecordVo); - Date date = Date.from(resourceLearningRecord.getTimes().atZone(ZoneId.systemDefault()).toInstant()); - resourceLearingRecordVo.setTime(sdf.format(date)); -// //填充学习人数 - resourceLearingRecordVo.setNumber(resourceLearningNumberService.getById(resourceLearningRecord.getNumber()).getNumber()); - recordsVos.add(resourceLearingRecordVo); - }); - page1.setRecords(recordsVos); - return ResultUtils.success(page1); - } - - @Override - public BaseResponse removeResourceRecord(List ids) { - removeByIds(ids); - return ResultUtils.success("删除成功!"); - } - - -} +//package com.teaching.backend.service.impl.records; +// +// +//import cn.hutool.core.bean.BeanUtil; +//import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +//import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +//import com.teaching.backend.common.BaseResponse; +//import com.teaching.backend.common.ResultUtils; +//import com.teaching.backend.mapper.records.ResourceLearningRecordMapper; +//import com.teaching.backend.model.entity.records.KnowledgeLearningRecord; +//import com.teaching.backend.model.entity.records.ResourceLearningRecord; +//import com.teaching.backend.model.entity.resource.ResourceLearningNumber; +//import com.teaching.backend.model.vo.records.KnowledgeLearningRecordVo; +//import com.teaching.backend.model.vo.records.ResourceLearingRecordVo; +//import com.teaching.backend.service.impl.resource.ResourceLearningNumberServiceImpl; +//import com.teaching.backend.service.records.IResourceLearningRecordService; +//import org.springframework.stereotype.Service; +// +//import javax.annotation.Resource; +//import java.text.SimpleDateFormat; +//import java.time.LocalDateTime; +//import java.time.ZoneId; +//import java.util.ArrayList; +//import java.util.Date; +//import java.util.List; +// +///** +// *

+// * 服务实现类 +// *

+// * +// * @author author +// * @since 2024-07-24 +// */ +//@Service +//public class ResourceLearningRecordServiceImpl extends ServiceImpl implements IResourceLearningRecordService { +// +// @Resource +// private ResourceLearningNumberServiceImpl resourceLearningNumberService; +// +// @Override +// public BaseResponse saveCoursesRecords(ResourceLearningRecord resourceLearningRecord) { +// //课程id +// String courseId = resourceLearningRecord.getCoursesId(); +// String knowledgeId = resourceLearningRecord.getKnowledgeId(); +// String resourceId = resourceLearningRecord.getResourceId(); +// String userId = resourceLearningRecord.getUserId(); +// //1.生成学习时间 +// resourceLearningRecord.setTimes(LocalDateTime.now()); +// //2.设置人数 +// //2.1查人数 +// Long count = resourceLearningNumberService.query() +// .eq("course_id", courseId) +// .eq("knowledge_id",knowledgeId) +// .eq("resource_id",resourceId).count(); +// //2.2判断自己是否学习过 +// Long count1 = query() +// .eq("user_id", userId) +// .eq("courses_id", courseId) +// .eq("knowledge_id",knowledgeId) +// .eq("resource_id",resourceId).count(); +// if (count > 0){ +// //自己没学过,人数加1 +// if (count1 == 0){ +// resourceLearningNumberService.update().setSql("number = number + 1") +// .eq("course_id",courseId) +// .eq("knowledge_id",knowledgeId) +// .eq("resource_id",resourceId).update(); +//// System.out.println("用户:"+userId+"第一次学这门课"); +// } +// }else { +// //该课程第一次被学,人数设置为1 +// ResourceLearningNumber resourceLearningNumber = new ResourceLearningNumber(); +// resourceLearningNumber.setNumber(1); +// resourceLearningNumber.setCourseId(courseId); +// resourceLearningNumber.setKnowledgeId(knowledgeId); +// resourceLearningNumber.setResourceId(resourceId); +// resourceLearningNumberService.save(resourceLearningNumber); +// } +// //设置人数 +// String numberId = resourceLearningNumberService.query() +// .eq("course_id", courseId) +// .eq("knowledge_id",knowledgeId) +// .eq("resource_id",resourceId).one().getId(); +// resourceLearningRecord.setNumber(numberId); +// //保存记录 +// save(resourceLearningRecord); +// return ResultUtils.success("添加成功"); +// } +// +// @Override +// public BaseResponse getPage(int pagenum, int pagesize, String userId, String knowledgeId, String courseId) { +////格式化时间 +// String strDateFormat = "yyyy-MM-dd HH:mm:ss"; +// SimpleDateFormat sdf = new SimpleDateFormat(strDateFormat); +// //分页查询 +// Page page = query() +// .orderByDesc("times") +// .eq("user_id", userId) +// .eq("knowledge_id",knowledgeId) +// .eq("courses_id",courseId).page(new Page<>(pagenum, pagesize)); +// Page page1 = new Page<>(); +// List records = page.getRecords(); +// BeanUtil.copyProperties(page, page1); +// List recordsVos = new ArrayList<>(); +// //copy集合 +// records.forEach(resourceLearningRecord -> { +// ResourceLearingRecordVo resourceLearingRecordVo = new ResourceLearingRecordVo(); +// BeanUtil.copyProperties(resourceLearningRecord,resourceLearingRecordVo); +// Date date = Date.from(resourceLearningRecord.getTimes().atZone(ZoneId.systemDefault()).toInstant()); +// resourceLearingRecordVo.setTime(sdf.format(date)); +//// //填充学习人数 +// resourceLearingRecordVo.setNumber(resourceLearningNumberService.getById(resourceLearningRecord.getNumber()).getNumber()); +// recordsVos.add(resourceLearingRecordVo); +// }); +// page1.setRecords(recordsVos); +// return ResultUtils.success(page1); +// } +// +// @Override +// public BaseResponse removeResourceRecord(List ids) { +// removeByIds(ids); +// return ResultUtils.success("删除成功!"); +// } +// +// +//} diff --git a/src/main/java/com/teaching/backend/service/knowtmp/KnowtmpService.java b/src/main/java/com/teaching/backend/service/knowtmp/KnowtmpService.java index aad7b68..193fe44 100644 --- a/src/main/java/com/teaching/backend/service/knowtmp/KnowtmpService.java +++ b/src/main/java/com/teaching/backend/service/knowtmp/KnowtmpService.java @@ -22,6 +22,9 @@ public interface KnowtmpService { //删除知识点 BaseResponse delete(Long id); + //查询 + BaseResponse query(Long id); + //查询通过chapterId List BaseResponse> queryByChapterId(Long chapterId);