From 5268a2b7dfa556bd6f5a2d5e446cea3ea9940c10 Mon Sep 17 00:00:00 2001 From: kimi <kimi42345@gmail.com> Date: 星期三, 22 四月 2020 11:18:23 +0800 Subject: [PATCH] add 分发 master_author 添加字段 subscribe increment, 添加7个表 master_author_subscribe master_author_unactive sys_dispense_config sys_dispense_logs sys_view sys_view_join sys_view_logic --- src/main/java/com/highdatas/mdm/controller/MasterAuthorController.java | 238 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 231 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/highdatas/mdm/controller/MasterAuthorController.java b/src/main/java/com/highdatas/mdm/controller/MasterAuthorController.java index 9989453..60d5602 100644 --- a/src/main/java/com/highdatas/mdm/controller/MasterAuthorController.java +++ b/src/main/java/com/highdatas/mdm/controller/MasterAuthorController.java @@ -5,6 +5,7 @@ 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; @@ -41,6 +42,14 @@ IMenuMappingService menuMappingService; @Autowired ISysMenuService menuService; + @Autowired + MasterAuthorMapper masterAuthorMapper; + @Autowired + IMaintainFieldService maintainFieldService; + @Autowired + IMasterAuthorUnactiveService masterAuthorUnactiveService; + @Autowired + IMasterAuthorSubscribeService masterAuthorSubscribeService; public static final String masterAuthorType = "masterAuthorType"; public static final String masterId = "masterId"; @@ -81,7 +90,6 @@ @RequestMapping(value = "/get/{characterId}", method = RequestMethod.GET) 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); @@ -109,11 +117,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); - if (byParentId == null) { + List<SysMenu> sysMenus = menuService.getMenuByParentId(menuIds); + if (sysMenus == null) { return Result.success(object); } - List<SysMenu> sysMenus = menuService.selectBatchIds(byParentId); object.fluentPut("audit",sysMenus); return Result.success(object); } @@ -131,11 +138,10 @@ Set<String> collect = masterAuthorList.stream().map(masterAuthor -> masterAuthor.getMenuId()).collect(Collectors.toSet()); LinkedHashSet<String> menuIds= new LinkedHashSet<>(collect); - LinkedHashSet<String> byParentId = menuService.getByParentId(menuIds); - if (byParentId == null) { + List<SysMenu> sysMenus = menuService.getMenuByParentId(menuIds); + if (sysMenus == null) { return Result.success(object); } - List<SysMenu> sysMenus = menuService.selectBatchIds(byParentId); object.fluentPut("audit",sysMenus); return Result.success(object); @@ -289,5 +295,223 @@ return Result.success(tableMasterAuthor.values()); } + @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 = "/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) ; + } + + + @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); + 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); + } + + @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); + } + } + + + @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); + } + + @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); + } + + + 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