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 static function generateStatsMemberPropTradeQuarterlyData($propertyId, $condition) { $campaignLogDailys = StatsMemberCampaignLogDaily::getCollection()->aggregate(['$match' => $condition], ['$group' => ['_id' => ['propValue' => '$memProperty.' . $propertyId, 'memberId' => '$memberId']]], ['$group' => ['_id' => ['propValue' => '$_id.propValue'], 'total' => ['$sum' => 1]]]); $rows = []; if (!empty($campaignLogDailys)) { foreach ($campaignLogDailys as $item) { $rows[] = ['propId' => $propertyId, 'propValue' => $item['_id']['propValue'], 'total' => $item['total'], 'year' => $condition['year'], 'quarter' => $condition['quarter'], 'accountId' => $condition['accountId']]; } StatsMemberPropTradeQuarterly::batchInsert($rows); LogUtil::info(['message' => $condition['quarter'] . ':StatsMemberPropTradeQuarterly =>' . count($rows)], 'update_job'); unset($rows); } }
public static function generateData($memberProperty, $property, $year, $quarter, $accountId) { $propertyKey = 'memProperty.' . $memberProperty->_id; $keys = ['productId' => true, $propertyKey => true]; $condition = ['year' => $year, 'quarter' => $quarter, 'accountId' => $accountId]; $initial = ['avg' => 0, 'codes' => ['count' => 0], 'members' => ['count' => 0]]; $reduce = 'function(doc, prev) { if (!prev.members[doc.memberId]) { prev.members[doc.memberId] = true; prev.members["count"]++; } if (!prev.codes[doc.code]) { prev.codes[doc.code] = true; prev.codes["count"]++; } }'; $finalize = 'function(prev) { prev.avg = prev.codes["count"] / prev.members["count"]; delete prev.codes; delete prev.members; }'; $statsItems = ModelStatsMemberCampaignLogDaily::getCollection()->group($keys, $initial, $reduce, ['condition' => $condition, 'finalize' => $finalize]); foreach ($statsItems as $statsItem) { $condition['propId'] = $property; $condition['propValue'] = $statsItem[$propertyKey]; $productId = $statsItem['productId']; $condition['productId'] = $productId; $stats = ModelStatsMemberPropTradeCodeAvgQuarterly::findOne($condition); if (empty($stats)) { $stats = new ModelStatsMemberPropTradeCodeAvgQuarterly(); $product = Product::findByPk($productId); $productName = ''; if (!empty($product)) { $productName = $product->name; } $stats->propId = $property; $stats->propValue = $statsItem[$propertyKey]; $stats->productId = $productId; $stats->productName = $productName; $stats->year = $year; $stats->quarter = $quarter; $stats->accountId = $accountId; } $stats->avg = $statsItem['avg']; $stats->save(); } }
/** * get total base on the memberId and property */ public static function getTotalWithMember($item, $propertyId, $accountId) { $where = ['memProperty' . $propertyId => $item['_id']['propValue'], 'year' => $item['_id']['year'], 'quarter' => $item['_id']['quarter'], 'accountId' => $accountId]; $summary = StatsMemberCampaignLogDaily::getCollection()->aggregate(['$match' => $where], ['$group' => ['_id' => ['propValue' => '$memProperty.' . $propertyId, 'memberId' => '$memberId']]], ['$group' => ['_id' => ['propValue' => '$_id.propValue'], 'total' => ['$sum' => 1]]]); if (empty($summary)) { return 0; } else { return $summary[0]['total']; } }
/** * get */ public static function getTotalWithProductId($where) { $summary = StatsMemberCampaignLogDaily::getCollection()->aggregate(['$match' => $where], ['$group' => ['_id' => ['productId' => '$productId'], 'total' => ['$sum' => 1]]]); if (empty($summary)) { return 0; } else { return $summary[0]['total']; } }