From 2728b76fa2b6ba007683646f3495ddb7ea2ebac9 Mon Sep 17 00:00:00 2001 From: liulin <lin.liu@88.com> Date: 星期一, 30 六月 2025 11:12:11 +0800 Subject: [PATCH] 添加区域、工单管理 --- src/main/java/com/fengdu/gas/service/AdminService.java | 68 +++++++++++++++++++++++---------- 1 files changed, 47 insertions(+), 21 deletions(-) diff --git a/src/main/java/com/fengdu/gas/service/AdminService.java b/src/main/java/com/fengdu/gas/service/AdminService.java index b8b5509..fc9250e 100644 --- a/src/main/java/com/fengdu/gas/service/AdminService.java +++ b/src/main/java/com/fengdu/gas/service/AdminService.java @@ -136,33 +136,59 @@ } // 管理员登录 - public ExecutedResult<ResAdminLogin> adminLogin(ReqAdminLogin request) { + // 管理员登录 + public ExecutedResult<ResAdminLogin> adminLogin(ReqAdminLogin request) throws Exception { + Integer maxNumber = 3; AdminUserPO user = dao.get4Name(request.getUserName()); - if(Objects.isNull(user)){ - return ExecutedResult.failed("用户名或密码错误。"); + //获取缓存中的验证码 + String realCode = redisTemplate.opsForValue().get(request.getUuid()); + if (realCode == null) { + return ExecutedResult.failed("验证码已失效,请重新获取~"); } - if(BooleanUtils.isFalse(Objects.equals(user.getStatus(), EState.NORMAL.getValue()))) { - return ExecutedResult.failed("账号已锁定,请联系管理员。"); + // 验证码校验 + if (!request.getCode().equalsIgnoreCase(realCode)) { + return ExecutedResult.failed("验证码错误"); } - if(BooleanUtils.isFalse(MD5Util.encrypt(request.getPassword() + ConstantFactory.KEY_PASSWORD).equals(user.getPassword()))) { - return ExecutedResult.failed("用户名或密码错误。"); + //获取缓存中设备码 + String machineCode = redisTemplate.opsForValue().get(request.getMachineCode()); + if (StringUtil.isNotNullOrEmpty(machineCode) && Integer.valueOf(machineCode) >= maxNumber) { + return ExecutedResult.failed("登录次数限制,请10分钟后重新登录!"); } - // 构建登录用户 - LoginUserDTO loginUser = new LoginUserDTO(); - loginUser.setUserId(user.getId().toString()); - loginUser.setUserType(user.getUserType()); - loginUser.setNickName(user.getNickName()); - loginUser.setPhone(user.getContact()); + if (checkPassword(user, request.getPassword())) { + // 构建登录用户 + LoginUserDTO loginUser = new LoginUserDTO(); + loginUser.setUserId(user.getId().toString()); + loginUser.setUserType(user.getUserType()); + loginUser.setNickName(user.getNickName()); + loginUser.setPhone(user.getContact()); + // 保存用户信息到jwt + String token = JWTUtil.getToken(loginUser); + ResAdminLogin result = this.getListPower4Admin(user); + result.setName(user.getNickName()); + result.setToken(token); + return ExecutedResult.success(result); + } else { + Integer newAttempts = StringUtil.isNullOrEmpty(machineCode) ? 1 : Integer.valueOf(machineCode) + 1; + redisTemplate.opsForValue().set(request.getMachineCode(), newAttempts.toString()); + redisTemplate.expire(request.getMachineCode(), 10, TimeUnit.MINUTES); + } - // 保存用户信息到jwt - String token = JWTUtil.getToken(loginUser); - ResAdminLogin result = this.getListPower4Admin(user); - result.setName(user.getNickName()); - result.setToken(token); - - return ExecutedResult.success(result); + return ExecutedResult.failed("账号或密码错误!"); } + private static boolean checkPassword(AdminUserPO user, String passWord) throws Exception { + if (Objects.isNull(user)) { + return false; + } + if (BooleanUtils.isFalse(Objects.equals(user.getStatus(), EState.NORMAL.getValue()))) { + return false; + } + if (BooleanUtils.isFalse(MD5Util.encrypt(passWord + ConstantFactory.KEY_PASSWORD).equals(user.getPassword()))) { + return false; + } + return true; + } + /** * 生成验证码图片并返回其 Base64 编码字符串 * @@ -488,7 +514,7 @@ List<AdminMenuPO> listRoot = listMenu.stream().filter(c -> Objects.equals(c.getLevel(), 1)).collect(Collectors.toList()); listRoot = listRoot.stream() - .sorted(Comparator.comparing(AdminMenuPO::getSort)) + .sorted(Comparator.comparing(AdminMenuPO::getSort).reversed()) .collect(Collectors.toList()); if (ListUtil.isNotNullOrEmpty(listRoot)) { for (AdminMenuPO item : listRoot) { -- Gitblit v1.9.3