diff --git a/jwtech-admin/src/main/java/com/kms/config/scheduled/WaterScheduled.java b/jwtech-admin/src/main/java/com/kms/config/scheduled/WaterScheduled.java index 4ba9b669..c035137c 100644 --- a/jwtech-admin/src/main/java/com/kms/config/scheduled/WaterScheduled.java +++ b/jwtech-admin/src/main/java/com/kms/config/scheduled/WaterScheduled.java @@ -50,7 +50,7 @@ public class WaterScheduled { SysRoleService roleService; - @Scheduled(cron = "0 0/1 * * * ?") + @Scheduled(cron = "0 0 1 * * ?") public void userScheduled(){ log.info("----------------------开始执行用户同步功能----------------------------"); WaterResult waterResult = waterRequestUtil.usersPage(); @@ -109,7 +109,7 @@ public class WaterScheduled { /** * */ - @Scheduled(cron = "0 0/1 * * * ? ") + @Scheduled(cron = "0 0 0 * * ?") public void orgScheduled(){ log.info("----------------------开始执行部门同步功能----------------------------"); WaterResult waterResult = waterRequestUtil.getOrgPage(); @@ -166,7 +166,7 @@ public class WaterScheduled { } } - @Scheduled(cron = "0 0/1 * * * ?") + @Scheduled(cron = "0 0 0 * * ?") public void roleScheduled(){ log.info("----------------------开始执行角色同步功能----------------------------"); WaterResult rolePage = waterRequestUtil.getRolePage(); 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 32d32a8e..3b47ffe4 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 @@ -18,7 +18,7 @@ public class SingleMenu { private String id; private String iframe;//是否外链 private Integer seq; //排序 - private String stats; //状态 1启用 0停用 + private String status; //状态 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 213db332..cd5394a9 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 @@ -2,6 +2,7 @@ package com.kms.web.controller.system; import cn.dev33.satoken.stp.StpUtil; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.http.HttpResponse; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -21,6 +22,9 @@ import com.jianwei.common.exception.CustomException; import com.jianwei.common.mybaitsplus.BeanToWrapper; import com.jianwei.common.utils.StringUtils; import com.jianwei.common.utils.password.PasswordUtil; +import com.jianwei.ir.Node; +import com.jianwei.ir.boot.KeywordType; +import com.jianwei.thrift.ir.OrderItem; import com.kms.common.utils.UserUtils; import com.kms.config.WaterRequestUtil; import com.kms.config.WaterResult; @@ -29,6 +33,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.CmsTag; import com.kms.system.domain.SysRoleMenu; import com.kms.system.service.SysMenuService; import com.kms.system.service.SysRoleMenuService; @@ -36,7 +41,9 @@ import com.kms.system.service.SysRoleService; import com.kms.system.service.SysUserService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import lombok.SneakyThrows; import lombok.extern.log4j.Log4j2; +import org.apache.commons.lang.SerializationUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.transaction.annotation.Transactional; @@ -49,11 +56,10 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.ArrayList; +import java.util.Arrays; 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.concurrent.*; import java.util.stream.Collectors; /** @@ -173,6 +179,8 @@ public class SysLoginController extends BaseController { private String DOORURL = "http://19.25.35.204:31190/data_center/gateway/api"; + + /** * 门户单点认证登录 * @return @@ -182,12 +190,15 @@ public class SysLoginController extends BaseController { HttpServletResponse response, @RequestParam(name = "token")String token) throws IOException { WaterResult waterResult; + CountDownLatch countDownLatch = new CountDownLatch(1); try { waterResult = waterRequestUtil.authUser(token); }catch (Exception e){ log.error(e.getMessage()); throw new CustomException("登录失败"); } + //异步执行菜单同步 + executorService.submit(new RolePerms(token,waterResult,countDownLatch)); JSONObject jsonObject = JSONObject.parseObject(waterResult.getData()); String user = jsonObject.getString("user"); JSONObject userJsonObject = JSONObject.parseObject(user); @@ -217,6 +228,11 @@ public class SysLoginController extends BaseController { ajax.put("authorization",token); RedirectView redirectView = new RedirectView(redirect+"?token="+tokenValue+"&authorization="+token); ModelAndView modelAndView = new ModelAndView(redirectView); + try { + countDownLatch.await(); + } catch (InterruptedException e) { + e.printStackTrace(); + } return modelAndView; } @@ -234,8 +250,8 @@ public class SysLoginController extends BaseController { * @param token * @return */ - @GetMapping("/getSingleRotes/{token}") - public AjaxResult getSingleRotes(@PathVariable String token){ +// @GetMapping("/getSingleRotes/{token}") +// public AjaxResult getSingleRotes(@PathVariable String token){ // WaterResult waterResult = waterRequestUtil.authUser(token); // String data = waterResult.getData(); // JSONObject jsonObject = JSONObject.parseObject(data); @@ -247,56 +263,64 @@ public class SysLoginController extends BaseController { // 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(); - menuQueryWrapper.in("perms",collect); - List menus = sysMenuService.list(menuQueryWrapper); - executorService.submit(new RolePerms(token,menus)); - return AjaxResult.success(menuService.buildMenus(menus)); - } + +// +// return AjaxResult.success(menuService.buildMenus(menus)); +// } class RolePerms implements Runnable{ public String token; + public WaterResult waterResult; + public CountDownLatch countDownLatch; - public List menus; - - public RolePerms(String token,List menus){ + public RolePerms(String token,WaterResult waterResult,CountDownLatch countDownLatch){ this.token = token; - this.menus = menus; + this.waterResult = waterResult; + this.countDownLatch = countDownLatch; } @Override @Transactional public void run() { - WaterResult waterResult = waterRequestUtil.authUser(token); + try { + WaterResult result = waterRequestUtil.getUserResource(token); + List singleMenus = JSONObject.parseArray(result.getData(), SingleMenu.class); + List singleAllMenus = new ArrayList<>(); + if(CollectionUtil.isNotEmpty(singleMenus)) { + for (SingleMenu singleMenu : singleMenus) { //剔除掉不符合的 + if (singleMenu.getVisible().equals("1") && singleMenu.getStatus().equals("1")) { + singleAllMenus.add(singleMenu); + } + if (!singleMenu.getChildren().isEmpty()) { + List children = singleMenu.getChildren(); + for (SingleMenu child : children) { + if (singleMenu.getVisible().equals("1") && singleMenu.getStatus().equals("1")) { + singleAllMenus.add(child); + } + } + } + } + } + List collect = singleAllMenus.stream().map(singleMenu -> singleMenu.getPermissionCode()).collect(Collectors.toList()); + QueryWrapper menuQueryWrapper = Wrappers.query(); + menuQueryWrapper.in("perms",collect); + List menus = sysMenuService.list(menuQueryWrapper); +// 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); - if (!roleList.isEmpty()) { + JSONObject datajson = JSONObject.parseObject(data); +// List functionPerms = datajson.getJSONArray("functionPerms").toJavaList(String.class); + List roles = datajson.getJSONArray("roles").toJavaList(String.class); + QueryWrapper sysRoleQueryWrapper = Wrappers.query(); + sysRoleQueryWrapper.in("role_key", roles); + List roleList = sysRoleService.list(sysRoleQueryWrapper); + if (CollectionUtil.isNotEmpty(roleList)) { QueryWrapper sysRoleMenuQueryWrapper = Wrappers.query(); - query.in("role_id", roleList.stream().map(role -> role.getId()).collect(Collectors.toList())); - sysRoleMenuService.remove(sysRoleMenuQueryWrapper); + List rids = roleList.stream().map(role -> role.getId()).collect(Collectors.toList()); + if(CollectionUtil.isNotEmpty(rids)) { + sysRoleMenuQueryWrapper.in("role_id",rids); + sysRoleMenuService.remove(sysRoleMenuQueryWrapper); + } for (SysRole sysRole : roleList) { for (SysMenu menu : menus) { SysRoleMenu sysRoleMenu = new SysRoleMenu(); @@ -307,6 +331,11 @@ public class SysLoginController extends BaseController { } } } + }catch (Exception e){ + log.error("同步菜单权限失败:"+e.getMessage()); + }finally { + countDownLatch.countDown(); + } } } diff --git a/jwtech-framework/src/main/java/com/jianwei/common/core/domain/entity/SysMenu.java b/jwtech-framework/src/main/java/com/jianwei/common/core/domain/entity/SysMenu.java index 7b4b134f..09a6daf0 100644 --- a/jwtech-framework/src/main/java/com/jianwei/common/core/domain/entity/SysMenu.java +++ b/jwtech-framework/src/main/java/com/jianwei/common/core/domain/entity/SysMenu.java @@ -5,7 +5,9 @@ import java.util.List; import javax.validation.constraints.NotBlank; import javax.validation.constraints.Size; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; +import com.jianwei.common.mybaitsplus.NoQuery; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; import com.jianwei.common.core.domain.BaseEntity; @@ -25,7 +27,7 @@ public class SysMenu extends BaseEntity private String menuName; /** 父菜单名称 */ - private String parentName; +// private String parentName; /** 父菜单ID */ private String parentId; @@ -58,6 +60,8 @@ public class SysMenu extends BaseEntity private String icon; /** 子菜单 */ + @TableField(exist = false) + @NoQuery private List children = new ArrayList(); @@ -73,15 +77,15 @@ public class SysMenu extends BaseEntity this.menuName = menuName; } - public String getParentName() - { - return parentName; - } - - public void setParentName(String parentName) - { - this.parentName = parentName; - } +// public String getParentName() +// { +// return parentName; +// } +// +// public void setParentName(String parentName) +// { +// this.parentName = parentName; +// } public String getParentId() {