fix: 【FCJDFDXTXS-190】手动添加报名记录逻辑修正:1.修改学习人数 2.判断此前是否存在记录

This commit is contained in:
liu.zixi
2025-12-19 09:51:01 +08:00
parent 4b8b9e47dc
commit fa62805efb

View File

@@ -84,56 +84,65 @@ public class StudySignupServiceImpl implements IStudySignupService{
}
signupDao.save(signup);
//添加到课程学习
LocalDateTime now=LocalDateTime.now();
StudyCourse sc=new StudyCourse();
sc.setAddTime(now);
sc.setAid(signup.getAid());
sc.setAname(signup.getName());
sc.setCourseId(signup.getCourseId());
sc.setCourseName(signup.getCourseName());
sc.setCourseType(signup.getCourseType());
sc.setStartTime(now);
sc.setFinishTime(null);
sc.setLastScore(0f);
sc.setProgress(0f);
sc.setSource(signup.getAuditType());//来源方式,和报名类型一致
sc.setStatus(StudyCourse.STATUS_NOSTUDY);
sc.setStatusTime(now);
sc.setLastTime(sc.getAddTime());
sc.setTotalDuration(0);
studyCourseDao.save(sc);
signup.setStudyId(sc.getId());
//发布到ES
if(esSearch!=null) {
CourseStudyDto dto=new CourseStudyDto();
dto.setId(sc.getId());
dto.setAccountId(sc.getAid());
dto.setCourseId(sc.getCourseId());
dto.setCourseImage(sc.getCourseImage());
dto.setCourseName(sc.getCourseName());
dto.setCourseType(sc.getCourseType());
dto.setProgress(sc.getProgress()==null? 0:sc.getProgress().intValue());
dto.setSource(2);//固定值,新系统
//下面模拟添加线下课程报名,用于本地测试
// 判断是否存在旧的学习记录
StudyCourse sc = studyCourseDao.findByCourseIdAndAid(signup.getAid(), signup.getCourseId());
if (sc != null) {
log.info("用户【{}】已存在学习记录,不再重复添加", signup.getName());
sc = studyCourseDao.findByCourseIdAndAid(signup.getAid(), signup.getCourseId());
} else {
LocalDateTime now=LocalDateTime.now();
sc=new StudyCourse();
sc.setAddTime(now);
sc.setAid(signup.getAid());
sc.setAname(signup.getName());
sc.setCourseId(signup.getCourseId());
sc.setCourseName(signup.getCourseName());
sc.setCourseType(signup.getCourseType());
sc.setStartTime(now);
sc.setFinishTime(null);
sc.setLastScore(0f);
sc.setProgress(0f);
sc.setSource(signup.getAuditType());//来源方式,和报名类型一致
sc.setStatus(StudyCourse.STATUS_NOSTUDY);
sc.setStatusTime(now);
sc.setLastTime(sc.getAddTime());
sc.setTotalDuration(0);
studyCourseDao.save(sc);
signup.setStudyId(sc.getId());
//发布到ES
if(esSearch!=null) {
CourseStudyDto dto=new CourseStudyDto();
dto.setId(sc.getId());
dto.setAccountId(sc.getAid());
dto.setCourseId(sc.getCourseId());
dto.setCourseImage(sc.getCourseImage());
dto.setCourseName(sc.getCourseName());
dto.setCourseType(sc.getCourseType());
dto.setProgress(sc.getProgress()==null? 0:sc.getProgress().intValue());
dto.setSource(2);//固定值,新系统
//下面模拟添加线下课程报名,用于本地测试
// dto.setCourseType(30);
// dto.setSource(3);//来源在线课
// dto.setSource(3);//来源在线课
// dto.setApplyStatus(50);
// dto.setCourseAddress("这里是上课地址");
// dto.setAttendCourseTime(LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8")));
//如果开始时间没有,就使用添加时间
if(sc.getStartTime()!=null) {
dto.setStartTime(sc.getStartTime().toEpochSecond(ZoneOffset.of("+8")));
}else {
dto.setStartTime(sc.getAddTime().toEpochSecond(ZoneOffset.of("+8")));
}
dto.setStatus(sc.getStatus());
try {
esSearch.publishOrUpdate(dto, null);
} catch (IOException e) {
log.error("ES发布报名课程学习【"+sc.getAname()+","+sc.getCourseName()+"】失败",e);
//如果开始时间没有,就使用添加时间
if(sc.getStartTime()!=null) {
dto.setStartTime(sc.getStartTime().toEpochSecond(ZoneOffset.of("+8")));
}else {
dto.setStartTime(sc.getAddTime().toEpochSecond(ZoneOffset.of("+8")));
}
dto.setStatus(sc.getStatus());
try {
esSearch.publishOrUpdate(dto, null);
} catch (IOException e) {
log.error("ES发布报名课程学习【"+sc.getAname()+","+sc.getCourseName()+"】失败",e);
}
}
}
//更新课程学习人数
courseDao.updateMultiFieldById(signup.getCourseId(),UpdateBuilder.create("studys", "studys+1",FieldUpdateType.EXPRESSION));
return sc;
//courseDao.updateMultiFieldById(signup.getCourseId(),UpdateBuilder.create("studys", "studys+1",FieldUpdateType.EXPRESSION));