From 45aeafe1b36276cedf22879b193693131b51a7c4 Mon Sep 17 00:00:00 2001 From: hxh <762326930@qq.com> Date: Wed, 10 Apr 2024 16:28:17 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E9=80=82=E9=85=8D=E9=97=A8=E6=88=B7?= =?UTF-8?q?=E6=9D=83=E9=99=90=E4=BD=93=E7=B3=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/system/SysLoginController.java | 479 ++++++++---------- .../com/kms/web/utils/WaterRequestUtil.java | 56 +- .../web/utils/scheduled/WaterScheduled.java | 5 +- .../common/core/domain/entity/SysUser.java | 104 +--- .../web/service/SysPermissionService.java | 125 +++-- .../kms/system/service/SysMenuService.java | 188 +++---- .../kms/system/service/SysUserService.java | 26 +- 7 files changed, 434 insertions(+), 549 deletions(-) diff --git a/shuili-admin/src/main/java/com/kms/web/controller/system/SysLoginController.java b/shuili-admin/src/main/java/com/kms/web/controller/system/SysLoginController.java index 03f8bd3d..fff9b451 100644 --- a/shuili-admin/src/main/java/com/kms/web/controller/system/SysLoginController.java +++ b/shuili-admin/src/main/java/com/kms/web/controller/system/SysLoginController.java @@ -6,9 +6,14 @@ import cn.hutool.core.collection.CollectionUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.kms.system.domain.SysRoleMenu; +import com.kms.common.utils.UserUtils; +import com.kms.framework.manager.AsyncManager; +import com.kms.framework.manager.factory.AsyncFactory; +import com.kms.framework.web.service.SysPermissionService; +import com.kms.system.service.SysMenuService; import com.kms.system.service.SysRoleMenuService; import com.kms.system.service.SysRoleService; +import com.kms.system.service.SysUserService; import com.kms.web.utils.WaterRequestUtil; import com.kms.web.utils.WaterResult; import com.kms.web.utils.singleDomain.SingleMenu; @@ -17,7 +22,6 @@ import com.shuili.common.constant.YesOrNo; import com.shuili.common.core.controller.BaseController; import com.shuili.common.core.domain.AjaxResult; import com.shuili.common.core.domain.entity.SysMenu; -import com.shuili.common.core.domain.entity.SysRole; import com.shuili.common.core.domain.entity.SysUser; import com.shuili.common.core.domain.model.LoginBody; import com.shuili.common.core.redis.RedisCache; @@ -27,12 +31,6 @@ import com.shuili.common.exception.CustomException; import com.shuili.common.mybaitsplus.BeanToWrapper; import com.shuili.common.utils.StringUtils; import com.shuili.common.utils.password.PasswordUtil; -import com.kms.common.utils.UserUtils; -import com.kms.framework.manager.AsyncManager; -import com.kms.framework.manager.factory.AsyncFactory; -import com.kms.framework.web.service.SysPermissionService; -import com.kms.system.service.SysMenuService; -import com.kms.system.service.SysUserService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.log4j.Log4j2; @@ -64,33 +62,33 @@ import java.util.stream.Collectors; @Api("用户登录") public class SysLoginController extends BaseController { - @Autowired - private SysMenuService menuService; + @Autowired + private SysMenuService menuService; - @Autowired - private SysPermissionService permissionService; - @Autowired - private SysUserService userService; - @Autowired - private RedisCache redisCache; - @Autowired - WaterRequestUtil waterRequestUtil; - @Value("${water.redirect:}") - private String redirect; + @Autowired + private SysPermissionService permissionService; + @Autowired + private SysUserService userService; + @Autowired + private RedisCache redisCache; + @Autowired + WaterRequestUtil waterRequestUtil; + @Value("${water.redirect:}") + private String redirect; - @PostMapping("/login") - @ApiOperation("登录接口") - public AjaxResult login(@RequestBody LoginBody loginBody) { + @PostMapping("/login") + @ApiOperation("登录接口") + public AjaxResult login(@RequestBody LoginBody loginBody) { - if(StringUtils.isEmpty(loginBody.getUsername())){ - log.info("登录用户:{} 不存在.", loginBody.getUsername()); - AsyncManager.me().execute(AsyncFactory.recordLogininfor(loginBody.getUsername(), Constants.LOGIN_FAIL, "用户不存在")); - throw new BaseException("对不起,请输入您的账号!!"); - } - AjaxResult ajax = AjaxResult.success(); + if (StringUtils.isEmpty(loginBody.getUsername())) { + log.info("登录用户:{} 不存在.", loginBody.getUsername()); + AsyncManager.me().execute(AsyncFactory.recordLogininfor(loginBody.getUsername(), Constants.LOGIN_FAIL, "用户不存在")); + throw new BaseException("对不起,请输入您的账号!!"); + } + AjaxResult ajax = AjaxResult.success(); - // 验证码校验 - //TODO + // 验证码校验 + //TODO // String verifyKey = Constants.CAPTCHA_CODE_KEY + loginBody.getUuid(); // if(!loginBody.getCode().equals(redisCache.getCacheObject(verifyKey))) { // redisCache.deleteObject(verifyKey); @@ -99,129 +97,131 @@ public class SysLoginController extends BaseController { // } - SysUser user = new SysUser(); - user.setUserName(loginBody.getUsername()); - user.setIsPcUser(YesOrNo.NO); - List selectUserList = userService.list(BeanToWrapper.getWrapper(user)); - if (StringUtils.isEmpty(selectUserList)) { - log.info("登录用户:{} 不存在.", loginBody.getUsername()); - AsyncManager.me().execute(AsyncFactory.recordLogininfor(loginBody.getUsername(), Constants.LOGIN_FAIL, "用户不存在")); - throw new BaseException("对不起,您的账号:" + loginBody.getUsername() + " 不存在"); - } - user = selectUserList.get(0); - if (UserStatus.DELETED.getCode().equals(user.getDelFlag())) { - log.info("登录用户:{} 已被删除.", loginBody.getUsername()); - AsyncManager.me().execute(AsyncFactory.recordLogininfor(loginBody.getUsername(), Constants.LOGIN_FAIL, "账户已删除")); - throw new BaseException("对不起,您的账号:" + loginBody.getUsername() + " 已被删除"); - } else if (UserStatus.DISABLE.getCode().equals(user.getStatus())) { - log.info("登录用户:{} 已被停用.", loginBody.getUsername()); - AsyncManager.me().execute(AsyncFactory.recordLogininfor(loginBody.getUsername(), Constants.LOGIN_FAIL, "账户已停用")); - throw new BaseException("对不起,您的账号:" + loginBody.getUsername() + " 已停用"); - } + SysUser user = new SysUser(); + user.setUserName(loginBody.getUsername()); + user.setIsPcUser(YesOrNo.NO); + List selectUserList = userService.list(BeanToWrapper.getWrapper(user)); + if (StringUtils.isEmpty(selectUserList)) { + log.info("登录用户:{} 不存在.", loginBody.getUsername()); + AsyncManager.me().execute(AsyncFactory.recordLogininfor(loginBody.getUsername(), Constants.LOGIN_FAIL, "用户不存在")); + throw new BaseException("对不起,您的账号:" + loginBody.getUsername() + " 不存在"); + } + user = selectUserList.get(0); + if (UserStatus.DELETED.getCode().equals(user.getDelFlag())) { + log.info("登录用户:{} 已被删除.", loginBody.getUsername()); + AsyncManager.me().execute(AsyncFactory.recordLogininfor(loginBody.getUsername(), Constants.LOGIN_FAIL, "账户已删除")); + throw new BaseException("对不起,您的账号:" + loginBody.getUsername() + " 已被删除"); + } else if (UserStatus.DISABLE.getCode().equals(user.getStatus())) { + log.info("登录用户:{} 已被停用.", loginBody.getUsername()); + AsyncManager.me().execute(AsyncFactory.recordLogininfor(loginBody.getUsername(), Constants.LOGIN_FAIL, "账户已停用")); + throw new BaseException("对不起,您的账号:" + loginBody.getUsername() + " 已停用"); + } - // 判断密码校验 - if(PasswordUtil.validatePassword(loginBody.getPassword(), user.getPassword())) { - AsyncManager.me().execute(AsyncFactory.recordLogininfor(loginBody.getUsername(), Constants.LOGIN_SUCCESS, "登录成功")); - StpUtil.login(user.getId()); - StpUtil.getSession().set("shuili-user",user); - ajax.put("token",StpUtil.getTokenValue()); - }else { - AsyncManager.me().execute(AsyncFactory.recordLogininfor(loginBody.getUsername(), Constants.LOGIN_FAIL, "账号或密码错误")); - throw new BaseException("对不起,您的账号或密码错误"); - } - return ajax; - } + // 判断密码校验 + if (PasswordUtil.validatePassword(loginBody.getPassword(), user.getPassword())) { + AsyncManager.me().execute(AsyncFactory.recordLogininfor(loginBody.getUsername(), Constants.LOGIN_SUCCESS, "登录成功")); + StpUtil.login(user.getId()); + StpUtil.getSession().set("shuili-user", user); + ajax.put("token", StpUtil.getTokenValue()); + } else { + AsyncManager.me().execute(AsyncFactory.recordLogininfor(loginBody.getUsername(), Constants.LOGIN_FAIL, "账号或密码错误")); + throw new BaseException("对不起,您的账号或密码错误"); + } + return ajax; + } - /** - * 获取用户信息 - * - * @return 用户信息 - */ - @ApiOperation("获取挡路用户信息") - @GetMapping("getInfo") - public AjaxResult getInfo() { - SysUser user = UserUtils.getUser(); - // 角色集合 - Set roles = permissionService.getRolePermission(user); - // 权限集合 - Set permissions = permissionService.getMenuPermission(user); - AjaxResult ajax = AjaxResult.success(); + /** + * 获取用户信息 + * + * @return 用户信息 + */ + @ApiOperation("获取挡路用户信息") + @GetMapping("getInfo") + public AjaxResult getInfo() { + SysUser user = UserUtils.getUser(); + // 角色集合 + Set roles = permissionService.getRolePermission(user); + // 权限集合 + Set permissions = permissionService.getMenuPermission(user); + AjaxResult ajax = AjaxResult.success(); - ajax.put("user", user); - ajax.put("roles", roles); - ajax.put("permissions", permissions); - // 判断是否需要展示创建索引按钮 + ajax.put("user", user); + ajax.put("roles", roles); + ajax.put("permissions", permissions); + // 判断是否需要展示创建索引按钮 - return ajax; - } + return ajax; + } - /** - * 获取路由信息 - * - * @return 路由信息 - */ - @GetMapping("getRouters") - public AjaxResult getRouters() { - // 用户信息 - SysUser user = UserUtils.getUser(); - List menus = menuService.selectMenuTreeByUserId(user.getId()); - return AjaxResult.success(menuService.buildMenus(menus)); - } + /** + * 获取路由信息 + * + * @return 路由信息 + */ + @GetMapping("getRouters") + public AjaxResult getRouters() { + // 用户信息 + SysUser user = UserUtils.getUser(); + List menus = menuService.selectMenuTreeByUserId(user.getId()); + menus.addAll(permissionService.getUserMenuFromPortal(user.getId())); + return AjaxResult.success(menuService.buildMenus(menus)); + } - /** - * 门户单点认证登录 - * @return - */ - @GetMapping("/signOnLogin") - public ModelAndView signOnLogin(HttpServletRequest request, - HttpServletResponse response, - @RequestParam(name = "page",required = false) String page, - @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); - String uid = userJsonObject.getString("id"); - QueryWrapper query = Wrappers.query(); - query.eq("single_user_id",uid); - List list = userService.list(query); - if(CollectionUtil.isEmpty(list)){ - throw new CustomException("数据异常,登录失败"); - } - AjaxResult ajax = AjaxResult.success(); - SysUser sysUser = list.get(0); - if (UserStatus.DELETED.getCode().equals(sysUser.getDelFlag())) { - log.info(" :{} 已被删除.", sysUser.getUserName()); - AsyncManager.me().execute(AsyncFactory.recordLogininfor(sysUser.getUserName(), Constants.LOGIN_FAIL, "账户已删除")); - throw new BaseException("对不起,您的账号:" + sysUser.getUserName() + " 已被删除"); - } else if (UserStatus.DISABLE.getCode().equals(sysUser.getStatus())) { - log.info("登录用户:{} 已被停用.", sysUser.getUserName()); - AsyncManager.me().execute(AsyncFactory.recordLogininfor(sysUser.getUserName(), Constants.LOGIN_FAIL, "账户已停用")); - throw new BaseException("对不起,您的账号:" + sysUser.getUserName() + " 已停用"); - } - AsyncManager.me().execute(AsyncFactory.recordLogininfor(sysUser.getUserName(), Constants.LOGIN_SUCCESS, "登录成功")); - StpUtil.login(sysUser.getId()); - StpUtil.getSession().set("jianwei-user",sysUser); - String tokenValue = StpUtil.getTokenValue(); - userService.updateWithReids(sysUser); - ajax.put("token",tokenValue); - ajax.put("authorization",token); - try { - countDownLatch.await(); - } catch (InterruptedException e) { - e.printStackTrace(); - } + /** + * 门户单点认证登录 + * + * @return + */ + @GetMapping("/signOnLogin") + public ModelAndView signOnLogin(HttpServletRequest request, + HttpServletResponse response, + @RequestParam(name = "page", required = false) String page, + @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("登录失败"); + } + JSONObject jsonObject = JSONObject.parseObject(waterResult.getData()); + String user = jsonObject.getString("user"); + JSONObject userJsonObject = JSONObject.parseObject(user); + String uid = userJsonObject.getString("id"); + QueryWrapper query = Wrappers.query(); + query.eq("single_user_id", uid); + List list = userService.list(query); + if (CollectionUtil.isEmpty(list)) { + throw new CustomException("数据异常,登录失败"); + } + AjaxResult ajax = AjaxResult.success(); + SysUser sysUser = list.get(0); + if (UserStatus.DELETED.getCode().equals(sysUser.getDelFlag())) { + log.info(" :{} 已被删除.", sysUser.getUserName()); + AsyncManager.me().execute(AsyncFactory.recordLogininfor(sysUser.getUserName(), Constants.LOGIN_FAIL, "账户已删除")); + throw new BaseException("对不起,您的账号:" + sysUser.getUserName() + " 已被删除"); + } else if (UserStatus.DISABLE.getCode().equals(sysUser.getStatus())) { + log.info("登录用户:{} 已被停用.", sysUser.getUserName()); + AsyncManager.me().execute(AsyncFactory.recordLogininfor(sysUser.getUserName(), Constants.LOGIN_FAIL, "账户已停用")); + throw new BaseException("对不起,您的账号:" + sysUser.getUserName() + " 已停用"); + } + //异步执行菜单同步 + executorService.submit(new RolePerms(token, waterResult, countDownLatch, sysUser.getId())); + AsyncManager.me().execute(AsyncFactory.recordLogininfor(sysUser.getUserName(), Constants.LOGIN_SUCCESS, "登录成功")); + StpUtil.login(sysUser.getId()); + StpUtil.getSession().set("jianwei-user", sysUser); + String tokenValue = StpUtil.getTokenValue(); + userService.updateWithReids(sysUser); + ajax.put("token", tokenValue); + ajax.put("authorization", token); + try { + countDownLatch.await(); + } catch (InterruptedException e) { + e.printStackTrace(); + } // if(StringUtils.isEmpty(page)){ // List menus = menuService.selectMenuTreeByUserId(sysUser.getId()); // List routerVos = menuService.buildMenus(menus); @@ -240,25 +240,26 @@ public class SysLoginController extends BaseController { // } // } // } - RedirectView redirectView = new RedirectView(redirect+"?token="+tokenValue+"&page="+page); - ModelAndView modelAndView = new ModelAndView(redirectView); - return modelAndView; - } + RedirectView redirectView = new RedirectView(redirect + "?token=" + tokenValue + "&page=" + page); + ModelAndView modelAndView = new ModelAndView(redirectView); + return modelAndView; + } - @Autowired - SysRoleService sysRoleService; - @Autowired - SysRoleMenuService sysRoleMenuService; - @Autowired - SysMenuService sysMenuService; + @Autowired + SysRoleService sysRoleService; + @Autowired + SysRoleMenuService sysRoleMenuService; + @Autowired + SysMenuService sysMenuService; - ExecutorService executorService = Executors.newFixedThreadPool(5); + ExecutorService executorService = Executors.newFixedThreadPool(5); - /** - * 根据用户token获取资源权限 - * @param - * @return - */ + /** + * 根据用户token获取资源权限 + * + * @param + * @return + */ // @GetMapping("/getSingleRotes/{token}") // public AjaxResult getSingleRotes(@PathVariable String token){ // WaterResult waterResult = waterRequestUtil.authUser(token); @@ -277,105 +278,69 @@ public class SysLoginController extends BaseController { // return AjaxResult.success(menuService.buildMenus(menus)); // } - class RolePerms implements Runnable{ + class RolePerms implements Runnable { + + private final String token; + private final WaterResult waterResult; + private final CountDownLatch countDownLatch; + private final String userId; - public String token; - public WaterResult waterResult; - public CountDownLatch countDownLatch; + public RolePerms(String token, WaterResult waterResult, CountDownLatch countDownLatch, String userId) { + this.token = token; + this.waterResult = waterResult; + this.countDownLatch = countDownLatch; + this.userId = userId; + } - public RolePerms(String token,WaterResult waterResult,CountDownLatch countDownLatch){ - this.token = token; - this.waterResult = waterResult; - this.countDownLatch = countDownLatch; - } + @Override + @Transactional + public void run() { + try { + WaterResult result = waterRequestUtil.getUserResource(token); + List singleMenus = JSONObject.parseArray(result.getData(), SingleMenu.class); + List singleAllMenus = new ArrayList<>(); + setChildren(singleMenus, singleAllMenus); + String data = waterResult.getData(); + JSONObject datajson = JSONObject.parseObject(data); + List functionPerms = datajson.getJSONArray("functionPerms").toJavaList(String.class); + List menuCode = singleMenus.stream().map(SingleMenu::getCode).distinct().collect(Collectors.toList()); + permissionService.setUserPermissionFromPortal(userId, functionPerms); + permissionService.setUserMenuFromPortal(userId, menuCode); - @Override - @Transactional - public void run() { - try { - WaterResult result = waterRequestUtil.getUserResource(token); - List singleMenus = JSONObject.parseArray(result.getData(), SingleMenu.class); - List singleAllMenus = new ArrayList<>(); - setChildren(singleMenus,singleAllMenus); - String data = waterResult.getData(); - JSONObject datajson = JSONObject.parseObject(data); - List functionPerms = datajson.getJSONArray("functionPerms").toJavaList(String.class); - List collect = singleAllMenus.stream().map(singleMenu -> singleMenu.getPermissionCode()).collect(Collectors.toList()); - collect.addAll(functionPerms); - QueryWrapper menuQueryWrapper = Wrappers.query(); - menuQueryWrapper.in("perms",collect); - List menus = sysMenuService.list(menuQueryWrapper); - List menuids = menus.stream().map(menu -> { - return menu.getId(); - }).collect(Collectors.toList()); -// WaterResult waterResult = waterRequestUtil.authUser(token); - List roles = datajson.getJSONArray("roles").toJavaList(String.class); - log.info("获取的权限有:"+roles); - if(CollectionUtil.isNotEmpty(roles)) { - QueryWrapper sysRoleQueryWrapper = Wrappers.query(); - sysRoleQueryWrapper.in("role_key", roles); - List roleList = sysRoleService.list(sysRoleQueryWrapper); - if (CollectionUtil.isNotEmpty(roleList)) { - List rids = roleList.stream().map(role -> role.getId()).collect(Collectors.toList()); - for (SysRole sysRole : roleList) { - QueryWrapper sysRoleMenuQueryWrapper = Wrappers.query(); - if (CollectionUtil.isNotEmpty(rids)) { - sysRoleMenuQueryWrapper.eq("role_id", sysRole.getId()); - List list = sysRoleMenuService.list(sysRoleMenuQueryWrapper); - List menutwoids = list.stream().map(menu -> { - return menu.getMenuId(); - }).collect(Collectors.toList()); - List disjunction = (List) CollectionUtil.disjunction(menuids, menutwoids); - menuids.removeAll(menutwoids); - if(CollectionUtil.isNotEmpty(disjunction)) { //存在不存在的按钮 进行删除 - sysRoleMenuQueryWrapper.in("menu_id", disjunction); - sysRoleMenuService.remove(sysRoleMenuQueryWrapper); - } - } - for (String menu : menuids) { - SysRoleMenu sysRoleMenu = new SysRoleMenu(); - sysRoleMenu.preInsert(); - sysRoleMenu.setRoleId(sysRole.getId()); - sysRoleMenu.setMenuId(menu); - sysRoleMenuService.save(sysRoleMenu); - } - } - } - } - }catch (Exception e){ - log.error("同步菜单权限失败:"+e.getMessage()); - throw e; - }finally { - countDownLatch.countDown(); - } - } - } + } catch (Exception e) { + log.error("同步菜单权限失败:" + e.getMessage()); + throw e; + } finally { + countDownLatch.countDown(); + } + } + } - public static void setChildren(List singleMenus,List singleAllMenus){ - if(CollectionUtil.isNotEmpty(singleMenus)) { - for (SingleMenu singleMenu : - singleMenus) { //剔除掉不符合的 - if(singleMenu.getVisible()!=null&&singleMenu.getStatus()!=null) { - if (singleMenu.getStatus().equals("1")) { - singleAllMenus.add(singleMenu); - } - } - if (CollectionUtil.isNotEmpty(singleMenu.getChildren())) { - List children = singleMenu.getChildren(); - for (SingleMenu child : children) { - if(singleMenu.getVisible()!=null&&singleMenu.getStatus()!=null) { - if (singleMenu.getStatus().equals("1")) { - singleAllMenus.add(child); - } - } - if(CollectionUtil.isNotEmpty(child.getChildren())) { - setChildren(child.getChildren(),singleAllMenus); - } - } - } - } - } - } + public static void setChildren(List singleMenus, List singleAllMenus) { + if (CollectionUtil.isNotEmpty(singleMenus)) { + for (SingleMenu singleMenu : + singleMenus) { //剔除掉不符合的 + if (singleMenu.getVisible() != null && singleMenu.getStatus() != null) { + if (singleMenu.getStatus().equals("1")) { + singleAllMenus.add(singleMenu); + } + } + if (CollectionUtil.isNotEmpty(singleMenu.getChildren())) { + List children = singleMenu.getChildren(); + for (SingleMenu child : children) { + if (singleMenu.getVisible() != null && singleMenu.getStatus() != null) { + if (singleMenu.getStatus().equals("1")) { + singleAllMenus.add(child); + } + } + if (CollectionUtil.isNotEmpty(child.getChildren())) { + setChildren(child.getChildren(), singleAllMenus); + } + } + } + } + } + } } diff --git a/shuili-admin/src/main/java/com/kms/web/utils/WaterRequestUtil.java b/shuili-admin/src/main/java/com/kms/web/utils/WaterRequestUtil.java index 67759a5b..02616363 100644 --- a/shuili-admin/src/main/java/com/kms/web/utils/WaterRequestUtil.java +++ b/shuili-admin/src/main/java/com/kms/web/utils/WaterRequestUtil.java @@ -136,9 +136,11 @@ public class WaterRequestUtil { HashMap query = new HashMap<>(); query.put("code",systemCode); query.put("name",systemName); - HttpResponse response = post.body(JSONObject.toJSONString(query)) - .execute(); - String body = response.body(); + String body; + try (HttpResponse response = post.body(JSONObject.toJSONString(query)) + .execute()) { + body = response.body(); + } WaterResult waterResult = JSONObject.parseObject(body, WaterResult.class); isSuccess(waterResult); //{ @@ -175,11 +177,13 @@ public class WaterRequestUtil { */ public WaterResult signOn(String userId){ HttpRequest get = createGet(userUrl,singOnServiceId,singOnAppsecret); - HttpResponse response = get.header("x-tsp-target", paasId) + String body; + try (HttpResponse response = get.header("x-tsp-target", paasId) .header("x-tsp-uid-type", "id") .header("x-tsp-uid", userId) - .execute(); - String body = response.body(); + .execute()) { + body = response.body(); + } return JSONObject.parseObject(body, WaterResult.class); } @@ -191,9 +195,11 @@ public class WaterRequestUtil { public WaterResult authUser(String authorization){ log.info("--------请求统一门户用户验证,请求地址为:"+userUrl); HttpRequest get = createGet(userUrl,authUserServiceId,authUserAppsecret); - HttpResponse response = get.header("Authorization", authorization) - .execute(); - String body = response.body(); + String body; + try (HttpResponse response = get.header("Authorization", authorization) + .execute()) { + body = response.body(); + } WaterResult waterResult = JSONObject.parseObject(body, WaterResult.class); isSuccess(waterResult); return waterResult; @@ -207,9 +213,11 @@ public class WaterRequestUtil { hashMap.put("size",100); hashMap.put("systemCode",systemCode); HttpRequest get = createPost(orgUrl,orgServiceId,orgAppsecret); - HttpResponse response = get.body(JSONObject.toJSONString(hashMap)) - .execute(); - String body = response.body(); + String body; + try (HttpResponse response = get.body(JSONObject.toJSONString(hashMap)) + .execute()) { + body = response.body(); + } WaterResult waterResult = JSONObject.parseObject(body, WaterResult.class); isSuccess(waterResult); //{ @@ -234,9 +242,11 @@ public class WaterRequestUtil { HttpRequest get = createPost(resourceUrl+"?systemCode="+systemCode,resourceServiceId,resourceAppsecret); // HttpRequest get = createPost(resourceUrl,resourceServiceId,resourceAppsecret); get.header("Authorization",authorization); - HttpResponse response = get - .execute(); - String body = response.body(); + String body; + try (HttpResponse response = get + .execute()) { + body = response.body(); + } WaterResult waterResult = JSONObject.parseObject(body, WaterResult.class); isSuccess(waterResult); //{\"total\":1,\"size\":100,\"records\":[{\"area\":\"440000\",\"systemList\":[{\"area\":\"440000\",\"code\":\"sgc-jg\",\"name\":\"水工程应用-水利工程建设管理模块\",\"id\":\"1732648267643097090\"}],\"code\":\"YW00013\",\"level\":\"1d\",\"dataConfig\":\"none\",\"type\":\"BUSINESS\",\"posts\":[],\"users\":[{\"id\":\"20231225000006\"},{\"id\":\"20240119000002\"}],\"name\":\"水利工程应用-水利工程建设管理模块角色\",\"id\":\"20231213000001\",\"category\":\"BUSINESS\",\"businesses\":[{\"parent\":\"1762458920822599682\",\"businessCode\":\"YWSLGCJSGL0008\",\"parentName\":\"水利工程建设管理\",\"businessName\":\"水利工程建设管理\",\"description\":\"\",\"id\":\"1705128209926942721\",\"delFlag\":0}],\"status\":\"1\"}],\"page\":1} @@ -251,9 +261,11 @@ public class WaterRequestUtil { hashMap.put("size",100); hashMap.put("systemCode",systemCode); HttpRequest get = createPost(roleUrl,roleServiceId,roleAppsecret); - HttpResponse response = get.body(JSONObject.toJSONString(hashMap)) - .execute(); - String body = response.body(); + String body; + try (HttpResponse response = get.body(JSONObject.toJSONString(hashMap)) + .execute()) { + body = response.body(); + } WaterResult waterResult = JSONObject.parseObject(body, WaterResult.class); isSuccess(waterResult); //{\"total\":1,\"size\":100,\"records\":[{\"area\":\"440000\",\"systemList\":[{\"area\":\"440000\",\"code\":\"sgc-jg\",\"name\":\"水工程应用-水利工程建设管理模块\",\"id\":\"1732648267643097090\"}],\"code\":\"YW00013\",\"level\":\"1d\",\"dataConfig\":\"none\",\"type\":\"BUSINESS\",\"posts\":[],\"users\":[{\"id\":\"20231225000006\"},{\"id\":\"20240119000002\"}],\"name\":\"水利工程应用-水利工程建设管理模块角色\",\"id\":\"20231213000001\",\"category\":\"BUSINESS\",\"businesses\":[{\"parent\":\"1762458920822599682\",\"businessCode\":\"YWSLGCJSGL0008\",\"parentName\":\"水利工程建设管理\",\"businessName\":\"水利工程建设管理\",\"description\":\"\",\"id\":\"1705128209926942721\",\"delFlag\":0}],\"status\":\"1\"}],\"page\":1} @@ -268,9 +280,11 @@ public class WaterRequestUtil { hashMap.put("size",100); hashMap.put("systemCode",systemCode); HttpRequest get = createPost(usersUrl,usersServiceId,usersAppsecret); - HttpResponse response = get.body(JSONObject.toJSONString(hashMap)) - .execute(); - String body = response.body(); + String body; + try (HttpResponse response = get.body(JSONObject.toJSONString(hashMap)) + .execute()) { + body = response.body(); + } WaterResult waterResult = JSONObject.parseObject(body, WaterResult.class); isSuccess(waterResult); return waterResult; diff --git a/shuili-admin/src/main/java/com/kms/web/utils/scheduled/WaterScheduled.java b/shuili-admin/src/main/java/com/kms/web/utils/scheduled/WaterScheduled.java index 9feb029e..1b83589c 100644 --- a/shuili-admin/src/main/java/com/kms/web/utils/scheduled/WaterScheduled.java +++ b/shuili-admin/src/main/java/com/kms/web/utils/scheduled/WaterScheduled.java @@ -61,7 +61,7 @@ public class WaterScheduled { QueryWrapper query = Wrappers.query(); query.eq("single_user_id",id); SysUser user = userService.getOne(query,false); - Boolean flag = (user==null); + boolean flag = (user==null); if(flag){ user = new SysUser(); user.preInsert(); @@ -103,8 +103,7 @@ public class WaterScheduled { }else { user.setStatus("1"); } - List collect = singleUser.getRoleList().stream().map(singleRole -> singleRole.getId()).collect(Collectors.toList()); - user.setRoleIds(collect.toArray(new String[collect.size()])); + user.setRoleIds(singleUser.getRoleList().stream().map(SingleRole::getId).toArray(String[]::new)); if(flag){ userService.singleInsertUser(user); }else { diff --git a/shuili-framework/src/main/java/com/shuili/common/core/domain/entity/SysUser.java b/shuili-framework/src/main/java/com/shuili/common/core/domain/entity/SysUser.java index d350ce45..604fb9d2 100644 --- a/shuili-framework/src/main/java/com/shuili/common/core/domain/entity/SysUser.java +++ b/shuili-framework/src/main/java/com/shuili/common/core/domain/entity/SysUser.java @@ -9,6 +9,8 @@ import com.shuili.common.annotation.Excel; import com.shuili.common.annotation.Excel.Type; import com.shuili.common.core.domain.BaseEntity; import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.Getter; import javax.validation.constraints.Email; import javax.validation.constraints.NotBlank; @@ -21,6 +23,7 @@ import java.util.List; * * @author shuili */ +@EqualsAndHashCode(callSuper = true) @TableName("sys_user") @Data public class SysUser extends BaseEntity @@ -117,6 +120,7 @@ public class SysUser extends BaseEntity private String oldPassword; private String isFirst;//1首次登陆 0 非首次登陆 + @Getter @Excel(name = "邀请人") private String invitee; //邀请人 @@ -134,10 +138,7 @@ public class SysUser extends BaseEntity private String md5; - public String getInvitee() { - return invitee; - } - public void setInvitee(String invitee) { + public void setInvitee(String invitee) { this.invitee = invitee; } public String getRoleName() { @@ -274,101 +275,6 @@ public class SysUser extends BaseEntity return password; } - public void setPassword(String password) - { - this.password = password; - } - - public String getSalt() - { - return salt; - } - - public void setSalt(String salt) - { - this.salt = salt; - } - - public String getStatus() - { - return status; - } - - public void setStatus(String status) - { - this.status = status; - } - - public String getDelFlag() - { - return delFlag; - } - - public void setDelFlag(String delFlag) - { - this.delFlag = delFlag; - } - - public String getLoginIp() - { - return loginIp; - } - - public void setLoginIp(String loginIp) - { - this.loginIp = loginIp; - } - - public Date getLoginDate() - { - return loginDate; - } - - public void setLoginDate(Date loginDate) - { - this.loginDate = loginDate; - } - - public SysDept getDept() - { - return dept; - } - - public void setDept(SysDept dept) - { - this.dept = dept; - } - - public List getRoles() - { - return roles; - } - - public void setRoles(List roles) - { - this.roles = roles; - } - - public String[] getRoleIds() - { - return roleIds; - } - - public void setRoleIds(String[] roleIds) - { - this.roleIds = roleIds; - } - - public String[] getPostIds() - { - return postIds; - } - - public void setPostIds(String[] postIds) - { - this.postIds = postIds; - } - } diff --git a/shuili-system/src/main/java/com/kms/framework/web/service/SysPermissionService.java b/shuili-system/src/main/java/com/kms/framework/web/service/SysPermissionService.java index 3f6dc40e..7bdb5bc3 100644 --- a/shuili-system/src/main/java/com/kms/framework/web/service/SysPermissionService.java +++ b/shuili-system/src/main/java/com/kms/framework/web/service/SysPermissionService.java @@ -1,12 +1,17 @@ package com.kms.framework.web.service; -import com.shuili.common.core.domain.entity.SysUser; import com.kms.system.service.SysMenuService; import com.kms.system.service.SysRoleService; +import com.shuili.common.core.domain.entity.SysMenu; +import com.shuili.common.core.domain.entity.SysUser; +import com.shuili.common.core.redis.RedisCache; +import com.shuili.common.utils.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import java.util.Collections; import java.util.HashSet; +import java.util.List; import java.util.Set; /** @@ -16,43 +21,83 @@ import java.util.Set; */ @Component public class SysPermissionService { - @Autowired - private SysRoleService roleService; - - @Autowired - private SysMenuService menuService; - - /** - * 获取角色数据权限 - * - * @param user 用户信息 - * @return 角色权限信息 - */ - public Set getRolePermission(SysUser user) { - Set roles = new HashSet(); - // 管理员拥有所有权限 - if (user.isAdmin()) { - roles.add("admin"); - } else { - roles.addAll(roleService.selectRolePermissionByUserId(user.getId())); - } - return roles; - } - - /** - * 获取菜单数据权限 - * - * @param user 用户信息 - * @return 菜单权限信息 - */ - public Set getMenuPermission(SysUser user) { - Set perms = new HashSet(); - // 管理员拥有所有权限 - if (user.isAdmin()) { - perms.add("*:*:*"); - } else { - perms.addAll(menuService.selectMenuPermsByUserId(user.getId())); - } - return perms; - } + @Autowired + private SysRoleService roleService; + + @Autowired + private SysMenuService menuService; + + @Autowired + private RedisCache redisCache; + + /** + * 获取角色数据权限 + * + * @param user 用户信息 + * @return 角色权限信息 + */ + public Set getRolePermission(SysUser user) { + Set roles = new HashSet(); + // 管理员拥有所有权限 + if (user.isAdmin()) { + roles.add("admin"); + } else { + roles.addAll(roleService.selectRolePermissionByUserId(user.getId())); + } + return roles; + } + + /** + * 获取菜单数据权限 + * + * @param user 用户信息 + * @return 菜单权限信息 + */ + public Set getMenuPermission(SysUser user) { + Set perms = new HashSet(); + // 管理员拥有所有权限 + if (user.isAdmin()) { + perms.add("*:*:*"); + } else { + perms.addAll(menuService.selectMenuPermsByUserId(user.getId())); + perms.addAll(getUserPermissionFromPortal(user.getId())); + } + return perms; + } + + public List getUserPermissionFromPortal(String userId) { + Object cache = redisCache.getCacheObject(permsKey(userId)); + if (cache != null) { + return StringUtils.cast(cache); + } else { + return Collections.emptyList(); + } + } + + public List getUserMenuFromPortal(String userId) { + Object cache = redisCache.getCacheObject(menusKey(userId)); + if (cache != null) { + List ids = StringUtils.cast(cache); + return menuService.selectMenuList(ids); + } else { + return Collections.emptyList(); + } + } + + public void setUserPermissionFromPortal(String userId, List perms) { + redisCache.setCacheObject(permsKey(userId), perms); + } + + public void setUserMenuFromPortal(String userId, List menus) { + redisCache.setCacheObject(menusKey(userId), menus); + } + + + private String permsKey(String userId) { + return "user_perms:" + userId; + } + + private String menusKey(String userId) { + return "user_menus:" + userId; + } } diff --git a/shuili-system/src/main/java/com/kms/system/service/SysMenuService.java b/shuili-system/src/main/java/com/kms/system/service/SysMenuService.java index 9b33979f..205a5b99 100644 --- a/shuili-system/src/main/java/com/kms/system/service/SysMenuService.java +++ b/shuili-system/src/main/java/com/kms/system/service/SysMenuService.java @@ -1,16 +1,17 @@ package com.kms.system.service; +import com.kms.common.utils.BaseEntityUtils; +import com.kms.system.domain.vo.MetaVo; +import com.kms.system.domain.vo.RouterVo; +import com.kms.system.mapper.SysMenuMapper; +import com.kms.system.mapper.SysRoleMenuMapper; import com.shuili.common.constant.UserConstants; import com.shuili.common.core.domain.TreeSelect; import com.shuili.common.core.domain.entity.SysMenu; import com.shuili.common.core.domain.entity.SysUser; import com.shuili.common.core.service.BaseService; import com.shuili.common.utils.StringUtils; -import com.kms.common.utils.BaseEntityUtils; -import com.kms.system.domain.vo.MetaVo; -import com.kms.system.domain.vo.RouterVo; -import com.kms.system.mapper.SysMenuMapper; -import com.kms.system.mapper.SysRoleMenuMapper; +import org.apache.commons.collections.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -23,8 +24,7 @@ import java.util.stream.Collectors; * @author kms */ @Service -public class SysMenuService extends BaseService -{ +public class SysMenuService extends BaseService { public static final String PREMISSION_STRING = "perms[\"{0}\"]"; @Autowired @@ -39,8 +39,7 @@ public class SysMenuService extends BaseService * @param userId 用户ID * @return 菜单列表 */ - public List selectMenuList(String userId) - { + public List selectMenuList(String userId) { return selectMenuList(new SysMenu(), userId); } @@ -50,36 +49,36 @@ public class SysMenuService extends BaseService * @param menu 菜单信息 * @return 菜单列表 */ - public List selectMenuList(SysMenu menu, String userId) - { + public List selectMenuList(SysMenu menu, String userId) { List menuList = null; // 管理员显示所有菜单信息 - if (SysUser.isAdmin(userId)) - { + if (SysUser.isAdmin(userId)) { menuList = menuMapper.selectMenuList(menu); - } - else - { + } else { menu.getParams().put("userId", userId); menuList = menuMapper.selectMenuListByUserId(menu); } return menuList; } + public List selectMenuList(List ids) { + if (CollectionUtils.isEmpty(ids)) { + return Collections.emptyList(); + } + return menuMapper.selectBatchIds(ids); + } + /** * 根据用户ID查询权限 * * @param userId 用户ID * @return 权限列表 */ - public Set selectMenuPermsByUserId(String userId) - { + public Set selectMenuPermsByUserId(String userId) { List perms = menuMapper.selectMenuPermsByUserId(userId); Set permsSet = new HashSet<>(); - for (String perm : perms) - { - if (StringUtils.isNotEmpty(perm)) - { + for (String perm : perms) { + if (StringUtils.isNotEmpty(perm)) { permsSet.addAll(Arrays.asList(perm.trim().split(","))); } } @@ -92,15 +91,11 @@ public class SysMenuService extends BaseService * @param userId 用户名称 * @return 菜单列表 */ - public List selectMenuTreeByUserId(String userId) - { + public List selectMenuTreeByUserId(String userId) { List menus = null; - if ("1".equals(userId)) - { + if ("1".equals(userId)) { menus = menuMapper.selectMenuTreeAll(); - } - else - { + } else { menus = menuMapper.selectMenuTreeByUserId(userId); } return getChildPerms(menus, "0"); @@ -112,8 +107,7 @@ public class SysMenuService extends BaseService * @param roleId 角色ID * @return 选中菜单列表 */ - public List selectMenuListByRoleId(String roleId) - { + public List selectMenuListByRoleId(String roleId) { return menuMapper.selectMenuListByRoleId(roleId); } @@ -123,11 +117,9 @@ public class SysMenuService extends BaseService * @param menus 菜单列表 * @return 路由列表 */ - public List buildMenus(List menus) - { + public List buildMenus(List menus) { List routers = new LinkedList(); - for (SysMenu menu : menus) - { + for (SysMenu menu : menus) { RouterVo router = new RouterVo(); router.setHidden("1".equals(menu.getVisible())); router.setName(getRouteName(menu)); @@ -135,14 +127,11 @@ public class SysMenuService extends BaseService router.setComponent(getComponent(menu)); router.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon())); List cMenus = menu.getChildren(); - if (!cMenus.isEmpty() && cMenus.size() > 0 && UserConstants.TYPE_DIR.equals(menu.getMenuType())) - { + if (!cMenus.isEmpty() && cMenus.size() > 0 && UserConstants.TYPE_DIR.equals(menu.getMenuType())) { router.setAlwaysShow(true); router.setRedirect("noRedirect"); router.setChildren(buildMenus(cMenus)); - } - else if (isMeunFrame(menu)) - { + } else if (isMeunFrame(menu)) { List childrenList = new ArrayList(); RouterVo children = new RouterVo(); children.setPath(menu.getPath()); @@ -163,30 +152,25 @@ public class SysMenuService extends BaseService * @param menus 菜单列表 * @return 树结构列表 */ - public List buildMenuTree(List menus) -{ - List returnList = new ArrayList(); - List tempList = new ArrayList(); - for (SysMenu dept : menus) - { - tempList.add(dept.getId()); - } - for (Iterator iterator = menus.iterator(); iterator.hasNext();) - { - SysMenu menu = (SysMenu) iterator.next(); - // 如果是顶级节点, 遍历该父节点的所有子节点 - if (!tempList.contains(menu.getParentId())) - { - recursionFn(menus, menu); - returnList.add(menu); + public List buildMenuTree(List menus) { + List returnList = new ArrayList(); + List tempList = new ArrayList(); + for (SysMenu dept : menus) { + tempList.add(dept.getId()); } + for (Iterator iterator = menus.iterator(); iterator.hasNext(); ) { + SysMenu menu = (SysMenu) iterator.next(); + // 如果是顶级节点, 遍历该父节点的所有子节点 + if (!tempList.contains(menu.getParentId())) { + recursionFn(menus, menu); + returnList.add(menu); + } + } + if (returnList.isEmpty()) { + returnList = menus; + } + return returnList; } - if (returnList.isEmpty()) - { - returnList = menus; - } - return returnList; -} /** * 构建前端所需要下拉树结构 @@ -194,8 +178,7 @@ public class SysMenuService extends BaseService * @param menus 菜单列表 * @return 下拉树结构列表 */ - public List buildMenuTreeSelect(List menus) - { + public List buildMenuTreeSelect(List menus) { List menuTrees = buildMenuTree(menus); return menuTrees.stream().map(TreeSelect::new).collect(Collectors.toList()); } @@ -206,8 +189,7 @@ public class SysMenuService extends BaseService * @param menuId 菜单ID * @return 菜单信息 */ - public SysMenu selectMenuById(String menuId) - { + public SysMenu selectMenuById(String menuId) { return menuMapper.selectMenuById(menuId); } @@ -217,8 +199,7 @@ public class SysMenuService extends BaseService * @param menuId 菜单ID * @return 结果 */ - public boolean hasChildByMenuId(String menuId) - { + public boolean hasChildByMenuId(String menuId) { int result = menuMapper.hasChildByMenuId(menuId); return result > 0 ? true : false; } @@ -229,8 +210,7 @@ public class SysMenuService extends BaseService * @param menuId 菜单ID * @return 结果 */ - public boolean checkMenuExistRole(String menuId) - { + public boolean checkMenuExistRole(String menuId) { int result = roleMenuMapper.checkMenuExistRole(menuId); return result > 0 ? true : false; } @@ -241,8 +221,7 @@ public class SysMenuService extends BaseService * @param menu 菜单信息 * @return 结果 */ - public int insertMenu(SysMenu menu) - { + public int insertMenu(SysMenu menu) { BaseEntityUtils.preInsert(menu); return menuMapper.insertMenu(menu); } @@ -253,8 +232,7 @@ public class SysMenuService extends BaseService * @param menu 菜单信息 * @return 结果 */ - public int updateMenu(SysMenu menu) - { + public int updateMenu(SysMenu menu) { BaseEntityUtils.preUpdate(menu); return menuMapper.updateMenu(menu); } @@ -265,8 +243,7 @@ public class SysMenuService extends BaseService * @param menuId 菜单ID * @return 结果 */ - public int deleteMenuById(String menuId) - { + public int deleteMenuById(String menuId) { return menuMapper.deleteMenuById(menuId); } @@ -276,8 +253,7 @@ public class SysMenuService extends BaseService * @param menu 菜单信息 * @return 结果 */ - public String checkMenuNameUnique(SysMenu menu) - { + public String checkMenuNameUnique(SysMenu menu) { // Long menuId = StringUtils.isNull(menu.getMenuId()) ? -1L : menu.getMenuId(); // SysMenu info = menuMapper.checkMenuNameUnique(menu.getMenuName(), menu.getParentId()); // if (StringUtils.isNotNull(info) && info.getMenuId().longValue() != menuId.longValue()) @@ -293,12 +269,10 @@ public class SysMenuService extends BaseService * @param menu 菜单信息 * @return 路由名称 */ - public String getRouteName(SysMenu menu) - { + public String getRouteName(SysMenu menu) { String routerName = StringUtils.capitalize(menu.getPath()); // 非外链并且是一级目录(类型为目录) - if (isMeunFrame(menu)) - { + if (isMeunFrame(menu)) { routerName = StringUtils.EMPTY; } return routerName; @@ -310,18 +284,15 @@ public class SysMenuService extends BaseService * @param menu 菜单信息 * @return 路由地址 */ - public String getRouterPath(SysMenu menu) - { + public String getRouterPath(SysMenu menu) { String routerPath = menu.getPath(); // 非外链并且是一级目录(类型为目录) if ("0".equals(menu.getParentId()) && UserConstants.TYPE_DIR.equals(menu.getMenuType()) - && UserConstants.NO_FRAME.equals(menu.getIsFrame())) - { + && UserConstants.NO_FRAME.equals(menu.getIsFrame())) { routerPath = "/" + menu.getPath(); } // 非外链并且是一级目录(类型为菜单) - else if (isMeunFrame(menu)) - { + else if (isMeunFrame(menu)) { routerPath = "/"; } return routerPath; @@ -333,11 +304,9 @@ public class SysMenuService extends BaseService * @param menu 菜单信息 * @return 组件信息 */ - public String getComponent(SysMenu menu) - { + public String getComponent(SysMenu menu) { String component = UserConstants.LAYOUT; - if (StringUtils.isNotEmpty(menu.getComponent()) && !isMeunFrame(menu)) - { + if (StringUtils.isNotEmpty(menu.getComponent()) && !isMeunFrame(menu)) { component = menu.getComponent(); } return component; @@ -349,8 +318,7 @@ public class SysMenuService extends BaseService * @param menu 菜单信息 * @return 结果 */ - public boolean isMeunFrame(SysMenu menu) - { + public boolean isMeunFrame(SysMenu menu) { return "0".equals(menu.getParentId()) && UserConstants.TYPE_MENU.equals(menu.getMenuType()) && menu.getIsFrame().equals(UserConstants.NO_FRAME); } @@ -358,19 +326,16 @@ public class SysMenuService extends BaseService /** * 根据父节点的ID获取所有子节点 * - * @param list 分类表 + * @param list 分类表 * @param parentId 传入的父节点ID * @return String */ - public List getChildPerms(List list, String parentId) - { + public List getChildPerms(List list, String parentId) { List returnList = new ArrayList(); - for (Iterator iterator = list.iterator(); iterator.hasNext();) - { + for (Iterator iterator = list.iterator(); iterator.hasNext(); ) { SysMenu t = (SysMenu) iterator.next(); // 一、根据传入的某个父节点ID,遍历该父节点的所有子节点 - if (t.getParentId().equals(parentId)) - { + if (t.getParentId().equals(parentId)) { recursionFn(list, t); returnList.add(t); } @@ -384,15 +349,12 @@ public class SysMenuService extends BaseService * @param list * @param t */ - private void recursionFn(List list, SysMenu t) - { + private void recursionFn(List list, SysMenu t) { // 得到子节点列表 List childList = getChildList(list, t); t.setChildren(childList); - for (SysMenu tChild : childList) - { - if (hasChild(list, tChild)) - { + for (SysMenu tChild : childList) { + if (hasChild(list, tChild)) { recursionFn(list, tChild); } } @@ -401,15 +363,12 @@ public class SysMenuService extends BaseService /** * 得到子节点列表 */ - private List getChildList(List list, SysMenu t) - { + private List getChildList(List list, SysMenu t) { List tlist = new ArrayList(); Iterator it = list.iterator(); - while (it.hasNext()) - { + while (it.hasNext()) { SysMenu n = (SysMenu) it.next(); - if (n.getParentId().equals(t.getId())) - { + if (n.getParentId().equals(t.getId())) { tlist.add(n); } } @@ -419,8 +378,7 @@ public class SysMenuService extends BaseService /** * 判断是否有子节点 */ - private boolean hasChild(List list, SysMenu t) - { + private boolean hasChild(List list, SysMenu t) { return getChildList(list, t).size() > 0 ? true : false; } diff --git a/shuili-system/src/main/java/com/kms/system/service/SysUserService.java b/shuili-system/src/main/java/com/kms/system/service/SysUserService.java index ff3784bd..3adf2d54 100644 --- a/shuili-system/src/main/java/com/kms/system/service/SysUserService.java +++ b/shuili-system/src/main/java/com/kms/system/service/SysUserService.java @@ -92,7 +92,7 @@ public class SysUserService extends BaseService { */ public String selectUserRoleGroup(String userName) { List list = roleMapper.selectRolesByUserName(userName); - StringBuffer idsStr = new StringBuffer(); + StringBuilder idsStr = new StringBuilder(); for (SysRole role : list) { idsStr.append(role.getRoleName()).append(","); } @@ -122,7 +122,7 @@ public class SysUserService extends BaseService { */ public String selectUserPostGroup(String userName) { List list = postMapper.selectPostsByUserName(userName); - StringBuffer idsStr = new StringBuffer(); + StringBuilder idsStr = new StringBuilder(); for (SysPost post : list) { idsStr.append(post.getPostName()).append(","); } @@ -182,10 +182,9 @@ public class SysUserService extends BaseService { public void checkUserAllowed(SysUser user) { // 判断当前登录用户是否超级用户 SysUser user1 = UserUtils.getUser(); - if (!user1.isAdmin() && StringUtils.isNotNull(user.getId()) && user.isAdmin()) - { - throw new CustomException("不允许操作超级管理员用户"); - } + if (user1 != null && !user1.isAdmin() && StringUtils.isNotNull(user.getId()) && user.isAdmin()) { + throw new CustomException("不允许操作超级管理员用户"); + } } /** @@ -302,7 +301,7 @@ public class SysUserService extends BaseService { ur.setRoleId(roleId); list.add(ur); } - if (list.size() > 0) { + if (!list.isEmpty()) { userRoleService.saveBatch(list); } } @@ -325,7 +324,7 @@ public class SysUserService extends BaseService { BaseEntityUtils.preUpdate(up); list.add(up); } - if (list.size() > 0) { + if (!list.isEmpty()) { userPostService.saveBatch(list); } } @@ -373,7 +372,7 @@ public class SysUserService extends BaseService { * @return 结果 */ public String importUser(List userList, Boolean isUpdateSupport, String operName) { - if (StringUtils.isNull(userList) || userList.size() == 0) { + if (StringUtils.isNull(userList) || userList.isEmpty()) { throw new CustomException("导入用户数据不能为空!"); } int successNum = 0; @@ -439,15 +438,14 @@ public class SysUserService extends BaseService { } } successNum++; - successMsg.append("
" + successNum + "、账号 " + user.getUserName() + " 导入成功"); + successMsg.append("
").append(successNum).append("、账号 ").append(user.getUserName()).append(" 导入成功"); } else /* if (isUpdateSupport) */ { // for (SysUser temp : findList) { // // } failureNum++; - failureMsg.append("
" + failureNum + "、账号 " + - user.getUserName() + " 已存在"); + failureMsg.append("
").append(failureNum).append("、账号 ").append(user.getUserName()).append(" 已存在"); // SysUser sysUser = findList.get(0); // user.setId(sysUser.getId()); // sysUser.setUpdateBy(operName); @@ -461,13 +459,13 @@ public class SysUserService extends BaseService { }else { failureNum++; - failureMsg.append("
" + failureNum + "、用户名、手机号、邮箱、身份证必须存在!"); + failureMsg.append("
").append(failureNum).append("、用户名、手机号、邮箱、身份证必须存在!"); } } catch (Exception e) { failureNum++; String msg = "
" + failureNum + "、账号 " + user.getUserName() + " 导入失败:"; - failureMsg.append(msg + e.getMessage()); + failureMsg.append(msg).append(e.getMessage()); log.error(msg, e); } }