Exemplo n.º 1
0
 /**
  * Stats member order
  * @param MongoId $accountId
  * @param MongoDate $operateTimeFrom
  * @param MongoDate $operateTimeTo
  */
 private function statsMemberOrder($accountId, $operateTimeFrom, $operateTimeTo)
 {
     $memberStats = Order::getMemberStats($accountId, $operateTimeFrom, $operateTimeTo);
     $memberStatsRows = [];
     foreach ($memberStats as $stat) {
         $consumerId = $stat['consumer.id'];
         $memberStats = ModelStatsMemberOrder::getByConsumerId($accountId, $consumerId);
         if (empty($memberStats)) {
             $memberStatsRows[] = ['consumerId' => $consumerId, 'consumptionAmount' => $stat['consumptionAmount'], 'transactionCount' => $stat['transactionCount'], 'maxConsumption' => $stat['maxConsumption'], 'accountId' => $accountId];
         } else {
             $memberStats->consumptionAmount += $stat['consumptionAmount'];
             $memberStats->transactionCount += $stat['transactionCount'];
             $memberStats->maxConsumption = $memberStats->maxConsumption > $stat['maxConsumption'] ? $memberStats->maxConsumption : $stat['maxConsumption'];
             if (!$memberStats->save(true, ['consumptionAmount', 'transactionCount', 'maxConsumption'])) {
                 LogUtil::error(['message' => 'Stats member order', 'date' => $dateStr, 'memberStats' => $memberStats], 'resque');
             }
         }
     }
     $batchInsertResult = ModelStatsMemberOrder::batchInsert($memberStatsRows);
     if (!$batchInsertResult) {
         LogUtil::error(['message' => 'Stats member order', 'date' => $dateStr, 'memberStats' => $memberStatsRows], 'resque');
     }
 }