Conflicts:
	src/main/java/com/chinaunicom/mall/ebtp/login/service/impl/BaseUserServiceImpl.java
This commit is contained in:
houjishuang
2025-06-19 11:45:29 +08:00

View File

@ -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,30 +140,30 @@ 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)));
String token = UUID.randomUUID().toString();
BaseUserToken tokenObj = new BaseUserToken();
if(tokenList!=null&&tokenList.size()>0){
tokenObj = tokenList.get(0);
token = tokenObj.getToken();
}else{
tokenObj.setUserId(userId);
tokenObj.setToken(token);
tokenObj.setState(Constants.USER_TOKEN_STATUS_E);
tokenObj.setCreateTime(LocalDateTime.now());
}
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) {
tokenObj = tokenList.get(0);
token = tokenObj.getToken();
} else {
tokenObj.setUserId(userId);
tokenObj.setToken(token);
tokenObj.setState(Constants.USER_TOKEN_STATUS_E);
tokenObj.setCreateTime(LocalDateTime.now());
}
SecurityEntity securityEntity = getUserObjectByUserId(userId);
tokenObj.setUserObject(JSONObject.toJSONString(securityEntity));
baseUserTokenService.refreshToken(tokenObj);
return token;
return token;
}
@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)));
@ -253,9 +276,9 @@ public class BaseUserServiceImpl extends BaseServiceImpl<BaseUserMapper, SysUser
// 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 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));
@ -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);