From 74472c9d22dddcb41383794caf0011043b20f817 Mon Sep 17 00:00:00 2001
From: kimi <kimi42345@gmail.com>
Date: 星期二, 31 三月 2020 13:25:47 +0800
Subject: [PATCH] fix  数据权限

---
 src/main/java/com/highdatas/mdm/controller/SysMenuController.java |  116 ++++++++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 85 insertions(+), 31 deletions(-)

diff --git a/src/main/java/com/highdatas/mdm/controller/SysMenuController.java b/src/main/java/com/highdatas/mdm/controller/SysMenuController.java
index d11a05f..f941fd2 100644
--- a/src/main/java/com/highdatas/mdm/controller/SysMenuController.java
+++ b/src/main/java/com/highdatas/mdm/controller/SysMenuController.java
@@ -3,15 +3,12 @@
 
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.baomidou.mybatisplus.plugins.Page;
-import com.highdatas.mdm.entity.DeletedTableLog;
-import com.highdatas.mdm.entity.MenuMapping;
-import com.highdatas.mdm.entity.SysMenu;
+import com.highdatas.mdm.entity.*;
+import com.highdatas.mdm.pojo.ActivitiBusinessType;
+import com.highdatas.mdm.pojo.ActivitiStatus;
 import com.highdatas.mdm.pojo.CodeMsg;
-import com.highdatas.mdm.pojo.MaintainDataType;
 import com.highdatas.mdm.pojo.Result;
-import com.highdatas.mdm.service.IDeletedTableLogService;
-import com.highdatas.mdm.service.IMenuMappingService;
-import com.highdatas.mdm.service.ISysMenuService;
+import com.highdatas.mdm.service.*;
 import com.highdatas.mdm.util.Constant;
 import com.highdatas.mdm.util.DbUtils;
 import org.apache.commons.lang3.StringUtils;
@@ -19,7 +16,9 @@
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpSession;
 import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -37,28 +36,88 @@
 
     @Autowired
     IMenuMappingService menuMappingService;
-
+    @Autowired
+    ISysFieldService fieldService;
     @Autowired
     IDeletedTableLogService deletedTableLogService;
-
+    @Autowired
+    IFlowsService flowsService;
+    @Autowired
+    IMaintainService maintainService;
+    @Autowired
+    IMaintainFieldService maintainFieldService;
+    @Autowired
+    IMasterAuthorService masterAuthorService;
 
     @RequestMapping(value = "/all", method = RequestMethod.GET)
     public Result<List<SysMenu>> getAll() {
         EntityWrapper<SysMenu> sysMenuEntityWrapper = new EntityWrapper<>();
-        sysMenuEntityWrapper.orderBy(" parent_id, order_no");
+        sysMenuEntityWrapper.orderBy("parent_id, order_no");
         return Result.success(menuService.selectList(sysMenuEntityWrapper)) ;
     }
+
+    @RequestMapping(value = "/author/all", method = RequestMethod.GET)
+    public Result<List<SysMenu>> getAllBak(HttpServletRequest request) {
+        TUser user = DbUtils.getUser(request);
+        List<SysMenu> menu = masterAuthorService.getMenu(user.getUserId());
+        return Result.success(menu) ;
+    }
+
+    @RequestMapping(value = "/audit", method = RequestMethod.GET)
+    public Result<List<SysMenu>> audit(HttpServletRequest request) {
+        HttpSession session = request.getSession();
+        TUser user = (TUser) session.getAttribute("user");
+        String userId = user.getUserId();
+        List<Flows> flows = flowsService.selectList(new EntityWrapper<Flows>().ne("business_type", ActivitiBusinessType.exists).ne("status", ActivitiStatus.open).ne("status", ActivitiStatus.close));
+        flows = flows.stream().filter(flow ->  flowsService.isNextAudit(flow, userId)).collect(Collectors.toList());
+
+        HashSet<String> tableNameSet = new HashSet<>();
+        List<String> maintainIds = flows.stream().map(Flows::getBusinessId).collect(Collectors.toList());
+        if (maintainIds.size() == 0) {
+            return  Result.success(null);
+        }
+        maintainIds = maintainIds.stream().filter(s -> masterAuthorService.checkMaintainAuthor(userId,s)).collect(Collectors.toList());
+        if (maintainIds.isEmpty()) {
+            return Result.success(null);
+        }
+        List<Maintain> maintains = maintainService.selectBatchIds(maintainIds);
+
+        List<String> tableNameList = maintains.stream().map(Maintain::getTableName).collect(Collectors.toList());
+        tableNameSet.addAll(tableNameList);
+        //
+        List<MaintainField> maintainFields = maintainFieldService.selectBatchIds(maintainIds);
+        tableNameSet.addAll(maintainFields.stream().map(MaintainField::getTableName).collect(Collectors.toList()));
+        if (tableNameSet.size() == 0) {
+            return Result.success(null);
+        }
+        List<MenuMapping> menuMappingList = menuMappingService.selectList(new EntityWrapper<MenuMapping>().in("table_name", tableNameSet));
+        List<String> menuIds = menuMappingList.stream().map(MenuMapping::getMenuId).collect(Collectors.toList());
+        LinkedHashSet<String> parentIdSet = new LinkedHashSet<>(menuIds);
+        Set<String> byParentId = menuService.getByParentId(parentIdSet);
+        List<SysMenu> parentList = menuService.selectBatchIds(byParentId);
+
+        return Result.success(parentList);
+    }
+
 
     @RequestMapping(value = "/list", method = RequestMethod.GET)
     public Result<List<SysMenu>> getMenuList() {
         EntityWrapper<SysMenu> sysMenuEntityWrapper = new EntityWrapper<>();
-        sysMenuEntityWrapper.eq("data_type","currentData");
-        sysMenuEntityWrapper.orderBy(" parent_id, order_no");
+        sysMenuEntityWrapper.eq("menu_type", "DataMenu");
+        sysMenuEntityWrapper.orderBy("parent_id, order_no");
         List<SysMenu> sysMenus = menuService.selectList(sysMenuEntityWrapper);
         LinkedHashSet<String> parentIdSet = new LinkedHashSet<>();
         for (SysMenu sysMenu : sysMenus) {
-            String parentId = sysMenu.getParentId();
-            parentIdSet.add(parentId);
+            MenuMapping menuMapping = menuMappingService.selectOne(new EntityWrapper<MenuMapping>().eq("menu_id", sysMenu.getId()));
+            if (menuMapping == null) {
+                continue;
+            }
+            String tableName = menuMapping.getTableName();
+            List<SysField> fieldByTable = fieldService.getFieldByTable(tableName);
+            if (fieldByTable == null || fieldByTable.size() == 0) {
+                continue;
+            }
+            parentIdSet.add(sysMenu.getId());
         }
         Set<String> byParentId = menuService.getByParentId(parentIdSet);
         List<SysMenu> parentList = menuService.selectBatchIds(byParentId);
@@ -71,7 +130,7 @@
     @RequestMapping(value = "/allTheme", method = RequestMethod.GET)
     public Result<List<SysMenu>> getAllTheme() {
         EntityWrapper<SysMenu> sysMenuEntityWrapper = new EntityWrapper<>();
-        sysMenuEntityWrapper.eq("menu_type",Constant.StructureMenu).orderBy("parent_id desc ");
+        sysMenuEntityWrapper.eq("menu_type",Constant.StructureMenu).orderBy("parent_id desc");
         return Result.success(menuService.selectList(sysMenuEntityWrapper)) ;
     }
 
@@ -126,11 +185,10 @@
         menu.setId(uuid);
         menu.setParentId(parentId);
         menu.setOrderNo(orderno);
-        menu.setDataType(MaintainDataType.parse(dataType));
         menu.setMenuType(menuType);
         boolean inserted = menuService.insert(menu);
         if (inserted) {
-            return  Result.success("鎻掑叆鎴愬姛", null);
+            return  Result.success(menu);
         } else {
             return Result.error(CodeMsg.INSERT_ERROR);
         }
@@ -174,19 +232,16 @@
             menu.insert();
         }
 
-        if (menu.getMenuType().equalsIgnoreCase(Constant.DataMenu)) {
-            Result<List<SysMenu>> listResult = menuByParentId(id);
-            List<SysMenu> data = listResult.getData();
-            long count = data.stream().filter(sysMenu -> sysMenu.getDataType().equals(MaintainDataType.unkonwn)).count();
-            if (count != data.size()) {
-                return Result.error(CodeMsg.SELECT_ERROR);
-            }
-        }
-        new SysMenu().setParentId(id).setId(DbUtils.getUUID()).setName(Constant.UnMatched).setOrderNo(1).setCreateTime(new Date()).setDataType(MaintainDataType.afterData).insert();
-        new SysMenu().setParentId(id).setId(DbUtils.getUUID()).setName(Constant.Current).setOrderNo(2).setCreateTime(new Date()).setDataType(MaintainDataType.currentData).insert();
-        new SysMenu().setParentId(id).setId(DbUtils.getUUID()).setName(Constant.History).setOrderNo(3).setCreateTime(new Date()).setDataType(MaintainDataType.beforeData).insert();
+//        if (menu.getMenuType().equalsIgnoreCase(Constant.DataMenu)) {
+//            Result<List<SysMenu>> listResult = menuByParentId(id);
+//            List<SysMenu> data = listResult.getData();
+//            long count = data.stream().filter(sysMenu -> sysMenu.getDataType().equals(MaintainDataType.unkonwn)).count();
+//            if (count != data.size()) {
+//                return Result.error(CodeMsg.SELECT_ERROR);
+//            }
+//        }
 
-        return Result.success(CodeMsg.SUCCESS);
+        return Result.success(menu);
     }
 
     @RequestMapping(value = "/update", method = RequestMethod.GET)
@@ -243,7 +298,7 @@
         for (SysMenu sysMenu : sysMenus) {
             List<MenuMapping> menuMappingList = menuMappingService.selectList(new EntityWrapper<MenuMapping>().eq("menu_id", sysMenu.getId()));
             for (MenuMapping menuMapping : menuMappingList) {
-                // 娣诲姞寰呭垹闄よ〃鐨勬棩蹇�
+                //todo 娣诲姞寰呭垹闄よ〃鐨勬棩蹇�
                 DeletedTableLog deletedTableLog = new DeletedTableLog();
                 deletedTableLog.setId(DbUtils.getUUID()).setTableName(menuMapping.getTableName()).setCreateTime(new Date());
                 deletedTableLog.insert();
@@ -283,6 +338,5 @@
         List<SysMenu> sysMenus = menuService.selectList(menuEntityWrapper);
         return Result.success(sysMenus);
     }
-
 
 }

--
Gitblit v1.8.0