提供钉钉菜单查询

yun-zuoyi
zhang.xw 3 years ago
parent 0c4a1e9e82
commit f8e12e8b44

@ -44,6 +44,10 @@ public class SysMenuDTO implements Serializable {
*/ */
private Integer menuSort; private Integer menuSort;
/** /**
* url
*/
private String menuUrl;
/**
* *
*/ */
private List<SysMenuDTO> childList; private List<SysMenuDTO> childList;

@ -10,7 +10,10 @@ import cn.estsh.i3plus.core.apiservice.util.MailUtil;
import cn.estsh.i3plus.core.apiservice.util.SysUserPasswordUtil; import cn.estsh.i3plus.core.apiservice.util.SysUserPasswordUtil;
import cn.estsh.i3plus.platform.common.convert.ConvertBean; import cn.estsh.i3plus.platform.common.convert.ConvertBean;
import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum; import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum;
import cn.estsh.i3plus.platform.common.tool.*; import cn.estsh.i3plus.platform.common.tool.JsonUtilTool;
import cn.estsh.i3plus.platform.common.tool.ServletRequestTool;
import cn.estsh.i3plus.platform.common.tool.StringTool;
import cn.estsh.i3plus.platform.common.tool.TimeTool;
import cn.estsh.i3plus.platform.common.util.CommonConstWords; import cn.estsh.i3plus.platform.common.util.CommonConstWords;
import cn.estsh.i3plus.platform.common.util.PlatformConstWords; import cn.estsh.i3plus.platform.common.util.PlatformConstWords;
import cn.estsh.i3plus.pojo.base.annotation.AnnoIgnoreLog; import cn.estsh.i3plus.pojo.base.annotation.AnnoIgnoreLog;
@ -22,7 +25,6 @@ import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.enumutil.ImppEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.ImppEnumUtil;
import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil;
import cn.estsh.i3plus.pojo.base.util.BeanMapUtils;
import cn.estsh.i3plus.pojo.model.common.CloudPagerModel; import cn.estsh.i3plus.pojo.model.common.CloudPagerModel;
import cn.estsh.i3plus.pojo.model.common.ImppEmail; import cn.estsh.i3plus.pojo.model.common.ImppEmail;
import cn.estsh.i3plus.pojo.model.common.ImppSmsContent; import cn.estsh.i3plus.pojo.model.common.ImppSmsContent;
@ -61,15 +63,13 @@ import com.google.common.cache.CacheBuilder;
import com.taobao.api.ApiException; import com.taobao.api.ApiException;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import jodd.bean.BeanUtil;
import jodd.util.StringUtil;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.authc.*; import org.apache.shiro.authc.*;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -173,6 +173,10 @@ public class WhiteController extends CoreBaseController {
@Autowired @Autowired
private ICoreMemTreeService memTreeService; private ICoreMemTreeService memTreeService;
@Value(value = "${filter.ding.menu.parent.id}")
private Long filterDingPmcParentMenuId;
private Cache<String, Integer> unsavedLocaleResSwitch = CacheBuilder.newBuilder() private Cache<String, Integer> unsavedLocaleResSwitch = CacheBuilder.newBuilder()
.maximumSize(1) .maximumSize(1)
.expireAfterWrite(1, TimeUnit.MINUTES) .expireAfterWrite(1, TimeUnit.MINUTES)
@ -1440,7 +1444,7 @@ public class WhiteController extends CoreBaseController {
List<SysMenu> menuList = memTreeService.packTreeDingSysMenuByUserId(sysUser.getId()); List<SysMenu> menuList = memTreeService.packTreeDingSysMenuByUserId(sysUser.getId());
Long menuSelectTime = System.currentTimeMillis(); Long menuSelectTime = System.currentTimeMillis();
LOGGER.info("第一段耗时:{}", menuSelectTime - startTime); LOGGER.info("第一段耗时:{}", menuSelectTime - startTime);
List<SysMenu> syslist = memTreeService.packTreeSysMenuByParentIdAndMenuType(menuList, CommonConstWords.SYSTEM_MENU_ROOT_ID, CommonEnumUtil.METHOD_LEVEL.PLUGIN.getValue()); List<SysMenu> syslist = memTreeService.packTreeSysMenuByParentIdAndMenuType(menuList, filterDingPmcParentMenuId , CommonEnumUtil.METHOD_LEVEL.PLUGIN.getValue());
LOGGER.info("第二段耗时:{}", System.currentTimeMillis() - menuSelectTime); LOGGER.info("第二段耗时:{}", System.currentTimeMillis() - menuSelectTime);
List<SysMenuDTO> resList = memTreeService.packTreeToDto(syslist); List<SysMenuDTO> resList = memTreeService.packTreeToDto(syslist);

@ -11,9 +11,11 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -42,6 +44,16 @@ public class CoreMemTreeService implements ICoreMemTreeService {
private ISysOrganizeService organizeService; private ISysOrganizeService organizeService;
@Autowired @Autowired
private ISysDepartmentService departmentService; private ISysDepartmentService departmentService;
/**
* PMC id
*/
@Value(value = "${filter.ding.menu.id}")
private String filterDingPmcMenuIds;
/**
* PMC id
*/
@Value(value = "${filter.ding.menu.parent.id}")
private String filterDingPmcParentMenuId;
@Override @Override
public List<SysPosition> packTreeSysPosition(List<SysPosition> list, Long parentId) { public List<SysPosition> packTreeSysPosition(List<SysPosition> list, Long parentId) {
@ -631,7 +643,7 @@ public class CoreMemTreeService implements ICoreMemTreeService {
@Override @Override
public List<SysMenu> packTreeDingSysMenuByUserId(Long userId) { public List<SysMenu> packTreeDingSysMenuByUserId(Long userId) {
return packTreeDingSysMenuByUserIdAndParentId(userId, CommonEnumUtil.PARENT.DEFAULT.getValue()); return packTreeDingSysMenuByUserIdAndParentId(userId, Long.parseLong(filterDingPmcParentMenuId));
} }
/** /**
@ -675,15 +687,17 @@ public class CoreMemTreeService implements ICoreMemTreeService {
if (roleList != null && roleList.size() > 0) { if (roleList != null && roleList.size() > 0) {
// 查询角色关联菜单 // 查询角色关联菜单
List<SysRefRoleMenu> refRoleMenuList = personnelService.findSysRefRoleMenuByRefUserRole(roleList); List<SysRefRoleMenu> refRoleMenuList = personnelService.findSysRefRoleMenuByRefUserRole(roleList);
// pdc 菜单
List<Long> includeMenuId = Arrays.asList(filterDingPmcMenuIds.split(",")).stream().map(Long :: parseLong).collect(Collectors.toList());
long refRoleMenuTime = System.currentTimeMillis(); long refRoleMenuTime = System.currentTimeMillis();
LOGGER.info("查询角色关联菜单:{}",refRoleMenuTime - roleTime); LOGGER.info("查询角色关联菜单:{}",refRoleMenuTime - roleTime);
List<Long> menuIdList = refRoleMenuList.stream().map(SysRefRoleMenu::getMenuId).collect(Collectors.toList()); List<Long> menuIdList = refRoleMenuList.stream().map(SysRefRoleMenu::getMenuId).collect(Collectors.toList());
includeMenuId.retainAll(menuIdList);
if (refRoleMenuList != null && refRoleMenuList.size() > 0) { if (refRoleMenuList != null && refRoleMenuList.size() > 0) {
//todo 暂时先加入一个根节点,避免全查询 List<SysMenu> menuList = menuService.findByIdList(includeMenuId);
List<Long> copyMenuIdList = new ArrayList<>(menuIdList);
// copyMenuIdList.add(100000000l);
// List<SysMenu> menuList = menuService.findByIdList(copyMenuIdList);
List<SysMenu> menuList = menuService.findAll();
// 构建菜单树 // 构建菜单树
List<SysMenu> menuRootTree = packTreeSysMenu(menuList, parentId); List<SysMenu> menuRootTree = packTreeSysMenu(menuList, parentId);
// //

@ -60,14 +60,14 @@ spring.datasource.hikari.connection-timeout=30000
##\u4E3B\u6570\u636E\u6E90\uFF0C\u8BFB\u5199 ##\u4E3B\u6570\u636E\u6E90\uFF0C\u8BFB\u5199
#impp.write.datasource.type=com.zaxxer.hikari.HikariDataSource #impp.write.datasource.type=com.zaxxer.hikari.HikariDataSource
impp.write.datasource.driver-class-name=com.mysql.jdbc.Driver impp.write.datasource.driver-class-name=com.mysql.jdbc.Driver
impp.write.datasource.jdbc-url=jdbc:mysql://192.168.1.55:3306/impp_i3_core?autoReconnect=true&useSSL=false&characterEncoding=utf-8 impp.write.datasource.jdbc-url=jdbc:mysql://192.168.1.240:3306/impp_i3_core?autoReconnect=true&useSSL=false&characterEncoding=utf-8
impp.write.datasource.username=impp_i3_core_user impp.write.datasource.username=impp_i3_core_user
impp.write.datasource.password=impp_i3_core_pwd impp.write.datasource.password=impp_i3_core_pwd
##\u8F85\u6570\u636E\u6E90\uFF0C\u53EA\u8BFB ##\u8F85\u6570\u636E\u6E90\uFF0C\u53EA\u8BFB
#impp.read.datasource.type=com.zaxxer.hikari.HikariDataSource #impp.read.datasource.type=com.zaxxer.hikari.HikariDataSource
impp.read.datasource.driver-class-name=com.mysql.jdbc.Driver impp.read.datasource.driver-class-name=com.mysql.jdbc.Driver
impp.read.datasource.jdbc-url=jdbc:mysql://192.168.1.55:3306/impp_i3_core?autoReconnect=true&useSSL=false&characterEncoding=utf-8 impp.read.datasource.jdbc-url=jdbc:mysql://192.168.1.240:3306/impp_i3_core?autoReconnect=true&useSSL=false&characterEncoding=utf-8
impp.read.datasource.username=impp_i3_core_user impp.read.datasource.username=impp_i3_core_user
impp.read.datasource.password=impp_i3_core_pwd impp.read.datasource.password=impp_i3_core_pwd
@ -92,7 +92,7 @@ spring.jpa.properties.hibernate.hbm2ddl.auto=update
##############\u5B9A\u65F6\u4EFB\u52A1\u6301\u4E45\u5316############## ##############\u5B9A\u65F6\u4EFB\u52A1\u6301\u4E45\u5316##############
impp.schedule.open=true impp.schedule.open=true
impp.schedule.datasource.driver-class-name=com.mysql.jdbc.Driver impp.schedule.datasource.driver-class-name=com.mysql.jdbc.Driver
impp.schedule.datasource.jdbc-url=jdbc:mysql://192.168.1.55:3306/impp_i3_schedule?autoReconnect=true&useSSL=false&characterEncoding=utf-8 impp.schedule.datasource.jdbc-url=jdbc:mysql://192.168.1.240:3306/impp_i3_schedule?autoReconnect=true&useSSL=false&characterEncoding=utf-8
impp.schedule.datasource.username=impp_i3_schedule_user impp.schedule.datasource.username=impp_i3_schedule_user
impp.schedule.datasource.password=impp_i3_schedule_pwd impp.schedule.datasource.password=impp_i3_schedule_pwd
impp.schedule.datasource.max-connections=20 impp.schedule.datasource.max-connections=20

@ -76,3 +76,6 @@ redis.resource.db=0
redis.session.db=1 redis.session.db=1
#\u7CFB\u7EDF\u5168\u5C40\u7F13\u5B58\u5E93\uFF0C\u5B58\u653E\u5E73\u53F0\u6838\u5FC3\u6570\u636E\u7F13\u5B58 #\u7CFB\u7EDF\u5168\u5C40\u7F13\u5B58\u5E93\uFF0C\u5B58\u653E\u5E73\u53F0\u6838\u5FC3\u6570\u636E\u7F13\u5B58
redis.core.db=2 redis.core.db=2
filter.ding.menu.id = 112000000,102081502,112000100,112000200,112000300,112000400,112000500,112000501,112000520,112000600,112000700,112000701,112000702,112000800,112000900,112001000,112001100
filter.ding.menu.parent.id = 100000000

Loading…
Cancel
Save