public function perform() { $args = $this->args; if (empty($args['accountId']) || empty($args['key']) || empty($args['header']) || empty($args['smsName'])) { ResqueUtil::log(['status' => 'fail to export early bird sms details', 'message' => 'missing params', 'args' => $args]); return false; } $accountId = new \MongoId($args['accountId']); $header = $args['header']; $fileName = $args['key']; $filePath = ExcelUtil::getFile($fileName, 'csv'); $rows = null; if ($args['smsName'] == 'sms_four') { $rows = EarlyBirdSmsDetail::preProcessEarlyBirdSmsDetails($args['smsName'], $accountId); } else { $rows = EarlyBirdSmsFailed::preProcessSendFailedData($args['smsName'], $accountId); } ExcelUtil::exportCsv($header, $rows, $filePath, 1); $hashKey = ExcelUtil::setQiniuKey($filePath, $fileName); if ($hashKey) { //notice frontend the job is finished Yii::$app->tuisongbao->triggerEvent(Message::EVENT_EXPORT_FINISH, ['key' => $fileName], [Message::CHANNEL_GLOBAL . $args['accountId']]); return true; } else { ResqueUtil::log(['status' => 'fail to export early bird sms details', 'message' => 'fail to setQiniuKey', 'filePath' => $filePath]); return false; } }
public static function getCountBySmsRecordId($smsRecordId) { $accountId = Token::getAccountId(); $successful = EarlyBirdSmsDetail::find()->where(['smsRecordId' => $smsRecordId, 'status' => true, 'accountId' => $accountId])->count(); $failed = EarlyBirdSmsDetail::find()->where(['smsRecordId' => $smsRecordId, 'status' => false, 'accountId' => $accountId])->count(); unset($accountId); return ['successful' => $successful, 'failed' => $failed]; }
public static function updateSmsRecordById($id) { $smsCount = EarlyBirdSmsDetail::getCountBySmsRecordId($id); $smsRecord = EarlyBirdSmsRecord::findOne($id); $smsRecord->successful = $smsCount['successful']; $smsRecord->failed = $smsCount['failed']; $smsRecord->save(); return $smsRecord; }
private static function _sendSms($members, $smsTag, $smsRecordId, $accountId) { try { if (!empty($members) && count($members) > 0) { for ($i = 0; $i < count($members); $i++) { $member = $members[$i]; $sms = self::getSms($member, $smsTag, $accountId); if (!empty($sms) && !empty($sms['mobile'])) { $response = MessageUtil::sendMobileMessage($sms['mobile'], $sms['smsContent'], $accountId); EarlyBirdSmsDetail::createSmsDetail($sms['mobile'], $sms['smsContent'], $response, $smsRecordId, $accountId); if (!$response) { LogUtil::error(['message' => 'EarlyBirdSms發送失敗', 'mobile' => $sms['mobile'], 'name' => $sms['name']], 'earlybird'); EarlyBirdSmsFailed::createSmsFailed($sms['mobile'], $sms['smsContent'], $smsRecordId, $accountId); } unset($sms, $member, $response); } } } return true; } catch (\Exception $e) { LogUtil::error(['message' => 'EarlyBirdSms發送失敗', 'error' => $e], 'earlybird'); EarlyBirdSmsRecord::updateProcessById($smsRecordId, 3); // 發送故障 throw $e; } }