|
|
@ -2,10 +2,11 @@ package com.ibeetl.jlw.service;
|
|
|
|
|
|
|
|
|
|
|
|
import cn.hutool.core.lang.Assert;
|
|
|
|
import cn.hutool.core.lang.Assert;
|
|
|
|
import cn.hutool.core.util.BooleanUtil;
|
|
|
|
import cn.hutool.core.util.BooleanUtil;
|
|
|
|
|
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
|
import cn.hutool.extra.validation.BeanValidationResult;
|
|
|
|
import cn.hutool.extra.validation.BeanValidationResult;
|
|
|
|
import cn.hutool.extra.validation.ValidationUtil;
|
|
|
|
import cn.hutool.extra.validation.ValidationUtil;
|
|
|
|
import cn.hutool.json.JSONUtil;
|
|
|
|
|
|
|
|
import cn.jlw.util.ToolUtils;
|
|
|
|
import cn.jlw.util.ToolUtils;
|
|
|
|
|
|
|
|
import cn.jlw.validator.TeacherOpenCourseStudentSigninLogSigninDTOValidator;
|
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
|
import com.ibeetl.admin.core.entity.CoreUser;
|
|
|
|
import com.ibeetl.admin.core.entity.CoreUser;
|
|
|
@ -22,7 +23,6 @@ import com.ibeetl.jlw.entity.TeacherOpenCourseStudentSigninLog;
|
|
|
|
import com.ibeetl.jlw.entity.TeacherOpenCourseStudentSigninSetting;
|
|
|
|
import com.ibeetl.jlw.entity.TeacherOpenCourseStudentSigninSetting;
|
|
|
|
import com.ibeetl.jlw.entity.dto.TeacherOpenCourseStudentSigninLogSigninDTO;
|
|
|
|
import com.ibeetl.jlw.entity.dto.TeacherOpenCourseStudentSigninLogSigninDTO;
|
|
|
|
import com.ibeetl.jlw.entity.dto.TeacherOpenCourseStudentSigninLogSigninDTO.ManualClass;
|
|
|
|
import com.ibeetl.jlw.entity.dto.TeacherOpenCourseStudentSigninLogSigninDTO.ManualClass;
|
|
|
|
import com.ibeetl.jlw.entity.dto.TeacherOpenCourseStudentSigninLogSigninDTO.TeacherOpenCourseStudentSigninLogTypeEnum;
|
|
|
|
|
|
|
|
import com.ibeetl.jlw.web.query.TeacherOpenCourseStudentSigninLogQuery;
|
|
|
|
import com.ibeetl.jlw.web.query.TeacherOpenCourseStudentSigninLogQuery;
|
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
|
import org.beetl.sql.core.SqlId;
|
|
|
|
import org.beetl.sql.core.SqlId;
|
|
|
@ -38,12 +38,15 @@ import java.util.Arrays;
|
|
|
|
import java.util.Date;
|
|
|
|
import java.util.Date;
|
|
|
|
import java.util.List;
|
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
|
|
|
|
import static cn.hutool.core.net.Ipv4Util.IP_SPLIT_MARK;
|
|
|
|
|
|
|
|
import static cn.hutool.core.net.NetUtil.ipv4ToLong;
|
|
|
|
|
|
|
|
import static cn.jlw.util.IpUtils.getIpAddr;
|
|
|
|
import static cn.jlw.util.IpUtils.getIpAddr;
|
|
|
|
|
|
|
|
import static cn.jlw.util.IpUtils.isRangeInner;
|
|
|
|
|
|
|
|
import static cn.jlw.util.ValidatorUtil.getFirstErrorMessage;
|
|
|
|
import static com.ibeetl.admin.core.util.servlet.ServletUtils.getRequest;
|
|
|
|
import static com.ibeetl.admin.core.util.servlet.ServletUtils.getRequest;
|
|
|
|
import static com.ibeetl.admin.core.util.user.CacheUserUtil.getUser;
|
|
|
|
import static com.ibeetl.admin.core.util.user.CacheUserUtil.getUser;
|
|
|
|
import static com.ibeetl.jlw.entity.TeacherOpenCourseStudentSigninSetting.ALL_SCHOOL_CLASS_IDS_SIGN;
|
|
|
|
import static com.ibeetl.jlw.entity.TeacherOpenCourseStudentSigninSetting.ALL_SCHOOL_CLASS_IDS_SIGN;
|
|
|
|
|
|
|
|
import static com.ibeetl.jlw.entity.dto.TeacherOpenCourseStudentSigninLogSigninDTO.TeacherOpenCourseStudentSigninLogTypeEnum.*;
|
|
|
|
|
|
|
|
import static com.ibeetl.jlw.web.query.TeacherOpenCourseStudentSigninLogQuery.SignInTypeEnum.SIGN_IN;
|
|
|
|
|
|
|
|
import static com.ibeetl.jlw.web.query.TeacherOpenCourseStudentSigninLogQuery.SignInTypeEnum.UN_SIGN_IN;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 学生签到记录 Service
|
|
|
|
* 学生签到记录 Service
|
|
|
@ -60,6 +63,7 @@ public class TeacherOpenCourseStudentSigninLogService extends CoreBaseService<Te
|
|
|
|
|
|
|
|
|
|
|
|
@Resource private TeacherOpenCourseMergeStudentService teacherOpenCourseMergeStudentService;
|
|
|
|
@Resource private TeacherOpenCourseMergeStudentService teacherOpenCourseMergeStudentService;
|
|
|
|
@Resource private StudentDao studentDao;
|
|
|
|
@Resource private StudentDao studentDao;
|
|
|
|
|
|
|
|
@Resource private TeacherOpenCourseStudentSigninLogSigninDTOValidator teacherOpenCourseStudentSigninLogSigninDTOValidator;
|
|
|
|
|
|
|
|
|
|
|
|
public PageQuery<TeacherOpenCourseStudentSigninLog>queryByCondition(PageQuery query){
|
|
|
|
public PageQuery<TeacherOpenCourseStudentSigninLog>queryByCondition(PageQuery query){
|
|
|
|
PageQuery ret = teacherOpenCourseStudentSigninLogDao.queryByCondition(query);
|
|
|
|
PageQuery ret = teacherOpenCourseStudentSigninLogDao.queryByCondition(query);
|
|
|
@ -194,6 +198,12 @@ public class TeacherOpenCourseStudentSigninLogService extends CoreBaseService<Te
|
|
|
|
// 通过签到配置ID查询对应的参数信息。用于下面的验证。
|
|
|
|
// 通过签到配置ID查询对应的参数信息。用于下面的验证。
|
|
|
|
TeacherOpenCourseStudentSigninSetting signinSetting = signinSettingList.get(0);
|
|
|
|
TeacherOpenCourseStudentSigninSetting signinSetting = signinSettingList.get(0);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 断言验证,学生某个课程只能签到一次
|
|
|
|
|
|
|
|
TeacherOpenCourseStudentSigninLog entity = new TeacherOpenCourseStudentSigninLog();
|
|
|
|
|
|
|
|
entity.setStudentId(signinDTO.getStudentId());
|
|
|
|
|
|
|
|
entity.setTeacherOpenCourseStudentSigninSettingId(signinSetting.getTeacherOpenCourseStudentSigninSettingId());
|
|
|
|
|
|
|
|
Assert.isTrue(ObjectUtil.isEmpty(teacherOpenCourseStudentSigninLogDao.template(entity)), "该学生已经签到过了!");
|
|
|
|
|
|
|
|
|
|
|
|
TeacherOpenCourseMergeStudent paras = new TeacherOpenCourseMergeStudent();
|
|
|
|
TeacherOpenCourseMergeStudent paras = new TeacherOpenCourseMergeStudent();
|
|
|
|
paras.setStudentId(signinDTO.getStudentId());
|
|
|
|
paras.setStudentId(signinDTO.getStudentId());
|
|
|
|
// 是否匹配指定的课程
|
|
|
|
// 是否匹配指定的课程
|
|
|
@ -203,15 +213,20 @@ public class TeacherOpenCourseStudentSigninLogService extends CoreBaseService<Te
|
|
|
|
Assert.isTrue(isMatchCourse, "未加入到该课程中,开课ID或学生ID有误!");
|
|
|
|
Assert.isTrue(isMatchCourse, "未加入到该课程中,开课ID或学生ID有误!");
|
|
|
|
|
|
|
|
|
|
|
|
switch (signinDTO.getTeacherOpenCourseStudentSigninLogType()) {
|
|
|
|
switch (signinDTO.getTeacherOpenCourseStudentSigninLogType()) {
|
|
|
|
case ip_signin: { // IP签到
|
|
|
|
// IP签到
|
|
|
|
|
|
|
|
case ip_signin: {
|
|
|
|
ipSignInHandler(signinDTO, signinSetting);
|
|
|
|
ipSignInHandler(signinDTO, signinSetting);
|
|
|
|
}break;
|
|
|
|
}break;
|
|
|
|
case manual_signin: { // 手动签到。教师端操作
|
|
|
|
// 手动签到。教师端操作
|
|
|
|
|
|
|
|
case manual_signin: {
|
|
|
|
manualSignInHandler(signinDTO, signinSetting);
|
|
|
|
manualSignInHandler(signinDTO, signinSetting);
|
|
|
|
}break;
|
|
|
|
}break;
|
|
|
|
case code_signin: { // 验证码签到
|
|
|
|
// 验证码签到
|
|
|
|
|
|
|
|
case code_signin: {
|
|
|
|
codeSignInHandler(signinDTO, signinSetting);
|
|
|
|
codeSignInHandler(signinDTO, signinSetting);
|
|
|
|
}break;
|
|
|
|
}break;
|
|
|
|
|
|
|
|
default:
|
|
|
|
|
|
|
|
throw new RuntimeException("不支持的签到类型,请核对!");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -244,6 +259,8 @@ public class TeacherOpenCourseStudentSigninLogService extends CoreBaseService<Te
|
|
|
|
public void ipSignInHandler(@Validated TeacherOpenCourseStudentSigninLogSigninDTO signinDTO,
|
|
|
|
public void ipSignInHandler(@Validated TeacherOpenCourseStudentSigninLogSigninDTO signinDTO,
|
|
|
|
@NotNull(message = "签到配置不能为空!") TeacherOpenCourseStudentSigninSetting signinSetting) {
|
|
|
|
@NotNull(message = "签到配置不能为空!") TeacherOpenCourseStudentSigninSetting signinSetting) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
teacherOpenCourseStudentSigninLogSigninDTOValidator.validator(signinDTO).validatorBySetting(signinSetting);
|
|
|
|
|
|
|
|
|
|
|
|
// 获取登录用户,教师身份不支持IP签到,教师只能手动签到
|
|
|
|
// 获取登录用户,教师身份不支持IP签到,教师只能手动签到
|
|
|
|
CoreUser user = getUser();
|
|
|
|
CoreUser user = getUser();
|
|
|
|
Assert.isTrue(user.isStudent(), "IP签到方式,只允许学生进行操作!");
|
|
|
|
Assert.isTrue(user.isStudent(), "IP签到方式,只允许学生进行操作!");
|
|
|
@ -252,45 +269,23 @@ public class TeacherOpenCourseStudentSigninLogService extends CoreBaseService<Te
|
|
|
|
Student student = studentDao.getByUserId(user.getId());
|
|
|
|
Student student = studentDao.getByUserId(user.getId());
|
|
|
|
Assert.isTrue(schoolClassIdJudgment(student.getClassId(), signinSetting), "该学生所在的班级不符合签到要求!");
|
|
|
|
Assert.isTrue(schoolClassIdJudgment(student.getClassId(), signinSetting), "该学生所在的班级不符合签到要求!");
|
|
|
|
|
|
|
|
|
|
|
|
// 传入的签到类型
|
|
|
|
|
|
|
|
TeacherOpenCourseStudentSigninLogTypeEnum signinLogTypeEnum = signinDTO.getTeacherOpenCourseStudentSigninLogType();
|
|
|
|
|
|
|
|
String inputSignInType = signinLogTypeEnum.name();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 根据type类型 验证Bean
|
|
|
|
|
|
|
|
BeanValidationResult beanValidationResult = ValidationUtil.warpValidate(signinDTO, signinLogTypeEnum.getClazz());
|
|
|
|
|
|
|
|
Assert.isTrue(beanValidationResult.isSuccess(), JSONUtil.toJsonStr(beanValidationResult.getErrorMessages()));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 通过签到配置ID查询到的类型,是否与传入的参数一致
|
|
|
|
|
|
|
|
Assert.isTrue(signinSetting.getTeacherOpenCourseStudentSigninSettingType().equalsIgnoreCase(inputSignInType), "签到类型不匹配!");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 获取到真实的IP
|
|
|
|
// 获取到真实的IP
|
|
|
|
String myIpAddress = getIpAddr(getRequest());
|
|
|
|
String myIpAddress = getIpAddr(getRequest());
|
|
|
|
// 我的IPv4转long类型
|
|
|
|
|
|
|
|
long myIpLong = ipv4ToLong(myIpAddress);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 是否在IP段区间
|
|
|
|
|
|
|
|
Boolean isRangeInner = false;
|
|
|
|
|
|
|
|
// 处理IP段,判断IP是否在这个区间内 192.168.1.1-192.168.1.100,192.168.2.1-192.168.2.100
|
|
|
|
|
|
|
|
for (String range : signinSetting.getTeacherOpenCourseStudentSigninSettingValue().split(",")) {
|
|
|
|
|
|
|
|
// 两个IP段。开始IP-结束IP
|
|
|
|
|
|
|
|
String[] ips = range.split(IP_SPLIT_MARK);
|
|
|
|
|
|
|
|
long startIpLong = ipv4ToLong(ips[0]);
|
|
|
|
|
|
|
|
long endIpLong = ipv4ToLong(ips[1]);
|
|
|
|
|
|
|
|
// 在区间内,则打标记
|
|
|
|
|
|
|
|
if((startIpLong >= myIpLong) && (myIpLong <= endIpLong)) {
|
|
|
|
|
|
|
|
isRangeInner = true;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 断言,如果IP不在指定的IP段内,则添加失败,异常信息丢给前台
|
|
|
|
// 断言,如果IP不在指定的IP段内,则添加失败,异常信息丢给前台
|
|
|
|
Assert.isTrue(isRangeInner, "您的IP地址:{},不在指定的IP段内!");
|
|
|
|
Assert.isTrue(isRangeInner(myIpAddress, signinSetting.getTeacherOpenCourseStudentSigninSettingValue()),
|
|
|
|
|
|
|
|
"您的IP地址:{},不在指定的IP段内!", myIpAddress);
|
|
|
|
|
|
|
|
|
|
|
|
// 构建实体
|
|
|
|
// 构建实体
|
|
|
|
TeacherOpenCourseStudentSigninLogQuery signinLogQuery = new TeacherOpenCourseStudentSigninLogQuery();
|
|
|
|
TeacherOpenCourseStudentSigninLogQuery signinLogQuery = new TeacherOpenCourseStudentSigninLogQuery();
|
|
|
|
|
|
|
|
signinLogQuery.setTeacherOpenCourseStudentSigninSettingId(signinSetting.getTeacherOpenCourseStudentSigninSettingId());
|
|
|
|
signinLogQuery.setTeacherOpenCourseId(signinSetting.getTeacherOpenCourseId());
|
|
|
|
signinLogQuery.setTeacherOpenCourseId(signinSetting.getTeacherOpenCourseId());
|
|
|
|
signinLogQuery.setTeacherOpenCourseStudentSigninLogType(inputSignInType);
|
|
|
|
signinLogQuery.setTeacherOpenCourseStudentSigninLogType(ip_signin.name());
|
|
|
|
signinLogQuery.setTeacherOpenCourseStudentSigninLogIp(myIpAddress);
|
|
|
|
signinLogQuery.setTeacherOpenCourseStudentSigninLogIp(myIpAddress);
|
|
|
|
|
|
|
|
signinLogQuery.setTeacherOpenCourseStudentSigninLogTag(SIGN_IN);
|
|
|
|
|
|
|
|
signinLogQuery.setSchoolClassId(student.getClassId());
|
|
|
|
signinLogQuery.setStudentId(signinDTO.getStudentId());
|
|
|
|
signinLogQuery.setStudentId(signinDTO.getStudentId());
|
|
|
|
|
|
|
|
|
|
|
|
// 学生签到记录添加
|
|
|
|
// 学生签到记录添加
|
|
|
|
add(signinLogQuery);
|
|
|
|
add(signinLogQuery);
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -304,29 +299,29 @@ public class TeacherOpenCourseStudentSigninLogService extends CoreBaseService<Te
|
|
|
|
public void manualSignInHandler(@Validated TeacherOpenCourseStudentSigninLogSigninDTO signinDTO,
|
|
|
|
public void manualSignInHandler(@Validated TeacherOpenCourseStudentSigninLogSigninDTO signinDTO,
|
|
|
|
@NotNull(message = "签到配置不能为空!") TeacherOpenCourseStudentSigninSetting signinSetting) {
|
|
|
|
@NotNull(message = "签到配置不能为空!") TeacherOpenCourseStudentSigninSetting signinSetting) {
|
|
|
|
|
|
|
|
|
|
|
|
TeacherOpenCourseStudentSigninLogTypeEnum signinLogTypeEnum = signinDTO.getTeacherOpenCourseStudentSigninLogType();
|
|
|
|
teacherOpenCourseStudentSigninLogSigninDTOValidator.validator(signinDTO).validatorBySetting(signinSetting);
|
|
|
|
// 传入的签到类型
|
|
|
|
|
|
|
|
String inputSignInType = signinLogTypeEnum.name();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 根据type类型 验证Bean
|
|
|
|
// 获取学生信息
|
|
|
|
BeanValidationResult beanValidationResult = ValidationUtil.warpValidate(signinDTO, signinLogTypeEnum.getClazz());
|
|
|
|
List<Student> studentList = studentDao.getByIds(signinDTO.getStudentId() + "");
|
|
|
|
Assert.isTrue(beanValidationResult.isSuccess(), JSONUtil.toJsonStr(beanValidationResult.getErrorMessages()));
|
|
|
|
Assert.notEmpty(studentList, "学生ID未查询到学生信息!");
|
|
|
|
|
|
|
|
Student student = studentList.get(0);
|
|
|
|
// 通过签到配置ID查询到的类型,是否与传入的参数一致
|
|
|
|
Assert.isTrue(schoolClassIdJudgment(student.getClassId(), signinSetting), "该学生所在的班级不符合签到要求!");
|
|
|
|
Assert.isTrue(signinSetting.getTeacherOpenCourseStudentSigninSettingType().equalsIgnoreCase(inputSignInType), "签到类型不匹配!");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 构建实体
|
|
|
|
// 构建实体
|
|
|
|
TeacherOpenCourseStudentSigninLogQuery signinLogQuery = new TeacherOpenCourseStudentSigninLogQuery();
|
|
|
|
TeacherOpenCourseStudentSigninLogQuery signinLogQuery = new TeacherOpenCourseStudentSigninLogQuery();
|
|
|
|
|
|
|
|
signinLogQuery.setTeacherOpenCourseStudentSigninSettingId(signinSetting.getTeacherOpenCourseStudentSigninSettingId());
|
|
|
|
signinLogQuery.setTeacherOpenCourseId(signinSetting.getTeacherOpenCourseId());
|
|
|
|
signinLogQuery.setTeacherOpenCourseId(signinSetting.getTeacherOpenCourseId());
|
|
|
|
signinLogQuery.setTeacherOpenCourseStudentSigninLogType(inputSignInType);
|
|
|
|
signinLogQuery.setTeacherOpenCourseStudentSigninLogType(manual_signin.name());
|
|
|
|
signinLogQuery.setTeacherOpenCourseStudentSigninLogIp(getIpAddr(getRequest()));
|
|
|
|
signinLogQuery.setTeacherOpenCourseStudentSigninLogIp(getIpAddr(getRequest()));
|
|
|
|
|
|
|
|
signinLogQuery.setTeacherOpenCourseStudentSigninLogTag(signinDTO.getIsAbsent() ? UN_SIGN_IN : SIGN_IN);
|
|
|
|
|
|
|
|
signinLogQuery.setSchoolClassId(student.getClassId());
|
|
|
|
signinLogQuery.setStudentId(signinDTO.getStudentId());
|
|
|
|
signinLogQuery.setStudentId(signinDTO.getStudentId());
|
|
|
|
|
|
|
|
|
|
|
|
// 是否缺席
|
|
|
|
// 是否缺席
|
|
|
|
if(BooleanUtil.isTrue(signinDTO.getIsAbsent())) {
|
|
|
|
if(BooleanUtil.isTrue(signinDTO.getIsAbsent())) {
|
|
|
|
// 断言验证缺席时候,必传的字段
|
|
|
|
// 断言验证缺席时候,必传的字段
|
|
|
|
BeanValidationResult isAbsentValidationResult = ValidationUtil.warpValidate(signinDTO, ManualClass.class);
|
|
|
|
BeanValidationResult isAbsentValidationResult = ValidationUtil.warpValidate(signinDTO, ManualClass.class);
|
|
|
|
Assert.isTrue(isAbsentValidationResult.isSuccess(), JSONUtil.toJsonStr(isAbsentValidationResult.getErrorMessages()));
|
|
|
|
Assert.isTrue(isAbsentValidationResult.isSuccess(), () -> getFirstErrorMessage(isAbsentValidationResult.getErrorMessages()));
|
|
|
|
signinLogQuery.setTeacherOpenCourseStudentSigninLogRemark(signinDTO.getTeacherOpenCourseStudentSigninLogRemark());
|
|
|
|
signinLogQuery.setTeacherOpenCourseStudentSigninLogRemark(signinDTO.getTeacherOpenCourseStudentSigninLogRemark());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// 学生签到记录添加
|
|
|
|
// 学生签到记录添加
|
|
|
@ -342,6 +337,8 @@ public class TeacherOpenCourseStudentSigninLogService extends CoreBaseService<Te
|
|
|
|
public void codeSignInHandler(@Validated TeacherOpenCourseStudentSigninLogSigninDTO signinDTO,
|
|
|
|
public void codeSignInHandler(@Validated TeacherOpenCourseStudentSigninLogSigninDTO signinDTO,
|
|
|
|
@NotNull(message = "签到配置不能为空!") TeacherOpenCourseStudentSigninSetting signinSetting) {
|
|
|
|
@NotNull(message = "签到配置不能为空!") TeacherOpenCourseStudentSigninSetting signinSetting) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
teacherOpenCourseStudentSigninLogSigninDTOValidator.validator(signinDTO).validatorBySetting(signinSetting);
|
|
|
|
|
|
|
|
|
|
|
|
// 获取登录用户,教师身份不支持IP签到,教师只能手动签到
|
|
|
|
// 获取登录用户,教师身份不支持IP签到,教师只能手动签到
|
|
|
|
CoreUser user = getUser();
|
|
|
|
CoreUser user = getUser();
|
|
|
|
Assert.isTrue(user.isStudent(), "验证码签到方式,只允许学生进行操作!");
|
|
|
|
Assert.isTrue(user.isStudent(), "验证码签到方式,只允许学生进行操作!");
|
|
|
@ -350,27 +347,19 @@ public class TeacherOpenCourseStudentSigninLogService extends CoreBaseService<Te
|
|
|
|
Student student = studentDao.getByUserId(user.getId());
|
|
|
|
Student student = studentDao.getByUserId(user.getId());
|
|
|
|
Assert.isTrue(schoolClassIdJudgment(student.getClassId(), signinSetting), "该学生所在的班级不符合签到要求!");
|
|
|
|
Assert.isTrue(schoolClassIdJudgment(student.getClassId(), signinSetting), "该学生所在的班级不符合签到要求!");
|
|
|
|
|
|
|
|
|
|
|
|
TeacherOpenCourseStudentSigninLogTypeEnum signinLogTypeEnum = signinDTO.getTeacherOpenCourseStudentSigninLogType();
|
|
|
|
|
|
|
|
// 传入的签到类型
|
|
|
|
|
|
|
|
String inputSignInType = signinLogTypeEnum.name();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 根据type类型 验证Bean
|
|
|
|
|
|
|
|
BeanValidationResult beanValidationResult = ValidationUtil.warpValidate(signinDTO, signinLogTypeEnum.getClazz());
|
|
|
|
|
|
|
|
Assert.isTrue(beanValidationResult.isSuccess(), JSONUtil.toJsonStr(beanValidationResult.getErrorMessages()));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 通过签到配置ID查询到的类型,是否与传入的参数一致
|
|
|
|
|
|
|
|
Assert.isTrue(signinSetting.getTeacherOpenCourseStudentSigninSettingType().equalsIgnoreCase(inputSignInType), "签到类型不匹配!");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 断言,验证码验证
|
|
|
|
// 断言,验证码验证
|
|
|
|
boolean verificationSuccess = signinSetting.getTeacherOpenCourseStudentSigninSettingValue().equals(signinDTO.getVerificationCode());
|
|
|
|
boolean verificationSuccess = signinSetting.getTeacherOpenCourseStudentSigninSettingValue().equals(signinDTO.getVerificationCode());
|
|
|
|
Assert.isTrue(verificationSuccess, "错误的验证码,签到失败!");
|
|
|
|
Assert.isTrue(verificationSuccess, "错误的验证码,签到失败!");
|
|
|
|
|
|
|
|
|
|
|
|
// 构建实体
|
|
|
|
// 构建实体
|
|
|
|
TeacherOpenCourseStudentSigninLogQuery signinLogQuery = new TeacherOpenCourseStudentSigninLogQuery();
|
|
|
|
TeacherOpenCourseStudentSigninLogQuery signinLogQuery = new TeacherOpenCourseStudentSigninLogQuery();
|
|
|
|
|
|
|
|
signinLogQuery.setTeacherOpenCourseStudentSigninSettingId(signinSetting.getTeacherOpenCourseStudentSigninSettingId());
|
|
|
|
signinLogQuery.setTeacherOpenCourseId(signinSetting.getTeacherOpenCourseId());
|
|
|
|
signinLogQuery.setTeacherOpenCourseId(signinSetting.getTeacherOpenCourseId());
|
|
|
|
signinLogQuery.setTeacherOpenCourseStudentSigninLogType(inputSignInType);
|
|
|
|
signinLogQuery.setTeacherOpenCourseStudentSigninLogType(code_signin.name());
|
|
|
|
signinLogQuery.setTeacherOpenCourseStudentSigninLogIp(getIpAddr(getRequest()));
|
|
|
|
signinLogQuery.setTeacherOpenCourseStudentSigninLogIp(getIpAddr(getRequest()));
|
|
|
|
|
|
|
|
signinLogQuery.setTeacherOpenCourseStudentSigninLogTag(SIGN_IN);
|
|
|
|
signinLogQuery.setStudentId(signinDTO.getStudentId());
|
|
|
|
signinLogQuery.setStudentId(signinDTO.getStudentId());
|
|
|
|
|
|
|
|
signinLogQuery.setSchoolClassId(student.getClassId());
|
|
|
|
|
|
|
|
|
|
|
|
// 学生签到记录添加
|
|
|
|
// 学生签到记录添加
|
|
|
|
add(signinLogQuery);
|
|
|
|
add(signinLogQuery);
|
|
|
|