From c007f0ca1785db093d48f4846cda82fe8e955765 Mon Sep 17 00:00:00 2001
From: kimi <kimi42345@gmail.com>
Date: 星期三, 27 五月 2020 09:59:29 +0800
Subject: [PATCH] merage

---
 src/main/java/com/highdatas/mdm/controller/MasterAuthorController.java |  505 ++++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 470 insertions(+), 35 deletions(-)

diff --git a/src/main/java/com/highdatas/mdm/controller/MasterAuthorController.java b/src/main/java/com/highdatas/mdm/controller/MasterAuthorController.java
index 836c308..88a9c61 100644
--- a/src/main/java/com/highdatas/mdm/controller/MasterAuthorController.java
+++ b/src/main/java/com/highdatas/mdm/controller/MasterAuthorController.java
@@ -5,12 +5,14 @@
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.baomidou.mybatisplus.mapper.Wrapper;
 import com.highdatas.mdm.entity.*;
+import com.highdatas.mdm.mapper.MasterAuthorMapper;
 import com.highdatas.mdm.pojo.CodeMsg;
 import com.highdatas.mdm.pojo.MasterAuthorType;
 import com.highdatas.mdm.pojo.Result;
 import com.highdatas.mdm.service.*;
 import com.highdatas.mdm.util.Constant;
 import com.highdatas.mdm.util.DbUtils;
+import com.highdatas.mdm.util.RedisClient;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
@@ -35,12 +37,23 @@
     IMasterAuthorService authorService;
     @Autowired
     IMasterAuthorDetailService authorDetailService;
-    @Autowired
-    ITUserRoleService userRoleService;
+
     @Autowired
     IMenuMappingService menuMappingService;
     @Autowired
     ISysMenuService menuService;
+    @Autowired
+    MasterAuthorMapper masterAuthorMapper;
+    @Autowired
+    IMaintainFieldService maintainFieldService;
+    @Autowired
+    IMasterAuthorUnactiveService masterAuthorUnactiveService;
+    @Autowired
+    IMasterAuthorSubscribeService masterAuthorSubscribeService;
+    @Autowired
+    IMaintainService maintainService;
+    @Autowired
+    RedisClient redisClient;
 
     public static final String masterAuthorType = "masterAuthorType";
     public static final String masterId = "masterId";
@@ -51,8 +64,17 @@
     private String maintainFieldId = "maintainFieldId";
     private String maintain_field_id = "maintain_field_id";
 
+    /**
+     *
+     * @description: 娣诲姞鎴栬�呮洿鏂版潈闄�
+     * @return 鏉冮檺鏁版嵁
+     *
+     */
     @RequestMapping(value = "/addOrUpdate", method = RequestMethod.POST)
     public Result deleteModel(@RequestBody MasterAuthor masterAuthor)  {
+        if (StringUtils.isEmpty(masterAuthor.getMaintainFieldId())) {
+            return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED);
+        }
         if (!StringUtils.isEmpty(masterAuthor.getId())) {
             masterAuthor.setUpdateTime(new Date());
         }else {
@@ -73,23 +95,39 @@
 
         boolean b = masterAuthor.insertOrUpdate();
         if (b) {
+            redisClient.delByCharacter(masterAuthor.getCharacterId());
             return Result.success(masterAuthor);
         }else {
             return Result.error(CodeMsg.UPDATE_ERROR);
         }
     }
-
+    /**
+     *
+     * @description: 閫氳繃绯荤粺鐢ㄦ埛鑾峰彇鏉冮檺
+     * @param characterId 绯荤粺鐢ㄦ埛
+     * @param isGroup 鏄惁涓虹敤鎴风粍鏁版嵁
+    *  @param type 鐢ㄦ埛绫诲瀷
+     * @return 鍏蜂綋鏁版嵁
+     *
+     */
     @RequestMapping(value = "/get/{characterId}", method = RequestMethod.GET)
-    public Result get(@PathVariable String characterId, @RequestParam MasterAuthorType type, HttpServletRequest request){
-        List<MasterAuthor> masterAuthorList = authorService.selectList(new EntityWrapper<MasterAuthor>().eq("type", type.name()).eq("character_id", characterId));
+    public Result get(@PathVariable String characterId,@RequestParam boolean isGroup, @RequestParam MasterAuthorType type, HttpServletRequest request){
+        List<MasterAuthor> masterAuthorList = authorService.selectList(new EntityWrapper<MasterAuthor>().eq("user_group", isGroup).eq("type", type.name()).eq("character_id", characterId));
         if (type.equals(MasterAuthorType.role) && masterAuthorList.isEmpty()) {
             return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED);
         }else if (type.equals(MasterAuthorType.user) && masterAuthorList.isEmpty()){
             //user 鑾峰彇瑙掕壊 澶氳剼鑹叉贩鍚�
             String userId = characterId;
-            List<TUserRole> tUserRoles = userRoleService.selectList(new EntityWrapper<TUserRole>().eq(Constant.USERID, userId));
-            List<String> roleIdList = tUserRoles.stream().map(tUserRole -> tUserRole.getRoleId()).collect(Collectors.toList());
-            HashMap<String, MasterAuthor> tableMasterAuthor = authorService.merageRoleAuthor(roleIdList);
+            Set<String> roleIdSet;
+            if (isGroup) {
+                roleIdSet = DbUtils.getRoleByGroup(userId);
+            } else {
+                roleIdSet = DbUtils.getRoleByUser(userId);
+            }
+            if (roleIdSet.isEmpty()) {
+                return Result.success(null);
+            }
+            HashMap<String, MasterAuthor> tableMasterAuthor = authorService.merageRoleAuthor(roleIdSet);
             if (tableMasterAuthor == null) {
                 Result.success(null);
             }
@@ -101,8 +139,10 @@
 
             Set<String> collect = list.stream().map(masterAuthor -> masterAuthor.getMenuId()).collect(Collectors.toSet());
             LinkedHashSet<String>  menuIds= new LinkedHashSet<>(collect);
-            LinkedHashSet<String> byParentId = menuService.getByParentId(menuIds);
-            List<SysMenu> sysMenus = menuService.selectBatchIds(byParentId);
+            List<SysMenu> sysMenus = menuService.getMenuByParentId(menuIds);
+            if (sysMenus == null) {
+                return Result.success(object);
+            }
             object.fluentPut("audit",sysMenus);
             return Result.success(object);
         }
@@ -113,19 +153,28 @@
                             .eq(Constant.PARENT_ID, masterAuthor.getId()));
             masterAuthor.setFields(masterAuthorDetails);
         }
-
         JSONObject object = new JSONObject();
+        object.fluentPut("type", type);
+        object.fluentPut("author",masterAuthorList);
+
         Set<String> collect = masterAuthorList.stream().map(masterAuthor -> masterAuthor.getMenuId()).collect(Collectors.toSet());
         LinkedHashSet<String>  menuIds= new LinkedHashSet<>(collect);
-        LinkedHashSet<String> byParentId = menuService.getByParentId(menuIds);
-        List<SysMenu> sysMenus = menuService.selectBatchIds(byParentId);
+        List<SysMenu> sysMenus = menuService.getMenuByParentId(menuIds);
+        if (sysMenus == null) {
+            return Result.success(object);
+        }
 
-        object.fluentPut("type", MasterAuthorType.user);
-        object.fluentPut("author",masterAuthorList);
         object.fluentPut("audit",sysMenus);
         return Result.success(object);
     }
-
+    /**
+     *
+     * @description: 閫氳繃绯荤粺鐢ㄦ埛鍒犻櫎鏉冮檺
+     * @param characterId 绯荤粺鐢ㄦ埛
+     *  @param type 鐢ㄦ埛绫诲瀷
+     * @return 鏄惁鍒犻櫎鎴愬姛
+     *
+     */
     @RequestMapping(value = "/delete/{characterId}", method = RequestMethod.GET)
     public Result delete(@PathVariable String characterId, @RequestParam MasterAuthorType type){
         List<MasterAuthor> masterAuthorList = authorService.selectList(new EntityWrapper<MasterAuthor>()
@@ -142,13 +191,22 @@
         }
 
         if (delete) {
+            redisClient.delByCharacter(characterId);
             return Result.success(CodeMsg.DELETE_SUCCESS);
         }else  {
             return Result.error(CodeMsg.DELETE_ERROR);
         }
     }
 
-
+    /**
+     *
+     * @description: 閫氳繃涓婚鍒犻櫎鏉冮檺
+     * @param characterId 绯荤粺鐢ㄦ埛
+     * @param menuId 涓婚id
+     *  @param type 鐢ㄦ埛绫诲瀷
+     * @return 鍏蜂綋鏁版嵁
+     *
+     */
     @RequestMapping(value = "/delete/menu/{menuId}", method = RequestMethod.GET)
     public Result deleteTable(@PathVariable String menuId, @RequestParam String characterId, @RequestParam MasterAuthorType type, HttpServletRequest request){
         String maintainFieldId = request.getParameter(this.maintainFieldId);
@@ -168,39 +226,416 @@
         if (count == 1 && !StringUtils.isEmpty(maintainFieldId)) {
             only = true;
         }
-        MasterAuthor masterAuthor = authorService.selectOne(masterAuthorWrapper);
-        if (masterAuthor == null) {
+        List<MasterAuthor> masterAuthors = authorService.selectList(masterAuthorWrapper);
+        if (masterAuthors == null || masterAuthors.isEmpty()) {
             return Result.success(null);
         }
-
-        boolean delete = authorDetailService.delete(new EntityWrapper<MasterAuthorDetail>().eq(Constant.PARENT_ID, masterAuthor.getId()));
-        if (delete) {
-            if (only){
-                delete = masterAuthor.setMaintainFieldId(null).setFieldAuto(false).setMaintainAuto(false).setUpdateTime(new Date()).updateById();
-            }else {
-                delete = masterAuthor.deleteById();
+        boolean delete = false;
+        for (MasterAuthor masterAuthor : masterAuthors) {
+            delete = authorDetailService.delete(new EntityWrapper<MasterAuthorDetail>().eq(Constant.PARENT_ID, masterAuthor.getId()));
+            if (delete) {
+                if (only){
+                    delete = masterAuthor.setMaintainFieldId(null).setFieldAuto(false).setMaintainAuto(false).setUpdateTime(new Date()).updateById();
+                }else {
+                    delete = masterAuthor.deleteById();
+                }
             }
         }
-
         if (delete) {
+            redisClient.delByCharacter(characterId);
             return Result.success(CodeMsg.DELETE_SUCCESS);
         }else  {
             return Result.error(CodeMsg.DELETE_ERROR);
         }
     }
-
-    @RequestMapping(value = "/addRole/{roleId}", method = RequestMethod.GET)
-    public Result addRole(@PathVariable String roleId, HttpServletRequest request){
+    /**
+     *
+     * @description: 鐢ㄦ埛缁勬坊鍔犺鑹插叧鑱�
+     * @param groupId 鐢ㄦ埛缁刬d
+     * @param roleId 瑙掕壊id
+     * @return 鏄惁娣诲姞鎴愬姛
+     *
+     */
+    @RequestMapping(value = "/groupAddRole/{roleId}", method = RequestMethod.GET)
+    public Result addGroupRole(@PathVariable String roleId, @RequestParam String groupId, HttpServletRequest request){
         TUser user = DbUtils.getUser(request);
-        String userId = user.getUserId();
-        List<TUserRole> tUserRoles = userRoleService.selectList(new EntityWrapper<TUserRole>().eq(Constant.USERID, userId));
-        List<String> roleIdList = tUserRoles.stream().map(tUserRole -> tUserRole.getRoleId()).collect(Collectors.toList());
-        roleIdList.add(roleId);
+        if (user == null){
+            return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED);
+        }
+        ArrayList<String> addRoleList = new ArrayList<>();
+        Set<String> roleIdSet = DbUtils.getRoleByGroup(groupId);
+        addRoleList.addAll(roleIdSet);
+        addRoleList.add(roleId);
+        boolean b = DbUtils.groupAddOneRole(user.getUserId(),groupId, addRoleList);
+        if (!b) {
+            return Result.error(CodeMsg.INSERT_ERROR);
+        }
 
-        HashMap<String, MasterAuthor> tableMasterAuthor = authorService.merageRoleAuthor(roleIdList);
+       roleIdSet.add(roleId);
+
+        HashMap<String, MasterAuthor> tableMasterAuthor = authorService.merageRoleAuthor(roleIdSet);
         if (tableMasterAuthor == null) {
             Result.success(null);
         }
         return Result.success(tableMasterAuthor.values());
     }
+    /**
+     *
+     * @description: 鐢ㄦ埛娣诲姞瑙掕壊鍏宠仈
+     * @param userId 鐢ㄦ埛id
+     * @param roleId 瑙掕壊id
+     * @return 鏄惁娣诲姞鎴愬姛
+     *
+     */
+    @RequestMapping(value = "/userAddRole/{roleId}", method = RequestMethod.GET)
+    public Result addRole(@PathVariable String roleId, @RequestParam String userId, HttpServletRequest request){
+        TUser user = DbUtils.getUserById(userId);
+        if (user == null){
+            return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED);
+        }
+        ArrayList<String> addRoleList = new ArrayList<>();
+        Set<String> roleIdSet = DbUtils.getRoleByUser(userId);
+        addRoleList.addAll(roleIdSet);
+        addRoleList.add(roleId);
+        boolean b = DbUtils.addOneRole(user, addRoleList);
+        if (!b) {
+            return Result.error(CodeMsg.INSERT_ERROR);
+        }
+
+        roleIdSet.add(roleId);
+
+        HashMap<String, MasterAuthor> tableMasterAuthor = authorService.merageRoleAuthor(roleIdSet);
+        if (tableMasterAuthor == null) {
+            Result.success(null);
+        }
+        return Result.success(tableMasterAuthor.values());
+    }
+
+    /**
+     *
+     * @description: 鐢ㄦ埛鍒犻櫎瑙掕壊鍏宠仈
+     * @param userId 鐢ㄦ埛id
+     * @param roleId 瑙掕壊id
+     * @return 鏄惁鍒犻櫎鎴愬姛
+     *
+     */
+    @RequestMapping(value = "/userDelRole/{roleId}", method = RequestMethod.GET)
+    public Result delRole(@PathVariable String roleId, @RequestParam String userId, HttpServletRequest request){
+        ArrayList<String> delRoleList = new ArrayList<>();
+
+        delRoleList.add(roleId);
+        boolean b = DbUtils.delOneRole(userId, delRoleList);
+        if (!b) {
+            return Result.error(CodeMsg.INSERT_ERROR);
+        }
+
+        Set<String> roleIdSet = DbUtils.getRoleByUser(userId);
+        HashMap<String, MasterAuthor> tableMasterAuthor = authorService.merageRoleAuthor(roleIdSet);
+        if (tableMasterAuthor == null) {
+            Result.success(null);
+        }
+        return Result.success(tableMasterAuthor.values());
+    }
+    /**
+     *
+     * @description: 鐢ㄦ埛缁勫垹闄よ鑹插叧鑱�
+     * @param groupId 鐢ㄦ埛缁刬d
+     * @param roleId 瑙掕壊id
+     * @return 鏄惁鍒犻櫎鎴愬姛
+     *
+     */
+    @RequestMapping(value = "/groupDelRole/{roleId}", method = RequestMethod.GET)
+    public Result delGroupRole(@PathVariable String roleId, @RequestParam String groupId, HttpServletRequest request){
+        ArrayList<String> delRoleList = new ArrayList<>();
+
+        delRoleList.add(roleId);
+        boolean b = DbUtils.groupDelOneRole(groupId, delRoleList);
+        if (!b) {
+            return Result.error(CodeMsg.INSERT_ERROR);
+        }
+
+        Set<String> roleIdSet = DbUtils.getRoleByGroup(groupId);
+        HashMap<String, MasterAuthor> tableMasterAuthor = authorService.merageRoleAuthor(roleIdSet);
+        if (tableMasterAuthor == null) {
+            Result.success(null);
+        }
+        return Result.success(tableMasterAuthor.values());
+    }
+
+    /**
+     *
+     * @description: 閫氳繃鐢ㄦ埛id鑾峰彇宸茬粡娉ㄥ唽list
+     * @param userId 鐢ㄦ埛id
+     * @return 宸叉敞鍐宭ist
+     *
+     */
+    @RequestMapping(value = "/subscribeList/{userId}", method = RequestMethod.GET)
+    public Result subscribeList(@PathVariable  String userId,  HttpServletRequest request){
+        TUser user = DbUtils.getUserById(userId);
+        if (user == null){
+            return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED);
+        }
+
+        List<SysMenu> menuList = authorService.getMenuUnParent(user, true);
+        if (menuList == null) {
+            return Result.success(null);
+        }
+        List<MasterAuthor> userAuthor = authorService.getUserAuthor(userId, null);
+
+        ArrayList<SysMenu> result = new ArrayList<>();
+        for (SysMenu sysMenu : menuList) {
+            long count = userAuthor.stream().filter(masterAuthor -> masterAuthor.getMenuId().equalsIgnoreCase(sysMenu.getId())).count();
+            if (count > 0) {
+                result.add(sysMenu);
+            }
+        }
+        LinkedHashSet<String> parentSet = new LinkedHashSet<>();
+
+        for (SysMenu menu : result) {
+            menu.setShow(false);
+            String menuId = menu.getId();
+            String tableNameByMenu = menuMappingService.getTableNameByMenu(menuId);
+            menu.setTableName(tableNameByMenu);
+            parentSet.clear();
+            parentSet.add(menuId);
+            List<SysMenu> sysMenus = menuService.getMenuByParentId(parentSet);
+
+            menu.setParentMenuList(sysMenus);
+            int i = masterAuthorSubscribeService.selectCount(new EntityWrapper<MasterAuthorSubscribe>().eq("menu_id", menuId).eq("user_id", userId));
+            if (i > 0) {
+                menu.setSubscribe(true);
+            }
+        }
+        return Result.success(result);
+    }
+
+//    @RequestMapping(value = "/canLoadData/{userId}", method = RequestMethod.GET)
+//    public Result canLoadData(@PathVariable String userId, @RequestParam String tableName, HttpServletRequest request) {
+//        TUser user = DbUtils.getUserById(userId);
+//        if (user == null) {
+//            return Result.error(CodeMsg.USER_NOT_MATHED);
+//        }
+//    }
+
+    /**
+     *
+     * @description: 閫氳繃userid鑾峰彇鏈夋潈闄愮殑涓婚
+     * @param userId 鐢ㄦ埛id
+     * @return 涓婚鍒楄〃
+     *
+     */
+    @RequestMapping(value = "/menu/{userId}", method = RequestMethod.GET)
+    public Result<List<SysMenu>> menuList(@PathVariable String userId, HttpServletRequest request) {
+        TUser user = DbUtils.getUserById(userId);
+        if (user == null) {
+            return Result.error(CodeMsg.USER_NOT_MATHED);
+        }
+
+        List<SysMenu> menu = authorService.getMenu(user, true);
+        return Result.success(menu) ;
+    }
+
+    /**
+     *
+     * @description: 閫氳繃userid鑾峰彇鏈夋潈闄愮殑涓婚鏁版嵁
+     * @param userId 鐢ㄦ埛id
+     * @return 鑾峰彇鏈夋潈闄愮殑鏁版嵁鏁�
+     *
+     */
+    @RequestMapping(value = "/getCnt/{userId}",  method = RequestMethod.GET)
+    public Result cnt(@PathVariable String userId, HttpServletRequest request) {
+        //TODO active
+        TUser user = DbUtils.getUserById(userId);
+        if (user == null) {
+            return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED);
+        }
+        List<MasterAuthor> userAuthor = authorService.getUserAuthor(userId, null);
+
+        List<SysMenu> menuList = authorService.getMenuUnParent(user, true);
+        int totalCnt = 0;
+        int subscribeCnt = 0;
+        int activeCnt = 0;
+        if (menuList == null) {
+            JSONObject object = new JSONObject();
+            object.fluentPut("totalCnt", 0);
+            object.fluentPut("activeCnt", 0);
+            object.fluentPut("subscribeCnt", 0);
+            return Result.success(object);
+        }
+        for (SysMenu sysMenu : menuList) {
+            List<MasterAuthor> authorMaintainFieldList = userAuthor.stream()
+                    .filter(masterAuthor -> masterAuthor.getMenuId().equalsIgnoreCase(sysMenu.getId()))
+                    .collect(Collectors.toList());
+            int count = authorMaintainFieldList.size();
+            if (count > 0) {
+              totalCnt++;
+                HashSet<Maintain> maintainSet = new HashSet<>();
+                for (MasterAuthor masterAuthor : authorMaintainFieldList) {
+                    String maintainFieldId = masterAuthor.getMaintainFieldId();
+                    String tableName = masterAuthor.getTableName();
+                    List<Maintain> maintainByMaintainField = maintainFieldService.getMaintainByMaintainField(maintainFieldId, tableName);
+                    if (maintainByMaintainField != null) {
+                        maintainSet.addAll(maintainByMaintainField);
+                    }
+
+                }
+                int unActiveCnt = masterAuthorUnactiveService.selectCount(new EntityWrapper<MasterAuthorUnactive>().in("maintain_id", maintainSet).eq("user_id", userId));
+                if (maintainSet.size() != unActiveCnt) {
+                    activeCnt++;
+                }
+                int oneSubscribeCnt = masterAuthorSubscribeService.selectCount(new EntityWrapper<MasterAuthorSubscribe>().eq("user_id", userId).eq("menu_id", sysMenu.getId()));
+                if (oneSubscribeCnt > 0){
+                    subscribeCnt++;
+                }
+            }
+
+        }
+
+
+        JSONObject object = new JSONObject();
+        object.fluentPut("totalCnt", totalCnt);
+        object.fluentPut("activeCnt", activeCnt);
+        object.fluentPut("subscribeCnt", subscribeCnt);
+        return Result.success(object);
+    }
+    /**
+     *
+     * @description: 閫氳繃鐗堟湰鑾峰彇婵�娲荤殑涓婚
+     * @param maintainId 涓婚id
+     * @param userId 鐢ㄦ埛id
+     * @param active 婵�娲荤姸鎬�
+     * @return 宸叉縺娲荤殑涓婚鏁�
+     *
+     */
+    @RequestMapping(value = "/active/{maintainId}",  method = RequestMethod.GET)
+    public Result active(@PathVariable String maintainId, @RequestParam String userId, @RequestParam Boolean active) {
+        TUser user = DbUtils.getUserById(userId);
+        if (user == null) {
+            return Result.error(CodeMsg.USER_NOT_MATHED);
+        }
+        MasterAuthorUnactive masterAuthorUnactive = masterAuthorUnactiveService.selectOne(new EntityWrapper<MasterAuthorUnactive>().eq(Constant.USERID, userId).eq("maintain_id", maintainId));
+        if (masterAuthorUnactive == null && active) {
+            return Result.success(null);
+        } else if (masterAuthorUnactive == null && !active) {
+            boolean insert = new MasterAuthorUnactive().setId(DbUtils.getUUID()).setMaintainId(maintainId).setUserId(userId).insert();
+            if (insert) {
+                return Result.success(null);
+            } else {
+                return Result.error(null);
+            }
+        } else if (active) {
+            boolean delete = masterAuthorUnactive.deleteById();
+            if (delete) {
+                return Result.success(null);
+            } else {
+                return Result.error(null);
+            }
+        } else {
+            return Result.success(null);
+        }
+    }
+
+    /**
+     *
+     * @description: 鑾峰彇鏈夋潈闄愮殑list鍜岀敤鎴穖ap
+     * @return list鍜岀敤鎴穖ap鍒楄〃
+     *
+     */
+    @RequestMapping(value = "/cntList",  method = RequestMethod.GET)
+    public Result cntList() {
+        HashMap<String, Long> result = new HashMap<>();
+        //user
+
+        Set<TUser> allUser = DbUtils.getAllUser();
+        for (TUser user : allUser) {
+            int activeCnt = 0;
+            List<MasterAuthor> userAuthor = authorService.getUserAuthor(user.getUserId(), null);
+
+            List<SysMenu> menuList = authorService.getMenuUnParent(user, true);
+
+            if (menuList == null) {
+                continue;
+            }
+            for (SysMenu sysMenu : menuList) {
+                List<MasterAuthor> authorMaintainFieldList = userAuthor.stream()
+                        .filter(masterAuthor -> masterAuthor.getMenuId().equalsIgnoreCase(sysMenu.getId()))
+                        .collect(Collectors.toList());
+                int count = authorMaintainFieldList.size();
+                if (count > 0) {
+                    HashSet<Maintain> maintainSet = new HashSet<>();
+                    for (MasterAuthor masterAuthor : authorMaintainFieldList) {
+                        String maintainFieldId = masterAuthor.getMaintainFieldId();
+                        String tableName = masterAuthor.getTableName();
+                        List<Maintain> maintainByMaintainField = maintainFieldService.getMaintainByMaintainField(maintainFieldId, tableName);
+                        maintainSet.addAll(maintainByMaintainField);
+                    }
+                    int unActiveCnt = masterAuthorUnactiveService.selectCount(new EntityWrapper<MasterAuthorUnactive>().in("maintain_id", maintainSet).eq("user_id", user.getUserId()));
+                    if (maintainSet.size() != unActiveCnt) {
+                        activeCnt++;
+                    }
+
+                }
+                result.put(user.getUserId(), Long.valueOf(activeCnt));
+            }
+        }
+
+        List<Map<String, Object>> userMapList = masterAuthorMapper.selectViewCnt();
+        merageUserCnt(result, userMapList);
+        if (result.isEmpty()) {
+            return Result.success(null);
+        }
+        return Result.success(result);
+    }
+    /**
+     *
+     * @description: 閫氳繃琛ㄥ悕鑾峰彇鏈夋潈闄愮殑鐗堟湰list
+     * @param userId 鐢ㄦ埛id
+     * @param tableName 琛ㄥ悕
+     * @return 鑾峰彇鏈夋潈闄愮殑鐗堟湰list
+     *
+     */
+    @RequestMapping(value = "/maintainList/{userId}",  method = RequestMethod.GET)
+    public Result maintainList(@PathVariable String userId, @RequestParam String tableName) {
+        TUser user = DbUtils.getUserById(userId);
+        if (user == null) {
+            return Result.error(CodeMsg.USER_NOT_MATHED);
+        }
+        Set<Maintain> maintainSet = authorService.getMaintainSet(tableName, user);
+        List<MasterAuthorUnactive> masterAuthorUnactives = masterAuthorUnactiveService.selectList(new EntityWrapper<MasterAuthorUnactive>().eq(Constant.USERID, userId));
+        for (Maintain maintain : maintainSet) {
+            long count = masterAuthorUnactives.stream()
+                    .filter(masterAuthorUnactive -> !StringUtils.isEmpty(masterAuthorUnactive.getMaintainId()))
+                    .filter(masterAuthorUnactive -> masterAuthorUnactive.getMaintainId().equalsIgnoreCase(maintain.getId()))
+                    .count();
+            if (count > 0) {
+                maintain.setActive(false);
+            } else {
+                maintain.setActive(true);
+            }
+        }
+        return Result.success(maintainSet);
+    }
+
+    /**
+     *
+     * @description: 閫氳繃鐗堟湰鑾峰彇婵�娲荤殑涓婚
+     * @param result 缁勮鐢ㄦ埛id锛� 鏁版嵁鐨�  map
+     * @param masterUserMapList 瑙嗗浘鐨勬暟鎹甽ist map
+     * @return result 鐢ㄦ埛id锛� 鏉冮檺鏁版嵁閲忕殑  map
+     *
+     */
+    private void merageUserCnt(HashMap<String, Long> result, List<Map<String, Object>> masterUserMapList) {
+        for (Map<String, Object> stringStringMap : masterUserMapList) {
+            String user = stringStringMap.get(Constant.USERID).toString();
+            long cnt = (long)(stringStringMap.get(Constant.CNT));
+
+            Long val = result.get(user);
+            if (val == null) {
+                result.put(user, Long.valueOf(cnt));
+            } else {
+                val += Long.valueOf(cnt);
+                result.put(user, val);
+            }
+        }
+    }
 }

--
Gitblit v1.8.0