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()));