Forráskód Böngészése

解决过滤器问题

tanzhongran 3 éve
szülő
commit
726cf1eab7

+ 10 - 0
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/controller/console/UserManagerController.java

@@ -2,6 +2,7 @@ package com.abi.qms.platform.controller.console;
 
 import com.abi.qms.platform.dto.req.*;
 import com.abi.qms.platform.dto.res.GetUserInfoRes;
+import com.abi.qms.platform.dto.res.ListRoleTreeRes;
 import com.abi.qms.platform.dto.res.ListUserRes;
 import com.abi.qms.platform.service.UserManagerService;
 import com.abi.task.common.api.base.BaseResponse;
@@ -42,6 +43,15 @@ public class UserManagerController {
         return userManagerService.updateUser(updateUserReq);
     }
 
+    @ApiOperation("查询角色树")
+    @GetMapping("listRoleTree")
+    public BaseResponse<ListRoleTreeRes> listRoleTree() throws Exception{
+        //查询角色树
+        ListRoleTreeRes  result = userManagerService.listRoleTree();
+        //包装出参
+        return BaseResponse.create(result);
+    }
+
     @ApiOperation("查询单个用户信息")
     @GetMapping("getUserInfo/{userId}")
     public BaseResponse<GetUserInfoRes> getUserInfo(@PathVariable("userId") Long userId) throws Exception {

+ 7 - 0
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dao/mapper/UserRoleMapper.java

@@ -28,6 +28,13 @@ public interface UserRoleMapper extends BaseMapper<UserRole> {
                                                @Param("roleCode") String roleCode,
                                                @Param("roleLevel")Integer roleLevel);
 
+    /**
+     * 查询角色树
+     * @param role
+     * @return
+     */
+    List<UserRole> listRoleTree(@Param("role") UserRole role);
+
     /**
      * 查询某个角色关联的用户
      * @param roleCode

+ 21 - 0
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/req/ListRoleTreeReq.java

@@ -0,0 +1,21 @@
+package com.abi.qms.platform.dto.req;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.io.Serializable;
+
+/**
+ * @author:Andy.Tan
+ * @Description: 查询角色树入参
+ */
+@Data
+@ApiModel
+public class ListRoleTreeReq implements Serializable {
+
+  @ApiModelProperty("xxxID")
+  private String xxxId;
+
+
+
+}

+ 42 - 0
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/res/ListRoleTreeRes.java

@@ -0,0 +1,42 @@
+package com.abi.qms.platform.dto.res;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.ToString;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @author:Andy.Tan
+ * @Description: 查询角色树出参
+ */
+@Data
+@ApiModel
+public class ListRoleTreeRes implements Serializable {
+
+  @ApiModelProperty("角色列表")
+  private List<RoleBean> roleBeanList;
+
+    /**
+     * 角色
+     */
+    @Data
+    @NoArgsConstructor
+    @AllArgsConstructor
+    @ToString
+    @ApiModel(value = "ListRoleTreeRes_RoleBean")
+    public static class RoleBean implements Serializable {
+
+      @ApiModelProperty(value = "角色code")
+      private String roleCode;
+
+      @ApiModelProperty(value = "角色name")
+      private String roleName;
+
+    }
+
+}

+ 14 - 1
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/infrastructure/config/WebMvcConfig.java

@@ -1,7 +1,8 @@
-package com.abi.qms.config;
+package com.abi.qms.platform.infrastructure.config;
 
 
 import com.abi.qms.platform.infrastructure.interceptor.CorsInterceptor;
+import com.abi.qms.platform.infrastructure.interceptor.TokenInterceptor;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.web.servlet.config.annotation.CorsRegistry;
@@ -18,6 +19,9 @@ public class WebMvcConfig extends WebMvcConfigurationSupport {
     @Autowired
     private CorsInterceptor corsInterceptor;
 
+    @Autowired
+    private TokenInterceptor tokenInterceptor;
+
     @Override
     protected void addResourceHandlers(ResourceHandlerRegistry registry) {
         registry.addResourceHandler("/swagger-ui/**")
@@ -27,12 +31,21 @@ public class WebMvcConfig extends WebMvcConfigurationSupport {
 
     @Override
     protected void addInterceptors(InterceptorRegistry registry) {
+        //跨域拦截器
         registry.addInterceptor(corsInterceptor)
                 .addPathPatterns("/**")
                 .excludePathPatterns("/swagger**/**")
                 .excludePathPatterns("/webjars/**")
                 .excludePathPatterns("/v3/**")
                 .excludePathPatterns("/doc.html");
+        //token拦截器
+        registry.addInterceptor(tokenInterceptor)
+                .addPathPatterns("/**")
+                .excludePathPatterns("/swagger**/**")
+                .excludePathPatterns("/webjars/**")
+                .excludePathPatterns("/v3/**")
+                .excludePathPatterns("/doc.html");
+
         super.addInterceptors(registry);
     }
     @Override

+ 4 - 0
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/service/UserManagerService.java

@@ -3,6 +3,7 @@ package com.abi.qms.platform.service;
 
 import com.abi.qms.platform.dto.req.*;
 import com.abi.qms.platform.dto.res.GetUserInfoRes;
+import com.abi.qms.platform.dto.res.ListRoleTreeRes;
 import com.abi.qms.platform.dto.res.ListUserRes;
 import com.abi.task.common.api.base.BaseResponse;
 
@@ -31,6 +32,9 @@ public interface UserManagerService {
      */
     BaseResponse updateUser(UpdateUserReq updateUserReq) throws Exception;
 
+
+    ListRoleTreeRes listRoleTree() throws Exception;
+
     /**
      * 根据id查询单个用户信息
      * @return

+ 7 - 0
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/service/UserResourceService.java

@@ -31,6 +31,13 @@ public interface UserResourceService {
      */
     void saveUserResourceMapping(String roleCode,List<String> resourceCodeList);
 
+    /**
+     * 删除某个角色下的指定资源列表
+     * @param roleCode
+     * @param needDeleteResourceList
+     */
+    void deleteResourceMapping(String roleCode,List<String> needDeleteResourceList);
+
     /**
      * 查询角色名下所有资源
      * @param roleCode

+ 27 - 0
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/service/impl/UserManagerServiceImpl.java

@@ -10,9 +10,11 @@ import com.abi.qms.platform.dao.mapper.UserMappingInfoRoleMapper;
 import com.abi.qms.platform.dao.mapper.UserRoleMapper;
 import com.abi.qms.platform.dto.req.*;
 import com.abi.qms.platform.dto.res.GetUserInfoRes;
+import com.abi.qms.platform.dto.res.ListRoleTreeRes;
 import com.abi.qms.platform.dto.res.ListUserRes;
 import com.abi.qms.platform.infrastructure.util.PageUtil;
 import com.abi.qms.platform.infrastructure.util.UserUtil;
+import com.abi.qms.platform.service.RoleManagerService;
 import com.abi.qms.platform.service.UserManagerService;
 import com.abi.task.common.api.base.BaseResponse;
 import com.abi.task.common.utils.PojoConverterUtils;
@@ -48,6 +50,9 @@ public class UserManagerServiceImpl extends ServiceImpl<UserInfoMapper, UserInfo
     @Autowired
     private UserMappingInfoRoleMapper userMappingInfoRoleMapper;
 
+    @Autowired
+    private RoleManagerService roleManagerService;
+
     /**
      * 创建用户
      **/
@@ -130,6 +135,28 @@ public class UserManagerServiceImpl extends ServiceImpl<UserInfoMapper, UserInfo
         return BaseResponse.create();
     }
 
+    /**
+     * 查询角色树
+     **/
+    @Override
+    public ListRoleTreeRes listRoleTree() {
+        //获取当前登录的用户
+        UserInfo user = UserUtil.getUser();
+        //获取当前用户的角色
+        UserRole role = roleManagerService.getRoleByCode(user.getRoleCode());
+
+        //1-查询当前角色以及其下的所有角色
+        List<UserRole> userRoleList = userRoleMapper.listRoleTree(role);
+
+        //构造出参
+        List<ListRoleTreeRes.RoleBean> roleBeanList = PojoConverterUtils.copyList(userRoleList, ListRoleTreeRes.RoleBean.class);
+        ListRoleTreeRes res = new ListRoleTreeRes();
+        res.setRoleBeanList(roleBeanList);
+
+        return res;
+    }
+
+
     /**
      * 查询单个用户信息
      **/

+ 35 - 11
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/service/impl/UserResourceServiceImpl.java

@@ -2,8 +2,11 @@ package com.abi.qms.platform.service.impl;
 
 import com.abi.qms.platform.dao.entity.UserMappingRoleResource;
 import com.abi.qms.platform.dao.entity.UserResource;
+import com.abi.qms.platform.dao.entity.UserRole;
 import com.abi.qms.platform.dao.mapper.UserMappingRoleResourceMapper;
 import com.abi.qms.platform.dao.mapper.UserResourceMapper;
+import com.abi.qms.platform.dao.mapper.UserRoleMapper;
+import com.abi.qms.platform.service.RoleManagerService;
 import com.abi.qms.platform.service.UserResourceService;
 import com.abi.task.common.utils.ICollectionUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -30,6 +33,15 @@ public class UserResourceServiceImpl extends ServiceImpl<UserMappingRoleResource
     @Autowired
     private UserMappingRoleResourceMapper userMappingRoleResourceMapper;
 
+    @Autowired
+    private UserRoleMapper userRoleMapper;
+
+    @Autowired
+    private UserResourceService userResourceService;
+
+    @Autowired
+    private RoleManagerService roleManagerService;
+
     /**
      * 通过resourceCode列表查询resource对象列表
      * @param codeList
@@ -67,24 +79,24 @@ public class UserResourceServiceImpl extends ServiceImpl<UserMappingRoleResource
      */
     @Override
     public void saveUserResourceMapping(String roleCode, List<String> resourceCodeList) {
+        //查询角色
+        UserRole role = roleManagerService.getRoleByCode(roleCode);
 
         //1-查询用户现有资源列表
-        List<String> curResoutceCodeList = listResourceByRoleCode(roleCode);
+        List<String> curResourceCodeList = listResourceByRoleCode(roleCode);
 
         //2-比较用户现有资源与入参传入的目标资源,整理出-->需删除资源 and 需增加资源
-        List<String> needDeleteResourceList = ICollectionUtil.differenceList(curResoutceCodeList, resourceCodeList);
-        List<String> needAddResourceList = ICollectionUtil.differenceList(resourceCodeList, curResoutceCodeList);
+        List<String> needDeleteResourceList = ICollectionUtil.differenceList(curResourceCodeList, resourceCodeList);
+        List<String> needAddResourceList = ICollectionUtil.differenceList(resourceCodeList, curResourceCodeList);
 
         //3-批量删除需删除资源
         if(CollectionUtils.isNotEmpty(needDeleteResourceList)){
-            UpdateWrapper<UserMappingRoleResource> userMappingRoleResourceUw = new UpdateWrapper<>();
-            userMappingRoleResourceUw
-                    //where
-                    .eq("role_code",roleCode)
-                    .in("resource_code",needDeleteResourceList)
-                    //set
-                    .set("is_delete",1);
-            userMappingRoleResourceMapper.update(null,userMappingRoleResourceUw);
+            //查询该角色以及其下的角色
+            List<UserRole> userRoleList = userRoleMapper.listRoleTree(role);
+            //循环删除子角色的这些resource
+            for(UserRole tempRole:userRoleList){
+                userResourceService.deleteResourceMapping(tempRole.getRoleCode(),needDeleteResourceList);
+            }
         }
 
         //4-批量添加需增加资源
@@ -105,6 +117,18 @@ public class UserResourceServiceImpl extends ServiceImpl<UserMappingRoleResource
         }
     }
 
+    @Override
+    public void deleteResourceMapping(String roleCode, List<String> needDeleteResourceList) {
+        UpdateWrapper<UserMappingRoleResource> userMappingRoleResourceUw = new UpdateWrapper<>();
+        userMappingRoleResourceUw
+                //where
+                .eq("role_code",roleCode)
+                .in("resource_code",needDeleteResourceList)
+                //set
+                .set("is_delete",1);
+        userMappingRoleResourceMapper.update(null,userMappingRoleResourceUw);
+    }
+
     /**
      * 查询角色名下所有资源
      * @param roleCode

+ 22 - 0
abi-cloud-qr-platform-server/src/main/resources/dao/mapper/UserRoleMapper.xml

@@ -59,6 +59,28 @@
         </where>
     </select>
 
+    <select id="listRoleTree" resultType="com.abi.qms.platform.dao.entity.UserRole">
+        select r.*
+        from user_role r
+        <where>
+            <!-- 仅可以查看当前角色树下的角色 -->
+            <if test="roleLevel==1">
+                and r.l1_role_code=#{roleCode}
+            </if>
+            <if test="roleLevel==2">
+                and r.l2_role_code=#{roleCode}
+            </if>
+            <if test="roleLevel==3">
+                and r.l3_role_code=#{roleCode}
+            </if>
+            <if test="roleLevel==4">
+                and r.l4_role_code=#{roleCode}
+            </if>
+            <if test="roleLevel==5">
+                and r.l5_role_code=#{roleCode}
+            </if>
+        </where>
+    </select>
 
     <select id="countList" resultType="long">
         select IFNULL(count(distinct user_id),0) as user_count

+ 1 - 1
version.txt

@@ -1 +1 @@
-feature1.0.02104212158
+feature1.0.02104221124