diff --git a/src/main/java/com/ifish/entity/hbm/DeviceOffline.hbm.xml b/src/main/java/com/ifish/entity/hbm/DeviceOffline.hbm.xml index b8d00b5..711b44e 100644 --- a/src/main/java/com/ifish/entity/hbm/DeviceOffline.hbm.xml +++ b/src/main/java/com/ifish/entity/hbm/DeviceOffline.hbm.xml @@ -9,7 +9,7 @@ - + \ No newline at end of file diff --git a/src/main/java/com/ifish/quartz/ExecuteJob.java b/src/main/java/com/ifish/quartz/ExecuteJob.java index 767a2eb..c71d949 100644 --- a/src/main/java/com/ifish/quartz/ExecuteJob.java +++ b/src/main/java/com/ifish/quartz/ExecuteJob.java @@ -1,40 +1,119 @@ package com.ifish.quartz; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import com.ifish.entity.*; -import com.ifish.util.IfishUtil; -import org.apache.mina.core.session.IoSession; -import org.quartz.Job; -import org.quartz.JobDataMap; -import org.quartz.JobExecutionContext; -import org.quartz.JobExecutionException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; - -import com.ifish.enums.BooleanEnum; -import com.ifish.enums.NeteaseEnum; +import com.ifish.entity.event.QueueEventBody; +import com.ifish.entity.event.QueueEventEntity; import com.ifish.enums.PushTypeEnum; import com.ifish.netease.NeteaseIM; import com.ifish.service.DeviceService; import com.ifish.service.UserService; import com.ifish.socketNew.SomeServer; +import com.ifish.util.IfishUtil; +import org.apache.log4j.Logger; +import org.apache.mina.core.session.IoSession; +import org.quartz.Job; +import org.quartz.JobDataMap; +import org.quartz.JobExecutionContext; +import org.quartz.JobExecutionException; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.jms.core.JmsTemplate; + +import javax.jms.Destination; +import javax.jms.JMSException; +import javax.jms.Session; +import java.util.List; public class ExecuteJob implements Job { - private static Logger log = LoggerFactory.getLogger(ExecuteJob.class); + private static Logger log = Logger.getLogger(ExecuteJob.class); @Autowired private NeteaseIM neteaseIM; @Autowired private UserService userService; @Autowired private DeviceService deviceService; + @Autowired + private JmsTemplate jmsTemplate; + @Autowired + private Destination ifish7PushQueueDestination; public void execute(JobExecutionContext context) throws JobExecutionException { + //任务传递的参数 + JobDataMap dataMap = context.getJobDetail().getJobDataMap(); + String macAddress = dataMap.getString("macAddress"); + String timestamp = dataMap.getString("timestamp"); + try { + log.info("离线时间 --> " + timestamp); + log.info("离线设备 --> " + macAddress); + //移除为null的连接 + IoSession session_cz = SomeServer.sessions_cz.get(macAddress); + if(session_cz==null || session_cz.getRemoteAddress()==null){ + SomeServer.sessions_cz.remove(macAddress); + } + //设备是否存在 + Device device = deviceService.getUniqueByProperty("macAddress", macAddress); + if(device!=null){ + //保存离线的设备信息 + DeviceOffline deviceOffline = new DeviceOffline(); + deviceOffline.setOfflineMacAddress(device.getMacAddress()); + deviceOffline.setOfflineFactoryCode(device.getFactoryCode()); + deviceOffline.setOfflineDeviceType(device.getHardwareType()); + deviceOffline.setOfflineSdkVersion(String.valueOf(device.getSdkVersion())); + deviceOffline.setOfflineTime(IfishUtil.StrToDate1(timestamp)); + deviceService.saveDeviceOffline(deviceOffline); + log.info("离线设备信息保存++++++++++++++++++++++++++++++++++++++++++"); + List list = deviceService.getListByProperty(device.getDeviceId()); + //是否被绑定 + if(list!=null){ + for (DeviceUser deviceUser : list) { + Integer userId = deviceUser.getPriId().getUserId(); + String showName = deviceUser.getShowName(); + String title = PushTypeEnum.offline_push.getValue(); + String msg = "【"+title+"】你的水族箱“"+showName+"”于"+timestamp+"离线,请及时查看!"; + User user = userService.findById(userId); + if(user!=null){ + //推送记录 + PushList pushList = new PushList(); + //记录推送 + pushList.setUserId(userId); + pushList.setDeviceId(deviceUser.getPriId().getDeviceId()); + pushList.setPhoneType("ALL"); + pushList.setShowName(showName); + pushList.setPushType(PushTypeEnum.offline_push.getKey()); + pushList.setPushTitle(title); + pushList.setPushContext(msg); + pushList.setNumber1(device.getNumber1()); + pushList.setNumber2(device.getNumber2()); + pushList.setNumber3(device.getNumber3()); + pushList.setNumber4(device.getNumber4()); + pushList.setNumber5(device.getNumber5()); + JSONObject data = JSON.parseObject(JSON.toJSONString(pushList)); + QueueEventEntity eventEntity = new QueueEventEntity(); + eventEntity.setEventName("com.ifish7.mq.queues.event.PushNotifcationEvent"); + eventEntity.setEventProcess("deviceNotifcationPlus"); + QueueEventBody eventBody = new QueueEventBody("com.ifish7.mq.business.user.entity.TblPushList",data); + eventEntity.setEventBody(eventBody); + //推送至消息推送队列 + sendPushQueueMessage(JSONObject.toJSONString(eventEntity)); + } + } + } + } + } catch (Exception e) { + log.error(e.getMessage(),e); + } + } + + /** + * 推送Push消息队列 + * @param json 内容 + */ + private void sendPushQueueMessage(final String json) throws JMSException { + jmsTemplate.send(ifish7PushQueueDestination,(Session session) -> session.createTextMessage(json)); + } + /*public void execute(JobExecutionContext context) throws JobExecutionException { //任务传递的参数 JobDataMap dataMap = context.getJobDetail().getJobDataMap(); String macAddress = dataMap.getString("macAddress"); @@ -56,7 +135,7 @@ public class ExecuteJob implements Job { deviceOffline.setOfflineSdkVersion(String.valueOf(device.getSdkVersion())); deviceOffline.setOfflineTime(IfishUtil.StrToDate1(timestamp)); deviceService.saveDeviceOffline(deviceOffline); - + log.info("离线设备信息保存++++++++++++++++++++++++++++++++++++++++++"); //记录次数 Integer number1 = device.getNumber1(); Integer number2 = device.getNumber2(); @@ -113,8 +192,8 @@ public class ExecuteJob implements Job { } } } catch (Exception e) { - e.printStackTrace(); - log.error("error msg:{}",e.toString()); + log.error(e.getMessage(),e); } - } + }*/ + } \ No newline at end of file diff --git a/src/main/java/com/ifish/quartz/ScheduleJob.java b/src/main/java/com/ifish/quartz/ScheduleJob.java index b1a99eb..4865489 100644 --- a/src/main/java/com/ifish/quartz/ScheduleJob.java +++ b/src/main/java/com/ifish/quartz/ScheduleJob.java @@ -1,15 +1,7 @@ package com.ifish.quartz; import org.apache.log4j.Logger; -import org.quartz.JobBuilder; -import org.quartz.JobDetail; -import org.quartz.JobKey; -import org.quartz.Scheduler; -import org.quartz.SchedulerException; -import org.quartz.SchedulerFactory; -import org.quartz.Trigger; -import org.quartz.TriggerBuilder; -import org.quartz.TriggerKey; +import org.quartz.*; import org.quartz.impl.StdSchedulerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -35,7 +27,7 @@ public class ScheduleJob { scheduler.setJobFactory(jobFactory); scheduler.start(); } catch (SchedulerException e) { - log.error(String.format("start scheduler error:{%s}",e.toString())); + log.info(String.format("start scheduler error:{%s}",e.toString())); } } /** @@ -60,7 +52,7 @@ public class ScheduleJob { //添加触发器 scheduler.scheduleJob(jobDetail,trigger); } catch (SchedulerException e) { - log.error(String.format("addJob error【macAddress:{%s},jobGroup:{%s},triggerGroup:{%s},errMsg:{%s}】",jobGroup.getMacAddress(),jobGroup.getJobName(),jobGroup.getTriggerGroup(),e.toString())); + log.info(String.format("addJob error【macAddress:{%s},jobGroup:{%s},triggerGroup:{%s},errMsg:{%s}】",jobGroup.getMacAddress(),jobGroup.getJobName(),jobGroup.getTriggerGroup(),e.toString())); // log.error("addJob error【macAddress:{},jobGroup:{},triggerGroup:{},errMsg:{}】",jobGroup.getMacAddress(),jobGroup.getJobName(),jobGroup.getTriggerGroup(),e.toString()); } } @@ -83,7 +75,7 @@ public class ScheduleJob { //删除任务 scheduler.deleteJob(jobKey); } catch (SchedulerException e) { - log.error(String.format("deleteJob error【macAddress:{%s},jobGroup:{%s},triggerGroup:{%s},errMsg:{%s}】",jobGroup.getMacAddress(),jobGroup.getJobName(),jobGroup.getTriggerGroup(),e.toString())); + log.info(String.format("deleteJob error【macAddress:{%s},jobGroup:{%s},triggerGroup:{%s},errMsg:{%s}】",jobGroup.getMacAddress(),jobGroup.getJobName(),jobGroup.getTriggerGroup(),e.toString())); } } @@ -95,7 +87,7 @@ public class ScheduleJob { //关闭任务 scheduler.shutdown(); } catch (SchedulerException e) { - log.error(String.format("shutdown scheduler error:{%s}",e.toString())); + log.info(String.format("shutdown scheduler error:{%s}",e.toString())); } } diff --git a/src/main/java/com/ifish/socketNew/MinaServerHandler.java b/src/main/java/com/ifish/socketNew/MinaServerHandler.java index 295d944..c200fda 100644 --- a/src/main/java/com/ifish/socketNew/MinaServerHandler.java +++ b/src/main/java/com/ifish/socketNew/MinaServerHandler.java @@ -1,18 +1,16 @@ package com.ifish.socketNew; -import java.util.Date; -import java.util.concurrent.atomic.AtomicInteger; - -import org.apache.mina.core.service.IoHandlerAdapter; -import org.apache.mina.core.session.IdleStatus; -import org.apache.mina.core.session.IoSession; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; - import com.ifish.quartz.JobGroup; import com.ifish.quartz.ScheduleJob; import com.ifish.util.IfishUtil; +import org.apache.log4j.Logger; +import org.apache.mina.core.service.IoHandlerAdapter; +import org.apache.mina.core.session.IdleStatus; +import org.apache.mina.core.session.IoSession; +import org.springframework.beans.factory.annotation.Autowired; + +import java.util.Date; +import java.util.concurrent.atomic.AtomicInteger; /** * mina服务器端事件处理 @@ -23,7 +21,7 @@ public class MinaServerHandler extends IoHandlerAdapter { private final AtomicInteger atomicInt = new AtomicInteger(); - private static Logger log = LoggerFactory.getLogger(MinaServerHandler.class); + private static Logger log = Logger.getLogger(MinaServerHandler.class); @Autowired private SomeServer someServer; @@ -33,7 +31,7 @@ public class MinaServerHandler extends IoHandlerAdapter { @Override public void exceptionCaught(IoSession session, Throwable cause) throws Exception { cause.printStackTrace(); - log.error("{}服务器-客户端session异常:{}", session.getRemoteAddress(), cause.toString()); + log.error(String.format("{%s}服务器-客户端session异常:", session.getRemoteAddress()), cause); } /** @@ -49,7 +47,7 @@ public class MinaServerHandler extends IoHandlerAdapter { */ @Override public void sessionCreated(IoSession session) throws Exception { - log.info("{}:会话创建,在线数:{}", session.getRemoteAddress(), atomicInt.incrementAndGet()); + log.info(String.format("{%s}:会话创建,在线数:{%s}", session.getRemoteAddress(), atomicInt.incrementAndGet())); } /** @@ -57,7 +55,7 @@ public class MinaServerHandler extends IoHandlerAdapter { */ @Override public void sessionClosed(IoSession session) throws Exception { - log.info("{}:会话关闭,连接数:{}", session.getRemoteAddress(), atomicInt.decrementAndGet()); + log.info(String.format("{%s}:会话关闭在线数:{%s}", session.getRemoteAddress(), atomicInt.incrementAndGet())); //旧连接关闭,获取设备mac地址 String oldConnect = session.getRemoteAddress().toString(); String macAddress = SomeServer.remoteAddress.get(oldConnect); @@ -92,7 +90,8 @@ public class MinaServerHandler extends IoHandlerAdapter { //离线时间 jobGroup.setTimestamp(IfishUtil.format(new Date())); //10分钟后推送 update 30分钟 - jobGroup.setStartTime(new Date(System.currentTimeMillis() + 600000L * 3)); +// jobGroup.setStartTime(new Date(System.currentTimeMillis() + 600000L * 3)); + jobGroup.setStartTime(new Date(System.currentTimeMillis() + 60000L)); scheduleJob.addJob(jobGroup); } @@ -110,7 +109,7 @@ public class MinaServerHandler extends IoHandlerAdapter { @Override public void sessionIdle(IoSession session, IdleStatus status) throws Exception { - log.info("空闲超时,服务器主动关闭连接{}", session.getRemoteAddress()); + log.info(String.format("空闲超时,服务器主动关闭连接{%s}", session.getRemoteAddress())); session.close(true); } diff --git a/src/main/java/com/ifish/socketNew/SomeServer.java b/src/main/java/com/ifish/socketNew/SomeServer.java index 77aae23..ca38df1 100644 --- a/src/main/java/com/ifish/socketNew/SomeServer.java +++ b/src/main/java/com/ifish/socketNew/SomeServer.java @@ -2,10 +2,7 @@ package com.ifish.socketNew; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; -import com.ifish.entity.Device; -import com.ifish.entity.DeviceUser; -import com.ifish.entity.PushList; -import com.ifish.entity.User; +import com.ifish.entity.*; import com.ifish.entity.event.QueueEventBody; import com.ifish.entity.event.QueueEventEntity; import com.ifish.enums.BooleanEnum; @@ -29,10 +26,12 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jms.core.JmsTemplate; +import org.springframework.jms.core.MessageCreator; import javax.jms.Destination; +import javax.jms.JMSException; +import javax.jms.Message; import javax.jms.Session; -import java.time.LocalDateTime; import java.util.Calendar; import java.util.Date; import java.util.List; @@ -44,7 +43,7 @@ import java.util.concurrent.CopyOnWriteArraySet; * 这个类主要是通过spring注入给MinaServerHandler用的, 表示: mina在接收到信息后,该由主要业务类来处理 服务器处理类 **/ public class SomeServer { - + @Autowired private UserService userService; @Autowired @@ -56,18 +55,16 @@ public class SomeServer { @Autowired private JmsTemplate jmsTemplate; @Autowired - private Destination ifish7DataQueueDestination; - @Autowired private Destination ifish7PushQueueDestination; - + //是否回复心跳 public static boolean isReplay = true; - + private static Logger log = LoggerFactory.getLogger(SomeServer.class); public static final ConcurrentHashMap remoteAddress = new ConcurrentHashMap(); public static final ConcurrentHashMap sessions_cz = new ConcurrentHashMap(); private ConcurrentHashMap> sessions_sjs = new ConcurrentHashMap>(); - + /** * 过滤收到的数据 服务器收到数据,进行协议类型匹配,如果不匹配,则不执行相应操作。 * @param session @@ -79,17 +76,16 @@ public class SomeServer { byte[] bytes = (byte[]) message; //长度 int length = bytes[14] & 0xff; - //mac地址 IoBuffer ioBuffer = ByteUtil.byteToIoBuffer(bytes, length); - //类型 byte type = ioBuffer.get(); - +// int Check_code = (int) ioBuffer.get(); + //mac地址 byte[] srcByte = new byte[6]; for (int i = 2; i < 8; i++) { srcByte[i-2] = bytes[i]; } String strSrc = ByteUtil.bytesToHexString(srcByte); - //心跳 + //如果为设备端返回 发送给app端 if(type == 1){ sendToApp(session,strSrc, message); } @@ -101,31 +97,15 @@ public class SomeServer { BackFunctionCodeHeater heater = (BackFunctionCodeHeater) message; String macAddress = ByteUtil.bytesToHexString(heater.getSrc()); String hour = String.valueOf(Calendar.getInstance().get(Calendar.HOUR_OF_DAY)); -// List deviceHeaters = deviceService.getDeviceHeaterByProperty(hour, macAddress,IfishUtil.format1(new Date())); -// if (deviceHeaters.size() > 0) { -// DeviceHeater deviceHeater = deviceHeaters.get(0); -// deviceHeater.setHeaterWaterTemperature(String.valueOf(heater.getWaterTemperature())); -// deviceHeater.setHeaterPh(String.valueOf(heater.getPh())); -// deviceService.update(deviceHeater); -// } else { -// deviceService.save(heater); -// } - JSONObject data = new JSONObject(); - data.put("heaterMacAddress",macAddress); - data.put("heaterWaterTemperature",heater.getHeatingTemperature()); - data.put("heaterPh",heater.getPh()); - data.put("heaterGatheringDate",IfishUtil.format1(new Date())); - data.put("heaterGatheringTime",hour); - - QueueEventEntity eventEntity = new QueueEventEntity(); - eventEntity.setEventName("com.ifish7.mq.queues.event.IntelligentHeatingRodEvent"); - eventEntity.setEventProcess("intelligentHeatingRodSaveOrUpdate"); - QueueEventBody eventBody = new QueueEventBody("com.ifish7.mq.business.device.entity.TblDeviceHeater",data); - eventEntity.setEventBody(eventBody); - - //智能加热棒数据更新及保存 - sendDataQueueMessage(JSONObject.toJSONString(eventEntity)); - + List deviceHeaters = deviceService.getDeviceHeaterByProperty(hour, macAddress,IfishUtil.format1(new Date())); + if (deviceHeaters.size() > 0) { + DeviceHeater deviceHeater = deviceHeaters.get(0); + deviceHeater.setHeaterWaterTemperature(String.valueOf(heater.getWaterTemperature())); + deviceHeater.setHeaterPh(String.valueOf(heater.getPh())); + deviceService.update(deviceHeater); + } else { + deviceService.save(heater); + } //设备重新连接上,则移除延时推送的任务 JobGroup jobGroup = new JobGroup(); jobGroup.setJobName(macAddress); @@ -141,17 +121,7 @@ public class SomeServer { try { Integer Onoff = receive.getOnoff() & 0xff; if(Onoff==1 || Onoff==0){ - JSONObject data = new JSONObject(); - data.put("onOff",Onoff); - data.put("macAddress",strDest); - QueueEventEntity eventEntity = new QueueEventEntity(); - eventEntity.setEventName("com.ifish7.mq.queues.event.DeviceInfoEvent"); - eventEntity.setEventProcess("updateWarnOnoff"); - QueueEventBody eventBody = new QueueEventBody("com.ifish7.mq.business.device.entity.TblDevice",data); - eventEntity.setEventBody(eventBody); - //温度开关更新 - sendDataQueueMessage(JSONObject.toJSONString(eventEntity)); -// deviceService.updateWarnOnoff(strDest,Onoff.toString()); + deviceService.updateWarnOnoff(strDest,Onoff.toString()); } else{ log.error("error Onoff:{},macAddress:{}",Onoff,strDest); @@ -195,41 +165,8 @@ public class SomeServer { jobGroup.setTriggerName(strSrc); scheduleJob.deleteJob(jobGroup); try { - //macAddr地址 - String stcMac = ByteUtil.bytesToHexString(model.getSrc()); - //IP - byte[] log_Ip= receive.getLogin_ip(); - StringBuilder ipStr = new StringBuilder(); - for (int i = 0; i < log_Ip.length; i++) { - int v = log_Ip[i] & 0xff; - if(i==0){ - ipStr.append(v); - } - else{ - ipStr.append("."+v); - } - } - Integer version = receive.getVersion() & 0xff; - String factoryCode = ByteUtil.toHex(receive.getVendor()); - factoryCode = factoryCode.equals("01")?"0a":factoryCode; - String typeCode = ByteUtil.toHex(receive.getHardware_type()); - - JSONObject data = new JSONObject(); - data.put("macAddress",stcMac); - data.put("deviceIp",ipStr.toString()); - data.put("factoryCode",factoryCode); - data.put("hardwareType",typeCode); - data.put("softwareVersion",version); - QueueEventEntity eventEntity = new QueueEventEntity(); - eventEntity.setEventName("com.ifish7.mq.queues.event.DeviceInfoEvent"); - eventEntity.setEventProcess("deviceLoginSaveOrUpdate"); - QueueEventBody eventBody = new QueueEventBody("com.ifish7.mq.business.device.entity.TblDevice",data); - eventEntity.setEventBody(eventBody); - //温度开关更新 - sendDataQueueMessage(JSONObject.toJSONString(eventEntity)); - //更新设备信息 -// deviceService.update(receive); + deviceService.update(receive); // if(device==null){ // String HexDump = ByteUtil.toHex(receive.getType())+ByteUtil.toHex(receive.getCheck_code())+ByteUtil.bytesToHexString(receive.getSrc())+ByteUtil.bytesToHexString(destBytes)+ByteUtil.toHex(receive.getRemote_len())+ByteUtil.toHex(receive.getVendor())+ByteUtil.toHex(receive.getHardware_type())+ByteUtil.toHex(receive.getVersion())+ByteUtil.bytesToHexString(receive.getLogin_ip())+ByteUtil.bytesToHexString(receive.getCrc16_code()); // log.error("HexDump:{}",HexDump); @@ -237,21 +174,10 @@ public class SomeServer { // } // else{ //记录登录时间 - JSONObject data1 = new JSONObject(); - data1.put("macAddress",stcMac); - QueueEventEntity eventEntity1 = new QueueEventEntity(); - eventEntity1.setEventName("com.ifish7.mq.queues.event.DeviceInfoEvent"); - eventEntity1.setEventProcess("deviceLoginLogSave"); - QueueEventBody eventBody1 = new QueueEventBody("com.ifish7.mq.business.device.entity.TblLoginRecord",data1); - eventEntity1.setEventBody(eventBody1); - //登录记录保存 - sendDataQueueMessage(JSONObject.toJSONString(eventEntity1)); - - -// LoginRecord loginRecord = new LoginRecord(); -// loginRecord.setMacAddress(strSrc); -// loginRecord.setLoginTime(new Date()); -// deviceService.save(loginRecord); + LoginRecord loginRecord = new LoginRecord(); + loginRecord.setMacAddress(strSrc); + loginRecord.setLoginTime(new Date()); + deviceService.save(loginRecord); // } } catch (Exception e) { log.error("save device login error:macAddress:{},error msg:{}",strSrc,e.toString()); @@ -301,34 +227,19 @@ public class SomeServer { //查找设备 Device device = this.deviceService.getUniqueByProperty("macAddress", strSrc); if(device!=null){ - JSONObject data = new JSONObject(); - data.put("macAddress",strSrc); //是否升级 if(device.getIsUpgrade().equals(BooleanEnum.YES.getKey())){ - data.put("isUpgrade",BooleanEnum.NO.getKey()); - data.put("upgradeTime", LocalDateTime.now()); -// -// device.setIsUpgrade(BooleanEnum.NO.getKey()); -// device.setUpgradeTime(new Date()); + device.setIsUpgrade(BooleanEnum.NO.getKey()); + device.setUpgradeTime(new Date()); //升级版本 int upgradeVersion = device.getUpgradeVersion(); OrderFunctionCode15 model = OrderModel.OrderFunctionCode15(macBytes,upgradeVersion); session.write(model); } - data.put("sdkTime",IfishUtil.StrToDate(receive.getYear()+"-"+(receive.getMonth() & 0xff)+"-"+(receive.getDay() & 0xff))); - data.put("sdkVersion",receive.getVersion() & 0xff); - - QueueEventEntity eventEntity = new QueueEventEntity(); - eventEntity.setEventName("com.ifish7.mq.queues.event.DeviceInfoEvent"); - eventEntity.setEventProcess("deviceSdkUpdate"); - QueueEventBody eventBody = new QueueEventBody("com.ifish7.mq.business.device.entity.TblDevice",data); - eventEntity.setEventBody(eventBody); - //设备sdk更新 - sendDataQueueMessage(JSONObject.toJSONString(eventEntity)); //记录参数 -// device.setSdkVersion(receive.getVersion() & 0xff); -// device.setSdkTime(IfishUtil.StrToDate(receive.getYear()+"-"+(receive.getMonth() & 0xff)+"-"+(receive.getDay() & 0xff))); -// this.deviceService.update(device); + device.setSdkVersion(receive.getVersion() & 0xff); + device.setSdkTime(IfishUtil.StrToDate(receive.getYear()+"-"+(receive.getMonth() & 0xff)+"-"+(receive.getDay() & 0xff))); + this.deviceService.update(device); } } catch (Exception e) { log.error("save device sdk version16 error:macAddress:{},error msg:{}",strSrc,e.toString()); @@ -342,53 +253,32 @@ public class SomeServer { try { //查找设备 Device device = this.deviceService.getUniqueByProperty("macAddress", strSrc); - JSONObject data = new JSONObject(); - data.put("macAddress",strSrc); if(device!=null){ //是否升级 if(device.getIsUpgrade().equals(BooleanEnum.YES.getKey())){ - data.put("isUpgrade",BooleanEnum.NO.getKey()); - data.put("upgradeTime", LocalDateTime.now()); -// device.setIsUpgrade(BooleanEnum.NO.getKey()); -// device.setUpgradeTime(new Date()); + device.setIsUpgrade(BooleanEnum.NO.getKey()); + device.setUpgradeTime(new Date()); //升级版本 int upgradeVersion = device.getUpgradeVersion(); OrderFunctionCode15 model = OrderModel.OrderFunctionCode15(macBytes,upgradeVersion); session.write(model); } - - data.put("sdkTime",IfishUtil.StrToDate(receive.getYear()+"-"+(receive.getMonth() & 0xff)+"-"+(receive.getDay() & 0xff))); - data.put("sdkVersion",receive.getVersion() & 0xff); - data.put("number1",receive.getNumber1()); - data.put("number2",receive.getNumber2()); - data.put("number3",receive.getNumber3()); - data.put("number4",receive.getNumber4()); - data.put("number5",receive.getNumber5()); - - QueueEventEntity eventEntity = new QueueEventEntity(); - eventEntity.setEventName("com.ifish7.mq.queues.event.DeviceInfoEvent"); - eventEntity.setEventProcess("deviceSdkUpdate"); - QueueEventBody eventBody = new QueueEventBody("com.ifish7.mq.business.device.entity.TblDevice",data); - eventEntity.setEventBody(eventBody); - //设备sdk更新 - sendDataQueueMessage(JSONObject.toJSONString(eventEntity)); - //记录参数 -// device.setSdkVersion(receive.getVersion() & 0xff); -// device.setSdkTime(IfishUtil.StrToDate(receive.getYear()+"-"+(receive.getMonth() & 0xff)+"-"+(receive.getDay() & 0xff))); -// device.setNumber1(receive.getNumber1()); -// device.setNumber2(receive.getNumber2()); -// device.setNumber3(receive.getNumber3()); -// device.setNumber4(receive.getNumber4()); -// device.setNumber5(receive.getNumber5()); -// this.deviceService.update(device); + device.setSdkVersion(receive.getVersion() & 0xff); + device.setSdkTime(IfishUtil.StrToDate(receive.getYear()+"-"+(receive.getMonth() & 0xff)+"-"+(receive.getDay() & 0xff))); + device.setNumber1(receive.getNumber1()); + device.setNumber2(receive.getNumber2()); + device.setNumber3(receive.getNumber3()); + device.setNumber4(receive.getNumber4()); + device.setNumber5(receive.getNumber5()); + this.deviceService.update(device); } } catch (Exception e) { log.error("save device sdk version17 error:macAddress:{},error msg:{}",strSrc,e.toString()); } } } - + /** * 发送数据APP * @param message 发送对象 @@ -430,6 +320,12 @@ public class SomeServer { session.write(model); } } + /** + * 温度预警推送 + * @param strSrc + * @param title + * @param contont + */ /** * 温度预警推送 * @param strSrc @@ -453,27 +349,9 @@ public class SomeServer { String msg = "【"+title+"】你的水族箱“"+showName+"”在"+timestamp+contont; User user = userService.findById(userId); if(user!=null){ - //云信推送 -// boolean neteaseBln = false; - //极光推送 -// boolean jpushIosBln = false; -// boolean jpushAndroidBln = false; - //发送云信消息 -// Map neteaseMap = neteaseIM.sendMsg("ifish", userId.toString(), msg); -// if(neteaseMap!=null){ -// neteaseBln = neteaseMap.get("code").equals(NeteaseEnum.status200.getKey()); -// } -// String loginType = user.getLoginType(); -// if(loginType!=null){ - //推送记录 + //推送记录 PushList pushList = new PushList(); -// Map map = new HashMap(); -// map.put("device_id", deviceId.toString()); -// map.put("device_name", showName); -// map.put("timestamp", timestamp); -// map.put("msg_type", PushTypeEnum.wendu_warn.getKey()); //记录推送 -// if(jpushIosBln || jpushAndroidBln || neteaseBln){ pushList.setUserId(userId); pushList.setDeviceId(deviceId); pushList.setPhoneType("ALL"); @@ -481,8 +359,6 @@ public class SomeServer { pushList.setPushType(PushTypeEnum.wendu_warn.getKey()); pushList.setPushTitle(title); pushList.setPushContext(msg); -// pushList.setNeteaseStatus(neteaseBln?BooleanEnum.YES.getKey():BooleanEnum.NO.getKey()); -// pushList.setCreateTime(new Date()); pushList.setNumber1(device.getNumber1()); pushList.setNumber2(device.getNumber2()); pushList.setNumber3(device.getNumber3()); @@ -496,12 +372,8 @@ public class SomeServer { eventEntity.setEventBody(eventBody); //推送至消息推送队列 sendPushQueueMessage(JSONObject.toJSONString(eventEntity)); -// this.userService.save(pushList); -// } -// } } } - } } } catch (Exception e) { @@ -509,19 +381,76 @@ public class SomeServer { } } - /** - * 推送Data消息队列 - * @param json 内容 - */ - private void sendDataQueueMessage(final String json){ - jmsTemplate.send(ifish7DataQueueDestination,(Session session) -> session.createTextMessage(json)); - } /** * 推送Push消息队列 * @param json 内容 */ - private void sendPushQueueMessage(final String json) { + private void sendPushQueueMessage(final String json) throws JMSException{ jmsTemplate.send(ifish7PushQueueDestination,(Session session) -> session.createTextMessage(json)); } + /*public void pushNotifcation(String strSrc,String title,String contont){ + try { + Device device = deviceService.getUniqueByProperty("macAddress", strSrc); + if(device!=null){ + Integer deviceId = device.getDeviceId(); + //是否开启预警 + String onOff = device.getOnOff(); + if(onOff!=null && onOff.equals(BooleanEnum.YES.getKey())){ + //绑定设备的用户 + List list = deviceService.getListByProperty(device.getDeviceId()); + for (DeviceUser deviceUser : list) { + Integer userId = deviceUser.getPriId().getUserId(); + String showName = deviceUser.getShowName(); + String timestamp = IfishUtil.format(new Date()); + String msg = "【"+title+"】你的水族箱“"+showName+"”在"+timestamp+contont; + User user = userService.findById(userId); + if(user!=null){ + //云信推送 + boolean neteaseBln = false; + //极光推送 + boolean jpushIosBln = false; + boolean jpushAndroidBln = false; + //发送云信消息 + Map neteaseMap = neteaseIM.sendMsg("ifish", userId.toString(), msg); + if(neteaseMap!=null){ + neteaseBln = neteaseMap.get("code").equals(NeteaseEnum.status200.getKey()); + } + String loginType = user.getLoginType(); + if(loginType!=null){ + //推送记录 + PushList pushList = new PushList(); + Map map = new HashMap(); + map.put("device_id", deviceId.toString()); + map.put("device_name", showName); + map.put("timestamp", timestamp); + map.put("msg_type", PushTypeEnum.wendu_warn.getKey()); + //记录推送 + if(jpushIosBln || jpushAndroidBln || neteaseBln){ + pushList.setUserId(userId); + pushList.setDeviceId(deviceId); + pushList.setPhoneType(loginType.toLowerCase()); + pushList.setShowName(showName); + pushList.setPushType(PushTypeEnum.wendu_warn.getKey()); + pushList.setPushTitle(title); + pushList.setPushContext(msg); + pushList.setNeteaseStatus(neteaseBln?BooleanEnum.YES.getKey():BooleanEnum.NO.getKey()); + pushList.setCreateTime(new Date()); + pushList.setNumber1(device.getNumber1()); + pushList.setNumber2(device.getNumber2()); + pushList.setNumber3(device.getNumber3()); + pushList.setNumber4(device.getNumber4()); + pushList.setNumber5(device.getNumber5()); + this.userService.save(pushList); + } + } + } + } + + } + } + } catch (Exception e) { + log.error("pushNotifcation error:macAddress:{},error msg:{}",strSrc,e.toString()); + } + }*/ } diff --git a/src/main/java/com/ifish/util/QueueMessageJsonUtil.java b/src/main/java/com/ifish/util/QueueMessageJsonUtil.java deleted file mode 100644 index 7ccd554..0000000 --- a/src/main/java/com/ifish/util/QueueMessageJsonUtil.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.ifish.util; - -/** - * @author: yan.y - * @Description: json工具 - * @Date: Created in 16:46 2019-04-10 - * @Modified by: - */ -public class QueueMessageJsonUtil { - -} diff --git a/src/main/resources/log4j.properties_bak b/src/main/resources/log4j.properties similarity index 92% rename from src/main/resources/log4j.properties_bak rename to src/main/resources/log4j.properties index 493e7e4..b6cd287 100644 --- a/src/main/resources/log4j.properties_bak +++ b/src/main/resources/log4j.properties @@ -3,7 +3,7 @@ log4j.rootLogger=INFO,CONSOLE,FILE,ROLLING_FILE # Console Appender ################### log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender -log4j.appender.Threshold=INFO +log4j.appender.Threshold=DEBUG log4j.appender.CONSOLE.Target=System.out log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout log4j.appender.CONSOLE.layout.ConversionPattern=[ifish7Socket][%-5p]%d - (%F:%L) - %m%n @@ -11,7 +11,7 @@ log4j.appender.CONSOLE.layout.ConversionPattern=[ifish7Socket][%-5p]%d - (%F:%L) # [INFO]Daily Rolling File ######################## log4j.appender.FILE=org.apache.log4j.DailyRollingFileAppender -log4j.appender.FILE.Threshold=INFO +log4j.appender.FILE.Threshold=DEBUG log4j.appender.FILE.File=/logs/ifishSocket/ifish7Socket_ALL.log log4j.appender.FILE.Append=true log4j.appender.FILE.ImmediateFlush = true @@ -31,7 +31,8 @@ log4j.appender.ROLLING_FILE.DatePattern='.'yyyy-MM-dd log4j.appender.ROLLING_FILE.layout=org.apache.log4j.PatternLayout log4j.appender.ROLLING_FILE.layout.ConversionPattern=[Ifish7][%-5p]%d - %c.%t(%F:%L) - %m%n +log4j.logger.com.ifish=DEBUG log4j.logger.org.springframework=INFO log4j.logger.com.hibernate=INFO -log4j.logger.java.sql=INFO +log4j.logger.java.sql=DEBUG diff --git a/src/main/resources/logback.xml b/src/main/resources/logback.xml_bak similarity index 87% rename from src/main/resources/logback.xml rename to src/main/resources/logback.xml_bak index a3d95ff..fd552df 100644 --- a/src/main/resources/logback.xml +++ b/src/main/resources/logback.xml_bak @@ -46,18 +46,21 @@ WARN - - - - - + + + + + + + + + - - + diff --git a/src/main/resources/mq.properties b/src/main/resources/mq.properties index 60d854c..a5dcb67 100644 --- a/src/main/resources/mq.properties +++ b/src/main/resources/mq.properties @@ -1,4 +1,5 @@ -broker_url=tcp://test.ifish7.com:61616 +#broker_url=tcp://test.ifish7.com:61616 +broker_url=tcp://www.ifish7.com:61616 username=admin #password=admin password=adminifish7 diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml index 7bd141f..3feccb8 100644 --- a/src/main/webapp/WEB-INF/web.xml +++ b/src/main/webapp/WEB-INF/web.xml @@ -5,7 +5,7 @@ index.jsp - + contextConfigLocation diff --git a/src/test/java/com/ifish/socketNew/SomeServerQueueTest.java b/src/test/java/com/ifish/socketNew/SomeServerQueueTest.java index fa2e6c9..c2ea814 100644 --- a/src/test/java/com/ifish/socketNew/SomeServerQueueTest.java +++ b/src/test/java/com/ifish/socketNew/SomeServerQueueTest.java @@ -7,12 +7,12 @@ import com.ifish.util.IfishUtil; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.jms.core.JmsTemplate; +//import org.springframework.jms.core.JmsTemplate; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import javax.jms.Destination; -import javax.jms.Session; +//import javax.jms.Destination; +//import javax.jms.Session; import java.util.Date; /** @@ -21,55 +21,55 @@ import java.util.Date; * @Date: Created in 16:20 2019-04-10 * @Modified by: */ -@RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(locations="classpath:application-context.xml") +//@RunWith(SpringJUnit4ClassRunner.class) +//@ContextConfiguration(locations="classpath:application-context.xml") public class SomeServerQueueTest { - @Autowired - private JmsTemplate jmsTemplate; - - @Autowired - private Destination ifish7DataQueueDestination; - @Autowired - private Destination ifish7PushQueueDestination; - - @Test - public void testDataMessageSend(){ - String json = "this's a test message"; - JSONObject data = new JSONObject(); - data.put("heaterMacAddress","12345"); - data.put("heaterWaterTemperature","130"); - data.put("heaterPh","1200"); - data.put("heaterGatheringDate", IfishUtil.format1(new Date())); - data.put("heaterGatheringTime","17"); - - QueueEventEntity eventEntity = new QueueEventEntity(); - eventEntity.setEventName("com.ifish7.mq.queues.event.IntelligentHeatingRodEvent"); - eventEntity.setEventProcess("intelligentHeatingRodSaveOrUpdate"); - QueueEventBody eventBody = new QueueEventBody("com.ifish7.mq.business.device.entity.TblDeviceHeater",data); - eventEntity.setEventBody(eventBody); - - String eventEntityStr = JSONObject.toJSONString(eventEntity); - jmsTemplate.send(ifish7DataQueueDestination,(Session session) -> session.createTextMessage(eventEntityStr)); - } - - @Test - public void testPushMessageSend(){ - String json = "this's a test message"; - JSONObject data = new JSONObject(); - data.put("heaterMacAddress","12345"); - data.put("heaterWaterTemperature","130"); - data.put("heaterPh","1200"); - data.put("heaterGatheringDate", IfishUtil.format1(new Date())); - data.put("heaterGatheringTime","17"); - - QueueEventEntity eventEntity = new QueueEventEntity(); - eventEntity.setEventName("com.ifish7.mq.queues.event.IntelligentHeatingRodEvent"); - eventEntity.setEventProcess("intelligentHeatingRodSaveOrUpdate"); - QueueEventBody eventBody = new QueueEventBody("com.ifish7.mq.business.device.entity.TblDeviceHeater",data); - eventEntity.setEventBody(eventBody); - - String eventEntityStr = JSONObject.toJSONString(eventEntity); - //智能加热棒数据更新及保存 - jmsTemplate.send(ifish7PushQueueDestination,(Session session) -> session.createTextMessage(eventEntityStr)); - } +// @Autowired +// private JmsTemplate jmsTemplate; +// +// @Autowired +// private Destination ifish7DataQueueDestination; +// @Autowired +// private Destination ifish7PushQueueDestination; +// +// @Test +// public void testDataMessageSend(){ +// String json = "this's a test message"; +// JSONObject data = new JSONObject(); +// data.put("heaterMacAddress","12345"); +// data.put("heaterWaterTemperature","130"); +// data.put("heaterPh","1200"); +// data.put("heaterGatheringDate", IfishUtil.format1(new Date())); +// data.put("heaterGatheringTime","17"); +// +// QueueEventEntity eventEntity = new QueueEventEntity(); +// eventEntity.setEventName("com.ifish7.mq.queues.event.IntelligentHeatingRodEvent"); +// eventEntity.setEventProcess("intelligentHeatingRodSaveOrUpdate"); +// QueueEventBody eventBody = new QueueEventBody("com.ifish7.mq.business.device.entity.TblDeviceHeater",data); +// eventEntity.setEventBody(eventBody); +// +// String eventEntityStr = JSONObject.toJSONString(eventEntity); +// //jmsTemplate.send(ifish7DataQueueDestination,(Session session) -> session.createTextMessage(eventEntityStr)); +// } +// +// @Test +// public void testPushMessageSend(){ +// String json = "this's a test message"; +// JSONObject data = new JSONObject(); +// data.put("heaterMacAddress","12345"); +// data.put("heaterWaterTemperature","130"); +// data.put("heaterPh","1200"); +// data.put("heaterGatheringDate", IfishUtil.format1(new Date())); +// data.put("heaterGatheringTime","17"); +// +// QueueEventEntity eventEntity = new QueueEventEntity(); +// eventEntity.setEventName("com.ifish7.mq.queues.event.IntelligentHeatingRodEvent"); +// eventEntity.setEventProcess("intelligentHeatingRodSaveOrUpdate"); +// QueueEventBody eventBody = new QueueEventBody("com.ifish7.mq.business.device.entity.TblDeviceHeater",data); +// eventEntity.setEventBody(eventBody); +// +// String eventEntityStr = JSONObject.toJSONString(eventEntity); +// //智能加热棒数据更新及保存 +// //jmsTemplate.send(ifish7PushQueueDestination,(Session session) -> session.createTextMessage(eventEntityStr)); +// } }