From 0bcfca6b2561d096a2ce26e2e7200cd0768b2b6d Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期二, 12 五月 2026 09:27:03 +0800
Subject: [PATCH] Merge branch '1.0' of http://120.76.84.145:10101/gitblit/r/java/Robotaxi into 1.0

---
 xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/SysLoginService.java |   75 +++++++++++++++++++++++++++++++++++++
 1 files changed, 74 insertions(+), 1 deletions(-)

diff --git a/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/SysLoginService.java b/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/SysLoginService.java
index 52cd945..981ff54 100644
--- a/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/SysLoginService.java
+++ b/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/SysLoginService.java
@@ -114,6 +114,54 @@
 		// recordLogService.recordLogininfor(request, user.getId().intValue(), username, Constants.LOGIN_SUCCESS_STATUS, "登录成功");
 		return userInfo;
 	}
+
+    /**
+     * 登录
+     */
+    public LoginUser login(String username, HttpServletRequest request) {
+        username = username.trim();
+        // 查询用户信息
+        SysUser user = userService.selectUserByUserName(username);
+        if (StringUtils.isNull(user)) {
+            throw new ServiceException("帐号不存在或已被删除", I18nKeyConstant.ACCOUNT_NOT_EXISTS);
+        }
+        // 角色集合
+        Set<String> roles = permissionService.getRolePermission(user);
+        // 权限集合
+        Set<String> menuPermission = permissionService.getMenuPermission(user);
+        LoginUser userInfo = new LoginUser();
+        userInfo.setSysUser(user);
+        userInfo.setRoles(roles);
+        userInfo.setPermissions(menuPermission);
+
+        if (StringUtils.isNull(user)) {
+            recordLogService.recordLogininfor(request, null, username, Constants.LOGIN_FAIL_STATUS, "登录用户不存在");
+            throw new ServiceException("用户名/密码错误", I18nKeyConstant.LOGIN_USERNAME_PASSWORD);
+        }
+
+        // 用户名不在指定范围内 错误
+        if (username.length() < UserConstants.USERNAME_MIN_LENGTH
+                || username.length() > UserConstants.USERNAME_MAX_LENGTH) {
+            recordLogService.recordLogininfor(request, user.getId().intValue(), username, Constants.LOGIN_FAIL_STATUS, "用户名不在指定范围");
+            throw new ServiceException("用户名不在指定范围",I18nKeyConstant.LOGIN_USERNAME_NOT_VALID);
+        }
+        // IP黑名单校验
+        String blackStr = Convert.toStr(redisService.getCacheObject(CacheConstants.SYS_LOGIN_BLACKIPLIST));
+        if (IpUtils.isMatchedIp(blackStr, IpUtils.getIpAddr())) {
+            recordLogService.recordLogininfor(request, user.getId().intValue(), username, Constants.LOGIN_FAIL_STATUS, "很遗憾,访问IP已被列入系统黑名单");
+            throw new ServiceException("很遗憾,访问IP已被列入系统黑名单", I18nKeyConstant.LOGIN_BLACK_LIST);
+        }
+
+        if (user.getDeleted()) {
+            recordLogService.recordLogininfor(request, user.getId().intValue(), username, Constants.LOGIN_FAIL_STATUS, "对不起,您的账号已被删除");
+            throw new ServiceException("对不起,您的账号:" + username + " 已被删除");
+        }
+        if (Integer.valueOf("1").equals(user.getStatus())) {
+            recordLogService.recordLogininfor(request, user.getId().intValue(), username, Constants.LOGIN_FAIL_STATUS, "用户已停用,请联系管理员");
+            throw new ServiceException("您的账号:" + username + " 已禁用", I18nKeyConstant.LOGIN_ACCOUNT_DISABLED, new Object[]{username});
+        }
+        return userInfo;
+    }
 	
 	public void logout(String loginName, HttpServletRequest request) {
 		recordLogService.recordLogininfor(request, null, loginName, Constants.LOGIN_SUCCESS_STATUS, "退出成功");
@@ -179,6 +227,8 @@
 		operationsUserService.updateById(operationsUser);
 		return loginOperationUser;
 	}
+
+
 	public LoginOperationUser verificationCodeLogin(String phoneNumber, String code, Integer deviceType, HttpServletRequest request) {
 		LoginOperationUser loginOperationUser = new LoginOperationUser();
 		phoneNumber = phoneNumber.trim();
@@ -213,7 +263,30 @@
 		operationsUserService.updateById(operationsUser);
 		return loginOperationUser;
 	}
-	public Boolean verificationCodeUpdate(UpdatePasswordDTO updatePasswordDTO, HttpServletRequest request) {
+
+
+    public LoginOperationUser verificationCodeLogin(String phoneNumber, Integer deviceType, HttpServletRequest request) {
+        LoginOperationUser loginOperationUser = new LoginOperationUser();
+        phoneNumber = phoneNumber.trim();
+        // 查询运维用户信息
+        XpOperationsUser operationsUser = operationsUserService.lambdaQuery().eq(
+                XpOperationsUser::getPhoneNumber, phoneNumber
+        ).last("limit 1").one();
+        if (StringUtils.isNull(operationsUser)) {
+            throw new ServiceException("验证码错误!");
+        }
+        if (!operationsUser.getStatus()){
+            throw new ServiceException("账号已禁用!");
+        }
+        loginOperationUser.setXpOperationsUser(operationsUser);
+        //更新用户登录设备类型
+        operationsUser.setDeviceType(deviceType);
+        operationsUserService.updateById(operationsUser);
+        return loginOperationUser;
+    }
+
+
+    public Boolean verificationCodeUpdate(UpdatePasswordDTO updatePasswordDTO, HttpServletRequest request) {
 		String phoneNumber = updatePasswordDTO.getPhoneNumber();
 		String code = updatePasswordDTO.getVerificationCode();
 		phoneNumber = phoneNumber.trim();

--
Gitblit v1.7.1