From 65f6a65aa7f7014e0e134eb572e4e0024522e54c Mon Sep 17 00:00:00 2001 From: ljf Date: Wed, 13 Mar 2024 18:48:27 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kms/config/singleDomain/SingleMenu.java | 1 + .../controller/system/SysLoginController.java | 86 ++++++++++++++++--- .../web/controller/tool/TestController.java | 2 +- .../src/main/resources/application-test.yml | 4 +- 4 files changed, 78 insertions(+), 15 deletions(-) diff --git a/jwtech-admin/src/main/java/com/kms/config/singleDomain/SingleMenu.java b/jwtech-admin/src/main/java/com/kms/config/singleDomain/SingleMenu.java index da11b394..32d32a8e 100644 --- a/jwtech-admin/src/main/java/com/kms/config/singleDomain/SingleMenu.java +++ b/jwtech-admin/src/main/java/com/kms/config/singleDomain/SingleMenu.java @@ -19,6 +19,7 @@ public class SingleMenu { private String iframe;//是否外链 private Integer seq; //排序 private String stats; //状态 1启用 0停用 + private String permissionCode; //权限标识 private List children; } diff --git a/jwtech-admin/src/main/java/com/kms/web/controller/system/SysLoginController.java b/jwtech-admin/src/main/java/com/kms/web/controller/system/SysLoginController.java index cc19b43c..60a6df43 100644 --- a/jwtech-admin/src/main/java/com/kms/web/controller/system/SysLoginController.java +++ b/jwtech-admin/src/main/java/com/kms/web/controller/system/SysLoginController.java @@ -29,6 +29,7 @@ import com.kms.config.singleDomain.SingleRole; import com.kms.framework.manager.AsyncManager; import com.kms.framework.manager.factory.AsyncFactory; import com.kms.framework.web.service.SysPermissionService; +import com.kms.system.domain.SysRoleMenu; import com.kms.system.service.SysMenuService; import com.kms.system.service.SysRoleMenuService; import com.kms.system.service.SysRoleService; @@ -46,8 +47,13 @@ import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; +import java.util.ArrayList; import java.util.List; import java.util.Set; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.stream.Collectors; /** * 登录验证 @@ -220,26 +226,82 @@ public class SysLoginController extends BaseController { @Autowired SysMenuService sysMenuService; + ExecutorService executorService = Executors.newFixedThreadPool(5); + + /** + * 根据用户token获取资源权限 + * @param token + * @return + */ @GetMapping("/getSingleRotes/{token}") public AjaxResult getSingleRotes(@PathVariable String token){ - WaterResult waterResult = waterRequestUtil.authUser(token); - String data = waterResult.getData(); - JSONObject jsonObject = JSONObject.parseObject(data); - List functionPerms = jsonObject.getJSONArray("functionPerms").toJavaList(String.class); - List roles = jsonObject.getJSONArray("roles").toJavaList(String.class); - QueryWrapper query = Wrappers.query(); - query.in("role_key",roles); - List roleList = sysRoleService.list(query); +// WaterResult waterResult = waterRequestUtil.authUser(token); +// String data = waterResult.getData(); +// JSONObject jsonObject = JSONObject.parseObject(data); +// List functionPerms = jsonObject.getJSONArray("functionPerms").toJavaList(String.class); +// List roles = jsonObject.getJSONArray("roles").toJavaList(String.class); +// QueryWrapper query = Wrappers.query(); +// query.in("role_key",roles); +// List roleList = sysRoleService.list(query); +// QueryWrapper menuQueryWrapper = Wrappers.query(); +// menuQueryWrapper.in("perms",functionPerms); +// List menus = sysMenuService.list(menuQueryWrapper); + + WaterResult result = waterRequestUtil.getUserResource(token); + List singleMenus = JSONObject.parseArray(result.getData(), SingleMenu.class); + List singleAllMenus = new ArrayList<>(); + for (SingleMenu singleMenu : singleMenus) { //剔除掉不符合的 + if(singleMenu.getVisible().equals("1")&&singleMenu.getStats().equals("1")) { + singleAllMenus.add(singleMenu); + } + if(!singleMenu.getChildren().isEmpty()){ + List children = singleMenu.getChildren(); + for (SingleMenu child : children) { + if(singleMenu.getVisible().equals("1")&&singleMenu.getStats().equals("1")) { + singleAllMenus.add(child); + } + } + } + } + List collect = singleMenus.stream().map(singleMenu -> singleMenu.getPermissionCode()).collect(Collectors.toList()); QueryWrapper menuQueryWrapper = Wrappers.query(); - query.in("perms",functionPerms); + menuQueryWrapper.in("perms",collect); List menus = sysMenuService.list(menuQueryWrapper); + executorService.submit(new RolePerms(token,menus)); + return AjaxResult.success(menuService.buildMenus(menus)); + } + class RolePerms implements Runnable{ - WaterResult result = waterRequestUtil.getUserResource(token); - List singleUserList = JSONObject.parseArray(result.getData(), SingleMenu.class); + public String token; + public List menus; - return null; + public RolePerms(String token,List menus){ + this.token = token; + this.menus = menus; + } + + @Override + public void run() { + WaterResult waterResult = waterRequestUtil.authUser(token); + String data = waterResult.getData(); + JSONObject jsonObject = JSONObject.parseObject(data); + List functionPerms = jsonObject.getJSONArray("functionPerms").toJavaList(String.class); + List roles = jsonObject.getJSONArray("roles").toJavaList(String.class); + QueryWrapper query = Wrappers.query(); + query.in("role_key",roles); + List roleList = sysRoleService.list(query); + for (SysRole sysRole : roleList) { + for (SysMenu menu : menus) { + SysRoleMenu sysRoleMenu = new SysRoleMenu(); + sysRoleMenu.preInsert(); + sysRoleMenu.setRoleId(sysRole.getId()); + sysRoleMenu.setMenuId(menu.getId()); + sysRoleMenuService.save(sysRoleMenu); + } + } + } } } diff --git a/jwtech-admin/src/main/java/com/kms/web/controller/tool/TestController.java b/jwtech-admin/src/main/java/com/kms/web/controller/tool/TestController.java index f98bed7a..3c80c9e7 100644 --- a/jwtech-admin/src/main/java/com/kms/web/controller/tool/TestController.java +++ b/jwtech-admin/src/main/java/com/kms/web/controller/tool/TestController.java @@ -47,7 +47,7 @@ public class TestController extends BaseController @GetMapping("test") public WaterResult test(){ - WaterResult waterResult = waterRequestUtil.authUser("bearer 0e6d6082-9ae7-4313-b6b1-ea45179eee1e"); + WaterResult waterResult = waterRequestUtil.getUserResource("bearer 0e6d6082-9ae7-4313-b6b1-ea45179eee1e"); String data = waterResult.getData(); // String records = JSONObject.parseObject(data).getString("records"); // List singleUserList = JSONObject.parseArray(records, SingleUser.class); diff --git a/jwtech-admin/src/main/resources/application-test.yml b/jwtech-admin/src/main/resources/application-test.yml index 845f7b69..752ef17e 100644 --- a/jwtech-admin/src/main/resources/application-test.yml +++ b/jwtech-admin/src/main/resources/application-test.yml @@ -257,8 +257,8 @@ water: systemCode: sgc-jg systemName: 水工程应用-水利工程建设管理模块 #请求测试环境网关 -# url: http://19.25.35.204:31190/data_center/gateway/api - url: http://119.25.40.10:31190/data_center/gateway/portal + url: http://19.25.35.204:31190/data_center/gateway/api +# url: http://119.25.40.10:31190/data_center/gateway/portal #应用token paasToken: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzeXN0ZW1JZCI6IjE3MzI3MDMxMTE1NDc0ODIxMTQifQ.4oiD3WBwrxT5z8goAvA9O88vsYVxwaE-8vyQmWl7xbg #应用id