select(['id','order_num','money', 'pay_type', 'store_id', 'type']); if ($isMain) { $orders = $orders->where(['order_main_id' => $orderId])->get()->toArray(); } else { $orders = $orders->where(['id' => $orderId])->get()->toArray(); } if(empty($orders)) return; // 循环发送 foreach ($orders as $k => &$order) { $order['template'] = $order['type']==1 ? "您有新的链街外卖订单" : "微信到账".floatval($order['money'])."元"; // 获取终端ID $order['to_client_id'] = Store::query()->where(['id' => $order['store_id']])->value('loudspeaker_imei'); // 发布订阅消息 $res = $this->publish($order['template'], self::TOPIC, $order['to_client_id']); } } /** * @inheritDoc */ public function publish( $message, $topic, $toClientId = '', $type = '', $payId = '', $curClientId = '' ) { $client = new MQTTClient(env('MQTT_HOST'), env('MQTT_PORT')); $client->setAuthentication(env('MQTT_NAME'), env('MQTT_PASS')); $client->setDebug(true); if (env('MQTT_CERT')) { $client->setEncryption(env('MQTT_CERT')); } $msgArr = []; if ( (empty($type)&&is_numeric($message)) || 'cash' === $type ) { $msgArr['cash'] = $message; $payId AND $msgArr['payid'] = $payId; } else { $msgArr['message'] = $message; } if (!empty($toClientId)) { $topic .= '/'.$toClientId; } $curClientId OR $curClientId = (string)rand(1,999999999); $success = $client->sendConnect($curClientId); if ($success) { $client->sendPublish($topic, json_encode($msgArr), MQTTClient::MQTT_QOS2); $client->sendDisconnect(); } $client->close(); } }