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; }
/** * @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; }