Просмотр исходного кода

fix 修复 用户重名登录报错问题

疯狂的狮子Li 3 лет назад
Родитель
Сommit
e7979eabc9

+ 7 - 4
ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/RemoteUserService.java

@@ -16,25 +16,28 @@ public interface RemoteUserService {
      * 通过用户名查询用户信息
      *
      * @param username 用户名
+     * @param tenantId 租户id
      * @return 结果
      */
-    LoginUser getUserInfo(String username) throws UserException;
+    LoginUser getUserInfo(String username, String tenantId) throws UserException;
 
     /**
      * 通过手机号查询用户信息
      *
      * @param phonenumber 手机号
+     * @param tenantId    租户id
      * @return 结果
      */
-    LoginUser getUserInfoByPhonenumber(String phonenumber) throws UserException;
+    LoginUser getUserInfoByPhonenumber(String phonenumber, String tenantId) throws UserException;
 
     /**
      * 通过邮箱查询用户信息
      *
-     * @param email 邮箱
+     * @param email    邮箱
+     * @param tenantId 租户id
      * @return 结果
      */
-    LoginUser getUserInfoByEmail(String email) throws UserException;
+    LoginUser getUserInfoByEmail(String email, String tenantId) throws UserException;
 
     /**
      * 通过openid查询用户信息

+ 3 - 3
ruoyi-auth/src/main/java/org/dromara/auth/service/SysLoginService.java

@@ -64,7 +64,7 @@ public class SysLoginService {
     public String login(String tenantId, String username, String password) {
         // 校验租户
         checkTenant(tenantId);
-        LoginUser userInfo = remoteUserService.getUserInfo(username);
+        LoginUser userInfo = remoteUserService.getUserInfo(username, tenantId);
         checkLogin(LoginType.PASSWORD, tenantId, username, () -> !BCrypt.checkpw(password, userInfo.getPassword()));
         // 获取登录token
         LoginHelper.loginByDevice(userInfo, DeviceType.PC);
@@ -77,7 +77,7 @@ public class SysLoginService {
         // 校验租户
         checkTenant(tenantId);
         // 通过手机号查找用户
-        LoginUser userInfo = remoteUserService.getUserInfoByPhonenumber(phonenumber);
+        LoginUser userInfo = remoteUserService.getUserInfoByPhonenumber(phonenumber, tenantId);
 
         checkLogin(LoginType.SMS, tenantId, userInfo.getUsername(), () -> !validateSmsCode(tenantId, phonenumber, smsCode));
         // 生成token
@@ -91,7 +91,7 @@ public class SysLoginService {
         // 校验租户
         checkTenant(tenantId);
         // 通过邮箱查找用户
-        LoginUser userInfo = remoteUserService.getUserInfoByEmail(email);
+        LoginUser userInfo = remoteUserService.getUserInfoByEmail(email, tenantId);
 
         checkLogin(LoginType.EMAIL,tenantId, userInfo.getUsername(), () -> !validateEmailCode(tenantId, email, emailCode));
         // 生成token

+ 1 - 1
ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/service/MultiService.java

@@ -28,7 +28,7 @@ public class MultiService {
     @GlobalTransactional(rollbackFor = Exception.class)
     @XxlJob("multiServiceHandler")
     public void multiServiceHandler() throws Exception {
-        LoginUser admin = remoteUserService.getUserInfo("admin");
+        LoginUser admin = remoteUserService.getUserInfo("admin", "000000");
         XxlJobHelper.log("XXL-JOB, multiServiceHandler result: {}", admin.toString());
         RemoteUserBo remoteUserBo = new RemoteUserBo();
         remoteUserBo.setUserName("test");

+ 10 - 10
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteUserServiceImpl.java

@@ -41,10 +41,10 @@ public class RemoteUserServiceImpl implements RemoteUserService {
     private final SysUserMapper userMapper;
 
     @Override
-    public LoginUser getUserInfo(String username) throws UserException {
+    public LoginUser getUserInfo(String username, String tenantId) throws UserException {
         SysUser sysUser = userMapper.selectOne(new LambdaQueryWrapper<SysUser>()
-                .select(SysUser::getUserName, SysUser::getStatus)
-                .eq(SysUser::getUserName, username));
+            .select(SysUser::getUserName, SysUser::getStatus)
+            .eq(SysUser::getUserName, username));
         if (ObjectUtil.isNull(sysUser)) {
             throw new UserException("user.not.exists", username);
         }
@@ -53,14 +53,14 @@ public class RemoteUserServiceImpl implements RemoteUserService {
         }
         // 框架登录不限制从什么表查询 只要最终构建出 LoginUser 即可
         // 此处可根据登录用户的数据不同 自行创建 loginUser 属性不够用继承扩展就行了
-        return buildLoginUser(userMapper.selectUserByUserName(username));
+        return buildLoginUser(userMapper.selectTenantUserByUserName(username, tenantId));
     }
 
     @Override
-    public LoginUser getUserInfoByPhonenumber(String phonenumber) throws UserException {
+    public LoginUser getUserInfoByPhonenumber(String phonenumber, String tenantId) throws UserException {
         SysUser sysUser = userMapper.selectOne(new LambdaQueryWrapper<SysUser>()
-                .select(SysUser::getPhonenumber, SysUser::getStatus)
-                .eq(SysUser::getPhonenumber, phonenumber));
+            .select(SysUser::getPhonenumber, SysUser::getStatus)
+            .eq(SysUser::getPhonenumber, phonenumber));
         if (ObjectUtil.isNull(sysUser)) {
             throw new UserException("user.not.exists", phonenumber);
         }
@@ -69,11 +69,11 @@ public class RemoteUserServiceImpl implements RemoteUserService {
         }
         // 框架登录不限制从什么表查询 只要最终构建出 LoginUser 即可
         // 此处可根据登录用户的数据不同 自行创建 loginUser 属性不够用继承扩展就行了
-        return buildLoginUser(userMapper.selectUserByPhonenumber(phonenumber));
+        return buildLoginUser(userMapper.selectTenantUserByPhonenumber(phonenumber, tenantId));
     }
 
     @Override
-    public LoginUser getUserInfoByEmail(String email) throws UserException {
+    public LoginUser getUserInfoByEmail(String email, String tenantId) throws UserException {
         SysUser user = userMapper.selectOne(new LambdaQueryWrapper<SysUser>()
             .select(SysUser::getPhonenumber, SysUser::getStatus)
             .eq(SysUser::getEmail, email));
@@ -85,7 +85,7 @@ public class RemoteUserServiceImpl implements RemoteUserService {
         }
         // 框架登录不限制从什么表查询 只要最终构建出 LoginUser 即可
         // 此处可根据登录用户的数据不同 自行创建 loginUser 属性不够用继承扩展就行了
-        return buildLoginUser(userMapper.selectUserByEmail(email));
+        return buildLoginUser(userMapper.selectTenantUserByEmail(email, tenantId));
     }
 
     @Override