fix (farm): 登录(微信端)
- 刷新LocalThread中的tenantId
This commit is contained in:
@@ -164,15 +164,43 @@ public class AuthController {
|
||||
}
|
||||
}
|
||||
|
||||
// @PermitAll
|
||||
// @PostMapping("/login-by-tenant")
|
||||
// @Operation(summary = "登录 (切换租户之后调用)")
|
||||
// public CommonResult<AuthLoginRespVO> getPhoneNumber4Login(@RequestBody @Valid TenantTokenReqVO reqVO) {
|
||||
// // 强行清楚 本地线程 中的租户ID , 请设置为当前将要登录的租户ID
|
||||
//// TenantContextHolder.clear();
|
||||
//// TenantContextHolder.setTenantId(Long.valueOf(reqVO.getTenantId()));
|
||||
// AuthLoginRespVO login = authService.getPhoneNumber4Login(reqVO);
|
||||
// if (login != null) {
|
||||
// return success(login);
|
||||
// } else {
|
||||
// return error(405, "该手机号不是平台用户");
|
||||
// }
|
||||
// }
|
||||
|
||||
@PermitAll
|
||||
@TenantIgnore
|
||||
@PostMapping("/login-by-tenant")
|
||||
@Operation(summary = "登录 (切换租户之后调用)")
|
||||
public CommonResult<AuthLoginRespVO> getPhoneNumber4Login(@RequestBody @Valid TenantTokenReqVO reqVO) {
|
||||
// 强行清楚 本地线程 中的租户ID , 请设置为当前将要登录的租户ID
|
||||
public CommonResult<AuthLoginRespVO> loginByTenant(@RequestBody @Valid TenantTokenReqVO reqVO) {
|
||||
// 强行清除本地线程中的租户ID,设置为当前将要登录的租户ID
|
||||
Long targetTenantId;
|
||||
try {
|
||||
targetTenantId = Long.valueOf(reqVO.getTenantId());
|
||||
} catch (NumberFormatException e) {
|
||||
log.error("[loginByTenant][租户ID格式错误: {}]", reqVO.getTenantId());
|
||||
return error(400, "租户ID格式错误");
|
||||
}
|
||||
|
||||
// 清除并设置租户ID,确保后续操作使用正确的租户上下文
|
||||
// TenantContextHolder.clear();
|
||||
// TenantContextHolder.setTenantId(Long.valueOf(reqVO.getTenantId()));
|
||||
// TenantContextHolder.setTenantId(targetTenantId);
|
||||
// log.info("[loginByTenant][设置租户ID: {}, 手机号: {}]", targetTenantId, reqVO.getPhoneNumber());
|
||||
|
||||
AuthLoginRespVO login = authService.getPhoneNumber4Login(reqVO);
|
||||
if (login != null) {
|
||||
log.info("[loginByTenant][登录成功,最终租户ID: {}]", TenantContextHolder.getTenantId());
|
||||
return success(login);
|
||||
} else {
|
||||
return error(405, "该手机号不是平台用户");
|
||||
|
||||
@@ -451,13 +451,44 @@ public class AdminAuthServiceImpl implements AdminAuthService {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
// @Override
|
||||
// public AuthLoginRespVO getPhoneNumber4Login(TenantTokenReqVO reqVO) {
|
||||
// String phoneNumber = reqVO.getPhoneNumber();
|
||||
// AdminUserDO user = userService.getUserByMobileAndTenantId2(phoneNumber,reqVO.getTenantId());
|
||||
//
|
||||
// AuthLoginRespVO tokenAfterLoginSuccess = createTokenAfterLoginSuccess(user.getId(), user.getUsername(), LoginLogTypeEnum.LOGIN_MOBILE);
|
||||
// tokenAfterLoginSuccess.setMobile(phoneNumber);
|
||||
// return tokenAfterLoginSuccess;
|
||||
// }
|
||||
|
||||
public AuthLoginRespVO getPhoneNumber4Login(TenantTokenReqVO reqVO) {
|
||||
String phoneNumber = reqVO.getPhoneNumber();
|
||||
AdminUserDO user = userService.getUserByMobileAndTenantId2(phoneNumber,reqVO.getTenantId());
|
||||
// 切换租户:强制使用请求中的租户ID,这是用户要切换到的目标租户ID
|
||||
Long targetTenantId = Long.valueOf(reqVO.getTenantId());
|
||||
|
||||
// 清除并设置目标租户ID,确保后续操作使用新的租户上下文
|
||||
TenantContextHolder.clear();
|
||||
TenantContextHolder.setTenantId(targetTenantId);
|
||||
log.info("[getPhoneNumber4Login][切换租户登录,设置目标租户ID: {}, 手机号: {}]", targetTenantId, phoneNumber);
|
||||
|
||||
// 根据手机号和目标租户ID查询用户(该租户下的用户账号)
|
||||
AdminUserDO user = userService.getUserByMobileAndTenantId2(phoneNumber, reqVO.getTenantId());
|
||||
if (user == null) {
|
||||
log.warn("[getPhoneNumber4Login][用户不存在,手机号: {}, 目标租户ID: {}]", phoneNumber, targetTenantId);
|
||||
return null;
|
||||
}
|
||||
|
||||
log.info("[getPhoneNumber4Login][找到用户: {}, 用户所属租户ID: {}, 目标租户ID: {}]",
|
||||
user.getId(), user.getTenantId(), targetTenantId);
|
||||
|
||||
// 再次确保使用目标租户ID(防止在查询过程中被覆盖)
|
||||
TenantContextHolder.setTenantId(targetTenantId);
|
||||
log.info("[getPhoneNumber4Login][创建Token前,确认使用目标租户ID: {}]", TenantContextHolder.getTenantId());
|
||||
|
||||
// 创建token,确保使用目标租户ID
|
||||
AuthLoginRespVO tokenAfterLoginSuccess = createTokenAfterLoginSuccess(user.getId(), user.getUsername(), LoginLogTypeEnum.LOGIN_MOBILE);
|
||||
tokenAfterLoginSuccess.setMobile(phoneNumber);
|
||||
log.info("[getPhoneNumber4Login][Token创建完成,租户ID: {}]", TenantContextHolder.getTenantId());
|
||||
return tokenAfterLoginSuccess;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user