学习记录init

master
wenyu441069198 8 months ago
parent 8183499357
commit 6f6365c52b
  1. 8
      pom.xml
  2. 20
      src/main/java/com/teaching/backend/controller/ChapterController.java
  3. 28
      src/main/java/com/teaching/backend/controller/chapter/ChapterController.java
  4. 89
      src/main/java/com/teaching/backend/controller/records/LearningRecordsController.java
  5. 16
      src/main/java/com/teaching/backend/mapper/ChapterMapper.java
  6. 4
      src/main/java/com/teaching/backend/mapper/know/KnowMapper.java
  7. 15
      src/main/java/com/teaching/backend/mapper/records/LearningRecordsMapper.java
  8. 1
      src/main/java/com/teaching/backend/model/entity/chapter/Chapter.java
  9. 3
      src/main/java/com/teaching/backend/model/entity/know/Know.java
  10. 96
      src/main/java/com/teaching/backend/model/entity/records/LearningRecords.java
  11. 59
      src/main/java/com/teaching/backend/model/vo/records/LearningRecordsVo.java
  12. 16
      src/main/java/com/teaching/backend/service/IChapterService.java
  13. 20
      src/main/java/com/teaching/backend/service/impl/ChapterServiceImpl.java
  14. 12
      src/main/java/com/teaching/backend/service/impl/know/IknowServiceimpl.java
  15. 185
      src/main/java/com/teaching/backend/service/impl/records/LearningRecordsServiceImpl.java
  16. 5
      src/main/java/com/teaching/backend/service/know/IknowService.java
  17. 19
      src/main/java/com/teaching/backend/service/records/LearningRecordsService.java
  18. 13
      src/main/java/com/teaching/service/impl/IknowServiceimpl.java

@ -97,6 +97,14 @@
<artifactId>hutool-all</artifactId>
<version>5.8.11</version>
</dependency>
<!-- pagehelper -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>4.1.6</version>
</dependency>
</dependencies>

@ -1,20 +0,0 @@
package com.teaching.backend.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 前端控制器
* </p>
*
* @author author
* @since 2024-06-07
*/
@RestController
@RequestMapping("/chapter")
public class ChapterController {
}

@ -1,28 +0,0 @@
package com.teaching.backend.controller.chapter;
import com.teaching.backend.service.chapter.IChapterService;
import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
*
* @author author
* @since 2024-05-31
*/
@Slf4j
@Api(tags = "章节管理")
@RestController
@RequestMapping("/chapter")
public class ChapterController {
@Autowired
private IChapterService chapterService;
}

@ -0,0 +1,89 @@
package com.teaching.backend.controller.records;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.teaching.backend.common.BaseResponse;
import com.teaching.backend.common.ResultUtils;
import com.teaching.backend.model.entity.records.LearningRecords;
import com.teaching.backend.model.vo.records.LearningRecordsVo;
import com.teaching.backend.service.impl.records.LearningRecordsServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
@RestController
@RequestMapping("/learningrecords")
public class LearningRecordsController {
@Autowired
private LearningRecordsServiceImpl learningRecordsService;
/**
* 获取当前登录用户的学习记录
* @param m
* @param pagenum
* @param pagesize
* @return
*/
@GetMapping("/getall")
public BaseResponse<PageInfo> getAll(Model m,
@RequestParam(value = "pagenum", defaultValue = "1") int pagenum,
@RequestParam(value = "pagesize", defaultValue = "15") int pagesize,
@RequestParam String userId){
PageHelper.startPage(pagenum,pagesize,"id desc");
List<LearningRecordsVo> cs= learningRecordsService.getAll(userId);
List<LearningRecordsVo> pageCs = new ArrayList<>();
//当前页面
for(int i = (pagenum - 1) * pagesize; i < cs.size() && i < (pagenum) * pagesize; i++){
pageCs.add(cs.get(i));
}
PageInfo<LearningRecordsVo> pageInfo = new PageInfo<>(pageCs);
System.out.println("当前页面:"+pagenum);
System.out.println("当前页面大小:"+pagesize);
System.out.println("当前页面内容:"+pageCs);
// PageInfo<LearningRecordsVo> pageInfo = new PageInfo<>(cs);
pageInfo.setPageSize(pagesize);//设置当前页面大小
pageInfo.setPageNum(pagenum);//设置当前页码
pageInfo.setSize(pagesize);//不知道是啥,---------
pageInfo.setTotal(cs.size());//设置总条数
long total = pageInfo.getTotal(); // 总记录数
pageInfo.setPages((int)(Math.ceil((double) total / pagesize)));//设置总页数
return ResultUtils.success(pageInfo);
}
@GetMapping("/all")
public BaseResponse<List<LearningRecords>> All(){
System.out.println("学习记录:"+learningRecordsService.list());
return ResultUtils.success(learningRecordsService.list());
}
//资源类型: 1,课程学习记录,2,知识点学习记录,3课程资源学习记录
/**
* 添加课程记录
* @param learningRecords
* @return
*/
@PostMapping("/saverecords")
public BaseResponse<String> saveRecords(@RequestBody LearningRecords learningRecords){
System.out.println(learningRecords);
return ResultUtils.success(learningRecordsService.saveRecords(learningRecords));
}
/**
* 根据id删除
* @param ids
* @return
*/
@DeleteMapping("/delete")
public BaseResponse<String> deleteRecords(@RequestParam List<Long> ids){
return ResultUtils.success(learningRecordsService.delete(ids));
}
}

@ -1,16 +0,0 @@
package com.teaching.backend.mapper;
import com.teaching.backend.entity.Chapter;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* Mapper 接口
* </p>
*
* @author author
* @since 2024-06-07
*/
public interface ChapterMapper extends BaseMapper<Chapter> {
}

@ -1,7 +1,7 @@
package com.teaching.mapper;
package com.teaching.backend.mapper.know;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.teaching.model.entity.Know;
import com.teaching.backend.model.entity.know.Know;
import org.apache.ibatis.annotations.Mapper;
@Mapper

@ -0,0 +1,15 @@
package com.teaching.backend.mapper.records;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.teaching.backend.model.entity.records.LearningRecords;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@Mapper
public interface LearningRecordsMapper extends BaseMapper<LearningRecords> {
IPage<LearningRecords> selectPageList(Page<LearningRecords> page, @Param("model")LearningRecords model);
}

@ -25,7 +25,6 @@ import java.time.LocalDateTime;
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("chapter")
@ApiModel(value="Chapter对象", description="")
public class Chapter implements Serializable {
private static final long serialVersionUID = 1L;

@ -1,4 +1,4 @@
package com.teaching.model.entity;
package com.teaching.backend.model.entity.know;
import io.swagger.annotations.Api;
import lombok.AllArgsConstructor;
@ -6,7 +6,6 @@ import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.Table;
import java.io.Serializable;
import java.time.LocalDateTime;

@ -0,0 +1,96 @@
package com.teaching.backend.model.entity.records;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.time.LocalDateTime;
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("learning_records")
public class LearningRecords {
private static final long serialVersionUID = 1L;
/**
* 内部编号
*/
@TableId(value = "id", type = IdType.ASSIGN_ID)
private String id;
/**
* 用户id
*/
private String userId;
/**
* 课程id
*/
private String coursesId;
/**
* 章节id
*/
private String chapterId;
/**
* 知识点id
*/
private String knowledgePointId;
/**
* 资源id
*/
private String resourceId;
/**
* 访问时间
*/
private LocalDateTime accessTime;
/**
* 学习方式:打开; 1,打开过,2未打开
*/
private String learningMethod1;
/**
* 学习方式:下载; 1下载过, 2未下载
*/
private String learningMethod2;
/**
*视频学习时长
*/
private String videoDuration;
/**
*是否完成观看1已完成0未完成
*/
private String isCompleted;
/**
* 记录封面图片
*/
private String content;
/**
* 资源地址
*/
private String address;
/**
* 是否存在: 1存在;0不存在;
*/
private String status;
/**
* 类型, :1,课程; 2,章节; 3,知识点; 4,学习资源
*/
private String type;
/**
* 父节点
*/
private String parentNode;
}

@ -0,0 +1,59 @@
package com.teaching.backend.model.vo.records;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class LearningRecordsVo {
// private static final long serialVersionUID = 1L;
/**
* 内部编号
*/
private String id;
/**
* 课程名称
*/
private String coursesName;
// /**
// * 资源类型
// */
// private String type;
/**
* 封面
*/
private String content;
/**
* 资源观看人数
*/
private Long number;
/**
* 上次观看时间
*/
private String time;
/**
* 地址
*/
private String address;
// /**
// * 创建日期
// */
// private LocalDateTime createTime;
//
// /**
// * 更新日期
// */
// private LocalDateTime updateTime;
}

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

@ -1,20 +0,0 @@
package com.teaching.backend.service.impl;
import com.teaching.backend.entity.Chapter;
import com.teaching.backend.mapper.ChapterMapper;
import com.teaching.backend.service.IChapterService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 服务实现类
* </p>
*
* @author author
* @since 2024-06-07
*/
@Service
public class ChapterServiceImpl extends ServiceImpl<ChapterMapper, Chapter> implements IChapterService {
}

@ -0,0 +1,12 @@
package com.teaching.backend.service.impl.know;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.teaching.backend.mapper.know.KnowMapper;
import com.teaching.backend.model.entity.know.Know;
import com.teaching.backend.service.know.IknowService;
import org.springframework.stereotype.Service;
@Service
public class IknowServiceimpl extends ServiceImpl<KnowMapper,Know> implements IknowService {
}

@ -0,0 +1,185 @@
package com.teaching.backend.service.impl.records;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.teaching.backend.mapper.records.LearningRecordsMapper;
import com.teaching.backend.model.entity.records.LearningRecords;
import com.teaching.backend.model.vo.records.LearningRecordsVo;
import com.teaching.backend.service.impl.chapter.ChapterServiceImpl;
import com.teaching.backend.service.impl.courses.CoursesServiceImpl;
import com.teaching.backend.service.impl.know.IknowServiceimpl;
import com.teaching.backend.service.records.LearningRecordsService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@Service
public class LearningRecordsServiceImpl extends ServiceImpl<LearningRecordsMapper, LearningRecords> implements LearningRecordsService {
@Autowired
private CoursesServiceImpl coursesService;
@Autowired
private LearningRecordsMapper learningRecordsMapper;
// @Autowired
// private LearningResourceServiceImpl learningResourceService;
@Autowired
private IknowServiceimpl knowledgePointService;
@Autowired
private ChapterServiceImpl chapterService;
@Override
public IPage<LearningRecords> selectPageList(Page<LearningRecords> page, LearningRecords model) {
return learningRecordsMapper.selectPageList(page,model);
}
@Override
public String delete(List<Long> ids) {
LambdaQueryWrapper<LearningRecords> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.in(LearningRecords::getId, ids);
List<LearningRecords> list = this.list(lambdaQueryWrapper);
//把即将要删除的记录状态调成0
for (LearningRecords learningRecords : list) {
learningRecords.setStatus("0");
}
this.updateBatchById(list);
// System.out.println(this.updateBatchById(list));
// this.remove(lambdaQueryWrapper);
return "删除成功";
}
@Override
public List<LearningRecordsVo> getAll(String userId){
//格式化时间
//格式化时间
String strDateFormat = "yyyy-MM-dd HH:mm:ss";
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)) {
//查找该用户的学习记录
// if (learningRecords.getUserId().equals(userId) && learningRecords.getStatus().equals("1")){
LearningRecordsVo learningRecordsVo = new LearningRecordsVo();//好像可以拿出去-----------??
BeanUtils.copyProperties(learningRecords,learningRecordsVo);//从多传到少(缺少人数,和资源名称,时间需要转格式)
//添加时间
//LocalDateTime转Date
Date date = Date.from(learningRecords.getAccessTime().atZone(ZoneId.systemDefault()).toInstant());
learningRecordsVo.setTime(sdf.format(date));
LambdaQueryWrapper<LearningRecords> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(LearningRecords::getCoursesId, learningRecords.getCoursesId());
// System.out.println(learningRecords.getResourceId());
// System.out.println("1");
//添加课程名称
switch (learningRecords.getType()) {
case "4": //如果是资源学习
learningRecordsVo.setCoursesName("学习资源");//设置名称 --------------------------------------------待完善
break;
case "3": //如果是知识点学习记录
learningRecordsVo.setCoursesName(knowledgePointService.getById(learningRecords.getCoursesId()).getName());
break;
case "2": //如果是章节学习记录
learningRecordsVo.setCoursesName(chapterService.getById(learningRecords.getCoursesId()).getName());
break;
case "1": //如果是课程学习记录
learningRecordsVo.setCoursesName(coursesService.getById(learningRecords.getCoursesId()).getName());
break;
}
//添加观看人数
//统计记录表里有多少人查看过这门资源
long count = this.count(lambdaQueryWrapper);
System.out.println(count);
learningRecordsVo.setNumber(count);
//把整合后该用户的学习记录添加到List里
list.add(learningRecordsVo);
// }
}
System.out.println(list);
return list;
}
/**
* 根据用户id和学习资源id来判断记录是否存在
* @param learningRecords
* @return
*/
@Override
public String saveRecords(LearningRecords learningRecords) {
String userId = learningRecords.getUserId();
String coursesId = learningRecords.getCoursesId();
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.setAccessTime(LocalDateTime.now());
//设置默认封面
if (learningRecords.getContent() == null || learningRecords.getContent().equals("")){
learningRecords.setContent("https://teaching-edu123.oss-cn-beijing.aliyuncs.com/Borovets_ZH-CN5914681811_UHD.jpg");
}
// //添加记录封面
// switch (learningRecords.getType()) {
// case "4": //如果是资源学习
// learningRecords.setContent(learningResourceService.getById(learningRecords.getCoursesId()).getContent());//设置封面
// break;
// case "3": //如果是知识点学习记录
// learningRecords.setContent(knowledgePointService.getById(learningRecords.getCoursesId()).getContent());//设置封面
//
// break;
// case "2": //如果是章节学习记录
// learningRecords.setContent(chapterService.getById(learningRecords.getCoursesId()).getContent());//设置封面
//
// break;
// case "1": //如果是课程学习记录
// learningRecords.setContent(coursesService.getById(learningRecords.getCoursesId()).getImg());//设置封面
// break;
// }
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.getLearningMethod1() != null && one.getLearningMethod1().equals("1")){
learningRecords.setLearningMethod1(one.getLearningMethod1());
}
if (one.getLearningMethod2() != null && one.getLearningMethod2().equals("1")){
learningRecords.setLearningMethod2(one.getLearningMethod2());
}
this.updateById(learningRecords);
return "修改成功";
}
}
}

@ -1,8 +1,7 @@
package com.teaching.service;
package com.teaching.backend.service.know;
import com.baomidou.mybatisplus.extension.service.IService;
import com.teaching.model.entity.Know;
import org.springframework.stereotype.Service;
import com.teaching.backend.model.entity.know.Know;
public interface IknowService extends IService<Know> {

@ -0,0 +1,19 @@
package com.teaching.backend.service.records;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.teaching.backend.model.entity.records.LearningRecords;
import com.teaching.backend.model.vo.records.LearningRecordsVo;
import java.util.List;
public interface LearningRecordsService extends IService<LearningRecords> {
public List<LearningRecordsVo> getAll(String username);
public String saveRecords(LearningRecords learningRecords);
IPage<LearningRecords> selectPageList(Page<LearningRecords> page, LearningRecords model);
public String delete(List<Long> ids);
}

@ -1,13 +0,0 @@
package com.teaching.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.teaching.mapper.KnowMapper;
import com.teaching.model.entity.Know;
import com.teaching.service.IknowService;
import org.springframework.stereotype.Service;
@Service
public class IknowServiceimpl extends ServiceImpl<KnowMapper,Know> implements IknowServic
e {
}
Loading…
Cancel
Save