| | |
| | | } |
| | | |
| | | // 管理员登录 |
| | | 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 编码字符串 |
| | | * |
| | |
| | | |
| | | 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) { |