From c6f02392cbad2917e526503ca43d91aa5c9bce62 Mon Sep 17 00:00:00 2001 From: Dingxindong Date: Wed, 7 Dec 2022 15:08:18 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E5=8E=BB=E9=99=A4=E6=97=A0=E7=94=A8?= =?UTF-8?q?=E5=BC=95=E7=94=A8=EF=BC=8C=E4=BB=A5=E5=8F=8A=E8=A7=A3=E5=86=B3?= =?UTF-8?q?=E6=BD=9C=E5=9C=A8=E7=9A=84=E7=A9=BA=E6=8C=87=E9=92=88=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../alipay/impl/AlipayMiniProgramAccountServiceImpl.java | 1 - .../handler/deduplication/limit/SlideWindowLimitService.java | 4 ++-- .../java/com/java3y/austin/support/utils/RedisUtils.java | 5 +++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/austin-handler/src/main/java/com/java3y/austin/handler/alipay/impl/AlipayMiniProgramAccountServiceImpl.java b/austin-handler/src/main/java/com/java3y/austin/handler/alipay/impl/AlipayMiniProgramAccountServiceImpl.java index 4fa1d56..a23ef71 100644 --- a/austin-handler/src/main/java/com/java3y/austin/handler/alipay/impl/AlipayMiniProgramAccountServiceImpl.java +++ b/austin-handler/src/main/java/com/java3y/austin/handler/alipay/impl/AlipayMiniProgramAccountServiceImpl.java @@ -6,7 +6,6 @@ import com.alipay.api.AlipayConfig; import com.alipay.api.DefaultAlipayClient; import com.alipay.api.domain.AlipayOpenAppMiniTemplatemessageSendModel; import com.alipay.api.request.AlipayOpenAppMiniTemplatemessageSendRequest; -import com.java3y.austin.common.constant.SendAccountConstant; import com.java3y.austin.common.dto.account.AlipayMiniProgramAccount; import com.java3y.austin.handler.alipay.AlipayMiniProgramAccountService; import com.java3y.austin.handler.domain.alipay.AlipayMiniProgramParam; diff --git a/austin-handler/src/main/java/com/java3y/austin/handler/deduplication/limit/SlideWindowLimitService.java b/austin-handler/src/main/java/com/java3y/austin/handler/deduplication/limit/SlideWindowLimitService.java index 5bdad1c..ff3d04a 100644 --- a/austin-handler/src/main/java/com/java3y/austin/handler/deduplication/limit/SlideWindowLimitService.java +++ b/austin-handler/src/main/java/com/java3y/austin/handler/deduplication/limit/SlideWindowLimitService.java @@ -12,7 +12,7 @@ import org.springframework.scripting.support.ResourceScriptSource; import org.springframework.stereotype.Service; import javax.annotation.PostConstruct; -import java.util.Arrays; +import java.util.Collections; import java.util.HashSet; import java.util.Set; @@ -56,7 +56,7 @@ public class SlideWindowLimitService extends AbstractLimitService { String key = LIMIT_TAG + deduplicationSingleKey(service, taskInfo, receiver); String scoreValue = String.valueOf(IdUtil.getSnowflake().nextId()); String score = String.valueOf(nowTime); - if (redisUtils.execLimitLua(redisScript, Arrays.asList(key), String.valueOf(param.getDeduplicationTime() * 1000), score, String.valueOf(param.getCountNum()), scoreValue)) { + if (redisUtils.execLimitLua(redisScript, Collections.singletonList(key), String.valueOf(param.getDeduplicationTime() * 1000), score, String.valueOf(param.getCountNum()), scoreValue)) { filterReceiver.add(receiver); } diff --git a/austin-support/src/main/java/com/java3y/austin/support/utils/RedisUtils.java b/austin-support/src/main/java/com/java3y/austin/support/utils/RedisUtils.java index f8977de..0b73201 100644 --- a/austin-support/src/main/java/com/java3y/austin/support/utils/RedisUtils.java +++ b/austin-support/src/main/java/com/java3y/austin/support/utils/RedisUtils.java @@ -170,13 +170,14 @@ public class RedisUtils { try { Long execute = redisTemplate.execute(redisScript, keys, args); - + if (execute == null) { + return false; + } return CommonConstant.TRUE.equals(execute.intValue()); } catch (Exception e) { log.error("redis execLimitLua fail! e:{}", Throwables.getStackTraceAsString(e)); } - return false; } From 350e969afb515232c859b62d886fabc2a9214367 Mon Sep 17 00:00:00 2001 From: Dingxindong Date: Wed, 7 Dec 2022 15:48:53 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E6=94=B9=E7=94=A8=E5=8D=95=E4=BE=8B?= =?UTF-8?q?=E7=9A=84=E6=96=B9=E5=BC=8F=20=E5=88=9D=E5=A7=8B=E5=8C=96?= =?UTF-8?q?=E6=94=AF=E4=BB=98=E5=AE=9D=E5=B0=8F=E7=A8=8B=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AlipayMiniProgramAccountServiceImpl.java | 33 ++++++++-------- .../handler/config/AlipayClientSingleton.java | 39 +++++++++++++++++++ 2 files changed, 56 insertions(+), 16 deletions(-) create mode 100644 austin-handler/src/main/java/com/java3y/austin/handler/config/AlipayClientSingleton.java diff --git a/austin-handler/src/main/java/com/java3y/austin/handler/alipay/impl/AlipayMiniProgramAccountServiceImpl.java b/austin-handler/src/main/java/com/java3y/austin/handler/alipay/impl/AlipayMiniProgramAccountServiceImpl.java index a23ef71..1f5f814 100644 --- a/austin-handler/src/main/java/com/java3y/austin/handler/alipay/impl/AlipayMiniProgramAccountServiceImpl.java +++ b/austin-handler/src/main/java/com/java3y/austin/handler/alipay/impl/AlipayMiniProgramAccountServiceImpl.java @@ -8,6 +8,7 @@ import com.alipay.api.domain.AlipayOpenAppMiniTemplatemessageSendModel; import com.alipay.api.request.AlipayOpenAppMiniTemplatemessageSendRequest; import com.java3y.austin.common.dto.account.AlipayMiniProgramAccount; import com.java3y.austin.handler.alipay.AlipayMiniProgramAccountService; +import com.java3y.austin.handler.config.AlipayClientSingleton; import com.java3y.austin.handler.domain.alipay.AlipayMiniProgramParam; import com.java3y.austin.support.utils.AccountUtils; import lombok.extern.slf4j.Slf4j; @@ -39,9 +40,9 @@ public class AlipayMiniProgramAccountServiceImpl implements AlipayMiniProgramAcc public void send(AlipayMiniProgramParam miniProgramParam) throws AlipayApiException { AlipayMiniProgramAccount miniProgramAccount = accountUtils.getAccountById(miniProgramParam.getSendAccount(), AlipayMiniProgramAccount.class); - AlipayClient client = initService(miniProgramAccount); + AlipayClient client = AlipayClientSingleton.getSingleton(miniProgramAccount); List request = assembleReq(miniProgramParam, miniProgramAccount); - for(AlipayOpenAppMiniTemplatemessageSendRequest req : request){ + for (AlipayOpenAppMiniTemplatemessageSendRequest req : request) { client.execute(req); } } @@ -66,20 +67,20 @@ public class AlipayMiniProgramAccountServiceImpl implements AlipayMiniProgramAcc return requestList; } - /** - * 初始化支付宝小程序 - */ - private AlipayClient initService(AlipayMiniProgramAccount alipayMiniProgramAccount) throws AlipayApiException { - AlipayConfig alipayConfig = new AlipayConfig(); - alipayConfig.setServerUrl("https://openapi.alipaydev.com/gateway.do"); - alipayConfig.setAppId(alipayMiniProgramAccount.getAppId()); - alipayConfig.setPrivateKey(alipayMiniProgramAccount.getPrivateKey()); - alipayConfig.setFormat("json"); - alipayConfig.setAlipayPublicKey(alipayMiniProgramAccount.getAlipayPublicKey()); - alipayConfig.setCharset("utf-8"); - alipayConfig.setSignType("RSA2"); - return new DefaultAlipayClient(alipayConfig); - } +// /** +// * 初始化支付宝小程序 +// */ +// private AlipayClient initService(AlipayMiniProgramAccount alipayMiniProgramAccount) throws AlipayApiException { +// AlipayConfig alipayConfig = new AlipayConfig(); +// alipayConfig.setServerUrl("https://openapi.alipaydev.com/gateway.do"); +// alipayConfig.setAppId(alipayMiniProgramAccount.getAppId()); +// alipayConfig.setPrivateKey(alipayMiniProgramAccount.getPrivateKey()); +// alipayConfig.setFormat("json"); +// alipayConfig.setAlipayPublicKey(alipayMiniProgramAccount.getAlipayPublicKey()); +// alipayConfig.setCharset("utf-8"); +// alipayConfig.setSignType("RSA2"); +// return new DefaultAlipayClient(alipayConfig); +// } } diff --git a/austin-handler/src/main/java/com/java3y/austin/handler/config/AlipayClientSingleton.java b/austin-handler/src/main/java/com/java3y/austin/handler/config/AlipayClientSingleton.java new file mode 100644 index 0000000..dc44fdf --- /dev/null +++ b/austin-handler/src/main/java/com/java3y/austin/handler/config/AlipayClientSingleton.java @@ -0,0 +1,39 @@ +package com.java3y.austin.handler.config; + +import com.alipay.api.AlipayApiException; +import com.alipay.api.AlipayConfig; +import com.alipay.api.DefaultAlipayClient; +import com.java3y.austin.common.dto.account.AlipayMiniProgramAccount; + +/** + * 初始化支付宝小程序 单例 + * + * @author 丁新东 + * @date 2022-12-07 + */ +public class AlipayClientSingleton { + + private volatile static DefaultAlipayClient alipayClientSingleton; + + private AlipayClientSingleton() { + } + + public static DefaultAlipayClient getSingleton(AlipayMiniProgramAccount alipayMiniProgramAccount) throws AlipayApiException { + if (alipayClientSingleton == null) { + synchronized (DefaultAlipayClient.class) { + if (alipayClientSingleton == null) { + AlipayConfig alipayConfig = new AlipayConfig(); + alipayConfig.setServerUrl("https://openapi.alipaydev.com/gateway.do"); + alipayConfig.setAppId(alipayMiniProgramAccount.getAppId()); + alipayConfig.setPrivateKey(alipayMiniProgramAccount.getPrivateKey()); + alipayConfig.setFormat("json"); + alipayConfig.setAlipayPublicKey(alipayMiniProgramAccount.getAlipayPublicKey()); + alipayConfig.setCharset("utf-8"); + alipayConfig.setSignType("RSA2"); + alipayClientSingleton = new DefaultAlipayClient(alipayConfig); + } + } + } + return alipayClientSingleton; + } +} From e9f496de7f09c7796396d20a48fd3efffbe7a75b Mon Sep 17 00:00:00 2001 From: Dingxindong Date: Thu, 8 Dec 2022 14:18:42 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E6=94=B9=E7=94=A8=E5=8D=95=E4=BE=8B?= =?UTF-8?q?=E7=9A=84=E6=96=B9=E5=BC=8F=20=E5=88=9D=E5=A7=8B=E5=8C=96?= =?UTF-8?q?=E6=94=AF=E4=BB=98=E5=AE=9D=E5=B0=8F=E7=A8=8B=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../handler/config/AlipayClientSingleton.java | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/austin-handler/src/main/java/com/java3y/austin/handler/config/AlipayClientSingleton.java b/austin-handler/src/main/java/com/java3y/austin/handler/config/AlipayClientSingleton.java index dc44fdf..13e04be 100644 --- a/austin-handler/src/main/java/com/java3y/austin/handler/config/AlipayClientSingleton.java +++ b/austin-handler/src/main/java/com/java3y/austin/handler/config/AlipayClientSingleton.java @@ -5,6 +5,9 @@ import com.alipay.api.AlipayConfig; import com.alipay.api.DefaultAlipayClient; import com.java3y.austin.common.dto.account.AlipayMiniProgramAccount; +import java.util.HashMap; +import java.util.Map; + /** * 初始化支付宝小程序 单例 * @@ -13,15 +16,17 @@ import com.java3y.austin.common.dto.account.AlipayMiniProgramAccount; */ public class AlipayClientSingleton { - private volatile static DefaultAlipayClient alipayClientSingleton; + private static volatile DefaultAlipayClient alipayClientSingleton; + + private static Map alipayClientMap = new HashMap<>(); private AlipayClientSingleton() { } public static DefaultAlipayClient getSingleton(AlipayMiniProgramAccount alipayMiniProgramAccount) throws AlipayApiException { - if (alipayClientSingleton == null) { + if (!alipayClientMap.containsKey(alipayMiniProgramAccount.getAppId())) { synchronized (DefaultAlipayClient.class) { - if (alipayClientSingleton == null) { + if (!alipayClientMap.containsKey(alipayMiniProgramAccount.getAppId())) { AlipayConfig alipayConfig = new AlipayConfig(); alipayConfig.setServerUrl("https://openapi.alipaydev.com/gateway.do"); alipayConfig.setAppId(alipayMiniProgramAccount.getAppId()); @@ -31,9 +36,11 @@ public class AlipayClientSingleton { alipayConfig.setCharset("utf-8"); alipayConfig.setSignType("RSA2"); alipayClientSingleton = new DefaultAlipayClient(alipayConfig); + alipayClientMap.put(alipayMiniProgramAccount.getAppId(), alipayClientSingleton); + return alipayClientSingleton; } } } - return alipayClientSingleton; + return alipayClientMap.get(alipayMiniProgramAccount.getAppId()); } }