登陆代码迁移jianquan接口鉴权dengchu

This commit is contained in:
houjishuang
2025-06-20 10:49:29 +08:00
parent fa1a3898a4
commit ab793c16a6
5 changed files with 92 additions and 18 deletions

View File

@ -61,5 +61,13 @@ public class LoginController {
return BaseResponse.success(null);
}
}
@ApiOperation("登出")
@PostMapping("/logout")
public BaseResponse<Boolean> logout(HttpServletRequest request) {
Boolean result = iBaseUserService.logout(request);
return BaseResponse.success(result);
}
}

View File

@ -10,6 +10,7 @@ import com.chinaunicom.mall.ebtp.login.entity.BaseUserSelect;
import com.chinaunicom.mall.ebtp.login.entity.BaseUserSelectVo;
import com.coscoshipping.ebtp.project.user.entity.SysUser;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
@ -26,4 +27,6 @@ public interface BaseUserService extends IBaseService<SysUser> {
void setCookie(HttpServletResponse response, String name, String value);
SecurityEntity bdCheckToken(String token);
Boolean logout(HttpServletRequest request);
}

View File

@ -11,12 +11,14 @@ 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.chinaunicom.mall.ebtp.login.common.Constants;
import com.chinaunicom.mall.ebtp.login.common.Constants;;
import com.chinaunicom.mall.ebtp.login.common.RSA;
import com.chinaunicom.mall.ebtp.login.dao.BaseUserMapper;
import com.chinaunicom.mall.ebtp.login.entity.*;
import com.chinaunicom.mall.ebtp.login.service.BaseUserService;
import com.chinaunicom.mall.ebtp.login.service.BaseUserTokenService;
import com.coscoshipping.ebtp.project.org.entity.SysOrg;
import com.coscoshipping.ebtp.project.org.service.SysOrgService;
import com.coscoshipping.ebtp.project.user.entity.SysUser;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
@ -25,6 +27,7 @@ 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;
@ -72,6 +75,8 @@ public class BaseUserServiceImpl extends BaseServiceImpl<BaseUserMapper, SysUser
@Autowired
private UserInfoService userInfoService;
@Autowired
private SysOrgService sysOrgService;
@Autowired(required = false)
@Qualifier("cacheRedisTemplate")
private RedisTemplate<String, Object> redisTemplate;
@ -243,8 +248,11 @@ public class BaseUserServiceImpl extends BaseServiceImpl<BaseUserMapper, SysUser
securityEntity.setStaffName(baseUser.getName());
securityEntity.setOu(baseUser.getOrgId());//部门id
securityEntity.setOuName(baseUser.getOrgName());
securityEntity.setOrgId("1");//公司Id
securityEntity.setOrgName("中远");
SysOrg company = sysOrgService.getCompanyByOrgId(baseUser.getOrgId());
if (company != null) {
securityEntity.setOrgId(company.getOrgId());//公司id
securityEntity.setOrgName(company.getOrgName());
}
securityEntity.setUserSource("0");//账号类型中远
List<AuthorityEntity> authorityList =this.baseUserMapper.selectRoleByUserId(baseUser.getUserId());;
securityEntity.setAuthorityList(authorityList);
@ -272,6 +280,43 @@ public class BaseUserServiceImpl extends BaseServiceImpl<BaseUserMapper, SysUser
return securityEntity;
}
@Override
public Boolean logout(HttpServletRequest request) {
try {
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>()
.eq(BaseUserToken::getToken, token)
.eq(BaseUserToken::getState, Constants.USER_TOKEN_STATUS_E));
if (tokenList != null && !tokenList.isEmpty()) {
BaseUserToken userToken = tokenList.get(0);
userToken.setState(0); // 设置为失效状态
boolean updateResult = baseUserTokenService.updateById(userToken);
if (updateResult&&userinfoRedisTemplate.hasKey(REDIS_USER_KEY + token)) {
// 从Redis中移除token
userinfoRedisTemplate.delete(REDIS_USER_KEY + token);
//spring 安全删除用户信息
SecurityContextHolder.clearContext();
return true;
}
}
}
return false;
} catch (Exception e) {
log.error("登出异常:{}", e);
return false;
}
}
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";

View File

@ -39,4 +39,6 @@ public interface SysOrgService extends IBaseService<SysOrg>{
* @return
*/
Boolean deleteById(String orgId);
SysOrg getCompanyByOrgId(String orgId);
}

View File

@ -29,8 +29,8 @@ import java.util.stream.Collectors;
/**
* 对数据表 sys_org 操作的 serviceImpl
* @author yss
*
* @author yss
*/
@Service
public class SysOrgServiceImpl extends BaseServiceImpl<SysOrgMapper, SysOrg> implements SysOrgService {
@ -116,6 +116,21 @@ public class SysOrgServiceImpl extends BaseServiceImpl<SysOrgMapper,SysOrg> imp
return this.removeById(orgId);
}
@Override
public SysOrg getCompanyByOrgId(String orgId) {
LambdaQueryWrapper<SysOrg> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(SysOrg::getOrgId, orgId).eq(SysOrg::getDeleteFlag, "normal");
SysOrg currentOrg = baseMapper.selectOne(queryWrapper);
while ((currentOrg != null) && !currentOrg.getOrgCategory().equals("Org") && !CommonUtil.ROOT_NODE.equals(currentOrg.getOrgId())) {
queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(SysOrg::getOrgId, currentOrg.getUpOrgId())
.eq(SysOrg::getDeleteFlag, "normal");
currentOrg = baseMapper.selectOne(queryWrapper);
}
return currentOrg;
}
// @Override
public SysOrg buildOrgFullPath(SysOrg nowOrg) {
@ -165,6 +180,7 @@ public class SysOrgServiceImpl extends BaseServiceImpl<SysOrgMapper,SysOrg> imp
.setKey(orgVO.getOrgId())
.setValue(orgVO.getOrgId());
}
/**
* 递归查询部门信息树形展示
*