|
@@ -3,18 +3,18 @@ package com.koobietech.eas.service.impl;
|
|
|
import com.anji.captcha.model.common.ResponseModel;
|
|
|
import com.koobietech.eas.dao.constant.UserType;
|
|
|
import com.koobietech.eas.common.exception.EasException;
|
|
|
-import com.koobietech.eas.common.pojo.JwtUserDto;
|
|
|
+import com.koobietech.eas.common.pojo.JwtUserPojo;
|
|
|
import com.koobietech.eas.common.result.JsonResult;
|
|
|
import com.koobietech.eas.common.utils.JwtManager;
|
|
|
import com.koobietech.eas.common.utils.PasswordManager;
|
|
|
-import com.koobietech.eas.dao.login.pojo.UserDetail;
|
|
|
-import com.koobietech.eas.dao.dto.LoginToken;
|
|
|
+import com.koobietech.eas.dao.pojo.UserDetailPojo;
|
|
|
+import com.koobietech.eas.dao.dto.LoginTokenDto;
|
|
|
import com.koobietech.eas.dao.mapper.AdminLoginMapper;
|
|
|
import com.koobietech.eas.mbg.mapper.EasSysUserinfoMapper;
|
|
|
import com.koobietech.eas.mbg.model.EasSysUserinfo;
|
|
|
import com.koobietech.eas.mbg.model.EasSysUserinfoExample;
|
|
|
-import com.koobietech.eas.service.AdminLoginService;
|
|
|
-import com.koobietech.eas.service.LoginRedisService;
|
|
|
+import com.koobietech.eas.service.EasSysAdminLoginService;
|
|
|
+import com.koobietech.eas.service.EasSysUserLoginRedisService;
|
|
|
import com.koobietech.eas.dao.pojo.AdminPojo;
|
|
|
import org.springframework.security.crypto.password.PasswordEncoder;
|
|
|
import org.springframework.stereotype.Service;
|
|
@@ -24,7 +24,7 @@ import java.util.List;
|
|
|
import java.util.Optional;
|
|
|
|
|
|
@Service
|
|
|
-public class AdminLoginServiceImpl implements AdminLoginService {
|
|
|
+public class EasSysAdminLoginServiceImpl implements EasSysAdminLoginService {
|
|
|
|
|
|
@Resource
|
|
|
private PasswordEncoder passwordEncoder;
|
|
@@ -35,7 +35,7 @@ public class AdminLoginServiceImpl implements AdminLoginService {
|
|
|
@Resource
|
|
|
private EasSysUserinfoMapper easSysUserinfoMapper;
|
|
|
@Resource
|
|
|
- private LoginRedisService loginRedisService;
|
|
|
+ private EasSysUserLoginRedisService loginRedisService;
|
|
|
@Resource
|
|
|
private JwtManager jwtManager;
|
|
|
|
|
@@ -44,7 +44,7 @@ public class AdminLoginServiceImpl implements AdminLoginService {
|
|
|
private final Integer refreshToken_expires = 48 * 60 * 60;
|
|
|
|
|
|
@Override
|
|
|
- public LoginToken adminLogin(AdminPojo adminPojo) {
|
|
|
+ public LoginTokenDto adminLogin(AdminPojo adminPojo) {
|
|
|
if (adminPojo.getUsername() == null || adminPojo.getPasswd() == null || adminPojo.getUsername().isEmpty() || adminPojo.getPasswd().isEmpty()) {
|
|
|
throw new EasException("用户不存在", 412);
|
|
|
}
|
|
@@ -56,61 +56,61 @@ public class AdminLoginServiceImpl implements AdminLoginService {
|
|
|
//先获取id,进行枚举判断
|
|
|
Long id = easSysUserinfo.getId();
|
|
|
//先调用自定义sql查询detail类中的数据 最后把这个类封装到redis里面
|
|
|
- UserDetail userDetailInRedis = adminLoginMapper.getUserDetailById(id);
|
|
|
- System.out.println("接收前" + userDetailInRedis);
|
|
|
- userDetailInRedis.setDepartments(adminLoginMapper.getUserDepartmentsById(id));
|
|
|
- userDetailInRedis.setPermissions(adminLoginMapper.getUserPermissionsById(id));
|
|
|
- System.out.println("接收后" + userDetailInRedis);
|
|
|
+ UserDetailPojo userDetailPojoInRedis = adminLoginMapper.getUserDetailById(id);
|
|
|
+ System.out.println("接收前" + userDetailPojoInRedis);
|
|
|
+ userDetailPojoInRedis.setDepartments(adminLoginMapper.getUserDepartmentsById(id));
|
|
|
+ userDetailPojoInRedis.setPermissionPojos(adminLoginMapper.getUserPermissionsById(id));
|
|
|
+ System.out.println("接收后" + userDetailPojoInRedis);
|
|
|
|
|
|
// 先调用自定义sql查询用户详细信息、部门信息 和 权限信息
|
|
|
UserType userType = UserType.TEACHER;
|
|
|
- if (userDetailInRedis.getUsername().equals("admin")) {
|
|
|
+ if (userDetailPojoInRedis.getUsername().equals("admin")) {
|
|
|
userType = UserType.ADMIN;
|
|
|
}
|
|
|
- userDetailInRedis.setUserType(userType);
|
|
|
+ userDetailPojoInRedis.setUserType(userType);
|
|
|
// 生成token
|
|
|
- JwtUserDto jwtUserDto = new JwtUserDto(userDetailInRedis.getUsername(), userDetailInRedis.getId(), userType);
|
|
|
- String token = jwtManager.createJwt(jwtUserDto, token_expires);
|
|
|
- String refreshToken = jwtManager.createJwt(jwtUserDto, refreshToken_expires);
|
|
|
+ JwtUserPojo jwtUserPojo = new JwtUserPojo(userDetailPojoInRedis.getUsername(), userDetailPojoInRedis.getId(), userType);
|
|
|
+ String token = jwtManager.createJwt(jwtUserPojo, token_expires);
|
|
|
+ String refreshToken = jwtManager.createJwt(jwtUserPojo, refreshToken_expires);
|
|
|
System.out.println("token:" + token);
|
|
|
System.out.println("refreshToken:" + refreshToken);
|
|
|
|
|
|
// 生成redis key
|
|
|
- String redisTokenKey = loginRedisService.createJwtTokenKey(jwtUserDto);
|
|
|
- String redisRefreshTokenKey = loginRedisService.createJwtRefreshTokenKey(jwtUserDto);
|
|
|
+ String redisTokenKey = loginRedisService.createJwtTokenKey(jwtUserPojo);
|
|
|
+ String redisRefreshTokenKey = loginRedisService.createJwtRefreshTokenKey(jwtUserPojo);
|
|
|
|
|
|
// 将token存入redis
|
|
|
- loginRedisService.loginSaveCache(redisTokenKey, userDetailInRedis, token_expires);
|
|
|
- loginRedisService.loginSaveCache(redisRefreshTokenKey, userDetailInRedis, refreshToken_expires);
|
|
|
+ loginRedisService.loginSaveCache(redisTokenKey, userDetailPojoInRedis, token_expires);
|
|
|
+ loginRedisService.loginSaveCache(redisRefreshTokenKey, userDetailPojoInRedis, refreshToken_expires);
|
|
|
|
|
|
// 登录成功
|
|
|
- return new LoginToken(token, refreshToken);
|
|
|
+ return new LoginTokenDto(token, refreshToken);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public LoginToken refreshToken(String refreshToken) {
|
|
|
+ public LoginTokenDto refreshToken(String refreshToken) {
|
|
|
// 解析refresh token
|
|
|
- JwtUserDto jwtUserDto = jwtManager.decodeJwt(refreshToken);
|
|
|
+ JwtUserPojo jwtUserPojo = jwtManager.decodeJwt(refreshToken);
|
|
|
|
|
|
//生成新的 刷新k值 (refresh_token)
|
|
|
- String newRedisRefreshTokenKey = loginRedisService.createJwtRefreshTokenKey(jwtUserDto);
|
|
|
+ String newRedisRefreshTokenKey = loginRedisService.createJwtRefreshTokenKey(jwtUserPojo);
|
|
|
|
|
|
//查询redis里面有没有这个k值
|
|
|
- UserDetail userDetailInRedis = loginRedisService.loginGetCache(newRedisRefreshTokenKey);
|
|
|
- if (userDetailInRedis == null) {
|
|
|
+ UserDetailPojo userDetailPojoInRedis = loginRedisService.loginGetCache(newRedisRefreshTokenKey);
|
|
|
+ if (userDetailPojoInRedis == null) {
|
|
|
throw new EasException("refresh token已过期", 412);
|
|
|
}
|
|
|
//如果不为空 那UserDetail里面就封装了用户的信息 生成新的token和refresh token
|
|
|
- String newToken = jwtManager.createJwt(jwtUserDto, token_expires);
|
|
|
- String newRefreshToken = jwtManager.createJwt(jwtUserDto, refreshToken_expires);
|
|
|
+ String newToken = jwtManager.createJwt(jwtUserPojo, token_expires);
|
|
|
+ String newRefreshToken = jwtManager.createJwt(jwtUserPojo, refreshToken_expires);
|
|
|
|
|
|
//生成新的k值 (token)
|
|
|
- String newRedisTokenKey = loginRedisService.createJwtTokenKey(jwtUserDto);
|
|
|
+ String newRedisTokenKey = loginRedisService.createJwtTokenKey(jwtUserPojo);
|
|
|
|
|
|
// 更新Redis中的token和refresh token
|
|
|
- loginRedisService.loginSaveCache(newRedisTokenKey, userDetailInRedis, token_expires);
|
|
|
- loginRedisService.loginSaveCache(newRedisRefreshTokenKey, userDetailInRedis, refreshToken_expires);
|
|
|
- return new LoginToken(newToken, newRefreshToken);
|
|
|
+ loginRedisService.loginSaveCache(newRedisTokenKey, userDetailPojoInRedis, token_expires);
|
|
|
+ loginRedisService.loginSaveCache(newRedisRefreshTokenKey, userDetailPojoInRedis, refreshToken_expires);
|
|
|
+ return new LoginTokenDto(newToken, newRefreshToken);
|
|
|
}
|
|
|
|
|
|
|
|
@@ -132,13 +132,13 @@ public class AdminLoginServiceImpl implements AdminLoginService {
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public UserDetail getUserInfo(String token) {
|
|
|
+ public UserDetailPojo getUserInfo(String token) {
|
|
|
|
|
|
try {
|
|
|
// 解析token
|
|
|
- JwtUserDto jwtUserDto = jwtManager.decodeJwt(token);
|
|
|
+ JwtUserPojo jwtUserPojo = jwtManager.decodeJwt(token);
|
|
|
// 封装成字符以便在redis中查找
|
|
|
- String tokenToRedisKey = loginRedisService.createJwtTokenKey(jwtUserDto);
|
|
|
+ String tokenToRedisKey = loginRedisService.createJwtTokenKey(jwtUserPojo);
|
|
|
return loginRedisService.loginGetCache(tokenToRedisKey);
|
|
|
} catch (Exception e) {
|
|
|
// 处理异常情况
|