|
@@ -1,9 +1,12 @@
|
|
|
package com.train.controller;
|
|
package com.train.controller;
|
|
|
|
|
|
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.train.common.Result;
|
|
import com.train.common.Result;
|
|
|
import com.train.entity.TrainClass;
|
|
import com.train.entity.TrainClass;
|
|
|
|
|
+import com.train.entity.TrainEnrollment;
|
|
|
import com.train.entity.TrainUser;
|
|
import com.train.entity.TrainUser;
|
|
|
import com.train.mapper.TrainClassMapper;
|
|
import com.train.mapper.TrainClassMapper;
|
|
|
|
|
+import com.train.mapper.TrainEnrollmentMapper;
|
|
|
import com.train.mapper.TrainUserMapper;
|
|
import com.train.mapper.TrainUserMapper;
|
|
|
import io.swagger.v3.oas.annotations.Operation;
|
|
import io.swagger.v3.oas.annotations.Operation;
|
|
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
|
@@ -11,6 +14,7 @@ import org.springframework.util.StringUtils;
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
import javax.annotation.Resource;
|
|
|
|
|
+import java.util.Date;
|
|
|
import java.util.HashMap;
|
|
import java.util.HashMap;
|
|
|
import java.util.Map;
|
|
import java.util.Map;
|
|
|
|
|
|
|
@@ -25,6 +29,9 @@ public class ClassController {
|
|
|
@Resource
|
|
@Resource
|
|
|
private TrainUserMapper trainUserMapper;
|
|
private TrainUserMapper trainUserMapper;
|
|
|
|
|
|
|
|
|
|
+ @Resource
|
|
|
|
|
+ private TrainEnrollmentMapper trainEnrollmentMapper;
|
|
|
|
|
+
|
|
|
/**
|
|
/**
|
|
|
* 凭班级码进班
|
|
* 凭班级码进班
|
|
|
*/
|
|
*/
|
|
@@ -50,6 +57,10 @@ public class ClassController {
|
|
|
user.setClassId(trainClass.getId());
|
|
user.setClassId(trainClass.getId());
|
|
|
trainUserMapper.updateById(user);
|
|
trainUserMapper.updateById(user);
|
|
|
|
|
|
|
|
|
|
+ // 联动 enrollment:若该班次有该学员 paid 状态的报名单,置 confirmed
|
|
|
|
|
+ // (FR-ENROLL-03:已报名学员通过班级码进班后联动确认)
|
|
|
|
|
+ confirmEnrollmentIfPresent(userId, trainClass.getId());
|
|
|
|
|
+
|
|
|
Map<String, Object> data = new HashMap<>();
|
|
Map<String, Object> data = new HashMap<>();
|
|
|
data.put("classId", trainClass.getId());
|
|
data.put("classId", trainClass.getId());
|
|
|
data.put("className", trainClass.getName());
|
|
data.put("className", trainClass.getName());
|
|
@@ -75,4 +86,26 @@ public class ClassController {
|
|
|
}
|
|
}
|
|
|
return Result.success(trainClass);
|
|
return Result.success(trainClass);
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 进班后联动报名单:若该学员有 paid 状态的报名单,置 confirmed(FR-ENROLL-03)。
|
|
|
|
|
+ * 无报名单则跳过(未报名直接进班场景不影响)。
|
|
|
|
|
+ */
|
|
|
|
|
+ private void confirmEnrollmentIfPresent(Long uid, Long classId) {
|
|
|
|
|
+ TrainEnrollment en = trainEnrollmentMapper.selectOne(
|
|
|
|
|
+ new LambdaQueryWrapper<TrainEnrollment>()
|
|
|
|
|
+ .eq(TrainEnrollment::getUid, uid)
|
|
|
|
|
+ .eq(TrainEnrollment::getClassId, classId)
|
|
|
|
|
+ .eq(TrainEnrollment::getStatus, "paid")
|
|
|
|
|
+ .last("LIMIT 1"));
|
|
|
|
|
+ if (en == null) {
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+ en.setStatus("confirmed");
|
|
|
|
|
+ en.setUpdatedAt(new Date());
|
|
|
|
|
+ trainEnrollmentMapper.updateById(en);
|
|
|
|
|
+ org.slf4j.LoggerFactory.getLogger(ClassController.class)
|
|
|
|
|
+ .info("进班联动 enrollment→confirmed: uid={}, classId={}, enrollmentId={}",
|
|
|
|
|
+ uid, classId, en.getId());
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|