|
|
|
@ -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());
|
|
|
|
|
|
|
|
|
|
// 学生签到记录添加
|
|
|
|
|