Browse Source

添加前端更友好的登录resource接口

tanzhongran 3 years ago
parent
commit
d678f69c01

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

@@ -1,10 +1,7 @@
 package com.abi.qms.platform.controller.console;
 
 import com.abi.qms.platform.dto.req.*;
-import com.abi.qms.platform.dto.res.GetRoleInfoRes;
-import com.abi.qms.platform.dto.res.ListResourceRes;
-import com.abi.qms.platform.dto.res.ListResourceTreeByRoleCodeRes;
-import com.abi.qms.platform.dto.res.ListRoleRes;
+import com.abi.qms.platform.dto.res.*;
 import com.abi.qms.platform.service.RoleManagerService;
 import com.abi.task.common.api.base.BaseResponse;
 import io.swagger.annotations.Api;
@@ -48,6 +45,15 @@ public class RoleManagerController {
         return BaseResponse.create(result);
     }
 
+    @ApiOperation("获取登录用户需要的页面以及按钮权限")
+    @GetMapping("listLoginUserResource")
+    public BaseResponse<ListLoginUserResourceRes> listLoginUserResource() throws Exception{
+        //获取登录用户需要的页面以及按钮权限
+        ListLoginUserResourceRes  result = roleManagerService.listLoginUserResource();
+        //包装出参
+        return BaseResponse.create(result);
+    }
+
     @ApiOperation("创建角色")
     @PostMapping("createRole")
     public BaseResponse createRole(@Validated @RequestBody CreateRoleReq createRoleReq) throws Exception{

+ 9 - 1
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dao/mapper/UserResourceMapper.java

@@ -18,8 +18,16 @@ public interface UserResourceMapper extends BaseMapper<UserResource> {
     /**
      * 查询角色下整个resource树
      * @param roleCode
+     * @param resourceType
      * @return
      */
-    List<UserResource> listResourceTreeByRoleCode(@Param("roleCode")String roleCode);
+    List<UserResource> listResourceTreeByRoleCode(@Param("roleCode")String roleCode,@Param("resourceType")Integer resourceType);
+
+    /**
+     * 角色拥有的菜单
+     * @param roleCode
+     * @return
+     */
+    List<UserResource> listLoginMenu(@Param("roleCode")String roleCode);
 
 }

+ 21 - 0
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/req/ListLoginUserResourceReq.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 ListLoginUserResourceReq implements Serializable {
+
+  @ApiModelProperty("xxxID")
+  private String xxxId;
+
+
+
+}

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

@@ -16,6 +16,4 @@ public class ListResourceTreeByRoleCodeReq implements Serializable {
   @ApiModelProperty("是否需要转成树形结构 1-需要")
   private Integer isTree;
 
-
-
 }

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

@@ -0,0 +1,73 @@
+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 ListLoginUserResourceRes implements Serializable {
+
+  @ApiModelProperty("菜单列表")
+  private List<MenuBean> menuBeanList;
+
+  @ApiModelProperty("按钮列表")
+  private List<BtnBean> btnBeanList;
+
+    /**
+     * 菜单bean
+     */
+    @Data
+    @NoArgsConstructor
+    @AllArgsConstructor
+    @ToString
+    @ApiModel(value = "ListLoginUserResourceRes_XxxBean")
+    public static class MenuBean implements Serializable {
+
+      @ApiModelProperty(value = "资源code")
+      private String resourceCode;
+
+      @ApiModelProperty(value = "资源名称")
+      private String resourceName;
+
+      @ApiModelProperty(value = "资源内容")
+      private String content;
+
+      @ApiModelProperty("子资源列表 当返回要求是树形结构时,才会返回")
+      private List<MenuBean> resourceBeanList;
+
+    }
+
+  /**
+   * 按钮bean
+   */
+  @Data
+  @NoArgsConstructor
+  @AllArgsConstructor
+  @ToString
+  @ApiModel(value = "ListLoginUserResourceRes_XxxBean")
+  public static class BtnBean implements Serializable {
+
+    @ApiModelProperty(value = "资源code")
+    private String resourceCode;
+
+    @ApiModelProperty(value = "资源名称")
+    private String resourceName;
+
+    @ApiModelProperty(value = "资源内容")
+    private String content;
+
+  }
+
+
+}

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

@@ -4,10 +4,7 @@ package com.abi.qms.platform.service;
 import com.abi.qms.platform.dao.entity.UserResource;
 import com.abi.qms.platform.dao.entity.UserRole;
 import com.abi.qms.platform.dto.req.*;
-import com.abi.qms.platform.dto.res.GetRoleInfoRes;
-import com.abi.qms.platform.dto.res.ListResourceRes;
-import com.abi.qms.platform.dto.res.ListResourceTreeByRoleCodeRes;
-import com.abi.qms.platform.dto.res.ListRoleRes;
+import com.abi.qms.platform.dto.res.*;
 
 import java.util.List;
 
@@ -74,6 +71,13 @@ public interface RoleManagerService {
      */
     ListResourceTreeByRoleCodeRes listResourceTreeByRoleCode(ListResourceTreeByRoleCodeReq listResourceTreeByRoleCodeReq) throws Exception;
 
+    /**
+     * 获取登录用户需要的页面以及按钮权限
+     * @return
+     * @throws Exception
+     */
+    ListLoginUserResourceRes listLoginUserResource() throws Exception;
+
     /**
      * 启用角色
      * @param enableRoleReq

+ 47 - 5
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/service/impl/RoleManagerServiceImpl.java

@@ -10,10 +10,7 @@ import com.abi.qms.platform.dao.mapper.UserResourceMapper;
 import com.abi.qms.platform.dao.mapper.UserRoleMapper;
 import com.abi.qms.platform.dao.vo.result.ListRoleVO;
 import com.abi.qms.platform.dto.req.*;
-import com.abi.qms.platform.dto.res.GetRoleInfoRes;
-import com.abi.qms.platform.dto.res.ListResourceRes;
-import com.abi.qms.platform.dto.res.ListResourceTreeByRoleCodeRes;
-import com.abi.qms.platform.dto.res.ListRoleRes;
+import com.abi.qms.platform.dto.res.*;
 import com.abi.qms.platform.infrastructure.util.AssertUtil;
 import com.abi.qms.platform.infrastructure.util.PageUtil;
 import com.abi.qms.platform.infrastructure.util.UserUtil;
@@ -235,9 +232,10 @@ public class RoleManagerServiceImpl implements RoleManagerService {
         UserInfo user = UserUtil.getUser();
         //获取当前用户的角色
         UserRole role = getRoleByCode(user.getRoleCode());
+        //UserRole role = getRoleByCode("20000000051");
 
         //1-查询角色树
-        List<UserResource> userResourceList = userResourceMapper.listResourceTreeByRoleCode(role.getRoleCode());
+        List<UserResource> userResourceList = userResourceMapper.listResourceTreeByRoleCode(role.getRoleCode(),null);
 
         //构造出参
         ListResourceTreeByRoleCodeRes res = new ListResourceTreeByRoleCodeRes();
@@ -273,6 +271,50 @@ public class RoleManagerServiceImpl implements RoleManagerService {
         return res;
     }
 
+    /**
+     * 获取登录用户需要的页面以及按钮权限
+     **/
+    @Override
+    public ListLoginUserResourceRes listLoginUserResource() {
+//        //获取当前登录的用户
+//        UserInfo user = UserUtil.getUser();
+//        //获取当前用户的角色
+//        UserRole role = getRoleByCode(user.getRoleCode());
+        UserRole role = getRoleByCode("20000000051");
+
+        //1-查询菜单
+        List<UserResource> userResourceList = userResourceMapper.listLoginMenu(role.getRoleCode());
+        //菜单转树形
+        List<ListLoginUserResourceRes.MenuBean> menuBeanList = new ArrayList<>();
+        //放一个map,用于快捷查找到list  key为父resourceCode
+        Map<String,List<ListLoginUserResourceRes.MenuBean>> resourceListMap = new HashMap<>();
+        //如果父类code为null,那么父list就是顶层list
+        resourceListMap.put(null,menuBeanList);
+        //开始循环放入,因为查询语句排过序,所以查到的顺序,一定是先父后子
+        for(UserResource resource:userResourceList){
+            //先获取父类列表
+            List<ListLoginUserResourceRes.MenuBean> parentList = resourceListMap.get(resource.getParentResourceCode());
+            //然后放入自己
+            ListLoginUserResourceRes.MenuBean menuBean = PojoConverterUtils.copy(resource, ListLoginUserResourceRes.MenuBean.class);
+            parentList.add(menuBean);
+            //如果resourceCode是3位,则需要创建子list
+            if(menuBean.getResourceCode().length()==3){
+                menuBean.setResourceBeanList(new ArrayList<>());
+                resourceListMap.put(menuBean.getResourceCode(),menuBean.getResourceBeanList());
+            }
+        }
+
+        //2-查询按钮
+        List<UserResource> btnResourceList = userResourceMapper.listResourceTreeByRoleCode(role.getRoleCode(),2);
+
+        //构造出参
+        ListLoginUserResourceRes res = new ListLoginUserResourceRes();
+        res.setMenuBeanList(menuBeanList);
+        res.setBtnBeanList(PojoConverterUtils.copyList(btnResourceList,ListLoginUserResourceRes.BtnBean.class));
+
+        return res;
+    }
+
     /**
      * 启用角色
      **/

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

@@ -40,8 +40,33 @@
             from user_mapping_role_resource
             where role_code=#{roleCode} and is_delete=0
         )
+        <!-- 仅查询按钮 -->
+        <if test="resourceType==2">
+            and resource_type = #{resourceType}
+        </if>
+
         order by resource_code
 
     </select>
 
+    <select id="listLoginMenu" resultType="com.abi.qms.platform.dao.entity.UserResource">
+        select *
+        from user_resource
+        where resource_code in (
+            SELECT left(m.resource_code,6)
+            FROM user_mapping_role_resource m
+                inner join user_resource r on m.resource_code=r.resource_code
+            WHERE m.role_code = #{roleCode} AND m.is_delete = 0 and r.resource_type='3'
+
+            union all
+
+            SELECT left(m.resource_code,3)
+            FROM user_mapping_role_resource m
+                inner join user_resource r on m.resource_code=r.resource_code
+            WHERE m.role_code = #{roleCode} AND m.is_delete = 0 and r.resource_type='3'
+        )
+
+        order by resource_code
+    </select>
+
 </mapper>

+ 1 - 1
version.txt

@@ -1 +1 @@
-feature1.0.02104212008
+feature1.0.02104212158