更新0.0摄氏度推送限制

This commit is contained in:
yan.y 2026-02-07 21:41:05 +08:00
parent 25f59c124b
commit 44b3eb14f1
2 changed files with 36 additions and 0 deletions

View File

@ -239,6 +239,12 @@
<version>1.0.6.0</version>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>30.1.1-jre</version>
</dependency>
</dependencies>
<build>

View File

@ -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<String, Long> limitPushCaches = CacheBuilder.newBuilder()
.maximumSize(100000)
.expireAfterWrite(24, TimeUnit.HOURS)
.build(new CacheLoader<String, Long>() {
@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()));