添加部分方法,调整修改包名后的问题

This commit is contained in:
刘倡
2025-07-10 14:48:12 +08:00
parent 872a13f5ec
commit 5cc71ce7da
15 changed files with 260 additions and 127 deletions

14
Dockerfile Normal file
View File

@ -0,0 +1,14 @@
# 使用官方Java基础镜像
FROM openjdk:8-jdk-alpine
# 设置工作目录
WORKDIR /app
# 复制构建好的jar包到容器中
COPY target/sys_manager_ebtp_project-0.0.1.jar app.jar
# 暴露应用端口(与application.yml中的server.port一致)
EXPOSE 18030
# 启动应用
ENTRYPOINT ["java","-jar","app.jar"]

View File

@ -92,4 +92,9 @@ public class LoginController {
}
}
@ApiOperation("重置密码")
@PostMapping("/resetPassword")
public BaseResponse<Boolean> resetPassword(@RequestBody LoginUserVo vo) {
return BaseResponse.success(iBaseUserService.resetPassword(vo.getAccount()));
}
}

View File

@ -1,9 +1,9 @@
package com.coscoshipping.ebtp.system.login.entity;
import com.coscoshipping.ebtp.system.org.entity.SysOrg;
import com.coscoshipping.ebtp.system.user.entity.SysExpertUser;
import com.coscoshipping.ebtp.system.user.entity.SysSupplierUser;
import com.coscoshipping.ebtp.system.org.entity.SysOrg;
import com.coscoshipping.ebtp.system.user.entity.SysUser;
import lombok.Data;

View File

@ -28,4 +28,11 @@ public interface BaseUserService extends IBaseService<SysUser> {
SecurityEntity bdCheckToken(String token);
Boolean logout(HttpServletRequest request);
/**
* 重置用户密码
* @param account 用户账号(工号)
* @return 是否重置成功
*/
boolean resetPassword(String account);
}

View File

@ -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");

View File

@ -3,7 +3,6 @@ package com.coscoshipping.ebtp.system.user.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse;
import com.coscoshipping.ebtp.system.user.entity.dto.SysInnerUserInfo;
import com.coscoshipping.ebtp.system.user.entity.vo.SysUserVO;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.PathVariable;
@ -129,4 +128,16 @@ public class SysUserController{
return BaseResponse.success(iSysUserService.getInnerUserInfo(employeeNumber));
}
/**
* 根据用户ID集合查询所有用户信息
* @param ids 用户ID集合
* @return 用户信息列表
*/
@ApiOperation("根据用户ID集合查询所有用户信息")
@PostMapping("/getUsersByIds")
public BaseResponse<List<SysUser>> getUsersByIds(@RequestBody List<String> ids) {
List<SysUser> users = iSysUserService.getUsersByIds(ids);
return BaseResponse.success(users);
}
}

View File

@ -1,12 +1,13 @@
package com.coscoshipping.ebtp.system.user.dao;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import com.chinaunicom.mall.ebtp.cloud.security.starter.entity.AuthorityEntity;
import com.chinaunicom.mall.ebtp.common.base.dao.IBaseMapper;
import com.coscoshipping.ebtp.system.user.entity.SysExpertUser;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface SysExpertUserMapper extends IBaseMapper<SysExpertUser> {

View File

@ -2,9 +2,9 @@ package com.coscoshipping.ebtp.system.user.dao;
import com.chinaunicom.mall.ebtp.cloud.security.starter.entity.AuthorityEntity;
import com.chinaunicom.mall.ebtp.common.base.dao.IBaseMapper;
import com.coscoshipping.ebtp.system.user.entity.SysSupplierUser;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import com.coscoshipping.ebtp.system.user.entity.SysSupplierUser;
import java.util.List;

View File

@ -4,7 +4,14 @@ package com.coscoshipping.ebtp.system.user.dao;
import com.chinaunicom.mall.ebtp.common.base.dao.IBaseMapper;
import org.springframework.stereotype.Repository;
import com.coscoshipping.ebtp.system.user.entity.SysUser;
import java.util.List;
@Repository
public interface SysUserMapper extends IBaseMapper<SysUser> {
/**
* 根据用户ID集合查询所有用户信息
* @param ids 用户ID集合
* @return 用户信息列表
*/
List<SysUser> getUsersByIds(List<String> ids);
}

View File

@ -34,4 +34,11 @@
delete_flag="1"
where ID=#{id }
</update>
<select id="getUsersByIds" resultMap="userResultMap" parameterType="java.util.List">
SELECT * FROM sys_user WHERE user_id IN
<foreach collection="list" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</select>
</mapper>

View File

@ -7,6 +7,8 @@ import com.coscoshipping.ebtp.system.user.entity.SysUser;
import com.coscoshipping.ebtp.system.user.entity.dto.SysInnerUserInfo;
import com.coscoshipping.ebtp.system.user.entity.vo.SysUserVO;
import java.util.List;
/**
* 对数据表 sys_user 操作的 service
* @author yss
@ -36,5 +38,10 @@ public interface SysUserService extends IBaseService<SysUser>{
public SysInnerUserInfo getInnerUserInfo(String employeeNumber);
/**
* 根据用户ID集合查询所有用户信息
* @param ids 用户ID集合
* @return 用户信息列表
*/
List<SysUser> getUsersByIds(List<String> ids);
}

View File

@ -24,6 +24,7 @@ import com.coscoshipping.ebtp.system.user.entity.SysUser;
import com.coscoshipping.ebtp.system.user.service.SysUserService;
import java.time.LocalDateTime;
import java.util.List;
/**
* 对数据表 sys_user 操作的 serviceImpl
@ -49,6 +50,10 @@ public class SysUserServiceImpl extends BaseServiceImpl<SysUserMapper, SysUser>
//查询
IPage<SysUser> result = new Page<>(sysUserVO.getBasePageRequest().getPageNo(), sysUserVO.getBasePageRequest().getPageSize());
result = this.page(result, query);
// 处理分页结果中的 password 字段(置空)
result.getRecords().forEach(user -> user.setPassword(null));
return result;
}
@ -74,6 +79,15 @@ public class SysUserServiceImpl extends BaseServiceImpl<SysUserMapper, SysUser>
return this.removeById(userId);
}
@Override
public List<SysUser> getUsersByIds(List<String> ids) {
// 查询原始用户列表
List<SysUser> userList = baseMapper.getUsersByIds(ids);
// 处理 password
userList.forEach(user -> user.setPassword(null));
return userList;
}
/**
* 保存前的数据校验
*/

View File

@ -87,8 +87,8 @@ public class UserInfoController {
log.error("access token is empty");
return ResponseEntity.status(HttpStatus.UNAUTHORIZED).build();
}
// return ResponseEntity.ok(cacheUserService.getCacheUser());
return ResponseEntity.ok(userInfoService.getUserInfo(token));
return ResponseEntity.ok(cacheUserService.getCacheUser());
// return ResponseEntity.ok(userInfoService.getUserInfo(token));
}

View File

@ -13,8 +13,7 @@ spring:
writeTimeout: 35000
nacos:
discovery:
server-addr: 127.0.0.1:18848
group: EBTP_GROUP # 例如EBTP_GROUP
server-addr: 192.168.110.109:8848
aop:
auto: true #开启spring的aop配置
proxy-target-class: true
@ -263,6 +262,7 @@ login:
privateKey: MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAK8sGQAshhH/H1G/lOJdAZYBdPOto38d7zSv2BCi9JDmhM/yqWUv345zUt1OKM8VGx10daDfu6a8WWLCGa6RTU1P6jaWgZwqnIwcWRz9Q82NAu935gVHidiGA/yX52ZE061BZrA63l1uSxEpOCEyMD4UpPb6K0yxrBKzX4hz7OgjAgMBAAECgYAT/jx8QJisxSmV8v/TNjpQHKp0hYT7pTcAFHHctDylrSnLci7TVbt2TsNObvVJbWdC3V/vlJmeVjD9jJnRytO/pgc+p8I3Q3pfF7ACiBAz1+4VZM40vFz0RfQKJ/kZB3DiGohprOw60kRR0eMtHuaA07luhBCbne6700Paf+OOAQJBAP9THm3KEcnChnRBC6yPdNHLN/XplgGaIJU2Wo0biI8Oz2bM3eJGPSwrVCqObOwVPNYJIfEQRhlWlB9kpBS0ECECQQCvorUUJwJhV+Fx6bhUK5aa1/rDTODPmS1MycvLtjOp7ig1sGcb4g9Vl8uRPzsvQZ6Z+sNTD4mFFnYFneCvPL/DAkAMZo4QyQKqKO98z/fwLpt+4P7by7eEZmb0uEoXlmHAiPibxpF0PvMTpRsWYgp6QOHOh20Fl0PAUUsqZyns833hAkBEzV9UIqfrDCsTnbQIvP6FcAAay53xlRbK0u5Twe9hLRtxVMY/hQHuzMUBBB0iOPlxZmtnuVls2kynjJ4853ZTAkEAu+lLTmM7DBV9jDEc9sNM7UNa0MvAUb6r9DsTKHGLLRqB7ljQ1R2RiLRknFaegUPEVsvdMszH2rdy3CaIWkC5OQ==
publicKey: MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCvLBkALIYR/x9Rv5TiXQGWAXTzraN/He80r9gQovSQ5oTP8qllL9+Oc1LdTijPFRsddHWg37umvFliwhmukU1NT+o2loGcKpyMHFkc/UPNjQLvd+YFR4nYhgP8l+dmRNOtQWawOt5dbksRKTghMjA+FKT2+itMsawSs1+Ic+zoIwIDAQAB
time_limit: 2 #Minutes
reset_password: cosco2025
user:
auth:

View File

@ -28,10 +28,13 @@ check:
unifast:
sso:
getCode:
url: 1
redirectUrl: 1
clientId: 1
public-key: 1
url: http://sso.example.com/getCode # 示例获取授权码URL需替换为实际地址
redirectUrl: http://client.example.com/callback # 示例回调URL需替换为下游系统回调地址
clientId: sso-client-123 # SSO客户端ID
clientSecret: encrypted:${jasypt.encryptor.bean} # 使用jasypt加密的客户端密钥实际值需通过jasypt加密后配置
public-key: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQE # 用于JWT验签的公钥示例需替换为实际公钥
signing-key: classpath:keystore.jks # 签名密钥库路径需放置在resources目录下
token-validity-seconds: 3600 # access token有效时间单位示例为1小时
jury:
loginCheck: