From 8fed216096b395309db2e02aa7f1245c262dc322 Mon Sep 17 00:00:00 2001 From: chy Date: Mon, 2 Mar 2026 10:34:12 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=BB=9F=E4=B8=80=E8=BA=AB?= =?UTF-8?q?=E4=BB=BD=E8=AE=A4=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/AccessUserController.java | 5 ++ .../accessuser/service/AccessUserService.java | 2 + .../service/impl/AccessUserServiceImpl.java | 73 +++++++++++++++++++ lidee-server/src/main/resources/bootstrap.yml | 2 +- 4 files changed, 81 insertions(+), 1 deletion(-) diff --git a/lidee-server/src/main/java/top/lidee/taie/business/modules/accessuser/controller/AccessUserController.java b/lidee-server/src/main/java/top/lidee/taie/business/modules/accessuser/controller/AccessUserController.java index f02d95b..e6664e2 100644 --- a/lidee-server/src/main/java/top/lidee/taie/business/modules/accessuser/controller/AccessUserController.java +++ b/lidee-server/src/main/java/top/lidee/taie/business/modules/accessuser/controller/AccessUserController.java @@ -98,6 +98,11 @@ public class AccessUserController extends LideeBaseController wrapper = Wrappers.lambdaQuery(); + wrapper.eq(AccessUser::getLoginName, loginName); + AccessUser accessUser = accessUserMapper.selectOne(wrapper); + if (null == accessUser) { + throw BusinessExceptionBuilder.build(ResponseCode.LOGIN_ERROR); + } + // 2.密码错误 + String sss=MD5Util.encrypt(password); +// if (!accessUser.getPassword().equals(MD5Util.encrypt(password))) { +// throw BusinessExceptionBuilder.build(ResponseCode.USER_PASSWORD_ERROR); +// } + + // 3.如果该用户登录未过期,这里允许一个用户在多个终端登录 + String tokenKey = String.format(BusinessConstant.LIDEE_SECURITY_LOGIN_TOKEN, loginName); + String token = ""; + LideeUserDto lduser = new LideeUserDto(); + if (cacheHelper.exist(tokenKey)) { + token = cacheHelper.stringGet(tokenKey); + } else { + // 生成用户token + String uuid = LideeUtils.UUID(); + token = jwtBean.createToken(loginName, uuid, 0, LideeConstant.TENANT_CODE); + cacheHelper.stringSetExpire(tokenKey, token, 3600); + } + + // 4.读取用户最新人权限主信息 + String userKey = String.format(BusinessConstant.LIDEE_SECURITY_LOGIN_USER, loginName); + + //为了兼容底层其他数据库,不再写自定义sql +// List authorities = accessUserMapper.queryAuthoritiesByLoginName(loginName); + + //当前用户的roleCode集合 + LambdaQueryWrapper accessUserWrapper = Wrappers.lambdaQuery(); + accessUserWrapper.select(AccessUserRole::getRoleCode); + accessUserWrapper.eq(AccessUserRole::getLoginName, loginName); + List accessUserRoles = accessUserRoleMapper.selectList(accessUserWrapper); + Set roleCodeSet = accessUserRoles.stream().map(AccessUserRole::getRoleCode).collect(Collectors.toSet()); + if (roleCodeSet.size() < 1) { + lduser.setAuthorities(new ArrayList<>()); + }else { + LambdaQueryWrapper accessRoleAuthorityWrapper = Wrappers.lambdaQuery(); + accessRoleAuthorityWrapper.select(AccessRoleAuthority::getTarget, AccessRoleAuthority::getAction); + accessRoleAuthorityWrapper.in(AccessRoleAuthority::getRoleCode, roleCodeSet); + List accessRoleAuthorities = accessRoleAuthorityMapper.selectList(accessRoleAuthorityWrapper); + List authorities = accessRoleAuthorities.stream() + .map(accessRoleAuthority -> accessRoleAuthority.getTarget().concat(":").concat(accessRoleAuthority.getAction())).distinct().collect(Collectors.toList()); + lduser.setAuthorities(authorities); + } + + lduser.setLoginName(loginName); + lduser.setRealName(accessUser.getRealName()); + lduser.setToken(token); + + String ldUserStr = JSONObject.toJSONString(lduser); + cacheHelper.stringSetExpire(userKey, ldUserStr, 3600); + + return lduser; + } + + /** * 修改密码 * diff --git a/lidee-server/src/main/resources/bootstrap.yml b/lidee-server/src/main/resources/bootstrap.yml index 00b5117..5569e86 100644 --- a/lidee-server/src/main/resources/bootstrap.yml +++ b/lidee-server/src/main/resources/bootstrap.yml @@ -144,4 +144,4 @@ customer: user: ##新增用户默认密码 default: - password: 123456 + password: Lidee@654!