private function _savePushMessages($messageId, $phoneNums) { $pushUsers = []; if (empty($phoneNums)) { $query = new Query(); $result = $query->from(PushUser::collectionName())->select(['token', 'deviceType', 'mobile'])->where(['accountId' => $this->getAccountId()])->all(); $pushUsers = array_merge($pushUsers, $result); } else { foreach ($phoneNums as $phone) { $query = new Query(); $result = $query->from(PushUser::collectionName())->select(['token', 'deviceType', 'mobile'])->where(['mobile' => $phone, 'accountId' => $this->getAccountId()])->all(); $pushUsers = array_merge($pushUsers, $result); } } $pushUsers = $this->_uniquePushUsers($pushUsers); foreach ($pushUsers as $pushUser) { $pushMessage = new PushMessage(); if (!empty($pushUser['mobile'])) { $pushMessage->mobile = $pushUser['mobile']; } $pushMessage->token = $pushUser['token']; $pushMessage->deviceType = $pushUser['deviceType']; $pushMessage->messageId = $messageId; if (!empty($this->getAccountId())) { $pushMessage->accountId = $this->getAccountId(); } $pushMessage->insert(); } }
public static function saveToken($query) { $token = $query->token; $mobile = null; if (isset($query->mobile) && !empty($query->mobile)) { $mobile = $query->mobile; } $deviceType = $query->deviceType; $accountId = $query->accountId; $item = self::findOne(['mobile' => $mobile, 'token' => $token, 'deviceType' => $deviceType, 'accountId' => new \MongoId($accountId)]); if ($item == null) { $item = new PushUser(); $item->mobile = $mobile; $item->deviceType = $deviceType; $item->accountId = $accountId; $item->token = $token; $item->save(); } return $item; }
private function getRegistrationIdListByMobile($mobile, $accountId) { $list = PushUser::getListByMobile($mobile, PushUser::DEVICE_ANDROID, $accountId); $registrationList = []; if (!empty($list)) { foreach ($list as $item) { array_push($registrationList, $item->token); } } return $registrationList; }
public function actionSave() { \Yii::$app->response->format = \yii\web\Response::FORMAT_JSON; $accountId = $this->getAccountId(); if (empty($accountId)) { return ['code' => 400, 'msg' => 'missing accountId']; } $body = Yii::$app->request->getRawBody(); $query = json_decode($body); if (empty($query)) { return ['code' => 400, 'msg' => 'bad request']; } if (!isset($query->token)) { return ['code' => 400, 'msg' => 'missing token']; } $query->accountId = new \MongoId($accountId); $user = PushUser::saveToken($query); return ['code' => 200, 'msg' => 'ok']; }