知识图谱 关联章节

master
youahng 7 months ago committed by yh
parent 199afb1d5c
commit 806e7b365f
  1. 13
      pom.xml
  2. 4
      src/main/java/com/teaching/TeachingBackendApplication.java
  3. 24
      src/main/java/com/teaching/backend/config/UploadConfig.java
  4. 89
      src/main/java/com/teaching/backend/controller/FavourInformation/FavourInformationController.java
  5. 14
      src/main/java/com/teaching/backend/controller/KnowGraph/KnowController.java
  6. 84
      src/main/java/com/teaching/backend/controller/KnowGraph/ResourcesController.java
  7. 193
      src/main/java/com/teaching/backend/controller/courseResource/CourseResourceController.java
  8. 177
      src/main/java/com/teaching/backend/controller/courses/CoursesController2.java
  9. 228
      src/main/java/com/teaching/backend/controller/favour/SeCourseFavourController.java
  10. 94
      src/main/java/com/teaching/backend/controller/favour/SeKnowFavourController.java
  11. 138
      src/main/java/com/teaching/backend/controller/favour/SeResourceFavourController.java
  12. 178
      src/main/java/com/teaching/backend/controller/records/LearningRecordsController.java
  13. 83
      src/main/java/com/teaching/backend/controller/resource/ResourceController.java
  14. 130
      src/main/java/com/teaching/backend/controller/thumb/SeCourseThumbController.java
  15. 88
      src/main/java/com/teaching/backend/controller/thumb/SeKnowThumbController.java
  16. 88
      src/main/java/com/teaching/backend/controller/thumb/SeResourceThumbController.java
  17. 10
      src/main/java/com/teaching/backend/mapper/KnowGraph/KnowRepository.java
  18. 34
      src/main/java/com/teaching/backend/mapper/KnowGraph/ResourcesRepository.java
  19. 8
      src/main/java/com/teaching/backend/mapper/resource/ResourcesMapper.java
  20. 21
      src/main/java/com/teaching/backend/mapper/resource/ResourcesRelationshipMapper.java
  21. 31
      src/main/java/com/teaching/backend/model/dto/KnowGraph/KnowChapterCreateRequest.java
  22. 5
      src/main/java/com/teaching/backend/model/dto/KnowGraph/KnowCourseCreateRequest.java
  23. 22
      src/main/java/com/teaching/backend/model/dto/KnowGraph/RelationshipResourceRequest.java
  24. 22
      src/main/java/com/teaching/backend/model/dto/KnowGraph/ResourceUpdateRequest.java
  25. 21
      src/main/java/com/teaching/backend/model/dto/KnowGraph/ResourcesAddRequest.java
  26. 15
      src/main/java/com/teaching/backend/model/dto/KnowGraph/ResourcesRequest.java
  27. 5
      src/main/java/com/teaching/backend/model/entity/KnowGraph/Know.java
  28. 44
      src/main/java/com/teaching/backend/model/entity/KnowGraph/KnowChapter.java
  29. 7
      src/main/java/com/teaching/backend/model/entity/KnowGraph/KnowCourse.java
  30. 32
      src/main/java/com/teaching/backend/model/entity/KnowGraph/Resources.java
  31. 9
      src/main/java/com/teaching/backend/model/entity/resource/Resource.java
  32. 12
      src/main/java/com/teaching/backend/service/KnowGraph/KnowService.java
  33. 85
      src/main/java/com/teaching/backend/service/KnowGraph/ResourcesService.java
  34. 56
      src/main/java/com/teaching/backend/service/favour/SeResourceFavourService.java
  35. 192
      src/main/java/com/teaching/backend/service/impl/CourseResourcesServiceImpl.java
  36. 84
      src/main/java/com/teaching/backend/service/impl/ResourcesRelationshipServiceImpl.java
  37. 330
      src/main/java/com/teaching/backend/service/impl/favour/SeCourseFavourServiceImpl.java
  38. 205
      src/main/java/com/teaching/backend/service/impl/favour/SeResourceFavourServiceImpl.java
  39. 337
      src/main/java/com/teaching/backend/service/impl/records/LearningRecordsServiceImpl.java
  40. 45
      src/main/java/com/teaching/backend/service/impl/resource/ResourceServiceImpl.java
  41. 216
      src/main/java/com/teaching/backend/service/impl/thumb/SeCourseThumbServiceImpl.java
  42. 136
      src/main/java/com/teaching/backend/service/impl/thumb/SeKnowThumbServiceImpl.java
  43. 162
      src/main/java/com/teaching/backend/service/impl/thumb/SeResourceThumbServiceImpl.java
  44. 35
      src/main/java/com/teaching/backend/service/resource/CourseResourcesService.java
  45. 17
      src/main/java/com/teaching/backend/service/resource/ResourceService.java
  46. 25
      src/main/java/com/teaching/backend/service/resource/ResourcesRelationshipService.java
  47. 66
      src/main/java/com/teaching/backend/service/thumb/SeCourseThumbService.java
  48. 46
      src/main/java/com/teaching/backend/service/thumb/SeKnowThumbService.java
  49. 44
      src/main/java/com/teaching/backend/service/thumb/SeResourceThumbService.java
  50. 1
      src/main/resources/application.yml

@ -24,6 +24,19 @@
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>1.4</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
<!--neo4j 的引入-->
<dependency>
<groupId>org.neo4j.driver</groupId>

@ -4,9 +4,11 @@ import cn.hutool.core.lang.generator.SnowflakeGenerator;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.web.servlet.MultipartAutoConfiguration;
import org.springframework.context.annotation.Bean;
@SpringBootApplication
//@SpringBootApplication
@SpringBootApplication(exclude = {MultipartAutoConfiguration.class})
@MapperScan("com.teaching.backend.mapper")
public class TeachingBackendApplication {

@ -0,0 +1,24 @@
package com.teaching.backend.config;
/**
* @Author:youhang
* @Date:2024-07-26-13:11
* @Description:
*/
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.multipart.MultipartResolver;
import org.springframework.web.multipart.commons.CommonsMultipartResolver;
@Configuration
public class UploadConfig {
//显示声明CommonsMultipartResolver为mutipartResolver
@Bean(name = "multipartResolver")
public MultipartResolver multipartResolver() {
CommonsMultipartResolver resolver = new CommonsMultipartResolver();
resolver.setDefaultEncoding("UTF-8");
//resolveLazily属性启用是为了推迟文件解析,以在在UploadAction中捕获文件大小异常
resolver.setResolveLazily(true);
return resolver;
}
}

@ -1,45 +1,44 @@
package com.teaching.backend.controller.FavourInformation;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.teaching.backend.common.BaseResponse;
import com.teaching.backend.common.PageRequest;
import com.teaching.backend.common.ResultUtils;
import com.teaching.backend.model.entity.CourseResources;
import com.teaching.backend.service.resource.CourseResourcesService;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
/**
* ClassName: Get
* Package: com.teaching.backend.controller.FavourInformation
* Description:
*
* @Author 姜钧瀚
* @Create 2024/6/13 18:15
* @Version 1.0
*/
@RestController
@RequestMapping ("/api")
public class FavourInformationController{
@Resource
CourseResourcesService courseResourcesService;
@GetMapping("/Favour/get")
public BaseResponse<Page<CourseResources>> getInformation2(@RequestParam List<Integer> resourceIdList , @RequestParam Integer type, PageRequest pageRequest) {
int page=pageRequest.getCurrent();
int pageSize=pageRequest.getPageSize();
Page<CourseResources> resourcesPage=courseResourcesService.getresourceRecords(type,resourceIdList,page,pageSize);
return ResultUtils.success(resourcesPage);
}
}
//package com.teaching.backend.controller.FavourInformation;
//
//import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
//import com.teaching.backend.common.BaseResponse;
//import com.teaching.backend.common.PageRequest;
//import com.teaching.backend.common.ResultUtils;
//import com.teaching.backend.model.entity.resource.CourseResources;
//import org.springframework.web.bind.annotation.*;
//
//import javax.annotation.Resource;
//import java.util.List;
//
///**
// * ClassName: Get
// * Package: com.teaching.backend.controller.FavourInformation
// * Description:
// *
// * @Author 姜钧瀚
// * @Create 2024/6/13 18:15
// * @Version 1.0
// */
//@RestController
//@RequestMapping ("/api")
//public class FavourInformationController{
//
//
// @Resource
// CourseResourcesService courseResourcesService;
//
//
//
// @GetMapping("/Favour/get")
// public BaseResponse<Page<CourseResources>> getInformation2(@RequestParam List<Integer> resourceIdList , @RequestParam Integer type, PageRequest pageRequest) {
//
// int page=pageRequest.getCurrent();
// int pageSize=pageRequest.getPageSize();
//
// Page<CourseResources> resourcesPage=courseResourcesService.getresourceRecords(type,resourceIdList,page,pageSize);
//
// return ResultUtils.success(resourcesPage);
//
// }
//
// }

@ -10,11 +10,13 @@ import com.teaching.backend.common.ResultUtils;
import com.teaching.backend.model.dto.KnowGraph.*;
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.service.KnowGraph.KnowService;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Set;
@RestController
@ -44,6 +46,13 @@ public class KnowController {
public KnowCourse createCourseKnow(@RequestBody KnowCourseCreateRequest knowCourseCreateRequest) {
return knowService.createCourseKnow(knowCourseCreateRequest);
}
//添加知识点 - 章节
@PostMapping("/addKnowChapter")
public KnowChapter createKnowChapter(@RequestBody KnowChapterCreateRequest knowChapterCreateRequest) {
return knowService.createKnowChapter(knowChapterCreateRequest);
}
//修改知识点
@PostMapping ("/update")
@ -82,4 +91,9 @@ public class KnowController {
return ResultUtils.success(baseKnowReturn);
}
@GetMapping("/KnowBychapterId")
public Set<Know> queryByChapterId(@RequestParam String chapterId) {
return knowService.queryByChapterId(chapterId);
}
}

@ -0,0 +1,84 @@
package com.teaching.backend.controller.KnowGraph;
/**
* @Author:youhang
* @Date:2024-06-09-9:55
* @Description:
*/
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.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 {
private ResourcesService resourcesService;
//添加知识点
@PostMapping("/upload")
public String uploadFile(@RequestParam("file")MultipartFile file) {
System.out.println(file.getOriginalFilename());
return resourcesService.uploadFile(file);
}
public ResourcesController(ResourcesService resourcesService) {
this.resourcesService = resourcesService;
}
//根据 id查询所关联的所有结点
@PostMapping ("/query/{id}")
public List<Resources> 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);
}
//添加知识点与知识点的关系 related
@PostMapping ("/addKnowResourcesResources")
public void addKnowWithResource(@RequestBody RelationshipResourceRequest relationshipResourceRequest) {
resourcesService.addKnowWithResources(relationshipResourceRequest);
}
@GetMapping ("queryCourseKnow/{KnowId}")
public Set<Resources> queryCourseKnowToResources(@PathVariable Long KnowId) {
return resourcesService.queryCourseKnowToResources(KnowId);
}
}

@ -1,97 +1,96 @@
package com.teaching.backend.controller.courseResource;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.teaching.backend.common.BaseResponse;
import com.teaching.backend.common.ResultUtils;
import com.teaching.backend.model.entity.CourseResources;
import com.teaching.backend.service.impl.CourseResourcesServiceImpl;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
@RestController
@RequestMapping("/api/courses")
public class CourseResourceController {
@Autowired
private CourseResourcesServiceImpl courseResourcesService;
@ApiOperation("查询全部课程资源记录")
@GetMapping("/all")
public BaseResponse<List<CourseResources>> All(){
System.out.println("学习记录:"+courseResourcesService.list());
return ResultUtils.success(courseResourcesService.list());
}
@ApiOperation("按type查询课程资源")
@GetMapping("/getall")
public BaseResponse<Page> getAll(@RequestParam(value = "pagenum", defaultValue = "1") int pagenum,
@RequestParam(value = "pagesize", defaultValue = "10") int pagesize,
String type) {
List<CourseResources> cs = courseResourcesService.getByType(type);
List<CourseResources> pageCs = new ArrayList<>();
//当前页面
for(int i = (pagenum - 1) * pagesize; i < cs.size() && i < (pagenum) * pagesize; i++){
pageCs.add(cs.get(i));
}
long total = cs.size(); // 总记录数
Page<CourseResources> pageInfo = new Page<>(pagenum,pagesize,total);
pageInfo.setRecords(pageCs);
pageInfo.setPages((int)(Math.ceil((double) total / pagesize)));//设置总页数
return ResultUtils.success(pageInfo);
}
/**
* 根据ids删除
* @param ids
* @return
*/
@ApiOperation("根据ids删除")
@DeleteMapping("/delete")
public BaseResponse<String> deleteRecords(@RequestParam List<Long> ids){
courseResourcesService.removeCourseResources(ids);
// courseResourcesService.removeBatchByIds(ids);
return ResultUtils.success("删除成功!!");
}
/**
* 新增
* @param courseResources
* @return
*/
@ApiOperation("新增课程资源")
@PostMapping("/save")
public BaseResponse<String> saveCourseResource(@RequestBody CourseResources courseResources){
System.out.println(courseResources);
courseResourcesService.saveCourseResource(courseResources);
return ResultUtils.success("添加成功!");
}
/**
* 编辑
* @param resources
* @return
*/
@ApiOperation("编辑课程资源")
@PutMapping("/edit")
public BaseResponse<String> editCourseResource(@RequestBody CourseResources resources){
System.out.println(resources);
courseResourcesService.updateById(resources);
return ResultUtils.success("编辑成功");
}
/**
* 根据id查询课程资源
* @param resourceId
* @return
*/
@ApiOperation("根据id查询课程资源")
@PostMapping("/getone")
public BaseResponse<CourseResources> getOne(@RequestParam String resourceId){
System.out.println(resourceId);
return ResultUtils.success(courseResourcesService.getById(resourceId));
}
}
//package com.teaching.backend.controller.courseResource;
//
//import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
//import com.teaching.backend.common.BaseResponse;
//import com.teaching.backend.common.ResultUtils;
//
//import com.teaching.backend.model.entity.resource.CourseResources;
//import io.swagger.annotations.ApiOperation;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.web.bind.annotation.*;
//
//import java.util.ArrayList;
//import java.util.List;
//
//@RestController
//@RequestMapping("/api/courses")
//public class CourseResourceController {
// @Autowired
// private CourseResourcesServiceImpl courseResourcesService;
// @ApiOperation("查询全部课程资源记录")
// @GetMapping("/all")
// public BaseResponse<List<CourseResources>> All(){
// System.out.println("学习记录:"+courseResourcesService.list());
// return ResultUtils.success(courseResourcesService.list());
// }
//
// @ApiOperation("按type查询课程资源")
// @GetMapping("/getall")
// public BaseResponse<Page> getAll(@RequestParam(value = "pagenum", defaultValue = "1") int pagenum,
// @RequestParam(value = "pagesize", defaultValue = "10") int pagesize,
// String type) {
//
// List<CourseResources> cs = courseResourcesService.getByType(type);
// List<CourseResources> pageCs = new ArrayList<>();
// //当前页面
// for(int i = (pagenum - 1) * pagesize; i < cs.size() && i < (pagenum) * pagesize; i++){
// pageCs.add(cs.get(i));
// }
// long total = cs.size(); // 总记录数
// Page<CourseResources> pageInfo = new Page<>(pagenum,pagesize,total);
// pageInfo.setRecords(pageCs);
// pageInfo.setPages((int)(Math.ceil((double) total / pagesize)));//设置总页数
// return ResultUtils.success(pageInfo);
// }
//
// /**
// * 根据ids删除
// * @param ids
// * @return
// */
// @ApiOperation("根据ids删除")
// @DeleteMapping("/delete")
// public BaseResponse<String> deleteRecords(@RequestParam List<Long> ids){
// courseResourcesService.removeCourseResources(ids);
//// courseResourcesService.removeBatchByIds(ids);
// return ResultUtils.success("删除成功!!");
// }
//
// /**
// * 新增
// * @param courseResources
// * @return
// */
// @ApiOperation("新增课程资源")
// @PostMapping("/save")
// public BaseResponse<String> saveCourseResource(@RequestBody CourseResources courseResources){
// System.out.println(courseResources);
// courseResourcesService.saveCourseResource(courseResources);
// return ResultUtils.success("添加成功!");
// }
//
// /**
// * 编辑
// * @param resources
// * @return
// */
// @ApiOperation("编辑课程资源")
// @PutMapping("/edit")
// public BaseResponse<String> editCourseResource(@RequestBody CourseResources resources){
// System.out.println(resources);
// courseResourcesService.updateById(resources);
// return ResultUtils.success("编辑成功");
// }
//
// /**
// * 根据id查询课程资源
// * @param resourceId
// * @return
// */
// @ApiOperation("根据id查询课程资源")
// @PostMapping("/getone")
// public BaseResponse<CourseResources> getOne(@RequestParam String resourceId){
// System.out.println(resourceId);
// return ResultUtils.success(courseResourcesService.getById(resourceId));
// }
//}

@ -1,91 +1,86 @@
package com.teaching.backend.controller.courses;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.teaching.backend.common.BaseResponse;
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.mapper.courses.CoursesMapper;
import com.teaching.backend.model.dto.courses.CoursesDTO;
import com.teaching.backend.model.entity.CourseResources;
import com.teaching.backend.model.entity.ResourceRelationship;
import com.teaching.backend.model.entity.courses.Courses;
import com.teaching.backend.model.vo.courses.CoursesVO;
import com.teaching.backend.service.courses.ICoursesService;
import com.teaching.backend.service.resource.ResourcesRelationshipService;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* ClassName: CoursesController2
* Package: com.teaching.backend.controller.courses
* Description:
*
* @Author 姜钧瀚
* @Create 2024/7/22 17:52
* @Version 1.0
*/
@RestController
@RequestMapping("/api/coursesteacher2")
public class CoursesController2 {
@Autowired
ICoursesService coursesService;
@Autowired
ResourcesRelationshipService resourcesRelationshipService;
@ApiOperation("网站首页2")
@GetMapping("/index2")
public BaseResponse<Map<String,Object>> getData(@RequestParam("page") int page, @RequestParam("pageSize") int pageSize) {
Map<String, Object> result = coursesService.getPagePageSize2(page, pageSize);
// 将结果放入新的Map对象中返回
Map<String, Object> objectMap = new HashMap<>();
objectMap.put("content", result.get("courses"));
objectMap.put("totalcount", result.get("totalcount"));
objectMap.put("totalPages", result.get("totalPages"));
objectMap.put("currentPage", result.get("currentPage"));
return ResultUtils.success(objectMap);
}
@ApiOperation("根据id查询课程")
@ValidateParams({"id"})
@GetMapping("/{id}")
public BaseResponse<CoursesDTO> 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);
return ResultUtils.success(coursesDTO);
}
@ApiOperation("点击详情课程根据id查询对应课程的资源")
@GetMapping("/resource/{id}")
public BaseResponse<List<CourseResources>> getResource(@PathVariable String id) {
List<CourseResources> relatedResources = resourcesRelationshipService.getResource(id);
return ResultUtils.success(relatedResources);
}
@ApiOperation("点击详情课程根据id和type查询对应课程的资源")
@GetMapping("/resource/list")
public BaseResponse<List<CourseResources>> getResource2(@RequestParam String id,@RequestParam Integer type) {
List<CourseResources> relatedResources = resourcesRelationshipService.getResource2(id,type);
return ResultUtils.success(relatedResources);
}
}
//package com.teaching.backend.controller.courses;
//
//import com.teaching.backend.common.BaseResponse;
//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.entity.resource.CourseResources;
//import com.teaching.backend.model.entity.courses.Courses;
//import com.teaching.backend.service.courses.ICoursesService;
//import io.swagger.annotations.ApiOperation;
//import org.springframework.beans.BeanUtils;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.web.bind.annotation.*;
//
//import java.util.HashMap;
//import java.util.List;
//import java.util.Map;
//
///**
// * ClassName: CoursesController2
// * Package: com.teaching.backend.controller.courses
// * Description:
// *
// * @Author 姜钧瀚
// * @Create 2024/7/22 17:52
// * @Version 1.0
// */
//@RestController
//@RequestMapping("/api/coursesteacher2")
//public class CoursesController2 {
// @Autowired
// ICoursesService coursesService;
// @Autowired
// ResourcesRelationshipService resourcesRelationshipService;
//
// @ApiOperation("网站首页2")
// @GetMapping("/index2")
// public BaseResponse<Map<String,Object>> getData(@RequestParam("page") int page, @RequestParam("pageSize") int pageSize) {
// Map<String, Object> result = coursesService.getPagePageSize2(page, pageSize);
//
// // 将结果放入新的Map对象中返回
// Map<String, Object> objectMap = new HashMap<>();
// objectMap.put("content", result.get("courses"));
// objectMap.put("totalcount", result.get("totalcount"));
// objectMap.put("totalPages", result.get("totalPages"));
// objectMap.put("currentPage", result.get("currentPage"));
//
// return ResultUtils.success(objectMap);
// }
//
//
// @ApiOperation("根据id查询课程")
// @ValidateParams({"id"})
// @GetMapping("/{id}")
// public BaseResponse<CoursesDTO> 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);
// return ResultUtils.success(coursesDTO);
// }
//
// @ApiOperation("点击详情课程根据id查询对应课程的资源")
// @GetMapping("/resource/{id}")
// public BaseResponse<List<CourseResources>> getResource(@PathVariable String id) {
// List<CourseResources> relatedResources = resourcesRelationshipService.getResource(id);
// return ResultUtils.success(relatedResources);
// }
//
// @ApiOperation("点击详情课程根据id和type查询对应课程的资源")
// @GetMapping("/resource/list")
// public BaseResponse<List<CourseResources>> getResource2(@RequestParam String id,@RequestParam Integer type) {
// List<CourseResources> relatedResources = resourcesRelationshipService.getResource2(id,type);
// return ResultUtils.success(relatedResources);
// }
//
// }
//
//
//
//
//

@ -1,114 +1,114 @@
package com.teaching.backend.controller.favour;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.teaching.backend.common.BaseResponse;
import com.teaching.backend.common.ErrorCode;
import com.teaching.backend.common.ResultUtils;
import com.teaching.backend.exception.BusinessException;
import com.teaching.backend.model.dto.favour.courseFavour.CourseFavourAddRequest;
import com.teaching.backend.model.dto.favour.courseFavour.CourseFavourAllRequest;
import com.teaching.backend.model.dto.favour.courseFavour.CourseFavourQueryRequest;
import com.teaching.backend.model.entity.courses.Courses;
import com.teaching.backend.model.vo.favour.CourseFavourDetailVO;
import com.teaching.backend.service.favour.SeCourseFavourService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
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;
import java.util.List;
/**
* @Author:youhang
* @Date:2024-05-30-20:22
* @Description:
*/
@RestController
@RequestMapping("/api/course_favour")
@Slf4j
public class SeCourseFavourController {
@Resource
private SeCourseFavourService seCourseFavourService;
/**
* 收藏/取消收藏
*
* @param courseFavourAddRequest
* @return result 执行情况
*/
@PostMapping("/add")
// 加上 HttpServletRequest request 在一个fitter里面进行鉴权操作
public BaseResponse<Boolean> doFavour(@RequestBody CourseFavourAddRequest courseFavourAddRequest) {
System.out.println(courseFavourAddRequest);
//判断字段是否为空
if (StringUtils.isAnyBlank(courseFavourAddRequest.getCourseId(), courseFavourAddRequest.getUserId())) {
throw new BusinessException(ErrorCode.PARAMS_ERROR);
}
return seCourseFavourService.doCourseFavour(courseFavourAddRequest.getCourseId(), courseFavourAddRequest.getUserId());
}
/**
* 课程点赞总数
*
* @param courseFavourAddRequest
* @return result 课程点赞总数
*/
@PostMapping("/count")
// HttpServletRequest request 在一个fitter里面进行鉴权操作
public BaseResponse<Long> favourCount(@RequestBody CourseFavourAddRequest courseFavourAddRequest) {
if (StringUtils.isAnyBlank(courseFavourAddRequest.getCourseId())) {
throw new BusinessException(ErrorCode.PARAMS_ERROR, "请求参数不能为空");
}
return seCourseFavourService.favourCount(courseFavourAddRequest.getCourseId());
}
/**
* 课程下资源和知识点点赞总数
*
* @param courseFavourAllRequest
* @return result 课程下资源和知识点点赞总数
*/
@PostMapping("/countAll")
// todo 后期加上 HttpServletRequest request 在一个fitter里面进行鉴权操作
public BaseResponse<Long> courseCount(@RequestBody CourseFavourAllRequest courseFavourAllRequest) {
if (StringUtils.isAnyBlank(courseFavourAllRequest.getCourseId())) {
throw new BusinessException(ErrorCode.PARAMS_ERROR, "请求参数不能为空");
}
// todo 从数据库中校验是否存在courseid
return seCourseFavourService.courseCount(courseFavourAllRequest.getCourseId());
}
/**
* 分页获取课程列表
*
* @return
*/
@PostMapping("/list/page")
public BaseResponse<Page<CourseFavourDetailVO>> listPostByPage(@RequestBody CourseFavourQueryRequest courseFavourQueryRequest) {
System.out.println(courseFavourQueryRequest);
long current = courseFavourQueryRequest.getCurrent();
long size = courseFavourQueryRequest.getPageSize();
String userId = courseFavourQueryRequest.getUserId();
List<String> ids = seCourseFavourService.courseList(userId);
QueryWrapper<Courses> courseQueryWrapper = new QueryWrapper<>();
courseQueryWrapper.in("id", ids);
Page<CourseFavourDetailVO> courseFavourDetailVOPage = seCourseFavourService.listCourseFavourByPage(new Page<>(current, size), courseQueryWrapper);
return ResultUtils.success(courseFavourDetailVOPage);
}
}
//package com.teaching.backend.controller.favour;
//
//import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
//import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
//import com.teaching.backend.common.BaseResponse;
//import com.teaching.backend.common.ErrorCode;
//import com.teaching.backend.common.ResultUtils;
//import com.teaching.backend.exception.BusinessException;
//import com.teaching.backend.model.dto.favour.courseFavour.CourseFavourAddRequest;
//import com.teaching.backend.model.dto.favour.courseFavour.CourseFavourAllRequest;
//import com.teaching.backend.model.dto.favour.courseFavour.CourseFavourQueryRequest;
//import com.teaching.backend.model.entity.courses.Courses;
//import com.teaching.backend.model.vo.favour.CourseFavourDetailVO;
//import com.teaching.backend.service.favour.SeCourseFavourService;
//import lombok.extern.slf4j.Slf4j;
//import org.apache.commons.lang3.StringUtils;
//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;
//import java.util.List;
//
///**
// * @Author:youhang
// * @Date:2024-05-30-20:22
// * @Description:
// */
//@RestController
//@RequestMapping("/api/course_favour")
//@Slf4j
//public class SeCourseFavourController {
//
// @Resource
// private SeCourseFavourService seCourseFavourService;
//
//
//
// /**
// * 收藏/取消收藏
// *
// * @param courseFavourAddRequest
// * @return result 执行情况
// */
// @PostMapping("/add")
// // 加上 HttpServletRequest request 在一个fitter里面进行鉴权操作
// public BaseResponse<Boolean> doFavour(@RequestBody CourseFavourAddRequest courseFavourAddRequest) {
// System.out.println(courseFavourAddRequest);
// //判断字段是否为空
// if (StringUtils.isAnyBlank(courseFavourAddRequest.getCourseId(), courseFavourAddRequest.getUserId())) {
// throw new BusinessException(ErrorCode.PARAMS_ERROR);
// }
//
// return seCourseFavourService.doCourseFavour(courseFavourAddRequest.getCourseId(), courseFavourAddRequest.getUserId());
//
// }
//
//
// /**
// * 课程点赞总数
// *
// * @param courseFavourAddRequest
// * @return result 课程点赞总数
// */
// @PostMapping("/count")
// // HttpServletRequest request 在一个fitter里面进行鉴权操作
// public BaseResponse<Long> favourCount(@RequestBody CourseFavourAddRequest courseFavourAddRequest) {
// if (StringUtils.isAnyBlank(courseFavourAddRequest.getCourseId())) {
// throw new BusinessException(ErrorCode.PARAMS_ERROR, "请求参数不能为空");
// }
// return seCourseFavourService.favourCount(courseFavourAddRequest.getCourseId());
// }
//
// /**
// * 课程下资源和知识点点赞总数
// *
// * @param courseFavourAllRequest
// * @return result 课程下资源和知识点点赞总数
// */
// @PostMapping("/countAll")
// // todo 后期加上 HttpServletRequest request 在一个fitter里面进行鉴权操作
// public BaseResponse<Long> courseCount(@RequestBody CourseFavourAllRequest courseFavourAllRequest) {
// if (StringUtils.isAnyBlank(courseFavourAllRequest.getCourseId())) {
// throw new BusinessException(ErrorCode.PARAMS_ERROR, "请求参数不能为空");
// }
// // todo 从数据库中校验是否存在courseid
//
// return seCourseFavourService.courseCount(courseFavourAllRequest.getCourseId());
// }
//
//
//
// /**
// * 分页获取课程列表
// *
// * @return
// */
// @PostMapping("/list/page")
// public BaseResponse<Page<CourseFavourDetailVO>> listPostByPage(@RequestBody CourseFavourQueryRequest courseFavourQueryRequest) {
// System.out.println(courseFavourQueryRequest);
// long current = courseFavourQueryRequest.getCurrent();
// long size = courseFavourQueryRequest.getPageSize();
// String userId = courseFavourQueryRequest.getUserId();
// List<String> ids = seCourseFavourService.courseList(userId);
// QueryWrapper<Courses> courseQueryWrapper = new QueryWrapper<>();
// courseQueryWrapper.in("id", ids);
// Page<CourseFavourDetailVO> courseFavourDetailVOPage = seCourseFavourService.listCourseFavourByPage(new Page<>(current, size), courseQueryWrapper);
//
// return ResultUtils.success(courseFavourDetailVOPage);
// }
//
//
//}

@ -1,47 +1,47 @@
package com.teaching.backend.controller.favour;
import com.teaching.backend.common.BaseResponse;
import com.teaching.backend.common.ErrorCode;
import com.teaching.backend.exception.BusinessException;
import com.teaching.backend.model.dto.favour.knowFavour.KnowFavourAddRequest;
import com.teaching.backend.service.favour.SeKnowFavourService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
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;
/**
* @Author:youhang
* @Date:2024-05-30-20:22
* @Description:
*/
@RestController
@RequestMapping("/api/know_favour")
@Slf4j
public class SeKnowFavourController {
@Resource
private SeKnowFavourService seKnowFavourService;
/**
* 知识点收藏
*
* @param knowFavourAddRequest
* @return result 执行情况
*/
@PostMapping("/add")
// 加上 HttpServletRequest request 在一个fitter里面进行鉴权操作
public BaseResponse<Boolean> doFavour(@RequestBody KnowFavourAddRequest knowFavourAddRequest) {
if (StringUtils.isAnyBlank(knowFavourAddRequest.getCourseId(), knowFavourAddRequest.getKnowId(), knowFavourAddRequest.getUserId())) {
throw new BusinessException(ErrorCode.PARAMS_ERROR);
}
return seKnowFavourService.doKnowFavour( knowFavourAddRequest.getKnowId(), knowFavourAddRequest.getUserId());
}
}
//package com.teaching.backend.controller.favour;
//
//import com.teaching.backend.common.BaseResponse;
//import com.teaching.backend.common.ErrorCode;
//import com.teaching.backend.exception.BusinessException;
//import com.teaching.backend.model.dto.favour.knowFavour.KnowFavourAddRequest;
//import com.teaching.backend.service.favour.SeKnowFavourService;
//import lombok.extern.slf4j.Slf4j;
//import org.apache.commons.lang3.StringUtils;
//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;
//
///**
// * @Author:youhang
// * @Date:2024-05-30-20:22
// * @Description:
// */
//@RestController
//@RequestMapping("/api/know_favour")
//@Slf4j
//public class SeKnowFavourController {
//
// @Resource
// private SeKnowFavourService seKnowFavourService;
//
//
// /**
// * 知识点收藏
// *
// * @param knowFavourAddRequest
// * @return result 执行情况
// */
// @PostMapping("/add")
// // 加上 HttpServletRequest request 在一个fitter里面进行鉴权操作
// public BaseResponse<Boolean> doFavour(@RequestBody KnowFavourAddRequest knowFavourAddRequest) {
// if (StringUtils.isAnyBlank(knowFavourAddRequest.getCourseId(), knowFavourAddRequest.getKnowId(), knowFavourAddRequest.getUserId())) {
// throw new BusinessException(ErrorCode.PARAMS_ERROR);
// }
// return seKnowFavourService.doKnowFavour( knowFavourAddRequest.getKnowId(), knowFavourAddRequest.getUserId());
//
// }
//
//}

@ -1,69 +1,69 @@
package com.teaching.backend.controller.favour;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.teaching.backend.common.BaseResponse;
import com.teaching.backend.common.ErrorCode;
import com.teaching.backend.common.ResultUtils;
import com.teaching.backend.exception.BusinessException;
import com.teaching.backend.model.dto.favour.resourceFavour.ResourceFavourAddRequest;
import com.teaching.backend.model.dto.favour.resourceFavour.ResourceFavourQueryRequest;
import com.teaching.backend.model.entity.CourseResources;
import com.teaching.backend.service.favour.SeResourceFavourService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
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;
/**
* @Author:youhang
* @Date:2024-05-30-20:22
* @Description:
*/
@RestController
@RequestMapping("/api/resource_favour")
@Slf4j
public class SeResourceFavourController {
@Resource
private SeResourceFavourService seResourceFavourService;
/**
* 资源收藏
*
* @param resourceFavourAddRequest
* @return result 执行情况
*/
@PostMapping("/add")
// 加上 HttpServletRequest request 在一个fitter里面进行鉴权操作
public BaseResponse<Boolean> doFavour(@RequestBody ResourceFavourAddRequest resourceFavourAddRequest) {
if (StringUtils.isAnyBlank(resourceFavourAddRequest.getUserId())) {
throw new BusinessException(ErrorCode.PARAMS_ERROR);
}
return seResourceFavourService.doResourceFavour(resourceFavourAddRequest.getResourceId(), resourceFavourAddRequest.getUserId());
}
/**
* 分页获取资源列表
*
* @return
*/
@PostMapping("/list/page")
public BaseResponse<Page<CourseResources>> listPostByPage(@RequestBody ResourceFavourQueryRequest resourceFavourQueryRequest) {
Integer current = resourceFavourQueryRequest.getCurrent();
Integer size = resourceFavourQueryRequest.getPageSize();
String userId = resourceFavourQueryRequest.getUserId();
Integer type = resourceFavourQueryRequest.getType();
return ResultUtils.success(seResourceFavourService.listCourseFavourByPage(userId,type,current,size));
}
}
//package com.teaching.backend.controller.favour;
//
//import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
//import com.teaching.backend.common.BaseResponse;
//import com.teaching.backend.common.ErrorCode;
//import com.teaching.backend.common.ResultUtils;
//import com.teaching.backend.exception.BusinessException;
//import com.teaching.backend.model.dto.favour.resourceFavour.ResourceFavourAddRequest;
//import com.teaching.backend.model.dto.favour.resourceFavour.ResourceFavourQueryRequest;
//import com.teaching.backend.model.entity.resource.CourseResources;
//import com.teaching.backend.service.favour.SeResourceFavourService;
//import lombok.extern.slf4j.Slf4j;
//import org.apache.commons.lang3.StringUtils;
//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;
//
///**
// * @Author:youhang
// * @Date:2024-05-30-20:22
// * @Description:
// */
//@RestController
//@RequestMapping("/api/resource_favour")
//@Slf4j
//public class SeResourceFavourController {
//
// @Resource
// private SeResourceFavourService seResourceFavourService;
//
//
// /**
// * 资源收藏
// *
// * @param resourceFavourAddRequest
// * @return result 执行情况
// */
// @PostMapping("/add")
// // 加上 HttpServletRequest request 在一个fitter里面进行鉴权操作
// public BaseResponse<Boolean> doFavour(@RequestBody ResourceFavourAddRequest resourceFavourAddRequest) {
// if (StringUtils.isAnyBlank(resourceFavourAddRequest.getUserId())) {
// throw new BusinessException(ErrorCode.PARAMS_ERROR);
// }
//
// return seResourceFavourService.doResourceFavour(resourceFavourAddRequest.getResourceId(), resourceFavourAddRequest.getUserId());
// }
//
//
//
//
// /**
// * 分页获取资源列表
// *
// * @return
// */
// @PostMapping("/list/page")
// public BaseResponse<Page<CourseResources>> listPostByPage(@RequestBody ResourceFavourQueryRequest resourceFavourQueryRequest) {
// Integer current = resourceFavourQueryRequest.getCurrent();
// Integer size = resourceFavourQueryRequest.getPageSize();
// String userId = resourceFavourQueryRequest.getUserId();
// Integer type = resourceFavourQueryRequest.getType();
// return ResultUtils.success(seResourceFavourService.listCourseFavourByPage(userId,type,current,size));
// }
//
//
//}

@ -1,89 +1,89 @@
package com.teaching.backend.controller.records;
import com.baomidou.mybatisplus.extension.conditions.query.QueryChainWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.teaching.backend.common.BaseResponse;
import com.teaching.backend.common.ResultUtils;
import com.teaching.backend.filter.ValidateParams;
import com.teaching.backend.model.entity.records.LearningRecords;
import com.teaching.backend.model.vo.records.LearningRecordsVo;
import com.teaching.backend.service.impl.records.LearningRecordsServiceImpl;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
@RestController
@RequestMapping("/api/learningrecords")
public class LearningRecordsController {
@Autowired
private LearningRecordsServiceImpl learningRecordsService;
/**
* 获取当前登录用户的学习记录
* @param pagenum
* @param pagesize
* @return
*/
@ApiOperation("根据用户id查询学习记录")
@ValidateParams({"userId"})
@GetMapping("/getall")
public BaseResponse<Page> getAll(@RequestParam(value = "pagenum", defaultValue = "1") int pagenum,
@RequestParam(value = "pagesize", defaultValue = "10") int pagesize,
@RequestParam String userId){
//根据用户查询
Page<LearningRecords> page = learningRecordsService.query()
.orderByDesc("time")
.eq("status", "1")
.eq("user_id", userId).page(new Page<>(pagenum, pagesize));
//获取当前页数据
List<LearningRecords> list = page.getRecords();
List<LearningRecordsVo> cs= learningRecordsService.getAll(list);
long total = page.getTotal(); // 总记录数
Page<LearningRecordsVo> pageInfo = new Page<>(pagenum,pagesize,total);
pageInfo.setRecords(cs);
pageInfo.setPages(page.getPages());//设置总页数
return ResultUtils.success(pageInfo);
}
@ApiOperation("查询所有")
@GetMapping("/all")
public BaseResponse<List<LearningRecords>> All(){
// System.out.println("学习记录:"+learningRecordsService.list());
return ResultUtils.success(learningRecordsService.list());
}
//资源类型: 1,课程学习记录,2,知识点学习记录,3课程资源学习记录
/**
* 添加课程记录
* @param learningRecords
* @return
*/
@ApiOperation("添加学习记录")
@ValidateParams({"userId","type","coursesId"})
@PostMapping("/saverecords")
public BaseResponse<String> saveRecords(@RequestBody LearningRecords learningRecords){
// System.out.println(learningRecords);
return ResultUtils.success(learningRecordsService.saveRecords(learningRecords));
}
/**
* 根据id删除
* @param ids
* @return
*/
@DeleteMapping("/delete")
//@ValidateParams({"ids"})
public BaseResponse<String> deleteRecords(@RequestParam List<Long> ids){
return ResultUtils.success(learningRecordsService.delete(ids));
}
}
//package com.teaching.backend.controller.records;
//
//
//import com.baomidou.mybatisplus.extension.conditions.query.QueryChainWrapper;
//import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
//import com.teaching.backend.common.BaseResponse;
//import com.teaching.backend.common.ResultUtils;
//
//import com.teaching.backend.filter.ValidateParams;
//import com.teaching.backend.model.entity.records.LearningRecords;
//import com.teaching.backend.model.vo.records.LearningRecordsVo;
//import com.teaching.backend.service.impl.records.LearningRecordsServiceImpl;
//import io.swagger.annotations.ApiOperation;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.ui.Model;
//import org.springframework.web.bind.annotation.*;
//
//import java.util.ArrayList;
//import java.util.List;
//
//@RestController
//@RequestMapping("/api/learningrecords")
//public class LearningRecordsController {
//
// @Autowired
// private LearningRecordsServiceImpl learningRecordsService;
//
//
// /**
// * 获取当前登录用户的学习记录
// * @param pagenum
// * @param pagesize
// * @return
// */
// @ApiOperation("根据用户id查询学习记录")
// @ValidateParams({"userId"})
// @GetMapping("/getall")
// public BaseResponse<Page> getAll(@RequestParam(value = "pagenum", defaultValue = "1") int pagenum,
// @RequestParam(value = "pagesize", defaultValue = "10") int pagesize,
// @RequestParam String userId){
// //根据用户查询
// Page<LearningRecords> page = learningRecordsService.query()
// .orderByDesc("time")
// .eq("status", "1")
// .eq("user_id", userId).page(new Page<>(pagenum, pagesize));
// //获取当前页数据
// List<LearningRecords> list = page.getRecords();
// List<LearningRecordsVo> cs= learningRecordsService.getAll(list);
//
// long total = page.getTotal(); // 总记录数
// Page<LearningRecordsVo> pageInfo = new Page<>(pagenum,pagesize,total);
// pageInfo.setRecords(cs);
// pageInfo.setPages(page.getPages());//设置总页数
// return ResultUtils.success(pageInfo);
// }
//
// @ApiOperation("查询所有")
// @GetMapping("/all")
// public BaseResponse<List<LearningRecords>> All(){
//// System.out.println("学习记录:"+learningRecordsService.list());
//
// return ResultUtils.success(learningRecordsService.list());
// }
//
// //资源类型: 1,课程学习记录,2,知识点学习记录,3课程资源学习记录
// /**
// * 添加课程记录
// * @param learningRecords
// * @return
// */
// @ApiOperation("添加学习记录")
// @ValidateParams({"userId","type","coursesId"})
// @PostMapping("/saverecords")
// public BaseResponse<String> saveRecords(@RequestBody LearningRecords learningRecords){
//// System.out.println(learningRecords);
// return ResultUtils.success(learningRecordsService.saveRecords(learningRecords));
// }
//
// /**
// * 根据id删除
// * @param ids
// * @return
// */
// @DeleteMapping("/delete")
// //@ValidateParams({"ids"})
// public BaseResponse<String> deleteRecords(@RequestParam List<Long> ids){
// return ResultUtils.success(learningRecordsService.delete(ids));
// }
//}

@ -1,24 +1,16 @@
package com.teaching.backend.controller.resource;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.teaching.backend.common.BaseResponse;
import com.teaching.backend.common.ResultUtils;
import com.teaching.backend.service.resource.CourseResourcesService;
import com.teaching.backend.service.KnowGraph.ResourcesService;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.teaching.backend.service.resource.ResourceService;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.util.UUID;
/**
* ClassName: CommonController
@ -30,77 +22,20 @@ import java.util.UUID;
* @Version 1.0
*/
@RestController
@RequestMapping("/resource")
public class ResourceController {
@Resource
private CourseResourcesService courseResourcesService;
@Value("${aliyun.oss.endpoint}")
private String endpoint;
@Value("${aliyun.oss.accessKeyId}")
private String accessKeyId;
@Value("${aliyun.oss.accessKeySecret}")
private String accessKeySecret;
@Value("${aliyun.oss.bucketName}")
private String bucketName;
private ResourceService resourceService;
//添加知识点
@PostMapping("/upload")
public BaseResponse<String> upload(MultipartFile file) throws IOException {
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
String originalFilename = file.getOriginalFilename();
String suffix = originalFilename.substring(originalFilename.lastIndexOf("."));
Integer Filetype;
String subDir;
if (suffix.equalsIgnoreCase(".jpg") || suffix.equalsIgnoreCase(".jpeg") || suffix.equalsIgnoreCase(".png")) {
subDir = "img/";
Filetype=1 ;
} else if (suffix.equalsIgnoreCase(".mp4") || suffix.equalsIgnoreCase(".avi") || suffix.equalsIgnoreCase(".mov")) {
subDir = "video/";
Filetype=2 ;
} else if (suffix.equalsIgnoreCase(".mp3") || suffix.equalsIgnoreCase(".wav") || suffix.equalsIgnoreCase(".flac")) {
subDir = "video/";
Filetype = 3;
}else {
subDir = "others/";
Filetype=4;
}
String fileName = UUID.randomUUID().toString().replace("-", "") + suffix;
ossClient.putObject(bucketName, subDir + fileName, file.getInputStream());
String objectUrl = "https://" + bucketName + "." + endpoint + "/" + subDir + fileName;
Integer type=Filetype;
courseResourcesService.updateFile(type, fileName, objectUrl); // 更新文件路径为OSS生成的URL
ossClient.shutdown();
System.out.println("文件的地址是:" + objectUrl);
return ResultUtils.success(objectUrl);
public String uploadFile(@RequestParam("file")MultipartFile file) {
System.out.println(file.getOriginalFilename());
return resourceService.upload(file);
}
//文件下载
@GetMapping("/download")
public BaseResponse<String> download(@RequestParam String Id, @RequestParam String path, HttpServletResponse response) throws IOException {
System.out.println("执行了下载的方法");
courseResourcesService.download(Id,path,response,endpoint,accessKeyId,accessKeySecret,bucketName);
return ResultUtils.success("成功");
}
}

@ -1,65 +1,65 @@
package com.teaching.backend.controller.thumb;
import com.teaching.backend.common.BaseResponse;
import com.teaching.backend.common.ErrorCode;
import com.teaching.backend.exception.BusinessException;
import com.teaching.backend.model.dto.thumb.coursethumb.CourseThumbAddRequest;
import com.teaching.backend.model.dto.thumb.coursethumb.CourseThumbAllRequest;
import com.teaching.backend.service.thumb.SeCourseThumbService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
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;
/**
* @Author:youhang
* @Date:2024-05-30-20:22
* @Description:
*/
@RestController
@RequestMapping("/api/course_thumb")
@Slf4j
public class SeCourseThumbController {
@Resource
private SeCourseThumbService seCourseThumbService;
/**
* 点赞/取消点赞
*
* @param courseThumbAddRequest
* @return result 执行情况
*/
@PostMapping("/")
// HttpServletRequest request 在一个fitter里面进行鉴权操作
public BaseResponse<Boolean> doThumb(@RequestBody CourseThumbAddRequest courseThumbAddRequest) {
return seCourseThumbService.doCourseThumb(courseThumbAddRequest.getCourseId(), courseThumbAddRequest.getUserId());
}
/**
* 课程点赞总数
*
* @param courseThumbAddRequest
* @return result 课程点赞总数
*/
@PostMapping("/count")
// HttpServletRequest request 在一个fitter里面进行鉴权操作
public BaseResponse<Long> thumbCount(@RequestBody CourseThumbAddRequest courseThumbAddRequest) {
if (StringUtils.isAnyBlank(courseThumbAddRequest.getCourseId())) {
throw new BusinessException(ErrorCode.PARAMS_ERROR, "请求参数不能为空");
}
return seCourseThumbService.thumbCount(courseThumbAddRequest.getCourseId());
}
}
//package com.teaching.backend.controller.thumb;
//
//import com.teaching.backend.common.BaseResponse;
//import com.teaching.backend.common.ErrorCode;
//import com.teaching.backend.exception.BusinessException;
//import com.teaching.backend.model.dto.thumb.coursethumb.CourseThumbAddRequest;
//import com.teaching.backend.model.dto.thumb.coursethumb.CourseThumbAllRequest;
//import com.teaching.backend.service.thumb.SeCourseThumbService;
//import lombok.extern.slf4j.Slf4j;
//import org.apache.commons.lang3.StringUtils;
//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;
//
///**
// * @Author:youhang
// * @Date:2024-05-30-20:22
// * @Description:
// */
//@RestController
//@RequestMapping("/api/course_thumb")
//@Slf4j
//public class SeCourseThumbController {
//
// @Resource
// private SeCourseThumbService seCourseThumbService;
//
//
// /**
// * 点赞/取消点赞
// *
// * @param courseThumbAddRequest
// * @return result 执行情况
// */
// @PostMapping("/")
// // HttpServletRequest request 在一个fitter里面进行鉴权操作
// public BaseResponse<Boolean> doThumb(@RequestBody CourseThumbAddRequest courseThumbAddRequest) {
//
// return seCourseThumbService.doCourseThumb(courseThumbAddRequest.getCourseId(), courseThumbAddRequest.getUserId());
//
// }
//
//
// /**
// * 课程点赞总数
// *
// * @param courseThumbAddRequest
// * @return result 课程点赞总数
// */
// @PostMapping("/count")
// // HttpServletRequest request 在一个fitter里面进行鉴权操作
// public BaseResponse<Long> thumbCount(@RequestBody CourseThumbAddRequest courseThumbAddRequest) {
// if (StringUtils.isAnyBlank(courseThumbAddRequest.getCourseId())) {
// throw new BusinessException(ErrorCode.PARAMS_ERROR, "请求参数不能为空");
// }
//
// return seCourseThumbService.thumbCount(courseThumbAddRequest.getCourseId());
//
// }
//
//
//}

@ -1,44 +1,44 @@
package com.teaching.backend.controller.thumb;
import com.teaching.backend.common.BaseResponse;
import com.teaching.backend.common.ErrorCode;
import com.teaching.backend.exception.BusinessException;
import com.teaching.backend.model.dto.thumb.knowthumb.KnowThumbAddRequest;
import com.teaching.backend.service.thumb.SeKnowThumbService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
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;
/**
* @Author:youhang
* @Date:2024-05-30-20:22
* @Description:
*/
@RestController
@RequestMapping("/api/know_thumb")
@Slf4j
public class SeKnowThumbController {
@Resource
private SeKnowThumbService seKnowThumbService;
/**
* 点赞
*
* @param knowThumbAddRequest
* @return result 执行情况
*/
@PostMapping("/add")
// 加上 HttpServletRequest request 在一个fitter里面进行鉴权操作
public BaseResponse<Boolean> doThumb(@RequestBody KnowThumbAddRequest knowThumbAddRequest) {
return seKnowThumbService.doKnowThumb(knowThumbAddRequest.getKnowId(), knowThumbAddRequest.getUserId());
}
}
//package com.teaching.backend.controller.thumb;
//
//import com.teaching.backend.common.BaseResponse;
//import com.teaching.backend.common.ErrorCode;
//import com.teaching.backend.exception.BusinessException;
//import com.teaching.backend.model.dto.thumb.knowthumb.KnowThumbAddRequest;
//import com.teaching.backend.service.thumb.SeKnowThumbService;
//import lombok.extern.slf4j.Slf4j;
//import org.apache.commons.lang3.StringUtils;
//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;
//
///**
// * @Author:youhang
// * @Date:2024-05-30-20:22
// * @Description:
// */
//@RestController
//@RequestMapping("/api/know_thumb")
//@Slf4j
//public class SeKnowThumbController {
//
// @Resource
// private SeKnowThumbService seKnowThumbService;
//
//
// /**
// * 点赞
// *
// * @param knowThumbAddRequest
// * @return result 执行情况
// */
// @PostMapping("/add")
// // 加上 HttpServletRequest request 在一个fitter里面进行鉴权操作
// public BaseResponse<Boolean> doThumb(@RequestBody KnowThumbAddRequest knowThumbAddRequest) {
// return seKnowThumbService.doKnowThumb(knowThumbAddRequest.getKnowId(), knowThumbAddRequest.getUserId());
//
// }
//
//}

@ -1,44 +1,44 @@
package com.teaching.backend.controller.thumb;
import com.teaching.backend.common.BaseResponse;
import com.teaching.backend.common.ErrorCode;
import com.teaching.backend.exception.BusinessException;
import com.teaching.backend.model.dto.thumb.resourcethumb.ResourceThumbAddRequest;
import com.teaching.backend.service.thumb.SeResourceThumbService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
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;
/**
* @Author:youhang
* @Date:2024-05-30-20:22
* @Description:
*/
@RestController
@RequestMapping("/api/resource_thumb")
@Slf4j
public class SeResourceThumbController {
@Resource
private SeResourceThumbService seResourceThumbService;
/**
* 点赞
*
* @param resourceThumbAddRequest
* @return result 执行情况
*/
@PostMapping("/add")
// 加上 HttpServletRequest request 在一个fitter里面进行鉴权操作
public BaseResponse<Boolean> doThumb(@RequestBody ResourceThumbAddRequest resourceThumbAddRequest) {
return seResourceThumbService.doResourceThumb( resourceThumbAddRequest.getResourceId(), resourceThumbAddRequest.getUserId());
}
}
//package com.teaching.backend.controller.thumb;
//
//import com.teaching.backend.common.BaseResponse;
//import com.teaching.backend.common.ErrorCode;
//import com.teaching.backend.exception.BusinessException;
//import com.teaching.backend.model.dto.thumb.resourcethumb.ResourceThumbAddRequest;
//import com.teaching.backend.service.thumb.SeResourceThumbService;
//import lombok.extern.slf4j.Slf4j;
//import org.apache.commons.lang3.StringUtils;
//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;
//
///**
// * @Author:youhang
// * @Date:2024-05-30-20:22
// * @Description:
// */
//@RestController
//@RequestMapping("/api/resource_thumb")
//@Slf4j
//public class SeResourceThumbController {
//
// @Resource
// private SeResourceThumbService seResourceThumbService;
//
//
// /**
// * 点赞
// *
// * @param resourceThumbAddRequest
// * @return result 执行情况
// */
// @PostMapping("/add")
// // 加上 HttpServletRequest request 在一个fitter里面进行鉴权操作
// public BaseResponse<Boolean> doThumb(@RequestBody ResourceThumbAddRequest resourceThumbAddRequest) {
// return seResourceThumbService.doResourceThumb( resourceThumbAddRequest.getResourceId(), resourceThumbAddRequest.getUserId());
//
// }
//
//}

@ -9,11 +9,13 @@ package com.teaching.backend.mapper.KnowGraph;
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<Know, Long> {
@ -28,9 +30,13 @@ public interface KnowRepository extends Neo4jRepository<Know, Long> {
List<Know> queryKnowAllKnowById(Long id);
@Query("CREATE (n:Know {name: $name, courseId: $courseId,info:$info,resourceList:$resourceList}) return n")
KnowCourse createKnowCourse(String courseId, String name, String info, List<Integer>resourceList);
@Query("CREATE (n:Know {name: $name, courseId: $courseId,info:$info}) return n")
KnowCourse createKnowCourse(String courseId, String name, String info);
@Query("CREATE (n:Know {name: $name, chapterId: $chapterId,info:$info}) return n")
KnowChapter createKnowChapter(String chapterId, String name, String info);
@Query("MATCH(n:Know)-[r:FatherAndSon*]->(nn:Know) where n.chapterId = $chapterId RETURN nn")
Set<Know> queryByChapterId(String chapterId);
}

@ -0,0 +1,34 @@
package com.teaching.backend.mapper.KnowGraph;
/**
* @Author:youhang
* @Date:2024-06-09-8:59
* @Description:
*/
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<Resources, Long> {
@Query("MATCH (p:Know), (c:Resources) WHERE ID(p) = $id AND ID(c) in $ResourcesIds CREATE (p)-[r:resources]->(c)")
void addResourceRelatedKnow(Long id, List<Long> ResourcesIds);
@Query("MATCH(n:Know)-[r:resources]->(nn:Resources) where ID(nn) = $id RETURN nn")
List<Resources> 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<Resources> queryCourseKnowToResources(Long KnowId);
}

@ -1,11 +1,9 @@
package com.teaching.backend.mapper.resource;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.teaching.backend.model.entity.CourseResources;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import java.util.List;
import com.teaching.backend.model.entity.resource.Resource;
import org.apache.ibatis.annotations.Mapper;
/**
* ClassName: FileTableMapper
@ -17,6 +15,6 @@ import java.util.List;
* @Version 1.0
*/
@Mapper
public interface CourseResourcesMapper extends BaseMapper<CourseResources> {
public interface ResourcesMapper extends BaseMapper<Resource> {
}

@ -1,21 +0,0 @@
package com.teaching.backend.mapper.resource;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.teaching.backend.model.entity.CourseResources;
import com.teaching.backend.model.entity.ResourceRelationship;
import org.apache.ibatis.annotations.Mapper;
import org.apache.tomcat.websocket.BackgroundProcess;
/**
* ClassName: ResourcesRelationshipMapper
* Package: com.teaching.backend.mapper
* Description:
*
* @Author 姜钧瀚
* @Create 2024/6/12 21:07
* @Version 1.0
*/
@Mapper
public interface ResourcesRelationshipMapper extends BaseMapper<ResourceRelationship> {
}

@ -0,0 +1,31 @@
package com.teaching.backend.model.dto.KnowGraph;
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 {
/**
* 知识点名称
*/
private String chapterId;
/**
* 知识点名称
*/
private String name;
/**
* 信息
*/
private String info;
}

@ -27,11 +27,6 @@ public class KnowCourseCreateRequest implements Serializable {
/**
* 知识点所关联的资源
*/
@Property
private List<Integer> resourceList;
}

@ -0,0 +1,22 @@
package com.teaching.backend.model.dto.KnowGraph;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
@Data
public class RelationshipResourceRequest implements Serializable {
/**
* knowid
*/
private Long id;
/**
* 资源id
*/
private List<Long> resourceIds;
}

@ -0,0 +1,22 @@
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 resourceId;
private Integer type;
private String path;
}

@ -0,0 +1,21 @@
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 resourcesId;
private String name;
private Integer type;
private String path;
}

@ -0,0 +1,15 @@
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;
}

@ -35,11 +35,6 @@ public class Know implements Serializable {
private String info;
/**
* 知识点所关联的资源
*/
@Property
private List<Integer> resourceList;
}

@ -0,0 +1,44 @@
package com.teaching.backend.model.entity.KnowGraph;
import lombok.Data;
import org.springframework.data.neo4j.core.schema.GeneratedValue;
import org.springframework.data.neo4j.core.schema.Id;
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
public class KnowChapter implements Serializable {
/**
* id
*/
@Id
@GeneratedValue
private Long id;
/**
* 章节id
*/
private String chapterId;
/**
* 知识点名称
*/
@Property
private String name;
/**
* 信息
*/
@Property
private String info;
}

@ -22,7 +22,7 @@ public class KnowCourse implements Serializable {
private Long id;
/**
* 知识点名称
* 课程id
*/
private String courseId;
@ -40,11 +40,6 @@ public class KnowCourse implements Serializable {
private String info;
/**
* 知识点所关联的资源
*/
@Property
private List<Integer> resourceList;
}

@ -0,0 +1,32 @@
package com.teaching.backend.model.entity.KnowGraph;
import lombok.Data;
import org.springframework.data.neo4j.core.schema.GeneratedValue;
import org.springframework.data.neo4j.core.schema.Id;
import org.springframework.data.neo4j.core.schema.Node;
import org.springframework.data.neo4j.core.schema.Property;
/**
* @Author:youhang
* @Date:2024-07-25-8:36
* @Description:
*/
@Data
@Node
public class Resources {
@Id
@GeneratedValue
private Long id;
@Property
private String resourcesId;
@Property
private String name;
@Property
private Integer type;
@Property
private String path;
}

@ -1,4 +1,4 @@
package com.teaching.backend.model.entity;
package com.teaching.backend.model.entity.resource;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
@ -15,16 +15,13 @@ import java.util.stream.Stream;
* Package: com.teaching.backend.model.entity
* Description:
*
* @Author 姜钧瀚
* @Author youhang
* @Create 2024/6/4 11:48
* @Version 1.0
*/
@Data
@ToString
@NoArgsConstructor
@AllArgsConstructor
@TableName("Resource")
public class CourseResources {
public class Resource {
private static final long serialVersionUID = 1L;
/**

@ -3,6 +3,7 @@ package com.teaching.backend.service.KnowGraph;
import com.teaching.backend.mapper.KnowGraph.KnowRepository;
import com.teaching.backend.model.dto.KnowGraph.*;
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.vo.knowGraph.KnowVO;
@ -45,10 +46,14 @@ public class KnowService {
}
public KnowCourse createCourseKnow(KnowCourseCreateRequest knowCourseCreateRequest ) {
return knowRepository.createKnowCourse(knowCourseCreateRequest.getCourseId(),knowCourseCreateRequest.getName(),knowCourseCreateRequest.getInfo(),knowCourseCreateRequest.getResourceList());
return knowRepository.createKnowCourse(knowCourseCreateRequest.getCourseId(),knowCourseCreateRequest.getName(),knowCourseCreateRequest.getInfo());
}
public KnowChapter createKnowChapter(KnowChapterCreateRequest knowChapterCreateRequest ) {
return knowRepository.createKnowChapter(knowChapterCreateRequest.getChapterId(),knowChapterCreateRequest.getName(),knowChapterCreateRequest.getInfo());
}
public void deleteKnow(Long id) {
knowRepository.deleteById(id);
@ -169,4 +174,9 @@ public class KnowService {
return baseKnowReturn;
}
public Set<Know> queryByChapterId(String chapterId){
Set<Know> knows = knowRepository.queryByChapterId(chapterId);
return knows;
}
}

@ -0,0 +1,85 @@
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.mapper.KnowGraph.ResourcesRepository;
import com.teaching.backend.model.dto.KnowGraph.*;
import com.teaching.backend.model.entity.KnowGraph.Resources;
import org.springframework.beans.BeanUtils;
import org.springframework.data.neo4j.core.Neo4jClient;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import java.io.File;
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";
private ResourcesRepository resourcesRepository;
@Resource
private Neo4jClient neo4jClient;
public ResourcesService(ResourcesRepository resourcesRepository) {
this.resourcesRepository = resourcesRepository;
}
public List<Resources> queryKnowAllResources(Long id) {
return resourcesRepository.queryResourceAllId(id);
}
public Resources createResource(ResourcesAddRequest resourceAddRequest ) {
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.addResourceRelatedKnow(relationshipResourceRequest.getId(),relationshipResourceRequest.getResourceIds());
}
public Set<Resources> queryCourseKnowToResources(Long KnowId){
return resourcesRepository.queryCourseKnowToResources(KnowId);
}
public String 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) {
System.out.println("失败");
}
return userCodeFile.getPath();
}
}

@ -1,28 +1,28 @@
package com.teaching.backend.service.favour;
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.CourseResources;
import com.teaching.backend.model.entity.favour.SeResourceFavour;
/**
* @Author:youhang
* @Date:2024-05-30-20:22
* @Description:
*/
public interface SeResourceFavourService extends IService<SeResourceFavour> {
/**
* 收藏
*
* @param userId
* @return
*/
BaseResponse<Boolean> doResourceFavour( Integer resourceId, String userId);
public Page<CourseResources> listCourseFavourByPage(String userId, Integer type, Integer page, Integer pageSize);
}
//package com.teaching.backend.service.favour;
//
//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.resource.CourseResources;
//import com.teaching.backend.model.entity.favour.SeResourceFavour;
//
///**
// * @Author:youhang
// * @Date:2024-05-30-20:22
// * @Description:
// */
//public interface SeResourceFavourService extends IService<SeResourceFavour> {
//
// /**
// * 收藏
// *
// * @param userId
// * @return
// */
// BaseResponse<Boolean> doResourceFavour( Integer resourceId, String userId);
//
//
//
// public Page<CourseResources> listCourseFavourByPage(String userId, Integer type, Integer page, Integer pageSize);
//
//}

@ -1,192 +0,0 @@
package com.teaching.backend.service.impl;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.model.OSSObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.teaching.backend.mapper.records.LearningRecordsMapper;
import com.teaching.backend.mapper.resource.CourseResourcesMapper;
import com.teaching.backend.model.entity.CourseResources;
import com.teaching.backend.model.entity.ResourceRelationship;
import com.teaching.backend.model.entity.records.LearningRecords;
import com.teaching.backend.service.impl.records.LearningRecordsServiceImpl;
import com.teaching.backend.service.resource.CourseResourcesService;
import com.teaching.backend.service.resource.ResourcesRelationshipService;
import org.apache.commons.io.FileUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Consumer;
/**
* ClassName: FileTableImpl
* Package: com.teaching.backend.service.impl
* Description:
*
* @Author 姜钧瀚
* @Create 2024/6/4 11:50
* @Version 1.0
*/
@Service
public class CourseResourcesServiceImpl extends ServiceImpl<CourseResourcesMapper, CourseResources> implements CourseResourcesService {
// @Resource
// ResourcesRelationshipService resourcesRelationshipService;
@Autowired
private CourseResourcesMapper courseResourcesMapper;
@Autowired
private LearningRecordsMapper learningRecordsMapper;
@Override
public void updateFile(Integer type, String fileName, String filePath) {
CourseResources courseResources = new CourseResources();
courseResources.setName(fileName);
courseResources.setPath(filePath);
courseResources.setType(type);
this.save(courseResources);
String resourceId=courseResources.getId();
System.out.println(resourceId);
ResourceRelationship resourcesRelationship=new ResourceRelationship();
resourcesRelationship.setResourceid(String.valueOf(resourceId));
// resourcesRelationshipService.save(resourcesRelationship);
}
@Override
public void download(String Id, String path, HttpServletResponse response, String endpoint, String accessKeyId, String accessKeySecret, String bucketName) throws IOException {
CourseResources courseResources=getById(Id);
System.out.println(courseResources);
// 创建OSS客户端
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
String key = extractKeyFromFullPath(courseResources.getPath());
OSSObject object = ossClient.getObject(bucketName, key);
String fileName = courseResources.getName();
// 设置保存文件的路径
String savePath = path + "/" + fileName;
// 获取文件的输入流
InputStream inputStream = object.getObjectContent();
// 设置响应头
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment; filename=" + fileName);
// 创建保存文件
File saveFile = new File(savePath);
// 将文件内容复制到保存文件中
FileUtils.copyInputStreamToFile(inputStream, saveFile);
// 关闭输入流和OSS客户端
inputStream.close();
ossClient.shutdown();
}
@Override
public Page<CourseResources> getresourceRecords(Integer type, List<Integer> resourceIdList, int page, int pageSize) {
Page <CourseResources> pageInfo=new Page<>(page,pageSize);
LambdaQueryWrapper<CourseResources>lambdaQueryWrapper=new LambdaQueryWrapper<>();
lambdaQueryWrapper.in(CourseResources::getId,resourceIdList);
lambdaQueryWrapper.eq(CourseResources::getType,type);
return this.page(pageInfo,lambdaQueryWrapper);
}
private String extractKeyFromFullPath(String filePath) {
// 提取存储桶名称
String key = filePath.substring(filePath.indexOf("com") + 4, filePath.indexOf("?"));
return key;
}
@Override
public List<CourseResources> getByType(String type) {
LambdaQueryWrapper<CourseResources> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(CourseResources::getType, type);
List<CourseResources> list = this.list(lambdaQueryWrapper);
return list;
}
@Override
public void removeCourseResources(List<Long> ids) {
//删除资源在记录表里对应的记录
List<LearningRecords> list = new ArrayList<>();
for (Long id: ids) {
LambdaQueryWrapper<LearningRecords> lambdaQueryWrapper = new LambdaQueryWrapper<>();
//System.out.println("id:"+id);
lambdaQueryWrapper.eq(LearningRecords::getCoursesId, id).eq(LearningRecords::getType, 4);
//System.out.println("资源对应的记录:"+learningRecordsMapper.selectList(lambdaQueryWrapper));
list.addAll(learningRecordsMapper.selectList(lambdaQueryWrapper));
//System.out.println("添加完后的集合:"+list);
}
learningRecordsMapper.deleteBatchIds(list);
//System.out.println(list);
//删除课程资源
courseResourcesMapper.deleteBatchIds(ids);
}
@Override
public void saveCourseResource(CourseResources courseResources) {
//将状态设置为1
courseResources.setStatus(1);
//设置文件路径
courseResources.setPath(courseResources.getImg());
//设置默认图片
switch (courseResources.getType()){
case 1 : courseResources.setImg("src\\assets\\icons\\ppt (2).png");//ppt的默认图片
break;
case 2 : courseResources.setImg(courseResources.getImg()); //图片
break;
case 3 : courseResources.setImg("src\\assets\\images\\video.png"); //视频
break;
case 4 : courseResources.setImg("src\\assets\\images\\PDF .png"); //pdf
break;
case 5 : courseResources.setImg("src\\assets\\images\\test.png"); //文件
break;
case 6 : courseResources.setImg("src\\assets\\images\\audio.png"); //音频
break;
default: courseResources.setImg("图片丢失!!"); //暂无默认图片
}
this.save(courseResources);
}
@Override
public void editCourseResource(String resourceId) {
//根据id查数据
}
}

@ -1,84 +0,0 @@
package com.teaching.backend.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.teaching.backend.mapper.resource.CourseResourcesMapper;
import com.teaching.backend.mapper.resource.ResourcesRelationshipMapper;
import com.teaching.backend.model.entity.CourseResources;
import com.teaching.backend.model.entity.ResourceRelationship;
import com.teaching.backend.service.resource.CourseResourcesService;
import com.teaching.backend.service.resource.ResourcesRelationshipService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
/**
* ClassName: ResourcesRelationshipServiceImpl
* Package: com.teaching.backend.service.impl
* Description:
*
* @Author 姜钧瀚
* @Create 2024/6/12 21:05
* @Version 1.0
*/
@Service
public class ResourcesRelationshipServiceImpl extends ServiceImpl<ResourcesRelationshipMapper, ResourceRelationship> implements ResourcesRelationshipService {
@Autowired
CourseResourcesService courseResourcesService;
@Override
public List<CourseResources> getResource(String id) {
LambdaQueryWrapper<ResourceRelationship> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(ResourceRelationship::getCourseid, id);
List<ResourceRelationship> resourceRelationshipList = this.list(lambdaQueryWrapper);
List<String> resourceIds = resourceRelationshipList.stream()
.map(ResourceRelationship::getResourceid)
.collect(Collectors.toList());
if (!resourceIds.isEmpty()) {
LambdaQueryWrapper<CourseResources> courseResourcesQueryWrapper = new LambdaQueryWrapper<>();
courseResourcesQueryWrapper.in(CourseResources::getId, resourceIds);
return courseResourcesService.list(courseResourcesQueryWrapper);
}
return Collections.emptyList();
}
@Override
public List<CourseResources> getResource2(String id, Integer type) {
LambdaQueryWrapper<ResourceRelationship> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(ResourceRelationship::getCourseid, id);
List<ResourceRelationship> resourceRelationshipList = this.list(lambdaQueryWrapper);
List<String> resourceIds = resourceRelationshipList.stream()
.map(ResourceRelationship::getResourceid)
.collect(Collectors.toList());
if (type==null){
if (!resourceIds.isEmpty()) {
LambdaQueryWrapper<CourseResources> courseResourcesQueryWrapper = new LambdaQueryWrapper<>();
courseResourcesQueryWrapper.in(CourseResources::getId, resourceIds);
return courseResourcesService.list(courseResourcesQueryWrapper);
}
}else {
LambdaQueryWrapper<CourseResources> courseResourcesQueryWrapper = new LambdaQueryWrapper<>();
courseResourcesQueryWrapper.in(CourseResources::getId, resourceIds)
.in(CourseResources::getType,type);
return courseResourcesService.list(courseResourcesQueryWrapper);
}
return Collections.emptyList();
}
}

@ -1,165 +1,165 @@
package com.teaching.backend.service.impl.favour;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
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.BaseResponse;
import com.teaching.backend.common.ErrorCode;
import com.teaching.backend.common.ResultUtils;
import com.teaching.backend.exception.BusinessException;
import com.teaching.backend.mapper.courses.CoursesMapper;
import com.teaching.backend.mapper.favour.SeCourseFavourMapper;
import com.teaching.backend.model.entity.courses.Courses;
import com.teaching.backend.model.entity.favour.SeCourseFavour;
import com.teaching.backend.model.entity.favour.SeKnowFavour;
import com.teaching.backend.model.entity.favour.SeResourceFavour;
import com.teaching.backend.model.vo.favour.CourseFavourDetailVO;
import com.teaching.backend.service.courses.ICoursesService;
import com.teaching.backend.service.favour.SeCourseFavourService;
import com.teaching.backend.service.favour.SeKnowFavourService;
import com.teaching.backend.service.favour.SeResourceFavourService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
import java.util.stream.Collectors;
/**
* @Author:youhang
* @Date:2024-05-30-20:23
* @Description:
*/
@Service
public class SeCourseFavourServiceImpl extends ServiceImpl<SeCourseFavourMapper, SeCourseFavour> implements SeCourseFavourService {
@Resource
private SeResourceFavourService seResourceFavourService;
@Resource
SeKnowFavourService seKnowFavourService;
@Autowired
CoursesMapper coursesMapper;
@Autowired
ICoursesService coursesService;
@Override
public BaseResponse<Boolean> doCourseFavour(String courseId, String userId) {
System.out.println("进入点赞" + courseId + userId);
//从数据库中校验是否存在courseid
Courses courses = coursesMapper.selectById(courseId);
boolean result = false;
if(courses == null){
return ResultUtils.error(ErrorCode.NOT_FOUND_ERROR,"课程不存在");
}
//查询数据库记录,该用户是否点赞
SeCourseFavour seCourseFavour = new SeCourseFavour();
seCourseFavour.setCourseId(courseId);
seCourseFavour.setUserId(userId);
QueryWrapper<SeCourseFavour> favourQueryWrapper = new QueryWrapper<>(seCourseFavour);
SeCourseFavour oldSeCourseFavour = this.getOne(favourQueryWrapper);
//已点赞
if (oldSeCourseFavour != null) {
// 取消点赞 删除记录
result = this.remove(favourQueryWrapper);
if (result) {
System.out.println("取消点赞成功");
return ResultUtils.success(result);
} else {
throw new BusinessException(ErrorCode.SYSTEM_ERROR);
}
} else {
// 每个用户串行点赞
// 锁必须要包裹住事务方法
Lock lock = new ReentrantLock();
lock.lock();
try {
result = this.save(seCourseFavour);
} catch (Exception e) {
throw new BusinessException(ErrorCode.OPERATION_ERROR);
} finally {
lock.unlock();
System.out.println("点赞成功");
return ResultUtils.success(result);
}
}
}
@Override
public BaseResponse<Long>favourCount(String courseId) {
//从数据库中校验是否存在courseid
QueryWrapper<SeCourseFavour> favourQueryWrapper = new QueryWrapper<>();
favourQueryWrapper.eq("course_id", courseId);
long result = this.count(favourQueryWrapper);
if (result == 0) {
throw new BusinessException(ErrorCode.SYSTEM_ERROR, "查询参数不存在");
} else {
return ResultUtils.success(result);
}
}
@Override
public BaseResponse<Long> courseCount(String courseId) {
QueryWrapper<SeResourceFavour> ResourceQueryWrapper = new QueryWrapper<>();
ResourceQueryWrapper.eq("course_id", courseId);
long result1 = seResourceFavourService.count(ResourceQueryWrapper);
QueryWrapper<SeKnowFavour> KnowQueryWrapper = new QueryWrapper<>();
KnowQueryWrapper.eq("course_id", courseId);
long result2 = seKnowFavourService.count(KnowQueryWrapper);
long result = result1 + result2;
if (result == 0) {
throw new BusinessException(ErrorCode.SYSTEM_ERROR, "查询参数不存在");
} else {
return ResultUtils.success(result);
}
}
/**
* 某个用户课程列表
*
* @param userId
* @return
*/
@Override
public List<String> courseList(String userId) {
QueryWrapper<SeCourseFavour> courseQueryWrapper = new QueryWrapper<>();
courseQueryWrapper.eq("user_id", userId);
List<String> list = this.list(courseQueryWrapper).stream().map(SeCourseFavour::getCourseId).collect(Collectors.toList());
return list;
}
@Override
public Page<CourseFavourDetailVO> listCourseFavourByPage(Page<Courses> page, Wrapper<Courses> queryWrapper) {
Page<Courses> coursePage = coursesService.page(page, queryWrapper);
Page<CourseFavourDetailVO> courseFavourVOPage = new Page<>(coursePage.getCurrent(), coursePage.getSize(), coursePage.getTotal());
List<Courses> courseFavourList = coursePage.getRecords();
//若数据为空,直接返回
if (CollUtil.isEmpty(courseFavourList)) {
return courseFavourVOPage;
}
//过滤字段
List<CourseFavourDetailVO> courseFavourDetailVOList = new ArrayList<>();
for (int i = 0; i < courseFavourList.size(); i++) {
CourseFavourDetailVO courseFavourDetailVO = new CourseFavourDetailVO();
BeanUtils.copyProperties(courseFavourList.get(i), courseFavourDetailVO);
courseFavourDetailVOList.add(courseFavourDetailVO);
}
courseFavourVOPage.setRecords(courseFavourDetailVOList);
return courseFavourVOPage;
}
}
//package com.teaching.backend.service.impl.favour;
//
//import cn.hutool.core.collection.CollUtil;
//import com.baomidou.mybatisplus.core.conditions.Wrapper;
//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.BaseResponse;
//import com.teaching.backend.common.ErrorCode;
//import com.teaching.backend.common.ResultUtils;
//import com.teaching.backend.exception.BusinessException;
//import com.teaching.backend.mapper.courses.CoursesMapper;
//import com.teaching.backend.mapper.favour.SeCourseFavourMapper;
//import com.teaching.backend.model.entity.courses.Courses;
//import com.teaching.backend.model.entity.favour.SeCourseFavour;
//import com.teaching.backend.model.entity.favour.SeKnowFavour;
//import com.teaching.backend.model.entity.favour.SeResourceFavour;
//import com.teaching.backend.model.vo.favour.CourseFavourDetailVO;
//import com.teaching.backend.service.courses.ICoursesService;
//import com.teaching.backend.service.favour.SeCourseFavourService;
//import com.teaching.backend.service.favour.SeKnowFavourService;
//import com.teaching.backend.service.favour.SeResourceFavourService;
//import org.springframework.beans.BeanUtils;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Service;
//
//import javax.annotation.Resource;
//import java.util.ArrayList;
//import java.util.List;
//import java.util.concurrent.locks.Lock;
//import java.util.concurrent.locks.ReentrantLock;
//import java.util.stream.Collectors;
//
//
///**
// * @Author:youhang
// * @Date:2024-05-30-20:23
// * @Description:
// */
//@Service
//public class SeCourseFavourServiceImpl extends ServiceImpl<SeCourseFavourMapper, SeCourseFavour> implements SeCourseFavourService {
//
//
// @Resource
// private SeResourceFavourService seResourceFavourService;
//
// @Resource
// SeKnowFavourService seKnowFavourService;
//
// @Autowired
// CoursesMapper coursesMapper;
//
// @Autowired
// ICoursesService coursesService;
//
//
//
// @Override
// public BaseResponse<Boolean> doCourseFavour(String courseId, String userId) {
// System.out.println("进入点赞" + courseId + userId);
// //从数据库中校验是否存在courseid
// Courses courses = coursesMapper.selectById(courseId);
// boolean result = false;
// if(courses == null){
// return ResultUtils.error(ErrorCode.NOT_FOUND_ERROR,"课程不存在");
// }
// //查询数据库记录,该用户是否点赞
// SeCourseFavour seCourseFavour = new SeCourseFavour();
// seCourseFavour.setCourseId(courseId);
// seCourseFavour.setUserId(userId);
// QueryWrapper<SeCourseFavour> favourQueryWrapper = new QueryWrapper<>(seCourseFavour);
// SeCourseFavour oldSeCourseFavour = this.getOne(favourQueryWrapper);
// //已点赞
// if (oldSeCourseFavour != null) {
// // 取消点赞 删除记录
// result = this.remove(favourQueryWrapper);
// if (result) {
// System.out.println("取消点赞成功");
// return ResultUtils.success(result);
// } else {
// throw new BusinessException(ErrorCode.SYSTEM_ERROR);
// }
// } else {
// // 每个用户串行点赞
// // 锁必须要包裹住事务方法
// Lock lock = new ReentrantLock();
// lock.lock();
// try {
// result = this.save(seCourseFavour);
// } catch (Exception e) {
// throw new BusinessException(ErrorCode.OPERATION_ERROR);
// } finally {
// lock.unlock();
// System.out.println("点赞成功");
// return ResultUtils.success(result);
// }
// }
// }
//
// @Override
// public BaseResponse<Long>favourCount(String courseId) {
// //从数据库中校验是否存在courseid
// QueryWrapper<SeCourseFavour> favourQueryWrapper = new QueryWrapper<>();
// favourQueryWrapper.eq("course_id", courseId);
// long result = this.count(favourQueryWrapper);
// if (result == 0) {
// throw new BusinessException(ErrorCode.SYSTEM_ERROR, "查询参数不存在");
// } else {
// return ResultUtils.success(result);
// }
// }
//
// @Override
// public BaseResponse<Long> courseCount(String courseId) {
//
// QueryWrapper<SeResourceFavour> ResourceQueryWrapper = new QueryWrapper<>();
// ResourceQueryWrapper.eq("course_id", courseId);
// long result1 = seResourceFavourService.count(ResourceQueryWrapper);
// QueryWrapper<SeKnowFavour> KnowQueryWrapper = new QueryWrapper<>();
// KnowQueryWrapper.eq("course_id", courseId);
// long result2 = seKnowFavourService.count(KnowQueryWrapper);
// long result = result1 + result2;
// if (result == 0) {
// throw new BusinessException(ErrorCode.SYSTEM_ERROR, "查询参数不存在");
// } else {
// return ResultUtils.success(result);
// }
// }
//
// /**
// * 某个用户课程列表
// *
// * @param userId
// * @return
// */
// @Override
// public List<String> courseList(String userId) {
// QueryWrapper<SeCourseFavour> courseQueryWrapper = new QueryWrapper<>();
// courseQueryWrapper.eq("user_id", userId);
// List<String> list = this.list(courseQueryWrapper).stream().map(SeCourseFavour::getCourseId).collect(Collectors.toList());
// return list;
// }
//
// @Override
// public Page<CourseFavourDetailVO> listCourseFavourByPage(Page<Courses> page, Wrapper<Courses> queryWrapper) {
// Page<Courses> coursePage = coursesService.page(page, queryWrapper);
// Page<CourseFavourDetailVO> courseFavourVOPage = new Page<>(coursePage.getCurrent(), coursePage.getSize(), coursePage.getTotal());
// List<Courses> courseFavourList = coursePage.getRecords();
// //若数据为空,直接返回
// if (CollUtil.isEmpty(courseFavourList)) {
// return courseFavourVOPage;
// }
// //过滤字段
// List<CourseFavourDetailVO> courseFavourDetailVOList = new ArrayList<>();
// for (int i = 0; i < courseFavourList.size(); i++) {
// CourseFavourDetailVO courseFavourDetailVO = new CourseFavourDetailVO();
// BeanUtils.copyProperties(courseFavourList.get(i), courseFavourDetailVO);
// courseFavourDetailVOList.add(courseFavourDetailVO);
// }
// courseFavourVOPage.setRecords(courseFavourDetailVOList);
// return courseFavourVOPage;
// }
//
//
//}

@ -1,103 +1,102 @@
package com.teaching.backend.service.impl.favour;
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.BaseResponse;
import com.teaching.backend.common.ErrorCode;
import com.teaching.backend.common.ResultUtils;
import com.teaching.backend.exception.BusinessException;
import com.teaching.backend.mapper.courses.CoursesMapper;
import com.teaching.backend.mapper.favour.SeResourceFavourMapper;
import com.teaching.backend.mapper.resource.CourseResourcesMapper;
import com.teaching.backend.mapper.umsAdmin.UmsUserMapper;
import com.teaching.backend.model.entity.CourseResources;
import com.teaching.backend.model.entity.favour.SeResourceFavour;
import com.teaching.backend.model.entity.umsAdmin.UmsUser;
import com.teaching.backend.service.resource.CourseResourcesService;
import com.teaching.backend.service.favour.SeResourceFavourService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
import java.util.stream.Collectors;
/**
* @Author:youhang
* @Date:2024-05-30-20:23
* @Description:
*/
@Service
public class SeResourceFavourServiceImpl extends ServiceImpl<SeResourceFavourMapper, SeResourceFavour> implements SeResourceFavourService {
@Autowired
CoursesMapper coursesMapper;
@Autowired
private CourseResourcesService courseResourcesService;
@Autowired
private UmsUserMapper umsAdminMapper;
@Autowired
private CourseResourcesMapper courseResourcesMapper;
@Override
public BaseResponse<Boolean> doResourceFavour(Integer resourceId, String userId) {
boolean result = false;
CourseResources courseResources = courseResourcesMapper.selectById(resourceId);
if(courseResources == null){
throw new BusinessException(ErrorCode.PARAMS_RESOURCE_NOTEXISTS);
}
// 先查询数据库记录,该用户是否收藏
SeResourceFavour seResourceFavour = new SeResourceFavour();
seResourceFavour.setResourceId(resourceId);
seResourceFavour.setUserId(userId);
QueryWrapper<SeResourceFavour> thumbQueryWrapper = new QueryWrapper<>(seResourceFavour);
SeResourceFavour oldSeResourceFavour = this.getOne(thumbQueryWrapper);
//已收藏
if (oldSeResourceFavour != null) {
// 取消收藏 删除记录
result = this.remove(thumbQueryWrapper);
if (result) {
System.out.println("取消收藏成功");
return ResultUtils.success(result);
} else {
throw new BusinessException(ErrorCode.SYSTEM_ERROR);
}
} else {
// 每个用户串行收藏
// 锁必须要包裹住事务方法
Lock lock = new ReentrantLock();
lock.lock();
try {
result = this.save(seResourceFavour);
} catch (Exception e) {
throw new BusinessException(ErrorCode.OPERATION_ERROR);
} finally {
lock.unlock();
System.out.println("收藏成功");
return ResultUtils.success(result);
}
}
}
@Override
public Page<CourseResources> listCourseFavourByPage(String userId, Integer type, Integer page, Integer pageSize) {
UmsUser umsAdmin = umsAdminMapper.selectById(userId);
if(umsAdmin == null){
throw new BusinessException(ErrorCode.PARAMS_USER_NOTEXISTS);
}
QueryWrapper<SeResourceFavour> resourceQueryWrapper = new QueryWrapper<>();
resourceQueryWrapper.eq("user_id",userId);
List<Integer> ids = this.list(resourceQueryWrapper).stream().map(SeResourceFavour::getResourceId).collect(Collectors.toList());
return courseResourcesService.getresourceRecords(type,ids,page,pageSize);
}
}
//package com.teaching.backend.service.impl.favour;
//
//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.BaseResponse;
//import com.teaching.backend.common.ErrorCode;
//import com.teaching.backend.common.ResultUtils;
//import com.teaching.backend.exception.BusinessException;
//import com.teaching.backend.mapper.courses.CoursesMapper;
//import com.teaching.backend.mapper.favour.SeResourceFavourMapper;
//import com.teaching.backend.mapper.resource.CourseResourcesMapper;
//import com.teaching.backend.mapper.umsAdmin.UmsUserMapper;
//import com.teaching.backend.model.entity.resource.CourseResources;
//import com.teaching.backend.model.entity.favour.SeResourceFavour;
//import com.teaching.backend.model.entity.umsAdmin.UmsUser;
//import com.teaching.backend.service.favour.SeResourceFavourService;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Service;
//
//import java.util.List;
//import java.util.concurrent.locks.Lock;
//import java.util.concurrent.locks.ReentrantLock;
//import java.util.stream.Collectors;
//
//
///**
// * @Author:youhang
// * @Date:2024-05-30-20:23
// * @Description:
// */
//@Service
//public class SeResourceFavourServiceImpl extends ServiceImpl<SeResourceFavourMapper, SeResourceFavour> implements SeResourceFavourService {
//
//
// @Autowired
// CoursesMapper coursesMapper;
//
// @Autowired
// private CourseResourcesService courseResourcesService;
//
// @Autowired
// private UmsUserMapper umsAdminMapper;
//
// @Autowired
// private CourseResourcesMapper courseResourcesMapper;
//
// @Override
// public BaseResponse<Boolean> doResourceFavour(Integer resourceId, String userId) {
//
// boolean result = false;
//
// CourseResources courseResources = courseResourcesMapper.selectById(resourceId);
// if(courseResources == null){
// throw new BusinessException(ErrorCode.PARAMS_RESOURCE_NOTEXISTS);
// }
//
// // 先查询数据库记录,该用户是否收藏
// SeResourceFavour seResourceFavour = new SeResourceFavour();
// seResourceFavour.setResourceId(resourceId);
// seResourceFavour.setUserId(userId);
// QueryWrapper<SeResourceFavour> thumbQueryWrapper = new QueryWrapper<>(seResourceFavour);
// SeResourceFavour oldSeResourceFavour = this.getOne(thumbQueryWrapper);
// //已收藏
// if (oldSeResourceFavour != null) {
// // 取消收藏 删除记录
// result = this.remove(thumbQueryWrapper);
// if (result) {
// System.out.println("取消收藏成功");
// return ResultUtils.success(result);
// } else {
// throw new BusinessException(ErrorCode.SYSTEM_ERROR);
// }
// } else {
// // 每个用户串行收藏
// // 锁必须要包裹住事务方法
// Lock lock = new ReentrantLock();
// lock.lock();
// try {
// result = this.save(seResourceFavour);
// } catch (Exception e) {
// throw new BusinessException(ErrorCode.OPERATION_ERROR);
// } finally {
// lock.unlock();
// System.out.println("收藏成功");
// return ResultUtils.success(result);
// }
// }
// }
//
// @Override
// public Page<CourseResources> listCourseFavourByPage(String userId, Integer type, Integer page, Integer pageSize) {
// UmsUser umsAdmin = umsAdminMapper.selectById(userId);
// if(umsAdmin == null){
// throw new BusinessException(ErrorCode.PARAMS_USER_NOTEXISTS);
// }
// QueryWrapper<SeResourceFavour> resourceQueryWrapper = new QueryWrapper<>();
// resourceQueryWrapper.eq("user_id",userId);
// List<Integer> ids = this.list(resourceQueryWrapper).stream().map(SeResourceFavour::getResourceId).collect(Collectors.toList());
// return courseResourcesService.getresourceRecords(type,ids,page,pageSize);
// }
//}

@ -1,180 +1,179 @@
package com.teaching.backend.service.impl.records;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
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.records.LearningRecordsMapper;
import com.teaching.backend.model.entity.records.LearningRecords;
import com.teaching.backend.model.vo.records.LearningRecordsVo;
import com.teaching.backend.service.impl.CourseResourcesServiceImpl;
import com.teaching.backend.service.impl.courses.CoursesServiceImpl;
import com.teaching.backend.service.records.LearningRecordsService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@Service
public class LearningRecordsServiceImpl extends ServiceImpl<LearningRecordsMapper, LearningRecords> implements LearningRecordsService {
@Autowired
private CoursesServiceImpl coursesService;
@Autowired
private LearningRecordsMapper learningRecordsMapper;
@Autowired
private CourseResourcesServiceImpl courseResourcesService;
//package com.teaching.backend.service.impl.records;
//
//import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
//import com.baomidou.mybatisplus.core.metadata.IPage;
//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.records.LearningRecordsMapper;
//
//import com.teaching.backend.model.entity.records.LearningRecords;
//import com.teaching.backend.model.vo.records.LearningRecordsVo;
//import com.teaching.backend.service.impl.courses.CoursesServiceImpl;
//import com.teaching.backend.service.records.LearningRecordsService;
//import org.springframework.beans.BeanUtils;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Service;
//import org.springframework.transaction.annotation.Transactional;
//
//import java.text.SimpleDateFormat;
//import java.time.LocalDateTime;
//import java.time.ZoneId;
//import java.util.ArrayList;
//import java.util.Date;
//import java.util.List;
//
//@Service
//public class LearningRecordsServiceImpl extends ServiceImpl<LearningRecordsMapper, LearningRecords> implements LearningRecordsService {
//
// @Autowired
// private ChapterServiceImpl chapterService;
@Override
public IPage<LearningRecords> selectPageList(Page<LearningRecords> page, LearningRecords model) {
return learningRecordsMapper.selectPageList(page,model);
}
@Override
public String delete(List<Long> ids) {
LambdaQueryWrapper<LearningRecords> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.in(LearningRecords::getId, ids);
List<LearningRecords> list = this.list(lambdaQueryWrapper);
//把即将要删除的记录状态调成0
for (LearningRecords learningRecords : list) {
learningRecords.setStatus("0");
}
updateBatchById(list);
// System.out.println(this.updateBatchById(list));
// this.remove(lambdaQueryWrapper);
return "删除成功";
}
@Override
public List<LearningRecordsVo> getAll(List<LearningRecords> list){
List<LearningRecordsVo> records = new ArrayList<>();
//格式化时间
String strDateFormat = "yyyy-MM-dd HH:mm:ss";
SimpleDateFormat sdf = new SimpleDateFormat(strDateFormat);
//如果为空-------------------?????
list.forEach(learningRecords -> {
LearningRecordsVo learningRecordsVo = new LearningRecordsVo();//好像可以拿出去-----------??
BeanUtils.copyProperties(learningRecords,learningRecordsVo);//从多传到少(时间需要转格式)
Date date = Date.from(learningRecords.getTime().atZone(ZoneId.systemDefault()).toInstant());
learningRecordsVo.setTime(sdf.format(date));
// //统计记录表里有多少人查看过这门资源
// private CoursesServiceImpl coursesService;
// @Autowired
// private LearningRecordsMapper learningRecordsMapper;
// @Autowired
// private CourseResourcesServiceImpl courseResourcesService;
//// @Autowired
//// private ChapterServiceImpl chapterService;
//
// @Override
// public IPage<LearningRecords> selectPageList(Page<LearningRecords> page, LearningRecords model) {
// return learningRecordsMapper.selectPageList(page,model);
// }
//
// @Override
// public String delete(List<Long> ids) {
// LambdaQueryWrapper<LearningRecords> lambdaQueryWrapper = new LambdaQueryWrapper<>();
// lambdaQueryWrapper.eq(LearningRecords::getCoursesId, learningRecords.getCoursesId());
// long count = this.count(lambdaQueryWrapper);
learningRecordsVo.setNumber(learningRecords.getNumber());
//把整合后该用户的学习记录添加到List里
records.add(learningRecordsVo);
});
// lambdaQueryWrapper.in(LearningRecords::getId, ids);
// List<LearningRecords> list = this.list(lambdaQueryWrapper);
// //把即将要删除的记录状态调成0
// for (LearningRecords learningRecords : list) {
// //查找该用户的学习记录
// learningRecords.setStatus("0");
// }
// updateBatchById(list);
//// System.out.println(this.updateBatchById(list));
//// this.remove(lambdaQueryWrapper);
// return "删除成功";
// }
//
// @Override
// public List<LearningRecordsVo> getAll(List<LearningRecords> list){
// List<LearningRecordsVo> records = new ArrayList<>();
// //格式化时间
// String strDateFormat = "yyyy-MM-dd HH:mm:ss";
// SimpleDateFormat sdf = new SimpleDateFormat(strDateFormat);
// //如果为空-------------------?????
// list.forEach(learningRecords -> {
// LearningRecordsVo learningRecordsVo = new LearningRecordsVo();//好像可以拿出去-----------??
// BeanUtils.copyProperties(learningRecords,learningRecordsVo);//从多传到少(缺少人数,和资源名称,时间需要转格式)
// //添加时间
// //LocalDateTime转Date
// BeanUtils.copyProperties(learningRecords,learningRecordsVo);//从多传到少(时间需要转格式)
// Date date = Date.from(learningRecords.getTime().atZone(ZoneId.systemDefault()).toInstant());
// learningRecordsVo.setTime(sdf.format(date));
//// //统计记录表里有多少人查看过这门资源
//// LambdaQueryWrapper<LearningRecords> lambdaQueryWrapper = new LambdaQueryWrapper<>();
//// lambdaQueryWrapper.eq(LearningRecords::getCoursesId, learningRecords.getCoursesId());
//// long count = this.count(lambdaQueryWrapper);
// learningRecordsVo.setNumber(learningRecords.getNumber());
// //把整合后该用户的学习记录添加到List里
// records.add(learningRecordsVo);
// });
//// for (LearningRecords learningRecords : list) {
//// //查找该用户的学习记录
//// LearningRecordsVo learningRecordsVo = new LearningRecordsVo();//好像可以拿出去-----------??
//// BeanUtils.copyProperties(learningRecords,learningRecordsVo);//从多传到少(缺少人数,和资源名称,时间需要转格式)
//// //添加时间
//// //LocalDateTime转Date
//// Date date = Date.from(learningRecords.getTime().atZone(ZoneId.systemDefault()).toInstant());
//// learningRecordsVo.setTime(sdf.format(date));
//// LambdaQueryWrapper<LearningRecords> lambdaQueryWrapper = new LambdaQueryWrapper<>();
//// lambdaQueryWrapper.eq(LearningRecords::getCoursesId, learningRecords.getCoursesId());
//// String name;
//// //添加课程名称
//// switch (learningRecords.getType()) {
//// case "4": //如果是资源学习
//// if (courseResourcesService.getById(learningRecords.getCoursesId()) != null){
//// learningRecordsVo.setCoursesName(courseResourcesService.getById(learningRecords.getCoursesId()).getName());
//// }
//// break;
//// case "1": //如果是课程学习记录
//// if (coursesService.getById(learningRecords.getCoursesId()) != null){
//// learningRecordsVo.setCoursesName(coursesService.getById(learningRecords.getCoursesId()).getName());
//// }
//// break;
//// }
//// //添加观看人数
//// //统计记录表里有多少人查看过这门资源
//// long count = this.count(lambdaQueryWrapper);
//// learningRecordsVo.setNumber(count);
//// //把整合后该用户的学习记录添加到List里
//// records.add(learningRecordsVo);
//// }
// return records;
// }
//
// /**
// * 根据用户id和学习资源id来判断记录是否存在
// * @param learningRecords
// * @return
// */
// @Override
// @Transactional
// public String saveRecords(LearningRecords learningRecords) {
// String userId = learningRecords.getUserId();
// String coursesId = learningRecords.getCoursesId();
// //如果userId或者coursesId为空就抛出异常事务回滚----------------------------
// if (userId == null || userId.equals("") || coursesId == null || coursesId.equals("")){
// throw new BusinessException(ErrorCode.PARAMS_ERROR);
// }
//
//// System.out.println("学习记录:"+learningRecords);
// //查找该用户是否观看过该学习资源
// LambdaQueryWrapper<LearningRecords> lambdaQueryWrapper = new LambdaQueryWrapper<>();
// lambdaQueryWrapper.eq(LearningRecords::getCoursesId, learningRecords.getCoursesId());
// String name;
// //添加课程名称
// switch (learningRecords.getType()) {
// case "4": //如果是资源学习
// if (courseResourcesService.getById(learningRecords.getCoursesId()) != null){
// learningRecordsVo.setCoursesName(courseResourcesService.getById(learningRecords.getCoursesId()).getName());
// lambdaQueryWrapper
// .eq(LearningRecords::getUserId, userId)
// .eq(LearningRecords::getCoursesId, coursesId)
// .eq(LearningRecords::getType, learningRecords.getType());
// long count = this.count(lambdaQueryWrapper);
// //System.out.println("数据库:"+count);
// learningRecords.setStatus("1");//将该记录的状态设置为1
// //更新观看时间
// learningRecords.setTime(LocalDateTime.now());
// //设置默认封面
// if (learningRecords.getContent() == null || learningRecords.getContent().equals("")){
// learningRecords.setContent("img/v2-c57eb7863ec4233f503176ca3f90f8d5_1440w.png");
// }
// break;
// case "1": //如果是课程学习记录
// if (coursesService.getById(learningRecords.getCoursesId()) != null){
// learningRecordsVo.setCoursesName(coursesService.getById(learningRecords.getCoursesId()).getName());
// List<LearningRecords> list = query().eq("courses_id", coursesId).eq("type", learningRecords.getType()).list();
// LearningRecords one1 = query().eq("courses_id", coursesId).eq("type", learningRecords.getType()).eq("user_id", userId).one();
// int number = list.size();
// //该用户是否学习过
// if (one1 != null){//学习过观看人数不加
// learningRecords.setNumber(number);
// list.forEach(learningRecords1 -> {
// learningRecords1.setNumber(number);
// });
// } else {//否则观看人数加1
// learningRecords.setNumber(number + 1);
// }
// break;
// updateBatchById(list);
// if (count == 0){//如果没有就新增并记录学习方式是打开还是下载
// //根据传上来的type设置
//// learningRecords.setType(learningRecords.getType());
// this.save(learningRecords);
// return "添加成功";
// }else {//有就修改记录,更新学习方式
// LearningRecords one = this.getOne(lambdaQueryWrapper);
// System.out.println(one);
// learningRecords.setId(one.getId());//找到该条记录的id并赋值给本次观看记录
// if ( one.getOpen() != null && one.getOpen().equals("1")){
// learningRecords.setOpen(one.getOpen());
// }
// if (one.getDownload() != null && one.getDownload().equals("1")){
// learningRecords.setDownload(one.getDownload());
// }
// this.updateById(learningRecords);
// return "修改成功";
// }
// //添加观看人数
// //统计记录表里有多少人查看过这门资源
// long count = this.count(lambdaQueryWrapper);
// learningRecordsVo.setNumber(count);
// //把整合后该用户的学习记录添加到List里
// records.add(learningRecordsVo);
// }
return records;
}
/**
* 根据用户id和学习资源id来判断记录是否存在
* @param learningRecords
* @return
*/
@Override
@Transactional
public String saveRecords(LearningRecords learningRecords) {
String userId = learningRecords.getUserId();
String coursesId = learningRecords.getCoursesId();
//如果userId或者coursesId为空就抛出异常事务回滚----------------------------
if (userId == null || userId.equals("") || coursesId == null || coursesId.equals("")){
throw new BusinessException(ErrorCode.PARAMS_ERROR);
}
// System.out.println("学习记录:"+learningRecords);
//查找该用户是否观看过该学习资源
LambdaQueryWrapper<LearningRecords> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper
.eq(LearningRecords::getUserId, userId)
.eq(LearningRecords::getCoursesId, coursesId)
.eq(LearningRecords::getType, learningRecords.getType());
long count = this.count(lambdaQueryWrapper);
//System.out.println("数据库:"+count);
learningRecords.setStatus("1");//将该记录的状态设置为1
//更新观看时间
learningRecords.setTime(LocalDateTime.now());
//设置默认封面
if (learningRecords.getContent() == null || learningRecords.getContent().equals("")){
learningRecords.setContent("img/v2-c57eb7863ec4233f503176ca3f90f8d5_1440w.png");
}
List<LearningRecords> list = query().eq("courses_id", coursesId).eq("type", learningRecords.getType()).list();
LearningRecords one1 = query().eq("courses_id", coursesId).eq("type", learningRecords.getType()).eq("user_id", userId).one();
int number = list.size();
//该用户是否学习过
if (one1 != null){//学习过观看人数不加
learningRecords.setNumber(number);
list.forEach(learningRecords1 -> {
learningRecords1.setNumber(number);
});
} else {//否则观看人数加1
learningRecords.setNumber(number + 1);
}
updateBatchById(list);
if (count == 0){//如果没有就新增并记录学习方式是打开还是下载
//根据传上来的type设置
// learningRecords.setType(learningRecords.getType());
this.save(learningRecords);
return "添加成功";
}else {//有就修改记录,更新学习方式
LearningRecords one = this.getOne(lambdaQueryWrapper);
System.out.println(one);
learningRecords.setId(one.getId());//找到该条记录的id并赋值给本次观看记录
if ( one.getOpen() != null && one.getOpen().equals("1")){
learningRecords.setOpen(one.getOpen());
}
if (one.getDownload() != null && one.getDownload().equals("1")){
learningRecords.setDownload(one.getDownload());
}
this.updateById(learningRecords);
return "修改成功";
}
}
}
//
//
//}

@ -0,0 +1,45 @@
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 com.teaching.backend.service.resource.ResourceService;
import org.springframework.beans.BeanUtils;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.util.UUID;
/**
* @Author:youhang
* @Date:2024-07-26-13:58
* @Description:
*/
public class ResourceServiceImpl implements ResourceService {
private static final String GLOBAL_CODE_DIR_NAME = "tempFile";
private ResourcesRepository resourcesRepository;
private ResourcesMapper resourcesMapper;
@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);
}
// 把用户的代码隔离存放
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("失败");
}
return userCodeFile.getPath();
}
}

@ -1,108 +1,108 @@
package com.teaching.backend.service.impl.thumb;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.teaching.backend.common.BaseResponse;
import com.teaching.backend.common.ErrorCode;
import com.teaching.backend.common.ResultUtils;
import com.teaching.backend.exception.BusinessException;
import com.teaching.backend.mapper.courses.CoursesMapper;
import com.teaching.backend.mapper.thumb.SeCourseThumbMapper;
import com.teaching.backend.model.entity.courses.Courses;
import com.teaching.backend.model.entity.thumb.SeCourseThumb;
import com.teaching.backend.model.entity.thumb.SeKnowThumb;
import com.teaching.backend.model.entity.thumb.SeResourceThumb;
import com.teaching.backend.service.thumb.SeCourseThumbService;
import com.teaching.backend.service.thumb.SeKnowThumbService;
import com.teaching.backend.service.thumb.SeResourceThumbService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
/**
* @Author:youhang
* @Date:2024-05-30-20:23
* @Description:
*/
@Service
public class SeCourseThumbServiceImpl extends ServiceImpl<SeCourseThumbMapper, SeCourseThumb> implements SeCourseThumbService {
@Resource
private SeResourceThumbService seResourceThumbService;
@Resource
SeKnowThumbService seKnowThumbService;
@Autowired
CoursesMapper coursesMapper;
@Override
public BaseResponse<Boolean> doCourseThumb(String courseId, String userId) {
//从数据库中校验是否存在courseid
Courses courses = coursesMapper.selectById(courseId);
boolean result = false;
if(courses == null){
return ResultUtils.error(ErrorCode.PARAMS_COURSE_NOTEXISTS);
}
// 先查询数据库记录,该用户是否点赞
SeCourseThumb seCourseThumb = new SeCourseThumb();
seCourseThumb.setCourseId(courseId);
seCourseThumb.setUserId(userId);
QueryWrapper<SeCourseThumb> thumbQueryWrapper = new QueryWrapper<>(seCourseThumb);
SeCourseThumb oldSeCourseThumb = this.getOne(thumbQueryWrapper);
//已点赞
if (oldSeCourseThumb != null) {
// 取消点赞 删除记录
result = this.remove(thumbQueryWrapper);
if (result) {
System.out.println("取消点赞成功");
return ResultUtils.success(result);
} else {
throw new BusinessException(ErrorCode.SYSTEM_ERROR);
}
} else {
// 每个用户串行点赞
// 锁必须要包裹住事务方法
Lock lock = new ReentrantLock();
lock.lock();
try {
result = this.save(seCourseThumb);
} catch (Exception e) {
throw new BusinessException(ErrorCode.OPERATION_ERROR);
} finally {
lock.unlock();
System.out.println("点赞成功");
return ResultUtils.success(result);
}
}
}
@Override
public BaseResponse<Long> thumbCount(String courseId) {
//从数据库中校验是否存在courseid
Courses courses = coursesMapper.selectById(courseId);
if(courses == null){
return ResultUtils.error(ErrorCode.PARAMS_COURSE_NOTEXISTS);
}
QueryWrapper<SeCourseThumb> thumbQueryWrapper = new QueryWrapper<>();
thumbQueryWrapper.eq("course_id", courseId);
long count = this.count(thumbQueryWrapper);
if (count == 0) {
throw new BusinessException(ErrorCode.SYSTEM_ERROR, "查询参数不存在");
} else {
return ResultUtils.success(count);
}
}
}
//package com.teaching.backend.service.impl.thumb;
//
//import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
//import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
//import com.teaching.backend.common.BaseResponse;
//import com.teaching.backend.common.ErrorCode;
//import com.teaching.backend.common.ResultUtils;
//import com.teaching.backend.exception.BusinessException;
//import com.teaching.backend.mapper.courses.CoursesMapper;
//import com.teaching.backend.mapper.thumb.SeCourseThumbMapper;
//import com.teaching.backend.model.entity.courses.Courses;
//import com.teaching.backend.model.entity.thumb.SeCourseThumb;
//import com.teaching.backend.model.entity.thumb.SeKnowThumb;
//import com.teaching.backend.model.entity.thumb.SeResourceThumb;
//import com.teaching.backend.service.thumb.SeCourseThumbService;
//import com.teaching.backend.service.thumb.SeKnowThumbService;
//import com.teaching.backend.service.thumb.SeResourceThumbService;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Service;
//
//import javax.annotation.Resource;
//import java.util.concurrent.locks.Lock;
//import java.util.concurrent.locks.ReentrantLock;
//
//
///**
// * @Author:youhang
// * @Date:2024-05-30-20:23
// * @Description:
// */
//@Service
//public class SeCourseThumbServiceImpl extends ServiceImpl<SeCourseThumbMapper, SeCourseThumb> implements SeCourseThumbService {
//
//
// @Resource
// private SeResourceThumbService seResourceThumbService;
//
// @Resource
// SeKnowThumbService seKnowThumbService;
//
//
// @Autowired
// CoursesMapper coursesMapper;
//
// @Override
// public BaseResponse<Boolean> doCourseThumb(String courseId, String userId) {
//
// //从数据库中校验是否存在courseid
// Courses courses = coursesMapper.selectById(courseId);
// boolean result = false;
// if(courses == null){
// return ResultUtils.error(ErrorCode.PARAMS_COURSE_NOTEXISTS);
// }
//
// // 先查询数据库记录,该用户是否点赞
// SeCourseThumb seCourseThumb = new SeCourseThumb();
// seCourseThumb.setCourseId(courseId);
// seCourseThumb.setUserId(userId);
// QueryWrapper<SeCourseThumb> thumbQueryWrapper = new QueryWrapper<>(seCourseThumb);
// SeCourseThumb oldSeCourseThumb = this.getOne(thumbQueryWrapper);
// //已点赞
// if (oldSeCourseThumb != null) {
// // 取消点赞 删除记录
// result = this.remove(thumbQueryWrapper);
// if (result) {
// System.out.println("取消点赞成功");
// return ResultUtils.success(result);
// } else {
// throw new BusinessException(ErrorCode.SYSTEM_ERROR);
// }
// } else {
// // 每个用户串行点赞
// // 锁必须要包裹住事务方法
// Lock lock = new ReentrantLock();
// lock.lock();
// try {
// result = this.save(seCourseThumb);
// } catch (Exception e) {
// throw new BusinessException(ErrorCode.OPERATION_ERROR);
// } finally {
// lock.unlock();
// System.out.println("点赞成功");
// return ResultUtils.success(result);
// }
// }
// }
//
// @Override
// public BaseResponse<Long> thumbCount(String courseId) {
//
// //从数据库中校验是否存在courseid
// Courses courses = coursesMapper.selectById(courseId);
// if(courses == null){
// return ResultUtils.error(ErrorCode.PARAMS_COURSE_NOTEXISTS);
// }
//
// QueryWrapper<SeCourseThumb> thumbQueryWrapper = new QueryWrapper<>();
// thumbQueryWrapper.eq("course_id", courseId);
// long count = this.count(thumbQueryWrapper);
// if (count == 0) {
// throw new BusinessException(ErrorCode.SYSTEM_ERROR, "查询参数不存在");
// } else {
// return ResultUtils.success(count);
// }
// }
//
//
//}

@ -1,68 +1,68 @@
package com.teaching.backend.service.impl.thumb;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.teaching.backend.common.BaseResponse;
import com.teaching.backend.common.ErrorCode;
import com.teaching.backend.common.ResultUtils;
import com.teaching.backend.exception.BusinessException;
import com.teaching.backend.mapper.courses.CoursesMapper;
import com.teaching.backend.mapper.thumb.SeKnowThumbMapper;
import com.teaching.backend.model.entity.courses.Courses;
import com.teaching.backend.model.entity.thumb.SeKnowThumb;
import com.teaching.backend.service.thumb.SeKnowThumbService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
/**
* @Author:youhang
* @Date:2024-05-30-20:23
* @Description:
*/
@Service
public class SeKnowThumbServiceImpl extends ServiceImpl<SeKnowThumbMapper, SeKnowThumb> implements SeKnowThumbService {
@Autowired
CoursesMapper coursesMapper;
@Override
public BaseResponse<Boolean> doKnowThumb(Integer knowId, String userId) {
boolean result = false;
// todo 查询知识点
// 先查询数据库记录,该用户是否点赞
SeKnowThumb seKnowThumb = new SeKnowThumb();
seKnowThumb.setKnowId(knowId);
seKnowThumb.setUserId(userId);
QueryWrapper<SeKnowThumb> thumbQueryWrapper = new QueryWrapper<>(seKnowThumb);
SeKnowThumb oldSeKnowThumb = this.getOne(thumbQueryWrapper);
//已点赞
if (oldSeKnowThumb != null) {
// 取消点赞 删除记录
result = this.remove(thumbQueryWrapper);
if (result) {
System.out.println("取消点赞成功");
return ResultUtils.success(result);
} else {
throw new BusinessException(ErrorCode.SYSTEM_ERROR);
}
} else {
// 每个用户串行点赞
// 锁必须要包裹住事务方法
Lock lock = new ReentrantLock();
lock.lock();
try {
result = this.save(seKnowThumb);
} catch (Exception e) {
throw new BusinessException(ErrorCode.OPERATION_ERROR);
} finally {
lock.unlock();
System.out.println("点赞成功");
return ResultUtils.success(result);
}
}
}
}
//package com.teaching.backend.service.impl.thumb;
//
//import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
//import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
//import com.teaching.backend.common.BaseResponse;
//import com.teaching.backend.common.ErrorCode;
//import com.teaching.backend.common.ResultUtils;
//import com.teaching.backend.exception.BusinessException;
//import com.teaching.backend.mapper.courses.CoursesMapper;
//import com.teaching.backend.mapper.thumb.SeKnowThumbMapper;
//import com.teaching.backend.model.entity.courses.Courses;
//import com.teaching.backend.model.entity.thumb.SeKnowThumb;
//import com.teaching.backend.service.thumb.SeKnowThumbService;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Service;
//
//import java.util.concurrent.locks.Lock;
//import java.util.concurrent.locks.ReentrantLock;
//
//
///**
// * @Author:youhang
// * @Date:2024-05-30-20:23
// * @Description:
// */
//@Service
//public class SeKnowThumbServiceImpl extends ServiceImpl<SeKnowThumbMapper, SeKnowThumb> implements SeKnowThumbService {
// @Autowired
// CoursesMapper coursesMapper;
// @Override
// public BaseResponse<Boolean> doKnowThumb(Integer knowId, String userId) {
// boolean result = false;
// // todo 查询知识点
// // 先查询数据库记录,该用户是否点赞
// SeKnowThumb seKnowThumb = new SeKnowThumb();
// seKnowThumb.setKnowId(knowId);
// seKnowThumb.setUserId(userId);
// QueryWrapper<SeKnowThumb> thumbQueryWrapper = new QueryWrapper<>(seKnowThumb);
// SeKnowThumb oldSeKnowThumb = this.getOne(thumbQueryWrapper);
// //已点赞
// if (oldSeKnowThumb != null) {
// // 取消点赞 删除记录
// result = this.remove(thumbQueryWrapper);
// if (result) {
// System.out.println("取消点赞成功");
// return ResultUtils.success(result);
// } else {
// throw new BusinessException(ErrorCode.SYSTEM_ERROR);
// }
// } else {
// // 每个用户串行点赞
// // 锁必须要包裹住事务方法
// Lock lock = new ReentrantLock();
// lock.lock();
// try {
// result = this.save(seKnowThumb);
// } catch (Exception e) {
// throw new BusinessException(ErrorCode.OPERATION_ERROR);
// } finally {
// lock.unlock();
// System.out.println("点赞成功");
// return ResultUtils.success(result);
// }
// }
// }
//
//
//}

@ -1,82 +1,80 @@
package com.teaching.backend.service.impl.thumb;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.teaching.backend.common.BaseResponse;
import com.teaching.backend.common.ErrorCode;
import com.teaching.backend.common.ResultUtils;
import com.teaching.backend.exception.BusinessException;
import com.teaching.backend.mapper.courses.CoursesMapper;
import com.teaching.backend.mapper.resource.CourseResourcesMapper;
import com.teaching.backend.mapper.thumb.SeResourceThumbMapper;
import com.teaching.backend.model.entity.CourseResources;
import com.teaching.backend.model.entity.courses.Courses;
import com.teaching.backend.model.entity.thumb.SeResourceThumb;
import com.teaching.backend.service.thumb.SeResourceThumbService;
import io.swagger.models.auth.In;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
/**
* @Author:youhang
* @Date:2024-05-30-20:23
* @Description:
*/
@Service
public class SeResourceThumbServiceImpl extends ServiceImpl<SeResourceThumbMapper, SeResourceThumb> implements SeResourceThumbService {
@Autowired
CoursesMapper coursesMapper;
@Autowired
private CourseResourcesMapper courseResourcesMapper;
@Override
public BaseResponse<Boolean> doResourceThumb(Integer resourceId, String userId) {
boolean result = false;
//查询是否有资源
CourseResources courseResources = courseResourcesMapper.selectById(resourceId);
if(courseResources == null){
throw new BusinessException(ErrorCode.PARAMS_RESOURCE_NOTEXISTS);
}
// 先查询数据库记录,该用户是否点赞
SeResourceThumb seResourceThumb = new SeResourceThumb();
seResourceThumb.setResourceId(resourceId);
seResourceThumb.setUserId(userId);
QueryWrapper<SeResourceThumb> thumbQueryWrapper = new QueryWrapper<>(seResourceThumb);
SeResourceThumb oldSeResourceThumb = this.getOne(thumbQueryWrapper);
//已点赞
if (oldSeResourceThumb != null) {
// 取消点赞 删除记录
result = this.remove(thumbQueryWrapper);
if (result) {
System.out.println("取消点赞成功");
return ResultUtils.success(result);
} else {
throw new BusinessException(ErrorCode.SYSTEM_ERROR);
}
} else {
// 每个用户串行点赞
// 锁必须要包裹住事务方法
Lock lock = new ReentrantLock();
lock.lock();
try {
result = this.save(seResourceThumb);
} catch (Exception e) {
throw new BusinessException(ErrorCode.OPERATION_ERROR);
} finally {
lock.unlock();
System.out.println("点赞成功");
return ResultUtils.success(result);
}
}
}
}
//package com.teaching.backend.service.impl.thumb;
//
//import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
//import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
//import com.teaching.backend.common.BaseResponse;
//import com.teaching.backend.common.ErrorCode;
//import com.teaching.backend.common.ResultUtils;
//import com.teaching.backend.exception.BusinessException;
//import com.teaching.backend.mapper.courses.CoursesMapper;
//import com.teaching.backend.mapper.resource.CourseResourcesMapper;
//import com.teaching.backend.mapper.thumb.SeResourceThumbMapper;
//import com.teaching.backend.model.entity.resource.CourseResources;
//import com.teaching.backend.model.entity.thumb.SeResourceThumb;
//import com.teaching.backend.service.thumb.SeResourceThumbService;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Service;
//
//import java.util.concurrent.locks.Lock;
//import java.util.concurrent.locks.ReentrantLock;
//
//
///**
// * @Author:youhang
// * @Date:2024-05-30-20:23
// * @Description:
// */
//@Service
//public class SeResourceThumbServiceImpl extends ServiceImpl<SeResourceThumbMapper, SeResourceThumb> implements SeResourceThumbService {
//
// @Autowired
// CoursesMapper coursesMapper;
//
//
// @Autowired
// private Reso courseResourcesMapper;
//
// @Override
// public BaseResponse<Boolean> doResourceThumb(Integer resourceId, String userId) {
// boolean result = false;
// //查询是否有资源
// CourseResources courseResources = courseResourcesMapper.selectById(resourceId);
// if(courseResources == null){
// throw new BusinessException(ErrorCode.PARAMS_RESOURCE_NOTEXISTS);
// }
// // 先查询数据库记录,该用户是否点赞
// SeResourceThumb seResourceThumb = new SeResourceThumb();
// seResourceThumb.setResourceId(resourceId);
// seResourceThumb.setUserId(userId);
// QueryWrapper<SeResourceThumb> thumbQueryWrapper = new QueryWrapper<>(seResourceThumb);
// SeResourceThumb oldSeResourceThumb = this.getOne(thumbQueryWrapper);
//
// //已点赞
// if (oldSeResourceThumb != null) {
// // 取消点赞 删除记录
// result = this.remove(thumbQueryWrapper);
// if (result) {
// System.out.println("取消点赞成功");
// return ResultUtils.success(result);
// } else {
// throw new BusinessException(ErrorCode.SYSTEM_ERROR);
// }
// } else {
// // 每个用户串行点赞
// // 锁必须要包裹住事务方法
// Lock lock = new ReentrantLock();
// lock.lock();
// try {
// result = this.save(seResourceThumb);
// } catch (Exception e) {
// throw new BusinessException(ErrorCode.OPERATION_ERROR);
// } finally {
// lock.unlock();
// System.out.println("点赞成功");
// return ResultUtils.success(result);
// }
// }
// }
//
//
//}

@ -1,35 +0,0 @@
package com.teaching.backend.service.resource;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.teaching.backend.model.entity.CourseResources;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
/**
* ClassName: FileTableService
* Package: com.teaching.backend.service
* Description:
*
* @Author 姜钧瀚
* @Create 2024/6/4 11:49
* @Version 1.0
*/
public interface CourseResourcesService extends IService<CourseResources> {
void updateFile(Integer type, String fileName, String filePath);
void download(String id, String path, HttpServletResponse response, String endpoint, String accessKeyId, String accessKeySecret, String bucketName) throws IOException;
Page<CourseResources> getresourceRecords(Integer type, List<Integer> resourceIdList, int page, int pageSize);
public List<CourseResources> getByType(String type);
public void removeCourseResources(List<Long> ids);
public void saveCourseResource(CourseResources courseResources);
public void editCourseResource(String resourceId);
}

@ -0,0 +1,17 @@
package com.teaching.backend.service.resource;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
/**
* @Author:youhang
* @Date:2024-07-26-13:55
* @Description:
*/
@Service
public interface ResourceService {
public String upload(MultipartFile file);
}

@ -1,25 +0,0 @@
package com.teaching.backend.service.resource;
import com.baomidou.mybatisplus.extension.service.IService;
import com.teaching.backend.model.entity.CourseResources;
import com.teaching.backend.model.entity.ResourceRelationship;
import java.util.List;
/**
* ClassName: ResourcesRelationshipService
* Package: com.teaching.backend.service
* Description:
*
* @Author 姜钧瀚
* @Create 2024/6/12 21:04
* @Version 1.0
*/
public interface ResourcesRelationshipService extends IService<ResourceRelationship> {
List<CourseResources> getResource(String id);
List<CourseResources> getResource2(String id, Integer type);
}

@ -1,33 +1,33 @@
package com.teaching.backend.service.thumb;
import com.baomidou.mybatisplus.extension.service.IService;
import com.teaching.backend.common.BaseResponse;
import com.teaching.backend.model.entity.thumb.SeCourseThumb;
/**
* @Author:youhang
* @Date:2024-05-30-20:22
* @Description:
*/
public interface SeCourseThumbService extends IService<SeCourseThumb> {
/**
* 点赞
*
* @param courseId
* @param userId
* @return
*/
BaseResponse<Boolean> doCourseThumb(String courseId, String userId);
/**
* 点赞总数
*
* @param courseId
* @return
*/
BaseResponse<Long> thumbCount(String courseId);
}
//package com.teaching.backend.service.thumb;
//
//import com.baomidou.mybatisplus.extension.service.IService;
//import com.teaching.backend.common.BaseResponse;
//import com.teaching.backend.model.entity.thumb.SeCourseThumb;
//
///**
// * @Author:youhang
// * @Date:2024-05-30-20:22
// * @Description:
// */
//public interface SeCourseThumbService extends IService<SeCourseThumb> {
//
// /**
// * 点赞
// *
// * @param courseId
// * @param userId
// * @return
// */
// BaseResponse<Boolean> doCourseThumb(String courseId, String userId);
//
//
// /**
// * 点赞总数
// *
// * @param courseId
// * @return
// */
// BaseResponse<Long> thumbCount(String courseId);
//
//
//}

@ -1,23 +1,23 @@
package com.teaching.backend.service.thumb;
import com.baomidou.mybatisplus.extension.service.IService;
import com.teaching.backend.common.BaseResponse;
import com.teaching.backend.model.entity.thumb.SeKnowThumb;
import io.swagger.models.auth.In;
/**
* @Author:youhang
* @Date:2024-05-30-20:22
* @Description:
*/
public interface SeKnowThumbService extends IService<SeKnowThumb> {
/**
* 点赞
*
* @return
*/
BaseResponse<Boolean> doKnowThumb(Integer knowId, String userId);
}
//package com.teaching.backend.service.thumb;
//
//import com.baomidou.mybatisplus.extension.service.IService;
//import com.teaching.backend.common.BaseResponse;
//import com.teaching.backend.model.entity.thumb.SeKnowThumb;
//import io.swagger.models.auth.In;
//
///**
// * @Author:youhang
// * @Date:2024-05-30-20:22
// * @Description:
// */
//public interface SeKnowThumbService extends IService<SeKnowThumb> {
//
// /**
// * 点赞
// *
//
// * @return
// */
// BaseResponse<Boolean> doKnowThumb(Integer knowId, String userId);
//
//}

@ -1,22 +1,22 @@
package com.teaching.backend.service.thumb;
import com.baomidou.mybatisplus.extension.service.IService;
import com.teaching.backend.common.BaseResponse;
import com.teaching.backend.model.entity.thumb.SeResourceThumb;
/**
* @Author:youhang
* @Date:2024-05-30-20:22
* @Description:
*/
public interface SeResourceThumbService extends IService<SeResourceThumb> {
/**
* 点赞
*
* @param userId
* @return
*/
BaseResponse<Boolean> doResourceThumb(Integer resourceId, String userId);
}
//package com.teaching.backend.service.thumb;
//
//import com.baomidou.mybatisplus.extension.service.IService;
//import com.teaching.backend.common.BaseResponse;
//import com.teaching.backend.model.entity.thumb.SeResourceThumb;
//
///**
// * @Author:youhang
// * @Date:2024-05-30-20:22
// * @Description:
// */
//public interface SeResourceThumbService extends IService<SeResourceThumb> {
//
// /**
// * 点赞
// *
// * @param userId
// * @return
// */
// BaseResponse<Boolean> doResourceThumb(Integer resourceId, String userId);
//
//}

@ -5,6 +5,7 @@ spring:
name: teaching-backend
servlet:
multipart:
enabled: true
max-file-size: 10MB
max-request-size: 10MB
neo4j:

Loading…
Cancel
Save