package com.moral.monitor.listener.quartz; import cn.jiguang.common.ClientConfig; import cn.jpush.api.JPushClient; import cn.jpush.api.push.PushResult; import cn.jpush.api.push.model.Platform; import cn.jpush.api.push.model.PushPayload; import cn.jpush.api.push.model.audience.Audience; import cn.jpush.api.push.model.notification.Notification; import com.moral.monitor.dao.TaskDao; import com.moral.monitor.entity.Equipment; import com.moral.monitor.entity.State; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.annotation.Resource; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; /** * Created by a on 2017/3/16. */ public class EquipmentCheck { @Resource TaskDao taskDao; private Logger logger = LoggerFactory.getLogger(EquipmentCheck.class); String MASTER_SECRET="980ec9da47076ff94e3b0f1a"; String APP_KEY="3f115de9acc4860344a299ea"; String MASTER_SECRET_IOS=""; String APP_KEY_IOS=""; public void check() { logger.warn("设备检测定时任务开始"); long time = new Date().getTime(); List states = taskDao.selectFromstateGroupbymac(); for (State state : states) { if (time - state.getTime().getTime() > 600000) {//10分钟 String mac = state.getMac(); taskDao.updateequipmentstate(0,mac); //极光推送致android 和 ios Equipment e = taskDao.selectFromequipment(mac); if (e==null){ continue; } String alais = e.getRepairman(); String title="设备故障"; String alert="设备"+e.getName()+"发生故障,请及时维修"; HashMap extras = new HashMap(); extras.put("id",String.valueOf(e.getId())); extras.put("name",e.getName()); extras.put("address",e.getAddress()); extras.put("mac",e.getMac()); try { JPushClient(alais,alert,title,extras,e); }catch (Exception exception){ logger.info("Error Message: " + exception.getMessage()); } } } } public void JPushClient(String alias,String alert, String title, Map extras,Equipment equipment){ JPushClient jpushClient = new JPushClient(MASTER_SECRET, APP_KEY, null, ClientConfig.getInstance()); //JPushClient jpushClient_IOS = new JPushClient(MASTER_SECRET_IOS, APP_KEY_IOS, null, ClientConfig.getInstance()); PushPayload payload_android = buildPushObject_android_alias_alertWithTitle(alias,alert,title,extras); PushPayload pushload_ios = buildPushObject_ios_alias_alertWithTitle(alias,alert,extras); try { PushResult result1 = jpushClient.sendPush(payload_android); taskDao.insertToofflinelog(equipment.getName(),equipment.getAddress(),equipment.getRepairman()); logger.info("极光android推送"); PushResult result2 = jpushClient.sendPush(pushload_ios); logger.info(" 极光ios推送"); } catch (Exception e) { logger.error("极光推送失败,原因如下:", e); } } //构建推送对象:平台是 Android,目标是 alias 为 "alisename" 的设备,内容是 Android 通知 ALERT,并且标题为 TITLE。扩展数据为null public static PushPayload buildPushObject_android_alias_alertWithTitle(String alias,String alert, String title, Map extras) { return PushPayload.newBuilder() .setPlatform(Platform.android()) .setAudience(Audience.alias(alias)) .setNotification(Notification.android(alert,title, extras)) .build(); } public static PushPayload buildPushObject_ios_alias_alertWithTitle(String alias,String alert, Map extras) { return PushPayload.newBuilder() .setPlatform(Platform.ios()) .setAudience(Audience.alias(alias)) .setNotification(Notification.ios(alert,extras)) .build(); } }