浏览代码

员工认证

tjf 2 月之前
父节点
当前提交
e3c603bf82
共有 27 个文件被更改,包括 291 次插入131 次删除
  1. 11 0
      ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java
  2. 83 3
      ruoyi-admin/src/main/java/org/dromara/web/service/SysLoginService.java
  3. 1 1
      ruoyi-admin/src/main/resources/i18n/messages.properties
  4. 7 5
      ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/core/service/SaPermissionImpl.java
  5. 11 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysRoleController.java
  6. 1 1
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysTenantController.java
  7. 9 3
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysUserController.java
  8. 1 1
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysMenuMapper.java
  9. 1 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysRoleMapper.java
  10. 1 1
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysTenantMapper.java
  11. 1 1
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysMenuService.java
  12. 2 2
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysPermissionService.java
  13. 10 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysRoleService.java
  14. 3 3
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysTenantService.java
  15. 2 2
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysMenuServiceImpl.java
  16. 6 6
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysPermissionServiceImpl.java
  17. 26 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysRoleServiceImpl.java
  18. 13 2
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysTenantServiceImpl.java
  19. 7 2
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java
  20. 2 2
      ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml
  21. 11 1
      ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml
  22. 2 2
      ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysTenantMapper.xml
  23. 14 1
      ruoyi-modules/ruoyi-wuye/src/main/java/org/dromara/controller/staffManage/StaffManageController.java
  24. 0 68
      ruoyi-modules/ruoyi-wuye/src/main/java/org/dromara/domain/communityNews/vo/CommentStarsBo.java
  25. 4 0
      ruoyi-modules/ruoyi-wuye/src/main/java/org/dromara/domain/staffManage/bo/StaffManageBo.java
  26. 6 0
      ruoyi-modules/ruoyi-wuye/src/main/java/org/dromara/service/IStaffManageService.java
  27. 56 24
      ruoyi-modules/ruoyi-wuye/src/main/java/org/dromara/service/impl/StaffManageServiceImpl.java

+ 11 - 0
ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java

@@ -126,6 +126,17 @@ public class AuthController {
         return R.ok(loginVo);
     }
 
+    /**
+     * 动态切换租户
+     *
+     * @param
+     */
+    //@SaCheckRole(TenantConstants.SUPER_ADMIN_ROLE_KEY)
+    @PostMapping("/dynamic/loginBody")
+    public R<String> dynamicTenant( @RequestBody LoginBody loginBody) {
+        String token = loginService.getLoginVo(loginBody);
+        return R.ok(token);
+    }
     /**
      * 获取跳转URL
      *

+ 83 - 3
ruoyi-admin/src/main/java/org/dromara/web/service/SysLoginService.java

@@ -1,12 +1,14 @@
 package org.dromara.web.service;
 
 import cn.dev33.satoken.exception.NotLoginException;
+import cn.dev33.satoken.stp.SaLoginModel;
 import cn.dev33.satoken.stp.StpUtil;
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.lang.Opt;
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.lock.annotation.Lock4j;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import me.zhyd.oauth.model.AuthUser;
@@ -16,6 +18,7 @@ import org.dromara.common.core.constant.SystemConstants;
 import org.dromara.common.core.constant.TenantConstants;
 import org.dromara.common.core.domain.dto.PostDTO;
 import org.dromara.common.core.domain.dto.RoleDTO;
+import org.dromara.common.core.domain.model.LoginBody;
 import org.dromara.common.core.domain.model.LoginUser;
 import org.dromara.common.core.enums.LoginType;
 import org.dromara.common.core.exception.ServiceException;
@@ -63,6 +66,7 @@ public class SysLoginService {
     private final ISysDeptService deptService;
     private final ISysPostService postService;
     private final SysUserMapper userMapper;
+    private final ISysClientService clientService;
 
 
     /**
@@ -151,14 +155,15 @@ public class SysLoginService {
     public LoginUser buildLoginUser(SysUserVo user) {
         LoginUser loginUser = new LoginUser();
         Long userId = user.getUserId();
-        loginUser.setTenantId(user.getTenantId());
+        String tenantId = user.getTenantId();
+        loginUser.setTenantId(tenantId);
         loginUser.setUserId(userId);
         loginUser.setDeptId(user.getDeptId());
         loginUser.setUsername(user.getUserName());
         loginUser.setNickname(user.getNickName());
         loginUser.setUserType(user.getUserType());
-        loginUser.setMenuPermission(permissionService.getMenuPermission(userId));
-        loginUser.setRolePermission(permissionService.getRolePermission(userId));
+        loginUser.setMenuPermission(permissionService.getMenuPermission(userId,tenantId));
+        loginUser.setRolePermission(permissionService.getRolePermission(userId,tenantId));
         if (ObjectUtil.isNotNull(user.getDeptId())) {
             Opt<SysDeptVo> deptOpt = Opt.of(user.getDeptId()).map(deptService::selectDeptById);
             loginUser.setDeptName(deptOpt.map(SysDeptVo::getDeptName).orElse(StringUtils.EMPTY));
@@ -171,6 +176,38 @@ public class SysLoginService {
         return loginUser;
     }
 
+/*    *//**
+     * 构建登录用户
+     *//*
+    public LoginUser buildLoginUserByTenantId(SysUserVo user) {
+        LoginUser loginUser = new LoginUser();
+        Long userId = user.getUserId();
+        loginUser.setTenantId(user.getTenantId());
+        loginUser.setUserId(userId);
+        loginUser.setDeptId(user.getDeptId());
+        loginUser.setUsername(user.getUserName());
+        loginUser.setNickname(user.getNickName());
+        loginUser.setUserType(user.getUserType());
+
+        Set<String> menuPermission = TenantHelper.ignore(() -> { return permissionService.getMenuPermission(userId); });
+        loginUser.setMenuPermission(menuPermission);
+        Set<String> rolePermission = TenantHelper.ignore(() -> { return permissionService.getRolePermission(userId); });
+        loginUser.setRolePermission(rolePermission);
+        if (ObjectUtil.isNotNull(user.getDeptId())) {
+            SysDeptVo sysDeptVo =TenantHelper.ignore(() -> { return deptService.selectDeptById(user.getDeptId()); });
+            loginUser.setDeptName(sysDeptVo.getDeptName());
+            loginUser.setDeptCategory(sysDeptVo.getDeptCategory());
+*//*            Opt<SysDeptVo> deptOpt = Opt.of(user.getDeptId()).map(deptService::selectDeptById);
+            loginUser.setDeptName(deptOpt.map(SysDeptVo::getDeptName).orElse(StringUtils.EMPTY));
+            loginUser.setDeptCategory(deptOpt.map(SysDeptVo::getDeptCategory).orElse(StringUtils.EMPTY));*//*
+        }
+        List<SysRoleVo> roles =TenantHelper.ignore(() -> { return roleService.selectRolesByUserId(userId); });
+        List<SysPostVo> posts =TenantHelper.ignore(() -> { return postService.selectPostsByUserId(userId); });
+        loginUser.setRoles(BeanUtil.copyToList(roles, RoleDTO.class));
+        loginUser.setPosts(BeanUtil.copyToList(posts, PostDTO.class));
+        return loginUser;
+    }*/
+
     /**
      * 记录登录信息
      *
@@ -248,4 +285,47 @@ public class SysLoginService {
         }
     }
 
+    /**
+     * 动态切换租户
+     *
+     * @param
+     */
+    public String getLoginVo(LoginBody loginBody) {
+        String clientId = loginBody.getClientId();
+        SysClientVo client = clientService.queryByClientId(clientId);
+        String tenantId = loginBody.getTenantId();
+        String username = LoginHelper.getUsername();
+        SysUserVo user = TenantHelper.ignore(() -> {
+            return loadUserByUsername(username);
+        });
+        LoginUser loginUser = TenantHelper.dynamic(tenantId, () -> {
+            user.setTenantId(tenantId);
+            // 此处可根据登录用户的数据不同 自行创建 loginUser
+            return buildLoginUser(user);
+        });
+        loginUser.setClientKey(client.getClientKey());
+        loginUser.setDeviceType(client.getDeviceType());
+        SaLoginModel model = new SaLoginModel();
+        model.setDevice(client.getDeviceType());
+        // 自定义分配 不同用户体系 不同 token 授权时间 不设置默认走全局 yml 配置
+        // 例如: 后台用户30分钟过期 app用户1天过期
+        model.setTimeout(client.getTimeout());
+        model.setActiveTimeout(client.getActiveTimeout());
+        model.setExtra(LoginHelper.CLIENT_KEY, client.getClientId());
+        // 生成token
+        LoginHelper.login(loginUser, model);
+        return StpUtil.getTokenValue();
+    }
+
+    private SysUserVo loadUserByUsername(String username) {
+        SysUserVo user =TenantHelper.ignore(() -> { return userMapper.selectVoOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getUserName, username)); });
+        if (ObjectUtil.isNull(user)) {
+            log.info("登录用户:{} 不存在.", username);
+            throw new UserException("user.not.exists", username);
+        } else if (SystemConstants.DISABLE.equals(user.getStatus())) {
+            log.info("登录用户:{} 已被停用.", username);
+            throw new UserException("user.blocked", username);
+        }
+        return user;
+    }
 }

+ 1 - 1
ruoyi-admin/src/main/resources/i18n/messages.properties

@@ -62,4 +62,4 @@ tenant.expired=\u5BF9\u4E0D\u8D77\uFF0C\u60A8\u7684\u79DF\u6237\u5DF2\u8FC7\u671
 ##\u77ED\u4FE1\u9A8C\u8BC1\u7801
 user.sms.error=\u77ED\u4FE1\u9A8C\u8BC1\u7801\u9519\u8BEF
 user.sms.expire=\u77ED\u4FE1\u9A8C\u8BC1\u7801\u5DF2\u5931\u6548
-staff.manage.error=\u5458\u5DE5\u4FE1\u606F\u4EE5\u5B58\u5728
+staff.manage.error=\u5458\u5DE5\u4FE1\u606F\u5DF2\u5B58\u5728

+ 7 - 5
ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/core/service/SaPermissionImpl.java

@@ -2,7 +2,6 @@ package org.dromara.common.satoken.core.service;
 
 import cn.dev33.satoken.stp.StpInterface;
 import org.dromara.common.core.domain.model.LoginUser;
-import org.dromara.common.core.enums.UserType;
 import org.dromara.common.satoken.utils.LoginHelper;
 
 import java.util.ArrayList;
@@ -20,14 +19,16 @@ public class SaPermissionImpl implements StpInterface {
      */
     @Override
     public List<String> getPermissionList(Object loginId, String loginType) {
-        LoginUser loginUser = LoginHelper.getLoginUser();
+   /*     LoginUser loginUser = LoginHelper.getLoginUser();
         UserType userType = UserType.getUserType(loginUser.getUserType());
         if (userType == UserType.SYS_USER) {
             return new ArrayList<>(loginUser.getMenuPermission());
         } else if (userType == UserType.APP_USER) {
             // 其他端 自行根据业务编写
         }
-        return new ArrayList<>();
+        return new ArrayList<>();*/
+        LoginUser loginUser = LoginHelper.getLoginUser();
+        return new ArrayList<>(loginUser.getMenuPermission());
     }
 
     /**
@@ -36,12 +37,13 @@ public class SaPermissionImpl implements StpInterface {
     @Override
     public List<String> getRoleList(Object loginId, String loginType) {
         LoginUser loginUser = LoginHelper.getLoginUser();
-        UserType userType = UserType.getUserType(loginUser.getUserType());
+        return new ArrayList<>(loginUser.getRolePermission());
+/*        UserType userType = UserType.getUserType(loginUser.getUserType());
         if (userType == UserType.SYS_USER) {
             return new ArrayList<>(loginUser.getRolePermission());
         } else if (userType == UserType.APP_USER) {
             // 其他端 自行根据业务编写
         }
-        return new ArrayList<>();
+        return new ArrayList<>();*/
     }
 }

+ 11 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysRoleController.java

@@ -10,6 +10,7 @@ import org.dromara.common.log.enums.BusinessType;
 import org.dromara.common.mybatis.core.page.PageQuery;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
 import org.dromara.common.web.core.BaseController;
+import org.dromara.system.domain.SysRole;
 import org.dromara.system.domain.SysUserRole;
 import org.dromara.system.domain.bo.SysDeptBo;
 import org.dromara.system.domain.bo.SysRoleBo;
@@ -49,6 +50,16 @@ public class SysRoleController extends BaseController {
         return roleService.selectPageRoleList(role, pageQuery);
     }
 
+    /**
+     * 获取角色信息列表
+     */
+    //@SaCheckPermission("system:role:listNoPage")
+    @GetMapping("/listNoPage")
+    public TableDataInfo<SysRoleVo> listNoPage(SysRole role) {
+        List<SysRoleVo> sysRoleVos = roleService.selectListNoPage(role);
+        return TableDataInfo.build(sysRoleVos);
+    }
+
     /**
      * 导出角色信息列表
      */

+ 1 - 1
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysTenantController.java

@@ -143,7 +143,7 @@ public class SysTenantController extends BaseController {
      *
      * @param tenantId 租户ID
      */
-    @SaCheckRole(TenantConstants.SUPER_ADMIN_ROLE_KEY)
+    //@SaCheckRole(TenantConstants.SUPER_ADMIN_ROLE_KEY)
     @GetMapping("/dynamic/{tenantId}")
     public R<Void> dynamicTenant(@NotBlank(message = "租户ID不能为空") @PathVariable String tenantId) {
         TenantHelper.setDynamic(tenantId, true);

+ 9 - 3
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysUserController.java

@@ -11,7 +11,6 @@ import lombok.RequiredArgsConstructor;
 import org.dromara.common.core.constant.SystemConstants;
 import org.dromara.common.core.domain.R;
 import org.dromara.common.core.domain.model.LoginUser;
-import org.dromara.common.core.enums.UserType;
 import org.dromara.common.core.utils.StreamUtils;
 import org.dromara.common.core.utils.StringUtils;
 import org.dromara.common.encrypt.annotation.ApiEncrypt;
@@ -110,11 +109,14 @@ public class SysUserController extends BaseController {
     public R<UserInfoVo> getInfo() {
         UserInfoVo userInfoVo = new UserInfoVo();
         LoginUser loginUser = LoginHelper.getLoginUser();
+        String tenantId = LoginHelper.getTenantId();
+
         if (TenantHelper.isEnable() && LoginHelper.isSuperAdmin()) {
             // 超级管理员 如果重新加载用户信息需清除动态租户
             TenantHelper.clearDynamic();
         }
         SysUserVo user = userService.selectUserById(loginUser.getUserId());
+        user.setTenantId(tenantId);
         if (ObjectUtil.isNull(user)) {
             return R.fail("没有权限访问用户数据!");
         }
@@ -126,7 +128,11 @@ public class SysUserController extends BaseController {
         boolean enable = TenantHelper.isEnable();
         if (enable) {
             //获取是否有未认证的员工信息
-            UserType userType = LoginHelper.getUserType();
+            if (user.getIsAuthentication().equals(N)) {
+                userInfoVo.setAuthenticationUser(Y);
+            }
+
+/*            UserType userType = LoginHelper.getUserType();
             if (UserType.APP_USER.equals(userType)) {
                 //住户信息认证
             } else if (UserType.APP_STAFF.equals(userType) || UserType.PC_USER.equals(userType)) {
@@ -134,7 +140,7 @@ public class SysUserController extends BaseController {
                 if (user.getIsAuthentication().equals(N)) {
                     userInfoVo.setAuthenticationUser(Y);
                 }
-            }
+            }*/
         }
         return R.ok(userInfoVo);
     }

+ 1 - 1
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysMenuMapper.java

@@ -32,7 +32,7 @@ public interface SysMenuMapper extends BaseMapperPlus<SysMenu, SysMenuVo> {
      * @param userId 用户ID
      * @return 权限列表
      */
-    List<String> selectMenuPermsByUserId(Long userId);
+    List<String> selectMenuPermsByUserId(Long userId,String tenantId);
 
     /**
      * 根据角色ID查询权限

+ 1 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysRoleMapper.java

@@ -71,5 +71,6 @@ public interface SysRoleMapper extends BaseMapperPlus<SysRole, SysRoleVo> {
      * @return 角色列表
      */
     List<SysRoleVo> selectRolesByUserId(Long userId);
+    List<SysRoleVo> selectRolesByUserIdAndTenantId(Long userId,String tenantId);
 
 }

+ 1 - 1
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysTenantMapper.java

@@ -16,5 +16,5 @@ public interface SysTenantMapper extends BaseMapperPlus<SysTenant, SysTenantVo>
 
 
     @InterceptorIgnore(tenantLine = "true", dataPermission = "false")
-    List<SysTenantVo> selectVoListByUserName(String userName);
+    List<SysTenantVo> selectVoListByUserName(Long userId);
 }

+ 1 - 1
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysMenuService.java

@@ -39,7 +39,7 @@ public interface ISysMenuService {
      * @param userId 用户ID
      * @return 权限列表
      */
-    Set<String> selectMenuPermsByUserId(Long userId);
+    Set<String> selectMenuPermsByUserId(Long userId,String tenantId);
 
     /**
      * 根据角色ID查询权限

+ 2 - 2
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysPermissionService.java

@@ -15,7 +15,7 @@ public interface ISysPermissionService {
      * @param userId  用户id
      * @return 角色权限信息
      */
-    Set<String> getRolePermission(Long userId);
+    Set<String> getRolePermission(Long userId,String tenantId);
 
     /**
      * 获取菜单数据权限
@@ -23,6 +23,6 @@ public interface ISysPermissionService {
      * @param userId  用户id
      * @return 菜单权限信息
      */
-    Set<String> getMenuPermission(Long userId);
+    Set<String> getMenuPermission(Long userId,String tenantId);
 
 }

+ 10 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysRoleService.java

@@ -2,6 +2,7 @@ package org.dromara.system.service;
 
 import org.dromara.common.mybatis.core.page.PageQuery;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.system.domain.SysRole;
 import org.dromara.system.domain.SysUserRole;
 import org.dromara.system.domain.bo.SysRoleBo;
 import org.dromara.system.domain.vo.SysRoleVo;
@@ -27,6 +28,14 @@ public interface ISysRoleService {
      */
     List<SysRoleVo> selectRoleList(SysRoleBo role);
 
+    /**
+     * 根据查询角色数据 带租户id
+     *
+     * @param role 角色信息
+     * @return 角色数据集合信息
+     */
+    List<SysRoleVo> selectListNoPage(SysRole role);
+
     /**
      * 根据用户ID查询角色列表
      *
@@ -50,6 +59,7 @@ public interface ISysRoleService {
      * @return 权限列表
      */
     Set<String> selectRolePermissionByUserId(Long userId);
+    Set<String> selectRolePermissionByUserIdAndTenantId(Long userId,String tenantId);
 
     /**
      * 查询所有角色

+ 3 - 3
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysTenantService.java

@@ -1,9 +1,9 @@
 package org.dromara.system.service;
 
-import org.dromara.system.domain.vo.SysTenantVo;
-import org.dromara.system.domain.bo.SysTenantBo;
-import org.dromara.common.mybatis.core.page.TableDataInfo;
 import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.system.domain.bo.SysTenantBo;
+import org.dromara.system.domain.vo.SysTenantVo;
 
 import java.util.Collection;
 import java.util.List;

+ 2 - 2
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysMenuServiceImpl.java

@@ -94,8 +94,8 @@ public class SysMenuServiceImpl implements ISysMenuService {
      * @return 权限列表
      */
     @Override
-    public Set<String> selectMenuPermsByUserId(Long userId) {
-        List<String> perms = baseMapper.selectMenuPermsByUserId(userId);
+    public Set<String> selectMenuPermsByUserId(Long userId,String tenantId) {
+        List<String> perms = baseMapper.selectMenuPermsByUserId(userId,tenantId);
         Set<String> permsSet = new HashSet<>();
         for (String perm : perms) {
             if (StringUtils.isNotEmpty(perm)) {

+ 6 - 6
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysPermissionServiceImpl.java

@@ -26,17 +26,17 @@ public class SysPermissionServiceImpl implements ISysPermissionService {
     /**
      * 获取角色数据权限
      *
-     * @param userId  用户id
+     * @param userId 用户id
      * @return 角色权限信息
      */
     @Override
-    public Set<String> getRolePermission(Long userId) {
+    public Set<String> getRolePermission(Long userId, String tenantId) {
         Set<String> roles = new HashSet<>();
         // 管理员拥有所有权限
         if (LoginHelper.isSuperAdmin(userId)) {
             roles.add(TenantConstants.SUPER_ADMIN_ROLE_KEY);
         } else {
-            roles.addAll(roleService.selectRolePermissionByUserId(userId));
+            roles.addAll(roleService.selectRolePermissionByUserIdAndTenantId(userId, tenantId));
         }
         return roles;
     }
@@ -44,17 +44,17 @@ public class SysPermissionServiceImpl implements ISysPermissionService {
     /**
      * 获取菜单数据权限
      *
-     * @param userId  用户id
+     * @param userId 用户id
      * @return 菜单权限信息
      */
     @Override
-    public Set<String> getMenuPermission(Long userId) {
+    public Set<String> getMenuPermission(Long userId, String tenantId) {
         Set<String> perms = new HashSet<>();
         // 管理员拥有所有权限
         if (LoginHelper.isSuperAdmin(userId)) {
             perms.add("*:*:*");
         } else {
-            perms.addAll(menuService.selectMenuPermsByUserId(userId));
+            perms.addAll(menuService.selectMenuPermsByUserId(userId, tenantId));
         }
         return perms;
     }

+ 26 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysRoleServiceImpl.java

@@ -24,6 +24,7 @@ import org.dromara.common.core.utils.StringUtils;
 import org.dromara.common.mybatis.core.page.PageQuery;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
 import org.dromara.common.satoken.utils.LoginHelper;
+import org.dromara.common.tenant.helper.TenantHelper;
 import org.dromara.system.domain.SysRole;
 import org.dromara.system.domain.SysRoleDept;
 import org.dromara.system.domain.SysRoleMenu;
@@ -72,6 +73,19 @@ public class SysRoleServiceImpl implements ISysRoleService, RoleService {
         return baseMapper.selectRoleList(this.buildQueryWrapper(role));
     }
 
+    /**
+     * 根据查询角色数据 带租户id
+     *
+     * @param role 角色信息
+     * @return 角色数据集合信息
+     */
+    @Override
+    public List<SysRoleVo> selectListNoPage(SysRole role) {
+        return TenantHelper.ignore(() -> {
+            return baseMapper.selectVoList(new LambdaQueryWrapper<SysRole>().eq(SysRole::getTenantId, role.getTenantId()));
+        });
+    }
+
     private Wrapper<SysRole> buildQueryWrapper(SysRoleBo bo) {
         Map<String, Object> params = bo.getParams();
         QueryWrapper<SysRole> wrapper = Wrappers.query();
@@ -135,6 +149,18 @@ public class SysRoleServiceImpl implements ISysRoleService, RoleService {
         return permsSet;
     }
 
+    @Override
+    public Set<String> selectRolePermissionByUserIdAndTenantId(Long userId,String tenantId) {
+        List<SysRoleVo> perms = baseMapper.selectRolesByUserIdAndTenantId(userId,tenantId);
+        Set<String> permsSet = new HashSet<>();
+        for (SysRoleVo perm : perms) {
+            if (ObjectUtil.isNotNull(perm)) {
+                permsSet.addAll(StringUtils.splitList(perm.getRoleKey().trim()));
+            }
+        }
+        return permsSet;
+    }
+
     /**
      * 查询所有角色
      *

+ 13 - 2
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysTenantServiceImpl.java

@@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
 import org.dromara.common.core.constant.CacheNames;
 import org.dromara.common.core.constant.Constants;
 import org.dromara.common.core.constant.SystemConstants;
@@ -43,6 +44,7 @@ import java.util.*;
  *
  * @author Michelle.Chung
  */
+@Slf4j
 @RequiredArgsConstructor
 @Service
 public class SysTenantServiceImpl implements ISysTenantService {
@@ -58,6 +60,7 @@ public class SysTenantServiceImpl implements ISysTenantService {
     private final SysDictTypeMapper dictTypeMapper;
     private final SysDictDataMapper dictDataMapper;
     private final SysConfigMapper configMapper;
+    private final SysUserTenantMapper sysUserTenantMapper;
 
     /**
      * 查询租户
@@ -171,8 +174,16 @@ public class SysTenantServiceImpl implements ISysTenantService {
         SysUserRole userRole = new SysUserRole();
         userRole.setUserId(user.getUserId());
         userRole.setRoleId(roleId);
+        userRole.setTenantId(tenantId);
         userRoleMapper.insert(userRole);
 
+
+        // 用户和角色关联表
+        SysUserTenant sysUserTenant = new SysUserTenant();
+        sysUserTenant.setUserId(user.getUserId());
+        sysUserTenant.setTenantId(tenantId);
+        sysUserTenantMapper.insert(sysUserTenant);
+
         String defaultTenantId = TenantConstants.DEFAULT_TENANT_ID;
         List<SysDictType> dictTypeList = dictTypeMapper.selectList(
             new LambdaQueryWrapper<SysDictType>().eq(SysDictType::getTenantId, defaultTenantId));
@@ -499,8 +510,8 @@ public class SysTenantServiceImpl implements ISysTenantService {
 
     @Override
     public List<SysTenantVo> usernameList() {
-        String userName = LoginHelper.getLoginUser().getUsername();
-        List<SysTenantVo> tenants = baseMapper.selectVoListByUserName(userName);
+        Long userId = LoginHelper.getLoginUser().getUserId();
+        List<SysTenantVo> tenants = baseMapper.selectVoListByUserName(userId);
         return tenants;
     }
 

+ 7 - 2
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java

@@ -151,7 +151,9 @@ public class SysUserServiceImpl implements ISysUserService, UserService {
 
     @Override
     public SysUserVo selectUserByUserNameNoTenant(String userName) {
-        return TenantHelper.ignore(() -> { return  baseMapper.selectVoOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getUserName, userName));});
+        return TenantHelper.ignore(() -> {
+            return baseMapper.selectVoOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getUserName, userName));
+        });
     }
 
     /**
@@ -173,7 +175,10 @@ public class SysUserServiceImpl implements ISysUserService, UserService {
      */
     @Override
     public SysUserVo selectUserById(Long userId) {
-        SysUserVo user = baseMapper.selectVoById(userId);
+        SysUserVo user = TenantHelper.ignore(() -> {
+            return
+                baseMapper.selectVoById(userId);
+        });
         if (ObjectUtil.isNull(user)) {
             return user;
         }

+ 2 - 2
ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml

@@ -52,12 +52,12 @@
         order by m.parent_id, m.order_num
     </select>
 
-    <select id="selectMenuPermsByUserId" parameterType="Long" resultType="String">
+    <select id="selectMenuPermsByUserId"  resultType="String">
         select distinct m.perms
         from sys_menu m
                  left join sys_role_menu rm on m.menu_id = rm.menu_id and m.status = '0'
                  left join sys_role r on r.role_id = rm.role_id and r.status = '0'
-        where r.role_id in (select role_id from sys_user_role where user_id = #{userId})
+        where r.role_id in (select role_id from sys_user_role where user_id = #{userId} and tenant_id =#{tenantId})
     </select>
 
     <select id="selectMenuPermsByRoleId" parameterType="Long" resultType="String">

+ 11 - 1
ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml

@@ -40,7 +40,7 @@
         WHERE r.del_flag = '0' and sur.user_id = #{userId}
     </select>
 
-    <select id="selectRolesByUserId" parameterType="Long" resultMap="SysRoleResult">
+    <select id="selectRolesByUserId"  resultMap="SysRoleResult">
         select r.role_id,
                r.role_name,
                r.role_key,
@@ -55,5 +55,15 @@
         <include refid="selectRoleVo"/>
         WHERE r.del_flag = '0' and r.role_id = #{roleId}
     </select>
+    <select id="selectRolesByUserIdAndTenantId" resultMap="SysRoleResult">
+        select r.role_id,
+               r.role_name,
+               r.role_key,
+               r.role_sort,
+               r.data_scope,
+               r.status
+        from sys_role r
+        WHERE r.del_flag = '0' and r.role_id in (select role_id from sys_user_role where user_id = #{userId} and tenant_id = #{tenantId})
+    </select>
 
 </mapper>

+ 2 - 2
ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysTenantMapper.xml

@@ -9,7 +9,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     <select id="selectVoListByUserName" resultMap="SysTenantResult">
         select t.id, t.tenant_id, t.contact_user_name, t.contact_phone, t.company_name, t.license_number, t.address, t.intro, t.domain, t.remark, t.package_id, t.expire_time, t.account_count, t.status, t.del_flag, t.create_dept, t.create_by, t.create_time, t.update_by, t.update_time
         from sys_tenant t
-                 left join sys_user s on t.tenant_id = s.tenant_id
-        where t.del_flag = '0' and s.user_name = #{userName}
+                 left join sys_user_tenant s on t.tenant_id = s.tenant_id
+        where t.del_flag = '0' and s.user_id = #{userId}
     </select>
 </mapper>

+ 14 - 1
ruoyi-modules/ruoyi-wuye/src/main/java/org/dromara/controller/staffManage/StaffManageController.java

@@ -72,13 +72,26 @@ public class StaffManageController extends BaseController {
      *
      * @param staffId 主键
      */
-    //@SaCheckPermission("wuYe:staffManage:query")
+    @SaCheckPermission("wuYe:staffManage:query")
     @GetMapping("/{staffId}")
     public R<StaffManageVo> getInfo(@NotNull(message = "主键不能为空")
                                      @PathVariable Long staffId) {
         return R.ok(staffManageService.queryById(staffId));
     }
 
+
+    /**
+     * 获取员工管理详细信息 过滤租户
+     *
+     * @param staffId 主键
+     */
+    //@SaCheckPermission("wuYe:staffManage:query")
+    @GetMapping("/authentication/{staffId}")
+    public R<StaffManageVo> getAuthenticationInfo(@NotNull(message = "主键不能为空")
+                                    @PathVariable Long staffId) {
+        return R.ok(staffManageService.getAuthenticationInfo(staffId));
+    }
+
     /**
      * 获取员工管理详细信息
      *

+ 0 - 68
ruoyi-modules/ruoyi-wuye/src/main/java/org/dromara/domain/communityNews/vo/CommentStarsBo.java

@@ -1,68 +0,0 @@
-package org.dromara.domain.communityNews.vo;
-
-import io.github.linpeilie.annotations.AutoMapper;
-import jakarta.validation.constraints.NotBlank;
-import jakarta.validation.constraints.NotNull;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import org.dromara.common.core.validate.AddGroup;
-import org.dromara.common.core.validate.EditGroup;
-import org.dromara.common.mybatis.core.domain.BaseEntity;
-import org.dromara.domain.communityNews.CommentStars;
-
-/**
- * 社区资讯收藏业务对象 comment_stars
- *
- * @author boman
- * @date 2025-04-11
- */
-@Data
-@EqualsAndHashCode(callSuper = true)
-@AutoMapper(target = CommentStars.class, reverseConvertGenerate = false)
-public class CommentStarsBo extends BaseEntity {
-
-    /**
-     * 社区资讯收藏ID
-     */
-    @NotNull(message = "社区资讯收藏ID不能为空", groups = { EditGroup.class })
-    private Long starsId;
-
-    /**
-     * 目标ID
-     */
-    @NotNull(message = "目标ID不能为空", groups = { AddGroup.class, EditGroup.class })
-    private Long targetId;
-
-    /**
-     * 目标类型(1:社区 2:党建 )
-     */
-    @NotBlank(message = "目标类型(1:社区 2:党建 )不能为空", groups = { AddGroup.class, EditGroup.class })
-    private String targetType;
-
-    /**
-     * 目标标题
-     */
-    private String targetTitle;
-
-    /**
-     * 用户id
-     */
-    private Long userId;
-
-    /**
-     * 用户昵称
-     */
-    private String nickName;
-
-    /**
-     * 头像地址
-     */
-    private String avatar;
-
-    /**
-     * 备注
-     */
-    private String remark;
-
-
-}

+ 4 - 0
ruoyi-modules/ruoyi-wuye/src/main/java/org/dromara/domain/staffManage/bo/StaffManageBo.java

@@ -101,4 +101,8 @@ public class StaffManageBo extends BaseEntity {
      * 审核状态 1:未审核 2:审核通过 3:审核未通过
      */
     private String examine;
+    /**
+     * 是否需要过滤租户
+     */
+    private Boolean isFilter;
 }

+ 6 - 0
ruoyi-modules/ruoyi-wuye/src/main/java/org/dromara/service/IStaffManageService.java

@@ -24,6 +24,12 @@ public interface IStaffManageService {
      * @return 员工管理
      */
     StaffManageVo queryById(Long staffId);
+    /**
+     * 获取员工管理详细信息 过滤租户
+     *
+     * @param staffId 主键
+     */
+    StaffManageVo getAuthenticationInfo(Long staffId);
 
     /**
      * 获取员工管理详细信息

+ 56 - 24
ruoyi-modules/ruoyi-wuye/src/main/java/org/dromara/service/impl/StaffManageServiceImpl.java

@@ -69,6 +69,20 @@ public class StaffManageServiceImpl implements IStaffManageService {
         return baseMapper.selectVoById(staffId);
     }
 
+    /**
+     * 获取员工管理详细信息 过滤租户
+     *
+     * @param staffId 主键
+     */
+    @Override
+    public StaffManageVo getAuthenticationInfo(Long staffId) {
+
+        return TenantHelper.ignore(() -> {
+            return
+                baseMapper.selectVoById(staffId);
+        });
+    }
+
     /**
      * 获取员工管理详细信息
      *
@@ -154,7 +168,7 @@ public class StaffManageServiceImpl implements IStaffManageService {
         } else if (flag) {
             validEntityBeforeSave(add);
             flag = baseMapper.insert(add) > 0;
-
+/*
             SysUserBo sysUser = new SysUserBo();
             sysUser.setUserId(bo.getUserId());
             //把租户id更新到sys_user表/sys_user_tenant表中
@@ -162,7 +176,7 @@ public class StaffManageServiceImpl implements IStaffManageService {
             userService.updateUserByIdNoTenantId(sysUser);
             if (flag) {
                 bo.setStaffId(add.getStaffId());
-            }
+            }*/
         }
 /*        //往redis中插入需要认证的记录数据,给getUserInfo接口判断是否需要认证使用
         String key = STAFF_MANAGE_AUTHENTICATION + bo.getUserId();
@@ -206,28 +220,28 @@ public class StaffManageServiceImpl implements IStaffManageService {
             user.setUserType(userType);
             user.setPhonenumber(username);
             user.setIsAuthentication(Y);
-            boolean exist = TenantHelper.dynamic(tenantId, () -> {
-                return userMapper.exists(new LambdaQueryWrapper<SysUser>()
-                    .eq(SysUser::getUserName, user.getUserName()));
+            boolean exist = TenantHelper.ignore(() -> {
+                return
+                    userMapper.exists(new LambdaQueryWrapper<SysUser>()
+                        .eq(SysUser::getUserName, user.getUserName()));
             });
-            if (exist) {
-                throw new UserException("user.register.save.error", username);
-            }
-            user.setCreateBy(0L);
-            user.setUpdateBy(0L);
             SysUser sysUser = MapstructUtils.convert(user, SysUser.class);
             sysUser.setTenantId(tenantId);
-            boolean regFlag = userMapper.insert(sysUser) > 0;
-            if (!regFlag) {
-                throw new UserException("user.register.error");
+            if (!exist) {
+                //sysUser新增
+                user.setCreateBy(0L);
+                user.setUpdateBy(0L);
+                userMapper.insert(sysUser);
             }
             staffManage.setExamine(TWO);
             Long userId = sysUser.getUserId();
             staffManage.setUserId(userId);
+            user.setUserId(userId);
+            user.setTenantId(tenantId);
             flag = baseMapper.insert(staffManage) > 0;
-            if (flag) {
+/*            if (flag) {
                 bo.setStaffId(staffManage.getStaffId());
-            }
+            }*/
             //sys_user_tenant表中
             SysUserTenant sysUserTenant = new SysUserTenant();
             sysUserTenant.setUserId(userId);
@@ -257,8 +271,14 @@ public class StaffManageServiceImpl implements IStaffManageService {
     @Override
     public Boolean updateByBo(StaffManageBo bo) {
         StaffManage update = MapstructUtils.convert(bo, StaffManage.class);
-        validEntityBeforeSave(update);
-        return baseMapper.updateById(update) > 0;
+        if (bo.getIsFilter()) {
+            return TenantHelper.ignore(() -> {
+                return baseMapper.updateById(update) > 0;
+            });
+        } else {
+            validEntityBeforeSave(update);
+            return baseMapper.updateById(update) > 0;
+        }
     }
 
     /**
@@ -395,13 +415,13 @@ public class StaffManageServiceImpl implements IStaffManageService {
         boolean flag = baseMapper.deleteById(staffId) > 0;
         // userMapper.deleteById(userId);
         if (TenantHelper.isEnable()) {
-            Long count = TenantHelper.ignore(() -> {
-                return baseMapper.selectCount(new LambdaQueryWrapper<StaffManage>().eq(StaffManage::getUserId, userId));
+            List<StaffManage> staffManageList = TenantHelper.ignore(() -> {
+                return baseMapper.selectList(new LambdaQueryWrapper<StaffManage>().eq(StaffManage::getUserId, userId));
             });
-            //查询该用户是否一个认证信息都没有则需要把用户租户重置为000000,认证状态改为未认证
+            //查询该用户是否一个认证信息 通过的 都没有则需要把用户租户重置为000000,认证状态改为未认证
             SysUser sysUser = new SysUser();
             sysUser.setUserId(userId);
-            if (count == 0) {
+            if (staffManageList == null ) {
                 sysUser.setTenantId(TENANT_ID);
                 sysUser.setIsAuthentication(N);
                 TenantHelper.ignore(() -> {
@@ -416,13 +436,25 @@ public class StaffManageServiceImpl implements IStaffManageService {
             TenantHelper.ignore(() -> {
                 sysUserTenantMapper.delete(new LambdaQueryWrapper<SysUserTenant>().eq(SysUserTenant::getUserId, userId).eq(SysUserTenant::getTenantId, tenantId));
             });
-            if (count > 0) {
+            if (staffManageList != null && staffManageList.size() > 0) {
                 //判断用户的默认租户是否是被删除的那个租户,是的情况下换一个租户id给sysUser表中
-                SysUserVo sysUserVo = userMapper.selectVoById(userId);
+                SysUserVo sysUserVo =  TenantHelper.ignore(() -> { return
+                    userMapper.selectVoById(userId);
+                });
                 String tenantIdOld = sysUserVo.getTenantId();
                 if (tenantId.equals(tenantIdOld)) {
                     SysUserTenant sysUserTenant = sysUserTenantMapper.selectVoOne(new LambdaQueryWrapper<SysUserTenant>().eq(SysUserTenant::getUserId, userId));
-                    sysUser.setTenantId(sysUserTenant.getTenantId());
+                    sysUser.setTenantId(TENANT_ID);
+                    if (sysUserTenant != null) {
+                        sysUser.setTenantId(sysUserTenant.getTenantId());
+                    }
+
+                }
+
+                long count = staffManageList.stream().filter(e -> e.getExamine().equals(TWO)).count();
+                if (count == 0) {
+                    sysUser.setTenantId(TENANT_ID);
+                    sysUser.setIsAuthentication(N);
                     TenantHelper.ignore(() -> {
                         userMapper.updateById(sysUser);
                     });