示例#1
0
 public static function createSmsFailed($mobile, $smsContent, $smsRecordId, $accountId)
 {
     $smsFailed = new BulkSmsFailed();
     $smsFailed->mobile = $mobile;
     $smsFailed->smsContent = $smsContent;
     $smsFailed->smsRecordId = $smsRecordId;
     $smsFailed->accountId = $accountId;
     if (!$smsFailed->save()) {
         return false;
     } else {
         return true;
     }
 }
示例#2
0
 public function perform()
 {
     $args = $this->args;
     if (empty($args['key']) || empty($args['header']) || empty($args['condition'])) {
         ResqueUtil::log(['status' => 'fail to export sms result record', 'message' => 'missing params', 'args' => $args]);
         return false;
     }
     $condition = unserialize($args['condition']);
     $header = $args['header'];
     $fileName = $args['key'];
     $filePath = ExcelUtil::getFile($fileName, 'csv');
     $rows = BulkSmsFailed::find()->where($condition)->all();
     $rowsSuccess = BulkSmsFailed::find()->where($condition)->all();
     $finalRows = array_merge($rows, $rowsSuccess);
     ExcelUtil::exportCsv($header, $finalRows, $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]);
         return true;
     } else {
         ResqueUtil::log(['status' => 'fail to export sms result', 'message' => 'fail to setQiniuKey', 'filePath' => $filePath]);
         return false;
     }
 }
示例#3
0
 /**
  * @param $data array eg: [['mobile'=>'0912345678', 'smsContent'=>'恭喜中奖了'], ...]
  * @param $smsName string eg: 'cny_winners'
  * @param $smsRecord MongoId
  */
 public static function sendSms($data, $smsName, $smsRecordId, $accountId)
 {
     BulkSmsRecord::updateProcessById($smsRecordId, 1);
     // 正在發送
     try {
         if (!empty($data)) {
             foreach ($data as $sms) {
                 $mobile = self::processSmsMobile($accountId, $sms['mobile']);
                 $response = MessageUtil::sendMobileMessage($mobile, $sms['smsContent'], $accountId);
                 BulkSmsLog::createSmsLog($sms['mobile'], $sms['smsContent'], $response, $smsRecordId, $accountId);
                 if (!$response) {
                     LogUtil::error(['message' => '群發簡訊失敗', 'mobile' => $mobile, 'SMSContent' => $sms['smsContent']], 'bulkSms');
                     BulkSmsFailed::createSmsFailed($sms['mobile'], $sms['smsContent'], $smsRecordId, $accountId);
                 }
                 unset($response, $mobile);
             }
             BulkSmsRecord::updateProcessById($smsRecordId, 2);
             // 發送完成
         }
     } catch (\Exception $e) {
         LogUtil::error(['message' => 'EarlyBirdSms發送失敗', 'error' => $e], 'earlybird');
         BulkSmsRecord::updateProcessById($smsRecordId, 3);
         // 發送故障
         throw $e;
     }
 }
示例#4
0
 public function perform()
 {
     $args = $this->args;
     if (empty($args['data']) || empty($args['accountId']) || empty($args['modelContent']) || empty($args['smsBatch'])) {
         ResqueUtil::log(['status' => 'fail to send sms', 'message' => 'missing params', 'args' => $args]);
         LogUtil::error(['message' => 'missing params in job', 'args' => $args], 'Sms');
     }
     $data = $args['data'];
     $accountId = $args['accountId'];
     $modelContent = $args['modelContent'];
     $smsBatch = $args['smsBatch'];
     $failureCount = 0;
     $successCount = 0;
     $totalCount = 0;
     try {
         if (!empty($data)) {
             foreach ($data as $sms) {
                 if ($sms['mobile'] != '') {
                     $response = MessageUtil::sendMobileMessage($sms['mobile'], $sms['content'], $accountId);
                     // $response = MessageUtil::sendMobileMessage($sms['mobile'], $sms['content']);
                     BulkSmsLog::createSmsLog($sms['mobile'], $sms['content'], $response, $smsBatch, $accountId);
                     if (!$response) {
                         $failureCount++;
                         LogUtil::error(['message' => '群發簡訊失敗', 'mobile' => $sms['mobile'], 'SMSContent' => $sms['content']], 'bulkSms');
                         BulkSmsFailed::createSmsFailed($sms['mobile'], $sms['content'], $smsBatch, $accountId);
                     } else {
                         $successCount++;
                         LogUtil::error(['message' => '群發簡訊成功', 'mobile' => $sms['mobile'], 'SMSContent' => $sms['content']], 'bulkSms');
                         BulkSmsSuccess::createSmsSuccess($sms['mobile'], $sms['content'], $smsBatch, $accountId);
                     }
                     unset($response);
                 } else {
                     LogUtil::error(date('Y-m-d h:i:s') . '号码为空.');
                     $failureCount++;
                 }
             }
             $totalCount = $successCount + $failureCount;
             //record result
             $SmsResultModel = new SmsResultModel();
             $SmsResultModel->successRecord = $successCount;
             $SmsResultModel->failureRecord = $failureCount;
             $SmsResultModel->totalRecord = $totalCount;
             $SmsResultModel->smsBatch = $smsBatch;
             $SmsResultModel->accountId = $accountId;
             $SmsResultModel->modelContent = $modelContent;
             $SmsResultModel->save();
         }
     } catch (\Exception $e) {
         LogUtil::error(['message' => 'Sms發送失敗', 'error' => $e], 'sms');
         throw $e;
     }
 }
示例#5
0
 public function actionDeleteSmsResult()
 {
     $id = Yii::$app->request->post("_id");
     $resultCondition = ['_id' => new \MongoId($id)];
     $result = SmsResultModel::findOne($resultCondition);
     if (!empty($result)) {
         $smsBatch = $result['smsBatch'];
         //1. delete result record
         $result->delete();
         $condition = ['smsRecordId' => $smsBatch];
         // LogUtil::error(date('Y-m-d h:i:s') . ' $smsBatch: ' . $smsBatch);
         //2. delete failure record
         $res = BulkSmsFailed::deleteAll($condition);
         if (!empty($res)) {
             return ['result' => 'success', 'message' => 'delete SmsResult'];
         } else {
             return ['result' => 'error', 'message' => 'no datas'];
         }
     } else {
         LogUtil::error(['message' => 'smsResult刪除失败', 'reason' => '没有数据(no data)', 'condition' => $resultCondition], 'smsResultDelete');
         return ['result' => 'error', 'message' => 'no datas'];
     }
 }