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.chinaunicom.mall.ebtp.cloud.security.starter.entity.AuthorityEntity;
|
||||
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.service.IBaseCacheUserService;
|
||||
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.stream.Collectors;
|
||||
|
||||
import static com.chinaunicom.mall.ebtp.cloud.security.starter.common.Constants.REDIS_USER_KEY;
|
||||
|
||||
/**
|
||||
* 对数据表 base_user 操作的 serviceImpl
|
||||
* @author yss
|
||||
*
|
||||
* @author yss
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
@ -66,22 +69,29 @@ public class BaseUserServiceImpl extends BaseServiceImpl<BaseUserMapper, SysUser
|
||||
@Resource
|
||||
private BaseUserTokenService baseUserTokenService;
|
||||
|
||||
@Autowired
|
||||
private UserInfoService userInfoService;
|
||||
|
||||
@Autowired(required = false)
|
||||
@Qualifier("cacheRedisTemplate")
|
||||
private RedisTemplate<String, Object> redisTemplate;
|
||||
|
||||
@Autowired(required = false)
|
||||
@Qualifier("userinfoRedisTemplate")
|
||||
private RedisTemplate<String, Object> userinfoRedisTemplate;
|
||||
|
||||
|
||||
@Override
|
||||
public BaseSelf idcardLogin(String account, String password) {
|
||||
try {
|
||||
|
||||
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) {
|
||||
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) {
|
||||
throw new RuntimeException("无效用户!");
|
||||
}
|
||||
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("账号已冻结!");
|
||||
}
|
||||
|
||||
@ -94,13 +104,25 @@ public class BaseUserServiceImpl extends BaseServiceImpl<BaseUserMapper, SysUser
|
||||
throw new RuntimeException("用户名或密码错误!");
|
||||
}
|
||||
|
||||
return userLogin(user);
|
||||
}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);
|
||||
|
||||
BaseSelf baseSelf = userLogin(user);
|
||||
String token = baseSelf.getToken();
|
||||
|
||||
//缓存用户信息
|
||||
BaseCacheUser baseCacheUser = new BaseCacheUser();
|
||||
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;
|
||||
@ -118,16 +140,16 @@ public class BaseUserServiceImpl extends BaseServiceImpl<BaseUserMapper, SysUser
|
||||
return self;
|
||||
}
|
||||
|
||||
private String getToken(String userId){
|
||||
private String getToken(String 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)));
|
||||
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)));
|
||||
String token = UUID.randomUUID().toString();
|
||||
BaseUserToken tokenObj = new BaseUserToken();
|
||||
if(tokenList!=null&&tokenList.size()>0){
|
||||
if (tokenList != null && tokenList.size() > 0) {
|
||||
tokenObj = tokenList.get(0);
|
||||
token = tokenObj.getToken();
|
||||
}else{
|
||||
} else {
|
||||
tokenObj.setUserId(userId);
|
||||
tokenObj.setToken(token);
|
||||
tokenObj.setState(Constants.USER_TOKEN_STATUS_E);
|
||||
@ -141,7 +163,7 @@ public class BaseUserServiceImpl extends BaseServiceImpl<BaseUserMapper, SysUser
|
||||
}
|
||||
|
||||
@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.setPath("/");
|
||||
cookie.setMaxAge(-1);
|
||||
@ -189,29 +211,29 @@ public class BaseUserServiceImpl extends BaseServiceImpl<BaseUserMapper, SysUser
|
||||
String token = request.getHeader("Authorization-exper");
|
||||
token = token.replaceAll("Bearer ", "");
|
||||
|
||||
CommonExceptionEnum.LOGIN_EXPIRATION.customValidName("无认证信息","".equals(token));
|
||||
if(redisTemplate.hasKey(token)){
|
||||
self=(BaseSelf)redisTemplate.opsForValue().get(token);
|
||||
redisTemplate.expire(token,15, TimeUnit.MINUTES);
|
||||
}else{
|
||||
BaseCacheUser user=iBaseCacheUserService.getCacheUser();
|
||||
CommonExceptionEnum.LOGIN_EXPIRATION.customValidName("账号不存在",user==null || StringUtils.isBlank(user.getUserId()));
|
||||
List<SysUser> baseUserList = this.list((new LambdaQueryWrapper<SysUser>().eq(SysUser::getEmployeeNumber,user.getUserId())));
|
||||
if(baseUserList!=null&&baseUserList.size()>0){
|
||||
CommonExceptionEnum.LOGIN_EXPIRATION.customValidName("无认证信息", "".equals(token));
|
||||
if (redisTemplate.hasKey(token)) {
|
||||
self = (BaseSelf) redisTemplate.opsForValue().get(token);
|
||||
redisTemplate.expire(token, 15, TimeUnit.MINUTES);
|
||||
} else {
|
||||
BaseCacheUser user = iBaseCacheUserService.getCacheUser();
|
||||
CommonExceptionEnum.LOGIN_EXPIRATION.customValidName("账号不存在", user == null || StringUtils.isBlank(user.getUserId()));
|
||||
List<SysUser> baseUserList = this.list((new LambdaQueryWrapper<SysUser>().eq(SysUser::getEmployeeNumber, user.getUserId())));
|
||||
if (baseUserList != null && baseUserList.size() > 0) {
|
||||
self = userLogin(baseUserList.get(0));
|
||||
self.setToken(token);
|
||||
redisTemplate.opsForValue().getAndSet(token,self);
|
||||
redisTemplate.expire(token,15, TimeUnit.MINUTES);
|
||||
redisTemplate.opsForValue().getAndSet(token, self);
|
||||
redisTemplate.expire(token, 15, TimeUnit.MINUTES);
|
||||
}
|
||||
}
|
||||
}catch (Exception e){
|
||||
log.error("用户账号异常:{}",e);
|
||||
CommonExceptionEnum.LOGIN_EXPIRATION.customValidName("用户账号异常:请重新登陆!",true);
|
||||
} catch (Exception e) {
|
||||
log.error("用户账号异常:{}", e);
|
||||
CommonExceptionEnum.LOGIN_EXPIRATION.customValidName("用户账号异常:请重新登陆!", true);
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
public SecurityEntity getUserObjectByUserId(String userId){
|
||||
public SecurityEntity getUserObjectByUserId(String userId) {
|
||||
|
||||
SecurityEntity securityEntity = new SecurityEntity();
|
||||
SysUser baseUser = this.baseUserMapper.selectById(userId);
|
||||
@ -231,16 +253,17 @@ public class BaseUserServiceImpl extends BaseServiceImpl<BaseUserMapper, SysUser
|
||||
|
||||
/**
|
||||
* 本地token换取用户信息
|
||||
*
|
||||
* @param token
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public SecurityEntity bdCheckToken(String 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)));
|
||||
CommonExceptionEnum.LOGIN_EXPIRATION.assertListNotNullByName("",tokenList);
|
||||
public SecurityEntity bdCheckToken(String 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)));
|
||||
CommonExceptionEnum.LOGIN_EXPIRATION.assertListNotNullByName("", tokenList);
|
||||
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);
|
||||
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");
|
||||
System.out.println(mm);
|
||||
|
||||
String mm2 = RSA.encrypt("cosco2025",publicKey);
|
||||
String mm2 = RSA.encrypt("cosco2025", publicKey);
|
||||
|
||||
System.out.println(mm2);
|
||||
|
||||
|
Reference in New Issue
Block a user