Quellcode durchsuchen

整理数据权限

wangliang vor 3 Jahren
Ursprung
Commit
c7323f8539

+ 7 - 11
distributed-print/src/main/java/com/qmth/distributed/print/api/SysPrivilegeController.java

@@ -3,6 +3,7 @@ package com.qmth.distributed.print.api;
 import com.qmth.boot.api.annotation.Aac;
 import com.qmth.boot.api.annotation.BOOL;
 import com.qmth.boot.api.constant.ApiConstant;
+import com.qmth.distributed.print.business.bean.result.EditResult;
 import com.qmth.teachcloud.common.bean.dto.PrivilegeDto;
 import com.qmth.teachcloud.common.entity.SysPrivilege;
 import com.qmth.teachcloud.common.service.SysPrivilegeService;
@@ -40,8 +41,7 @@ public class SysPrivilegeController {
     @ApiOperation(value = "查询")
     @RequestMapping(value = "/list", method = RequestMethod.POST)
     public Result list() {
-        List<PrivilegeDto> privilegeDtoList = sysPrivilegeService.listPrivilegeTree();
-        return ResultUtil.ok(privilegeDtoList);
+        return ResultUtil.ok(sysPrivilegeService.listPrivilegeTreeNew());
     }
 
     /**
@@ -52,8 +52,7 @@ public class SysPrivilegeController {
     @ApiOperation(value = "查询需要授权的菜单")
     @RequestMapping(value = "/list_auth", method = RequestMethod.POST)
     public Result listAuth() {
-        List<PrivilegeDto> privilegeDtoList = sysPrivilegeService.listPrivilegeTreeAuth();
-        return ResultUtil.ok(privilegeDtoList);
+        return ResultUtil.ok(sysPrivilegeService.listPrivilegeTreeAuth());
     }
 
     /**
@@ -64,9 +63,8 @@ public class SysPrivilegeController {
      */
     @ApiOperation(value = "新增/修改")
     @RequestMapping(value = "/save", method = RequestMethod.POST)
-    public Result save( @RequestBody SysPrivilege privilege) {
-        String id = sysPrivilegeService.savePrivilege(privilege);
-        return ResultUtil.ok(id,"");
+    public Result save(@RequestBody SysPrivilege privilege) {
+        return ResultUtil.ok(new EditResult(sysPrivilegeService.savePrivilege(privilege)));
     }
 
     /**
@@ -78,8 +76,7 @@ public class SysPrivilegeController {
     @ApiOperation(value = "删除")
     @RequestMapping(value = "/remove", method = RequestMethod.POST)
     public Result remove(@RequestBody SysPrivilege privilege) {
-        boolean isSuccess = sysPrivilegeService.remove(privilege.getId());
-        return ResultUtil.ok(isSuccess);
+        return ResultUtil.ok(sysPrivilegeService.remove(privilege.getId()));
     }
 
     /**
@@ -91,8 +88,7 @@ public class SysPrivilegeController {
     @ApiOperation(value = "角色已绑定权限列表")
     @RequestMapping(value = "/get_role_privileges", method = RequestMethod.POST)
     public Result getRolePrivileges(@RequestParam(value = "roleId", required = true) Long roleId) {
-        List<String> list = sysPrivilegeService.getRolePrivileges(roleId);
-        return ResultUtil.ok(list);
+        return ResultUtil.ok(sysPrivilegeService.getRolePrivileges(roleId));
     }
 }
 

+ 6 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/result/MenuResult.java

@@ -1,5 +1,6 @@
 package com.qmth.teachcloud.common.bean.result;
 
+import com.fasterxml.jackson.annotation.JsonInclude;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import com.qmth.teachcloud.common.bean.dto.MenuDto;
@@ -17,6 +18,7 @@ import java.util.Set;
  * @Author: wangliang
  * @Date: 2021/7/28
  */
+@JsonInclude(JsonInclude.Include.NON_NULL)
 public class MenuResult implements Serializable {
 
     @JsonSerialize(using = ToStringSerializer.class)
@@ -35,6 +37,10 @@ public class MenuResult implements Serializable {
         this.privileges = privileges;
     }
 
+    public MenuResult(List<MenuPrivilegeDto> privileges) {
+        this.privileges = privileges;
+    }
+
     public Long getUserId() {
         return userId;
     }

+ 10 - 1
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/SysPrivilegeService.java

@@ -2,6 +2,7 @@ package com.qmth.teachcloud.common.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.qmth.teachcloud.common.bean.dto.PrivilegeDto;
+import com.qmth.teachcloud.common.bean.result.MenuResult;
 import com.qmth.teachcloud.common.entity.SysPrivilege;
 
 import java.util.List;
@@ -16,9 +17,17 @@ import java.util.List;
  */
 public interface SysPrivilegeService extends IService<SysPrivilege> {
 
+    @Deprecated
     List<PrivilegeDto> listPrivilegeTree();
 
-    String savePrivilege(SysPrivilege privilege);
+    /**
+     * 获取所有权限
+     *
+     * @return
+     */
+    MenuResult listPrivilegeTreeNew();
+
+    Long savePrivilege(SysPrivilege privilege);
 
     boolean remove(Long id);
 

+ 68 - 3
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/SysPrivilegeServiceImpl.java

@@ -2,7 +2,12 @@ package com.qmth.teachcloud.common.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.google.common.reflect.TypeToken;
+import com.google.gson.Gson;
+import com.qmth.teachcloud.common.bean.dto.MenuDto;
+import com.qmth.teachcloud.common.bean.dto.MenuPrivilegeDto;
 import com.qmth.teachcloud.common.bean.dto.PrivilegeDto;
+import com.qmth.teachcloud.common.bean.result.MenuResult;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.SysPrivilege;
 import com.qmth.teachcloud.common.entity.SysRolePrivilege;
@@ -13,9 +18,11 @@ import com.qmth.teachcloud.common.enums.PrivilegePropertyEnum;
 import com.qmth.teachcloud.common.mapper.SysPrivilegeMapper;
 import com.qmth.teachcloud.common.service.SysPrivilegeService;
 import com.qmth.teachcloud.common.service.SysRolePrivilegeService;
+import com.qmth.teachcloud.common.util.JacksonUtil;
 import com.qmth.teachcloud.common.util.ServletUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.util.LinkedMultiValueMap;
 
 import java.util.*;
 import java.util.stream.Collectors;
@@ -35,6 +42,7 @@ public class SysPrivilegeServiceImpl extends ServiceImpl<SysPrivilegeMapper, Sys
     private SysRolePrivilegeService sysRolePrivilegeService;
 
     @Override
+    @Deprecated
     public List<PrivilegeDto> listPrivilegeTree() {
         QueryWrapper<SysPrivilege> queryWrapper = new QueryWrapper<>();
         queryWrapper.lambda().orderByAsc(SysPrivilege::getParentId, SysPrivilege::getSequence)
@@ -64,12 +72,69 @@ public class SysPrivilegeServiceImpl extends ServiceImpl<SysPrivilegeMapper, Sys
         for (Long key : deleteKeys) {
             map.remove(key);
         }
-
         return new ArrayList<>(map.values());
     }
 
+    /**
+     * 获取所有权限
+     *
+     * @return
+     */
+    @Override
+    public MenuResult listPrivilegeTreeNew() {
+        Long schoolId = SystemConstant.getHeadOrUserSchoolId();
+        QueryWrapper<SysPrivilege> sysPrivilegeQueryWrapper = new QueryWrapper<>();
+        sysPrivilegeQueryWrapper.lambda().eq(SysPrivilege::getSchoolId, schoolId)
+                .ne(SysPrivilege::getType, PrivilegeEnum.URL);
+        List<SysPrivilege> sysPrivilegeList = this.list(sysPrivilegeQueryWrapper);
+        Gson gson = new Gson();
+        List<MenuDto> menuDtoList = gson.fromJson(JacksonUtil.parseJson(sysPrivilegeList), new TypeToken<List<MenuDto>>() {
+        }.getType());
+        LinkedMultiValueMap<Long, MenuDto> linkedMultiValueMap = new LinkedMultiValueMap<>();
+        List<MenuPrivilegeDto> menuPrivilegeDtoList = new ArrayList<>();
+        for (MenuDto m : menuDtoList) {
+            if (Objects.isNull(m.getParentId()) || m.getType() == PrivilegeEnum.MENU) {
+                menuPrivilegeDtoList.add(gson.fromJson(gson.toJson(m), MenuPrivilegeDto.class));
+            } else {
+                if (!linkedMultiValueMap.containsKey(m.getParentId())) {
+                    linkedMultiValueMap.add(m.getParentId(), m);
+                } else {
+                    List<MenuDto> menuDtos = linkedMultiValueMap.get(m.getParentId());
+                    menuDtos.add(m);
+                    linkedMultiValueMap.put(m.getParentId(), menuDtos);
+                }
+            }
+        }
+        for (MenuPrivilegeDto m : menuPrivilegeDtoList) {
+            List<MenuDto> menuDtos = linkedMultiValueMap.get(m.getId());
+            List<MenuDto> urls = null, buttons = null, links = null, lists = null, conditions = null;
+            if (Objects.nonNull(menuDtos)) {
+                for (MenuDto menuDto : menuDtos) {
+                    if (menuDto.getType() == PrivilegeEnum.BUTTON) {
+                        buttons = Objects.isNull(buttons) ? new ArrayList<>() : buttons;
+                        buttons.add(gson.fromJson(gson.toJson(menuDto), MenuPrivilegeDto.class));
+                        m.setButtons(buttons);
+                    } else if (menuDto.getType() == PrivilegeEnum.LINK) {
+                        links = Objects.isNull(links) ? new ArrayList<>() : links;
+                        links.add(gson.fromJson(gson.toJson(menuDto), MenuPrivilegeDto.class));
+                        m.setLinks(links);
+                    } else if (menuDto.getType() == PrivilegeEnum.LIST) {
+                        lists = Objects.isNull(lists) ? new ArrayList<>() : lists;
+                        lists.add(gson.fromJson(gson.toJson(menuDto), MenuPrivilegeDto.class));
+                        m.setLists(lists);
+                    } else if (menuDto.getType() == PrivilegeEnum.CONDITION) {
+                        conditions = Objects.isNull(conditions) ? new ArrayList<>() : conditions;
+                        conditions.add(gson.fromJson(gson.toJson(menuDto), MenuPrivilegeDto.class));
+                        m.setConditions(conditions);
+                    }
+                }
+            }
+        }
+        return new MenuResult(menuPrivilegeDtoList);
+    }
+
     @Override
-    public String savePrivilege(SysPrivilege privilege) {
+    public Long savePrivilege(SysPrivilege privilege) {
         QueryWrapper<SysPrivilege> queryWrapper = new QueryWrapper<>();
         queryWrapper.lambda().eq(SysPrivilege::getParentId, privilege.getParentId()).eq(SysPrivilege::getName, privilege.getName());
         SysPrivilege sysPrivilege = this.getOne(queryWrapper);
@@ -90,7 +155,7 @@ public class SysPrivilegeServiceImpl extends ServiceImpl<SysPrivilegeMapper, Sys
             }
             this.updateById(privilege);
         }
-        return String.valueOf(privilege.getId());
+        return privilege.getId();
     }
 
     @Override

+ 1 - 1
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/TeachcloudCommonServiceImpl.java

@@ -755,7 +755,7 @@ public class TeachcloudCommonServiceImpl implements TeachcloudCommonService {
         redisUtil.setUserSession(sessionId, tbSession, expireTime.getExpireSeconds());
 
 //        LoginResult loginResult = new LoginResult(sysUser, sessionId, test, Objects.nonNull(roleTypes) && roleTypes.size() > 0 ? roleTypes : roleNames, appSource);
-        LoginResult loginResult = new LoginResult(sysUser, sessionId, token, roleTypes, appSource);
+        LoginResult loginResult = new LoginResult(sysUser, sessionId, token, Objects.nonNull(roleTypes) && roleTypes.size() > 0 ? roleTypes : roleNames, appSource);
         loginResult.setSchoolInfo(Objects.nonNull(authBean.getSchool()) ? loginResult.new SchoolNativeBean(authBean.getSchool()) : null);
         loginResult.setOrgInfo(Objects.nonNull(authBean.getOrg()) ? loginResult.new OrgNativeBean(authBean.getOrg()) : null);
         loginResult.setTime(System.currentTimeMillis());