Merge remote-tracking branch 'origin/master'

master
小萌新 11 months ago
commit ad1f3f6e69
  1. 37
      pom.xml
  2. 85
      src/main/java/com/teaching/backend/controller/KnowGraph/KnowController.java
  3. 21
      src/main/java/com/teaching/backend/controller/courseResource/CourseResourceController.java
  4. 40
      src/main/java/com/teaching/backend/controller/know/KnowController.java
  5. 42
      src/main/java/com/teaching/backend/controller/know/KnowRelationshipController.java
  6. 12
      src/main/java/com/teaching/backend/controller/records/CourseLearningRecordController.java
  7. 32
      src/main/java/com/teaching/backend/controller/records/LearningRecordsController.java
  8. 36
      src/main/java/com/teaching/backend/mapper/KnowGraph/KnowRepository.java
  9. 10
      src/main/java/com/teaching/backend/mapper/know/KnowMapper.java
  10. 18
      src/main/java/com/teaching/backend/mapper/know/KnowRelationshipMapper.java
  11. 17
      src/main/java/com/teaching/backend/mapper/records/CourseLearningRecordMapper.java
  12. 17
      src/main/java/com/teaching/backend/mapper/records/KnowledgeLearningRecordMapper.java
  13. 17
      src/main/java/com/teaching/backend/mapper/records/ResourceLearningRecordMapper.java
  14. 31
      src/main/java/com/teaching/backend/model/dto/KnowGraph/BaseKnowReturn.java
  15. 38
      src/main/java/com/teaching/backend/model/dto/KnowGraph/KnowCourseCreateRequest.java
  16. 34
      src/main/java/com/teaching/backend/model/dto/KnowGraph/KnowRequest.java
  17. 37
      src/main/java/com/teaching/backend/model/dto/KnowGraph/KnowUpdateRequest.java
  18. 22
      src/main/java/com/teaching/backend/model/dto/KnowGraph/RelationshipKnowRequest.java
  19. 19
      src/main/java/com/teaching/backend/model/dto/know/KnowQueryRequest.java
  20. 48
      src/main/java/com/teaching/backend/model/dto/know/KnowRequest.java
  21. 54
      src/main/java/com/teaching/backend/model/dto/know/KnowupdateRequest.java
  22. 9
      src/main/java/com/teaching/backend/model/entity/CourseResources.java
  23. 45
      src/main/java/com/teaching/backend/model/entity/KnowGraph/Know.java
  24. 50
      src/main/java/com/teaching/backend/model/entity/KnowGraph/KnowCourse.java
  25. 32
      src/main/java/com/teaching/backend/model/entity/KnowGraph/Links.java
  26. 168
      src/main/java/com/teaching/backend/model/entity/courses/Main.java
  27. 66
      src/main/java/com/teaching/backend/model/entity/know/Know.java
  28. 46
      src/main/java/com/teaching/backend/model/entity/know/KnowRelationship.java
  29. 57
      src/main/java/com/teaching/backend/model/entity/records/CourseLearningRecord.java
  30. 57
      src/main/java/com/teaching/backend/model/entity/records/KnowledgeLearningRecord.java
  31. 27
      src/main/java/com/teaching/backend/model/entity/records/LearningRecords.java
  32. 73
      src/main/java/com/teaching/backend/model/entity/records/ResourceLearningRecord.java
  33. 31
      src/main/java/com/teaching/backend/model/vo/knowGraph/KnowVO.java
  34. 2
      src/main/java/com/teaching/backend/model/vo/records/LearningRecordsVo.java
  35. 172
      src/main/java/com/teaching/backend/service/KnowGraph/KnowService.java
  36. 8
      src/main/java/com/teaching/backend/service/impl/CourseResourcesServiceImpl.java
  37. 69
      src/main/java/com/teaching/backend/service/impl/courses/CoursesServiceImpl.java
  38. 32
      src/main/java/com/teaching/backend/service/impl/courses/ObjectiveContentKnowServiceImpl.java
  39. 21
      src/main/java/com/teaching/backend/service/impl/know/KnowRelationshipServiceImpl.java
  40. 50
      src/main/java/com/teaching/backend/service/impl/know/KnowServiceimpl.java
  41. 22
      src/main/java/com/teaching/backend/service/impl/records/CourseLearningRecordServiceImpl.java
  42. 22
      src/main/java/com/teaching/backend/service/impl/records/KnowledgeLearningRecordServiceImpl.java
  43. 160
      src/main/java/com/teaching/backend/service/impl/records/LearningRecordsServiceImpl.java
  44. 21
      src/main/java/com/teaching/backend/service/impl/records/ResourceLearningRecordServiceImpl.java
  45. 16
      src/main/java/com/teaching/backend/service/know/IKnowRelationshipService.java
  46. 23
      src/main/java/com/teaching/backend/service/know/KnowService.java
  47. 17
      src/main/java/com/teaching/backend/service/records/ICourseLearningRecordService.java
  48. 17
      src/main/java/com/teaching/backend/service/records/IKnowledgeLearningRecordService.java
  49. 17
      src/main/java/com/teaching/backend/service/records/IResourceLearningRecordService.java
  50. 2
      src/main/java/com/teaching/backend/service/records/LearningRecordsService.java
  51. 2
      src/main/java/com/teaching/backend/service/resource/CourseResourcesService.java
  52. 38
      src/main/java/com/teaching/backend/utils/ParamOutAspect.java
  53. 38
      src/main/java/com/teaching/backend/utils/getNullPropertyNamesUtil.java
  54. 5
      src/main/resources/application.yml

@ -24,67 +24,64 @@
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId> <artifactId>spring-boot-starter-web</artifactId>
</dependency> </dependency>
<!--neo4j 的引入-->
<dependency>
<groupId>org.neo4j.driver</groupId>
<artifactId>neo4j-java-driver-spring-boot-starter</artifactId>
<version>4.3.6.0</version>
</dependency>
<!-- neo4j 操作实体注解需要 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-neo4j</artifactId>
</dependency>
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId> <artifactId>spring-boot-starter-aop</artifactId>
</dependency> </dependency>
<dependency> <dependency>
<groupId>commons-io</groupId> <groupId>commons-io</groupId>
<artifactId>commons-io</artifactId> <artifactId>commons-io</artifactId>
<version>2.11.0</version> <version>2.11.0</version>
</dependency> </dependency>
<!-- freemarker jar --> <!-- freemarker jar -->
<dependency> <dependency>
<groupId>org.freemarker</groupId> <groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId> <artifactId>freemarker</artifactId>
<version>2.3.28</version> <version>2.3.28</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.mybatis.spring.boot</groupId> <groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId> <artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.2</version> <version>2.2.2</version>
</dependency> </dependency>
<!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-boot-starter --> <!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-boot-starter -->
<dependency> <dependency>
<groupId>com.baomidou</groupId> <groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId> <artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.2</version> <version>3.5.2</version>
</dependency> </dependency>
<!-- Apache POI --> <!-- Apache POI -->
<dependency> <dependency>
<groupId>org.apache.poi</groupId> <groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId> <artifactId>poi</artifactId>
<version>4.1.2</version> <version>4.1.2</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.apache.poi</groupId> <groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId> <artifactId>poi-ooxml</artifactId>
<version>4.1.2</version> <version>4.1.2</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.apache.poi</groupId> <groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml-schemas</artifactId> <artifactId>poi-ooxml-schemas</artifactId>
<version>4.1.2</version> <version>4.1.2</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.aliyun.oss</groupId> <groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId> <artifactId>aliyun-sdk-oss</artifactId>
<version>3.15.1</version> <version>3.15.1</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>mysql</groupId> <groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId> <artifactId>mysql-connector-java</artifactId>
@ -100,20 +97,17 @@
<artifactId>spring-boot-starter-test</artifactId> <artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<!-- https://doc.xiaominfo.com/docs/quick-start#openapi2 --> <!-- https://doc.xiaominfo.com/docs/quick-start#openapi2 -->
<dependency> <dependency>
<groupId>com.github.xiaoymin</groupId> <groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-openapi2-spring-boot-starter</artifactId> <artifactId>knife4j-openapi2-spring-boot-starter</artifactId>
<version>4.4.0</version> <version>4.4.0</version>
</dependency> </dependency>
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 --> <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
<dependency> <dependency>
<groupId>org.apache.commons</groupId> <groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId> <artifactId>commons-lang3</artifactId>
</dependency> </dependency>
<dependency> <dependency>
<groupId>cn.hutool</groupId> <groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId> <artifactId>hutool-all</artifactId>
@ -182,20 +176,23 @@
<version>2.12.5</version> <version>2.12.5</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
<!--easypoi--> <!--easypoi-->
<dependency> <dependency>
<groupId>cn.afterturn</groupId> <groupId>cn.afterturn</groupId>
<artifactId>easypoi-spring-boot-starter</artifactId> <artifactId>easypoi-spring-boot-starter</artifactId>
<version>4.1.3</version> <version>4.1.3</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>commons-io</groupId> <groupId>commons-io</groupId>
<artifactId>commons-io</artifactId> <artifactId>commons-io</artifactId>
<version>2.8.0</version> <version>2.8.0</version>
</dependency> </dependency>
<!--redis-->
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson</artifactId>
<version>3.13.6</version>
</dependency>
</dependencies> </dependencies>

@ -0,0 +1,85 @@
package com.teaching.backend.controller.KnowGraph;
/**
* @Author:youhang
* @Date:2024-06-09-9:55
* @Description:
*/
import com.teaching.backend.common.BaseResponse;
import com.teaching.backend.common.ResultUtils;
import com.teaching.backend.model.dto.KnowGraph.*;
import com.teaching.backend.model.entity.KnowGraph.Know;
import com.teaching.backend.model.entity.KnowGraph.KnowCourse;
import com.teaching.backend.service.KnowGraph.KnowService;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/know")
public class KnowController {
private KnowService knowService;
public KnowController(KnowService knowService) {
this.knowService = knowService;
}
//根据 id查询所关联的所有结点
@PostMapping ("/query/{id}")
public List<Know> queryKnowAllKnowById(@PathVariable Long id) {
return knowService.queryKnowAllKnowById(id);
}
//添加知识点
@PostMapping("/add")
public Know createKnow(@RequestBody KnowRequest knowRequest) {
return knowService.createKnow(knowRequest);
}
//添加知识点 - 课程
@PostMapping("/addKnowCourse")
public KnowCourse createCourseKnow(@RequestBody KnowCourseCreateRequest knowCourseCreateRequest) {
return knowService.createCourseKnow(knowCourseCreateRequest);
}
//修改知识点
@PostMapping ("/update")
public Know updateKnow(@RequestBody KnowUpdateRequest knowUpdateRequest) {
return knowService.updateKnow(knowUpdateRequest);
}
//删除知识点
@GetMapping ("delete/{id}")
public void deleteKnow(@PathVariable Long id) {
knowService.deleteKnow(id);
}
//添加知识点与知识点的关系 related
@PostMapping ("/addKnowRelatedKnow")
public void addKnowRelatedKnow(@RequestBody RelationshipKnowRequest relationshipKnowRequest) {
knowService.addKnowRelatedKnow(relationshipKnowRequest);
}
//添加知识点与知识点的关系 related
@PostMapping ("/addKnowFatherAndSonKnow")
public void addKnowFatherAndSonKnow(@RequestBody RelationshipKnowRequest relationshipKnowRequest) {
knowService.addKnowFatherAndSonKnow(relationshipKnowRequest);
}
@GetMapping("/all")
public BaseResponse<BaseKnowReturn> getKnowAll(@RequestParam String id) {
BaseKnowReturn baseKnowReturn =knowService.getKnowAll(id);
return ResultUtils.success(baseKnowReturn);
}
@GetMapping("/KnowById")
public BaseResponse<BaseKnowReturn> getKnowById(@RequestParam Long id) {
BaseKnowReturn baseKnowReturn =knowService.getKnowById(id);
return ResultUtils.success(baseKnowReturn);
}
}

@ -72,13 +72,26 @@ public class CourseResourceController {
/** /**
* 编辑 * 编辑
* @param resourceId * @param resources
* @return * @return
*/ */
@ApiOperation("编辑课程资源") @ApiOperation("编辑课程资源")
@PostMapping("/edit") @PutMapping("/edit")
public BaseResponse<CourseResources> editCourseResource(@RequestParam String resourceId){ public BaseResponse<String> editCourseResource(@RequestBody CourseResources resources){
System.out.println(resources);
courseResourcesService.updateById(resources);
return ResultUtils.success("编辑成功");
}
/**
* 根据id查询课程资源
* @param resourceId
* @return
*/
@ApiOperation("根据id查询课程资源")
@PostMapping("/getone")
public BaseResponse<CourseResources> getOne(@RequestParam String resourceId){
System.out.println(resourceId); System.out.println(resourceId);
return ResultUtils.success(courseResourcesService.editCourseResource(resourceId)); return ResultUtils.success(courseResourcesService.getById(resourceId));
} }
} }

@ -1,40 +0,0 @@
package com.teaching.backend.controller.know;
import com.teaching.backend.model.dto.know.KnowQueryRequest;
import com.teaching.backend.model.dto.know.KnowRequest;
import com.teaching.backend.model.dto.know.KnowupdateRequest;
import com.teaching.backend.model.entity.know.Know;
import com.teaching.backend.service.know.KnowService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* @Author:youhang
* @Date:2024-06-21-10:26
* @Description:
*/
@RestController
@RequestMapping("/api/know")
public class KnowController {
@Autowired
private KnowService knowService;
@PostMapping("/add")
public Boolean add(@RequestBody KnowRequest knowAddRequest) {
return knowService.add(knowAddRequest);
}
@PostMapping("/update")
public Boolean update(@RequestBody KnowupdateRequest knowAddRequest){
return knowService.update(knowAddRequest);
}
@PostMapping("/delete")
public Integer deleteKnow(@RequestBody List<Integer> ids){
return knowService.deleteKnow(ids);
}
@PostMapping("/query")
public List<Know> query(@RequestBody KnowQueryRequest knowQueryRequest){
return knowService.query(knowQueryRequest);
}
}

@ -1,42 +0,0 @@
package com.teaching.backend.controller.know;
import com.teaching.backend.common.BaseResponse;
import com.teaching.backend.common.ResultUtils;
import com.teaching.backend.model.entity.know.Know;
import com.teaching.backend.model.entity.know.KnowRelationship;
import com.teaching.backend.service.know.IKnowRelationshipService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* <p>
* 前端控制器
* </p>
*
* @author author
* @since 2024-06-20
*/
@Api(tags = "知识点章节关系")
@RestController
@RequestMapping("/know-relationship")
public class KnowRelationshipController {
@Autowired
private IKnowRelationshipService knowRelationshipService;
@ApiOperation("添加课程知识点关系")
@PostMapping()
public BaseResponse<Boolean> add(@RequestBody KnowRelationship knowRelationship){
boolean save = knowRelationshipService.save(knowRelationship);
return ResultUtils.success(save);
}
@GetMapping()
public BaseResponse<List<KnowRelationship>> getAll(){
List<KnowRelationship> list = knowRelationshipService.list();
return ResultUtils.success(list);
}
}

@ -0,0 +1,12 @@
package com.teaching.backend.controller.records;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/api/courselearingRecord")
public class CourseLearningRecordController {
}

@ -1,6 +1,7 @@
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.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;
@ -37,30 +38,27 @@ public class LearningRecordsController {
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()
.orderByDesc("time")
.eq("status", "1")
.eq("user_id", userId).page(new Page<>(pagenum, pagesize));
//获取当前页数据
List<LearningRecords> list = page.getRecords();
List<LearningRecordsVo> cs= learningRecordsService.getAll(list);
List<LearningRecordsVo> cs= learningRecordsService.getAll(userId); long total = page.getTotal(); // 总记录数
List<LearningRecordsVo> pageCs = new ArrayList<>();
//当前页面
for(int i = (pagenum - 1) * pagesize; i < cs.size() && i < (pagenum) * pagesize; i++){
pageCs.add(cs.get(i));
}
long total = cs.size(); // 总记录数
Page<LearningRecordsVo> pageInfo = new Page<>(pagenum,pagesize,total); Page<LearningRecordsVo> pageInfo = new Page<>(pagenum,pagesize,total);
pageInfo.setRecords(pageCs); pageInfo.setRecords(cs);
// System.out.println("总记录数"+pageInfo.getTotal()); pageInfo.setPages(page.getPages());//设置总页数
// System.out.println("当前页面:"+pagenum);
// System.out.println("当前页面大小:"+pagesize);
// System.out.println("当前页面内容:"+pageCs);
// System.out.println("页面数:"+pageInfo.getPages());
pageInfo.setPages((int)(Math.ceil((double) total / pagesize)));//设置总页数
// System.out.println(pageInfo.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());
} }
@ -74,7 +72,7 @@ public class LearningRecordsController {
@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));
} }

@ -0,0 +1,36 @@
package com.teaching.backend.mapper.KnowGraph;
/**
* @Author:youhang
* @Date:2024-06-09-8:59
* @Description:
*/
import com.teaching.backend.model.dto.KnowGraph.KnowCourseCreateRequest;
import com.teaching.backend.model.entity.KnowGraph.Know;
import com.teaching.backend.model.entity.KnowGraph.KnowCourse;
import org.springframework.data.neo4j.repository.Neo4jRepository;
import org.springframework.data.neo4j.repository.query.Query;
import java.util.List;
public interface KnowRepository extends Neo4jRepository<Know, Long> {
@Query("MATCH (p:Know), (c:Know) WHERE ID(p) = $id AND ID(c) IN $KnowIds CREATE (p)-[:related]->(c),(c)-[:related]->(p)")
void addKnowRelatedKnow(Long id, List<Long> KnowIds);
@Query("MATCH (p:Know), (c:Know) WHERE ID(p) = $id AND ID(c) IN $KnowIds CREATE (p)-[:FatherAndSon]->(c)")
void addKnowFatherAndSonKnow(Long id, List<Long> KnowIds);
@Query("MATCH(n)-[r:related]->(nn:Know) where ID(nn) = $id RETURN n")
List<Know> queryKnowAllKnowById(Long id);
@Query("CREATE (n:Know {name: $name, courseId: $courseId,info:$info,resourceList:$resourceList}) return n")
KnowCourse createKnowCourse(String courseId, String name, String info, List<Integer>resourceList);
}

@ -1,10 +0,0 @@
package com.teaching.backend.mapper.know;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.teaching.backend.model.entity.know.Know;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface KnowMapper extends BaseMapper<Know> {
}

@ -1,18 +0,0 @@
package com.teaching.backend.mapper.know;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.teaching.backend.model.entity.know.KnowRelationship;
import org.apache.ibatis.annotations.Mapper;
/**
* <p>
* Mapper 接口
* </p>
*
* @author author
* @since 2024-06-20
*/
@Mapper
public interface KnowRelationshipMapper extends BaseMapper<KnowRelationship> {
}

@ -0,0 +1,17 @@
package com.teaching.backend.mapper.records;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.teaching.backend.model.entity.records.CourseLearningRecord;
/**
* <p>
* Mapper 接口
* </p>
*
* @author author
* @since 2024-07-24
*/
public interface CourseLearningRecordMapper extends BaseMapper<CourseLearningRecord> {
}

@ -0,0 +1,17 @@
package com.teaching.backend.mapper.records;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.teaching.backend.model.entity.records.KnowledgeLearningRecord;
/**
* <p>
* Mapper 接口
* </p>
*
* @author author
* @since 2024-07-24
*/
public interface KnowledgeLearningRecordMapper extends BaseMapper<KnowledgeLearningRecord> {
}

@ -0,0 +1,17 @@
package com.teaching.backend.mapper.records;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.teaching.backend.model.entity.records.ResourceLearningRecord;
/**
* <p>
* Mapper 接口
* </p>
*
* @author author
* @since 2024-07-24
*/
public interface ResourceLearningRecordMapper extends BaseMapper<ResourceLearningRecord> {
}

@ -0,0 +1,31 @@
package com.teaching.backend.model.dto.KnowGraph;
/**
* @Author:youhang
* @Date:2024-07-23-17:30
* @Description:
*/
import com.teaching.backend.model.entity.KnowGraph.Links;
import com.teaching.backend.model.vo.knowGraph.KnowVO;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Set;
/**
* @Author:youhang
* @Date:2024-07-22-5:01
* @Description:
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class BaseKnowReturn {
private Set<KnowVO> knowList;
private Set<Links>linksList;
}

@ -0,0 +1,38 @@
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 KnowCourseCreateRequest implements Serializable {
/**
* 知识点名称
*/
private String courseId;
/**
* 知识点名称
*/
private String name;
/**
* 信息
*/
private String info;
/**
* 知识点所关联的资源
*/
@Property
private List<Integer> resourceList;
}

@ -0,0 +1,34 @@
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 KnowRequest implements Serializable {
/**
* 知识点名称
*/
private String name;
/**
* 信息
*/
private String info;
/**
* 知识点所关联的资源
*/
@Property
private List<Integer> resourceList;
}

@ -0,0 +1,37 @@
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 KnowUpdateRequest implements Serializable {
/**
* id
*/
private Long id;
/**
* 知识点名称
*/
private String name;
/**
* 信息
*/
private String info;
/**
* 知识点所关联的资源
*/
@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 RelationshipKnowRequest implements Serializable {
/**
* knowid
*/
private Long id;
/**
* 课程id
*/
private List<Long> KnowIds;
}

@ -1,19 +0,0 @@
package com.teaching.backend.model.dto.know;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* 知识点请求
*/
@Data
public class KnowQueryRequest implements Serializable {
/**
* 知识点名称
*/
private String name;
}

@ -1,48 +0,0 @@
package com.teaching.backend.model.dto.know;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* 知识点请求
*/
@Data
public class KnowRequest implements Serializable {
/**
* 知识点名称
*/
private String name;
/**
* 简介
*/
private String info;
/**
* 知识点内容
*/
private String content;
/**
* 知识点图片
*/
private String img;
/**
* 知识点学时
*/
private BigDecimal hour;
/**
* 资源id 运用json
*/
private String resourceid;
}

@ -1,54 +0,0 @@
package com.teaching.backend.model.dto.know;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* 知识点请求
*/
@Data
public class KnowupdateRequest implements Serializable {
/**
* 知识点id
*/
private Integer id;
/**
* 知识点名称
*/
private String name;
/**
* 简介
*/
private String info;
/**
* 知识点内容
*/
private String content;
/**
* 知识点图片
*/
private String img;
/**
* 知识点学时
*/
private BigDecimal hour;
/**
* 资源id 运用json
*/
private String resourceid;
}

@ -25,8 +25,13 @@ import java.util.stream.Stream;
@AllArgsConstructor @AllArgsConstructor
@TableName("Resource") @TableName("Resource")
public class CourseResources { public class CourseResources {
@TableId(value = "id", type = IdType.AUTO) private static final long serialVersionUID = 1L;
private int id;
/**
* 内部编号
*/
@TableId(value = "id", type = IdType.ASSIGN_ID)
private String id;
private String name; private String name;
private int type; private int type;
private int status; private int status;

@ -0,0 +1,45 @@
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 Know implements Serializable {
/**
* id
*/
@Id
@GeneratedValue
private Long id;
/**
* 知识点名称
*/
@Property
private String name;
/**
* 信息
*/
@Property
private String info;
/**
* 知识点所关联的资源
*/
@Property
private List<Integer> resourceList;
}

@ -0,0 +1,50 @@
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 KnowCourse implements Serializable {
/**
* id
*/
@Id
@GeneratedValue
private Long id;
/**
* 知识点名称
*/
private String courseId;
/**
* 知识点名称
*/
@Property
private String name;
/**
* 信息
*/
@Property
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-21-16:32
* @Description:
*/
@Data
@Node
public class Links {
@Id
@GeneratedValue
private Long id;
@Property
private Long source;
@Property
private Long target;
@Property
private String label;
}

@ -0,0 +1,168 @@
package com.teaching.backend.model.entity.courses;
/**
* @Author:youhang
* @Date:2024-07-07-21:21
* @Description:
*/
import java.util.Scanner;
class Num {
public int Zero = 0;
public int One = 0;
public int getZero() {
return Zero;
}
public void setZero(int zero) {
Zero = zero;
}
public int getOne() {
return One;
}
public void setOne(int one) {
One = one;
}
}
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
String[] arr = new String[n];
int counts = 0;
Num num = new Num();
for (int i = 0; i < n; i++) {
arr[i] = in.next();
}
int p = 1, q = 1;
while (p < n) {
if (arr[0].charAt(0) == '1') {
num.One += 1;
} else {
num.Zero += 1;
}
for (int i = 0; i <= p; i++) {
if (arr[i].charAt(p) == '1') {
num.One += 1;
} else {
num.Zero += 1;
}
if (arr[p].charAt(i) == '1') {
num.One += 1;
} else {
num.Zero += 1;
}
}
if (arr[p].charAt(p) == '1') {
num.One -= 1;
} else {
num.Zero -= 1;
}
if(num.Zero == num.One){
counts++;
}
num.One = 0;
num.Zero = 0;
if (arr[0].charAt(n-1) == '1') {
num.One += 1;
} else {
num.Zero += 1;
}
for (int i = 0; i <= p; i++) {
if (arr[i].charAt(n-1-p) == '1') {
num.One += 1;
} else {
num.Zero += 1;
}
if (arr[p].charAt(n-i-1) == '1') {
num.One += 1;
} else {
num.Zero += 1;
}
}
if (arr[p].charAt(n-p-1) == '1') {
num.One -= 1;
} else {
num.Zero -= 1;
}
if(num.Zero == num.One){
counts++;
}
//左下
num.One = 0;
num.Zero = 0;
if (arr[n-1].charAt(0) == '1') {
num.One += 1;
} else {
num.Zero += 1;
}
for (int i = 0; i <= p; i++) {
if (arr[n-1-i].charAt(p) == '1') {
num.One += 1;
} else {
num.Zero += 1;
}
if (arr[n-p-1].charAt(i) == '1') {
num.One += 1;
} else {
num.Zero += 1;
}
}
if (arr[n-p-1].charAt(p) == '1') {
num.One -= 1;
} else {
num.Zero -= 1;
}
if(num.Zero == num.One){
counts++;
}
//右下
num.One = 0;
num.Zero = 0;
if (arr[n-1].charAt(n-1) == '1') {
num.One += 1;
} else {
num.Zero += 1;
}
for (int i = 0; i <= p; i++) {
if (arr[n-1-i].charAt(n-p-1) == '1') {
num.One += 1;
} else {
num.Zero += 1;
}
if (arr[n-p-1].charAt(n-1-i) == '1') {
num.One += 1;
} else {
num.Zero += 1;
}
}
if (arr[n-p-1].charAt(n-1-p) == '1') {
num.One -= 1;
} else {
num.Zero -= 1;
}
if(num.Zero == num.One){
counts++;
}
p++;
}
}
}

@ -1,66 +0,0 @@
package com.teaching.backend.model.entity.know;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.Api;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("know")
public class Know implements Serializable {
private static final long serialVersionUID = 1L;
/**
* id
*/
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 知识点名称
*/
private String name;
/**
* 简介
*/
private String info;
/**
* 知识点内容
*/
private String content;
/**
* 知识点图片
*/
private String img;
/**
* 知识点学时
*/
private BigDecimal hour;
/**
* 资源id 运用json
*/
private String resourceid;
}

@ -1,46 +0,0 @@
package com.teaching.backend.model.entity.know;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* <p>
*
* </p>
*
* @author author
* @since 2024-06-20
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("know_relationship")
@ApiModel(value="KnowRelationship对象", description="")
public class KnowRelationship implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "章节id")
@TableField("chapterId")
private String chapterId;
@ApiModelProperty(value = "课程id")
@TableField("courseId")
private String courseId;
@ApiModelProperty(value = "知识点id")
@TableField("knowId")
private int knowId;
}

@ -0,0 +1,57 @@
package com.teaching.backend.model.entity.records;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.TableId;
import java.io.Serializable;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* <p>
*
* </p>
*
* @author author
* @since 2024-07-24
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("course_learning_record")
@ApiModel(value="CourseLearningRecord对象", description="")
public class CourseLearningRecord implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = " 课程记录id")
@TableId(value = "id", type = IdType.AUTO)
private String id;
@ApiModelProperty(value = "课程id")
@TableField("course_id")
private String courseId;
@ApiModelProperty(value = "用户id")
@TableField("user_id")
private String userId;
@ApiModelProperty(value = "观看人数")
@TableField("number")
private Integer number;
@ApiModelProperty(value = "记录封面")
@TableField("img")
private String img;
@ApiModelProperty(value = "最近学习时间")
@TableField("time")
private LocalDateTime time;
}

@ -0,0 +1,57 @@
package com.teaching.backend.model.entity.records;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.TableId;
import java.io.Serializable;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* <p>
*
* </p>
*
* @author author
* @since 2024-07-24
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("knowledge_learning_record")
@ApiModel(value="KnowledgeLearningRecord对象", description="")
public class KnowledgeLearningRecord implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "知识点学习记录id")
@TableId(value = "id", type = IdType.AUTO)
private String id;
@ApiModelProperty(value = "知识点id")
@TableField("knowledge_id")
private String knowledgeId;
@ApiModelProperty(value = "用户id")
@TableField("user_id")
private String userId;
@ApiModelProperty(value = "观看人数")
@TableField("number")
private Integer number;
@ApiModelProperty(value = "记录封面")
@TableField("img")
private String img;
@ApiModelProperty(value = "最近访问时间")
@TableField("time")
private LocalDateTime time;
}

@ -2,6 +2,7 @@ package com.teaching.backend.model.entity.records;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data; import lombok.Data;
@ -33,22 +34,10 @@ public class LearningRecords {
* 课程id * 课程id
*/ */
private String coursesId; private String coursesId;
/**
* 章节id
*/
private String chapterId;
/**
* 知识点id
*/
private String knowledgePointId;
/**
* 资源id
*/
private String resourceId;
/** /**
* 访问时间 * 访问时间
*/ */
private LocalDateTime accessTime; private LocalDateTime time;
/** /**
* 学习方式:打开; 1,打开过,2未打开 * 学习方式:打开; 1,打开过,2未打开
@ -86,11 +75,11 @@ public class LearningRecords {
*/ */
private String type; private String type;
/** /**
* 父节点 * 课程名称
*/ */
private String parentNode; private String coursesName;
/**
* 课程名称
*/
private int number;
} }

@ -0,0 +1,73 @@
package com.teaching.backend.model.entity.records;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.TableId;
import java.io.Serializable;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* <p>
*
* </p>
*
* @author author
* @since 2024-07-24
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("resource_learning_record")
@ApiModel(value="ResourceLearningRecord对象", description="")
public class ResourceLearningRecord implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "资源学习记录id")
@TableId(value = "id", type = IdType.AUTO)
private String id;
@ApiModelProperty(value = "资源id")
@TableField("resource_id")
private String resourceId;
@ApiModelProperty(value = "用户id")
@TableField("user_id")
private String userId;
@ApiModelProperty(value = "观看人数")
@TableField("number")
private Integer number;
@ApiModelProperty(value = "是否打开, 1:开打了; 2:未打开;")
@TableField("open")
private Integer open;
@ApiModelProperty(value = "是否下载, 1:下载了; 2:未下载;")
@TableField(" download")
private Integer download;
@ApiModelProperty(value = "学习时长")
@TableField("duration")
private Integer duration;
@ApiModelProperty(value = "是否完成观看")
@TableField("finish")
private Integer finish;
@ApiModelProperty(value = "记录封面")
@TableField("img")
private String img;
@ApiModelProperty(value = "最近学习时间")
@TableField("time")
private LocalDateTime time;
}

@ -0,0 +1,31 @@
package com.teaching.backend.model.vo.knowGraph;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
@Data
public class KnowVO implements Serializable {
/**
* id
*/
private Long id;
/**
* 知识点名称
*/
private String label;
/**
* 信息
*/
private String color;
}

@ -33,7 +33,7 @@ public class LearningRecordsVo {
/** /**
* 资源观看人数 * 资源观看人数
*/ */
private Long number; private int number;
/** /**

@ -0,0 +1,172 @@
package com.teaching.backend.service.KnowGraph;
import com.teaching.backend.mapper.KnowGraph.KnowRepository;
import com.teaching.backend.model.dto.KnowGraph.*;
import com.teaching.backend.model.entity.KnowGraph.Know;
import com.teaching.backend.model.entity.KnowGraph.KnowCourse;
import com.teaching.backend.model.entity.KnowGraph.Links;
import com.teaching.backend.model.vo.knowGraph.KnowVO;
import org.neo4j.driver.internal.InternalRelationship;
import org.neo4j.driver.types.Node;
import org.springframework.beans.BeanUtils;
import org.springframework.data.neo4j.core.Neo4jClient;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.*;
/**
* @Author:youhang
* @Date:2024-07-21-14:46
* @Description:
*/
@Service
public class KnowService {
private KnowRepository knowRepository;
@Resource
private Neo4jClient neo4jClient;
public KnowService(KnowRepository knowRepository) {
this.knowRepository = knowRepository;
}
public List<Know> queryKnowAllKnowById(Long id) {
return knowRepository.queryKnowAllKnowById(id);
}
public Know createKnow(KnowRequest knowRequest ) {
Know know = new Know();
BeanUtils.copyProperties(knowRequest,know);
return knowRepository.save(know);
}
public KnowCourse createCourseKnow(KnowCourseCreateRequest knowCourseCreateRequest ) {
return knowRepository.createKnowCourse(knowCourseCreateRequest.getCourseId(),knowCourseCreateRequest.getName(),knowCourseCreateRequest.getInfo(),knowCourseCreateRequest.getResourceList());
}
public void deleteKnow(Long id) {
knowRepository.deleteById(id);
}
public Know updateKnow(KnowUpdateRequest knowUpdateRequest ) {
Know know = new Know();
know = knowRepository.findById(knowUpdateRequest.getId()).orElseThrow(() -> new RuntimeException("知识点 not found"));
BeanUtils.copyProperties(knowUpdateRequest,know);
return knowRepository.save(know);
}
public void addKnowRelatedKnow( RelationshipKnowRequest relationshipKnowRequest) {
knowRepository.addKnowRelatedKnow(relationshipKnowRequest.getId(),relationshipKnowRequest.getKnowIds());
}
public void addKnowFatherAndSonKnow( RelationshipKnowRequest relationshipKnowRequest) {
knowRepository.addKnowFatherAndSonKnow(relationshipKnowRequest.getId(),relationshipKnowRequest.getKnowIds());
}
public BaseKnowReturn getKnowAll(String id) {
Collection<Map<String, Object>> all =
neo4jClient.query( "match(n:Know)-[r*0..]->(p:Know) where n.courseId = '"+id+"' return n as `n`,r as `r`,p as `p`,length(r) as `d`").fetch().all();
Map<Long,String>colorChoose = new HashMap<>();
String color[] = new String[10];
String[] colorList = {"#91CC75", "#5470C6", "#FAC858", "#EE6666", "#73C0DE", "#EA7CCC", "#5577FF", "#5577FF", "#9DBFFF", "#78A7FF"};
for (int i = 0; i < 10; i++) {
colorChoose.put((long) i,colorList[i]);
}
Iterator<Map<String, Object>> iterator = all.iterator();
Set<KnowVO> knowList = new HashSet<>();
Set<Links>linksList = new HashSet<>();
KnowVO knowVO;
List node2 = new ArrayList<>();
Links links;
int p = 0;
while (iterator.hasNext()) {
Map<String, Object> element = iterator.next();
knowVO = new KnowVO();
Node node1 = (Node) element.get("p");
Long group = (Long) element.get("d");
knowVO.setColor(colorChoose.get(group));
Long id1 = node1.id();
String name1 = node1.get("name").asString();
knowVO.setId(id1);
knowVO.setLabel(name1);
knowList.add(knowVO);
node2 = (List) element.get("r");
for (int i = 0; i < node2.size(); i++) {
InternalRelationship e = (InternalRelationship) node2.get(i);
links = new Links();
links.setId(e.id());
links.setSource(e.startNodeId());
links.setTarget(e.endNodeId());
links.setLabel(e.type());
linksList.add(links);
}
}
BaseKnowReturn baseKnowReturn = new BaseKnowReturn(knowList,linksList);
System.out.println(baseKnowReturn);
return baseKnowReturn;
}
public BaseKnowReturn getKnowById(Long id) {
Collection<Map<String, Object>> all =
neo4jClient.query( "match(n:Know)-[r*0..2]->(p:Know) where ID(n) = "+id+" return n as `n`,r as `r`,p as `p`,length(r) as `d`").fetch().all();
Map<Long,String>colorChoose = new HashMap<>();
String color[] = new String[10];
String[] colorList = {"#91CC75", "#5470C6", "#FAC858", "#EE6666", "#73C0DE", "#EA7CCC", "#5577FF", "#5577FF", "#9DBFFF", "#78A7FF"};
for (int i = 0; i < 10; i++) {
colorChoose.put((long) i,colorList[i]);
}
Iterator<Map<String, Object>> iterator = all.iterator();
Set<KnowVO> knowList = new HashSet<>();
Set<Links>linksList = new HashSet<>();
KnowVO knowVO;
List node2 = new ArrayList<>();
Links links;
int p = 0;
while (iterator.hasNext()) {
Map<String, Object> element = iterator.next();
knowVO = new KnowVO();
Node node1 = (Node) element.get("p");
Long group = (Long) element.get("d");
knowVO.setColor(colorChoose.get(group));
Long id1 = node1.id();
String name1 = node1.get("name").asString();
knowVO.setId(id1);
knowVO.setLabel(name1);
knowList.add(knowVO);
node2 = (List) element.get("r");
for (int i = 0; i < node2.size(); i++) {
InternalRelationship e = (InternalRelationship) node2.get(i);
links = new Links();
links.setId(e.id());
links.setSource(e.startNodeId());
links.setTarget(e.endNodeId());
links.setLabel(e.type());
linksList.add(links);
}
}
BaseKnowReturn baseKnowReturn = new BaseKnowReturn(knowList,linksList);
System.out.println(baseKnowReturn);
return baseKnowReturn;
}
}

@ -57,7 +57,7 @@ public class CourseResourcesServiceImpl extends ServiceImpl<CourseResourcesMappe
this.save(courseResources); this.save(courseResources);
int resourceId=courseResources.getId(); String resourceId=courseResources.getId();
System.out.println(resourceId); System.out.println(resourceId);
ResourceRelationship resourcesRelationship=new ResourceRelationship(); ResourceRelationship resourcesRelationship=new ResourceRelationship();
@ -159,6 +159,8 @@ public class CourseResourcesServiceImpl extends ServiceImpl<CourseResourcesMappe
public void saveCourseResource(CourseResources courseResources) { public void saveCourseResource(CourseResources courseResources) {
//将状态设置为1 //将状态设置为1
courseResources.setStatus(1); courseResources.setStatus(1);
//设置文件路径
courseResources.setPath(courseResources.getImg());
//设置默认图片 //设置默认图片
switch (courseResources.getType()){ switch (courseResources.getType()){
case 1 : courseResources.setImg("src\\assets\\icons\\ppt (2).png");//ppt的默认图片 case 1 : courseResources.setImg("src\\assets\\icons\\ppt (2).png");//ppt的默认图片
@ -179,10 +181,8 @@ public class CourseResourcesServiceImpl extends ServiceImpl<CourseResourcesMappe
} }
@Override @Override
public CourseResources editCourseResource(String resourceId) { public void editCourseResource(String resourceId) {
//根据id查数据 //根据id查数据
return this.getById(resourceId);
} }

@ -12,7 +12,6 @@ import com.teaching.backend.common.ErrorCode;
import com.teaching.backend.exception.BusinessException; import com.teaching.backend.exception.BusinessException;
import com.teaching.backend.mapper.chapter.ChapterMapper; import com.teaching.backend.mapper.chapter.ChapterMapper;
import com.teaching.backend.mapper.courses.*; import com.teaching.backend.mapper.courses.*;
import com.teaching.backend.mapper.know.KnowRelationshipMapper;
import com.teaching.backend.mapper.records.LearningRecordsMapper; import com.teaching.backend.mapper.records.LearningRecordsMapper;
import com.teaching.backend.mapper.umsAdmin.UmsTeacherMapper; import com.teaching.backend.mapper.umsAdmin.UmsTeacherMapper;
import com.teaching.backend.mapper.umsAdmin.UmsUserMapper; import com.teaching.backend.mapper.umsAdmin.UmsUserMapper;
@ -20,7 +19,6 @@ import com.teaching.backend.model.dto.courses.CoursesDTO;
import com.teaching.backend.model.dto.courses.PageDTO; import com.teaching.backend.model.dto.courses.PageDTO;
import com.teaching.backend.model.entity.chapter.Chapter; import com.teaching.backend.model.entity.chapter.Chapter;
import com.teaching.backend.model.entity.courses.*; import com.teaching.backend.model.entity.courses.*;
import com.teaching.backend.model.entity.know.KnowRelationship;
import com.teaching.backend.model.entity.records.LearningRecords; import com.teaching.backend.model.entity.records.LearningRecords;
import com.teaching.backend.model.entity.umsAdmin.UmsTeacher; import com.teaching.backend.model.entity.umsAdmin.UmsTeacher;
import com.teaching.backend.model.entity.umsAdmin.UmsUser; import com.teaching.backend.model.entity.umsAdmin.UmsUser;
@ -65,8 +63,6 @@ public class CoursesServiceImpl extends ServiceImpl<CoursesMapper, Courses> impl
@Autowired @Autowired
CoursesMapper coursesMapper; CoursesMapper coursesMapper;
@Autowired
KnowRelationshipMapper knowRelationshipMapper;
@Autowired @Autowired
CourseObjectivesMapper courseObjectivesMapper; CourseObjectivesMapper courseObjectivesMapper;
@ -144,43 +140,18 @@ public class CoursesServiceImpl extends ServiceImpl<CoursesMapper, Courses> impl
@Override @Override
public PageDTO<CoursesVO> queryCourses(CourseQuery courseQuery) { public PageDTO<CoursesVO> queryCourses(CourseQuery courseQuery) {
String username = courseQuery.getUsername();
// if (username == null || username.isEmpty()) {
// throw new BusinessException(ErrorCode.USERNAME_NOT_EXIT);
// }
int roleId = Integer.parseInt(umsUserMapper.selectOne(new LambdaQueryWrapper<UmsUser>() int roleId = Integer.parseInt(umsUserMapper.selectOne(new LambdaQueryWrapper<UmsUser>()
.eq(UmsUser::getUsername, username)).getRoleId()); .eq(UmsUser::getUsername, courseQuery.getUsername())).getRoleId());
// System.out.println(courseQuery.getRoleId());
// int roleId = Integer.parseInt(courseQuery.getRoleId().get(0));
// System.out.println(roleId);
// int roleId = Math.toIntExact(umsAdminRoleRelation.getRoleId());
// int roleId = 0;
// List<String> roleIdList = courseQuery.getRoleId();
// System.out.println(roleIdList);
// if (roleIdList != null && !roleIdList.isEmpty()) {
// Object firstElement = roleIdList.get(0);
//
// if (firstElement instanceof List) {
// List<?> innerList = (List<?>) firstElement;
// if (!innerList.isEmpty()) {
// roleId = Integer.parseInt((String) innerList.get(0));
// }
// } else if (firstElement instanceof String) {
// roleId = Integer.parseInt((String) firstElement);
// }
// }
PageDTO<CoursesVO> coursesVOPageDTO; PageDTO<CoursesVO> coursesVOPageDTO;
switch (roleId) { switch (roleId) {
//教师--也是管理员--但是只能看自己的课程,有搜索功能 //教师--也是管理员--但是只能看自己的课程,有搜索功能
case 1: case 1:
coursesVOPageDTO = queryForTeacher(courseQuery, username); coursesVOPageDTO = queryForTeacher(courseQuery);
break; break;
//学生 //学生
case 2: case 2:
coursesVOPageDTO = queryForStudent(courseQuery, username); coursesVOPageDTO = queryForStudent(courseQuery);
break; break;
//这个对应的是以后的院系管理员 这个才能看别的教师的课程 //这个对应的是以后的院系管理员 这个才能看别的教师的课程
case 3: case 3:
@ -189,16 +160,15 @@ public class CoursesServiceImpl extends ServiceImpl<CoursesMapper, Courses> impl
default: default:
throw new BusinessException(ErrorCode.INVALID_ROLE); throw new BusinessException(ErrorCode.INVALID_ROLE);
} }
populateTeacherNames(coursesVOPageDTO.getList()); populateTeacherNames(coursesVOPageDTO.getList());
return coursesVOPageDTO; return coursesVOPageDTO;
} }
private PageDTO<CoursesVO> queryForTeacher(CourseQuery courseQuery, String username) { private PageDTO<CoursesVO> queryForTeacher(CourseQuery courseQuery) {
Page<Courses> page = courseQuery.toMpPageDefaultSortByCreateTime(); Page<Courses> page = courseQuery.toMpPageDefaultSortByCreateTime();
Page<Courses> p = lambdaQuery() Page<Courses> p = lambdaQuery()
.like(courseQuery.getName() != null, Courses::getName, courseQuery.getName()) .like(courseQuery.getName() != null, Courses::getName, courseQuery.getName())
.apply("FIND_IN_SET({0}, teacher)", username) .apply("FIND_IN_SET({0}, teacher)", courseQuery.getUsername())
.eq(courseQuery.getCategory() != null && !courseQuery.getCategory().isEmpty(), Courses::getCategory, courseQuery.getCategory()) .eq(courseQuery.getCategory() != null && !courseQuery.getCategory().isEmpty(), Courses::getCategory, courseQuery.getCategory())
.eq(courseQuery.getNature() != null && !courseQuery.getNature().isEmpty(), Courses::getNature, courseQuery.getNature()) .eq(courseQuery.getNature() != null && !courseQuery.getNature().isEmpty(), Courses::getNature, courseQuery.getNature())
.eq(courseQuery.getAssessmenttype() != null &&!courseQuery.getAssessmenttype().isEmpty(), Courses::getAssessmenttype, courseQuery.getAssessmenttype()) .eq(courseQuery.getAssessmenttype() != null &&!courseQuery.getAssessmenttype().isEmpty(), Courses::getAssessmenttype, courseQuery.getAssessmenttype())
@ -206,9 +176,9 @@ public class CoursesServiceImpl extends ServiceImpl<CoursesMapper, Courses> impl
return PageDTO.of(p,CoursesVO.class); return PageDTO.of(p,CoursesVO.class);
} }
private PageDTO<CoursesVO> queryForStudent(CourseQuery courseQuery, String username) { private PageDTO<CoursesVO> queryForStudent(CourseQuery courseQuery) {
List<StudentCourses> studentCourses = studentCoursesMapper.selectList(new LambdaQueryWrapper<StudentCourses>() List<StudentCourses> studentCourses = studentCoursesMapper.selectList(new LambdaQueryWrapper<StudentCourses>()
.eq(StudentCourses::getStudent, username)); .eq(StudentCourses::getStudent, courseQuery.getUsername()));
List<String> coursesList = studentCourses.stream() List<String> coursesList = studentCourses.stream()
.map(StudentCourses::getCourse) .map(StudentCourses::getCourse)
.collect(Collectors.toList()); .collect(Collectors.toList());
@ -241,7 +211,7 @@ public class CoursesServiceImpl extends ServiceImpl<CoursesMapper, Courses> impl
UmsUser umsUserTea = umsUserMapper.selectOne(new LambdaQueryWrapper<UmsUser>() UmsUser umsUserTea = umsUserMapper.selectOne(new LambdaQueryWrapper<UmsUser>()
.eq(UmsUser::getUsername, teacherId)); .eq(UmsUser::getUsername, teacherId));
if (umsUserTea == null) { if (umsUserTea == null) {
throw new BusinessException(ErrorCode.OPERATION_ERROR); throw new BusinessException(ErrorCode.PARAMS_USER_NOTEXISTS);
} }
// System.out.println(umsAdminTea); // System.out.println(umsAdminTea);
UmsTeacher umsTeacher = umsTeacherMapper.selectOne(new LambdaQueryWrapper<UmsTeacher>() UmsTeacher umsTeacher = umsTeacherMapper.selectOne(new LambdaQueryWrapper<UmsTeacher>()
@ -294,11 +264,15 @@ public class CoursesServiceImpl extends ServiceImpl<CoursesMapper, Courses> impl
//删除课程的同时删除对应的记录 //删除课程的同时删除对应的记录
//先通过id查出对应的记录 //先通过id查出对应的记录
System.out.println("删!");
LambdaQueryWrapper<LearningRecords> lambdaQueryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<LearningRecords> lambdaQueryWrapper = new LambdaQueryWrapper<>();
System.out.println("id:"+id);
lambdaQueryWrapper.eq(LearningRecords::getCoursesId, id).eq(LearningRecords::getType, 1);//课程的type为1 lambdaQueryWrapper.eq(LearningRecords::getCoursesId, id).eq(LearningRecords::getType, 1);//课程的type为1
System.out.println("学习记录删除:"+learningRecordsMapper.selectList(lambdaQueryWrapper)); System.out.println("学习记录删除:"+learningRecordsMapper.selectList(lambdaQueryWrapper));
learningRecordsMapper.delete(lambdaQueryWrapper); List<LearningRecords> list = learningRecordsMapper.selectList(lambdaQueryWrapper);
if (list.size() > 0){
learningRecordsMapper.deleteBatchIds(list);
}
System.out.println("无记录!");
} }
@Override @Override
@ -310,7 +284,7 @@ public class CoursesServiceImpl extends ServiceImpl<CoursesMapper, Courses> impl
coursesVO.setTotalHours(countHours(courseid)); coursesVO.setTotalHours(countHours(courseid));
coursesVO.setTotalAssignHours(countChaptersHours(courseid)); coursesVO.setTotalAssignHours(countChaptersHours(courseid));
coursesVO.setTotalNotAssignHours(coursesVO.getTotalHours()-coursesVO.getTotalAssignHours()); coursesVO.setTotalNotAssignHours(coursesVO.getTotalHours()-coursesVO.getTotalAssignHours());
coursesVO.setTotalKnow(countKnow(courseid)); // coursesVO.setTotalKnow(countKnow(courseid));
System.out.println(coursesVO); System.out.println(coursesVO);
return coursesVO; return coursesVO;
} }
@ -362,20 +336,17 @@ public class CoursesServiceImpl extends ServiceImpl<CoursesMapper, Courses> impl
item.setTotalHours(countHours(item.getId())); item.setTotalHours(countHours(item.getId()));
item.setTotalchapter(countChapters(item.getId())); item.setTotalchapter(countChapters(item.getId()));
item.setTotalKnow(countKnow(item.getId())); // item.setTotalKnow(countKnow(item.getId()));
return item; return item;
}).collect(Collectors.toList()); }).collect(Collectors.toList());
return coursesVo; return coursesVo;
} }
// 计算课程知识点个数 // 计算课程知识点个数
public int countKnow(String courseid){ // public Integer countKnow(String courseid){
LambdaQueryWrapper<KnowRelationship> wrapper = new LambdaQueryWrapper<>(); // // 已修改 yh
wrapper.eq(KnowRelationship::getCourseId,courseid); // return knowRepository.findCountsByCourseId(courseid);
List<KnowRelationship> list = knowRelationshipMapper.selectList(wrapper); // }
int total=list.size();
return total;
}
// 计算课程已分配的学时 计算章的学时(即已包含了小节的学时) // 计算课程已分配的学时 计算章的学时(即已包含了小节的学时)
public int countChaptersHours(String courseid){ public int countChaptersHours(String courseid){
LambdaQueryWrapper<Chapter> wrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<Chapter> wrapper = new LambdaQueryWrapper<>();

@ -9,12 +9,10 @@ import com.teaching.backend.mapper.courses.CourseObjectivesMapper;
import com.teaching.backend.mapper.courses.CoursesMapper; import com.teaching.backend.mapper.courses.CoursesMapper;
import com.teaching.backend.mapper.courses.ObjectiveContentKnowMapper; import com.teaching.backend.mapper.courses.ObjectiveContentKnowMapper;
import com.teaching.backend.mapper.courses.ObjectiveContentsMapper; import com.teaching.backend.mapper.courses.ObjectiveContentsMapper;
import com.teaching.backend.mapper.know.KnowMapper;
import com.teaching.backend.model.dto.courses.ObjectiveContentKnowDTO; import com.teaching.backend.model.dto.courses.ObjectiveContentKnowDTO;
import com.teaching.backend.model.entity.courses.CourseObjectives; import com.teaching.backend.model.entity.courses.CourseObjectives;
import com.teaching.backend.model.entity.courses.ObjectiveContentKnow; import com.teaching.backend.model.entity.courses.ObjectiveContentKnow;
import com.teaching.backend.model.entity.courses.ObjectiveContents; import com.teaching.backend.model.entity.courses.ObjectiveContents;
import com.teaching.backend.model.entity.know.Know;
import com.teaching.backend.model.vo.courses.ObjectiveContentKnowVO; import com.teaching.backend.model.vo.courses.ObjectiveContentKnowVO;
import com.teaching.backend.service.courses.IObjectiveContentKnowService; import com.teaching.backend.service.courses.IObjectiveContentKnowService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -23,11 +21,9 @@ import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode; import java.math.RoundingMode;
import java.sql.SQLIntegrityConstraintViolationException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.UUID;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@ -43,8 +39,8 @@ public class ObjectiveContentKnowServiceImpl extends ServiceImpl<ObjectiveConten
@Autowired @Autowired
ObjectiveContentKnowMapper objectiveContentKnowMapper; ObjectiveContentKnowMapper objectiveContentKnowMapper;
@Autowired // @Autowired
KnowMapper knowMapper; // KnowMapper knowMapper;
@Autowired @Autowired
CourseObjectivesMapper courseObjectivesMapper; CourseObjectivesMapper courseObjectivesMapper;
@Autowired @Autowired
@ -147,18 +143,18 @@ public class ObjectiveContentKnowServiceImpl extends ServiceImpl<ObjectiveConten
vo.setKnowsNumber(objectiveContentKnows.size()); vo.setKnowsNumber(objectiveContentKnows.size());
// 计算知识点的总时间 // 计算知识点的总时间
BigDecimal knowsTime = objectiveContentKnows.stream() // BigDecimal knowsTime = objectiveContentKnows.stream()
.map(contentKnow -> { // .map(contentKnow -> {
Know know = knowMapper.selectOne(new LambdaQueryWrapper<Know>() // Know know = knowMapper.selectOne(new LambdaQueryWrapper<Know>()
.eq(Know::getId, contentKnow.getKnow())); // .eq(Know::getId, contentKnow.getKnow()));
if (know == null) { // if (know == null) {
throw new BusinessException(ErrorCode.KNOW_NOT_EXIT); // throw new BusinessException(ErrorCode.KNOW_NOT_EXIT);
} // }
return know.getHour(); // return know.getHour();
}) // })
.reduce(BigDecimal.ZERO, BigDecimal::add); // .reduce(BigDecimal.ZERO, BigDecimal::add);
vo.setKnowsTime(knowsTime); // vo.setKnowsTime(knowsTime);
return vo; return vo;
} }

@ -1,21 +0,0 @@
package com.teaching.backend.service.impl.know;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.teaching.backend.mapper.know.KnowRelationshipMapper;
import com.teaching.backend.model.entity.know.KnowRelationship;
import com.teaching.backend.service.know.IKnowRelationshipService;
import org.springframework.stereotype.Service;
/**
* <p>
* 服务实现类
* </p>
*
* @author author
* @since 2024-06-20
*/
@Service
public class KnowRelationshipServiceImpl extends ServiceImpl<KnowRelationshipMapper, KnowRelationship> implements IKnowRelationshipService {
}

@ -1,50 +0,0 @@
package com.teaching.backend.service.impl.know;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.teaching.backend.mapper.know.KnowMapper;
import com.teaching.backend.model.dto.know.KnowQueryRequest;
import com.teaching.backend.model.dto.know.KnowRequest;
import com.teaching.backend.model.dto.know.KnowupdateRequest;
import com.teaching.backend.model.entity.know.Know;
import com.teaching.backend.service.know.KnowService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class KnowServiceimpl extends ServiceImpl<KnowMapper,Know> implements KnowService {
@Autowired
private KnowMapper knowMapper;
@Override
public Boolean add(KnowRequest knowAddRequest) {
Know know = new Know();
BeanUtils.copyProperties(knowAddRequest,know);
return save(know);
}
@Override
public Boolean update(KnowupdateRequest knowAddRequest) {
Know know = new Know();
BeanUtils.copyProperties(knowAddRequest,know);
return (updateById(know));
}
@Override
public Integer deleteKnow(List<Integer> ids) {
Integer result = knowMapper.deleteBatchIds(ids);
return result;
}
@Override
public List<Know> query(KnowQueryRequest knowQueryRequest) {
String name = knowQueryRequest.getName();
QueryWrapper<Know> knowQueryWrapper = new QueryWrapper<>();
knowQueryWrapper.eq("name",name);
List<Know> knows = knowMapper.selectList(knowQueryWrapper);
return knows;
}
}

@ -0,0 +1,22 @@
package com.teaching.backend.service.impl.records;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.teaching.backend.mapper.records.CourseLearningRecordMapper;
import com.teaching.backend.model.entity.records.CourseLearningRecord;
import com.teaching.backend.service.records.ICourseLearningRecordService;
import org.springframework.stereotype.Service;
/**
* <p>
* 服务实现类
* </p>
*
* @author author
* @since 2024-07-24
*/
@Service
public class CourseLearningRecordServiceImpl extends ServiceImpl<CourseLearningRecordMapper, CourseLearningRecord> implements ICourseLearningRecordService {
}

@ -0,0 +1,22 @@
package com.teaching.backend.service.impl.records;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.teaching.backend.mapper.records.KnowledgeLearningRecordMapper;
import com.teaching.backend.model.entity.records.KnowledgeLearningRecord;
import com.teaching.backend.service.records.IKnowledgeLearningRecordService;
import org.springframework.stereotype.Service;
/**
* <p>
* 服务实现类
* </p>
*
* @author author
* @since 2024-07-24
*/
@Service
public class KnowledgeLearningRecordServiceImpl extends ServiceImpl<KnowledgeLearningRecordMapper, KnowledgeLearningRecord> implements IKnowledgeLearningRecordService {
}

@ -12,13 +12,12 @@ 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.CourseResourcesServiceImpl;
import com.teaching.backend.service.impl.chapter.ChapterServiceImpl;
import com.teaching.backend.service.impl.courses.CoursesServiceImpl; import com.teaching.backend.service.impl.courses.CoursesServiceImpl;
import com.teaching.backend.service.impl.know.KnowServiceimpl;
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 java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.time.LocalDateTime; import java.time.LocalDateTime;
@ -36,10 +35,8 @@ public class LearningRecordsServiceImpl extends ServiceImpl<LearningRecordsMappe
private LearningRecordsMapper learningRecordsMapper; private LearningRecordsMapper learningRecordsMapper;
@Autowired @Autowired
private CourseResourcesServiceImpl courseResourcesService; private CourseResourcesServiceImpl courseResourcesService;
@Autowired // @Autowired
private KnowServiceimpl knowledgePointService; // private ChapterServiceImpl chapterService;
@Autowired
private ChapterServiceImpl chapterService;
@Override @Override
public IPage<LearningRecords> selectPageList(Page<LearningRecords> page, LearningRecords model) { public IPage<LearningRecords> selectPageList(Page<LearningRecords> page, LearningRecords model) {
@ -55,92 +52,64 @@ public class LearningRecordsServiceImpl extends ServiceImpl<LearningRecordsMappe
for (LearningRecords learningRecords : list) { for (LearningRecords learningRecords : list) {
learningRecords.setStatus("0"); learningRecords.setStatus("0");
} }
this.updateBatchById(list); updateBatchById(list);
// System.out.println(this.updateBatchById(list)); // System.out.println(this.updateBatchById(list));
// this.remove(lambdaQueryWrapper); // this.remove(lambdaQueryWrapper);
return "删除成功"; return "删除成功";
} }
@Override @Override
public List<LearningRecordsVo> getAll(String userId){ public List<LearningRecordsVo> getAll(List<LearningRecords> list){
//格式化时间 List<LearningRecordsVo> records = new ArrayList<>();
//格式化时间 //格式化时间
String strDateFormat = "yyyy-MM-dd HH:mm:ss"; String strDateFormat = "yyyy-MM-dd HH:mm:ss";
SimpleDateFormat sdf = new SimpleDateFormat(strDateFormat); SimpleDateFormat sdf = new SimpleDateFormat(strDateFormat);
List<LearningRecordsVo> list = new ArrayList<>();
//将学习记录实体转成学习记录Vo实体
LambdaQueryWrapper<LearningRecords> lambdaQueryWrapper1 = new LambdaQueryWrapper<>();
lambdaQueryWrapper1
.orderByDesc(LearningRecords::getAccessTime)
.eq(LearningRecords::getUserId, userId)
.eq(LearningRecords::getStatus, "1");
System.out.println(this.list(lambdaQueryWrapper1));
//如果为空-------------------????? //如果为空-------------------?????
for (LearningRecords learningRecords : this.list(lambdaQueryWrapper1)) { list.forEach(learningRecords -> {
//查找该用户的学习记录 LearningRecordsVo learningRecordsVo = new LearningRecordsVo();//好像可以拿出去-----------??
// if (learningRecords.getUserId().equals(userId) && learningRecords.getStatus().equals("1")){ BeanUtils.copyProperties(learningRecords,learningRecordsVo);//从多传到少(时间需要转格式)
LearningRecordsVo learningRecordsVo = new LearningRecordsVo();//好像可以拿出去-----------?? Date date = Date.from(learningRecords.getTime().atZone(ZoneId.systemDefault()).toInstant());
BeanUtils.copyProperties(learningRecords,learningRecordsVo);//从多传到少(缺少人数,和资源名称,时间需要转格式) learningRecordsVo.setTime(sdf.format(date));
//添加时间 // //统计记录表里有多少人查看过这门资源
//LocalDateTime转Date // LambdaQueryWrapper<LearningRecords> lambdaQueryWrapper = new LambdaQueryWrapper<>();
Date date = Date.from(learningRecords.getAccessTime().atZone(ZoneId.systemDefault()).toInstant()); // lambdaQueryWrapper.eq(LearningRecords::getCoursesId, learningRecords.getCoursesId());
learningRecordsVo.setTime(sdf.format(date)); // long count = this.count(lambdaQueryWrapper);
LambdaQueryWrapper<LearningRecords> lambdaQueryWrapper = new LambdaQueryWrapper<>(); learningRecordsVo.setNumber(learningRecords.getNumber());
lambdaQueryWrapper.eq(LearningRecords::getCoursesId, learningRecords.getCoursesId()); //把整合后该用户的学习记录添加到List里
// System.out.println(learningRecords.getResourceId()); records.add(learningRecordsVo);
// System.out.println("1"); });
// for (LearningRecords learningRecords : list) {
String name; // //查找该用户的学习记录
//添加课程名称 // LearningRecordsVo learningRecordsVo = new LearningRecordsVo();//好像可以拿出去-----------??
switch (learningRecords.getType()) { // BeanUtils.copyProperties(learningRecords,learningRecordsVo);//从多传到少(缺少人数,和资源名称,时间需要转格式)
case "4": //如果是资源学习 // //添加时间
// //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){ // if (courseResourcesService.getById(learningRecords.getCoursesId()) != null){
// name=courseResourcesService.getById(learningRecords.getCoursesId()).getName(); // learningRecordsVo.setCoursesName(courseResourcesService.getById(learningRecords.getCoursesId()).getName());
// }else {
// name = "查无次记录";
// }
//如果对应的资源不存在
learningRecordsVo.setCoursesName(courseResourcesService.getById(learningRecords.getCoursesId()).getName());//设置名称 --------------------------------------------待完善
break;
case "3": //如果是知识点学习记录
// if (knowledgePointService.getById(learningRecords.getCoursesId()) != null){
// name=knowledgePointService.getById(learningRecords.getCoursesId()).getName();
// }else {
// name = "查无次记录";
// } // }
learningRecordsVo.setCoursesName(knowledgePointService.getById(learningRecords.getCoursesId()).getName()); // break;
//如果对应的资源不存在 // case "1": //如果是课程学习记录
break;
case "2": //如果是章节学习记录
// if (chapterService.getById(learningRecords.getCoursesId()) != null){
// name=chapterService.getById(learningRecords.getCoursesId()).getName();
// }else {
// name = "查无次记录";
// }
learningRecordsVo.setCoursesName(chapterService.getById(learningRecords.getCoursesId()).getName());
//如果对应的资源不存在
break;
case "1": //如果是课程学习记录
// if (coursesService.getById(learningRecords.getCoursesId()) != null){ // if (coursesService.getById(learningRecords.getCoursesId()) != null){
// name=coursesService.getById(learningRecords.getCoursesId()).getName(); // learningRecordsVo.setCoursesName(coursesService.getById(learningRecords.getCoursesId()).getName());
// }else {
// name = "查无次记录";
// } // }
learningRecordsVo.setCoursesName(coursesService.getById(learningRecords.getCoursesId()).getName()); // break;
//如果对应的资源不存在
break;
}
//添加观看人数
//统计记录表里有多少人查看过这门资源
long count = this.count(lambdaQueryWrapper);
learningRecordsVo.setNumber(count);
//把整合后该用户的学习记录添加到List里
list.add(learningRecordsVo);
// } // }
} // //添加观看人数
System.out.println(list); // //统计记录表里有多少人查看过这门资源
return list; // long count = this.count(lambdaQueryWrapper);
// learningRecordsVo.setNumber(count);
// //把整合后该用户的学习记录添加到List里
// records.add(learningRecordsVo);
// }
return records;
} }
/** /**
@ -149,6 +118,7 @@ public class LearningRecordsServiceImpl extends ServiceImpl<LearningRecordsMappe
* @return * @return
*/ */
@Override @Override
@Transactional
public String saveRecords(LearningRecords learningRecords) { public String saveRecords(LearningRecords learningRecords) {
String userId = learningRecords.getUserId(); String userId = learningRecords.getUserId();
String coursesId = learningRecords.getCoursesId(); String coursesId = learningRecords.getCoursesId();
@ -157,7 +127,7 @@ public class LearningRecordsServiceImpl extends ServiceImpl<LearningRecordsMappe
throw new BusinessException(ErrorCode.PARAMS_ERROR); throw new BusinessException(ErrorCode.PARAMS_ERROR);
} }
System.out.println("学习记录:"+learningRecords); // System.out.println("学习记录:"+learningRecords);
//查找该用户是否观看过该学习资源 //查找该用户是否观看过该学习资源
LambdaQueryWrapper<LearningRecords> lambdaQueryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<LearningRecords> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper lambdaQueryWrapper
@ -165,31 +135,27 @@ public class LearningRecordsServiceImpl extends ServiceImpl<LearningRecordsMappe
.eq(LearningRecords::getCoursesId, coursesId) .eq(LearningRecords::getCoursesId, coursesId)
.eq(LearningRecords::getType, learningRecords.getType()); .eq(LearningRecords::getType, learningRecords.getType());
long count = this.count(lambdaQueryWrapper); long count = this.count(lambdaQueryWrapper);
System.out.println("数据库:"+count); //System.out.println("数据库:"+count);
learningRecords.setStatus("1");//将该记录的状态设置为1 learningRecords.setStatus("1");//将该记录的状态设置为1
//更新观看时间 //更新观看时间
learningRecords.setAccessTime(LocalDateTime.now()); learningRecords.setTime(LocalDateTime.now());
//设置默认封面 //设置默认封面
if (learningRecords.getContent() == null || learningRecords.getContent().equals("")){ if (learningRecords.getContent() == null || learningRecords.getContent().equals("")){
learningRecords.setContent("img/v2-c57eb7863ec4233f503176ca3f90f8d5_1440w.png"); learningRecords.setContent("img/v2-c57eb7863ec4233f503176ca3f90f8d5_1440w.png");
} }
// //添加记录封面 List<LearningRecords> list = query().eq("courses_id", coursesId).eq("type", learningRecords.getType()).list();
// switch (learningRecords.getType()) { LearningRecords one1 = query().eq("courses_id", coursesId).eq("type", learningRecords.getType()).eq("user_id", userId).one();
// case "4": //如果是资源学习 int number = list.size();
// learningRecords.setContent(learningResourceService.getById(learningRecords.getCoursesId()).getContent());//设置封面 //该用户是否学习过
// break; if (one1 != null){//学习过观看人数不加
// case "3": //如果是知识点学习记录 learningRecords.setNumber(number);
// learningRecords.setContent(knowledgePointService.getById(learningRecords.getCoursesId()).getContent());//设置封面 list.forEach(learningRecords1 -> {
// learningRecords1.setNumber(number);
// break; });
// case "2": //如果是章节学习记录 } else {//否则观看人数加1
// learningRecords.setContent(chapterService.getById(learningRecords.getCoursesId()).getContent());//设置封面 learningRecords.setNumber(number + 1);
// }
// break; updateBatchById(list);
// case "1": //如果是课程学习记录
// learningRecords.setContent(coursesService.getById(learningRecords.getCoursesId()).getImg());//设置封面
// break;
// }
if (count == 0){//如果没有就新增并记录学习方式是打开还是下载 if (count == 0){//如果没有就新增并记录学习方式是打开还是下载
//根据传上来的type设置 //根据传上来的type设置
// learningRecords.setType(learningRecords.getType()); // learningRecords.setType(learningRecords.getType());

@ -0,0 +1,21 @@
package com.teaching.backend.service.impl.records;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.teaching.backend.mapper.records.ResourceLearningRecordMapper;
import com.teaching.backend.model.entity.records.ResourceLearningRecord;
import com.teaching.backend.service.records.IResourceLearningRecordService;
import org.springframework.stereotype.Service;
/**
* <p>
* 服务实现类
* </p>
*
* @author author
* @since 2024-07-24
*/
@Service
public class ResourceLearningRecordServiceImpl extends ServiceImpl<ResourceLearningRecordMapper, ResourceLearningRecord> implements IResourceLearningRecordService {
}

@ -1,16 +0,0 @@
package com.teaching.backend.service.know;
import com.baomidou.mybatisplus.extension.service.IService;
import com.teaching.backend.model.entity.know.KnowRelationship;
/**
* <p>
* 服务类
* </p>
*
* @author author
* @since 2024-06-20
*/
public interface IKnowRelationshipService extends IService<KnowRelationship> {
}

@ -1,23 +0,0 @@
package com.teaching.backend.service.know;
import com.baomidou.mybatisplus.extension.service.IService;
import com.teaching.backend.model.dto.favour.knowFavour.KnowFavourAddRequest;
import com.teaching.backend.model.dto.know.KnowQueryRequest;
import com.teaching.backend.model.dto.know.KnowRequest;
import com.teaching.backend.model.dto.know.KnowupdateRequest;
import com.teaching.backend.model.entity.know.Know;
import java.util.List;
public interface KnowService extends IService<Know> {
public Boolean add(KnowRequest knowAddRequest);
public Boolean update(KnowupdateRequest knowAddRequest);
public Integer deleteKnow(List<Integer> ids);
public List<Know> query(KnowQueryRequest knowQueryRequest);
}

@ -0,0 +1,17 @@
package com.teaching.backend.service.records;
import com.baomidou.mybatisplus.extension.service.IService;
import com.teaching.backend.model.entity.records.CourseLearningRecord;
/**
* <p>
* 服务类
* </p>
*
* @author author
* @since 2024-07-24
*/
public interface ICourseLearningRecordService extends IService<CourseLearningRecord> {
}

@ -0,0 +1,17 @@
package com.teaching.backend.service.records;
import com.baomidou.mybatisplus.extension.service.IService;
import com.teaching.backend.model.entity.records.KnowledgeLearningRecord;
/**
* <p>
* 服务类
* </p>
*
* @author author
* @since 2024-07-24
*/
public interface IKnowledgeLearningRecordService extends IService<KnowledgeLearningRecord> {
}

@ -0,0 +1,17 @@
package com.teaching.backend.service.records;
import com.baomidou.mybatisplus.extension.service.IService;
import com.teaching.backend.model.entity.records.ResourceLearningRecord;
/**
* <p>
* 服务类
* </p>
*
* @author author
* @since 2024-07-24
*/
public interface IResourceLearningRecordService extends IService<ResourceLearningRecord> {
}

@ -10,7 +10,7 @@ import com.teaching.backend.model.vo.records.LearningRecordsVo;
import java.util.List; import java.util.List;
public interface LearningRecordsService extends IService<LearningRecords> { public interface LearningRecordsService extends IService<LearningRecords> {
public List<LearningRecordsVo> getAll(String username); public List<LearningRecordsVo> getAll(List<LearningRecords> list);
public String saveRecords(LearningRecords learningRecords); public String saveRecords(LearningRecords learningRecords);
IPage<LearningRecords> selectPageList(Page<LearningRecords> page, LearningRecords model); IPage<LearningRecords> selectPageList(Page<LearningRecords> page, LearningRecords model);

@ -31,5 +31,5 @@ public interface CourseResourcesService extends IService<CourseResources> {
public void saveCourseResource(CourseResources courseResources); public void saveCourseResource(CourseResources courseResources);
public CourseResources editCourseResource(String resourceId); public void editCourseResource(String resourceId);
} }

@ -21,6 +21,7 @@
// //
//import javax.servlet.http.HttpServletRequest; //import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse; //import javax.servlet.http.HttpServletResponse;
//import java.lang.reflect.Field;
//import java.lang.reflect.Method; //import java.lang.reflect.Method;
//import java.util.Arrays; //import java.util.Arrays;
//import java.util.List; //import java.util.List;
@ -36,7 +37,7 @@
// private final String executeExpr = "execution(public * com.teaching.backend.controller..*.*(..))"; // private final String executeExpr = "execution(public * com.teaching.backend.controller..*.*(..))";
// //
// @Before(executeExpr) // @Before(executeExpr)
// public void processLog(JoinPoint joinPoint) { // public void processLog(JoinPoint joinPoint) throws IllegalAccessException {
// Method method = ((MethodSignature) joinPoint.getSignature()).getMethod(); // Method method = ((MethodSignature) joinPoint.getSignature()).getMethod();
// //获取方法名称 // //获取方法名称
// String methodName = method.getName(); // String methodName = method.getName();
@ -53,22 +54,25 @@
// final Object[] array = filteredArgs.stream().toArray(); // final Object[] array = filteredArgs.stream().toArray();
// //
// for (int i = 0; i < array.length; i++) { // for (int i = 0; i < array.length; i++) {
// String jsonStr = JSONUtil.toJsonStr(array[i]); // Class<?> clazz = array[i].getClass();
//// Class<?> myClass = array[i].getClass(); // 获取类的 Class 对象 // // 获取所有字段(包括私有字段)
// JSONObject entries = JSONUtil.parseObj(jsonStr); // Field[] fields = clazz.getDeclaredFields();
// System.out.println(entries); // for (Field field : fields) {
// // 遍历JSONObject的属性 // // 设置字段为可访问(如果需要访问私有字段)
// entries.forEach((key, value) -> { // field.setAccessible(true);
// if(value == null || "".equals(value)){ //
// //可以设置为空的字段 // // 获取字段的值
// if(key.equals( "sortField")||key.equals( "sortOrder")){ // Object value = field.get(array[i]);
// }else{ //
// throw new BusinessException(ErrorCode.PARAMS_NULL); // // 检查值是否为空
// } // if (value == null) {
// // // 这里可以抛出异常或记录日志,具体取决于你的需求
// } // String fieldName = field.getName();
//// System.out.println(key + ": " + value); // throw new IllegalArgumentException(fieldName + " @@@@@is null");
// }); // }
// }
//
//
// } // }
// } // }
// } // }

@ -0,0 +1,38 @@
package com.teaching.backend.utils;
import org.springframework.beans.BeanWrapper;
import org.springframework.beans.BeanWrapperImpl;
import java.math.BigDecimal;
import java.util.HashSet;
import java.util.Set;
/**
* @Author:youhang
* @Date:2024-06-23-12:45
* @Description:
*/
public class getNullPropertyNamesUtil {
public static String[] getNullPropertyNames (Object source) {
final BeanWrapper src = new BeanWrapperImpl(source);
java.beans.PropertyDescriptor[] pds = src.getPropertyDescriptors();
Set<String> emptyNames = new HashSet<String>();
for(java.beans.PropertyDescriptor pd : pds) {
Class<?> propertyType = src.getPropertyType(pd.getName());
Object srcValue = src.getPropertyValue(pd.getName());
// if ("Integer".equals(propertyType.getName()) || "Long".equals(propertyType.getName())){
// Integer value = (Integer) srcValue;
// if (value == 0) emptyNames.add(pd.getName());
// }
if ("BigDecimal".equals(propertyType.getName())){
BigDecimal value =(BigDecimal)srcValue;
if (value == null || (BigDecimal.ZERO).equals(0)) emptyNames.add(pd.getName());
}
if (srcValue == null || srcValue == "") emptyNames.add(pd.getName());
}
String[] result = new String[emptyNames.size()];
return emptyNames.toArray(result);
}
}

@ -7,6 +7,11 @@ spring:
multipart: multipart:
max-file-size: 10MB max-file-size: 10MB
max-request-size: 10MB max-request-size: 10MB
neo4j:
uri: bolt://39.106.16.162:7687
authentication:
username: neo4j # 连接Neo4j数据P库的用户名
password: 123456 # 连接Neo4j数据库的密码
mvc: mvc:
pathmatch: pathmatch:
matching-strategy: ant_path_matcher matching-strategy: ant_path_matcher

Loading…
Cancel
Save