|  | @@ -10,6 +10,7 @@ import com.xunmei.common.core.utils.JacksonUtils;
 | 
											
												
													
														|  |  import com.xunmei.common.redis.enums.RedisDelayQueueEnum;
 |  |  import com.xunmei.common.redis.enums.RedisDelayQueueEnum;
 | 
											
												
													
														|  |  import com.xunmei.host.north.mapper.IotWebsocketMsgMapper;
 |  |  import com.xunmei.host.north.mapper.IotWebsocketMsgMapper;
 | 
											
												
													
														|  |  import com.xunmei.host.north.service.IotWebsocketMsgService;
 |  |  import com.xunmei.host.north.service.IotWebsocketMsgService;
 | 
											
												
													
														|  | 
 |  | +import com.xunmei.host.server.service.IotServerInfoService;
 | 
											
												
													
														|  |  import com.xunmei.host.websocket.dto.WebsocketExecuteReq;
 |  |  import com.xunmei.host.websocket.dto.WebsocketExecuteReq;
 | 
											
												
													
														|  |  import com.xunmei.host.websocket.dto.WebsocketResult;
 |  |  import com.xunmei.host.websocket.dto.WebsocketResult;
 | 
											
												
													
														|  |  import com.xunmei.host.websocket.redis.delay.RedisDelayQueueHandle;
 |  |  import com.xunmei.host.websocket.redis.delay.RedisDelayQueueHandle;
 | 
											
										
											
												
													
														|  | @@ -42,10 +43,13 @@ public class IotWebsocketMsgServiceImpl extends ServiceImpl<IotWebsocketMsgMappe
 | 
											
												
													
														|  |      @Resource
 |  |      @Resource
 | 
											
												
													
														|  |      WebsocketService websocketService;
 |  |      WebsocketService websocketService;
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | 
 |  | +    @Resource
 | 
											
												
													
														|  | 
 |  | +    IotServerInfoService serverInfoService;
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  |      @Override
 |  |      @Override
 | 
											
												
													
														|  |      @Async(ThreadPoolConfig.HOST_EXECUTOR)
 |  |      @Async(ThreadPoolConfig.HOST_EXECUTOR)
 | 
											
												
													
														|  |      @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW)
 |  |      @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW)
 | 
											
												
													
														|  | -    public void saveMsg(WebsocketExecuteReq req, String receiveMsg) {
 |  | 
 | 
											
												
													
														|  | 
 |  | +    public void receiveAndSaveMsg(WebsocketExecuteReq req, String receiveMsg) {
 | 
											
												
													
														|  |          //刚刚收到消息,还没开始处理业务逻辑,先保存消息数据
 |  |          //刚刚收到消息,还没开始处理业务逻辑,先保存消息数据
 | 
											
												
													
														|  |          final IotServerInfo serverInfo = req.getServerInfo();
 |  |          final IotServerInfo serverInfo = req.getServerInfo();
 | 
											
												
													
														|  |          final IotWebsocketMsg msg = new IotWebsocketMsg();
 |  |          final IotWebsocketMsg msg = new IotWebsocketMsg();
 | 
											
										
											
												
													
														|  | @@ -67,6 +71,31 @@ public class IotWebsocketMsgServiceImpl extends ServiceImpl<IotWebsocketMsgMappe
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      @Override
 |  |      @Override
 | 
											
												
													
														|  | 
 |  | +    public void sendAndSaveMsg(String iotCode, WebsocketResult res) {
 | 
											
												
													
														|  | 
 |  | +        //刚刚收到消息,还没开始处理业务逻辑,先保存消息数据
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +        final IotServerInfo serverInfo = serverInfoService.selectByToken(iotCode);
 | 
											
												
													
														|  | 
 |  | +        final IotWebsocketMsg msg = new IotWebsocketMsg();
 | 
											
												
													
														|  | 
 |  | +        final LocalDateTime now = LocalDateTime.now();
 | 
											
												
													
														|  | 
 |  | +        msg.setId(res.getId());
 | 
											
												
													
														|  | 
 |  | +        msg.setEvent(res.getServiceName());
 | 
											
												
													
														|  | 
 |  | +        msg.setOrgId(serverInfo.getOrgId());
 | 
											
												
													
														|  | 
 |  | +        msg.setOrgName(serverInfo.getOrgName());
 | 
											
												
													
														|  | 
 |  | +        msg.setIotCode(serverInfo.getIotCode());
 | 
											
												
													
														|  | 
 |  | +        msg.setServerName(serverInfo.getIotName());
 | 
											
												
													
														|  | 
 |  | +        msg.setStatus(MessageStatusEnum.PROCESSING.getCode());
 | 
											
												
													
														|  | 
 |  | +        msg.setReplyContent(JacksonUtils.toJSONString(res));
 | 
											
												
													
														|  | 
 |  | +        msg.setReadySendTime(now);
 | 
											
												
													
														|  | 
 |  | +        msg.setMaxRetryTimes(3);
 | 
											
												
													
														|  | 
 |  | +        msg.setCurRetryTimes(0);
 | 
											
												
													
														|  | 
 |  | +        msg.setRetryInterval(10);
 | 
											
												
													
														|  | 
 |  | +        msg.setCreateTime(now);
 | 
											
												
													
														|  | 
 |  | +        msg.setUpdateTime(now);
 | 
											
												
													
														|  | 
 |  | +        save(msg);
 | 
											
												
													
														|  | 
 |  | +        LogUtils.WS_MSG_RETRY_LOG.info("开始下发消息到主机,msg: {}", JacksonUtils.toJSONString(msg));
 | 
											
												
													
														|  | 
 |  | +    }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +    @Override
 | 
											
												
													
														|  |      @Async(ThreadPoolConfig.HOST_EXECUTOR)
 |  |      @Async(ThreadPoolConfig.HOST_EXECUTOR)
 | 
											
												
													
														|  |      @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW)
 |  |      @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW)
 | 
											
												
													
														|  |      public void sendSuccessMsg(String msgId) {
 |  |      public void sendSuccessMsg(String msgId) {
 |