fix: 优化用户登录租户逻辑

This commit is contained in:
tangwei 2026-06-30 10:13:46 +08:00
parent 16c51d5c59
commit e7d95c625f

View File

@ -1,18 +1,23 @@
package com.yfd.platform.system.service.impl;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.yfd.platform.datasource.DataSource;
import com.yfd.platform.system.domain.LoginUser;
import com.yfd.platform.system.domain.SysUser;
import com.yfd.platform.system.mapper.SysMenuMapper;
import com.yfd.platform.system.service.IUserService;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.stereotype.Service;
import jakarta.annotation.Resource;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import java.util.List;
/**
@ -35,9 +40,19 @@ public class UserDetailsServiceImpl implements UserDetailsService {
@Override
@DataSource(name = "master")
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
// 获取当前请求
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
//根据用户名称或手机号查询用户信息
QueryWrapper<SysUser> queryWrapper = new QueryWrapper<>();
queryWrapper.and(wrapper -> wrapper.eq("username", username).or().eq("phone", username));
if (attributes != null) {
HttpServletRequest request = attributes.getRequest();
String tenantId = request.getHeader("Tenant_Id");
if(StrUtil.isNotBlank(tenantId)){
queryWrapper.eq("TENANT_ID", tenantId);
}
}
SysUser user = userService.getOne(queryWrapper);
if (ObjectUtil.isEmpty(user)) {
throw new RuntimeException("用户账号不存在!");