1. 开始或继续一个【学习会话】API 2. 暂停一个【学习会话】API 3.通过sessionId获取一个【学习会话】API

This commit is contained in:
guo
2024-08-18 19:45:16 +08:00
parent da0f58b08b
commit e20439c98f
8 changed files with 221 additions and 7 deletions
@@ -4,20 +4,23 @@ 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 java.io.Serializable;
import java.time.LocalDateTime;
import com.guo.learningprogresstracker.enums.StudySessionStateEnum;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import java.io.Serializable;
import java.time.Duration;
import java.time.LocalDateTime;
/**
* 记录每次学习会话的具体数据
* @TableName study_sessions
*/
@TableName(value ="study_sessions")
@Slf4j
@Data
public class StudySessionsEntity extends BaseEntity implements Serializable {
/**
*
*/
@TableId(value = "session_id", type = IdType.AUTO)
private Integer sessionId;
@@ -33,6 +36,9 @@ public class StudySessionsEntity extends BaseEntity implements Serializable {
@TableField(value = "start_time")
private LocalDateTime startTime;
@TableField(value = "last_start_time")
private LocalDateTime lastStartTime;
/**
* 学习结束时间
*/
@@ -66,4 +72,42 @@ public class StudySessionsEntity extends BaseEntity implements Serializable {
@TableField(exist = false)
private static final long serialVersionUID = 1L;
/**
* 初始化新会话
* @return
*/
public static StudySessionsEntity initNewSession(){
StudySessionsEntity studySessionsEntity = new StudySessionsEntity();
studySessionsEntity.setStartTime(LocalDateTime.now());
studySessionsEntity.setLastModifiedTime(LocalDateTime.now());
studySessionsEntity.setSessionState(StudySessionStateEnum.ONGOING.name());
return studySessionsEntity;
}
/**
* 继续会话
*/
public void continueStudySession(){
if (this.getSessionState().equals(StudySessionStateEnum.PAUSED.name())){
this.setSessionState(StudySessionStateEnum.ONGOING.name());
this.setLastStartTime(LocalDateTime.now());
}else{
log.warn("不应出现的情况:开始了一个状态为【{}】的学习会话",this.getSessionState());
}
}
/**
* 暂停会话
*/
public void pausedStudySession(){
if (this.getSessionState().equals(StudySessionStateEnum.PAUSED.name())){
//
}else {
this.setEndTime(LocalDateTime.now());
this.setEffectiveTime((int) Duration.between(this.lastStartTime,this.endTime).toMinutes());
this.setActualTime((int) Duration.between(this.endTime,this.startTime).toMinutes());
this.setSessionState(StudySessionStateEnum.PAUSED.name());
}
}
}