From 44b3eb14f1d8f632d598af5057cd39dced50bb8f Mon Sep 17 00:00:00 2001 From: "yan.y" Date: Sat, 7 Feb 2026 21:41:05 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B00.0=E6=91=84=E6=B0=8F?= =?UTF-8?q?=E5=BA=A6=E6=8E=A8=E9=80=81=E9=99=90=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 6 ++++ .../com/ifish7/mq/push/AliyunPushApi.java | 30 +++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/pom.xml b/pom.xml index 76a25ad..07d0bae 100644 --- a/pom.xml +++ b/pom.xml @@ -239,6 +239,12 @@ 1.0.6.0 + + com.google.guava + guava + 30.1.1-jre + + diff --git a/src/main/java/com/ifish7/mq/push/AliyunPushApi.java b/src/main/java/com/ifish7/mq/push/AliyunPushApi.java index 11c72a8..0797b90 100644 --- a/src/main/java/com/ifish7/mq/push/AliyunPushApi.java +++ b/src/main/java/com/ifish7/mq/push/AliyunPushApi.java @@ -21,6 +21,9 @@ import com.getui.push.v2.sdk.dto.req.message.android.AndroidDTO; import com.getui.push.v2.sdk.dto.req.message.android.GTNotification; import com.getui.push.v2.sdk.dto.req.message.android.ThirdNotification; import com.getui.push.v2.sdk.dto.req.message.android.Ups; +import com.google.common.cache.CacheBuilder; +import com.google.common.cache.CacheLoader; +import com.google.common.cache.LoadingCache; import com.ifish7.mq.business.user.entity.TblAliyunDeviceInfo; import com.ifish7.mq.business.user.entity.TblPushList; import com.ifish7.mq.business.user.service.ITblAliyunDeviceInfoService; @@ -34,6 +37,8 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Random; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.TimeUnit; /** * @author: yan.y @@ -82,8 +87,33 @@ public class AliyunPushApi { @Autowired private ITblAliyunDeviceInfoService aliyunDeviceInfoService; + private static LoadingCache limitPushCaches = CacheBuilder.newBuilder() + .maximumSize(100000) + .expireAfterWrite(24, TimeUnit.HOURS) + .build(new CacheLoader() { + @Override + public Long load(String s) { + return 0L; + } + }); + + public void advancedPush(TblPushList pushList) { + //温度告警 0.0° 一天内只告警一次 + if (pushList.getPushType().equals("wendu_warn") && pushList.getPushContext().indexOf("达到0.0") > 0) { + try { + Long l = limitPushCaches.get(pushList.getDeviceId().toString()); + if (l != null && l > 0) { + log.info("24小时内已推送当前消息忽略 : " + JSONObject.toJSONString(pushList)); + return; + } + } catch (Exception e) { + log.error("check error", e); + } + limitPushCaches.put(pushList.getDeviceId().toString(), System.currentTimeMillis()); + } + //根据Target来设定,多个值使用逗号分隔 //此处应该查询出用户所对应的deviceId ★★★★★ // String deviceIds = getUserDevices(String.valueOf(pushList.getUserId()));