From 7e5b898a7fdced9c30fbc7cdf9c6efa1f475d58d Mon Sep 17 00:00:00 2001 From: bestfeng1020 <31398465+bestfeng1020@users.noreply.github.com> Date: Fri, 7 Apr 2023 15:57:47 +0800 Subject: [PATCH] =?UTF-8?q?fix(=E9=98=BF=E9=87=8C=E4=BA=91=E7=9F=AD?= =?UTF-8?q?=E4=BF=A1):=20=E8=A7=A3=E5=86=B3=E7=9F=AD=E4=BF=A1=E6=A8=A1?= =?UTF-8?q?=E6=9D=BF=E5=92=8C=E6=A0=87=E7=AD=BE=E5=8F=AA=E8=83=BD=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E7=AC=AC=E4=B8=80=E9=A1=B5=E6=95=B0=E6=8D=AE=E9=97=AE?= =?UTF-8?q?=E9=A2=98=20(#258)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../notify/sms/aliyun/AliyunSmsNotifier.java | 46 +++++++++++++++---- 1 file changed, 37 insertions(+), 9 deletions(-) diff --git a/jetlinks-components/notify-component/notify-sms/src/main/java/org/jetlinks/community/notify/sms/aliyun/AliyunSmsNotifier.java b/jetlinks-components/notify-component/notify-sms/src/main/java/org/jetlinks/community/notify/sms/aliyun/AliyunSmsNotifier.java index 31703361..89ba7e9d 100755 --- a/jetlinks-components/notify-component/notify-sms/src/main/java/org/jetlinks/community/notify/sms/aliyun/AliyunSmsNotifier.java +++ b/jetlinks-components/notify-component/notify-sms/src/main/java/org/jetlinks/community/notify/sms/aliyun/AliyunSmsNotifier.java @@ -32,7 +32,10 @@ import reactor.core.publisher.Mono; import reactor.core.scheduler.Schedulers; import javax.annotation.Nonnull; +import java.util.List; import java.util.Map; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.function.Function; import java.util.stream.Collectors; @Slf4j @@ -164,24 +167,49 @@ public class AliyunSmsNotifier extends AbstractNotifier { * @return 短信签名集合 */ public Flux getSmsSigns() { - return Mono - .fromCallable(() -> client.getAcsResponse(new QuerySmsSignListRequest())) - .flatMapIterable(QuerySmsSignListResponse::getSmsSignList) + return doQuerySmsSigns(new AtomicInteger(0), 50) + .flatMapIterable(Function.identity()) .map(SmsSign::of) .as(FluxTracer.create("/aliyun/sms/sign")) .onErrorResume(err -> Mono.empty()); } - /** - * @return 短信模板集合 - */ + + public Flux getSmsTemplates() { - return Mono - .fromCallable(() -> client.getAcsResponse(new QuerySmsTemplateListRequest())) - .flatMapIterable(QuerySmsTemplateListResponse::getSmsTemplateList) + return doQuerySmsTemplates(new AtomicInteger(0), 50) + .flatMapIterable(Function.identity()) .map(SmsTemplate::of) .as(FluxTracer.create("/aliyun/sms/template")) .onErrorResume(err -> Mono.empty()); + } + + public Flux> doQuerySmsSigns(AtomicInteger pageIndex, int pageSize) { + QuerySmsSignListRequest request = new QuerySmsSignListRequest(); + request.setPageSize(pageSize); + request.setPageIndex(pageIndex.incrementAndGet()); + return Mono + .fromCallable(() -> client.getAcsResponse(request).getSmsSignList()) + .expand(dtos -> { + if (dtos.size() == pageSize){ + return doQuerySmsSigns(pageIndex, pageSize); + } + return Flux.empty(); + }); + } + + public Flux> doQuerySmsTemplates(AtomicInteger pageIndex, int pageSize) { + QuerySmsTemplateListRequest request = new QuerySmsTemplateListRequest(); + request.setPageSize(pageSize); + request.setPageIndex(pageIndex.incrementAndGet()); + return Mono + .fromCallable(() -> client.getAcsResponse(request).getSmsTemplateList()) + .expand(dtos -> { + if (dtos.size() == pageSize){ + return doQuerySmsTemplates(pageIndex, pageSize); + } + return Flux.empty(); + }); } }