|
|
|
@ -16,6 +16,7 @@ import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
import org.springframework.util.Assert;
|
|
|
|
|
import org.springframework.validation.annotation.Validated;
|
|
|
|
|
|
|
|
|
|
import java.security.MessageDigest;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
import java.util.function.Consumer;
|
|
|
|
|
|
|
|
|
@ -27,6 +28,7 @@ import static com.ibeetl.jlw.enums.GenderEnum.UN_KNOW;
|
|
|
|
|
/**
|
|
|
|
|
* 功能描述: <br>
|
|
|
|
|
* 第三方应用,登录Service
|
|
|
|
|
*
|
|
|
|
|
* @author: mlx
|
|
|
|
|
* @description:
|
|
|
|
|
* @date: 2022/12/11 15:35
|
|
|
|
@ -37,8 +39,32 @@ import static com.ibeetl.jlw.enums.GenderEnum.UN_KNOW;
|
|
|
|
|
@Validated
|
|
|
|
|
public class LoginTodoService {
|
|
|
|
|
|
|
|
|
|
@Autowired private TeacherDao teacherDao;
|
|
|
|
|
@Autowired private StudentDao studentDao;
|
|
|
|
|
@Autowired
|
|
|
|
|
private TeacherDao teacherDao;
|
|
|
|
|
@Autowired
|
|
|
|
|
private StudentDao studentDao;
|
|
|
|
|
|
|
|
|
|
public static String encryptToMD5(String input) {
|
|
|
|
|
try {
|
|
|
|
|
MessageDigest md = MessageDigest.getInstance("MD5");
|
|
|
|
|
byte[] messageDigest = md.digest(input.getBytes());
|
|
|
|
|
|
|
|
|
|
StringBuilder hexString = new StringBuilder();
|
|
|
|
|
for (byte b : messageDigest) {
|
|
|
|
|
String hex = Integer.toHexString(0xff & b);
|
|
|
|
|
if (hex.length() == 1) {
|
|
|
|
|
hexString.append('0');
|
|
|
|
|
}
|
|
|
|
|
hexString.append(hex).append('-');
|
|
|
|
|
}
|
|
|
|
|
hexString.deleteCharAt(hexString.length() - 1); // 移除末尾多余的连字符
|
|
|
|
|
return hexString.toString().toUpperCase(); // 转换为大写形式
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 功能描述: <br>
|
|
|
|
|
* 设置学生信息
|
|
|
|
@ -60,6 +86,8 @@ public class LoginTodoService {
|
|
|
|
|
Assert.notNull(first, "未获取到院校信息!");
|
|
|
|
|
// 类型为未知 时候,传递null
|
|
|
|
|
String gender = UN_KNOW.equals(student.getStudentGender()) || student.getStudentGender() == null ? null : student.getStudentGender().getText();
|
|
|
|
|
String md5Pwd = encryptToMD5(coreUser.getPassword());
|
|
|
|
|
|
|
|
|
|
LoginTodo loginTodo = LoginTodo.builder().username(coreUser.getCode())
|
|
|
|
|
.password(coreUser.getPassword())
|
|
|
|
|
.roleid(LoginTodo.ThirdRole.STUDENT_ROLE.getCode())
|
|
|
|
@ -75,6 +103,7 @@ public class LoginTodoService {
|
|
|
|
|
.userId(coreUser.getOldId().toString())
|
|
|
|
|
.icibtClassId(first.getIcibtClassId())
|
|
|
|
|
.icibtSchoolId(first.getIcibtSchoolId())
|
|
|
|
|
.md5Pwd(md5Pwd)
|
|
|
|
|
.build();
|
|
|
|
|
consumer.accept(loginTodo);
|
|
|
|
|
return loginTodo;
|
|
|
|
@ -103,7 +132,7 @@ public class LoginTodoService {
|
|
|
|
|
|
|
|
|
|
// 类型为未知 时候,传递null
|
|
|
|
|
String gender = UN_KNOW.equals(teacher.getTeacherGender()) || teacher.getTeacherGender() == null ? null : teacher.getTeacherGender().getText();
|
|
|
|
|
|
|
|
|
|
String md5Pwd = encryptToMD5(coreUser.getPassword());
|
|
|
|
|
LoginTodo loginTodo = LoginTodo.builder().username(coreUser.getCode())
|
|
|
|
|
.password(coreUser.getPassword())
|
|
|
|
|
.roleid(LoginTodo.ThirdRole.TEACHER_ROLE.getCode())
|
|
|
|
@ -114,6 +143,9 @@ public class LoginTodoService {
|
|
|
|
|
.college(first.getUniversityFacultyName())
|
|
|
|
|
.major(first.getUniversitySystemName())
|
|
|
|
|
.userId(coreUser.getId().toString())
|
|
|
|
|
.icibtSchoolId(first.getIcibtSchoolId())
|
|
|
|
|
.icibtClassId(first.getIcibtClassId())
|
|
|
|
|
.md5Pwd(md5Pwd)
|
|
|
|
|
.build();
|
|
|
|
|
consumer.accept(loginTodo);
|
|
|
|
|
return loginTodo;
|
|
|
|
@ -122,6 +154,7 @@ public class LoginTodoService {
|
|
|
|
|
/**
|
|
|
|
|
* 功能描述: <br>
|
|
|
|
|
* 根据当前登录用户,来生成第三方应用登录信息
|
|
|
|
|
*
|
|
|
|
|
* @return {@link LoginTodo}
|
|
|
|
|
* @Author: lx
|
|
|
|
|
* @Date: 2022/12/11 15:45
|
|
|
|
@ -129,16 +162,18 @@ public class LoginTodoService {
|
|
|
|
|
public LoginTodo buildByCurrentLoginUser() {
|
|
|
|
|
CoreUser user = getUser();
|
|
|
|
|
if (user.isStudent()) {
|
|
|
|
|
return buildStudentLoginTodo(getStudent(), user, (e)->{});
|
|
|
|
|
}
|
|
|
|
|
else if (user.isTeacher()) {
|
|
|
|
|
return buildTeacherLoginTodo(getTeacher(), user, (e)->{});
|
|
|
|
|
return buildStudentLoginTodo(getStudent(), user, (e) -> {
|
|
|
|
|
});
|
|
|
|
|
} else if (user.isTeacher()) {
|
|
|
|
|
return buildTeacherLoginTodo(getTeacher(), user, (e) -> {
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 通过token获取登录的信息
|
|
|
|
|
*
|
|
|
|
|
* @param applicationToken
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
@ -146,13 +181,14 @@ public class LoginTodoService {
|
|
|
|
|
try {
|
|
|
|
|
JWTPayload payload = JWTUtil.parseToken(applicationToken).getPayload();
|
|
|
|
|
return payload.getClaimsJson().toBean(LoginTodo.class);
|
|
|
|
|
}catch (Exception e) {
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 通过token获取登录的信息
|
|
|
|
|
*
|
|
|
|
|
* @param applicationToken
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
@ -160,7 +196,7 @@ public class LoginTodoService {
|
|
|
|
|
try {
|
|
|
|
|
JWTSigner signer = JWTUtil.parseToken(applicationToken).getSigner();
|
|
|
|
|
return signer.getAlgorithm();
|
|
|
|
|
}catch (Exception e) {
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|