fix: 班级管理状态调整

dev-tmp1
zhanglei 2026-08-24 11:02:01 +08:00
parent beeb4320a0
commit 4d2f222dad
2 changed files with 83 additions and 0 deletions

View File

@ -36,6 +36,10 @@
<groupId>io.swagger</groupId> <groupId>io.swagger</groupId>
<artifactId>swagger-annotations</artifactId> <artifactId>swagger-annotations</artifactId>
</dependency> </dependency>
<dependency>
<groupId>com.jjb.saas</groupId>
<artifactId>jjb-saas-framework-job</artifactId>
</dependency>
<!-- EasyExcel --> <!-- EasyExcel -->
<dependency> <dependency>

View File

@ -0,0 +1,79 @@
package org.qinan.cedu.service.support.job;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.jjb.saas.framework.job.Job;
import com.jjb.saas.framework.job.annotation.JobRegister;
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.context.XxlJobHelper;
import com.xxl.job.core.handler.annotation.XxlJob;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.qinan.cedu.enums.ClassStatusEnum;
import org.qinan.cedu.enums.DeleteEnum;
import org.qinan.cedu.mapper.ClassManagementMapper;
import org.qinan.cedu.model.entity.ClassManagementDO;
import org.springframework.stereotype.Component;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Objects;
/**
* 3
*
* @author ltq
* @since 2026/08/13
*/
@Component
@Slf4j
@RequiredArgsConstructor
public class ClassManagementStateJob implements Job {
private final ClassManagementMapper classManagementMapper;
/**
*
*/
@Override
@XxlJob("classManagementStateTask")
@JobRegister(cron = "0 7 0 * * ?",
jobDesc = "班级管理状态检查",
author = "ltq",
triggerStatus = 1)
public ReturnT<String> execute(String param) {
param = XxlJobHelper.getJobParam();
log.info("班级管理状态检查开始, param: {}", param);
List<ClassManagementDO> classManagementDOS = classManagementMapper.selectList(new LambdaQueryWrapper<ClassManagementDO>()
.ne(ClassManagementDO::getStatus, 1));
LocalDate now = LocalDate.now();
for (ClassManagementDO classManagementDO : classManagementDOS) {
log.info("班级管理状态检查 {}", classManagementDO.getClassName());
LocalDate start = classManagementDO.getStartDate().toLocalDate();
LocalDate end = classManagementDO.getDelayTime().toLocalDate();
if (Objects.isNull(end)) {
end = classManagementDO.getEndDate().toLocalDate();
}
ClassStatusEnum pendingStart;
if (now.isBefore(start)) {
pendingStart = ClassStatusEnum.PENDING_START;
} else if (now.isAfter(start) && now.isBefore(end)) {
pendingStart = ClassStatusEnum.IN_PROGRESS;
} else if (now.isAfter(end)) {
pendingStart = ClassStatusEnum.FINISHED;
} else {
pendingStart = ClassStatusEnum.NOT_APPLIED;
}
log.info("班级管理状态检查结束 {}, 状态: {}", classManagementDO.getClassName(), pendingStart.getDesc());
classManagementMapper.update(new LambdaUpdateWrapper<ClassManagementDO>()
.set(ClassManagementDO::getStatus, pendingStart.getCode())
.set(ClassManagementDO::getUpdateTime, LocalDateTime.now())
.eq(ClassManagementDO::getId, classManagementDO.getId())
.eq(ClassManagementDO::getDeleteEnum, DeleteEnum.FALSE.getCode()));
}
log.info("班级管理状态检查完成");
return ReturnT.SUCCESS;
}
}