知识图谱 关联章节

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. 7
      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. 351
      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> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId> <artifactId>spring-boot-starter-web</artifactId>
</dependency> </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 的引入--> <!--neo4j 的引入-->
<dependency> <dependency>
<groupId>org.neo4j.driver</groupId> <groupId>org.neo4j.driver</groupId>

@ -4,9 +4,11 @@ import cn.hutool.core.lang.generator.SnowflakeGenerator;
import org.mybatis.spring.annotation.MapperScan; import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.web.servlet.MultipartAutoConfiguration;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
@SpringBootApplication //@SpringBootApplication
@SpringBootApplication(exclude = {MultipartAutoConfiguration.class})
@MapperScan("com.teaching.backend.mapper") @MapperScan("com.teaching.backend.mapper")
public class TeachingBackendApplication { 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; //package com.teaching.backend.controller.FavourInformation;
//
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; //import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.teaching.backend.common.BaseResponse; //import com.teaching.backend.common.BaseResponse;
import com.teaching.backend.common.PageRequest; //import com.teaching.backend.common.PageRequest;
import com.teaching.backend.common.ResultUtils; //import com.teaching.backend.common.ResultUtils;
import com.teaching.backend.model.entity.CourseResources; //import com.teaching.backend.model.entity.resource.CourseResources;
import com.teaching.backend.service.resource.CourseResourcesService; //import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.*; //
//import javax.annotation.Resource;
import javax.annotation.Resource; //import java.util.List;
import java.util.List; //
///**
/** // * ClassName: Get
* ClassName: Get // * Package: com.teaching.backend.controller.FavourInformation
* Package: com.teaching.backend.controller.FavourInformation // * Description:
* Description: // *
* // * @Author 姜钧瀚
* @Author 姜钧瀚 // * @Create 2024/6/13 18:15
* @Create 2024/6/13 18:15 // * @Version 1.0
* @Version 1.0 // */
*/ //@RestController
@RestController //@RequestMapping ("/api")
@RequestMapping ("/api") //public class FavourInformationController{
public class FavourInformationController{ //
//
// @Resource
@Resource // CourseResourcesService courseResourcesService;
CourseResourcesService courseResourcesService; //
//
//
// @GetMapping("/Favour/get")
@GetMapping("/Favour/get") // public BaseResponse<Page<CourseResources>> getInformation2(@RequestParam List<Integer> resourceIdList , @RequestParam Integer type, PageRequest pageRequest) {
public BaseResponse<Page<CourseResources>> getInformation2(@RequestParam List<Integer> resourceIdList , @RequestParam Integer type, PageRequest pageRequest) { //
// int page=pageRequest.getCurrent();
int page=pageRequest.getCurrent(); // int pageSize=pageRequest.getPageSize();
int pageSize=pageRequest.getPageSize(); //
// Page<CourseResources> resourcesPage=courseResourcesService.getresourceRecords(type,resourceIdList,page,pageSize);
Page<CourseResources> resourcesPage=courseResourcesService.getresourceRecords(type,resourceIdList,page,pageSize); //
// return ResultUtils.success(resourcesPage);
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.dto.KnowGraph.*;
import com.teaching.backend.model.entity.KnowGraph.Know; 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.KnowCourse;
import com.teaching.backend.service.KnowGraph.KnowService; import com.teaching.backend.service.KnowGraph.KnowService;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.List; import java.util.List;
import java.util.Set;
@RestController @RestController
@ -44,6 +46,13 @@ public class KnowController {
public KnowCourse createCourseKnow(@RequestBody KnowCourseCreateRequest knowCourseCreateRequest) { public KnowCourse createCourseKnow(@RequestBody KnowCourseCreateRequest knowCourseCreateRequest) {
return knowService.createCourseKnow(knowCourseCreateRequest); return knowService.createCourseKnow(knowCourseCreateRequest);
} }
//添加知识点 - 章节
@PostMapping("/addKnowChapter")
public KnowChapter createKnowChapter(@RequestBody KnowChapterCreateRequest knowChapterCreateRequest) {
return knowService.createKnowChapter(knowChapterCreateRequest);
}
//修改知识点 //修改知识点
@PostMapping ("/update") @PostMapping ("/update")
@ -82,4 +91,9 @@ public class KnowController {
return ResultUtils.success(baseKnowReturn); 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; //package com.teaching.backend.controller.courseResource;
//
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; //import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.teaching.backend.common.BaseResponse; //import com.teaching.backend.common.BaseResponse;
import com.teaching.backend.common.ResultUtils; //import com.teaching.backend.common.ResultUtils;
//
import com.teaching.backend.model.entity.CourseResources; //import com.teaching.backend.model.entity.resource.CourseResources;
import com.teaching.backend.service.impl.CourseResourcesServiceImpl; //import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiOperation; //import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Autowired; //import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.*; //
//import java.util.ArrayList;
import java.util.ArrayList; //import java.util.List;
import java.util.List; //
//@RestController
@RestController //@RequestMapping("/api/courses")
@RequestMapping("/api/courses") //public class CourseResourceController {
public class CourseResourceController { // @Autowired
@Autowired // private CourseResourcesServiceImpl courseResourcesService;
private CourseResourcesServiceImpl courseResourcesService; // @ApiOperation("查询全部课程资源记录")
@ApiOperation("查询全部课程资源记录") // @GetMapping("/all")
@GetMapping("/all") // public BaseResponse<List<CourseResources>> All(){
public BaseResponse<List<CourseResources>> All(){ // System.out.println("学习记录:"+courseResourcesService.list());
System.out.println("学习记录:"+courseResourcesService.list()); // return ResultUtils.success(courseResourcesService.list());
return ResultUtils.success(courseResourcesService.list()); // }
} //
// @ApiOperation("按type查询课程资源")
@ApiOperation("按type查询课程资源") // @GetMapping("/getall")
@GetMapping("/getall") // public BaseResponse<Page> getAll(@RequestParam(value = "pagenum", defaultValue = "1") int pagenum,
public BaseResponse<Page> getAll(@RequestParam(value = "pagenum", defaultValue = "1") int pagenum, // @RequestParam(value = "pagesize", defaultValue = "10") int pagesize,
@RequestParam(value = "pagesize", defaultValue = "10") int pagesize, // String type) {
String type) { //
// List<CourseResources> cs = courseResourcesService.getByType(type);
List<CourseResources> cs = courseResourcesService.getByType(type); // List<CourseResources> pageCs = new ArrayList<>();
List<CourseResources> pageCs = new ArrayList<>(); // //当前页面
//当前页面 // for(int i = (pagenum - 1) * pagesize; i < cs.size() && i < (pagenum) * pagesize; i++){
for(int i = (pagenum - 1) * pagesize; i < cs.size() && i < (pagenum) * pagesize; i++){ // pageCs.add(cs.get(i));
pageCs.add(cs.get(i)); // }
} // long total = cs.size(); // 总记录数
long total = cs.size(); // 总记录数 // Page<CourseResources> pageInfo = new Page<>(pagenum,pagesize,total);
Page<CourseResources> pageInfo = new Page<>(pagenum,pagesize,total); // pageInfo.setRecords(pageCs);
pageInfo.setRecords(pageCs); // pageInfo.setPages((int)(Math.ceil((double) total / pagesize)));//设置总页数
pageInfo.setPages((int)(Math.ceil((double) total / pagesize)));//设置总页数 // return ResultUtils.success(pageInfo);
return ResultUtils.success(pageInfo); // }
} //
// /**
/** // * 根据ids删除
* 根据ids删除 // * @param ids
* @param ids // * @return
* @return // */
*/ // @ApiOperation("根据ids删除")
@ApiOperation("根据ids删除") // @DeleteMapping("/delete")
@DeleteMapping("/delete") // public BaseResponse<String> deleteRecords(@RequestParam List<Long> ids){
public BaseResponse<String> deleteRecords(@RequestParam List<Long> ids){ // courseResourcesService.removeCourseResources(ids);
courseResourcesService.removeCourseResources(ids); //// courseResourcesService.removeBatchByIds(ids);
// courseResourcesService.removeBatchByIds(ids); // return ResultUtils.success("删除成功!!");
return ResultUtils.success("删除成功!!"); // }
} //
// /**
/** // * 新增
* 新增 // * @param courseResources
* @param courseResources // * @return
* @return // */
*/ // @ApiOperation("新增课程资源")
@ApiOperation("新增课程资源") // @PostMapping("/save")
@PostMapping("/save") // public BaseResponse<String> saveCourseResource(@RequestBody CourseResources courseResources){
public BaseResponse<String> saveCourseResource(@RequestBody CourseResources courseResources){ // System.out.println(courseResources);
System.out.println(courseResources); // courseResourcesService.saveCourseResource(courseResources);
courseResourcesService.saveCourseResource(courseResources); // return ResultUtils.success("添加成功!");
return ResultUtils.success("添加成功!"); // }
} //
// /**
/** // * 编辑
* 编辑 // * @param resources
* @param resources // * @return
* @return // */
*/ // @ApiOperation("编辑课程资源")
@ApiOperation("编辑课程资源") // @PutMapping("/edit")
@PutMapping("/edit") // public BaseResponse<String> editCourseResource(@RequestBody CourseResources resources){
public BaseResponse<String> editCourseResource(@RequestBody CourseResources resources){ // System.out.println(resources);
System.out.println(resources); // courseResourcesService.updateById(resources);
courseResourcesService.updateById(resources); // return ResultUtils.success("编辑成功");
return ResultUtils.success("编辑成功"); // }
} //
// /**
/** // * 根据id查询课程资源
* 根据id查询课程资源 // * @param resourceId
* @param resourceId // * @return
* @return // */
*/ // @ApiOperation("根据id查询课程资源")
@ApiOperation("根据id查询课程资源") // @PostMapping("/getone")
@PostMapping("/getone") // public BaseResponse<CourseResources> getOne(@RequestParam String resourceId){
public BaseResponse<CourseResources> getOne(@RequestParam String resourceId){ // System.out.println(resourceId);
System.out.println(resourceId); // return ResultUtils.success(courseResourcesService.getById(resourceId));
return ResultUtils.success(courseResourcesService.getById(resourceId)); // }
} //}
}

@ -1,91 +1,86 @@
package com.teaching.backend.controller.courses; //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.BaseResponse; //import com.teaching.backend.common.ErrorCode;
import com.teaching.backend.common.ErrorCode; //import com.teaching.backend.common.ResultUtils;
import com.teaching.backend.common.ResultUtils; //import com.teaching.backend.exception.BusinessException;
import com.teaching.backend.exception.BusinessException; //import com.teaching.backend.filter.ValidateParams;
import com.teaching.backend.filter.ValidateParams; //import com.teaching.backend.model.dto.courses.CoursesDTO;
import com.teaching.backend.mapper.courses.CoursesMapper; //import com.teaching.backend.model.entity.resource.CourseResources;
import com.teaching.backend.model.dto.courses.CoursesDTO; //import com.teaching.backend.model.entity.courses.Courses;
import com.teaching.backend.model.entity.CourseResources; //import com.teaching.backend.service.courses.ICoursesService;
import com.teaching.backend.model.entity.ResourceRelationship; //import io.swagger.annotations.ApiOperation;
import com.teaching.backend.model.entity.courses.Courses; //import org.springframework.beans.BeanUtils;
import com.teaching.backend.model.vo.courses.CoursesVO; //import org.springframework.beans.factory.annotation.Autowired;
import com.teaching.backend.service.courses.ICoursesService; //import org.springframework.web.bind.annotation.*;
import com.teaching.backend.service.resource.ResourcesRelationshipService; //
import io.swagger.annotations.ApiOperation; //import java.util.HashMap;
import org.springframework.beans.BeanUtils; //import java.util.List;
import org.springframework.beans.factory.annotation.Autowired; //import java.util.Map;
import org.springframework.web.bind.annotation.*; //
///**
import java.util.HashMap; // * ClassName: CoursesController2
import java.util.List; // * Package: com.teaching.backend.controller.courses
import java.util.Map; // * Description:
// *
/** // * @Author 姜钧瀚
* ClassName: CoursesController2 // * @Create 2024/7/22 17:52
* Package: com.teaching.backend.controller.courses // * @Version 1.0
* Description: // */
* //@RestController
* @Author 姜钧瀚 //@RequestMapping("/api/coursesteacher2")
* @Create 2024/7/22 17:52 //public class CoursesController2 {
* @Version 1.0 // @Autowired
*/ // ICoursesService coursesService;
@RestController // @Autowired
@RequestMapping("/api/coursesteacher2") // ResourcesRelationshipService resourcesRelationshipService;
public class CoursesController2 { //
@Autowired // @ApiOperation("网站首页2")
ICoursesService coursesService; // @GetMapping("/index2")
@Autowired // public BaseResponse<Map<String,Object>> getData(@RequestParam("page") int page, @RequestParam("pageSize") int pageSize) {
ResourcesRelationshipService resourcesRelationshipService; // Map<String, Object> result = coursesService.getPagePageSize2(page, pageSize);
//
@ApiOperation("网站首页2") // // 将结果放入新的Map对象中返回
@GetMapping("/index2") // Map<String, Object> objectMap = new HashMap<>();
public BaseResponse<Map<String,Object>> getData(@RequestParam("page") int page, @RequestParam("pageSize") int pageSize) { // objectMap.put("content", result.get("courses"));
Map<String, Object> result = coursesService.getPagePageSize2(page, pageSize); // objectMap.put("totalcount", result.get("totalcount"));
// objectMap.put("totalPages", result.get("totalPages"));
// 将结果放入新的Map对象中返回 // objectMap.put("currentPage", result.get("currentPage"));
Map<String, Object> objectMap = new HashMap<>(); //
objectMap.put("content", result.get("courses")); // return ResultUtils.success(objectMap);
objectMap.put("totalcount", result.get("totalcount")); // }
objectMap.put("totalPages", result.get("totalPages")); //
objectMap.put("currentPage", result.get("currentPage")); //
// @ApiOperation("根据id查询课程")
return ResultUtils.success(objectMap); // @ValidateParams({"id"})
} // @GetMapping("/{id}")
// public BaseResponse<CoursesDTO> getByIdCourse(@PathVariable String id){
// if(id==null){
@ApiOperation("根据id查询课程") // throw new BusinessException(ErrorCode.PARAMS_ERROR,"课程id为空");
@ValidateParams({"id"}) // }
@GetMapping("/{id}") // Courses course = coursesService.getById(id);
public BaseResponse<CoursesDTO> getByIdCourse(@PathVariable String id){ // CoursesDTO coursesDTO = new CoursesDTO();
if(id==null){ // BeanUtils.copyProperties(course,coursesDTO);
throw new BusinessException(ErrorCode.PARAMS_ERROR,"课程id为空"); // return ResultUtils.success(coursesDTO);
} // }
Courses course = coursesService.getById(id); //
CoursesDTO coursesDTO = new CoursesDTO(); // @ApiOperation("点击详情课程根据id查询对应课程的资源")
BeanUtils.copyProperties(course,coursesDTO); // @GetMapping("/resource/{id}")
return ResultUtils.success(coursesDTO); // public BaseResponse<List<CourseResources>> getResource(@PathVariable String id) {
} // List<CourseResources> relatedResources = resourcesRelationshipService.getResource(id);
// return ResultUtils.success(relatedResources);
@ApiOperation("点击详情课程根据id查询对应课程的资源") // }
@GetMapping("/resource/{id}") //
public BaseResponse<List<CourseResources>> getResource(@PathVariable String id) { // @ApiOperation("点击详情课程根据id和type查询对应课程的资源")
List<CourseResources> relatedResources = resourcesRelationshipService.getResource(id); // @GetMapping("/resource/list")
return ResultUtils.success(relatedResources); // public BaseResponse<List<CourseResources>> getResource2(@RequestParam String id,@RequestParam Integer type) {
} // List<CourseResources> relatedResources = resourcesRelationshipService.getResource2(id,type);
// 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; //package com.teaching.backend.controller.favour;
//
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; //import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; //import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.teaching.backend.common.BaseResponse; //import com.teaching.backend.common.BaseResponse;
import com.teaching.backend.common.ErrorCode; //import com.teaching.backend.common.ErrorCode;
import com.teaching.backend.common.ResultUtils; //import com.teaching.backend.common.ResultUtils;
import com.teaching.backend.exception.BusinessException; //import com.teaching.backend.exception.BusinessException;
import com.teaching.backend.model.dto.favour.courseFavour.CourseFavourAddRequest; //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.CourseFavourAllRequest;
import com.teaching.backend.model.dto.favour.courseFavour.CourseFavourQueryRequest; //import com.teaching.backend.model.dto.favour.courseFavour.CourseFavourQueryRequest;
import com.teaching.backend.model.entity.courses.Courses; //import com.teaching.backend.model.entity.courses.Courses;
import com.teaching.backend.model.vo.favour.CourseFavourDetailVO; //import com.teaching.backend.model.vo.favour.CourseFavourDetailVO;
import com.teaching.backend.service.favour.SeCourseFavourService; //import com.teaching.backend.service.favour.SeCourseFavourService;
import lombok.extern.slf4j.Slf4j; //import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; //import org.apache.commons.lang3.StringUtils;
import org.springframework.web.bind.annotation.PostMapping; //import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; //import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; //import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; //import org.springframework.web.bind.annotation.RestController;
//
import javax.annotation.Resource; //import javax.annotation.Resource;
import java.util.List; //import java.util.List;
//
/** ///**
* @Author:youhang // * @Author:youhang
* @Date:2024-05-30-20:22 // * @Date:2024-05-30-20:22
* @Description: // * @Description:
*/ // */
@RestController //@RestController
@RequestMapping("/api/course_favour") //@RequestMapping("/api/course_favour")
@Slf4j //@Slf4j
public class SeCourseFavourController { //public class SeCourseFavourController {
//
@Resource // @Resource
private SeCourseFavourService seCourseFavourService; // private SeCourseFavourService seCourseFavourService;
//
//
//
/** // /**
* 收藏/取消收藏 // * 收藏/取消收藏
* // *
* @param courseFavourAddRequest // * @param courseFavourAddRequest
* @return result 执行情况 // * @return result 执行情况
*/ // */
@PostMapping("/add") // @PostMapping("/add")
// 加上 HttpServletRequest request 在一个fitter里面进行鉴权操作 // // 加上 HttpServletRequest request 在一个fitter里面进行鉴权操作
public BaseResponse<Boolean> doFavour(@RequestBody CourseFavourAddRequest courseFavourAddRequest) { // public BaseResponse<Boolean> doFavour(@RequestBody CourseFavourAddRequest courseFavourAddRequest) {
System.out.println(courseFavourAddRequest); // System.out.println(courseFavourAddRequest);
//判断字段是否为空 // //判断字段是否为空
if (StringUtils.isAnyBlank(courseFavourAddRequest.getCourseId(), courseFavourAddRequest.getUserId())) { // if (StringUtils.isAnyBlank(courseFavourAddRequest.getCourseId(), courseFavourAddRequest.getUserId())) {
throw new BusinessException(ErrorCode.PARAMS_ERROR); // throw new BusinessException(ErrorCode.PARAMS_ERROR);
} // }
//
return seCourseFavourService.doCourseFavour(courseFavourAddRequest.getCourseId(), courseFavourAddRequest.getUserId()); // return seCourseFavourService.doCourseFavour(courseFavourAddRequest.getCourseId(), courseFavourAddRequest.getUserId());
//
} // }
//
//
/** // /**
* 课程点赞总数 // * 课程点赞总数
* // *
* @param courseFavourAddRequest // * @param courseFavourAddRequest
* @return result 课程点赞总数 // * @return result 课程点赞总数
*/ // */
@PostMapping("/count") // @PostMapping("/count")
// HttpServletRequest request 在一个fitter里面进行鉴权操作 // // HttpServletRequest request 在一个fitter里面进行鉴权操作
public BaseResponse<Long> favourCount(@RequestBody CourseFavourAddRequest courseFavourAddRequest) { // public BaseResponse<Long> favourCount(@RequestBody CourseFavourAddRequest courseFavourAddRequest) {
if (StringUtils.isAnyBlank(courseFavourAddRequest.getCourseId())) { // if (StringUtils.isAnyBlank(courseFavourAddRequest.getCourseId())) {
throw new BusinessException(ErrorCode.PARAMS_ERROR, "请求参数不能为空"); // throw new BusinessException(ErrorCode.PARAMS_ERROR, "请求参数不能为空");
} // }
return seCourseFavourService.favourCount(courseFavourAddRequest.getCourseId()); // return seCourseFavourService.favourCount(courseFavourAddRequest.getCourseId());
} // }
//
/** // /**
* 课程下资源和知识点点赞总数 // * 课程下资源和知识点点赞总数
* // *
* @param courseFavourAllRequest // * @param courseFavourAllRequest
* @return result 课程下资源和知识点点赞总数 // * @return result 课程下资源和知识点点赞总数
*/ // */
@PostMapping("/countAll") // @PostMapping("/countAll")
// todo 后期加上 HttpServletRequest request 在一个fitter里面进行鉴权操作 // // todo 后期加上 HttpServletRequest request 在一个fitter里面进行鉴权操作
public BaseResponse<Long> courseCount(@RequestBody CourseFavourAllRequest courseFavourAllRequest) { // public BaseResponse<Long> courseCount(@RequestBody CourseFavourAllRequest courseFavourAllRequest) {
if (StringUtils.isAnyBlank(courseFavourAllRequest.getCourseId())) { // if (StringUtils.isAnyBlank(courseFavourAllRequest.getCourseId())) {
throw new BusinessException(ErrorCode.PARAMS_ERROR, "请求参数不能为空"); // throw new BusinessException(ErrorCode.PARAMS_ERROR, "请求参数不能为空");
} // }
// todo 从数据库中校验是否存在courseid // // todo 从数据库中校验是否存在courseid
//
return seCourseFavourService.courseCount(courseFavourAllRequest.getCourseId()); // return seCourseFavourService.courseCount(courseFavourAllRequest.getCourseId());
} // }
//
//
//
/** // /**
* 分页获取课程列表 // * 分页获取课程列表
* // *
* @return // * @return
*/ // */
@PostMapping("/list/page") // @PostMapping("/list/page")
public BaseResponse<Page<CourseFavourDetailVO>> listPostByPage(@RequestBody CourseFavourQueryRequest courseFavourQueryRequest) { // public BaseResponse<Page<CourseFavourDetailVO>> listPostByPage(@RequestBody CourseFavourQueryRequest courseFavourQueryRequest) {
System.out.println(courseFavourQueryRequest); // System.out.println(courseFavourQueryRequest);
long current = courseFavourQueryRequest.getCurrent(); // long current = courseFavourQueryRequest.getCurrent();
long size = courseFavourQueryRequest.getPageSize(); // long size = courseFavourQueryRequest.getPageSize();
String userId = courseFavourQueryRequest.getUserId(); // String userId = courseFavourQueryRequest.getUserId();
List<String> ids = seCourseFavourService.courseList(userId); // List<String> ids = seCourseFavourService.courseList(userId);
QueryWrapper<Courses> courseQueryWrapper = new QueryWrapper<>(); // QueryWrapper<Courses> courseQueryWrapper = new QueryWrapper<>();
courseQueryWrapper.in("id", ids); // courseQueryWrapper.in("id", ids);
Page<CourseFavourDetailVO> courseFavourDetailVOPage = seCourseFavourService.listCourseFavourByPage(new Page<>(current, size), courseQueryWrapper); // Page<CourseFavourDetailVO> courseFavourDetailVOPage = seCourseFavourService.listCourseFavourByPage(new Page<>(current, size), courseQueryWrapper);
//
return ResultUtils.success(courseFavourDetailVOPage); // return ResultUtils.success(courseFavourDetailVOPage);
} // }
//
//
} //}

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

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

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

@ -1,24 +1,16 @@
package com.teaching.backend.controller.resource; 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.BaseResponse;
import com.teaching.backend.common.ResultUtils; 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 com.teaching.backend.service.resource.ResourceService;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.*; import java.io.*;
import java.util.UUID;
/** /**
* ClassName: CommonController * ClassName: CommonController
@ -30,77 +22,20 @@ import java.util.UUID;
* @Version 1.0 * @Version 1.0
*/ */
@RestController @RestController
@RequestMapping("/resource")
public class ResourceController { public class ResourceController {
@Resource private ResourceService resourceService;
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;
//添加知识点
@PostMapping("/upload") @PostMapping("/upload")
public BaseResponse<String> upload(MultipartFile file) throws IOException { public String uploadFile(@RequestParam("file")MultipartFile file) {
System.out.println(file.getOriginalFilename());
return resourceService.upload(file);
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);
} }
//文件下载
@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; //package com.teaching.backend.controller.thumb;
//
import com.teaching.backend.common.BaseResponse; //import com.teaching.backend.common.BaseResponse;
import com.teaching.backend.common.ErrorCode; //import com.teaching.backend.common.ErrorCode;
import com.teaching.backend.exception.BusinessException; //import com.teaching.backend.exception.BusinessException;
import com.teaching.backend.model.dto.thumb.coursethumb.CourseThumbAddRequest; //import com.teaching.backend.model.dto.thumb.coursethumb.CourseThumbAddRequest;
import com.teaching.backend.model.dto.thumb.coursethumb.CourseThumbAllRequest; //import com.teaching.backend.model.dto.thumb.coursethumb.CourseThumbAllRequest;
import com.teaching.backend.service.thumb.SeCourseThumbService; //import com.teaching.backend.service.thumb.SeCourseThumbService;
import lombok.extern.slf4j.Slf4j; //import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; //import org.apache.commons.lang3.StringUtils;
import org.springframework.web.bind.annotation.PostMapping; //import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; //import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; //import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; //import org.springframework.web.bind.annotation.RestController;
//
import javax.annotation.Resource; //import javax.annotation.Resource;
//
/** ///**
* @Author:youhang // * @Author:youhang
* @Date:2024-05-30-20:22 // * @Date:2024-05-30-20:22
* @Description: // * @Description:
*/ // */
@RestController //@RestController
@RequestMapping("/api/course_thumb") //@RequestMapping("/api/course_thumb")
@Slf4j //@Slf4j
public class SeCourseThumbController { //public class SeCourseThumbController {
//
@Resource // @Resource
private SeCourseThumbService seCourseThumbService; // private SeCourseThumbService seCourseThumbService;
//
//
/** // /**
* 点赞/取消点赞 // * 点赞/取消点赞
* // *
* @param courseThumbAddRequest // * @param courseThumbAddRequest
* @return result 执行情况 // * @return result 执行情况
*/ // */
@PostMapping("/") // @PostMapping("/")
// HttpServletRequest request 在一个fitter里面进行鉴权操作 // // HttpServletRequest request 在一个fitter里面进行鉴权操作
public BaseResponse<Boolean> doThumb(@RequestBody CourseThumbAddRequest courseThumbAddRequest) { // public BaseResponse<Boolean> doThumb(@RequestBody CourseThumbAddRequest courseThumbAddRequest) {
//
return seCourseThumbService.doCourseThumb(courseThumbAddRequest.getCourseId(), courseThumbAddRequest.getUserId()); // return seCourseThumbService.doCourseThumb(courseThumbAddRequest.getCourseId(), courseThumbAddRequest.getUserId());
//
} // }
//
//
/** // /**
* 课程点赞总数 // * 课程点赞总数
* // *
* @param courseThumbAddRequest // * @param courseThumbAddRequest
* @return result 课程点赞总数 // * @return result 课程点赞总数
*/ // */
@PostMapping("/count") // @PostMapping("/count")
// HttpServletRequest request 在一个fitter里面进行鉴权操作 // // HttpServletRequest request 在一个fitter里面进行鉴权操作
public BaseResponse<Long> thumbCount(@RequestBody CourseThumbAddRequest courseThumbAddRequest) { // public BaseResponse<Long> thumbCount(@RequestBody CourseThumbAddRequest courseThumbAddRequest) {
if (StringUtils.isAnyBlank(courseThumbAddRequest.getCourseId())) { // if (StringUtils.isAnyBlank(courseThumbAddRequest.getCourseId())) {
throw new BusinessException(ErrorCode.PARAMS_ERROR, "请求参数不能为空"); // throw new BusinessException(ErrorCode.PARAMS_ERROR, "请求参数不能为空");
} // }
//
return seCourseThumbService.thumbCount(courseThumbAddRequest.getCourseId()); // return seCourseThumbService.thumbCount(courseThumbAddRequest.getCourseId());
//
} // }
//
//
} //}

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

@ -1,44 +1,44 @@
package com.teaching.backend.controller.thumb; //package com.teaching.backend.controller.thumb;
//
import com.teaching.backend.common.BaseResponse; //import com.teaching.backend.common.BaseResponse;
import com.teaching.backend.common.ErrorCode; //import com.teaching.backend.common.ErrorCode;
import com.teaching.backend.exception.BusinessException; //import com.teaching.backend.exception.BusinessException;
import com.teaching.backend.model.dto.thumb.resourcethumb.ResourceThumbAddRequest; //import com.teaching.backend.model.dto.thumb.resourcethumb.ResourceThumbAddRequest;
import com.teaching.backend.service.thumb.SeResourceThumbService; //import com.teaching.backend.service.thumb.SeResourceThumbService;
import lombok.extern.slf4j.Slf4j; //import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; //import org.apache.commons.lang3.StringUtils;
import org.springframework.web.bind.annotation.PostMapping; //import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; //import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; //import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; //import org.springframework.web.bind.annotation.RestController;
//
import javax.annotation.Resource; //import javax.annotation.Resource;
//
/** ///**
* @Author:youhang // * @Author:youhang
* @Date:2024-05-30-20:22 // * @Date:2024-05-30-20:22
* @Description: // * @Description:
*/ // */
@RestController //@RestController
@RequestMapping("/api/resource_thumb") //@RequestMapping("/api/resource_thumb")
@Slf4j //@Slf4j
public class SeResourceThumbController { //public class SeResourceThumbController {
//
@Resource // @Resource
private SeResourceThumbService seResourceThumbService; // private SeResourceThumbService seResourceThumbService;
//
//
/** // /**
* 点赞 // * 点赞
* // *
* @param resourceThumbAddRequest // * @param resourceThumbAddRequest
* @return result 执行情况 // * @return result 执行情况
*/ // */
@PostMapping("/add") // @PostMapping("/add")
// 加上 HttpServletRequest request 在一个fitter里面进行鉴权操作 // // 加上 HttpServletRequest request 在一个fitter里面进行鉴权操作
public BaseResponse<Boolean> doThumb(@RequestBody ResourceThumbAddRequest resourceThumbAddRequest) { // public BaseResponse<Boolean> doThumb(@RequestBody ResourceThumbAddRequest resourceThumbAddRequest) {
return seResourceThumbService.doResourceThumb( resourceThumbAddRequest.getResourceId(), resourceThumbAddRequest.getUserId()); // 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.dto.KnowGraph.KnowCourseCreateRequest;
import com.teaching.backend.model.entity.KnowGraph.Know; 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.KnowCourse;
import org.springframework.data.neo4j.repository.Neo4jRepository; import org.springframework.data.neo4j.repository.Neo4jRepository;
import org.springframework.data.neo4j.repository.query.Query; import org.springframework.data.neo4j.repository.query.Query;
import java.util.List; import java.util.List;
import java.util.Set;
public interface KnowRepository extends Neo4jRepository<Know, Long> { public interface KnowRepository extends Neo4jRepository<Know, Long> {
@ -28,9 +30,13 @@ public interface KnowRepository extends Neo4jRepository<Know, Long> {
List<Know> queryKnowAllKnowById(Long id); List<Know> queryKnowAllKnowById(Long id);
@Query("CREATE (n:Know {name: $name, courseId: $courseId,info:$info,resourceList:$resourceList}) return n") @Query("CREATE (n:Know {name: $name, courseId: $courseId,info:$info}) return n")
KnowCourse createKnowCourse(String courseId, String name, String info, List<Integer>resourceList); 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; package com.teaching.backend.mapper.resource;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; 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 * ClassName: FileTableMapper
@ -17,6 +15,6 @@ import java.util.List;
* @Version 1.0 * @Version 1.0
*/ */
@Mapper @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;
}

@ -34,12 +34,7 @@ public class Know implements Serializable {
@Property @Property
private String info; 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; private Long id;
/** /**
* 知识点名称 * 课程id
*/ */
private String courseId; private String courseId;
@ -40,11 +40,6 @@ public class KnowCourse implements Serializable {
private String info; 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.IdType;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
@ -15,16 +15,13 @@ import java.util.stream.Stream;
* Package: com.teaching.backend.model.entity * Package: com.teaching.backend.model.entity
* Description: * Description:
* *
* @Author 姜钧瀚 * @Author youhang
* @Create 2024/6/4 11:48 * @Create 2024/6/4 11:48
* @Version 1.0 * @Version 1.0
*/ */
@Data @Data
@ToString
@NoArgsConstructor
@AllArgsConstructor
@TableName("Resource") @TableName("Resource")
public class CourseResources { public class Resource {
private static final long serialVersionUID = 1L; 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.mapper.KnowGraph.KnowRepository;
import com.teaching.backend.model.dto.KnowGraph.*; import com.teaching.backend.model.dto.KnowGraph.*;
import com.teaching.backend.model.entity.KnowGraph.Know; 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.KnowCourse;
import com.teaching.backend.model.entity.KnowGraph.Links; import com.teaching.backend.model.entity.KnowGraph.Links;
import com.teaching.backend.model.vo.knowGraph.KnowVO; import com.teaching.backend.model.vo.knowGraph.KnowVO;
@ -45,10 +46,14 @@ public class KnowService {
} }
public KnowCourse createCourseKnow(KnowCourseCreateRequest knowCourseCreateRequest ) { 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) { public void deleteKnow(Long id) {
knowRepository.deleteById(id); knowRepository.deleteById(id);
@ -169,4 +174,9 @@ public class KnowService {
return baseKnowReturn; 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; //package com.teaching.backend.service.favour;
//
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; //import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService; //import com.baomidou.mybatisplus.extension.service.IService;
import com.teaching.backend.common.BaseResponse; //import com.teaching.backend.common.BaseResponse;
import com.teaching.backend.model.entity.CourseResources; //import com.teaching.backend.model.entity.resource.CourseResources;
import com.teaching.backend.model.entity.favour.SeResourceFavour; //import com.teaching.backend.model.entity.favour.SeResourceFavour;
//
/** ///**
* @Author:youhang // * @Author:youhang
* @Date:2024-05-30-20:22 // * @Date:2024-05-30-20:22
* @Description: // * @Description:
*/ // */
public interface SeResourceFavourService extends IService<SeResourceFavour> { //public interface SeResourceFavourService extends IService<SeResourceFavour> {
//
/** // /**
* 收藏 // * 收藏
* // *
* @param userId // * @param userId
* @return // * @return
*/ // */
BaseResponse<Boolean> doResourceFavour( Integer resourceId, String userId); // BaseResponse<Boolean> doResourceFavour( Integer resourceId, String userId);
//
//
//
public Page<CourseResources> listCourseFavourByPage(String userId, Integer type, Integer page, Integer pageSize); // 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; //package com.teaching.backend.service.impl.favour;
//
import cn.hutool.core.collection.CollUtil; //import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.Wrapper; //import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; //import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; //import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; //import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.teaching.backend.common.BaseResponse; //import com.teaching.backend.common.BaseResponse;
import com.teaching.backend.common.ErrorCode; //import com.teaching.backend.common.ErrorCode;
import com.teaching.backend.common.ResultUtils; //import com.teaching.backend.common.ResultUtils;
import com.teaching.backend.exception.BusinessException; //import com.teaching.backend.exception.BusinessException;
import com.teaching.backend.mapper.courses.CoursesMapper; //import com.teaching.backend.mapper.courses.CoursesMapper;
import com.teaching.backend.mapper.favour.SeCourseFavourMapper; //import com.teaching.backend.mapper.favour.SeCourseFavourMapper;
import com.teaching.backend.model.entity.courses.Courses; //import com.teaching.backend.model.entity.courses.Courses;
import com.teaching.backend.model.entity.favour.SeCourseFavour; //import com.teaching.backend.model.entity.favour.SeCourseFavour;
import com.teaching.backend.model.entity.favour.SeKnowFavour; //import com.teaching.backend.model.entity.favour.SeKnowFavour;
import com.teaching.backend.model.entity.favour.SeResourceFavour; //import com.teaching.backend.model.entity.favour.SeResourceFavour;
import com.teaching.backend.model.vo.favour.CourseFavourDetailVO; //import com.teaching.backend.model.vo.favour.CourseFavourDetailVO;
import com.teaching.backend.service.courses.ICoursesService; //import com.teaching.backend.service.courses.ICoursesService;
import com.teaching.backend.service.favour.SeCourseFavourService; //import com.teaching.backend.service.favour.SeCourseFavourService;
import com.teaching.backend.service.favour.SeKnowFavourService; //import com.teaching.backend.service.favour.SeKnowFavourService;
import com.teaching.backend.service.favour.SeResourceFavourService; //import com.teaching.backend.service.favour.SeResourceFavourService;
import org.springframework.beans.BeanUtils; //import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; //import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; //import org.springframework.stereotype.Service;
//
import javax.annotation.Resource; //import javax.annotation.Resource;
import java.util.ArrayList; //import java.util.ArrayList;
import java.util.List; //import java.util.List;
import java.util.concurrent.locks.Lock; //import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock; //import java.util.concurrent.locks.ReentrantLock;
import java.util.stream.Collectors; //import java.util.stream.Collectors;
//
//
/** ///**
* @Author:youhang // * @Author:youhang
* @Date:2024-05-30-20:23 // * @Date:2024-05-30-20:23
* @Description: // * @Description:
*/ // */
@Service //@Service
public class SeCourseFavourServiceImpl extends ServiceImpl<SeCourseFavourMapper, SeCourseFavour> implements SeCourseFavourService { //public class SeCourseFavourServiceImpl extends ServiceImpl<SeCourseFavourMapper, SeCourseFavour> implements SeCourseFavourService {
//
//
@Resource // @Resource
private SeResourceFavourService seResourceFavourService; // private SeResourceFavourService seResourceFavourService;
//
@Resource // @Resource
SeKnowFavourService seKnowFavourService; // SeKnowFavourService seKnowFavourService;
//
@Autowired // @Autowired
CoursesMapper coursesMapper; // CoursesMapper coursesMapper;
//
@Autowired // @Autowired
ICoursesService coursesService; // ICoursesService coursesService;
//
//
//
@Override // @Override
public BaseResponse<Boolean> doCourseFavour(String courseId, String userId) { // public BaseResponse<Boolean> doCourseFavour(String courseId, String userId) {
System.out.println("进入点赞" + courseId + userId); // System.out.println("进入点赞" + courseId + userId);
//从数据库中校验是否存在courseid // //从数据库中校验是否存在courseid
Courses courses = coursesMapper.selectById(courseId); // Courses courses = coursesMapper.selectById(courseId);
boolean result = false; // boolean result = false;
if(courses == null){ // if(courses == null){
return ResultUtils.error(ErrorCode.NOT_FOUND_ERROR,"课程不存在"); // return ResultUtils.error(ErrorCode.NOT_FOUND_ERROR,"课程不存在");
} // }
//查询数据库记录,该用户是否点赞 // //查询数据库记录,该用户是否点赞
SeCourseFavour seCourseFavour = new SeCourseFavour(); // SeCourseFavour seCourseFavour = new SeCourseFavour();
seCourseFavour.setCourseId(courseId); // seCourseFavour.setCourseId(courseId);
seCourseFavour.setUserId(userId); // seCourseFavour.setUserId(userId);
QueryWrapper<SeCourseFavour> favourQueryWrapper = new QueryWrapper<>(seCourseFavour); // QueryWrapper<SeCourseFavour> favourQueryWrapper = new QueryWrapper<>(seCourseFavour);
SeCourseFavour oldSeCourseFavour = this.getOne(favourQueryWrapper); // SeCourseFavour oldSeCourseFavour = this.getOne(favourQueryWrapper);
//已点赞 // //已点赞
if (oldSeCourseFavour != null) { // if (oldSeCourseFavour != null) {
// 取消点赞 删除记录 // // 取消点赞 删除记录
result = this.remove(favourQueryWrapper); // result = this.remove(favourQueryWrapper);
if (result) { // if (result) {
System.out.println("取消点赞成功"); // System.out.println("取消点赞成功");
return ResultUtils.success(result); // return ResultUtils.success(result);
} else { // } else {
throw new BusinessException(ErrorCode.SYSTEM_ERROR); // throw new BusinessException(ErrorCode.SYSTEM_ERROR);
} // }
} else { // } else {
// 每个用户串行点赞 // // 每个用户串行点赞
// 锁必须要包裹住事务方法 // // 锁必须要包裹住事务方法
Lock lock = new ReentrantLock(); // Lock lock = new ReentrantLock();
lock.lock(); // lock.lock();
try { // try {
result = this.save(seCourseFavour); // result = this.save(seCourseFavour);
} catch (Exception e) { // } catch (Exception e) {
throw new BusinessException(ErrorCode.OPERATION_ERROR); // throw new BusinessException(ErrorCode.OPERATION_ERROR);
} finally { // } finally {
lock.unlock(); // lock.unlock();
System.out.println("点赞成功"); // System.out.println("点赞成功");
return ResultUtils.success(result); // return ResultUtils.success(result);
} // }
} // }
} // }
//
@Override // @Override
public BaseResponse<Long>favourCount(String courseId) { // public BaseResponse<Long>favourCount(String courseId) {
//从数据库中校验是否存在courseid // //从数据库中校验是否存在courseid
QueryWrapper<SeCourseFavour> favourQueryWrapper = new QueryWrapper<>(); // QueryWrapper<SeCourseFavour> favourQueryWrapper = new QueryWrapper<>();
favourQueryWrapper.eq("course_id", courseId); // favourQueryWrapper.eq("course_id", courseId);
long result = this.count(favourQueryWrapper); // long result = this.count(favourQueryWrapper);
if (result == 0) { // if (result == 0) {
throw new BusinessException(ErrorCode.SYSTEM_ERROR, "查询参数不存在"); // throw new BusinessException(ErrorCode.SYSTEM_ERROR, "查询参数不存在");
} else { // } else {
return ResultUtils.success(result); // return ResultUtils.success(result);
} // }
} // }
//
@Override // @Override
public BaseResponse<Long> courseCount(String courseId) { // public BaseResponse<Long> courseCount(String courseId) {
//
QueryWrapper<SeResourceFavour> ResourceQueryWrapper = new QueryWrapper<>(); // QueryWrapper<SeResourceFavour> ResourceQueryWrapper = new QueryWrapper<>();
ResourceQueryWrapper.eq("course_id", courseId); // ResourceQueryWrapper.eq("course_id", courseId);
long result1 = seResourceFavourService.count(ResourceQueryWrapper); // long result1 = seResourceFavourService.count(ResourceQueryWrapper);
QueryWrapper<SeKnowFavour> KnowQueryWrapper = new QueryWrapper<>(); // QueryWrapper<SeKnowFavour> KnowQueryWrapper = new QueryWrapper<>();
KnowQueryWrapper.eq("course_id", courseId); // KnowQueryWrapper.eq("course_id", courseId);
long result2 = seKnowFavourService.count(KnowQueryWrapper); // long result2 = seKnowFavourService.count(KnowQueryWrapper);
long result = result1 + result2; // long result = result1 + result2;
if (result == 0) { // if (result == 0) {
throw new BusinessException(ErrorCode.SYSTEM_ERROR, "查询参数不存在"); // throw new BusinessException(ErrorCode.SYSTEM_ERROR, "查询参数不存在");
} else { // } else {
return ResultUtils.success(result); // return ResultUtils.success(result);
} // }
} // }
//
/** // /**
* 某个用户课程列表 // * 某个用户课程列表
* // *
* @param userId // * @param userId
* @return // * @return
*/ // */
@Override // @Override
public List<String> courseList(String userId) { // public List<String> courseList(String userId) {
QueryWrapper<SeCourseFavour> courseQueryWrapper = new QueryWrapper<>(); // QueryWrapper<SeCourseFavour> courseQueryWrapper = new QueryWrapper<>();
courseQueryWrapper.eq("user_id", userId); // courseQueryWrapper.eq("user_id", userId);
List<String> list = this.list(courseQueryWrapper).stream().map(SeCourseFavour::getCourseId).collect(Collectors.toList()); // List<String> list = this.list(courseQueryWrapper).stream().map(SeCourseFavour::getCourseId).collect(Collectors.toList());
return list; // return list;
} // }
//
@Override // @Override
public Page<CourseFavourDetailVO> listCourseFavourByPage(Page<Courses> page, Wrapper<Courses> queryWrapper) { // public Page<CourseFavourDetailVO> listCourseFavourByPage(Page<Courses> page, Wrapper<Courses> queryWrapper) {
Page<Courses> coursePage = coursesService.page(page, queryWrapper); // Page<Courses> coursePage = coursesService.page(page, queryWrapper);
Page<CourseFavourDetailVO> courseFavourVOPage = new Page<>(coursePage.getCurrent(), coursePage.getSize(), coursePage.getTotal()); // Page<CourseFavourDetailVO> courseFavourVOPage = new Page<>(coursePage.getCurrent(), coursePage.getSize(), coursePage.getTotal());
List<Courses> courseFavourList = coursePage.getRecords(); // List<Courses> courseFavourList = coursePage.getRecords();
//若数据为空,直接返回 // //若数据为空,直接返回
if (CollUtil.isEmpty(courseFavourList)) { // if (CollUtil.isEmpty(courseFavourList)) {
return courseFavourVOPage; // return courseFavourVOPage;
} // }
//过滤字段 // //过滤字段
List<CourseFavourDetailVO> courseFavourDetailVOList = new ArrayList<>(); // List<CourseFavourDetailVO> courseFavourDetailVOList = new ArrayList<>();
for (int i = 0; i < courseFavourList.size(); i++) { // for (int i = 0; i < courseFavourList.size(); i++) {
CourseFavourDetailVO courseFavourDetailVO = new CourseFavourDetailVO(); // CourseFavourDetailVO courseFavourDetailVO = new CourseFavourDetailVO();
BeanUtils.copyProperties(courseFavourList.get(i), courseFavourDetailVO); // BeanUtils.copyProperties(courseFavourList.get(i), courseFavourDetailVO);
courseFavourDetailVOList.add(courseFavourDetailVO); // courseFavourDetailVOList.add(courseFavourDetailVO);
} // }
courseFavourVOPage.setRecords(courseFavourDetailVOList); // courseFavourVOPage.setRecords(courseFavourDetailVOList);
return courseFavourVOPage; // return courseFavourVOPage;
} // }
//
//
} //}

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

@ -1,180 +1,179 @@
package com.teaching.backend.service.impl.records; //package com.teaching.backend.service.impl.records;
//
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; //import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; //import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; //import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; //import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
//
import com.teaching.backend.common.ErrorCode; //import com.teaching.backend.common.ErrorCode;
import com.teaching.backend.exception.BusinessException; //import com.teaching.backend.exception.BusinessException;
import com.teaching.backend.mapper.records.LearningRecordsMapper; //import com.teaching.backend.mapper.records.LearningRecordsMapper;
//
import com.teaching.backend.model.entity.records.LearningRecords; //import com.teaching.backend.model.entity.records.LearningRecords;
import com.teaching.backend.model.vo.records.LearningRecordsVo; //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.impl.courses.CoursesServiceImpl; //import com.teaching.backend.service.records.LearningRecordsService;
import com.teaching.backend.service.records.LearningRecordsService; //import org.springframework.beans.BeanUtils;
import org.springframework.beans.BeanUtils; //import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Autowired; //import org.springframework.stereotype.Service;
import org.springframework.stereotype.Service; //import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.annotation.Transactional; //
//import java.text.SimpleDateFormat;
import java.text.SimpleDateFormat; //import java.time.LocalDateTime;
import java.time.LocalDateTime; //import java.time.ZoneId;
import java.time.ZoneId; //import java.util.ArrayList;
import java.util.ArrayList; //import java.util.Date;
import java.util.Date; //import java.util.List;
import java.util.List; //
//@Service
@Service //public class LearningRecordsServiceImpl extends ServiceImpl<LearningRecordsMapper, LearningRecords> implements LearningRecordsService {
public class LearningRecordsServiceImpl extends ServiceImpl<LearningRecordsMapper, LearningRecords> implements LearningRecordsService { //
@Autowired
private CoursesServiceImpl coursesService;
@Autowired
private LearningRecordsMapper learningRecordsMapper;
@Autowired
private CourseResourcesServiceImpl courseResourcesService;
// @Autowired // @Autowired
// private ChapterServiceImpl chapterService; // private CoursesServiceImpl coursesService;
// @Autowired
@Override // private LearningRecordsMapper learningRecordsMapper;
public IPage<LearningRecords> selectPageList(Page<LearningRecords> page, LearningRecords model) { // @Autowired
return learningRecordsMapper.selectPageList(page,model); // private CourseResourcesServiceImpl courseResourcesService;
} //// @Autowired
//// private ChapterServiceImpl chapterService;
@Override //
public String delete(List<Long> ids) { // @Override
LambdaQueryWrapper<LearningRecords> lambdaQueryWrapper = new LambdaQueryWrapper<>(); // public IPage<LearningRecords> selectPageList(Page<LearningRecords> page, LearningRecords model) {
lambdaQueryWrapper.in(LearningRecords::getId, ids); // return learningRecordsMapper.selectPageList(page,model);
List<LearningRecords> list = this.list(lambdaQueryWrapper); // }
//把即将要删除的记录状态调成0 //
for (LearningRecords learningRecords : list) { // @Override
learningRecords.setStatus("0"); // public String delete(List<Long> ids) {
} // LambdaQueryWrapper<LearningRecords> lambdaQueryWrapper = new LambdaQueryWrapper<>();
updateBatchById(list); // lambdaQueryWrapper.in(LearningRecords::getId, ids);
// System.out.println(this.updateBatchById(list)); // List<LearningRecords> list = this.list(lambdaQueryWrapper);
// this.remove(lambdaQueryWrapper); // //把即将要删除的记录状态调成0
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));
// //统计记录表里有多少人查看过这门资源
// 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) { // for (LearningRecords learningRecords : list) {
// //查找该用户的学习记录 // learningRecords.setStatus("0");
// LearningRecordsVo learningRecordsVo = new LearningRecordsVo();//好像可以拿出去-----------?? // }
// BeanUtils.copyProperties(learningRecords,learningRecordsVo);//从多传到少(缺少人数,和资源名称,时间需要转格式) // updateBatchById(list);
// //添加时间 //// System.out.println(this.updateBatchById(list));
// //LocalDateTime转Date //// this.remove(lambdaQueryWrapper);
// Date date = Date.from(learningRecords.getTime().atZone(ZoneId.systemDefault()).toInstant()); // return "删除成功";
// learningRecordsVo.setTime(sdf.format(date)); // }
// LambdaQueryWrapper<LearningRecords> lambdaQueryWrapper = new LambdaQueryWrapper<>(); //
// lambdaQueryWrapper.eq(LearningRecords::getCoursesId, learningRecords.getCoursesId()); // @Override
// String name; // public List<LearningRecordsVo> getAll(List<LearningRecords> list){
// //添加课程名称 // List<LearningRecordsVo> records = new ArrayList<>();
// switch (learningRecords.getType()) { // //格式化时间
// case "4": //如果是资源学习 // String strDateFormat = "yyyy-MM-dd HH:mm:ss";
// if (courseResourcesService.getById(learningRecords.getCoursesId()) != null){ // SimpleDateFormat sdf = new SimpleDateFormat(strDateFormat);
// learningRecordsVo.setCoursesName(courseResourcesService.getById(learningRecords.getCoursesId()).getName()); // //如果为空-------------------?????
// } // list.forEach(learningRecords -> {
// break; // LearningRecordsVo learningRecordsVo = new LearningRecordsVo();//好像可以拿出去-----------??
// case "1": //如果是课程学习记录 // BeanUtils.copyProperties(learningRecords,learningRecordsVo);//从多传到少(时间需要转格式)
// if (coursesService.getById(learningRecords.getCoursesId()) != null){ // Date date = Date.from(learningRecords.getTime().atZone(ZoneId.systemDefault()).toInstant());
// learningRecordsVo.setCoursesName(coursesService.getById(learningRecords.getCoursesId()).getName()); // learningRecordsVo.setTime(sdf.format(date));
// } //// //统计记录表里有多少人查看过这门资源
// break; //// 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::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 "修改成功";
// 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; //package com.teaching.backend.service.impl.thumb;
//
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; //import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; //import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.teaching.backend.common.BaseResponse; //import com.teaching.backend.common.BaseResponse;
import com.teaching.backend.common.ErrorCode; //import com.teaching.backend.common.ErrorCode;
import com.teaching.backend.common.ResultUtils; //import com.teaching.backend.common.ResultUtils;
import com.teaching.backend.exception.BusinessException; //import com.teaching.backend.exception.BusinessException;
import com.teaching.backend.mapper.courses.CoursesMapper; //import com.teaching.backend.mapper.courses.CoursesMapper;
import com.teaching.backend.mapper.thumb.SeCourseThumbMapper; //import com.teaching.backend.mapper.thumb.SeCourseThumbMapper;
import com.teaching.backend.model.entity.courses.Courses; //import com.teaching.backend.model.entity.courses.Courses;
import com.teaching.backend.model.entity.thumb.SeCourseThumb; //import com.teaching.backend.model.entity.thumb.SeCourseThumb;
import com.teaching.backend.model.entity.thumb.SeKnowThumb; //import com.teaching.backend.model.entity.thumb.SeKnowThumb;
import com.teaching.backend.model.entity.thumb.SeResourceThumb; //import com.teaching.backend.model.entity.thumb.SeResourceThumb;
import com.teaching.backend.service.thumb.SeCourseThumbService; //import com.teaching.backend.service.thumb.SeCourseThumbService;
import com.teaching.backend.service.thumb.SeKnowThumbService; //import com.teaching.backend.service.thumb.SeKnowThumbService;
import com.teaching.backend.service.thumb.SeResourceThumbService; //import com.teaching.backend.service.thumb.SeResourceThumbService;
import org.springframework.beans.factory.annotation.Autowired; //import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; //import org.springframework.stereotype.Service;
//
import javax.annotation.Resource; //import javax.annotation.Resource;
import java.util.concurrent.locks.Lock; //import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock; //import java.util.concurrent.locks.ReentrantLock;
//
//
/** ///**
* @Author:youhang // * @Author:youhang
* @Date:2024-05-30-20:23 // * @Date:2024-05-30-20:23
* @Description: // * @Description:
*/ // */
@Service //@Service
public class SeCourseThumbServiceImpl extends ServiceImpl<SeCourseThumbMapper, SeCourseThumb> implements SeCourseThumbService { //public class SeCourseThumbServiceImpl extends ServiceImpl<SeCourseThumbMapper, SeCourseThumb> implements SeCourseThumbService {
//
//
@Resource // @Resource
private SeResourceThumbService seResourceThumbService; // private SeResourceThumbService seResourceThumbService;
//
@Resource // @Resource
SeKnowThumbService seKnowThumbService; // SeKnowThumbService seKnowThumbService;
//
//
@Autowired // @Autowired
CoursesMapper coursesMapper; // CoursesMapper coursesMapper;
//
@Override // @Override
public BaseResponse<Boolean> doCourseThumb(String courseId, String userId) { // public BaseResponse<Boolean> doCourseThumb(String courseId, String userId) {
//
//从数据库中校验是否存在courseid // //从数据库中校验是否存在courseid
Courses courses = coursesMapper.selectById(courseId); // Courses courses = coursesMapper.selectById(courseId);
boolean result = false; // boolean result = false;
if(courses == null){ // if(courses == null){
return ResultUtils.error(ErrorCode.PARAMS_COURSE_NOTEXISTS); // return ResultUtils.error(ErrorCode.PARAMS_COURSE_NOTEXISTS);
} // }
//
// 先查询数据库记录,该用户是否点赞 // // 先查询数据库记录,该用户是否点赞
SeCourseThumb seCourseThumb = new SeCourseThumb(); // SeCourseThumb seCourseThumb = new SeCourseThumb();
seCourseThumb.setCourseId(courseId); // seCourseThumb.setCourseId(courseId);
seCourseThumb.setUserId(userId); // seCourseThumb.setUserId(userId);
QueryWrapper<SeCourseThumb> thumbQueryWrapper = new QueryWrapper<>(seCourseThumb); // QueryWrapper<SeCourseThumb> thumbQueryWrapper = new QueryWrapper<>(seCourseThumb);
SeCourseThumb oldSeCourseThumb = this.getOne(thumbQueryWrapper); // SeCourseThumb oldSeCourseThumb = this.getOne(thumbQueryWrapper);
//已点赞 // //已点赞
if (oldSeCourseThumb != null) { // if (oldSeCourseThumb != null) {
// 取消点赞 删除记录 // // 取消点赞 删除记录
result = this.remove(thumbQueryWrapper); // result = this.remove(thumbQueryWrapper);
if (result) { // if (result) {
System.out.println("取消点赞成功"); // System.out.println("取消点赞成功");
return ResultUtils.success(result); // return ResultUtils.success(result);
} else { // } else {
throw new BusinessException(ErrorCode.SYSTEM_ERROR); // throw new BusinessException(ErrorCode.SYSTEM_ERROR);
} // }
} else { // } else {
// 每个用户串行点赞 // // 每个用户串行点赞
// 锁必须要包裹住事务方法 // // 锁必须要包裹住事务方法
Lock lock = new ReentrantLock(); // Lock lock = new ReentrantLock();
lock.lock(); // lock.lock();
try { // try {
result = this.save(seCourseThumb); // result = this.save(seCourseThumb);
} catch (Exception e) { // } catch (Exception e) {
throw new BusinessException(ErrorCode.OPERATION_ERROR); // throw new BusinessException(ErrorCode.OPERATION_ERROR);
} finally { // } finally {
lock.unlock(); // lock.unlock();
System.out.println("点赞成功"); // System.out.println("点赞成功");
return ResultUtils.success(result); // return ResultUtils.success(result);
} // }
} // }
} // }
//
@Override // @Override
public BaseResponse<Long> thumbCount(String courseId) { // public BaseResponse<Long> thumbCount(String courseId) {
//
//从数据库中校验是否存在courseid // //从数据库中校验是否存在courseid
Courses courses = coursesMapper.selectById(courseId); // Courses courses = coursesMapper.selectById(courseId);
if(courses == null){ // if(courses == null){
return ResultUtils.error(ErrorCode.PARAMS_COURSE_NOTEXISTS); // return ResultUtils.error(ErrorCode.PARAMS_COURSE_NOTEXISTS);
} // }
//
QueryWrapper<SeCourseThumb> thumbQueryWrapper = new QueryWrapper<>(); // QueryWrapper<SeCourseThumb> thumbQueryWrapper = new QueryWrapper<>();
thumbQueryWrapper.eq("course_id", courseId); // thumbQueryWrapper.eq("course_id", courseId);
long count = this.count(thumbQueryWrapper); // long count = this.count(thumbQueryWrapper);
if (count == 0) { // if (count == 0) {
throw new BusinessException(ErrorCode.SYSTEM_ERROR, "查询参数不存在"); // throw new BusinessException(ErrorCode.SYSTEM_ERROR, "查询参数不存在");
} else { // } else {
return ResultUtils.success(count); // return ResultUtils.success(count);
} // }
} // }
//
//
} //}

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

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

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

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

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

Loading…
Cancel
Save