public static function getResults($messageId) { $query1 = new Query(); $data = $query1->from(self::collectionName())->select(['messageId', 'results'])->where(['messageId' => $messageId])->all(); if (empty($data)) { return []; } $data = $data[0]; $query2 = new Query(); $messageContent = $query2->from(Message::collectionName())->select(['content'])->where(['_id' => new \MongoId($messageId)])->all()[0]['content']; $results = []; foreach ($data['results'] as $key => $value) { if (empty($value['mobile'])) { $value['mobile'] = ''; } if ($value['type'] == 'iOS') { if (empty($value['res']) || $value['res'] != 200) { $value['res'] = '失敗'; } else { $value['res'] = '成功'; } } else { if (!empty($value['res'])) { $jsonObj = json_decode($value['res']); if ($jsonObj->success != null && $jsonObj->success > 0) { $value['res'] = '成功'; } else { $value['res'] = '失敗'; } } } // $query3 = new Query(); // $mobile = $query3->from(PushUser::collectionName()) // ->select(['mobile']) // ->where(['token' => $value['token']]) // ->all(); // if (empty($mobile)) { // $mobile = ''; // } else { // $mobile = $mobile[0]['mobile']; // } $results[] = ['messageId' => $messageId, 'messageContent' => $messageContent, 'mobile' => $value['mobile'] . ' ', 'deviceType' => $value['type'], 'deviceId' => $value['token'], 'result' => $value['res']]; } return $results; }
public static function pushMessage($messageId, $time) { $time = (int) $time; $logFileName = 'pushmessage'; $logMsg = 'Message (' . $messageId . ') started to push at ' . date('Y-m-d H:i:s', time()); LogUtil::error('uhkklp-push-message: ' . $logMsg); $queryMessage = new Query(); $logMsg = '---Find message by id...'; LogUtil::error('uhkklp-push-message: ' . $logMsg); $message = $queryMessage->from('uhkklpMessage')->select(['content', 'linkType', 'newsId', 'pushTime'])->where(['_id' => new \MongoId($messageId)])->all(); if (empty($message)) { $logMsg = 'Push canseled, message was deleted in database'; LogUtil::error('uhkklp-push-message: ' . $logMsg); return; } $message = $message[0]; if ($message['pushTime']->sec != $time) { $logMsg = 'Push canseled, pushTime was changed in database'; LogUtil::error('uhkklp-push-message: ' . $logMsg); return; } $logMsg = '---done'; LogUtil::error('uhkklp-push-message: ' . $logMsg); $logMsg = '---Find tokens...'; LogUtil::error('uhkklp-push-message: ' . $logMsg); $queryUser = new Query(); $users = $queryUser->from('uhkklpPushMessage')->select(['mobile', 'token', 'deviceType', 'accountId'])->where(['messageId' => new \MongoId($messageId)])->all(); $logMsg = '---done'; LogUtil::error('uhkklp-push-message: ' . $logMsg); $gcmUtil = new GCMUtil(); $apmUtil = new APMUtil(); $logMsg = '---Pushing...'; LogUtil::error('uhkklp-push-message: ' . $logMsg); $msg['content'] = $message['content']; $msg['linkType'] = $message['linkType']; $msg['newsId'] = $message['newsId']; $log = new PushMessageLog(); $log->messageId = $messageId; $log->startTime = date('Y-m-d H:i:s', time()); $log->save(); $results = []; foreach ($users as $user) { if ($user['deviceType'] == PushUser::DEVICE_ANDROID) { $response = $gcmUtil->pushMessageByToken($user['token'], $msg, $user['accountId']); LogUtil::error('GCMUtil: ' . $user['token'] . ' ' . $response); } else { $response = $apmUtil->pushMsg($user['token'], $msg, $user['accountId']); LogUtil::error('APMUtil: ' . $user['token'] . ' ' . $response); } $result['type'] = $user['deviceType']; $result['token'] = $user['token']; if (!empty($user['mobile'])) { $result['mobile'] = $user['mobile']; } $result['res'] = $response; $results[] = $result; $log->results = $results; $log->save(); unset($result); } $apmUtil->closeFp(); $logMsg = 'Push finished at ' . date('Y-m-d H:i:s', time()); LogUtil::error('uhkklp-push-message: ' . $logMsg); $log->endTime = date('Y-m-d H:i:s', time()); $log->accountId = $user['accountId']; $log->save(); $uhkklpMessage = Message::findOne([$messageId]); $uhkklpMessage->isPushed = true; $uhkklpMessage->update(); return $results; }
public function actionDelete() { $request = Yii::$app->request; $id = $request->post('$id'); $message = Message::findOne([$id]); $message->isDeleted = true; $message->update(); PushMessage::deleteAll(['messageId' => $message->_id]); Yii::$app->response->format = \yii\web\Response::FORMAT_JSON; return ['code' => '-1']; }
public function getCount($condition = []) { $condition['isDeleted'] = false; return Message::find()->where($condition)->count(); }