From 567127f2b295eecdce77cd88f48e34433574aa72 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=90=E7=8E=89=E7=A5=A5?= Date: Sun, 5 Mar 2023 15:11:48 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E6=9B=B4=E6=96=B0=E3=80=91=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E7=99=BB=E5=BD=95=E9=80=BB=E8=BE=91=EF=BC=8C=E5=87=8F?= =?UTF-8?q?=E5=B0=91=E6=9F=A5=E8=AF=A2=E6=AC=A1=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xiaonuo/auth/api/SaBaseLoginUserApi.java | 16 +-- .../xiaonuo/mobile/api/MobileButtonApi.java | 3 +- .../modular/login/listener/AuthListener.java | 6 +- .../login/service/impl/AuthServiceImpl.java | 40 +++++-- .../provider/ClientLoginUserApiProvider.java | 18 +-- .../provider/MobileButtonApiProvider.java | 4 - .../sys/modular/user/entity/SysUser.java | 2 +- .../provider/SysLoginUserApiProvider.java | 72 ++++++------ .../modular/user/service/SysUserService.java | 22 ++-- .../user/service/impl/SysUserServiceImpl.java | 106 +++++------------- 10 files changed, 126 insertions(+), 163 deletions(-) diff --git a/snowy-plugin-api/snowy-plugin-auth-api/src/main/java/vip/xiaonuo/auth/api/SaBaseLoginUserApi.java b/snowy-plugin-api/snowy-plugin-auth-api/src/main/java/vip/xiaonuo/auth/api/SaBaseLoginUserApi.java index 626c7399..151f384f 100644 --- a/snowy-plugin-api/snowy-plugin-auth-api/src/main/java/vip/xiaonuo/auth/api/SaBaseLoginUserApi.java +++ b/snowy-plugin-api/snowy-plugin-auth-api/src/main/java/vip/xiaonuo/auth/api/SaBaseLoginUserApi.java @@ -83,36 +83,36 @@ public interface SaBaseLoginUserApi { List listUserByUserIdList(List userIdList); /** - * 根据用户id获取角色码集合 + * 根据用户id获取角色集合 * * @author xuyuxiang * @date 2022/4/27 22:53 */ - List getRoleCodeListByUserId(String userId); + List getRoleListByUserId(String userId); /** - * 根据用户id获取按钮码集合 + * 根据角色id和用户id集合获取按钮码集合 * * @author xuyuxiang * @date 2022/4/27 22:54 */ - List getButtonCodeListListByUserId(String userId); + List getButtonCodeListListByUserAndRoleIdList(List userAndRoleIdList); /** - * 根据用户id获取移动端按钮码集合 + * 根据角色id和用户id集合获取移动端按钮码集合 * * @author xuyuxiang * @date 2022/4/27 22:54 */ - List getMobileButtonCodeListListByUserId(String userId); + List getMobileButtonCodeListListByUserIdAndRoleIdList(List userAndRoleIdList); /** - * 根据用户id获取权限集合 + * 根据角色id和用户id集合获取权限集合 * * @author xuyuxiang * @date 2022/4/27 22:54 */ - List getPermissionListByUserId(String userId, String orgId); + List getPermissionListByUserIdAndRoleIdList(List userAndRoleIdList, String orgId); /** * 更新用户的登录时间和登录ip等信息 diff --git a/snowy-plugin-api/snowy-plugin-mobile-api/src/main/java/vip/xiaonuo/mobile/api/MobileButtonApi.java b/snowy-plugin-api/snowy-plugin-mobile-api/src/main/java/vip/xiaonuo/mobile/api/MobileButtonApi.java index 5dfa2ecf..49e184df 100644 --- a/snowy-plugin-api/snowy-plugin-mobile-api/src/main/java/vip/xiaonuo/mobile/api/MobileButtonApi.java +++ b/snowy-plugin-api/snowy-plugin-mobile-api/src/main/java/vip/xiaonuo/mobile/api/MobileButtonApi.java @@ -23,9 +23,8 @@ import java.util.List; public interface MobileButtonApi { /** - * 根据键获取值 + * 根据按钮id集合获取按钮码列表 * - * @param idList * @author 每天一点 * @date 2023/2/5 13:26 **/ diff --git a/snowy-plugin/snowy-plugin-auth/src/main/java/vip/xiaonuo/auth/modular/login/listener/AuthListener.java b/snowy-plugin/snowy-plugin-auth/src/main/java/vip/xiaonuo/auth/modular/login/listener/AuthListener.java index 7fb64da4..8111b1f3 100644 --- a/snowy-plugin/snowy-plugin-auth/src/main/java/vip/xiaonuo/auth/modular/login/listener/AuthListener.java +++ b/snowy-plugin/snowy-plugin-auth/src/main/java/vip/xiaonuo/auth/modular/login/listener/AuthListener.java @@ -49,9 +49,9 @@ public class AuthListener implements SaTokenListener { if(SaClientTypeEnum.B.getValue().equals(loginType)) { loginUserApi.updateUserLoginInfo(Convert.toStr(loginId), loginModel.getDevice()); // 记录B端登录日志 - SaBaseLoginUser saBaseLoginUser = loginUserApi.getUserById(Convert.toStr(loginId)); - if(ObjectUtil.isNotEmpty(saBaseLoginUser)) { - devLogApi.executeLoginLog(saBaseLoginUser.getName()); + Object name = loginModel.getExtra("name"); + if(ObjectUtil.isNotEmpty(name)) { + devLogApi.executeLoginLog(Convert.toStr(name)); } else { devLogApi.executeLoginLog(null); } diff --git a/snowy-plugin/snowy-plugin-auth/src/main/java/vip/xiaonuo/auth/modular/login/service/impl/AuthServiceImpl.java b/snowy-plugin/snowy-plugin-auth/src/main/java/vip/xiaonuo/auth/modular/login/service/impl/AuthServiceImpl.java index f10da665..ad470fe2 100644 --- a/snowy-plugin/snowy-plugin-auth/src/main/java/vip/xiaonuo/auth/modular/login/service/impl/AuthServiceImpl.java +++ b/snowy-plugin/snowy-plugin-auth/src/main/java/vip/xiaonuo/auth/modular/login/service/impl/AuthServiceImpl.java @@ -16,10 +16,12 @@ import cn.dev33.satoken.stp.SaLoginModel; import cn.dev33.satoken.stp.StpUtil; import cn.hutool.captcha.CaptchaUtil; import cn.hutool.captcha.CircleCaptcha; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.convert.Convert; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.PhoneUtil; import cn.hutool.core.util.RandomUtil; +import cn.hutool.json.JSONObject; import com.baomidou.mybatisplus.core.toolkit.IdWorker; import org.springframework.stereotype.Service; import vip.xiaonuo.auth.api.SaBaseLoginUserApi; @@ -43,6 +45,7 @@ import vip.xiaonuo.dev.api.DevConfigApi; import vip.xiaonuo.dev.api.DevSmsApi; import javax.annotation.Resource; +import java.util.List; import java.util.stream.Collectors; /** @@ -281,20 +284,27 @@ public class AuthServiceImpl implements AuthService { throw new CommonException(AuthExceptionEnum.ACCOUNT_DISABLED.getValue()); } // 执行登录 - StpUtil.login(saBaseLoginUser.getId(), new SaLoginModel().setDevice(device)); - // TODO 登录部份需要优化 + StpUtil.login(saBaseLoginUser.getId(), new SaLoginModel().setDevice(device).setExtra("name", saBaseLoginUser.getName())); + // 角色集合 + List roleList = loginUserApi.getRoleListByUserId(saBaseLoginUser.getId()); + // 角色id集合 + List roleIdList = roleList.stream().map(jsonObject -> jsonObject.getStr("id")).collect(Collectors.toList()); + // 角色码集合 + List roleCodeList = roleList.stream().map(jsonObject -> jsonObject.getStr("code")).collect(Collectors.toList()); + // 角色id和用户id集合 + List userAndRoleIdList = CollectionUtil.unionAll(roleIdList, CollectionUtil.newArrayList(saBaseLoginUser.getId())); // 获取按钮码 - saBaseLoginUser.setButtonCodeList(loginUserApi.getButtonCodeListListByUserId(saBaseLoginUser.getId())); + saBaseLoginUser.setButtonCodeList(loginUserApi.getButtonCodeListListByUserAndRoleIdList(userAndRoleIdList)); // 获取移动端按钮码 - saBaseLoginUser.setMobileButtonCodeList(loginUserApi.getMobileButtonCodeListListByUserId(saBaseLoginUser.getId())); + saBaseLoginUser.setMobileButtonCodeList(loginUserApi.getMobileButtonCodeListListByUserIdAndRoleIdList(userAndRoleIdList)); // 获取数据范围 saBaseLoginUser.setDataScopeList(Convert.toList(SaBaseLoginUser.DataScope.class, - loginUserApi.getPermissionListByUserId(saBaseLoginUser.getId(), saBaseLoginUser.getOrgId()))); + loginUserApi.getPermissionListByUserIdAndRoleIdList(userAndRoleIdList, saBaseLoginUser.getOrgId()))); // 获取权限码 saBaseLoginUser.setPermissionCodeList(saBaseLoginUser.getDataScopeList().stream() .map(SaBaseLoginUser.DataScope::getApiUrl).collect(Collectors.toList())); // 获取角色码 - saBaseLoginUser.setRoleCodeList(loginUserApi.getRoleCodeListByUserId(saBaseLoginUser.getId())); + saBaseLoginUser.setRoleCodeList(roleCodeList); // 缓存用户信息,此处使用TokenSession为了指定时间内无操作则自动下线 StpUtil.getTokenSession().set("loginUser", saBaseLoginUser); // 返回token @@ -313,19 +323,27 @@ public class AuthServiceImpl implements AuthService { throw new CommonException(AuthExceptionEnum.ACCOUNT_DISABLED.getValue()); } // 执行登录 - StpClientUtil.login(saBaseClientLoginUser.getId(), new SaLoginModel().setDevice(device)); + StpClientUtil.login(saBaseClientLoginUser.getId(), new SaLoginModel().setDevice(device).setExtra("name", saBaseClientLoginUser.getName())); + // 角色集合 + List roleList = loginUserApi.getRoleListByUserId(saBaseClientLoginUser.getId()); + // 角色id集合 + List roleIdList = roleList.stream().map(jsonObject -> jsonObject.getStr("id")).collect(Collectors.toList()); + // 角色码集合 + List roleCodeList = roleList.stream().map(jsonObject -> jsonObject.getStr("code")).collect(Collectors.toList()); + // 角色id和用户id集合 + List userAndRoleIdList = CollectionUtil.unionAll(roleIdList, CollectionUtil.newArrayList(saBaseClientLoginUser.getId())); // 获取按钮码 - saBaseClientLoginUser.setButtonCodeList(clientLoginUserApi.getButtonCodeListListByUserId(saBaseClientLoginUser.getId())); + saBaseClientLoginUser.setButtonCodeList(clientLoginUserApi.getButtonCodeListListByUserAndRoleIdList(userAndRoleIdList)); // 获取移动端按钮码 - saBaseClientLoginUser.setMobileButtonCodeList(clientLoginUserApi.getMobileButtonCodeListListByUserId(saBaseClientLoginUser.getId())); + saBaseClientLoginUser.setMobileButtonCodeList(clientLoginUserApi.getMobileButtonCodeListListByUserIdAndRoleIdList(userAndRoleIdList)); // 获取数据范围 saBaseClientLoginUser.setDataScopeList(Convert.toList(SaBaseClientLoginUser.DataScope.class, - clientLoginUserApi.getPermissionListByUserId(saBaseClientLoginUser.getId(), null))); + clientLoginUserApi.getPermissionListByUserIdAndRoleIdList(userAndRoleIdList, null))); // 获取权限码 saBaseClientLoginUser.setPermissionCodeList(saBaseClientLoginUser.getDataScopeList().stream() .map(SaBaseClientLoginUser.DataScope::getApiUrl).collect(Collectors.toList())); // 获取角色码 - saBaseClientLoginUser.setRoleCodeList(clientLoginUserApi.getRoleCodeListByUserId(saBaseClientLoginUser.getId())); + saBaseClientLoginUser.setRoleCodeList(roleCodeList); // 缓存用户信息,此处使用TokenSession为了指定时间内无操作则自动下线 StpClientUtil.getTokenSession().set("loginUser", saBaseClientLoginUser); // 返回token diff --git a/snowy-plugin/snowy-plugin-client/src/main/java/vip/xiaonuo/client/modular/user/provider/ClientLoginUserApiProvider.java b/snowy-plugin/snowy-plugin-client/src/main/java/vip/xiaonuo/client/modular/user/provider/ClientLoginUserApiProvider.java index 0f616e4f..07df3f2f 100644 --- a/snowy-plugin/snowy-plugin-client/src/main/java/vip/xiaonuo/client/modular/user/provider/ClientLoginUserApiProvider.java +++ b/snowy-plugin/snowy-plugin-client/src/main/java/vip/xiaonuo/client/modular/user/provider/ClientLoginUserApiProvider.java @@ -116,49 +116,49 @@ public class ClientLoginUserApiProvider implements SaBaseLoginUserApi { } /** - * 根据用户id获取角色码集合 + * 根据用户id获取角色集合 * * @author xuyuxiang * @date 2022/4/27 22:53 */ @Override - public List getRoleCodeListByUserId(String userId) { - // TODO C端用户暂无角色码 + public List getRoleListByUserId(String userId) { + // TODO C端用户暂无角色 return CollectionUtil.newArrayList(); } /** - * 根据用户id获取按钮码集合 + * 根据角色id和用户id集合获取按钮码集合 * * @author xuyuxiang * @date 2022/4/27 22:54 */ @Override - public List getButtonCodeListListByUserId(String userId) { + public List getButtonCodeListListByUserAndRoleIdList(List userAndRoleIdList) { // TODO C端用户暂无按钮码 return CollectionUtil.newArrayList(); } /** - * 根据用户id获取移动端按钮码集合 + * 根据角色id和用户id集合获取移动端按钮码集合 * * @author xuyuxiang * @date 2022/4/27 22:54 */ @Override - public List getMobileButtonCodeListListByUserId(String userId) { + public List getMobileButtonCodeListListByUserIdAndRoleIdList(List userAndRoleIdList) { // TODO C端用户暂无移动端按钮码 return CollectionUtil.newArrayList(); } /** - * 根据用户id获取权限集合 + * 根据角色id和用户id集合获取权限集合 * * @author xuyuxiang * @date 2022/4/27 22:54 */ @Override - public List getPermissionListByUserId(String userId, String orgId) { + public List getPermissionListByUserIdAndRoleIdList(List userAndRoleIdList, String orgId) { // TODO C端用户暂无权限码 return CollectionUtil.newArrayList(); } diff --git a/snowy-plugin/snowy-plugin-mobile/src/main/java/vip/xiaonuo/mobile/modular/resource/provider/MobileButtonApiProvider.java b/snowy-plugin/snowy-plugin-mobile/src/main/java/vip/xiaonuo/mobile/modular/resource/provider/MobileButtonApiProvider.java index 4477af57..fb95442a 100644 --- a/snowy-plugin/snowy-plugin-mobile/src/main/java/vip/xiaonuo/mobile/modular/resource/provider/MobileButtonApiProvider.java +++ b/snowy-plugin/snowy-plugin-mobile/src/main/java/vip/xiaonuo/mobile/modular/resource/provider/MobileButtonApiProvider.java @@ -12,7 +12,6 @@ */ package vip.xiaonuo.mobile.modular.resource.provider; -import cn.hutool.core.util.ObjectUtil; import org.springframework.stereotype.Service; import vip.xiaonuo.mobile.api.MobileButtonApi; import vip.xiaonuo.mobile.modular.resource.entity.MobileButton; @@ -36,9 +35,6 @@ public class MobileButtonApiProvider implements MobileButtonApi { @Override public List listByIds(List buttonIdList) { - if (ObjectUtil.isEmpty(buttonIdList)) { - return null; - } return mobileButtonService.listByIds(buttonIdList).stream().map(MobileButton::getCode).collect(Collectors.toList()); } } diff --git a/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/user/entity/SysUser.java b/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/user/entity/SysUser.java index fef63be3..dc700afc 100644 --- a/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/user/entity/SysUser.java +++ b/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/user/entity/SysUser.java @@ -37,7 +37,7 @@ import java.util.Date; **/ @Getter @Setter -@TableName(value = "SYS_USER") +@TableName(value = "SYS_USER", autoResultMap = true) public class SysUser extends CommonEntity implements TransPojo { /** id */ diff --git a/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/user/provider/SysLoginUserApiProvider.java b/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/user/provider/SysLoginUserApiProvider.java index bfd8c3fc..f6bb8ebf 100644 --- a/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/user/provider/SysLoginUserApiProvider.java +++ b/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/user/provider/SysLoginUserApiProvider.java @@ -115,47 +115,47 @@ public class SysLoginUserApiProvider implements SaBaseLoginUserApi { } /** - * 根据用户id获取按钮码集合 - * - * @author xuyuxiang - * @date 2022/4/27 22:54 - */ - @Override - public List getButtonCodeListListByUserId(String userId) { - return sysUserService.getButtonCodeList(userId); - } - - /** - * 根据用户id获取移动端按钮码集合 - * - * @author xuyuxiang - * @date 2022/4/27 22:54 - */ - @Override - public List getMobileButtonCodeListListByUserId(String userId) { - return sysUserService.getMobileButtonCodeListListByUserId(userId); - } - - /** - * 根据用户id获取权限集合 - * - * @author xuyuxiang - * @date 2022/4/27 22:54 - */ - @Override - public List getPermissionListByUserId(String userId, String orgId) { - return sysUserService.getPermissionList(userId, orgId); - } - - /** - * 根据用户id获取角色码集合 + * 根据用户id获取角色集合 * * @author xuyuxiang * @date 2022/4/27 22:53 */ @Override - public List getRoleCodeListByUserId(String userId) { - return sysUserService.getRoleCodeList(userId); + public List getRoleListByUserId(String userId) { + return sysUserService.getRoleList(userId); + } + + /** + * 根据角色id和用户id集合获取按钮码集合 + * + * @author xuyuxiang + * @date 2022/4/27 22:54 + */ + @Override + public List getButtonCodeListListByUserAndRoleIdList(List userAndRoleIdList) { + return sysUserService.getButtonCodeList(userAndRoleIdList); + } + + /** + * 根据角色id和用户id集合获取移动端按钮码集合 + * + * @author xuyuxiang + * @date 2022/4/27 22:54 + */ + @Override + public List getMobileButtonCodeListListByUserIdAndRoleIdList(List userAndRoleIdList) { + return sysUserService.getMobileButtonCodeList(userAndRoleIdList); + } + + /** + * 根据角色id和用户id集合获取权限集合 + * + * @author xuyuxiang + * @date 2022/4/27 22:54 + */ + @Override + public List getPermissionListByUserIdAndRoleIdList(List userAndRoleIdList, String orgId) { + return sysUserService.getPermissionList(userAndRoleIdList, orgId); } /** diff --git a/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/user/service/SysUserService.java b/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/user/service/SysUserService.java index af52bf33..4f417aca 100644 --- a/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/user/service/SysUserService.java +++ b/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/user/service/SysUserService.java @@ -308,13 +308,21 @@ public interface SysUserService extends IService { */ String loginWorkbench(SysUserIdParam sysUserIdParam); + /** + * 获取角色集合 + * + * @author xuyuxiang + * @date 2022/4/29 11:13 + **/ + List getRoleList(String userId); + /** * 获取按钮编码集合 * * @author xuyuxiang * @date 2022/4/29 11:13 **/ - List getButtonCodeList(String userId); + List getButtonCodeList(List userAndRoleIdList); /** * 获取移动端按钮编码集合 @@ -322,7 +330,7 @@ public interface SysUserService extends IService { * @author xuyuxiang * @date 2022/4/29 11:13 **/ - List getMobileButtonCodeListListByUserId(String userId); + List getMobileButtonCodeList(List userAndRoleIdList); /** * 获取权限集合 @@ -330,15 +338,7 @@ public interface SysUserService extends IService { * @author xuyuxiang * @date 2022/4/29 11:13 **/ - List getPermissionList(String userId, String orgId); - - /** - * 获取角色码集合 - * - * @author xuyuxiang - * @date 2022/4/29 11:13 - **/ - List getRoleCodeList(String userId); + List getPermissionList(List userAndRoleIdList, String orgId); /** * 用户导入 diff --git a/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/user/service/impl/SysUserServiceImpl.java b/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/user/service/impl/SysUserServiceImpl.java index d52d2ee6..dc8325b6 100644 --- a/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/user/service/impl/SysUserServiceImpl.java +++ b/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/user/service/impl/SysUserServiceImpl.java @@ -27,7 +27,6 @@ import cn.hutool.core.lang.tree.TreeNode; import cn.hutool.core.lang.tree.TreeNodeConfig; import cn.hutool.core.lang.tree.TreeUtil; import cn.hutool.core.lang.tree.parser.DefaultNodeParser; -import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.PhoneUtil; import cn.hutool.core.util.RandomUtil; @@ -873,16 +872,21 @@ public class SysUserServiceImpl extends ServiceImpl impl } @Override - public List getButtonCodeList(String userId) { - List buttonCodeListGrantUser = this.getButtonCodeListGrantUser(userId); - List buttonCodeListGrantRole = this.getButtonCodeListGrantRole(userId); - return CollectionUtil.newArrayList(CollectionUtil.unionDistinct(buttonCodeListGrantUser, buttonCodeListGrantRole)); + public List getRoleList(String userId) { + List roleIdList = sysRelationService.getRelationTargetIdListByObjectIdAndCategory(userId, + SysRelationCategoryEnum.SYS_USER_HAS_ROLE.getValue()); + if (ObjectUtil.isNotEmpty(roleIdList)) { + return sysRoleService.listByIds(roleIdList).stream().map(JSONUtil::parseObj).collect(Collectors.toList()); + } + return CollectionUtil.newArrayList(); } - public List getButtonCodeListGrantUser(String userId) { + @Override + public List getButtonCodeList(List userAndRoleIdList) { List buttonIdList = CollectionUtil.newArrayList(); - sysRelationService.getRelationListByObjectIdAndCategory(userId, - SysRelationCategoryEnum.SYS_USER_HAS_RESOURCE.getValue()).forEach(sysRelation -> { + sysRelationService.list(new LambdaQueryWrapper().in(SysRelation::getObjectId, userAndRoleIdList) + .in(SysRelation::getCategory, SysRelationCategoryEnum.SYS_USER_HAS_RESOURCE.getValue(), + SysRelationCategoryEnum.SYS_ROLE_HAS_RESOURCE.getValue())).forEach(sysRelation -> { if (ObjectUtil.isNotEmpty(sysRelation.getExtJson())) { buttonIdList.addAll(JSONUtil.parseObj(sysRelation.getExtJson()).getBeanList("buttonInfo", String.class)); } @@ -893,72 +897,29 @@ public class SysUserServiceImpl extends ServiceImpl impl return CollectionUtil.newArrayList(); } - public List getButtonCodeListGrantRole(String userId) { - List roleIdList = sysRelationService.getRelationTargetIdListByObjectIdAndCategory(userId, - SysRelationCategoryEnum.SYS_USER_HAS_ROLE.getValue()); - if (ObjectUtil.isNotEmpty(roleIdList)) { - List buttonIdList = CollectionUtil.newArrayList(); - sysRelationService.getRelationListByObjectIdListAndCategory(roleIdList, - SysRelationCategoryEnum.SYS_ROLE_HAS_RESOURCE.getValue()).forEach(sysRelation -> { - if (ObjectUtil.isNotEmpty(sysRelation.getExtJson())) { - buttonIdList.addAll(JSONUtil.parseObj(sysRelation.getExtJson()).getBeanList("buttonInfo", String.class)); - } - }); - if (ObjectUtil.isNotEmpty(buttonIdList)) { - return sysButtonService.listByIds(buttonIdList).stream().map(SysButton::getCode).collect(Collectors.toList()); - } - } - return CollectionUtil.newArrayList(); - } - @Override - public List getMobileButtonCodeListListByUserId(String userId) { - List roleIdList = sysRelationService.getRelationTargetIdListByObjectIdAndCategory(userId, - SysRelationCategoryEnum.SYS_USER_HAS_ROLE.getValue()); - if (ObjectUtil.isNotEmpty(roleIdList)) { - List buttonIdList = CollectionUtil.newArrayList(); - sysRelationService.getRelationListByObjectIdListAndCategory(roleIdList, - SysRelationCategoryEnum.SYS_ROLE_HAS_MOBILE_MENU.getValue()).forEach(sysRelation -> { - if (ObjectUtil.isNotEmpty(sysRelation.getExtJson())) { - buttonIdList.addAll(JSONUtil.parseObj(sysRelation.getExtJson()).getBeanList("buttonInfo", String.class)); - } - }); + public List getMobileButtonCodeList(List userAndRoleIdList) { + List buttonIdList = CollectionUtil.newArrayList(); + sysRelationService.getRelationListByObjectIdListAndCategory(userAndRoleIdList, + SysRelationCategoryEnum.SYS_ROLE_HAS_MOBILE_MENU.getValue()).forEach(sysRelation -> { + if (ObjectUtil.isNotEmpty(sysRelation.getExtJson())) { + buttonIdList.addAll(JSONUtil.parseObj(sysRelation.getExtJson()).getBeanList("buttonInfo", String.class)); + } + }); + if (ObjectUtil.isNotEmpty(buttonIdList)) { return mobileButtonApi.listByIds(buttonIdList); } return CollectionUtil.newArrayList(); } @Override - public List getPermissionList(String userId, String orgId) { - Map> permissionListGrantUser = this.getPermissionListGrantUser(userId, orgId); - Map> permissionListGrantRole = this.getPermissionListGrantRole(userId, orgId); - permissionListGrantUser.forEach((key, value) -> permissionListGrantRole.merge(key, value, (prev, next) -> { - prev.addAll(next); - return prev; - })); - return getScopeListByMap(permissionListGrantRole, orgId); - } - - public Map> getPermissionListGrantUser(String userId, String orgId) { - if (ObjectUtil.isNotEmpty(orgId)) { - return sysRelationService.getRelationListByObjectIdAndCategory(userId, - SysRelationCategoryEnum.SYS_USER_HAS_PERMISSION.getValue()).stream() - .collect(Collectors.groupingBy(SysRelation::getTargetId)); - } - return MapUtil.newHashMap(); - } - - public Map> getPermissionListGrantRole(String userId, String orgId) { - if (ObjectUtil.isNotEmpty(orgId)) { - List roleIdList = sysRelationService.getRelationTargetIdListByObjectIdAndCategory(userId, - SysRelationCategoryEnum.SYS_USER_HAS_ROLE.getValue()); - if (ObjectUtil.isNotEmpty(roleIdList)) { - return sysRelationService.getRelationListByObjectIdListAndCategory(roleIdList, - SysRelationCategoryEnum.SYS_ROLE_HAS_PERMISSION.getValue()).stream() - .collect(Collectors.groupingBy(SysRelation::getTargetId)); - } - } - return MapUtil.newHashMap(); + public List getPermissionList(List userAndRoleIdList, String orgId) { + Map> map = sysRelationService.list(new LambdaQueryWrapper() + .in(SysRelation::getObjectId, userAndRoleIdList).in(SysRelation::getCategory, + SysRelationCategoryEnum.SYS_USER_HAS_PERMISSION.getValue(), + SysRelationCategoryEnum.SYS_ROLE_HAS_PERMISSION.getValue())).stream() + .collect(Collectors.groupingBy(SysRelation::getTargetId)); + return getScopeListByMap(map, orgId); } public List getScopeListByMap(Map> groupMap, String orgId) { @@ -991,17 +952,6 @@ public class SysUserServiceImpl extends ServiceImpl impl return resultList; } - @Override - public List getRoleCodeList(String userId) { - List roleIdList = sysRelationService.getRelationTargetIdListByObjectIdAndCategory(userId, - SysRelationCategoryEnum.SYS_USER_HAS_ROLE.getValue()); - if (ObjectUtil.isNotEmpty(roleIdList)) { - return sysRoleService.listByIds(roleIdList) - .stream().map(SysRole::getCode).collect(Collectors.toList()); - } - return CollectionUtil.newArrayList(); - } - @Override public void importUser(MultipartFile file) { // TODO 待完善