签到学生

beetlsql3-dev
Mlxa0324 2 years ago
parent 9abf61a5cc
commit 0aca48dad3

@ -4,7 +4,6 @@ import lombok.Data;
import lombok.Getter;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
/**
@ -23,11 +22,6 @@ public class TeacherOpenCourseStudentSigninLogSigninDTO {
// 签到配置ID
private Long teacherOpenCourseStudentSigninSettingId;
@NotEmpty(message = "学生ID不能为空")
// 学生ID参数传递支持老师的身份代替签到
private Long studentId;
@NotNull(message = "签到类型不能为空")
// 签到类型
private TeacherOpenCourseStudentSigninLogTypeEnum teacherOpenCourseStudentSigninLogType;

@ -52,6 +52,7 @@ import java.io.*;
import java.util.*;
import java.util.stream.Collectors;
import static cn.jlw.util.CacheUserUtil.getStudent;
import static cn.jlw.util.IpUtils.getIpAddr;
import static cn.jlw.util.IpUtils.isRangeInner;
import static cn.jlw.util.ValidatorUtil.getFirstErrorMessage;
@ -208,6 +209,9 @@ public class TeacherOpenCourseStudentSigninLogService extends CoreBaseService<Te
*/
public void signin(@Validated TeacherOpenCourseStudentSigninLogSigninDTO signinDTO) {
Student student = getStudent();
Assert.notNull(student, "该接口只能学生操作");
// 通过签到配置ID查询配置信息
List<TeacherOpenCourseStudentSigninSetting> signinSettingList =
teacherOpenCourseStudentSigninSettingDao.getByIds(signinDTO.getTeacherOpenCourseStudentSigninSettingId() + "");
@ -218,13 +222,10 @@ public class TeacherOpenCourseStudentSigninLogService extends CoreBaseService<Te
// 断言验证,学生某个课程只能签到一次。三种签到类型,都可以签到
TeacherOpenCourseStudentSigninLog entity = new TeacherOpenCourseStudentSigninLog();
entity.setStudentId(signinDTO.getStudentId());
entity.setStudentId(student.getStudentId());
entity.setTeacherOpenCourseStudentSigninSettingId(signinSetting.getTeacherOpenCourseStudentSigninSettingId());
Assert.isTrue(ObjectUtil.isEmpty(teacherOpenCourseStudentSigninLogDao.template(entity)), "该学生已经签到过了!");
// 查询学生在哪个班级
Student student = studentDao.createLambdaQuery().andEq(Student::getStudentId, signinDTO.getStudentId()).single("class_id");
// 判断是否加入到这个课程中
long teacherOpenCourseInCount = teacherOpenCourseMergeSchoolClassDao.createLambdaQuery()
.andEq(TeacherOpenCourseMergeSchoolClass::getSchoolClassId, student.getClassId())
@ -283,11 +284,9 @@ public class TeacherOpenCourseStudentSigninLogService extends CoreBaseService<Te
teacherOpenCourseStudentSigninLogSigninDTOValidator.validator(signinDTO).validatorBySetting(signinSetting);
// 获取登录用户教师身份不支持IP签到教师只能手动签到
CoreUser user = getUser();
Assert.isTrue(user.isStudent(), "IP签到方式只允许学生进行操作");
Student student = getStudent();
Assert.notNull(student, "IP签到方式只允许学生进行操作");
// 获取学生信息
Student student = studentDao.getByUserId(user.getId());
Assert.isTrue(schoolClassIdJudgment(student.getClassId(), signinSetting), "该学生所在的班级不符合签到要求!");
// 获取到真实的IP
@ -306,7 +305,7 @@ public class TeacherOpenCourseStudentSigninLogService extends CoreBaseService<Te
signinLogQuery.setTeacherOpenCourseStudentSigninLogIp(myIpAddress);
signinLogQuery.setTeacherOpenCourseStudentSigninLogTag(SIGN_IN);
signinLogQuery.setSchoolClassId(student.getClassId());
signinLogQuery.setStudentId(signinDTO.getStudentId());
signinLogQuery.setStudentId(student.getStudentId());
// 学生签到记录添加
add(signinLogQuery);
@ -324,9 +323,9 @@ public class TeacherOpenCourseStudentSigninLogService extends CoreBaseService<Te
teacherOpenCourseStudentSigninLogSigninDTOValidator.validator(signinDTO).validatorBySetting(signinSetting);
// 获取学生信息
List<Student> studentList = studentDao.getByIds(signinDTO.getStudentId() + "");
Assert.notEmpty(studentList, "学生ID未查询到学生信息");
Student student = studentList.get(0);
Student student = getStudent();
Assert.notNull(student, "IP签到方式只允许学生进行操作");
// 获取学生信息
Assert.isTrue(schoolClassIdJudgment(student.getClassId(), signinSetting), "该学生所在的班级不符合签到要求!");
// 构建实体
@ -338,7 +337,7 @@ public class TeacherOpenCourseStudentSigninLogService extends CoreBaseService<Te
signinLogQuery.setTeacherOpenCourseStudentSigninLogIp(getIpAddr(getRequest()));
signinLogQuery.setTeacherOpenCourseStudentSigninLogTag(signinDTO.getIsAbsent() ? UN_SIGN_IN : SIGN_IN);
signinLogQuery.setSchoolClassId(student.getClassId());
signinLogQuery.setStudentId(signinDTO.getStudentId());
signinLogQuery.setStudentId(student.getStudentId());
// 是否缺勤
if(BooleanUtil.isTrue(signinDTO.getIsAbsent())) {
@ -363,11 +362,10 @@ public class TeacherOpenCourseStudentSigninLogService extends CoreBaseService<Te
teacherOpenCourseStudentSigninLogSigninDTOValidator.validator(signinDTO).validatorBySetting(signinSetting);
// 获取登录用户教师身份不支持IP签到教师只能手动签到
CoreUser user = getUser();
Assert.isTrue(user.isStudent(), "验证码签到方式,只允许学生进行操作!");
// 获取学生信息
Student student = studentDao.getByUserId(user.getId());
Student student = getStudent();
Assert.notNull(student, "IP签到方式只允许学生进行操作");
// 获取学生信息
Assert.isTrue(schoolClassIdJudgment(student.getClassId(), signinSetting), "该学生所在的班级不符合签到要求!");
// 断言,验证码验证
@ -382,7 +380,7 @@ public class TeacherOpenCourseStudentSigninLogService extends CoreBaseService<Te
signinLogQuery.setTeacherOpenCourseStudentSigninLogType(code_signin.name());
signinLogQuery.setTeacherOpenCourseStudentSigninLogIp(getIpAddr(getRequest()));
signinLogQuery.setTeacherOpenCourseStudentSigninLogTag(SIGN_IN);
signinLogQuery.setStudentId(signinDTO.getStudentId());
signinLogQuery.setStudentId(student.getStudentId());
signinLogQuery.setSchoolClassId(student.getClassId());
// 学生签到记录添加

Loading…
Cancel
Save