diff --git a/pom.xml b/pom.xml index bfd5080..4e9e452 100644 --- a/pom.xml +++ b/pom.xml @@ -45,6 +45,12 @@ poi-ooxml + + + io.minio + minio + 8.2.1 + commons-fileupload @@ -221,6 +227,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/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/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/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/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..dbb122a --- /dev/null +++ b/src/main/java/com/teaching/backend/controller/Knowtmp/KnowtmpController.java @@ -0,0 +1,56 @@ +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("/query") + BaseResponse query(Long id){ + return knowtmpService.query(id); + } + //查询通过chapterId List + @GetMapping("/queryKnow") + BaseResponse> queryByChapterId(Long chapterId){ + return knowtmpService.queryByChapterId(chapterId); + } +} 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..7e14395 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,15 @@ 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.model.vo.courses.PersonalCenterStudentListVO; import com.teaching.backend.service.courses.ICoursesService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -24,7 +20,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 +85,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 +94,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 +108,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("删除成功"); } @@ -142,8 +132,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/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/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/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/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/controller/records/KnowledgeLearningRecordController.java b/src/main/java/com/teaching/backend/controller/records/KnowledgeLearningRecordController.java index da94b8d..f723a2d 100644 --- a/src/main/java/com/teaching/backend/controller/records/KnowledgeLearningRecordController.java +++ b/src/main/java/com/teaching/backend/controller/records/KnowledgeLearningRecordController.java @@ -1,24 +1,28 @@ 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.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.knowGraph.KnowVO; 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") public class KnowledgeLearningRecordController { @Resource private KnowledgeLearningRecordServiceImpl knowledgeLearningRecordService; + @Resource + private KnowledgeLearningRecordMapper knowledgeLearningRecordMapper; @ApiOperation("添加知识点学习记录") // @ValidateParams({"userId","type","coursesId"}) @@ -27,4 +31,58 @@ 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); + } + + /** + * 统计单个学生学习知识点数量 + * @param userId + * @return + */ + @ApiOperation("统计单个学生学习知识点数量") + @GetMapping("/countknowledgenumber") + public BaseResponse countKnowledgeNumber(@RequestParam String userId) { + return ResultUtils.success(knowledgeLearningRecordMapper.selectDistinctKnowledgeIdsByUser(userId).size()); + } + + /** + * 获取学习最多的知识点 + * + * @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/controller/records/ResourceLearningRecordController.java b/src/main/java/com/teaching/backend/controller/records/ResourceLearningRecordController.java index efbb8f2..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,29 +1,102 @@ -package com.teaching.backend.controller.records; - -import com.teaching.backend.common.BaseResponse; -import com.teaching.backend.common.ResultUtils; -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 javax.annotation.Resource; - -@RestController -@RequestMapping("/api/resourcelearningrecords") -public class ResourceLearningRecordController { - @Resource - private ResourceLearningRecordServiceImpl resourceLearningRecordService; - - @ApiOperation("添加资源学习记录") -// @ValidateParams({"userId","type","coursesId"}) - @PostMapping("/saverecords") - public BaseResponse saveResourceRecords(@RequestBody ResourceLearningRecord resourceLearningRecord) { - return resourceLearningRecordService.saveCoursesRecords(resourceLearningRecord); - } -} +//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/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/controller/umsAdmin/ReportController.java b/src/main/java/com/teaching/backend/controller/umsAdmin/ReportController.java index 15b86c9..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,11 +33,11 @@ public class ReportController { * 接收每日浏览量 * @return */ - @PostMapping("/receptionBrowse") + @GetMapping("/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/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/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/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/records/KnowledgeLearningRecordMapper.java b/src/main/java/com/teaching/backend/mapper/records/KnowledgeLearningRecordMapper.java index d9dbbe5..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,12 @@ 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; /** *

@@ -14,4 +20,9 @@ import com.teaching.backend.model.entity.records.KnowledgeLearningRecord; */ 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/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/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/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/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/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/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/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/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/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/courses/ICoursesService.java b/src/main/java/com/teaching/backend/service/courses/ICoursesService.java index 9a06641..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(CourseQuery courseQuery); + LinkedHashSet queryStudentList(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/chapter/ChapterServiceImpl.java b/src/main/java/com/teaching/backend/service/impl/chapter/ChapterServiceImpl.java index b82deab..56d1943 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 @@ -4,19 +4,18 @@ package com.teaching.backend.service.impl.chapter; import cn.hutool.core.bean.BeanUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.mapper.chapter.TemporaryChapterMapper; 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.chapter.TemporaryChapter; 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 com.teaching.backend.utils.Chapter.ExcelUtils; import org.springframework.beans.BeanUtils; @@ -45,12 +44,10 @@ public class ChapterServiceImpl extends ServiceImpl impl @Autowired private TemporaryChapterMapper temporaryChapterMapper; @Autowired - private KnowtempMapper knowtempMapper; -// private int count=0; - List list=new ArrayList<>(); + private KnowtmpMapper knowtmpMapper; + // private int count=0; + List list = new ArrayList<>(); - @Autowired - private KnowService knowService; @Override public String updateNumShow(Chapter chapter) { @@ -59,26 +56,26 @@ public class ChapterServiceImpl extends ServiceImpl impl String courseid = chapter.getCourseId(); Long pid = chapter.getPid(); LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - Long countChapter ; + Long countChapter; // pid为0时,说明为章 - if("0".equals(pid)|| "".equals(pid)){ - wrapper.eq(Chapter::getCourseId,courseid); + if ("0".equals(pid) || "".equals(pid)) { + wrapper.eq(Chapter::getCourseId, courseid); countChapter = chapterMapper.selectCount(wrapper); - finalNumShow=String.valueOf(countChapter+1); + finalNumShow = String.valueOf(countChapter + 1); // chapter.setNumshow(String.valueOf(countChapter+1)); // System.out.println(chapter.getNumshow()); - }else{ + } else { // 为小节 Chapter chapter1 = chapterMapper.selectById(pid); - String parentNumShow =chapter1.getNumshow(); + String parentNumShow = chapter1.getNumshow(); System.out.println("909090"); System.out.println(parentNumShow); - wrapper.eq(Chapter::getCourseId,courseid) - .eq(Chapter::getPid,pid); + wrapper.eq(Chapter::getCourseId, courseid) + .eq(Chapter::getPid, pid); countChapter = chapterMapper.selectCount(wrapper); - System.out.println("-=-=-=-=-="+countChapter); - finalNumShow=parentNumShow + "-" + String.valueOf(countChapter + 1); + System.out.println("-=-=-=-=-=" + countChapter); + finalNumShow = parentNumShow + "-" + String.valueOf(countChapter + 1); } System.out.println("-=-=-=-=11"); System.out.println(finalNumShow); @@ -89,10 +86,10 @@ public class ChapterServiceImpl extends ServiceImpl impl public LinkedList getAll() { List list = chapterMapper.selectList(null); LinkedList linkedList = new LinkedList<>(list); - int i=0; - for (Chapter chapter:linkedList){ + int i = 0; + for (Chapter chapter : linkedList) { System.out.println(linkedList.get(i)); - System.out.println(i+"----"+chapter); + System.out.println(i + "----" + chapter); i++; } System.out.println(linkedList); @@ -102,7 +99,7 @@ public class ChapterServiceImpl extends ServiceImpl impl @Override public LinkedList getCourseChapter(String courseid) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(Chapter::getCourseId,courseid) + wrapper.eq(Chapter::getCourseId, courseid) .orderByAsc(Chapter::getNumshow); List list = chapterMapper.selectList(wrapper); LinkedList linkedList = new LinkedList<>(list); @@ -110,38 +107,38 @@ public class ChapterServiceImpl extends ServiceImpl impl } @Override - public LinkedList getChapterSection(String courseid){ + public LinkedList getChapterSection(String courseid) { // LinkedList list = new LinkedList<>(); // 获得所有的节,并按顺序进行排列 LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(Chapter::getCourseId,courseid) - .like(Chapter::getNumshow,"-") + wrapper.eq(Chapter::getCourseId, courseid) + .like(Chapter::getNumshow, "-") .orderByAsc(Chapter::getNumshow); List prelist = chapterMapper.selectList(wrapper); System.out.println("所有的节"); System.out.println(prelist); // 获得所有的章节信息 LambdaQueryWrapper wrapper1 = new LambdaQueryWrapper<>(); - wrapper1.eq(Chapter::getCourseId,courseid) - .notLike(Chapter::getNumshow,"-") + wrapper1.eq(Chapter::getCourseId, courseid) + .notLike(Chapter::getNumshow, "-") .orderByAsc(Chapter::getNumshow); List chapterList = chapterMapper.selectList(wrapper1); System.out.println("0-0-0-0所有的章------------"); System.out.println(chapterList); // 类型转换chapter => chapterVo List chapterVoList = BeanUtil.copyToList(chapterList, ChapterVo.class); - chapterVoList = chapterVoList.stream().map((item) ->{ - for (int i=0;i { + for (int i = 0; i < prelist.size(); i++) { System.out.println("====================="); // System.out.println(prelist.get(i).getNumshow().split("-")[0].equals(item.getNumshow())); - if (prelist.get(i).getNumshow().split("-")[0].equals(item.getNumshow())){ + if (prelist.get(i).getNumshow().split("-")[0].equals(item.getNumshow())) { // System.out.println(item.getNumshow()+"[][][]"+i); - System.out.println("88888888888888888888888888"+prelist.get(i).getNumshow().split("-")[0]); + System.out.println("88888888888888888888888888" + prelist.get(i).getNumshow().split("-")[0]); // Chapter chapter = prelist.get(i); list.add(prelist.get(i)); item.setChapterSection(list); - System.out.println(prelist.get(i).getNumshow()+"-------------+121--"); - }else { + System.out.println(prelist.get(i).getNumshow() + "-------------+121--"); + } else { // list1=list; // System.out.println(item.getNumshow() + "[8888][][]"); // System.out.println(prelist.get(i).getNumshow().split("-")[0]); @@ -175,27 +172,27 @@ public class ChapterServiceImpl extends ServiceImpl impl @Override public List getChapterTree(String courseId) { - List chapters=baseMapper.selectSectionsByCourseId(courseId); + List chapters = baseMapper.selectSectionsByCourseId(courseId); - Map chapterMap=new HashMap<>(); + Map chapterMap = new HashMap<>(); - List roots=new ArrayList<>(); + List roots = new ArrayList<>(); - for (Chapter chapter:chapters){ + for (Chapter chapter : chapters) { chapter.setChildren(new ArrayList<>()); chapter.setKnowledgePoints(new ArrayList<>()); - chapterMap.put(chapter.getId(),chapter); + chapterMap.put(chapter.getId(), chapter); } - for (Chapter chapter:chapters){ - Long parentId=chapter.getPid(); - if (parentId!=0){ - Chapter parentChapter=chapterMap.get(parentId); + for (Chapter chapter : chapters) { + Long parentId = chapter.getPid(); + if (parentId != 0) { + Chapter parentChapter = chapterMap.get(parentId); if (parentChapter != null) { parentChapter.getChildren().add(chapter); } - }else { + } else { roots.add(chapter); } } @@ -217,18 +214,19 @@ public class ChapterServiceImpl extends ServiceImpl impl .collect(Collectors.toList()); chapter.setChildren(sortedChildren); - QueryWrapperqueryWrapper = new QueryWrapper<>(); + QueryWrapper queryWrapper = new QueryWrapper<>(); for (Chapter child : sortedChildren) { - queryWrapper.eq("chapterId",child.getId()); - List knows = knowtempMapper.selectList(queryWrapper); + queryWrapper.eq("chapterId", child.getId()); + List knows = knowtmpMapper.selectList(queryWrapper); child.setKnowledgePoints(new ArrayList<>(knows)); loadKnowledgePointsRecursively(child); } } + @Override public void saveChapter(ChapterDTO chapterDTO) { - System.out.println("我导入Excel成功进入到了这一步"); + Chapter chapter = new Chapter(); try { BeanUtils.copyProperties(chapterDTO, chapter); @@ -236,7 +234,7 @@ public class ChapterServiceImpl extends ServiceImpl impl throw new RuntimeException("复制数据出错", e); } Long pid = chapter.getPid(); - if (pid == null ) { + if (pid == null) { chapter.setPid(0L); LambdaQueryWrapper maxSortWrapper = new LambdaQueryWrapper<>(); maxSortWrapper.eq(Chapter::getPid, 0).orderByDesc(Chapter::getOrderNum).last("limit 1"); @@ -256,7 +254,7 @@ public class ChapterServiceImpl extends ServiceImpl impl if (parentChapter != null) { LambdaQueryWrapper maxSortWrapper = new LambdaQueryWrapper<>(); - maxSortWrapper.eq(Chapter::getPid,pid).orderByDesc(Chapter::getOrderNum).last("limit 1"); + maxSortWrapper.eq(Chapter::getPid, pid).orderByDesc(Chapter::getOrderNum).last("limit 1"); parentChapter.setUpdateTime(LocalDateTime.now()); Chapter maxSortChapter = this.getOne(maxSortWrapper); @@ -273,10 +271,11 @@ public class ChapterServiceImpl extends ServiceImpl impl chapter.setUpdateTime(LocalDateTime.now()); this.save(chapter); } else { - throw new BusinessException(ErrorCode.PARAMS_ERROR,"未找到父章节,ID 为: " + pid); + throw new BusinessException(ErrorCode.PARAMS_ERROR, "未找到父章节,ID 为: " + pid); } } } + @Override public Long saveExcelChapter2(ChapterDTO chapterDTO, boolean isParent) { Chapter chapter = new Chapter(); @@ -306,29 +305,29 @@ public class ChapterServiceImpl extends ServiceImpl impl return chapter.getId(); } - }else { - Chapter parentChapter = this.getById(pid); - if (parentChapter != null) { - LambdaQueryWrapper maxSortWrapper = new LambdaQueryWrapper<>(); - maxSortWrapper.eq(Chapter::getPid, pid).orderByDesc(Chapter::getOrderNum).last("limit 1"); + } else { + Chapter parentChapter = this.getById(pid); + if (parentChapter != null) { + LambdaQueryWrapper maxSortWrapper = new LambdaQueryWrapper<>(); + maxSortWrapper.eq(Chapter::getPid, pid).orderByDesc(Chapter::getOrderNum).last("limit 1"); - Chapter maxSortChapter = this.getOne(maxSortWrapper); - double newSort = (maxSortChapter != null) ? maxSortChapter.getOrderNum() + 1 : 1; + Chapter maxSortChapter = this.getOne(maxSortWrapper); + double newSort = (maxSortChapter != null) ? maxSortChapter.getOrderNum() + 1 : 1; - chapter.setOrderNum(newSort); + chapter.setOrderNum(newSort); - parentChapter.setUpdateTime(now); - this.updateById(parentChapter); + parentChapter.setUpdateTime(now); + this.updateById(parentChapter); - this.save(chapter); + this.save(chapter); - return chapter.getId(); - } else { - throw new BusinessException(ErrorCode.PARAMS_ERROR, "未找到父章节,ID 为: " + pid); - } - } return null; + return chapter.getId(); + } else { + throw new BusinessException(ErrorCode.PARAMS_ERROR, "未找到父章节,ID 为: " + pid); + } } - + return null; + } @Override @@ -341,13 +340,14 @@ public class ChapterServiceImpl extends ServiceImpl impl throw new RuntimeException("复制数据出错", e); } - if (chapterId1 == null && chapterId2 == null||chapterId1!=null && chapterId2==null) { + if (chapterId1 == null && chapterId2 == null || chapterId1 != null && chapterId2 == null) { handleRootChapterInsertion(chapter); } else { handleChapterInsertion(chapterId1, chapterId2, chapter); } } + private void handleRootChapterInsertion(Chapter chapter) { Long pid = chapter.getPid(); if (pid == null) { @@ -405,6 +405,7 @@ public class ChapterServiceImpl extends ServiceImpl impl public void upChapter(Long chapterId) { moveChapter(chapterId, true); } + @Override public void downChapter(Long chapterId) { moveChapter(chapterId, false); @@ -412,15 +413,15 @@ public class ChapterServiceImpl extends ServiceImpl impl @Override public void downExcel(HttpServletResponse response) throws IOException { - ExcelUtils.createTemplateExcel(response); - } + ExcelUtils.createTemplateExcel(response); + } @Override - public PagegetAllChapters(int page, int pageSize) { + public Page getAllChapters(int page, int pageSize) { - Page pageInfo=new Page<>(page,pageSize); - LambdaQueryWrapper queryWrapper=new LambdaQueryWrapper<>(); - this.page(pageInfo,queryWrapper); + Page pageInfo = new Page<>(page, pageSize); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + this.page(pageInfo, queryWrapper); return pageInfo; } @@ -437,7 +438,7 @@ public class ChapterServiceImpl extends ServiceImpl impl if (chapter.getPid() == 0) { String courseId = chapter.getCourseId(); - List subChapters = chapterMapper.selectByIdAndPid(chapterId,courseId); + List subChapters = chapterMapper.selectByIdAndPid(chapterId, courseId); BigDecimal totalClassHours = BigDecimal.ZERO; @@ -451,7 +452,7 @@ public class ChapterServiceImpl extends ServiceImpl impl } chapter.setTotalClassHours(String.valueOf(totalClassHours)); - }else { + } else { chapter.setTotalClassHours(chapter.getTotalClassHours()); } @@ -484,14 +485,13 @@ public class ChapterServiceImpl extends ServiceImpl impl } - Chapter finalChapter = new Chapter(); try { BeanUtils.copyProperties(tempChapter, finalChapter); } catch (Exception e) { throw new RuntimeException("复制数据出错", e); } - finalChapter.setId(null); + finalChapter.setId(null); this.save(finalChapter); tempIdToFinalIdMap.put(tempChapter.getId(), finalChapter.getId()); } @@ -550,8 +550,6 @@ public class ChapterServiceImpl extends ServiceImpl impl } - - public void moveChapter(Long chapterId, boolean moveUp) { Chapter chapter = this.getById(chapterId); if (chapter == null) { @@ -604,79 +602,80 @@ public class ChapterServiceImpl extends ServiceImpl impl updateChapter.setOrderNum(newOrderNum); this.updateById(updateChapter); } + @Override public void deleteChapter(Long id) { - if (id==null){ - throw new BusinessException(ErrorCode.PARAMS_ERROR,"请求参数不能为空"); + if (id == null) { + throw new BusinessException(ErrorCode.PARAMS_ERROR, "请求参数不能为空"); } - LambdaQueryWrapperqueryWrapper=new LambdaQueryWrapper<>(); - queryWrapper.eq(Chapter::getId,id); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(Chapter::getId, id); - LambdaQueryWrapperlambdaQueryWrapper=new LambdaQueryWrapper<>(); - lambdaQueryWrapper.eq(Chapter::getPid,id); - Long count= this.count(lambdaQueryWrapper); + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(Chapter::getPid, id); + Long count = this.count(lambdaQueryWrapper); - if (count>0){ - throw new BusinessException(ErrorCode.OPERATION_ERROR,"存在子章节,无法删除"); - } - QueryWrapperqueryWrapper1 = new QueryWrapper<>(); - queryWrapper1.eq("chapterId",id); - List knows = knowtempMapper.selectList(queryWrapper1); + if (count > 0) { + throw new BusinessException(ErrorCode.OPERATION_ERROR, "存在子章节,无法删除"); + } + QueryWrapper queryWrapper1 = new QueryWrapper<>(); + queryWrapper1.eq("chapterId", id); + List knows = knowtmpMapper.selectList(queryWrapper1); if (!knows.isEmpty()) { throw new BusinessException(ErrorCode.OPERATION_ERROR, "子章节下存在知识点,无法删除"); } - this.remove(queryWrapper); + this.remove(queryWrapper); } - public void updateNumShow(String numshow, String courseid){ + public void updateNumShow(String numshow, String courseid) { // 查询课程章节 getCourseChapter LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(Chapter::getCourseId,courseid) + wrapper.eq(Chapter::getCourseId, courseid) .orderByAsc(Chapter::getNumshow); List chapterList = chapterMapper.selectList(wrapper); System.out.println("0-0-0-0-00-------"); System.out.println(chapterList); List newlist = new ArrayList<>(); - int count=0,j=0; + int count = 0, j = 0; int i = numshow.indexOf("-"); // 删除的为章 - if(i==-1){ + if (i == -1) { System.out.println("9999999"); - for(int k=0;k impl // list.get(i).setNumshow( String.valueOf(num) ); // } } - } - else{ + } else { String[] split = numshow.split("-"); - for (int k=0;k< chapterList.size();k++){ - System.out.println("009988"+String.valueOf(Integer.parseInt(split[0])+1)); + for (int k = 0; k < chapterList.size(); k++) { + System.out.println("009988" + String.valueOf(Integer.parseInt(split[0]) + 1)); // 找到下一章的起始点 - if (chapterList.get(k).getNumshow().equals(String.valueOf(Integer.parseInt(split[0])+1))){ - count=k; + if (chapterList.get(k).getNumshow().equals(String.valueOf(Integer.parseInt(split[0]) + 1))) { + count = k; } - if (chapterList.get(k).getNumshow().equals(numshow)){ - j=k; + if (chapterList.get(k).getNumshow().equals(numshow)) { + j = k; chapterMapper.deleteById(chapterList.get(k).getId()); - }else{ + } else { newlist.add(chapterList.get(k)); } } - System.out.println(count+"''''''"+j); - for (int k=j;k * 服务实现类 @@ -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 @Autowired private LearningRecordsMapper learningRecordsMapper; @Autowired - private AddNeoKnowByCourse addNeoKnowByCourse; - @Autowired CourseLearningRecordMapper courseLearningRecordMapper; @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 +191,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 +210,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 +222,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); } @@ -342,13 +350,15 @@ 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(); 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<>(); @@ -359,7 +369,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; 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/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/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..8165dae --- /dev/null +++ b/src/main/java/com/teaching/backend/service/impl/knowtmp/KnowtmpServiceImpl.java @@ -0,0 +1,79 @@ +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 query(Long id) { + Knowtmp knowtmp = knowtmpMapper.selectById(id); + return ResultUtils.success(knowtmp); + } + + @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/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..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 @@ -2,20 +2,41 @@ 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.mapper.umsAdmin.UmsUserMapper; + import com.teaching.backend.model.entity.KnowGraph.KnowledgeLearningNumber; + 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.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; 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; /** *

@@ -29,6 +50,12 @@ import java.time.LocalDateTime; public class KnowledgeLearningRecordServiceImpl extends ServiceImpl implements IKnowledgeLearningRecordService { @Resource private KnowledgeLearningNumberServiceImpl knowledgeLearningNumberService; + @Autowired + private UmsUserMapper umsUserMapper; + @Autowired + private KnowledgeLearningRecordMapper knowledgeLearningRecordMapper; + @Resource + private KnowtmpService knowtmpService; @Override public BaseResponse saveCoursesRecords(KnowledgeLearningRecord knowledgeLearningRecord) { @@ -44,14 +71,22 @@ public class KnowledgeLearningRecordServiceImpl extends ServiceImpl 0){ + Long count1 = query() + .eq("user_id", userId) + .eq("courses_id", courseId) + .eq("knowledge_id",knowledgeId).count(); + 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); @@ -68,4 +103,78 @@ 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("删除成功!"); + } + + @Override + public List 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 = knowtmpService.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 = knowtmpService.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/impl/records/ResourceLearningRecordServiceImpl.java b/src/main/java/com/teaching/backend/service/impl/records/ResourceLearningRecordServiceImpl.java index 1220371..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,76 +1,127 @@ -package com.teaching.backend.service.impl.records; - - -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.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; - -import javax.annotation.Resource; -import java.time.LocalDateTime; - -/** - *

- * 服务实现类 - *

- * - * @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).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("添加成功"); - } -} +//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/impl/report/ReportServiceImpl.java b/src/main/java/com/teaching/backend/service/impl/report/ReportServiceImpl.java index 3cabf56..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); } @@ -59,13 +64,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/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..193fe44 --- /dev/null +++ b/src/main/java/com/teaching/backend/service/knowtmp/KnowtmpService.java @@ -0,0 +1,31 @@ +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); + + //查询 + BaseResponse query(Long id); + + //查询通过chapterId List + BaseResponse> queryByChapterId(Long chapterId); + +} 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..4e320e0 100644 --- a/src/main/java/com/teaching/backend/service/records/IKnowledgeLearningRecordService.java +++ b/src/main/java/com/teaching/backend/service/records/IKnowledgeLearningRecordService.java @@ -1,9 +1,14 @@ 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 io.swagger.models.auth.In; +import com.teaching.backend.model.vo.knowGraph.KnowVO; + +import java.util.List; /** *

@@ -16,4 +21,12 @@ 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); + + + List queryMaxKnowledge(String userId); } + 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/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(); } 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/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/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, "课程正在修改中"); 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/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/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 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/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 @@ + + + + + + + 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; 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接口合并分块 + + + //批量清理分块文件 + + +} diff --git a/src/test/java/com/teaching/test.java b/src/test/java/com/teaching/test.java new file mode 100644 index 0000000..6d75620 --- /dev/null +++ b/src/test/java/com/teaching/test.java @@ -0,0 +1,36 @@ +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 { + + + @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); +// } + } +}