From fadb5faf0d91cc37614871d72f0328ba7fae3d56 Mon Sep 17 00:00:00 2001 From: shahaibo <1023316923@qq.com> Date: Tue, 12 Nov 2024 15:34:43 +0800 Subject: [PATCH] =?UTF-8?q?TASK:=E8=B0=B7=E6=AD=8C=E7=99=BB=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../da/mapper/primary/entity/GoogleUser.java | 6 ++- .../ai/da/model/vo/GoogleTokenResponse.java | 3 ++ .../da/service/impl/AccountServiceImpl.java | 47 ++++++++++++------- 3 files changed, 38 insertions(+), 18 deletions(-) diff --git a/src/main/java/com/ai/da/mapper/primary/entity/GoogleUser.java b/src/main/java/com/ai/da/mapper/primary/entity/GoogleUser.java index b15410e8..ba2e5139 100644 --- a/src/main/java/com/ai/da/mapper/primary/entity/GoogleUser.java +++ b/src/main/java/com/ai/da/mapper/primary/entity/GoogleUser.java @@ -4,7 +4,11 @@ import lombok.Data; @Data public class GoogleUser { - private String id; + private String sub; // 用户唯一标识 private String email; private String name; + private String picture; + private boolean emailVerified; + private String givenName; + private String familyName; } diff --git a/src/main/java/com/ai/da/model/vo/GoogleTokenResponse.java b/src/main/java/com/ai/da/model/vo/GoogleTokenResponse.java index f742d3c0..71676761 100644 --- a/src/main/java/com/ai/da/model/vo/GoogleTokenResponse.java +++ b/src/main/java/com/ai/da/model/vo/GoogleTokenResponse.java @@ -6,5 +6,8 @@ import lombok.Data; public class GoogleTokenResponse { private String accessToken; private String idToken; + private long expiresIn; + private String tokenType; + private String scope; } diff --git a/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java b/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java index 2d826c03..bead403e 100644 --- a/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java @@ -1857,27 +1857,39 @@ public class AccountServiceImpl extends ServiceImpl impl @Override public String googleCallback(String code, HttpSession session) { try { - log.info("code:" + code); + log.info("code: " + code); // 使用 code 获取 Google 用户信息 GoogleUser googleUser = getGoogleUserFromCode(code); - log.info("googleUser:" + JSON.toJSONString(googleUser)); + log.info("googleUser: " + JSON.toJSONString(googleUser)); // 检查数据库中是否已有该用户 -// QueryWrapper qw = new QueryWrapper<>(); -// qw.lambda().eq(AccountExtend::getAuth, googleUser.getId()); -// List accountExtends = accountExtendMapper.selectList(qw); -// Account existingUser = findUserByGoogleId(googleUser.getId()); - return "Login successful"; -// if (CollectionUtil.isNotEmpty(accountExtends)) { -// // 用户已存在,直接登录 -//// session.setAttribute("user", existingUser); -// return "Login successful"; -// } else { -// // 用户不存在,创建新用户(自动注册) -//// User newUser = googleAuthService.registerNewUser(googleUser); -//// session.setAttribute("user", newUser); -// return "Registration and login successful"; -// } + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.lambda().eq(Account::getUserEmail, googleUser.getEmail()); // 根据邮箱查询用户 + List accounts = accountMapper.selectList(queryWrapper); + + if (CollectionUtil.isNotEmpty(accounts)) { + // 用户已存在,直接登录 + session.setAttribute("user", accounts.get(0)); + return "Login successful"; + } else { + // 用户不存在,创建新用户(自动注册) + Account newUser = new Account(); + newUser.setUserEmail(googleUser.getEmail()); + newUser.setUserName(googleUser.getName()); + newUser.setUserPassword("Third-000000"); + newUser.setLanguage(Language.ENGLISH.name()); + newUser.setValidStartTime(System.currentTimeMillis()); + newUser.setValidEndTime(toDayEnd(Instant.now().plus(5, ChronoUnit.DAYS).toEpochMilli())); + newUser.setCreateDate(new Date()); + newUser.setIsTrial(1); + newUser.setIsBeginner(1); + newUser.setCredits(BigDecimal.valueOf(100)); + newUser.setSystemUser(3); + accountMapper.insert(newUser); + session.setAttribute("user", newUser); + + return "Registration and login successful"; + } } catch (Exception e) { return "Error processing Google login: " + e.getMessage(); } @@ -1887,6 +1899,7 @@ public class AccountServiceImpl extends ServiceImpl impl private static final String USER_INFO_URL = "https://www.googleapis.com/oauth2/v3/userinfo"; private static final String CLIENT_ID = "194770296147-njd68pm7tnapgonkj2h48mhf63n15n3f.apps.googleusercontent.com"; private static final String CLIENT_SECRET = "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"; +// private static final String REDIRECT_URI = "https://0551-117-143-125-51.ngrok-free.app/api/third/party/auth/google_callback"; private static final String REDIRECT_URI = "https://develop.api.aida.com.hk/api/third/party/auth/google_callback"; public GoogleUser getGoogleUserFromCode(String code) {