Merge branch 'master' of https://gitlab.jlcucc.com:52302/coscoshipping/sys_manager_ebtp_project
Conflicts: src/main/java/com/chinaunicom/mall/ebtp/login/service/impl/BaseUserServiceImpl.java
This commit is contained in:
@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSONObject;
|
|||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.chinaunicom.mall.ebtp.cloud.security.starter.entity.AuthorityEntity;
|
import com.chinaunicom.mall.ebtp.cloud.security.starter.entity.AuthorityEntity;
|
||||||
import com.chinaunicom.mall.ebtp.cloud.security.starter.entity.SecurityEntity;
|
import com.chinaunicom.mall.ebtp.cloud.security.starter.entity.SecurityEntity;
|
||||||
|
import com.chinaunicom.mall.ebtp.cloud.userinfo.starter.service.UserInfoService;
|
||||||
import com.chinaunicom.mall.ebtp.common.base.entity.BaseCacheUser;
|
import com.chinaunicom.mall.ebtp.common.base.entity.BaseCacheUser;
|
||||||
import com.chinaunicom.mall.ebtp.common.base.service.IBaseCacheUserService;
|
import com.chinaunicom.mall.ebtp.common.base.service.IBaseCacheUserService;
|
||||||
import com.chinaunicom.mall.ebtp.common.base.service.impl.BaseServiceImpl;
|
import com.chinaunicom.mall.ebtp.common.base.service.impl.BaseServiceImpl;
|
||||||
@ -43,10 +44,12 @@ import java.util.UUID;
|
|||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
import static com.chinaunicom.mall.ebtp.cloud.security.starter.common.Constants.REDIS_USER_KEY;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 对数据表 base_user 操作的 serviceImpl
|
* 对数据表 base_user 操作的 serviceImpl
|
||||||
* @author yss
|
|
||||||
*
|
*
|
||||||
|
* @author yss
|
||||||
*/
|
*/
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@Service
|
@Service
|
||||||
@ -66,22 +69,29 @@ public class BaseUserServiceImpl extends BaseServiceImpl<BaseUserMapper, SysUser
|
|||||||
@Resource
|
@Resource
|
||||||
private BaseUserTokenService baseUserTokenService;
|
private BaseUserTokenService baseUserTokenService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private UserInfoService userInfoService;
|
||||||
|
|
||||||
@Autowired(required = false)
|
@Autowired(required = false)
|
||||||
@Qualifier("cacheRedisTemplate")
|
@Qualifier("cacheRedisTemplate")
|
||||||
private RedisTemplate<String, Object> redisTemplate;
|
private RedisTemplate<String, Object> redisTemplate;
|
||||||
|
|
||||||
|
@Autowired(required = false)
|
||||||
|
@Qualifier("userinfoRedisTemplate")
|
||||||
|
private RedisTemplate<String, Object> userinfoRedisTemplate;
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BaseSelf idcardLogin(String account, String password) {
|
public BaseSelf idcardLogin(String account, String password) {
|
||||||
try {
|
try {
|
||||||
|
|
||||||
List<SysUser> userList = this.list(new LambdaQueryWrapper<SysUser>().eq(SysUser::getEmployeeNumber, account).eq(SysUser::getStatus,Integer.parseInt(Constants.USER_STATUS_LIVE)));
|
List<SysUser> userList = this.list(new LambdaQueryWrapper<SysUser>().eq(SysUser::getEmployeeNumber, account).eq(SysUser::getStatus, Integer.parseInt(Constants.USER_STATUS_LIVE)));
|
||||||
if (userList == null||userList.size()==0) {
|
if (userList == null || userList.size() == 0) {
|
||||||
throw new RuntimeException("无效用户!");
|
throw new RuntimeException("无效用户!");
|
||||||
}
|
}
|
||||||
SysUser user = userList.get(0);
|
SysUser user = userList.get(0);
|
||||||
|
|
||||||
if(Constants.USER_STATUS_FREEZE.equals(user.getStatus().toString())){
|
if (Constants.USER_STATUS_FREEZE.equals(user.getStatus().toString())) {
|
||||||
throw new RuntimeException("账号已冻结!");
|
throw new RuntimeException("账号已冻结!");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -94,13 +104,25 @@ public class BaseUserServiceImpl extends BaseServiceImpl<BaseUserMapper, SysUser
|
|||||||
throw new RuntimeException("用户名或密码错误!");
|
throw new RuntimeException("用户名或密码错误!");
|
||||||
}
|
}
|
||||||
|
|
||||||
return userLogin(user);
|
|
||||||
}catch (BadPaddingException e){
|
BaseSelf baseSelf = userLogin(user);
|
||||||
log.error("RSA解密异常",e);
|
String token = baseSelf.getToken();
|
||||||
CommonExceptionEnum.FRAME_EXCEPTION_COMMON_DATA_OTHER_ERROR.customValidName("用户名或密码错误",true);
|
|
||||||
}catch (Exception e){
|
//缓存用户信息
|
||||||
log.error("登录异常",e);
|
BaseCacheUser baseCacheUser = new BaseCacheUser();
|
||||||
CommonExceptionEnum.FRAME_EXCEPTION_COMMON_DATA_OTHER_ERROR.customValidName(e.getMessage(),true);
|
BeanUtils.copyProperties(user, baseCacheUser);
|
||||||
|
//存入缓存redis
|
||||||
|
userinfoRedisTemplate.opsForValue().set(REDIS_USER_KEY + token,
|
||||||
|
baseCacheUser, Long.parseLong(valid_time_limit), TimeUnit.HOURS);
|
||||||
|
|
||||||
|
userInfoService.getUserInfo(token);
|
||||||
|
return baseSelf;
|
||||||
|
} catch (BadPaddingException e) {
|
||||||
|
log.error("RSA解密异常", e);
|
||||||
|
CommonExceptionEnum.FRAME_EXCEPTION_COMMON_DATA_OTHER_ERROR.customValidName("用户名或密码错误", true);
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("登录异常", e);
|
||||||
|
CommonExceptionEnum.FRAME_EXCEPTION_COMMON_DATA_OTHER_ERROR.customValidName(e.getMessage(), true);
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
@ -118,16 +140,16 @@ public class BaseUserServiceImpl extends BaseServiceImpl<BaseUserMapper, SysUser
|
|||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
|
|
||||||
private String getToken(String userId){
|
private String getToken(String userId) {
|
||||||
|
|
||||||
List<BaseUserToken> tokenList = baseUserTokenService.list((new LambdaQueryWrapper<BaseUserToken>().eq(BaseUserToken::getUserId,userId)
|
List<BaseUserToken> tokenList = baseUserTokenService.list((new LambdaQueryWrapper<BaseUserToken>().eq(BaseUserToken::getUserId, userId)
|
||||||
.gt(BaseUserToken::getValidTime, LocalDateTime.now()).eq(BaseUserToken::getState,Constants.USER_TOKEN_STATUS_E).orderByDesc(BaseUserToken::getValidTime)));
|
.gt(BaseUserToken::getValidTime, LocalDateTime.now()).eq(BaseUserToken::getState, Constants.USER_TOKEN_STATUS_E).orderByDesc(BaseUserToken::getValidTime)));
|
||||||
String token = UUID.randomUUID().toString();
|
String token = UUID.randomUUID().toString();
|
||||||
BaseUserToken tokenObj = new BaseUserToken();
|
BaseUserToken tokenObj = new BaseUserToken();
|
||||||
if(tokenList!=null&&tokenList.size()>0){
|
if (tokenList != null && tokenList.size() > 0) {
|
||||||
tokenObj = tokenList.get(0);
|
tokenObj = tokenList.get(0);
|
||||||
token = tokenObj.getToken();
|
token = tokenObj.getToken();
|
||||||
}else{
|
} else {
|
||||||
tokenObj.setUserId(userId);
|
tokenObj.setUserId(userId);
|
||||||
tokenObj.setToken(token);
|
tokenObj.setToken(token);
|
||||||
tokenObj.setState(Constants.USER_TOKEN_STATUS_E);
|
tokenObj.setState(Constants.USER_TOKEN_STATUS_E);
|
||||||
@ -141,7 +163,7 @@ public class BaseUserServiceImpl extends BaseServiceImpl<BaseUserMapper, SysUser
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setCookie(HttpServletResponse response,String name, String value) {
|
public void setCookie(HttpServletResponse response, String name, String value) {
|
||||||
Cookie cookie = new Cookie(name, value);
|
Cookie cookie = new Cookie(name, value);
|
||||||
cookie.setPath("/");
|
cookie.setPath("/");
|
||||||
cookie.setMaxAge(-1);
|
cookie.setMaxAge(-1);
|
||||||
@ -189,29 +211,29 @@ public class BaseUserServiceImpl extends BaseServiceImpl<BaseUserMapper, SysUser
|
|||||||
String token = request.getHeader("Authorization-exper");
|
String token = request.getHeader("Authorization-exper");
|
||||||
token = token.replaceAll("Bearer ", "");
|
token = token.replaceAll("Bearer ", "");
|
||||||
|
|
||||||
CommonExceptionEnum.LOGIN_EXPIRATION.customValidName("无认证信息","".equals(token));
|
CommonExceptionEnum.LOGIN_EXPIRATION.customValidName("无认证信息", "".equals(token));
|
||||||
if(redisTemplate.hasKey(token)){
|
if (redisTemplate.hasKey(token)) {
|
||||||
self=(BaseSelf)redisTemplate.opsForValue().get(token);
|
self = (BaseSelf) redisTemplate.opsForValue().get(token);
|
||||||
redisTemplate.expire(token,15, TimeUnit.MINUTES);
|
redisTemplate.expire(token, 15, TimeUnit.MINUTES);
|
||||||
}else{
|
} else {
|
||||||
BaseCacheUser user=iBaseCacheUserService.getCacheUser();
|
BaseCacheUser user = iBaseCacheUserService.getCacheUser();
|
||||||
CommonExceptionEnum.LOGIN_EXPIRATION.customValidName("账号不存在",user==null || StringUtils.isBlank(user.getUserId()));
|
CommonExceptionEnum.LOGIN_EXPIRATION.customValidName("账号不存在", user == null || StringUtils.isBlank(user.getUserId()));
|
||||||
List<SysUser> baseUserList = this.list((new LambdaQueryWrapper<SysUser>().eq(SysUser::getEmployeeNumber,user.getUserId())));
|
List<SysUser> baseUserList = this.list((new LambdaQueryWrapper<SysUser>().eq(SysUser::getEmployeeNumber, user.getUserId())));
|
||||||
if(baseUserList!=null&&baseUserList.size()>0){
|
if (baseUserList != null && baseUserList.size() > 0) {
|
||||||
self = userLogin(baseUserList.get(0));
|
self = userLogin(baseUserList.get(0));
|
||||||
self.setToken(token);
|
self.setToken(token);
|
||||||
redisTemplate.opsForValue().getAndSet(token,self);
|
redisTemplate.opsForValue().getAndSet(token, self);
|
||||||
redisTemplate.expire(token,15, TimeUnit.MINUTES);
|
redisTemplate.expire(token, 15, TimeUnit.MINUTES);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}catch (Exception e){
|
} catch (Exception e) {
|
||||||
log.error("用户账号异常:{}",e);
|
log.error("用户账号异常:{}", e);
|
||||||
CommonExceptionEnum.LOGIN_EXPIRATION.customValidName("用户账号异常:请重新登陆!",true);
|
CommonExceptionEnum.LOGIN_EXPIRATION.customValidName("用户账号异常:请重新登陆!", true);
|
||||||
}
|
}
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
|
|
||||||
public SecurityEntity getUserObjectByUserId(String userId){
|
public SecurityEntity getUserObjectByUserId(String userId) {
|
||||||
|
|
||||||
SecurityEntity securityEntity = new SecurityEntity();
|
SecurityEntity securityEntity = new SecurityEntity();
|
||||||
SysUser baseUser = this.baseUserMapper.selectById(userId);
|
SysUser baseUser = this.baseUserMapper.selectById(userId);
|
||||||
@ -231,16 +253,17 @@ public class BaseUserServiceImpl extends BaseServiceImpl<BaseUserMapper, SysUser
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 本地token换取用户信息
|
* 本地token换取用户信息
|
||||||
|
*
|
||||||
* @param token
|
* @param token
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public SecurityEntity bdCheckToken(String token){
|
public SecurityEntity bdCheckToken(String token) {
|
||||||
List<BaseUserToken> tokenList = baseUserTokenService.list((new LambdaQueryWrapper<BaseUserToken>().eq(BaseUserToken::getToken,token)
|
List<BaseUserToken> tokenList = baseUserTokenService.list((new LambdaQueryWrapper<BaseUserToken>().eq(BaseUserToken::getToken, token)
|
||||||
.gt(BaseUserToken::getValidTime, LocalDateTime.now()).eq(BaseUserToken::getState,Constants.USER_TOKEN_STATUS_E).orderByDesc(BaseUserToken::getValidTime)));
|
.gt(BaseUserToken::getValidTime, LocalDateTime.now()).eq(BaseUserToken::getState, Constants.USER_TOKEN_STATUS_E).orderByDesc(BaseUserToken::getValidTime)));
|
||||||
CommonExceptionEnum.LOGIN_EXPIRATION.assertListNotNullByName("",tokenList);
|
CommonExceptionEnum.LOGIN_EXPIRATION.assertListNotNullByName("", tokenList);
|
||||||
BaseUserToken userToken = tokenList.get(0);
|
BaseUserToken userToken = tokenList.get(0);
|
||||||
CommonExceptionEnum.LOGIN_EXPIRATION.assertStringNotNullByKey("",tokenList.get(0).getUserObject());
|
CommonExceptionEnum.LOGIN_EXPIRATION.assertStringNotNullByKey("", tokenList.get(0).getUserObject());
|
||||||
SecurityEntity securityEntity = JSON.parseObject(userToken.getUserObject(), SecurityEntity.class);
|
SecurityEntity securityEntity = JSON.parseObject(userToken.getUserObject(), SecurityEntity.class);
|
||||||
userToken.setValidTime(LocalDateTime.now().plusMinutes(Long.valueOf(valid_time_limit)));
|
userToken.setValidTime(LocalDateTime.now().plusMinutes(Long.valueOf(valid_time_limit)));
|
||||||
|
|
||||||
@ -264,7 +287,7 @@ public class BaseUserServiceImpl extends BaseServiceImpl<BaseUserMapper, SysUser
|
|||||||
String mm = baseUserService.encode("cosco2025");
|
String mm = baseUserService.encode("cosco2025");
|
||||||
System.out.println(mm);
|
System.out.println(mm);
|
||||||
|
|
||||||
String mm2 = RSA.encrypt("cosco2025",publicKey);
|
String mm2 = RSA.encrypt("cosco2025", publicKey);
|
||||||
|
|
||||||
System.out.println(mm2);
|
System.out.println(mm2);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user