|
|
|
@ -1,5 +1,30 @@
|
|
|
|
|
package com.coscoshipping.ebtp.system.login.service.impl;
|
|
|
|
|
|
|
|
|
|
import static com.chinaunicom.mall.ebtp.cloud.security.starter.common.Constants.REDIS_USER_KEY;
|
|
|
|
|
|
|
|
|
|
import java.math.BigInteger;
|
|
|
|
|
import java.security.MessageDigest;
|
|
|
|
|
import java.security.NoSuchAlgorithmException;
|
|
|
|
|
import java.time.LocalDateTime;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
import java.util.UUID;
|
|
|
|
|
import java.util.concurrent.TimeUnit;
|
|
|
|
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
|
|
import javax.crypto.BadPaddingException;
|
|
|
|
|
import javax.servlet.http.Cookie;
|
|
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
|
|
|
|
|
|
|
import org.apache.commons.lang.StringUtils;
|
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
|
import org.springframework.beans.factory.annotation.Qualifier;
|
|
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
|
|
import org.springframework.data.redis.core.RedisTemplate;
|
|
|
|
|
import org.springframework.security.core.context.SecurityContextHolder;
|
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
import org.springframework.web.context.request.RequestContextHolder;
|
|
|
|
|
import org.springframework.web.context.request.ServletRequestAttributes;
|
|
|
|
|
|
|
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
|
@ -11,44 +36,25 @@ 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;
|
|
|
|
|
import com.chinaunicom.mall.ebtp.common.exception.common.CommonExceptionEnum;
|
|
|
|
|
|
|
|
|
|
import com.coscoshipping.ebtp.system.user.entity.SysExpertUser;
|
|
|
|
|
import com.coscoshipping.ebtp.system.user.entity.SysSupplierUser;
|
|
|
|
|
import com.coscoshipping.ebtp.system.login.common.Constants;
|
|
|
|
|
import com.coscoshipping.ebtp.system.login.common.RSA;
|
|
|
|
|
import com.coscoshipping.ebtp.system.login.dao.BaseUserMapper;
|
|
|
|
|
import com.coscoshipping.ebtp.system.login.entity.*;
|
|
|
|
|
import com.coscoshipping.ebtp.system.login.entity.BaseSelf;
|
|
|
|
|
import com.coscoshipping.ebtp.system.login.entity.BaseUserToken;
|
|
|
|
|
import com.coscoshipping.ebtp.system.login.service.BaseUserService;
|
|
|
|
|
import com.coscoshipping.ebtp.system.login.service.BaseUserTokenService;
|
|
|
|
|
import com.coscoshipping.ebtp.system.org.entity.SysOrg;
|
|
|
|
|
import com.coscoshipping.ebtp.system.org.service.SysOrgService;
|
|
|
|
|
import com.coscoshipping.ebtp.system.user.dao.SysExpertUserMapper;
|
|
|
|
|
import com.coscoshipping.ebtp.system.user.dao.SysSupplierUserMapper;
|
|
|
|
|
import com.coscoshipping.ebtp.system.user.entity.SysExpertUser;
|
|
|
|
|
import com.coscoshipping.ebtp.system.user.entity.SysSupplierUser;
|
|
|
|
|
import com.coscoshipping.ebtp.system.user.entity.SysUser;
|
|
|
|
|
|
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
import org.apache.commons.lang.StringUtils;
|
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
|
import org.springframework.beans.factory.annotation.Qualifier;
|
|
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
|
|
import org.springframework.data.redis.core.RedisTemplate;
|
|
|
|
|
import org.springframework.security.core.context.SecurityContextHolder;
|
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
import org.springframework.web.context.request.RequestContextHolder;
|
|
|
|
|
import org.springframework.web.context.request.ServletRequestAttributes;
|
|
|
|
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
|
|
import javax.crypto.BadPaddingException;
|
|
|
|
|
import javax.servlet.http.Cookie;
|
|
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
|
|
import java.math.BigInteger;
|
|
|
|
|
import java.security.MessageDigest;
|
|
|
|
|
import java.security.NoSuchAlgorithmException;
|
|
|
|
|
import java.time.LocalDateTime;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
import java.util.UUID;
|
|
|
|
|
import java.util.concurrent.TimeUnit;
|
|
|
|
|
|
|
|
|
|
import static com.chinaunicom.mall.ebtp.cloud.security.starter.common.Constants.REDIS_USER_KEY;
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 对数据表 base_user 操作的 serviceImpl
|
|
|
|
@ -72,6 +78,8 @@ public class BaseUserServiceImpl extends BaseServiceImpl<BaseUserMapper, SysUser
|
|
|
|
|
private String publickey;
|
|
|
|
|
@Value("${login.token.time_limit}")
|
|
|
|
|
private String valid_time_limit;
|
|
|
|
|
@Value("${login.reset_password}")
|
|
|
|
|
private String resetPassword;
|
|
|
|
|
@Resource
|
|
|
|
|
private IBaseCacheUserService iBaseCacheUserService;
|
|
|
|
|
@Resource
|
|
|
|
@ -90,12 +98,12 @@ public class BaseUserServiceImpl extends BaseServiceImpl<BaseUserMapper, SysUser
|
|
|
|
|
@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)));
|
|
|
|
|
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("无效用户!");
|
|
|
|
|
}
|
|
|
|
@ -109,12 +117,10 @@ public class BaseUserServiceImpl extends BaseServiceImpl<BaseUserMapper, SysUser
|
|
|
|
|
|
|
|
|
|
String pw = new String(decode);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!this.encode(pw).equals(user.getPassword())) {
|
|
|
|
|
throw new RuntimeException("用户名或密码错误!");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BaseSelf baseSelf = userLogin(user);
|
|
|
|
|
|
|
|
|
|
// 1. 查询角色信息
|
|
|
|
@ -138,7 +144,8 @@ public class BaseUserServiceImpl extends BaseServiceImpl<BaseUserMapper, SysUser
|
|
|
|
|
if (authorityList != null && !authorityList.isEmpty()) {
|
|
|
|
|
StringBuilder roleIds = new StringBuilder();
|
|
|
|
|
for (AuthorityEntity ae : authorityList) {
|
|
|
|
|
if (roleIds.length() > 0) roleIds.append(",");
|
|
|
|
|
if (roleIds.length() > 0)
|
|
|
|
|
roleIds.append(",");
|
|
|
|
|
roleIds.append(ae.getRoleId());
|
|
|
|
|
}
|
|
|
|
|
baseCacheUser.setRoleIds(roleIds.toString());
|
|
|
|
@ -150,8 +157,7 @@ public class BaseUserServiceImpl extends BaseServiceImpl<BaseUserMapper, SysUser
|
|
|
|
|
REDIS_USER_KEY + token,
|
|
|
|
|
baseCacheUser,
|
|
|
|
|
Long.parseLong(valid_time_limit),
|
|
|
|
|
TimeUnit.HOURS
|
|
|
|
|
);
|
|
|
|
|
TimeUnit.HOURS);
|
|
|
|
|
|
|
|
|
|
return baseSelf;
|
|
|
|
|
} catch (BadPaddingException e) {
|
|
|
|
@ -164,11 +170,14 @@ public class BaseUserServiceImpl extends BaseServiceImpl<BaseUserMapper, SysUser
|
|
|
|
|
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public BaseSelf idcardSupplierLogin(String account, String password) {
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
|
|
List<SysSupplierUser> userList = sysSupplierUserMapper.selectList(new LambdaQueryWrapper<SysSupplierUser>().eq(SysSupplierUser::getUsername, account).eq(SysSupplierUser::getStatus, Integer.parseInt(Constants.USER_STATUS_LIVE)));
|
|
|
|
|
List<SysSupplierUser> userList = sysSupplierUserMapper
|
|
|
|
|
.selectList(new LambdaQueryWrapper<SysSupplierUser>().eq(SysSupplierUser::getUsername, account)
|
|
|
|
|
.eq(SysSupplierUser::getStatus, Integer.parseInt(Constants.USER_STATUS_LIVE)));
|
|
|
|
|
if (userList == null || userList.size() == 0) {
|
|
|
|
|
throw new RuntimeException("无效用户!");
|
|
|
|
|
}
|
|
|
|
@ -182,23 +191,21 @@ public class BaseUserServiceImpl extends BaseServiceImpl<BaseUserMapper, SysUser
|
|
|
|
|
|
|
|
|
|
String pw = new String(decode);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!this.encode(pw).equals(user.getPassword())) {
|
|
|
|
|
throw new RuntimeException("用户名或密码错误!");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BaseSelf baseSelf = userSupplierLogin(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);
|
|
|
|
|
// 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);
|
|
|
|
@ -210,11 +217,14 @@ public class BaseUserServiceImpl extends BaseServiceImpl<BaseUserMapper, SysUser
|
|
|
|
|
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public BaseSelf idcardExpertLogin(String account, String password) {
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
|
|
List<SysExpertUser> userList = sysExpertUserMapper.selectList(new LambdaQueryWrapper<SysExpertUser>().eq(SysExpertUser::getUsername, account).eq(SysExpertUser::getStatus, Integer.parseInt(Constants.USER_STATUS_LIVE)));
|
|
|
|
|
List<SysExpertUser> userList = sysExpertUserMapper
|
|
|
|
|
.selectList(new LambdaQueryWrapper<SysExpertUser>().eq(SysExpertUser::getUsername, account)
|
|
|
|
|
.eq(SysExpertUser::getStatus, Integer.parseInt(Constants.USER_STATUS_LIVE)));
|
|
|
|
|
if (userList == null || userList.size() == 0) {
|
|
|
|
|
throw new RuntimeException("无效用户!");
|
|
|
|
|
}
|
|
|
|
@ -228,23 +238,21 @@ public class BaseUserServiceImpl extends BaseServiceImpl<BaseUserMapper, SysUser
|
|
|
|
|
|
|
|
|
|
String pw = new String(decode);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!this.encode(pw).equals(user.getPassword())) {
|
|
|
|
|
throw new RuntimeException("用户名或密码错误!");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BaseSelf baseSelf = userExpertLogin(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);
|
|
|
|
|
// 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);
|
|
|
|
@ -256,6 +264,7 @@ public class BaseUserServiceImpl extends BaseServiceImpl<BaseUserMapper, SysUser
|
|
|
|
|
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private BaseSelf userLogin(SysUser user) {
|
|
|
|
|
BaseSelf self = new BaseSelf();
|
|
|
|
|
String token = getToken(user.getUserId());
|
|
|
|
@ -267,6 +276,7 @@ public class BaseUserServiceImpl extends BaseServiceImpl<BaseUserMapper, SysUser
|
|
|
|
|
|
|
|
|
|
return self;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private BaseSelf userExpertLogin(SysExpertUser user) {
|
|
|
|
|
BaseSelf self = new BaseSelf();
|
|
|
|
|
String token = getExpertToken(String.valueOf(user.getUserId().longValue()));
|
|
|
|
@ -274,7 +284,7 @@ public class BaseUserServiceImpl extends BaseServiceImpl<BaseUserMapper, SysUser
|
|
|
|
|
SysUser sysUser = new SysUser();
|
|
|
|
|
sysUser.setName(user.getName());
|
|
|
|
|
sysUser.setMobile(user.getMobile());
|
|
|
|
|
sysUser.setEmail(user.getEmail()) ;
|
|
|
|
|
sysUser.setEmail(user.getEmail());
|
|
|
|
|
sysUser.setSex(user.getSex());
|
|
|
|
|
sysUser.setStatus(user.getStatus());
|
|
|
|
|
self.setUser(sysUser);
|
|
|
|
@ -285,6 +295,7 @@ public class BaseUserServiceImpl extends BaseServiceImpl<BaseUserMapper, SysUser
|
|
|
|
|
|
|
|
|
|
return self;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private BaseSelf userSupplierLogin(SysSupplierUser user) {
|
|
|
|
|
BaseSelf self = new BaseSelf();
|
|
|
|
|
String token = getSupplierToken(String.valueOf(user.getUserId().longValue()));
|
|
|
|
@ -292,7 +303,7 @@ public class BaseUserServiceImpl extends BaseServiceImpl<BaseUserMapper, SysUser
|
|
|
|
|
SysUser sysUser = new SysUser();
|
|
|
|
|
sysUser.setName(user.getName());
|
|
|
|
|
sysUser.setMobile(user.getMobile());
|
|
|
|
|
sysUser.setEmail(user.getEmail()) ;
|
|
|
|
|
sysUser.setEmail(user.getEmail());
|
|
|
|
|
sysUser.setSex(user.getSex());
|
|
|
|
|
sysUser.setStatus(user.getStatus());
|
|
|
|
|
self.setUser(sysUser);
|
|
|
|
@ -306,8 +317,10 @@ public class BaseUserServiceImpl extends BaseServiceImpl<BaseUserMapper, SysUser
|
|
|
|
|
|
|
|
|
|
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) {
|
|
|
|
@ -325,10 +338,13 @@ public class BaseUserServiceImpl extends BaseServiceImpl<BaseUserMapper, SysUser
|
|
|
|
|
baseUserTokenService.refreshToken(tokenObj);
|
|
|
|
|
return token;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private String getSupplierToken(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) {
|
|
|
|
@ -346,10 +362,13 @@ public class BaseUserServiceImpl extends BaseServiceImpl<BaseUserMapper, SysUser
|
|
|
|
|
baseUserTokenService.refreshToken(tokenObj);
|
|
|
|
|
return token;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private String getExpertToken(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) {
|
|
|
|
@ -410,7 +429,8 @@ public class BaseUserServiceImpl extends BaseServiceImpl<BaseUserMapper, SysUser
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public BaseSelf getRequestUser() {
|
|
|
|
|
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
|
|
|
|
|
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes())
|
|
|
|
|
.getRequest();
|
|
|
|
|
|
|
|
|
|
BaseSelf self = new BaseSelf();
|
|
|
|
|
try {
|
|
|
|
@ -423,8 +443,10 @@ public class BaseUserServiceImpl extends BaseServiceImpl<BaseUserMapper, SysUser
|
|
|
|
|
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())));
|
|
|
|
|
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);
|
|
|
|
@ -447,18 +469,20 @@ public class BaseUserServiceImpl extends BaseServiceImpl<BaseUserMapper, SysUser
|
|
|
|
|
securityEntity.setStaffId(baseUser.getEmployeeNumber());
|
|
|
|
|
securityEntity.setUsername(baseUser.getName());
|
|
|
|
|
securityEntity.setStaffName(baseUser.getName());
|
|
|
|
|
securityEntity.setOu(baseUser.getOrgId());//部门id
|
|
|
|
|
securityEntity.setOu(baseUser.getOrgId());// 部门id
|
|
|
|
|
securityEntity.setOuName(baseUser.getOrgName());
|
|
|
|
|
SysOrg company = sysOrgService.getCompanyByOrgId(baseUser.getOrgId());
|
|
|
|
|
if (company != null) {
|
|
|
|
|
securityEntity.setOrgId(company.getOrgId());//公司id
|
|
|
|
|
securityEntity.setOrgId(company.getOrgId());// 公司id
|
|
|
|
|
securityEntity.setOrgName(company.getOrgName());
|
|
|
|
|
}
|
|
|
|
|
securityEntity.setUserSource("0");//账号类型中远
|
|
|
|
|
List<AuthorityEntity> authorityList =this.baseUserMapper.selectRoleByUserId(baseUser.getUserId());;
|
|
|
|
|
securityEntity.setUserSource("0");// 账号类型中远
|
|
|
|
|
List<AuthorityEntity> authorityList = this.baseUserMapper.selectRoleByUserId(baseUser.getUserId());
|
|
|
|
|
;
|
|
|
|
|
securityEntity.setAuthorityList(authorityList);
|
|
|
|
|
return securityEntity;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public SecurityEntity getUserObjectByExpertUserId(String userId) {
|
|
|
|
|
|
|
|
|
|
SecurityEntity securityEntity = new SecurityEntity();
|
|
|
|
@ -467,18 +491,21 @@ public class BaseUserServiceImpl extends BaseServiceImpl<BaseUserMapper, SysUser
|
|
|
|
|
securityEntity.setStaffId(String.valueOf(baseUser.getUserId().longValue()));
|
|
|
|
|
securityEntity.setUsername(baseUser.getUsername());
|
|
|
|
|
securityEntity.setStaffName(baseUser.getName());
|
|
|
|
|
// securityEntity.setOu(baseUser.getOrgId());//部门id
|
|
|
|
|
// securityEntity.setOuName(baseUser.getOrgName());
|
|
|
|
|
// SysOrg company = sysOrgService.getCompanyByOrgId(baseUser.getOrgId());
|
|
|
|
|
// if (company != null) {
|
|
|
|
|
// securityEntity.setOrgId(company.getOrgId());//公司id
|
|
|
|
|
// securityEntity.setOrgName(company.getOrgName());
|
|
|
|
|
// }
|
|
|
|
|
securityEntity.setUserSource("1");//账号类型专家库
|
|
|
|
|
List<AuthorityEntity> authorityList =this.sysExpertUserMapper.selectRoleByUserId(String.valueOf(baseUser.getUserId()));;
|
|
|
|
|
// securityEntity.setOu(baseUser.getOrgId());//部门id
|
|
|
|
|
// securityEntity.setOuName(baseUser.getOrgName());
|
|
|
|
|
// SysOrg company = sysOrgService.getCompanyByOrgId(baseUser.getOrgId());
|
|
|
|
|
// if (company != null) {
|
|
|
|
|
// securityEntity.setOrgId(company.getOrgId());//公司id
|
|
|
|
|
// securityEntity.setOrgName(company.getOrgName());
|
|
|
|
|
// }
|
|
|
|
|
securityEntity.setUserSource("1");// 账号类型专家库
|
|
|
|
|
List<AuthorityEntity> authorityList = this.sysExpertUserMapper
|
|
|
|
|
.selectRoleByUserId(String.valueOf(baseUser.getUserId()));
|
|
|
|
|
;
|
|
|
|
|
securityEntity.setAuthorityList(authorityList);
|
|
|
|
|
return securityEntity;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public SecurityEntity getUserObjectBySupplierUserId(String userId) {
|
|
|
|
|
|
|
|
|
|
SecurityEntity securityEntity = new SecurityEntity();
|
|
|
|
@ -487,15 +514,17 @@ public class BaseUserServiceImpl extends BaseServiceImpl<BaseUserMapper, SysUser
|
|
|
|
|
securityEntity.setStaffId(String.valueOf(baseUser.getUserId().longValue()));
|
|
|
|
|
securityEntity.setUsername(baseUser.getUsername());
|
|
|
|
|
securityEntity.setStaffName(baseUser.getName());
|
|
|
|
|
// securityEntity.setOu(baseUser.getOrgId());//部门id
|
|
|
|
|
// securityEntity.setOuName(baseUser.getOrgName());
|
|
|
|
|
// SysOrg company = sysOrgService.getCompanyByOrgId(baseUser.getOrgId());
|
|
|
|
|
// if (company != null) {
|
|
|
|
|
// securityEntity.setOrgId(company.getOrgId());//公司id
|
|
|
|
|
// securityEntity.setOrgName(company.getOrgName());
|
|
|
|
|
// }
|
|
|
|
|
securityEntity.setUserSource("2");//账号类型供应商
|
|
|
|
|
List<AuthorityEntity> authorityList =this.sysSupplierUserMapper.selectRoleByUserId(String.valueOf(baseUser.getUserId().longValue()));;
|
|
|
|
|
// securityEntity.setOu(baseUser.getOrgId());//部门id
|
|
|
|
|
// securityEntity.setOuName(baseUser.getOrgName());
|
|
|
|
|
// SysOrg company = sysOrgService.getCompanyByOrgId(baseUser.getOrgId());
|
|
|
|
|
// if (company != null) {
|
|
|
|
|
// securityEntity.setOrgId(company.getOrgId());//公司id
|
|
|
|
|
// securityEntity.setOrgName(company.getOrgName());
|
|
|
|
|
// }
|
|
|
|
|
securityEntity.setUserSource("2");// 账号类型供应商
|
|
|
|
|
List<AuthorityEntity> authorityList = this.sysSupplierUserMapper
|
|
|
|
|
.selectRoleByUserId(String.valueOf(baseUser.getUserId().longValue()));
|
|
|
|
|
;
|
|
|
|
|
securityEntity.setAuthorityList(authorityList);
|
|
|
|
|
return securityEntity;
|
|
|
|
|
}
|
|
|
|
@ -508,8 +537,10 @@ public class BaseUserServiceImpl extends BaseServiceImpl<BaseUserMapper, SysUser
|
|
|
|
|
*/
|
|
|
|
|
@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)));
|
|
|
|
|
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());
|
|
|
|
@ -525,12 +556,11 @@ public class BaseUserServiceImpl extends BaseServiceImpl<BaseUserMapper, SysUser
|
|
|
|
|
public Boolean logout(HttpServletRequest request) {
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
|
|
String token = request.getHeader(com.chinaunicom.mall.ebtp.cloud.security.starter.common.Constants.AUTHORIZATION_HEADER);
|
|
|
|
|
String token = request
|
|
|
|
|
.getHeader(com.chinaunicom.mall.ebtp.cloud.security.starter.common.Constants.AUTHORIZATION_HEADER);
|
|
|
|
|
if (StringUtils.isNotBlank(token)) {
|
|
|
|
|
token = token.replaceAll("Bearer ", "");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 更新数据库中的token状态为失效
|
|
|
|
|
List<BaseUserToken> tokenList = baseUserTokenService.list(
|
|
|
|
|
new LambdaQueryWrapper<BaseUserToken>()
|
|
|
|
@ -540,10 +570,10 @@ public class BaseUserServiceImpl extends BaseServiceImpl<BaseUserMapper, SysUser
|
|
|
|
|
BaseUserToken userToken = tokenList.get(0);
|
|
|
|
|
userToken.setState(0); // 设置为失效状态
|
|
|
|
|
boolean updateResult = baseUserTokenService.updateById(userToken);
|
|
|
|
|
if (updateResult&&userinfoRedisTemplate.hasKey(REDIS_USER_KEY + token)) {
|
|
|
|
|
if (updateResult && userinfoRedisTemplate.hasKey(REDIS_USER_KEY + token)) {
|
|
|
|
|
// 从Redis中移除token
|
|
|
|
|
userinfoRedisTemplate.delete(REDIS_USER_KEY + token);
|
|
|
|
|
//spring 安全删除用户信息
|
|
|
|
|
// spring 安全删除用户信息
|
|
|
|
|
SecurityContextHolder.clearContext();
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
@ -558,16 +588,43 @@ public class BaseUserServiceImpl extends BaseServiceImpl<BaseUserMapper, SysUser
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 重置用户密码
|
|
|
|
|
* @param account 用户账号(工号)
|
|
|
|
|
* @return 是否重置成功
|
|
|
|
|
*/
|
|
|
|
|
public boolean resetPassword(String account) {
|
|
|
|
|
// 查找用户
|
|
|
|
|
SysUser user = this.getOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getEmployeeNumber, account));
|
|
|
|
|
if (user == null) {
|
|
|
|
|
throw new RuntimeException("无效用户!");
|
|
|
|
|
}
|
|
|
|
|
// 加密新密码
|
|
|
|
|
String encodedPassword = this.encode(resetPassword);
|
|
|
|
|
|
|
|
|
|
// 更新数据库
|
|
|
|
|
SysUser updateUser = new SysUser();
|
|
|
|
|
updateUser.setPassword(encodedPassword);
|
|
|
|
|
updateUser.setUserId(user.getUserId());
|
|
|
|
|
|
|
|
|
|
return this.updateById(updateUser);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static void main(String args[]) throws Exception {
|
|
|
|
|
// String rsa = "ObMojRm4G31O91lJDyV7rT7fmkJ0x/tMz+t2gZa1M5RtZm6cTiaAT6eblAQzjuMbNNU6DoD/YloITzn2jnQH4g2nMj1Y8TXdSEK/q8QSoLb8QVb26SuMt1xuv1hklU0yzkqCtGW7GnRArMMlgQjh04GwAcj6TikEFjKvEGGETm4=";
|
|
|
|
|
// String publicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCThndxa2d5wd1XgZw/OoRHyqqhEKn2Vj8esINcPHRDKz/eDxrHT874ssYfRdkQPU4d13yLhywu30D0J/IusB1Aay0Kl7fszYztP1Yg7Y8Gmiwynj4bFooIFZk5l0wJdxciXA4FgjK+oD4Un/LhP20k5OSQ+QLMDBHBJTD/uk9cxQIDAQAB";
|
|
|
|
|
// String rsa =
|
|
|
|
|
// "ObMojRm4G31O91lJDyV7rT7fmkJ0x/tMz+t2gZa1M5RtZm6cTiaAT6eblAQzjuMbNNU6DoD/YloITzn2jnQH4g2nMj1Y8TXdSEK/q8QSoLb8QVb26SuMt1xuv1hklU0yzkqCtGW7GnRArMMlgQjh04GwAcj6TikEFjKvEGGETm4=";
|
|
|
|
|
// String publicKey =
|
|
|
|
|
// "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCThndxa2d5wd1XgZw/OoRHyqqhEKn2Vj8esINcPHRDKz/eDxrHT874ssYfRdkQPU4d13yLhywu30D0J/IusB1Aay0Kl7fszYztP1Yg7Y8Gmiwynj4bFooIFZk5l0wJdxciXA4FgjK+oD4Un/LhP20k5OSQ+QLMDBHBJTD/uk9cxQIDAQAB";
|
|
|
|
|
String publicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCvLBkALIYR/x9Rv5TiXQGWAXTzraN/He80r9gQovSQ5oTP8qllL9+Oc1LdTijPFRsddHWg37umvFliwhmukU1NT+o2loGcKpyMHFkc/UPNjQLvd+YFR4nYhgP8l+dmRNOtQWawOt5dbksRKTghMjA+FKT2+itMsawSs1+Ic+zoIwIDAQAB";
|
|
|
|
|
// String privateKey = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAJOGd3FrZ3nB3VeBnD86hEfKqqEQqfZWPx6wg1w8dEMrP94PGsdPzviyxh9F2RA9Th3XfIuHLC7fQPQn8i6wHUBrLQqXt+zNjO0/ViDtjwaaLDKePhsWiggVmTmXTAl3FyJcDgWCMr6gPhSf8uE/bSTk5JD5AswMEcElMP+6T1zFAgMBAAECgYAk2fsuTukbRi03db4FIWX31Q2IjHQYf/TmgqtduBBG0x/yJY3H6gzGnUnWeAlAAEBqPfDzncGQt94u32ek+ANmN161r22eBqoihHJQsCD3n3uFw8fdCRzpP9fiJVUFf3Yf/Di2G6cHKJ1Bs8H2GtmajeUUgjNNvJdQXLsTU2DBoQJBAPV9Luzcb62BO9GsL/C6nrxOEPnfTOvpQpBDjb4JnnS8G4CRoEERB8y0p/npD7wrhwG1aEpOj/6XUUz8yAqrA50CQQCZ139/lX0W6TGxZF5RQu9PlKW5/K74Ysd6tvuom93bwLG4zpCgfIoH3mSkWtKENvob7CV07T/irYppa/bIpRlJAkARnsqfdbMOYRhKFHHcdYivO2s8hCqhRDzi3fZujYIyHs5ajBlUkkRdDRqBdZkLiJRIKx0xODJds77CJ+Kz4VKBAkAUf14Bhc1w7Aku9YyLjzuLgubB7STy+1ZQx2iognwA95+2W+9xMqbBfaQzMdayvxB7/+7NsX69mRnEChqLiVPhAkEA6W9YOoZQlL6yCYE4GE3W38g0m7lq68XuVFgCpULEfR3s5bsPcqxC4xM29Ry80cEv6fAE+jht7JUq0ar/tRqfNA==";
|
|
|
|
|
// String privateKey =
|
|
|
|
|
// "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAJOGd3FrZ3nB3VeBnD86hEfKqqEQqfZWPx6wg1w8dEMrP94PGsdPzviyxh9F2RA9Th3XfIuHLC7fQPQn8i6wHUBrLQqXt+zNjO0/ViDtjwaaLDKePhsWiggVmTmXTAl3FyJcDgWCMr6gPhSf8uE/bSTk5JD5AswMEcElMP+6T1zFAgMBAAECgYAk2fsuTukbRi03db4FIWX31Q2IjHQYf/TmgqtduBBG0x/yJY3H6gzGnUnWeAlAAEBqPfDzncGQt94u32ek+ANmN161r22eBqoihHJQsCD3n3uFw8fdCRzpP9fiJVUFf3Yf/Di2G6cHKJ1Bs8H2GtmajeUUgjNNvJdQXLsTU2DBoQJBAPV9Luzcb62BO9GsL/C6nrxOEPnfTOvpQpBDjb4JnnS8G4CRoEERB8y0p/npD7wrhwG1aEpOj/6XUUz8yAqrA50CQQCZ139/lX0W6TGxZF5RQu9PlKW5/K74Ysd6tvuom93bwLG4zpCgfIoH3mSkWtKENvob7CV07T/irYppa/bIpRlJAkARnsqfdbMOYRhKFHHcdYivO2s8hCqhRDzi3fZujYIyHs5ajBlUkkRdDRqBdZkLiJRIKx0xODJds77CJ+Kz4VKBAkAUf14Bhc1w7Aku9YyLjzuLgubB7STy+1ZQx2iognwA95+2W+9xMqbBfaQzMdayvxB7/+7NsX69mRnEChqLiVPhAkEA6W9YOoZQlL6yCYE4GE3W38g0m7lq68XuVFgCpULEfR3s5bsPcqxC4xM29Ry80cEv6fAE+jht7JUq0ar/tRqfNA==";
|
|
|
|
|
String privateKey = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAK8sGQAshhH/H1G/lOJdAZYBdPOto38d7zSv2BCi9JDmhM/yqWUv345zUt1OKM8VGx10daDfu6a8WWLCGa6RTU1P6jaWgZwqnIwcWRz9Q82NAu935gVHidiGA/yX52ZE061BZrA63l1uSxEpOCEyMD4UpPb6K0yxrBKzX4hz7OgjAgMBAAECgYAT/jx8QJisxSmV8v/TNjpQHKp0hYT7pTcAFHHctDylrSnLci7TVbt2TsNObvVJbWdC3V/vlJmeVjD9jJnRytO/pgc+p8I3Q3pfF7ACiBAz1+4VZM40vFz0RfQKJ/kZB3DiGohprOw60kRR0eMtHuaA07luhBCbne6700Paf+OOAQJBAP9THm3KEcnChnRBC6yPdNHLN/XplgGaIJU2Wo0biI8Oz2bM3eJGPSwrVCqObOwVPNYJIfEQRhlWlB9kpBS0ECECQQCvorUUJwJhV+Fx6bhUK5aa1/rDTODPmS1MycvLtjOp7ig1sGcb4g9Vl8uRPzsvQZ6Z+sNTD4mFFnYFneCvPL/DAkAMZo4QyQKqKO98z/fwLpt+4P7by7eEZmb0uEoXlmHAiPibxpF0PvMTpRsWYgp6QOHOh20Fl0PAUUsqZyns833hAkBEzV9UIqfrDCsTnbQIvP6FcAAay53xlRbK0u5Twe9hLRtxVMY/hQHuzMUBBB0iOPlxZmtnuVls2kynjJ4853ZTAkEAu+lLTmM7DBV9jDEc9sNM7UNa0MvAUb6r9DsTKHGLLRqB7ljQ1R2RiLRknFaegUPEVsvdMszH2rdy3CaIWkC5OQ==";
|
|
|
|
|
// String p = "jxsnmqYTsskthlKdpffZ/q/gKfPp9kQpmiNaLg2LqNvyoTnsm+cu7q1ZhmcuK/QH6BKV38dXFgqw3kmEu4X/CKoMHP83vwBSxZhF/uk0SQixRBtpvIIJ/M7XFzyZnUD1u3beEiwbuoWjhtjqq/ImWn7nB54ldc3T/S/lyMS4+Jc=";
|
|
|
|
|
// String p2 ="jxsnmqYTsskthlKdpffZ/q/gKfPp9kQpmiNaLg2LqNvyoTnsm+cu7q1ZhmcuK/QH6BKV38dXFgqw3kmEu4X/CKoMHP83vwBSxZhF/uk0SQixRBtpvIIJ/M7XFzyZnUD1u3beEiwbuoWjhtjqq/ImWn7nB54ldc3T/S/lyMS4+Jc=";
|
|
|
|
|
// System.out.println(URLEncoder.encode(p,"utf-8"));
|
|
|
|
|
// System.out.println(RSA.decrypt(p2,privateKey));
|
|
|
|
|
// String p =
|
|
|
|
|
// "jxsnmqYTsskthlKdpffZ/q/gKfPp9kQpmiNaLg2LqNvyoTnsm+cu7q1ZhmcuK/QH6BKV38dXFgqw3kmEu4X/CKoMHP83vwBSxZhF/uk0SQixRBtpvIIJ/M7XFzyZnUD1u3beEiwbuoWjhtjqq/ImWn7nB54ldc3T/S/lyMS4+Jc=";
|
|
|
|
|
// String p2
|
|
|
|
|
// ="jxsnmqYTsskthlKdpffZ/q/gKfPp9kQpmiNaLg2LqNvyoTnsm+cu7q1ZhmcuK/QH6BKV38dXFgqw3kmEu4X/CKoMHP83vwBSxZhF/uk0SQixRBtpvIIJ/M7XFzyZnUD1u3beEiwbuoWjhtjqq/ImWn7nB54ldc3T/S/lyMS4+Jc=";
|
|
|
|
|
// System.out.println(URLEncoder.encode(p,"utf-8"));
|
|
|
|
|
// System.out.println(RSA.decrypt(p2,privateKey));
|
|
|
|
|
|
|
|
|
|
BaseUserServiceImpl baseUserService = new BaseUserServiceImpl();
|
|
|
|
|
String mm = baseUserService.encode("cosco2025");
|
|
|
|
|