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;
 }
 public function perform()
 {
     $args = $this->args;
     $date = empty($args['date']) ? '' : $args['date'];
     $datetime = TimeUtil::getDatetime($date);
     $accountId = $args['accountId'];
     return ModelStatsCampaignProductCodeQuarterly::generateByYearAndQuarter($accountId, $datetime);
 }
 public function actionProduct()
 {
     $params = $this->getQuery();
     if (empty($params['year']) || empty($params['quarter'])) {
         throw new BadRequestHttpException(Yii::t('common', 'parameters_missing'));
     }
     $accountId = $this->getAccountId();
     $raw = StatsCampaignProductCodeQuarterly::getByYearAndQuarter($params['year'], $params['quarter'], $accountId);
     $products = [];
     $data = [];
     foreach ($raw as $item) {
         $products[] = $item['productName'];
         $data[] = $item['total'];
     }
     return ['products' => $products, 'data' => $data];
 }
 public static function generateStatsCampaignProductCodeQuarterlyData($condition)
 {
     $campaignLogDailys = StatsMemberCampaignLogDaily::getCollection()->aggregate([['$match' => $condition], ['$group' => ['_id' => ['productId' => '$productId'], 'total' => ['$sum' => 1]]]]);
     if (!empty($campaignLogDailys)) {
         $productIds = StatsMemberCampaignLogDaily::distinct('productId', $condition);
         $products = Product::findAll(['_id' => ['$in' => $productIds]]);
         $productNames = [];
         foreach ($products as $product) {
             $productNames[(string) $product->_id] = $product->name;
         }
         foreach ($campaignLogDailys as $campaignLogDaily) {
             $productId = $campaignLogDaily['_id']['productId'];
             $rows[] = ['productId' => $productId, 'productName' => isset($productNames[(string) $productId]) ? $productNames[(string) $productId] : '', 'total' => $campaignLogDaily['total'], 'year' => $condition['year'], 'quarter' => $condition['quarter'], 'accountId' => $condition['accountId']];
         }
         StatsCampaignProductCodeQuarterly::batchInsert($rows);
     }
 }