public function perform()
 {
     $args = $this->args;
     if (empty($args['language']) || empty($args['header']) || empty($args['key']) || empty($args['accountId']) || empty($args['condition'])) {
         ResqueUtil::log(['status' => 'fail to export code', 'message' => 'missing params', 'args' => $args]);
         return false;
     }
     //set the language
     Yii::$app->language = empty($args['language']) ? LanguageUtil::DEFAULT_LANGUAGE : $args['language'];
     $header = $args['header'];
     $fileName = $args['key'];
     $filePath = ExcelUtil::getFile($fileName, 'csv');
     $condition = unserialize($args['condition']);
     $object = GoodsExchangeLog::find();
     $classFunction = '\\backend\\modules\\product\\models\\GoodsExchangeLog::preProcessExportData';
     $backendUser = Account::findByPk(new \MongoId($args['accountId']));
     ExcelUtil::processMultiData($header, $filePath, $backendUser, $condition, $object, $classFunction, ['changeTostring' => ['goods']]);
     $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 {
         return false;
     }
 }
 /**
  * export the goods exchange log
  */
 public function actionExport()
 {
     $params = $this->getQuery();
     $accountId = $this->getAccountId();
     $where = GoodsExchangeLog::createCondition($params, $accountId);
     $query = GoodsExchangeLog::find();
     $data = $query->where($where)->one();
     if ($data) {
         //redis hash key and set a default value
         $key = Yii::t('product', 'goods_exchange_logs_file_name') . '_' . date('YmdHis');
         // get the header for the excel
         $headerValues = explode(",", Yii::t('product', 'exchange_log_export'));
         $headerKeys = ['id', 'memberName', 'telephone', 'address', 'postcode', 'expectedScore', 'usedScore', 'goods', 'createdAt', 'channel'];
         $header = [];
         foreach ($headerKeys as $index => $headerKey) {
             $header[$headerKey] = $headerValues[$index];
         }
         $exportArgs = ['language' => Yii::$app->language, 'header' => $header, 'key' => $key, 'accountId' => (string) $accountId, 'condition' => serialize($where), 'description' => 'Direct: export goods exchange log'];
         $jobId = Yii::$app->job->create('backend\\modules\\product\\job\\ExportGoodsExchangeLog', $exportArgs);
         $result = ['result' => 'success', 'message' => 'exporting goods exchange log', 'data' => ['jobId' => $jobId, 'key' => $key]];
     } else {
         $result = ['result' => 'error', 'message' => 'no datas', 'data' => []];
     }
     return $result;
 }
Exemplo n.º 3
0
 private function _memberLogsFromGoodsExchange($accountId)
 {
     $skip = 0;
     $limit = 100;
     $query = GoodsExchangeLog::find()->where(['accountId' => $accountId])->orderBy(['createdAt' => SORT_ASC]);
     $query = $query->offset($skip)->limit($limit);
     $goodsExchangeLogs = $query->all();
     while (!empty($goodsExchangeLogs)) {
         $memberLogs = [];
         foreach ($goodsExchangeLogs as $goodsExchangeLog) {
             $memberLogs[] = ['memberId' => $goodsExchangeLog->memberId, 'operation' => MemberLogs::OPERATION_REDEEM, 'operationAt' => $goodsExchangeLog->createdAt, 'createdAt' => $goodsExchangeLog->createdAt, 'accountId' => $goodsExchangeLog->accountId];
         }
         MemberLogs::batchInsert($memberLogs);
         $skip += $limit;
         $query = $query->offset($skip)->limit($limit);
         $goodsExchangeLogs = $query->all();
     }
 }