public function actionStats()
 {
     $memberId = $this->getQuery('memberId');
     if (empty($memberId)) {
         throw new BadRequestHttpException(Yii::t('common', 'parameters_missing'));
     }
     $accountId = $this->getAccountId();
     $memberOrderStats = StatsMemberOrder::getByConsumerId($accountId, $memberId);
     $order = Order::getLastByConsumerId($accountId, $memberId);
     if (empty($order)) {
         $result = ['lastOperateTime' => '', 'operateInterval' => null];
     } else {
         $lastDate = MongodbUtil::MongoDate2String($order->operateTime, 'Y-m-d');
         $result = ['lastOperateTime' => $lastDate, 'operateInterval' => abs((strtotime(date('Y-m-d')) - strtotime($lastDate)) / 86400)];
     }
     if (empty($memberOrderStats)) {
         $result['consumptionAmount'] = $result['recentConsumption'] = $result['consumption'] = $result['memberMaxConsumption'] = 0;
     } else {
         $result['consumptionAmount'] = round($memberOrderStats->consumptionAmount);
         $result['recentConsumption'] = $memberOrderStats->recentTransactionCount;
         $result['consumption'] = round($memberOrderStats->consumptionAmount / $memberOrderStats->transactionCount);
         $result['memberMaxConsumption'] = round($memberOrderStats->maxConsumption);
     }
     $orderStats = StatsOrder::getLatestByAccount($accountId);
     if (empty($orderStats)) {
         $result['consumptionAmountAvg'] = $result['recentConsumptionAvg'] = $result['consumptionAvg'] = $result['maxConsumption'] = 0;
     } else {
         $result['consumptionAmountAvg'] = round($orderStats->consumptionAmount / $orderStats->consumerCount);
         $result['recentConsumptionAvg'] = round($orderStats->recentTransactionTotal / $orderStats->consumerCount);
         $result['consumptionAvg'] = round($orderStats->consumptionAmount / $orderStats->transactionCount);
         $result['maxConsumption'] = round($orderStats->maxConsumptionTotal / $orderStats->consumerCount);
     }
     return $result;
 }
Exemple #2
0
 /**
  * @args {"description": "Delay: stats of account orders"}
  * @author Rex Chen
  */
 public function perform()
 {
     $stats = StatsMemberOrder::getStatsByAccount();
     if (!ModelStatsOrder::batchInsert($stats)) {
         LogUtil::error(['message' => 'Stats account order', 'date' => date('Y-m-d'), 'statsOrder' => $stats], 'resque');
     }
 }
 /**
  * @args {"description": "Delay: stats of member orders", "runNextJob": true}
  * @author Rex Chen
  */
 public function perform()
 {
     $dateStr = date('Y-m-d');
     $operateTimeTo = new MongoDate(strtotime($dateStr));
     $accounts = Account::findAll([]);
     foreach ($accounts as $account) {
         $modelStatsOrder = StatsOrder::getLatestByAccount($account->_id);
         if (empty($modelStatsOrder)) {
             $operateTimeFrom = null;
         } else {
             //ensure Y-m-d mongodate
             $operateDate = MongodbUtil::MongoDate2String($modelStatsOrder->createdAt, 'Y-m-d');
             if ($dateStr === $operateDate) {
                 return true;
             }
             $operateTimeFrom = new MongoDate(strtotime($operateDate));
         }
         $this->statsMemberOrder($account->_id, $operateTimeFrom, $operateTimeTo);
         $this->updateMemberRecentTransactionCount($account->_id);
     }
 }
 public function actionIndex($accountId)
 {
     if (empty($accountId)) {
         echo 'accountId is invaild' . PHP_EOL;
         exit;
     }
     $where['accountId'] = new \MongoId($accountId);
     // delete member info
     Member::getCollection()->remove($where);
     //delete MemberLogs
     MemberLogs::getCollection()->remove($where);
     //delete scoreHistory
     ScoreHistory::getCollection()->remove($where);
     //delete CampaignLog
     CampaignLog::getCollection()->remove($where);
     //delete GoodsExchangeLog
     GoodsExchangeLog::getCollection()->remove($where);
     //delete MemberStatistics
     MemberStatistics::getCollection()->remove($where);
     //delete ReMemberCampaign
     ReMemberCampaign::getCollection()->remove($where);
     //delete StatsCampaignProductCodeQuarterly
     StatsCampaignProductCodeQuarterly::getCollection()->remove($where);
     //delete StatsMemberCampaignLogDaily
     StatsMemberCampaignLogDaily::getCollection()->remove($where);
     //delete StatsMemberDaily
     StatsMemberDaily::getCollection()->remove($where);
     //delete StatsMemberGrowthMonthly
     StatsMemberGrowthMonthly::getCollection()->remove($where);
     //delete StatsMemberGrowthQuarterly
     StatsMemberGrowthQuarterly::getCollection()->remove($where);
     //delete StatsMemberMonthly
     StatsMemberMonthly::getCollection()->remove($where);
     //delete StatsMemberPropAvgTradeQuarterly
     StatsMemberPropAvgTradeQuarterly::getCollection()->remove($where);
     //delete StatsMemberPropMonthly
     StatsMemberPropMonthly::getCollection()->remove($where);
     //delete StatsMemberPropQuaterly
     StatsMemberPropQuaterly::getCollection()->remove($where);
     //delete StatsMemberPropTradeCodeAvgQuarterly
     StatsMemberPropTradeCodeAvgQuarterly::getCollection()->remove($where);
     //delete StatsMemberPropTradeCodeQuarterly
     StatsMemberPropTradeCodeQuarterly::getCollection()->remove($where);
     //delete StatsMemberPropTradeQuarterly
     StatsMemberPropTradeQuarterly::getCollection()->remove($where);
     //delete PromotionCodeAnalysis
     PromotionCodeAnalysis::getCollection()->remove($where);
     //delete order
     Order::getCollection()->remove($where);
     //delete stats member order
     StatsMemberOrder::getCollection()->remove($where);
     //delete stats order
     StatsOrder::getCollection()->remove($where);
     //delete MembershipDiscount
     MembershipDiscount::getCollection()->remove($where);
     //delete couponLog
     CouponLog::getCollection()->remove($where);
     echo 'delete data successful.' . PHP_EOL;
 }