|
|
|
|
@ -557,32 +557,36 @@ public class UserController {
|
|
|
|
|
@PostMapping("/addTeacherAccount")
|
|
|
|
|
@ApiOperation("教师管理-添加教师账号")
|
|
|
|
|
@AnonymousAccess
|
|
|
|
|
public ResultEntity addTeacherAccount(@ApiParam("学校ID") @RequestParam String schoolId,
|
|
|
|
|
@ApiParam("学校名称") @RequestParam String schoolName,
|
|
|
|
|
@ApiParam("院系ID") @RequestParam String schoolFacultyId,
|
|
|
|
|
@ApiParam("专业ID") @RequestParam String schoolMajorId,
|
|
|
|
|
@ApiParam("专业名称") @RequestParam String schoolMajorName,
|
|
|
|
|
public ResultEntity addTeacherAccount(@ApiParam("学校ID") @RequestParam(required = false) String schoolId,
|
|
|
|
|
@ApiParam("学校名称") @RequestParam(required = false) String schoolName,
|
|
|
|
|
@ApiParam("院系ID") @RequestParam(required = false) String schoolFacultyId,
|
|
|
|
|
@ApiParam("专业ID") @RequestParam(required = false) String schoolMajorId,
|
|
|
|
|
@ApiParam("专业名称") @RequestParam(required = false) String schoolMajorName,
|
|
|
|
|
@ApiParam("教师名称") @RequestParam String name,
|
|
|
|
|
@ApiParam("教师工号") @RequestParam String userName,
|
|
|
|
|
@ApiParam("电话号码") @RequestParam(required = false) String phone,
|
|
|
|
|
@ApiParam("电子邮箱") @RequestParam(required = false) String email,
|
|
|
|
|
@RequestParam(required = false) String operatorId) {
|
|
|
|
|
//先根据schoolId进行查询 如果不存在则返回
|
|
|
|
|
School school = schoolMapper.selectByPrimaryKey(schoolId);
|
|
|
|
|
//学校/院系/专业默认从当前操作用户继承;平台管理员可显式指定学校
|
|
|
|
|
Userinfo operator = StringUtils.isBlank(operatorId) ? null : userinfoMapper.selectByPrimaryKey(operatorId);
|
|
|
|
|
String effectiveSchoolId = isSchoolTeacher(operator) ? operator.getSchoolId() : StringUtils.trimToNull(schoolId);
|
|
|
|
|
if (StringUtils.isBlank(effectiveSchoolId)) {
|
|
|
|
|
return new ResultEntity<>(HttpStatus.BAD_REQUEST, "无法确定教师所属学校");
|
|
|
|
|
}
|
|
|
|
|
School school = schoolMapper.selectByPrimaryKey(effectiveSchoolId);
|
|
|
|
|
if (school == null) {
|
|
|
|
|
return new ResultEntity<>(HttpStatus.BAD_REQUEST, "该学校不存在");
|
|
|
|
|
}
|
|
|
|
|
if (!canManageSchoolStructure(operatorId, schoolId)) {
|
|
|
|
|
if (!canManageSchoolStructure(operatorId, effectiveSchoolId)) {
|
|
|
|
|
return noManagePermission();
|
|
|
|
|
}
|
|
|
|
|
//再根据schoolFacultyId查询 如果不存在则返回
|
|
|
|
|
SchoolFaculty schoolFaculty = schoolFacultyMapper.selectByPrimaryKey(schoolFacultyId);
|
|
|
|
|
if (schoolFaculty == null) {
|
|
|
|
|
String effectiveFacultyId = isSchoolTeacher(operator) ? StringUtils.trimToNull(operator.getSchoolFacultyId()) : StringUtils.trimToNull(schoolFacultyId);
|
|
|
|
|
String effectiveMajorId = isSchoolTeacher(operator) ? StringUtils.trimToNull(operator.getSchoolMajorId()) : StringUtils.trimToNull(schoolMajorId);
|
|
|
|
|
//院系/专业选填:有值才校验
|
|
|
|
|
if (StringUtils.isNotBlank(effectiveFacultyId) && schoolFacultyMapper.selectByPrimaryKey(effectiveFacultyId) == null) {
|
|
|
|
|
return new ResultEntity<>(HttpStatus.BAD_REQUEST, "该院系不存在");
|
|
|
|
|
}
|
|
|
|
|
//再根据schoolMajorId查询 如果不存在则返回
|
|
|
|
|
SchoolMajor schoolMajor = schoolMajorMapper.selectByPrimaryKey(schoolMajorId);
|
|
|
|
|
if (schoolMajor == null) {
|
|
|
|
|
if (StringUtils.isNotBlank(effectiveMajorId) && schoolMajorMapper.selectByPrimaryKey(effectiveMajorId) == null) {
|
|
|
|
|
return new ResultEntity<>(HttpStatus.BAD_REQUEST, "该专业不存在");
|
|
|
|
|
}
|
|
|
|
|
//检查userName是否已经存在
|
|
|
|
|
@ -599,9 +603,9 @@ public class UserController {
|
|
|
|
|
userInfo.setEmail(email);
|
|
|
|
|
userInfo.setCreateTime(new Date());
|
|
|
|
|
userInfo.setRole(3);
|
|
|
|
|
userInfo.setSchoolId(schoolId);
|
|
|
|
|
userInfo.setSchoolFacultyId(schoolFacultyId);
|
|
|
|
|
userInfo.setSchoolMajorId(schoolMajorId);
|
|
|
|
|
userInfo.setSchoolId(effectiveSchoolId);
|
|
|
|
|
userInfo.setSchoolFacultyId(effectiveFacultyId);
|
|
|
|
|
userInfo.setSchoolMajorId(effectiveMajorId);
|
|
|
|
|
userInfo.setSchoolClassId(null);
|
|
|
|
|
userInfo.setTeacherAdmin(false);
|
|
|
|
|
userInfo.setCodeFrom("添加");
|
|
|
|
|
@ -765,15 +769,18 @@ public class UserController {
|
|
|
|
|
if (!errorMessages.isEmpty()) {
|
|
|
|
|
return new ResultEntity<>(HttpStatus.BAD_REQUEST, "数据校验失败!", errorMessages);
|
|
|
|
|
}
|
|
|
|
|
for (TeacherImportDTO teacher : teacherList) {
|
|
|
|
|
String schoolId = schoolService.selectSchoolIdBySchoolName(teacher.getSchoolName());
|
|
|
|
|
if (!canManageSchoolStructure(operatorId, schoolId)) {
|
|
|
|
|
return noManagePermission();
|
|
|
|
|
}
|
|
|
|
|
// 教师的学校/院系/专业直接取自当前操作用户,不再从Excel的院校名称列解析
|
|
|
|
|
Userinfo operator = userinfoMapper.selectByPrimaryKey(operatorId);
|
|
|
|
|
String effectiveSchoolId = operator == null ? null : StringUtils.trimToEmpty(operator.getSchoolId());
|
|
|
|
|
if (StringUtils.isBlank(effectiveSchoolId)) {
|
|
|
|
|
return new ResultEntity<>(HttpStatus.BAD_REQUEST, "无法确定当前用户所属学校,导入失败");
|
|
|
|
|
}
|
|
|
|
|
if (!canManageSchoolStructure(operatorId, effectiveSchoolId)) {
|
|
|
|
|
return noManagePermission();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 异步处理导入*****
|
|
|
|
|
importService.processTeacherImport(teacherList);
|
|
|
|
|
importService.processTeacherImport(teacherList, operator);
|
|
|
|
|
return new ResultEntity<>(HttpStatus.OK, "导入成功!");
|
|
|
|
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
@ -815,9 +822,9 @@ public class UserController {
|
|
|
|
|
@AnonymousAccess
|
|
|
|
|
public ResultEntity addStudentAccount(@ApiParam("学校ID") @RequestParam String schoolId,
|
|
|
|
|
@ApiParam("学校名称") @RequestParam String schoolName,
|
|
|
|
|
@ApiParam("院系ID") @RequestParam String schoolFacultyId,
|
|
|
|
|
@ApiParam("专业ID") @RequestParam String schoolMajorId,
|
|
|
|
|
@ApiParam("专业名称") @RequestParam String schoolMajorName,
|
|
|
|
|
@ApiParam("院系ID") @RequestParam(required = false) String schoolFacultyId,
|
|
|
|
|
@ApiParam("专业ID") @RequestParam(required = false) String schoolMajorId,
|
|
|
|
|
@ApiParam("专业名称") @RequestParam(required = false) String schoolMajorName,
|
|
|
|
|
@ApiParam("班级名称") @RequestParam String schoolClassName,
|
|
|
|
|
@ApiParam("班级Id") @RequestParam String schoolClassId,
|
|
|
|
|
@ApiParam("学生姓名") @RequestParam String name,
|
|
|
|
|
@ -832,14 +839,11 @@ public class UserController {
|
|
|
|
|
if (school == null) {
|
|
|
|
|
return new ResultEntity<>(HttpStatus.BAD_REQUEST, "该学校不存在");
|
|
|
|
|
}
|
|
|
|
|
//再根据schoolFacultyId查询 如果不存在则返回
|
|
|
|
|
SchoolFaculty schoolFaculty = schoolFacultyMapper.selectByPrimaryKey(schoolFacultyId);
|
|
|
|
|
if (schoolFaculty == null) {
|
|
|
|
|
//院系/专业改为选填:传了才校验,不传直接入库为空
|
|
|
|
|
if (StringUtils.isNotBlank(schoolFacultyId) && schoolFacultyMapper.selectByPrimaryKey(schoolFacultyId) == null) {
|
|
|
|
|
return new ResultEntity<>(HttpStatus.BAD_REQUEST, "该院系不存在");
|
|
|
|
|
}
|
|
|
|
|
//再根据schoolMajorId查询 如果不存在则返回
|
|
|
|
|
SchoolMajor schoolMajor = schoolMajorMapper.selectByPrimaryKey(schoolMajorId);
|
|
|
|
|
if (schoolMajor == null) {
|
|
|
|
|
if (StringUtils.isNotBlank(schoolMajorId) && schoolMajorMapper.selectByPrimaryKey(schoolMajorId) == null) {
|
|
|
|
|
return new ResultEntity<>(HttpStatus.BAD_REQUEST, "该专业不存在");
|
|
|
|
|
}
|
|
|
|
|
SchoolClass schoolClass = schoolClassMapper.selectByPrimaryKey(schoolClassId);
|
|
|
|
|
@ -865,8 +869,8 @@ public class UserController {
|
|
|
|
|
userInfo.setRole(4);
|
|
|
|
|
userInfo.setTeacherAdmin(false);
|
|
|
|
|
userInfo.setSchoolId(effectiveSchoolId);
|
|
|
|
|
userInfo.setSchoolFacultyId(schoolFacultyId);
|
|
|
|
|
userInfo.setSchoolMajorId(schoolMajorId);
|
|
|
|
|
userInfo.setSchoolFacultyId(StringUtils.trimToNull(schoolFacultyId));
|
|
|
|
|
userInfo.setSchoolMajorId(StringUtils.trimToNull(schoolMajorId));
|
|
|
|
|
String adminClassId = "TEACHING".equals(schoolClass.getClassType())
|
|
|
|
|
? resolveAdminClassIdForTeachingClass(schoolClass)
|
|
|
|
|
: schoolClassId;
|
|
|
|
|
@ -2129,8 +2133,6 @@ public class UserController {
|
|
|
|
|
|
|
|
|
|
String name = StringUtils.trimToEmpty(row.getName());
|
|
|
|
|
String username = StringUtils.trimToEmpty(row.getUsername());
|
|
|
|
|
String facultyName = StringUtils.trimToEmpty(row.getSchoolFacultyName());
|
|
|
|
|
String majorName = StringUtils.trimToEmpty(row.getSchoolMajorName());
|
|
|
|
|
String className = StringUtils.trimToEmpty(row.getSchoolClassName());
|
|
|
|
|
String sex = normalizeTeacherImportSex(row.getSex());
|
|
|
|
|
|
|
|
|
|
@ -2147,32 +2149,16 @@ public class UserController {
|
|
|
|
|
if (StringUtils.isNotBlank(row.getSex()) && sex == null) {
|
|
|
|
|
errors.add("第" + rowNumber + "行:性别请填写男或女");
|
|
|
|
|
}
|
|
|
|
|
if (StringUtils.isBlank(facultyName)) {
|
|
|
|
|
errors.add("第" + rowNumber + "行:所属院系不能为空");
|
|
|
|
|
}
|
|
|
|
|
if (StringUtils.isBlank(majorName)) {
|
|
|
|
|
errors.add("第" + rowNumber + "行:所属专业不能为空");
|
|
|
|
|
}
|
|
|
|
|
if (StringUtils.isBlank(className)) {
|
|
|
|
|
errors.add("第" + rowNumber + "行:所属班级不能为空");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
SchoolFaculty faculty = StringUtils.isBlank(facultyName) ? null : findTeacherImportFaculty(operator.getSchoolId(), facultyName);
|
|
|
|
|
SchoolMajor major = null;
|
|
|
|
|
//院系/专业列已取消,班级直接按本校行政班名称匹配
|
|
|
|
|
SchoolClass schoolClass = null;
|
|
|
|
|
if (StringUtils.isNotBlank(facultyName) && faculty == null) {
|
|
|
|
|
errors.add("第" + rowNumber + "行:未找到院系“" + facultyName + "”");
|
|
|
|
|
}
|
|
|
|
|
if (faculty != null && StringUtils.isNotBlank(majorName)) {
|
|
|
|
|
major = findTeacherImportMajor(faculty.getSchoolFacultyId(), majorName);
|
|
|
|
|
if (major == null) {
|
|
|
|
|
errors.add("第" + rowNumber + "行:院系“" + facultyName + "”下未找到专业“" + majorName + "”");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (major != null && StringUtils.isNotBlank(className)) {
|
|
|
|
|
schoolClass = findTeacherImportClass(operator.getSchoolId(), major.getSchoolMajorId(), className);
|
|
|
|
|
if (StringUtils.isNotBlank(className)) {
|
|
|
|
|
schoolClass = findTeacherImportAdminClass(operator.getSchoolId(), className);
|
|
|
|
|
if (schoolClass == null) {
|
|
|
|
|
errors.add("第" + rowNumber + "行:专业“" + majorName + "”下未找到班级“" + className + "”");
|
|
|
|
|
errors.add("第" + rowNumber + "行:未找到行政班“" + className + "”");
|
|
|
|
|
} else if (!isAdminClass(schoolClass)) {
|
|
|
|
|
errors.add("第" + rowNumber + "行:学生账号只能导入行政班");
|
|
|
|
|
} else if (!canManageAdminClass(operator, schoolClass)) {
|
|
|
|
|
@ -2192,8 +2178,6 @@ public class UserController {
|
|
|
|
|
student.setRole(4);
|
|
|
|
|
student.setTeacherAdmin(false);
|
|
|
|
|
student.setSchoolId(operator.getSchoolId());
|
|
|
|
|
student.setSchoolFacultyId(faculty.getSchoolFacultyId());
|
|
|
|
|
student.setSchoolMajorId(major.getSchoolMajorId());
|
|
|
|
|
student.setSchoolClassId(schoolClass.getSchoolClassId());
|
|
|
|
|
student.setCreateTime(new Date());
|
|
|
|
|
student.setCodeFrom("Excel导入");
|
|
|
|
|
@ -2210,8 +2194,6 @@ public class UserController {
|
|
|
|
|
return StringUtils.isBlank(row.getName())
|
|
|
|
|
&& StringUtils.isBlank(row.getUsername())
|
|
|
|
|
&& StringUtils.isBlank(row.getSex())
|
|
|
|
|
&& StringUtils.isBlank(row.getSchoolFacultyName())
|
|
|
|
|
&& StringUtils.isBlank(row.getSchoolMajorName())
|
|
|
|
|
&& StringUtils.isBlank(row.getSchoolClassName())
|
|
|
|
|
&& StringUtils.isBlank(row.getPhone())
|
|
|
|
|
&& StringUtils.isBlank(row.getEmail());
|
|
|
|
|
@ -2241,30 +2223,23 @@ public class UserController {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private SchoolFaculty findTeacherImportFaculty(String schoolId, String facultyName) {
|
|
|
|
|
SchoolFacultyExample example = new SchoolFacultyExample();
|
|
|
|
|
private SchoolClass findTeacherImportClass(String schoolId, String majorId, String className) {
|
|
|
|
|
SchoolClassExample example = new SchoolClassExample();
|
|
|
|
|
example.createCriteria()
|
|
|
|
|
.andSchoolIdEqualTo(schoolId)
|
|
|
|
|
.andSchoolFacultyNameEqualTo(facultyName);
|
|
|
|
|
List<SchoolFaculty> faculties = schoolFacultyMapper.selectByExample(example);
|
|
|
|
|
return faculties.isEmpty() ? null : faculties.get(0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private SchoolMajor findTeacherImportMajor(String facultyId, String majorName) {
|
|
|
|
|
SchoolMajorExample example = new SchoolMajorExample();
|
|
|
|
|
example.createCriteria()
|
|
|
|
|
.andSchoolFacultyIdEqualTo(facultyId)
|
|
|
|
|
.andSchoolMajorNameEqualTo(majorName);
|
|
|
|
|
List<SchoolMajor> majors = schoolMajorMapper.selectByExample(example);
|
|
|
|
|
return majors.isEmpty() ? null : majors.get(0);
|
|
|
|
|
.andSchoolMajorIdEqualTo(majorId)
|
|
|
|
|
.andClassNameEqualTo(className);
|
|
|
|
|
List<SchoolClass> classes = schoolClassMapper.selectByExample(example);
|
|
|
|
|
return classes.isEmpty() ? null : classes.get(0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private SchoolClass findTeacherImportClass(String schoolId, String majorId, String className) {
|
|
|
|
|
//学生账号导入不再区分院系/专业,班级直接按本校行政班名称匹配
|
|
|
|
|
private SchoolClass findTeacherImportAdminClass(String schoolId, String className) {
|
|
|
|
|
SchoolClassExample example = new SchoolClassExample();
|
|
|
|
|
example.createCriteria()
|
|
|
|
|
.andSchoolIdEqualTo(schoolId)
|
|
|
|
|
.andSchoolMajorIdEqualTo(majorId)
|
|
|
|
|
.andClassNameEqualTo(className);
|
|
|
|
|
.andClassNameEqualTo(className)
|
|
|
|
|
.andClassTypeEqualTo("ADMIN");
|
|
|
|
|
List<SchoolClass> classes = schoolClassMapper.selectByExample(example);
|
|
|
|
|
return classes.isEmpty() ? null : classes.get(0);
|
|
|
|
|
}
|
|
|
|
|
|