瀏覽代碼

获取权限点和角色编码

wanggaokun 1 月之前
父節點
當前提交
605ae06b6d

+ 5 - 0
eco-common/com-core/src/main/java/org/eco/vip/orm/constant/Constants.java

@@ -29,4 +29,9 @@ public class Constants {
      */
     public final static boolean UNIQUE = true;
     public final static boolean NOT_UNIQUE = false;
+
+    /**
+     * 超级管理员角色 roleKey
+     */
+    public final static String SUPER_ADMIN_ROLE_KEY = "superAminRole";
 }

+ 2 - 4
eco-common/com-core/src/main/java/org/eco/vip/orm/enums/UserType.java

@@ -6,6 +6,7 @@
 package org.eco.vip.orm.enums;
 
 
+import lombok.Getter;
 import org.eco.vip.orm.utils.StrUtils;
 
 /**
@@ -14,6 +15,7 @@ import org.eco.vip.orm.utils.StrUtils;
  * @author GaoKunW
  * @date 2025/7/2 16:42
  */
+@Getter
 public enum UserType {
 
     /**
@@ -32,10 +34,6 @@ public enum UserType {
         this.userType = userType;
     }
 
-    public String getUserType() {
-        return userType;
-    }
-
     public static UserType getUserType(String str) {
         for (UserType value : values()) {
             if (StrUtils.contains(str, value.getUserType())) {

+ 2 - 2
eco-common/com-core/src/main/java/org/eco/vip/orm/pojo/LoginUser.java

@@ -91,12 +91,12 @@ public class LoginUser implements Serializable {
     /**
      * 菜单权限
      */
-    private Set<String> menuPermission;
+    private Set<String> PermissionCodes;
 
     /**
      * 角色权限
      */
-    private Set<String> rolePermission;
+    private Set<String> roleCodes;
 
     /**
      * 用户名

+ 2 - 2
eco-common/com-security/src/main/java/org/eco/vip/security/core/service/SaPermissionImpl.java

@@ -29,7 +29,7 @@ public class SaPermissionImpl implements StpInterface {
             userType = UserType.getUserType(loginUser.getUserType());
         }
         if (userType == UserType.PC_USER) {
-            return new ArrayList<>(loginUser.getMenuPermission());
+            return new ArrayList<>(loginUser.getPermissionCodes());
         }  // 其他
         return new ArrayList<>();
     }
@@ -42,7 +42,7 @@ public class SaPermissionImpl implements StpInterface {
             userType = UserType.getUserType(loginUser.getUserType());
         }
         if (userType == UserType.PC_USER) {
-            return new ArrayList<>(loginUser.getRolePermission());
+            return new ArrayList<>(loginUser.getRoleCodes());
         }  // 其他
         return new ArrayList<>();
     }

+ 1 - 0
eco-common/com-web/src/main/java/org/eco/vip/web/core/handler/GlobalExceptionHandler.java

@@ -121,6 +121,7 @@ public class GlobalExceptionHandler {
      */
     @ExceptionHandler(Exception.class)
     public CommonResult<Void> defaultExceptionHandler(HttpServletRequest request, Throwable throwable) {
+        log.warn("[defaultExceptionHandler]", throwable);
         String requestUri = request.getRequestURI();
         String message = ExceptionUtil.getRootCauseMessage(throwable);
         log.error("请求地址'{}',发生系统异常.{}", requestUri, message);

+ 1 - 1
eco-nexus-core/auth-biz/src/main/java/org/eco/vip/auth/domain/user/pojo/UserVO.java

@@ -51,7 +51,7 @@ public class UserVO extends BaseEntity {
     private String nickName;
 
     /**
-     * 用户登录设备类型(sys_user系统用户、app_user App用户)
+     * 用户登录设备类型(pc_user系统用户、app_user App用户)
      */
     private String userType;
 

+ 2 - 5
eco-nexus-core/auth-biz/src/main/java/org/eco/vip/auth/service/auth/LoginService.java

@@ -38,11 +38,8 @@ public class LoginService {
         loginUser.setNickname(user.getNickName());
         loginUser.setUserType(user.getUserType());
         loginUser.setAccount(user.getAccount());
-//        loginUser.setMenuPermission(permissionService.getMenuPermission(user.getUserId()));
-//        loginUser.setRolePermission(permissionService.getRolePermission(user.getUserId()));
-//        loginUser.setOrgName(ObjectUtil.isNull(user.getDept()) ? "" : user.getDept().getDeptName());
-//        List<RoleDTO> roles = BeanUtil.copyToList(user.getRoles(), RoleDTO.class);
-//        loginUser.setRoles(roles);
+        loginUser.setPermissionCodes(permissionService.getPermissionCodes(user.getUserId()));
+        loginUser.setRoleCodes(permissionService.getRoleCodes(user.getUserId()));
         return loginUser;
     }
 }

+ 8 - 10
eco-nexus-core/auth-biz/src/main/java/org/eco/vip/auth/service/auth/PasswordAuthStrategy.java

@@ -35,26 +35,24 @@ import org.springframework.stereotype.Service;
 @RequiredArgsConstructor
 public class PasswordAuthStrategy implements IAuthStrategy {
 
+    @Resource
+    private LoginService loginService;
+
     @Resource
     IUserService userService;
+
     @Override
     public AuthVO login(AuthQuery authQuery, ClientVO clientVO) {
         String tenantId = authQuery.getTenantId();
         String account = authQuery.getAccount();
         String password = authQuery.getPassword();
         // 不做验证码校验
-        String code = authQuery.getCode();
+        // String code = authQuery.getCode();
 
         UserVO userVO = buildUserVO(tenantId, account);
-
-        // 构建登录信息
-        LoginUser loginUser = LoginUser.builder()
-                .userId(userVO.getUserId())
-                .userType(userVO.getUserType())
-                .deviceType(clientVO.getDeviceType())
-                .clientKey(clientVO.getClientKey())
-                .orgId(userVO.getOrgId())
-                .build();
+        LoginUser loginUser = loginService.buildLoginUser(userVO);
+        loginUser.setClientKey(clientVO.getClientKey());
+        loginUser.setDeviceType(clientVO.getDeviceType());
 
         SaLoginParameter loginParameter = createLoginModel(clientVO);
         LoginHelper.login(loginUser, loginParameter);

+ 8 - 11
eco-nexus-core/auth-biz/src/main/java/org/eco/vip/auth/service/permission/PermissionService.java

@@ -10,7 +10,8 @@ import jakarta.annotation.Resource;
 import org.eco.vip.auth.domain.permission.Permission;
 import org.eco.vip.auth.domain.permission.pojo.PermissionVO;
 import org.eco.vip.auth.mapper.PermissionMapper;
-import org.eco.vip.auth.service.menu.IMenuService;
+import org.eco.vip.auth.service.role.IRoleService;
+import org.eco.vip.orm.constant.Constants;
 import org.eco.vip.orm.service.BaseService;
 import org.eco.vip.orm.utils.BeanUtils;
 import org.eco.vip.security.core.domain.SecurityPermissionBO;
@@ -33,7 +34,7 @@ import java.util.Set;
 public class PermissionService extends BaseService<PermissionMapper, Permission> implements IPermissionService, ISecurityPermissionService {
 
     @Resource
-    private IMenuService menuService;
+    private IRoleService roleService;
 
     @Resource
     private PermissionMapper permissionMapper;
@@ -50,21 +51,20 @@ public class PermissionService extends BaseService<PermissionMapper, Permission>
         if (LoginHelper.isSuperAdmin(userId)) {
             perms.add("*:*:*");
         } else {
-            perms.addAll(null);
+            perms.addAll(roleService.selectPermissionCodesByUserId(userId));
         }
         return perms;
     }
 
     @Override
     public Set<String> getRoleCodes(String userId) {
-        Set<String> perms = new HashSet<>();
+        Set<String> roles = new HashSet<>();
         if (LoginHelper.isSuperAdmin(userId)) {
-            perms.add("*:*:*");
+            roles.add(Constants.SUPER_ADMIN_ROLE_KEY);
         } else {
-            perms.addAll(null);
+            roles.addAll(roleService.selectRoleCodesByUserId(userId));
         }
-
-        return perms;
+        return roles;
     }
 
     @Override
@@ -81,9 +81,6 @@ public class PermissionService extends BaseService<PermissionMapper, Permission>
      **/
     @Override
     public boolean addPermissionBatch(List<SecurityPermissionBO> permissionBOList) {
-        // 全量删除
-//        QueryWrapper queryWrapper = new QueryWrapper().where("1=1");
-//        this.remove(queryWrapper);
         List<Permission> permissionList = BeanUtils.convertList(permissionBOList, Permission.class);
         return this.saveBatch(permissionList, 100);
     }

+ 10 - 2
eco-nexus-core/auth-biz/src/main/java/org/eco/vip/auth/service/role/IRoleService.java

@@ -14,7 +14,6 @@ import org.eco.vip.orm.pojo.PageResult;
 import org.eco.vip.orm.service.IBaseService;
 
 import java.util.List;
-import java.util.Set;
 
 /**
  * @description IRoleService
@@ -44,6 +43,7 @@ public interface IRoleService extends IBaseService<Role> {
      * @return boolean 是否成功
      **/
     boolean insert(RoleBO roleBO);
+
     /**
      * @description: 新增
      * @param rolePerm 参数
@@ -79,5 +79,13 @@ public interface IRoleService extends IBaseService<Role> {
      * @param userId 用户ID
      * @return 权限列表
      */
-    Set<String> selectRolePermissionByUserId(String userId);
+    List<String> selectPermissionCodesByUserId(String userId);
+
+    /**
+     * 根据用户ID查询角色权限
+     *
+     * @param userId 用户ID
+     * @return 权限列表
+     */
+    List<String> selectRoleCodesByUserId(String userId);
 }

+ 31 - 3
eco-nexus-core/auth-biz/src/main/java/org/eco/vip/auth/service/role/RoleService.java

@@ -6,6 +6,8 @@
 package org.eco.vip.auth.service.role;
 
 
+import com.mybatisflex.core.query.QueryMethods;
+import com.mybatisflex.core.query.QueryWrapper;
 import jakarta.annotation.Resource;
 import lombok.extern.slf4j.Slf4j;
 import org.eco.vip.auth.domain.role.Role;
@@ -20,7 +22,13 @@ import org.eco.vip.orm.utils.MapstructUtils;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
-import java.util.Set;
+
+import static org.eco.vip.auth.domain.org.table.OrgTableDef.ORG;
+import static org.eco.vip.auth.domain.permission.table.PermissionTableDef.PERMISSION;
+import static org.eco.vip.auth.domain.role.table.RolePermTableDef.ROLE_PERM;
+import static org.eco.vip.auth.domain.role.table.RoleTableDef.ROLE;
+import static org.eco.vip.auth.domain.user.table.UserRoleTableDef.USER_ROLE;
+import static org.eco.vip.auth.domain.user.table.UserTableDef.USER;
 
 /**
  * @description RoleService
@@ -71,7 +79,27 @@ public class RoleService extends BaseService<RoleMapper, Role> implements IRoleS
     }
 
     @Override
-    public Set<String> selectRolePermissionByUserId(String userId) {
-        return Set.of();
+    public List<String> selectPermissionCodesByUserId(String userId) {
+        QueryWrapper queryWrapper = QueryWrapper.create()
+                .select(QueryMethods.distinct(PERMISSION.CODE))
+                .from(USER.as("ut"))
+                .leftJoin(USER_ROLE.as("urt")).on(USER.USER_ID.eq(USER_ROLE.USER_ID))
+                .leftJoin(ROLE.as("rt")).on(USER_ROLE.ROLE_ID.eq(ROLE.ROLE_ID))
+                .leftJoin(ROLE_PERM.as("rpt")).on(USER_ROLE.ROLE_ID.eq(ROLE_PERM.ROLE_ID))
+                .leftJoin(PERMISSION.as("pt")).on(ROLE_PERM.PERM_ID.eq(PERMISSION.ID))
+                .where(USER.USER_ID.eq(userId));
+        return this.listAs(queryWrapper, String.class);
+    }
+
+    @Override
+    public List<String> selectRoleCodesByUserId(String userId) {
+        QueryWrapper queryWrapper = QueryWrapper.create()
+                .select(QueryMethods.distinct(ROLE.CODE))
+                .from(ROLE.as("rt"))
+                .leftJoin(USER_ROLE.as("urt")).on(USER_ROLE.ROLE_ID.eq(ROLE.ROLE_ID))
+                .leftJoin(USER.as("ut")).on(USER.USER_ID.eq(USER_ROLE.USER_ID))
+                .leftJoin(ORG.as("ot")).on(ORG.ORG_ID.eq(USER.ORG_ID))
+                .where(USER.USER_ID.eq(userId));
+        return this.listAs(queryWrapper, String.class);
     }
 }