From e5e514b522b773d7b0fdd75e8370a45e7b4b9836 Mon Sep 17 00:00:00 2001 From: xupei Date: Mon, 11 Nov 2024 17:31:55 +0800 Subject: [PATCH 1/2] =?UTF-8?q?ws=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ai/da/common/config/MyTaskScheduler.java | 4 +- .../com/ai/da/common/task/AccountTask.java | 10 +- .../com/ai/da/common/task/PaypalTask.java | 2 +- .../com/ai/da/common/task/StripeTask.java | 2 +- .../da/controller/ThirdPartyController.java | 10 +- .../com/ai/da/service/AccountService.java | 2 +- .../da/service/impl/AccountServiceImpl.java | 150 +++++++++--------- src/main/resources/application.properties | 4 +- 8 files changed, 92 insertions(+), 92 deletions(-) diff --git a/src/main/java/com/ai/da/common/config/MyTaskScheduler.java b/src/main/java/com/ai/da/common/config/MyTaskScheduler.java index 61e964ea..95c55e9a 100644 --- a/src/main/java/com/ai/da/common/config/MyTaskScheduler.java +++ b/src/main/java/com/ai/da/common/config/MyTaskScheduler.java @@ -51,7 +51,7 @@ public class MyTaskScheduler { // 定时任务,每十五天执行一次 // @Scheduled(cron = "0 0 0 ? * MON") -// @Scheduled(cron = "0 0 0 */15 * ?") + @Scheduled(cron = "0 0 0 */15 * ?") public void checkExpiry() { // 检测正式用户是否快要过期 QueryWrapper qw = new QueryWrapper<>(); @@ -85,7 +85,7 @@ public class MyTaskScheduler { } } } -// @Scheduled(cron = "0 0 9 * * ?") + @Scheduled(cron = "0 0 9 * * ?") public void sendTrialOrderExcelToManagements() { // 获取前一天日期 LocalDate yesterday = LocalDate.now().minusDays(1); diff --git a/src/main/java/com/ai/da/common/task/AccountTask.java b/src/main/java/com/ai/da/common/task/AccountTask.java index cfc65fd4..6950878d 100644 --- a/src/main/java/com/ai/da/common/task/AccountTask.java +++ b/src/main/java/com/ai/da/common/task/AccountTask.java @@ -19,21 +19,21 @@ public class AccountTask { /** * 每周日晚上刷新 年付用户、月付用户的积分 */ -// @Scheduled(cron = "59 59 23 ? * SUN") + @Scheduled(cron = "59 59 23 ? * SUN") // @Scheduled(cron = "59 59 23 * * ?") public void refreshCreditsMonthly() { log.info("每周日晚11:59:59刷新付费用户积分为 6000"); accountService.refreshCreditsWeekly(); } -// @Scheduled(cron = "0 */5 * * * *") // Run every 5 minutes + @Scheduled(cron = "0 */5 * * * *") // Run every 5 minutes public void getPaidUser() { // 获取code-create 表中 指定日期之后 订单状态为wc-processing的订单 accountService.extendValidityForCC(); } // 每天凌晨0点执行一次 -// @Scheduled(cron = "0 0 0 * * ?") + @Scheduled(cron = "0 0 0 * * ?") public void cancelActivityBenefits() { // 1、查询当前所有参与了活动且过期的用户 List accountList = accountService.getExpiredUserBySystemUser(4); @@ -46,7 +46,7 @@ public class AccountTask { } // 每天检测正式用户到期情况,每天凌晨0点执行 -// @Scheduled(cron = "0 0 0 * * ?") + @Scheduled(cron = "0 0 0 * * ?") public void paidUserToVisitor() { // 1、查询当前已过期正式用户或试用用户 List accountList = accountService.getExpiredUserBySystemUser(1); @@ -63,7 +63,7 @@ public class AccountTask { /** * 将Code-Create上注册的用户添加为AiDA的游客 */ -// @Scheduled(cron = "0 */5 * * * *") // Run every 5 minutes + @Scheduled(cron = "0 */5 * * * *") // Run every 5 minutes public void registerUserToVisitor() { accountService.registerUserToVisitor(); } diff --git a/src/main/java/com/ai/da/common/task/PaypalTask.java b/src/main/java/com/ai/da/common/task/PaypalTask.java index fa069971..865eaaa4 100644 --- a/src/main/java/com/ai/da/common/task/PaypalTask.java +++ b/src/main/java/com/ai/da/common/task/PaypalTask.java @@ -23,7 +23,7 @@ public class PaypalTask { @Resource private PayPalCheckoutService payPalCheckoutService; -// @Scheduled(cron = "0/30 * * * * ?") + @Scheduled(cron = "0/30 * * * * ?") public void orderConfirm() throws SerializeException { // log.info("PayPal orderConfirm 被执行......"); diff --git a/src/main/java/com/ai/da/common/task/StripeTask.java b/src/main/java/com/ai/da/common/task/StripeTask.java index d4a6fbaf..45d98997 100644 --- a/src/main/java/com/ai/da/common/task/StripeTask.java +++ b/src/main/java/com/ai/da/common/task/StripeTask.java @@ -22,7 +22,7 @@ public class StripeTask { @Resource private StripeService stripeService; -// @Scheduled(cron = "0/30 * * * * ?") + @Scheduled(cron = "0/30 * * * * ?") public void orderConfirm() throws SerializeException { // 查看超过30分钟以上仍未支付的订单 置为超时订单 diff --git a/src/main/java/com/ai/da/controller/ThirdPartyController.java b/src/main/java/com/ai/da/controller/ThirdPartyController.java index e077fa8c..b8d3ebbc 100644 --- a/src/main/java/com/ai/da/controller/ThirdPartyController.java +++ b/src/main/java/com/ai/da/controller/ThirdPartyController.java @@ -116,9 +116,9 @@ public class ThirdPartyController { return Response.success(accountService.updateNoLoginRequiredNew(noLoginRequiredDTO, request)); } - @CrossOrigin - @GetMapping("/auth/google_callback") - public Response googleCallback(@RequestParam("code") String code, HttpSession session) { - return Response.success(accountService.googleCallback(code, session)); - } +// @CrossOrigin +// @GetMapping("/auth/google_callback") +// public Response googleCallback(@RequestParam("code") String code, HttpSession session) { +// return Response.success(accountService.googleCallback(code, session)); +// } } diff --git a/src/main/java/com/ai/da/service/AccountService.java b/src/main/java/com/ai/da/service/AccountService.java index bd9c99b4..276c5645 100644 --- a/src/main/java/com/ai/da/service/AccountService.java +++ b/src/main/java/com/ai/da/service/AccountService.java @@ -183,7 +183,7 @@ public interface AccountService extends IService { void halfPricePromotion(); - String googleCallback(String code, HttpSession session); +// String googleCallback(String code, HttpSession session); List getPaidCustomerEmail(); } 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..787ec87d 100644 --- a/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java @@ -1854,82 +1854,82 @@ public class AccountServiceImpl extends ServiceImpl impl log.info("邮箱绑定更改完成,用户id:{},新邮箱:{}", accountId, newMailbox); } - @Override - public String googleCallback(String code, HttpSession session) { - try { - log.info("code:" + code); - // 使用 code 获取 Google 用户信息 - GoogleUser googleUser = getGoogleUserFromCode(code); - 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"; -// } - } catch (Exception e) { - return "Error processing Google login: " + e.getMessage(); - } - } - - private static final String TOKEN_URL = "https://oauth2.googleapis.com/token"; - 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://develop.api.aida.com.hk/api/third/party/auth/google_callback"; - - public GoogleUser getGoogleUserFromCode(String code) { - // Step 1: Exchange code for access_token - String accessToken = getAccessToken(code); - log.info("accessToken" + accessToken); - - // Step 2: Use access_token to get Google User info - return getGoogleUserInfo(accessToken); - } - - private String getAccessToken(String code) { - RestTemplate restTemplate = new RestTemplate(); - Map params = new HashMap<>(); - params.put("client_id", CLIENT_ID); - params.put("client_secret", CLIENT_SECRET); - params.put("redirect_uri", REDIRECT_URI); - params.put("grant_type", "authorization_code"); - params.put("code", code); - - // 使用 RestTemplate 发起请求以获取 access_token - GoogleTokenResponse response = restTemplate.postForObject(TOKEN_URL, params, GoogleTokenResponse.class); - return response.getAccessToken(); - } - - private GoogleUser getGoogleUserInfo(String accessToken) { - RestTemplate restTemplate = new RestTemplate(); - String url = USER_INFO_URL + "?access_token=" + accessToken; - return restTemplate.getForObject(url, GoogleUser.class); - } - -// public User findUserByGoogleId(String googleId) { -// // 从数据库中根据 Google ID 查找用户 -// return userRepository.findByGoogleId(googleId); +// @Override +// public String googleCallback(String code, HttpSession session) { +// try { +// log.info("code:" + code); +// // 使用 code 获取 Google 用户信息 +// GoogleUser googleUser = getGoogleUserFromCode(code); +// 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"; +//// } +// } catch (Exception e) { +// return "Error processing Google login: " + e.getMessage(); +// } // } - -// public User registerNewUser(GoogleUser googleUser) { -// // 创建并保存新用户 -// User newUser = new User(); -// newUser.setGoogleId(googleUser.getId()); -// newUser.setEmail(googleUser.getEmail()); -// newUser.setUsername(googleUser.getName()); -// return userRepository.save(newUser); +// +// private static final String TOKEN_URL = "https://oauth2.googleapis.com/token"; +// 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://develop.api.aida.com.hk/api/third/party/auth/google_callback"; +// +// public GoogleUser getGoogleUserFromCode(String code) { +// // Step 1: Exchange code for access_token +// String accessToken = getAccessToken(code); +// log.info("accessToken" + accessToken); +// +// // Step 2: Use access_token to get Google User info +// return getGoogleUserInfo(accessToken); // } +// +// private String getAccessToken(String code) { +// RestTemplate restTemplate = new RestTemplate(); +// Map params = new HashMap<>(); +// params.put("client_id", CLIENT_ID); +// params.put("client_secret", CLIENT_SECRET); +// params.put("redirect_uri", REDIRECT_URI); +// params.put("grant_type", "authorization_code"); +// params.put("code", code); +// +// // 使用 RestTemplate 发起请求以获取 access_token +// GoogleTokenResponse response = restTemplate.postForObject(TOKEN_URL, params, GoogleTokenResponse.class); +// return response.getAccessToken(); +// } +// +// private GoogleUser getGoogleUserInfo(String accessToken) { +// RestTemplate restTemplate = new RestTemplate(); +// String url = USER_INFO_URL + "?access_token=" + accessToken; +// return restTemplate.getForObject(url, GoogleUser.class); +// } +// +//// public User findUserByGoogleId(String googleId) { +//// // 从数据库中根据 Google ID 查找用户 +//// return userRepository.findByGoogleId(googleId); +//// } +// +//// public User registerNewUser(GoogleUser googleUser) { +//// // 创建并保存新用户 +//// User newUser = new User(); +//// newUser.setGoogleId(googleUser.getId()); +//// newUser.setEmail(googleUser.getEmail()); +//// newUser.setUsername(googleUser.getName()); +//// return userRepository.save(newUser); +//// } } diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 974fee23..8550475d 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -2,7 +2,7 @@ #spring.profiles.active=test #����application-prod�ļ�(��������) -#spring.profiles.active=prod +spring.profiles.active=prod #����application-dev�ļ�(��������) -spring.profiles.active=dev +#spring.profiles.active=dev From b70f909a32c848fa2bc38303de75b346ad6494c6 Mon Sep 17 00:00:00 2001 From: xupei Date: Thu, 28 Nov 2024 17:14:11 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E4=BC=98=E5=8C=96-=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E5=B0=86Code-Create=E6=B3=A8=E5=86=8C=E7=9A=84=E6=96=B0?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E6=B7=BB=E5=8A=A0=E5=88=B0AiDA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../da/service/impl/AccountServiceImpl.java | 42 +++++++++++++------ 1 file changed, 29 insertions(+), 13 deletions(-) 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 787ec87d..086a9df7 100644 --- a/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java @@ -1392,7 +1392,7 @@ public class AccountServiceImpl extends ServiceImpl impl private static final String QUERY_MAXIMUM_USERID = "SELECT MAX(ID) AS max_id FROM pmr_users;"; - private static final String QUERY_NEW_USER_EMAIL = "SELECT user_email FROM pmr_users " + + private static final String QUERY_NEW_USER_EMAIL = "SELECT user_email, user_nicename FROM pmr_users " + "WHERE ID > ? "; @Value("${redis.key.maximumUserId}") @@ -1404,7 +1404,8 @@ public class AccountServiceImpl extends ServiceImpl impl @Override @Transactional(rollbackFor = Exception.class) public void registerUserToVisitor(){ - ArrayList newUserEmails = new ArrayList<>(); + ArrayList> newUsersInfo = new ArrayList<>(); + ArrayList allEmail = new ArrayList<>(); long maxUserId = CommonConstant.MAXIMUM_USER_ID; try (Connection connection = dataSource.getConnection(); PreparedStatement preparedStatement = connection.prepareStatement(QUERY_MAXIMUM_USERID)) { @@ -1420,9 +1421,14 @@ public class AccountServiceImpl extends ServiceImpl impl // 填充参数 - 历史最大用户ID newUserEmail.setLong(1, maxUserIdHistory); try (ResultSet queryEmailResultSet = newUserEmail.executeQuery()) { - if (queryEmailResultSet.next()) { + while (queryEmailResultSet.next()) { String email = queryEmailResultSet.getString("user_email"); - newUserEmails.add(email); + String username = queryEmailResultSet.getString("user_nicename"); + HashMap info = new HashMap<>(); + info.put("email", email); + info.put("username", username); + newUsersInfo.add(info); + allEmail.add(email); } /*else { log.error("未知错误。code-create的用户表中没有付费用户的信息"); throw new BusinessException("user info missing"); @@ -1437,22 +1443,32 @@ public class AccountServiceImpl extends ServiceImpl impl // return null; } - if (!newUserEmails.isEmpty()){ + if (!newUsersInfo.isEmpty()){ // 查询这些邮箱在aida上是否有账号 QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.in("user_email", newUserEmails).select("user_email"); + queryWrapper.in("user_email", allEmail).select("user_email"); + // 重复的邮箱 List collect = baseMapper.selectList(queryWrapper).stream().map(Account::getUserEmail).collect(Collectors.toList()); if (!collect.isEmpty()){ - // 移除Code-Create新增用户中在AiDA已有账号的邮箱 - newUserEmails.removeAll(collect); + // 移除Code-Create新增用户中在AiDA已有账号的邮箱,allEmail中剩余邮箱均为新用户邮箱 + allEmail.removeAll(collect); + if (!allEmail.isEmpty()){ + for (Map userInfo : newUsersInfo){ + String email = userInfo.get("email"); + if (!allEmail.contains(email)) { + newUsersInfo.remove(userInfo); // 移除不在 allEmail 中的用户 + } + } + } + } // 将新增用户添加到AiDA,身份为游客 - if (!newUserEmails.isEmpty()){ - newUserEmails.forEach(email -> { + if (!newUsersInfo.isEmpty()){ + newUsersInfo.forEach(userInfo -> { Account account = new Account(); - account.setUserEmail(email); - account.setUserName(email); + account.setUserEmail(userInfo.get("email")); + account.setUserName(userInfo.get("username")); account.setUserPassword("Third-000000"); account.setLanguage(Language.ENGLISH.name()); account.setValidStartTime(Instant.now().toEpochMilli()); @@ -1463,7 +1479,7 @@ public class AccountServiceImpl extends ServiceImpl impl account.setSystemUser(0); baseMapper.insert(account); // 邮件通知用户 - SendEmailUtil.notificationForRegisterUser(email); + SendEmailUtil.notificationForRegisterUser(userInfo.get("email")); }); } // 记录当前最大的用户id