diff --git a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ICoreMemTreeService.java b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ICoreMemTreeService.java index d5c573b..2ec503c 100644 --- a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ICoreMemTreeService.java +++ b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ICoreMemTreeService.java @@ -147,7 +147,7 @@ public interface ICoreMemTreeService { List packTreeSysMenu(List list,Long parentId); @ApiOperation(value = "分装功能树",notes = "根据用户功能关系分装功能树") - List packTreeSysMenuBySysRefUserOrganize(List list, List refList); + List packTreeSysMenuBySysRefRoleMenu(List list, List refList); @ApiOperation(value = "分装功能树",notes = "根据制定IDS分装功能树") List packTreeSysMenuByIds(List list, List ids); @@ -164,6 +164,9 @@ public interface ICoreMemTreeService { @ApiOperation(value = "查询功能子节点",notes = "根据用户ID 和 节点ID 查询功能树") List packTreeSysMenuByUserIdAndParentId(Long userId,Long parentId); + @ApiOperation(value = "查询功能子节点",notes = "根据父节点ID 和 菜单类型 查询功能树") + List packTreeSysMenuByParentIdAndMenuType(List list,Long parentId,Integer menuType); + @ApiOperation(value = "查询功能子节点",notes = "根据用户ID 查询功能树") List packTreeSysMenu(); diff --git a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysUserService.java b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysUserService.java index 0eff148..daeffa2 100644 --- a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysUserService.java +++ b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysUserService.java @@ -249,6 +249,9 @@ public interface ISysUserService { @ApiOperation(value = "封装用户信息",notes = "封装登录完成后的用户信息(角色、权限、部门、组织、岗位)") SessionUser packSessionUser(SessionUser sessionUser, SysUser user, Integer userType,Integer loginPlatform, String languageCode, String deviceId); + @ApiOperation(value = "封装用户信息",notes = "封装用户列表分页信息") + SessionUser packPageSessionUser(SessionUser sessionUser, SysUser user); + /** * 根据id查询用户信息 * @param ids 用户id diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/AuthController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/AuthController.java index 62767c6..d6114d2 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/AuthController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/AuthController.java @@ -2,6 +2,7 @@ package cn.estsh.i3plus.core.apiservice.controller.base; import cn.estsh.i3plus.core.api.iservice.busi.ICoreMemTreeService; import cn.estsh.i3plus.core.apiservice.serviceimpl.busi.SysLocaleLanguageService; +import cn.estsh.i3plus.platform.common.util.CommonConstWords; import cn.estsh.i3plus.platform.common.util.PlatformConstWords; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; @@ -119,21 +120,8 @@ public class AuthController extends CoreBaseController { @GetMapping(value = "/menu/find-home-list") @ApiOperation(value = "获取登录用户功能权限信息", notes = "获取首页权限信息") public ResultBean findHomeList() { - List list = new ArrayList<>(); - SysUser user = getSessionUser().getUser(); - - if (user != null) { - List menus = user.getMenuList(); - if (menus != null) { - for (SysMenu menu : menus) { - if (menu != null) { - if (menu.getMenuType().equals(CommonEnumUtil.METHOD_LEVEL.PLUGIN.getValue()) && menu.getParentId().longValue() != -1) { - list.add(menu); - } - } - } - } - } + List menuList = memTreeService.packTreeSysMenuByUserId(getSessionUser().getUser().getId()); + List list = memTreeService.packTreeSysMenuByParentIdAndMenuType(menuList, CommonConstWords.SYSTEM_MENU_ROOT_ID, CommonEnumUtil.METHOD_LEVEL.PLUGIN.getValue()); if (list != null && list.size() > 0) { // 内存排序 Sort 降序 code 升序 @@ -142,7 +130,6 @@ public class AuthController extends CoreBaseController { } else { return ResultBean.fail("操作失败").setCode(ResourceEnumUtil.MESSAGE.FAIL.getCode()).setErrorMsg("菜单信息不存在"); } - } /** diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysDepartmentController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysDepartmentController.java index 08037a0..317163f 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysDepartmentController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysDepartmentController.java @@ -103,6 +103,7 @@ public class SysDepartmentController extends CoreBaseController { sysDepartment.setDepartmentCode(department.getDepartmentCode()); sysDepartment.setDepartmentSort(department.getDepartmentSort()); sysDepartment.setParentId(department.getParentId()); + sysDepartment.setOrganizeId(department.getOrganizeId()); ConvertBean.modelUpdate(department, AuthUtil.getSessionUser()); if(sysDepartment.getParentId() == null || department.getParentId() <= 0){ diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/CoreMemTreeService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/CoreMemTreeService.java index 90aca8c..ef8e150 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/CoreMemTreeService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/CoreMemTreeService.java @@ -548,7 +548,7 @@ public class CoreMemTreeService implements ICoreMemTreeService { } @Override - public List packTreeSysMenuBySysRefUserOrganize(List list, List refList) { + public List packTreeSysMenuBySysRefRoleMenu(List list, List refList) { List ids = new ArrayList<>(refList.size()); if(refList != null && refList.size() > 0){ @@ -623,13 +623,31 @@ public class CoreMemTreeService implements ICoreMemTreeService { List menuList = personnelService.findSysMenuList(); List menuRootTree = packTreeSysMenu(menuList, parentId); - return packTreeSysMenuBySysRefUserOrganize(menuRootTree, refRoleMenuList); + return packTreeSysMenuBySysRefRoleMenu(menuRootTree, refRoleMenuList); } } return null; } @Override + public List packTreeSysMenuByParentIdAndMenuType(List list,Long parentId, Integer menuType) { + List result = new ArrayList<>(); + + if(list != null && list.size() > 0){ + for (SysMenu menu : list) { + if(menu.getChildList() != null && menu.getChildList().size() > 0){ + result.addAll(packTreeSysMenuByParentIdAndMenuType(menu.getChildList(), parentId, menuType)); + } + if(menu.getParentId().equals(parentId) && menu.getMenuType().equals(menuType)){ + result.add(menu); + } + } + } + + return result; + } + + @Override public List packTreeSysMenu() { List menuList = personnelService.findSysMenuList(); return packTreeSysMenu(menuList, CommonEnumUtil.PARENT.DEFAULT.getValue()); diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserService.java index 2c6567d..221031a 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserService.java @@ -28,6 +28,7 @@ import cn.estsh.impp.framework.boot.auth.AuthUtil; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; import cn.estsh.impp.framework.boot.exception.ImppExceptionEnum; import cn.estsh.impp.framework.boot.util.ImppRedis; +import cn.estsh.impp.framework.boot.util.RedisUtilTool; import io.swagger.annotations.ApiOperation; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.authc.AuthenticationException; @@ -105,6 +106,9 @@ public class SysUserService implements ISysUserService { @Autowired private IPersonnelService personnelService; + @Resource(name = CommonConstWords.IMPP_REDIS_RES) + private ImppRedis redisRes; + /** * 缓存 */ @@ -125,6 +129,7 @@ public class SysUserService implements ISysUserService { throw new CredentialsException("用户不存在"); } packSessionUser(sessionUser, user, user.getUserType(),loginPlatform, languageCode,deviceId); + packPageSessionUser(sessionUser, user); AuthUtil.setSessionUser(sessionUser); refreshUserLoginInformation(user.getId()); AuthUtil.online(sessionUser); @@ -606,6 +611,37 @@ public class SysUserService implements ISysUserService { } @Override + public SessionUser packPageSessionUser(SessionUser sessionUser, SysUser user) { + SysConfig configPageList = RedisUtilTool.getSysConfigByConfigCode(redisRes, CommonConstWords.CONFIG_PAGE_SIZE_LIST); + try { + if(configPageList != null && StringUtils.isNotBlank(configPageList.getConfigValue())){ + String[] split = configPageList.getConfigValue().split(","); + int[] ints = Arrays.stream(split).mapToInt(Integer::parseInt).toArray(); + sessionUser.setPageSizeArray(Arrays.stream(ints).boxed().toArray(Integer[]::new)); + } + }catch (Exception e){ + } + + if(sessionUser.getPageSizeArray() == null){ + sessionUser.setPageSizeArray(CommonConstWords.CONFIG_PAGE_SIZE_LIST_DEFAULT); + } + + SysConfig configPageSize = RedisUtilTool.getSysConfigByConfigCode(redisRes, CommonConstWords.CONFIG_PAGE_DEFAULT_SIZE); + try { + if(configPageSize != null && StringUtils.isNotBlank(configPageSize.getConfigValue())){ + sessionUser.setPageDefaultSize(Integer.parseInt(configPageSize.getConfigValue())); + } + }catch (Exception e){ + } + + if(sessionUser.getPageDefaultSize() == null || sessionUser.getPageDefaultSize() <= 0){ + sessionUser.setPageDefaultSize(CommonConstWords.CONFIG_PAGE_DEFAULT); + } + + return sessionUser; + } + + @Override public List findSysUserByIds(Long[] ids) { DdlPackBean ddlPackBean = new DdlPackBean(); DdlPreparedPack.getInPackArray(ids, "id", ddlPackBean); diff --git a/modules/i3plus-core-apiservice/src/main/resources/application-dev.properties b/modules/i3plus-core-apiservice/src/main/resources/application-dev.properties index 9d71756..b73218a 100644 --- a/modules/i3plus-core-apiservice/src/main/resources/application-dev.properties +++ b/modules/i3plus-core-apiservice/src/main/resources/application-dev.properties @@ -148,6 +148,14 @@ eureka.instance.prefer-ip-address=true eureka.instance.lease-expiration-duration-in-seconds=30 #心跳周期 eureka.instance.lease-renewal-interval-in-seconds=20 +#client连接Eureka服务端后的空闲等待时间,默认为30 秒 +eureka.client.eureka-connection-idle-timeout-seconds=1 +#最初复制实例信息到eureka服务器所需的时间(s),默认为40秒 +eureka.client.initial-instance-info-replication-interval-seconds=1 +#间隔多长时间再次复制实例信息到eureka服务器,默认为30秒 +eureka.client.instance-info-replication-interval-seconds=1 +#从eureka服务器注册表中获取注册信息的时间间隔(s),默认为30秒 +eureka.client.registry-fetch-interval-seconds=1 ################ 熔断配置 ################ #重试 @@ -169,9 +177,9 @@ spring.sleuth.sampler.probability=1.0 ################ FastDfs 配置 ################ #tracker服务器ip -fastdfs.tracker_servers=192.168.1.56:7031 +fastdfs.tracker_servers=192.168.1.56:22122 # tracker的http端口 -fastdfs.http_tracker_http_port=7031 +fastdfs.http_tracker_http_port=22122 # 使用自定义工具获取文件展示地址 fastdfs.http.ui.host=http://dfs.estsh.com #密码 diff --git a/modules/i3plus-core-apiservice/src/main/resources/application-docker-yfas-nd.properties b/modules/i3plus-core-apiservice/src/main/resources/application-docker-yfas-nd.properties index 26b0ad7..79d909c 100644 --- a/modules/i3plus-core-apiservice/src/main/resources/application-docker-yfas-nd.properties +++ b/modules/i3plus-core-apiservice/src/main/resources/application-docker-yfas-nd.properties @@ -147,6 +147,14 @@ eureka.instance.prefer-ip-address=true eureka.instance.lease-expiration-duration-in-seconds=30 #心跳周期 eureka.instance.lease-renewal-interval-in-seconds=20 +#client连接Eureka服务端后的空闲等待时间,默认为30 秒 +eureka.client.eureka-connection-idle-timeout-seconds=1 +#最初复制实例信息到eureka服务器所需的时间(s),默认为40秒 +eureka.client.initial-instance-info-replication-interval-seconds=1 +#间隔多长时间再次复制实例信息到eureka服务器,默认为30秒 +eureka.client.instance-info-replication-interval-seconds=1 +#从eureka服务器注册表中获取注册信息的时间间隔(s),默认为30秒 +eureka.client.registry-fetch-interval-seconds=1 ################ 熔断配置 ################ #重试 diff --git a/modules/i3plus-core-apiservice/src/main/resources/application-docker.properties b/modules/i3plus-core-apiservice/src/main/resources/application-docker.properties index af1bf72..46e1724 100644 --- a/modules/i3plus-core-apiservice/src/main/resources/application-docker.properties +++ b/modules/i3plus-core-apiservice/src/main/resources/application-docker.properties @@ -146,6 +146,14 @@ eureka.instance.prefer-ip-address=true eureka.instance.lease-expiration-duration-in-seconds=30 #心跳周期 eureka.instance.lease-renewal-interval-in-seconds=20 +#client连接Eureka服务端后的空闲等待时间,默认为30 秒 +eureka.client.eureka-connection-idle-timeout-seconds=1 +#最初复制实例信息到eureka服务器所需的时间(s),默认为40秒 +eureka.client.initial-instance-info-replication-interval-seconds=1 +#间隔多长时间再次复制实例信息到eureka服务器,默认为30秒 +eureka.client.instance-info-replication-interval-seconds=1 +#从eureka服务器注册表中获取注册信息的时间间隔(s),默认为30秒 +eureka.client.registry-fetch-interval-seconds=1 ################ 熔断配置 ################ #重试 diff --git a/modules/i3plus-core-apiservice/src/main/resources/application-prod.properties b/modules/i3plus-core-apiservice/src/main/resources/application-prod.properties index cc10db9..9e5202d 100644 --- a/modules/i3plus-core-apiservice/src/main/resources/application-prod.properties +++ b/modules/i3plus-core-apiservice/src/main/resources/application-prod.properties @@ -149,6 +149,15 @@ eureka.instance.prefer-ip-address=true eureka.instance.lease-expiration-duration-in-seconds=30 #心跳周期 eureka.instance.lease-renewal-interval-in-seconds=20 +#client连接Eureka服务端后的空闲等待时间,默认为30 秒 +eureka.client.eureka-connection-idle-timeout-seconds=1 +#最初复制实例信息到eureka服务器所需的时间(s),默认为40秒 +eureka.client.initial-instance-info-replication-interval-seconds=1 +#间隔多长时间再次复制实例信息到eureka服务器,默认为30秒 +eureka.client.instance-info-replication-interval-seconds=1 +#从eureka服务器注册表中获取注册信息的时间间隔(s),默认为30秒 +eureka.client.registry-fetch-interval-seconds=1 + ################ 熔断配置 ################ #重试 diff --git a/modules/i3plus-core-apiservice/src/main/resources/application-test.properties.bak b/modules/i3plus-core-apiservice/src/main/resources/application-test.properties.bak index 2de5111..76cbf32 100644 --- a/modules/i3plus-core-apiservice/src/main/resources/application-test.properties.bak +++ b/modules/i3plus-core-apiservice/src/main/resources/application-test.properties.bak @@ -148,6 +148,15 @@ eureka.instance.prefer-ip-address=true eureka.instance.lease-expiration-duration-in-seconds=30 #心跳周期 eureka.instance.lease-renewal-interval-in-seconds=20 +#client连接Eureka服务端后的空闲等待时间,默认为30 秒 +eureka.client.eureka-connection-idle-timeout-seconds=1 +#最初复制实例信息到eureka服务器所需的时间(s),默认为40秒 +eureka.client.initial-instance-info-replication-interval-seconds=1 +#间隔多长时间再次复制实例信息到eureka服务器,默认为30秒 +eureka.client.instance-info-replication-interval-seconds=1 +#从eureka服务器注册表中获取注册信息的时间间隔(s),默认为30秒 +eureka.client.registry-fetch-interval-seconds=1 + ################ 熔断配置 ################ #重试 diff --git a/modules/i3plus-core-apiservice/src/main/resources/application.properties b/modules/i3plus-core-apiservice/src/main/resources/application.properties index 15c63f7..aa1dd48 100644 --- a/modules/i3plus-core-apiservice/src/main/resources/application.properties +++ b/modules/i3plus-core-apiservice/src/main/resources/application.properties @@ -9,7 +9,7 @@ spring.application.name=${project.name} #当前项目版本 version=${project.version} #解决程序读配置文件乱码问题 -spring.message.encoding=UTF-8 +spring.message.encoding=UTF-8 sh ######## 通用设置 ####### #启动时加载,预加载controller spring.mvc.servlet.load-on-startup=1