From 4f149263a5e4e2a4683b75bde9eb60c3ea575239 Mon Sep 17 00:00:00 2001 From: litianxiang Date: Wed, 24 Dec 2025 11:49:05 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=94=A8=E6=88=B7=E4=BF=A1?= =?UTF-8?q?=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/LoginController.java | 8 +++ .../lanecarford/service/LoginService.java | 2 + .../service/impl/LoginServiceImpl.java | 60 +++++++++++++++++++ 3 files changed, 70 insertions(+) diff --git a/src/main/java/com/aida/lanecarford/controller/LoginController.java b/src/main/java/com/aida/lanecarford/controller/LoginController.java index 6f5251d..d332c73 100644 --- a/src/main/java/com/aida/lanecarford/controller/LoginController.java +++ b/src/main/java/com/aida/lanecarford/controller/LoginController.java @@ -121,4 +121,12 @@ public class LoginController { return ApiResponse.success(loginService.parseGoogleAccessToken(accessToken)); } + //修改用户信息 + @Operation(summary = "修改用户信息", + description = "传username,email,password三个值,password要加密") + @PostMapping("/updateUserInfo") + public ApiResponse updateUserInfo(@RequestBody User user) { + return ApiResponse.success(loginService.updateUserInfo(user)); + } + } diff --git a/src/main/java/com/aida/lanecarford/service/LoginService.java b/src/main/java/com/aida/lanecarford/service/LoginService.java index e391aa8..0692e38 100644 --- a/src/main/java/com/aida/lanecarford/service/LoginService.java +++ b/src/main/java/com/aida/lanecarford/service/LoginService.java @@ -36,4 +36,6 @@ public interface LoginService extends IService { LoginVO parseGoogleCredential(String credential) throws ParseException, JOSEException, IOException; LoginVO parseGoogleAccessToken(String accessToken); + + String updateUserInfo(User user); } diff --git a/src/main/java/com/aida/lanecarford/service/impl/LoginServiceImpl.java b/src/main/java/com/aida/lanecarford/service/impl/LoginServiceImpl.java index 38719ec..d559dd1 100644 --- a/src/main/java/com/aida/lanecarford/service/impl/LoginServiceImpl.java +++ b/src/main/java/com/aida/lanecarford/service/impl/LoginServiceImpl.java @@ -353,6 +353,66 @@ public class LoginServiceImpl extends ServiceImpl implements L } } + @Override + public String updateUserInfo(User user) { + // 1. 获取当前登录用户ID + AuthPrincipalVO userHolder = UserContext.getUserHolder(); + if (Objects.isNull(userHolder)) { + throw new BusinessException("User not logged in", "用户未登录", ResultEnum.ERROR.getCode()); + } + + Long userId = userHolder.getId(); + + // 2. 验证用户是否存在 + User existingUser = getById(userId); + if (Objects.isNull(existingUser)) { + throw new BusinessException("User not found", "用户不存在", ResultEnum.ERROR.getCode()); + } + + // 3. 构建更新条件,只更新有值的字段 + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.lambda().eq(User::getId, userId); + + boolean hasUpdate = false; + + // 如果username有值,则更新 + if (!StringUtil.isNullOrEmpty(user.getUsername())) { + updateWrapper.lambda().set(User::getUsername, user.getUsername()); + hasUpdate = true; + } + + // 如果email有值,则更新 + if (!StringUtil.isNullOrEmpty(user.getEmail())) { + updateWrapper.lambda().set(User::getEmail, user.getEmail()); + hasUpdate = true; + } + + // 如果password有值,则更新 + if (!StringUtil.isNullOrEmpty(user.getPassword())) { + updateWrapper.lambda().set(User::getPassword, user.getPassword()); + hasUpdate = true; + } + + // 4. 如果没有需要更新的字段,返回提示信息 + if (!hasUpdate) { + return "No fields to update"; + } + + // 5. 执行更新 + boolean updated = update(updateWrapper); + + if (updated) { + log.info("用户信息更新成功 userId={}, updatedFields=username:{}, email:{}, password:{}", + userId, + !StringUtil.isNullOrEmpty(user.getUsername()), + !StringUtil.isNullOrEmpty(user.getEmail()), + !StringUtil.isNullOrEmpty(user.getPassword())); + return "User information updated successfully"; + } else { + throw new BusinessException("Failed to update user information", "更新用户信息失败", ResultEnum.ERROR.getCode()); + } + } + private static final String TOKEN_URL = "https://oauth2.googleapis.com/token"; public GoogleUser getGoogleUserFromCode(String code) {