public function perform() { $args = $this->args; if (empty($args['language']) || empty($args['header']) || empty($args['key']) || empty($args['accountId']) || empty($args['condition'])) { ResqueUtil::log(['status' => 'fail to export code', 'message' => 'missing params', 'args' => $args]); return false; } //set the language Yii::$app->language = empty($args['language']) ? LanguageUtil::DEFAULT_LANGUAGE : $args['language']; $header = $args['header']; $fileName = $args['key']; $filePath = ExcelUtil::getFile($fileName, 'csv'); $condition = unserialize($args['condition']); $object = GoodsExchangeLog::find(); $classFunction = '\\backend\\modules\\product\\models\\GoodsExchangeLog::preProcessExportData'; $backendUser = Account::findByPk(new \MongoId($args['accountId'])); ExcelUtil::processMultiData($header, $filePath, $backendUser, $condition, $object, $classFunction, ['changeTostring' => ['goods']]); $hashKey = ExcelUtil::setQiniuKey($filePath, $fileName); if ($hashKey) { //notice frontend the job is finished \Yii::$app->tuisongbao->triggerEvent(Message::EVENT_EXPORT_FINISH, ['key' => $fileName], [Message::CHANNEL_GLOBAL . $args['accountId']]); return true; } else { return false; } }
public function perform() { $args = $this->args; if (empty($args['mainMember']) || empty($args['otherMemberIds'])) { ResqueUtil::log(['Merge member args error' => $args]); return; } $mainMember = unserialize($args['mainMember']); $otherMemberIds = unserialize($args['otherMemberIds']); //Get Name and phone $name = $phone = ''; foreach ($mainMember->properties as $mainProperty) { if ($mainProperty['name'] === Member::DEFAULT_PROPERTIES_NAME) { $name = $mainProperty['value']; } if ($mainProperty['name'] === Member::DEFAULT_PROPERTIES_MOBILE) { $phone = $mainProperty['value']; } } ScoreHistory::updateAll(['$set' => ['memberId' => $mainMember->_id]], ['memberId' => ['$in' => $otherMemberIds]]); MemberLogs::deleteAll(['memberId' => ['$in' => $otherMemberIds]]); CampaignLog::updateAll(['$set' => ['member.id' => $mainMember->_id, 'member.cardNumber' => $mainMember->cardNumber, 'member.name' => $name, 'member.phone' => $phone]], ['member.id' => ['$in' => $otherMemberIds]]); PromotionCode::updateAll(['$set' => ['usedBy.memberId' => $mainMember->_id, 'usedBy.memberNumber' => $mainMember->cardNumber]], ['usedBy.memberId' => ['$in' => $otherMemberIds]]); GoodsExchangeLog::updateAll(['$set' => ['memberId' => $mainMember->_id, 'memberName' => $name, 'telephone' => $phone]], ['memberId' => ['$in' => $otherMemberIds]]); $otherMemberStrIds = []; foreach ($otherMemberIds as $otherMemberId) { $otherMemberStrIds[] = (string) $otherMemberId; } Order::updateAll(['$set' => ['consumer.id' => (string) $mainMember->_id, 'consumer.name' => $name, 'consumer.phone' => $phone]], ['consumer.id' => ['$in' => $otherMemberStrIds]]); Qrcode::deleteAll(['type' => Qrcode::TYPE_MEMBER, 'associatedId' => ['$in' => $otherMemberIds]]); }
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; }
private function _memberLogsFromGoodsExchange($accountId) { $skip = 0; $limit = 100; $query = GoodsExchangeLog::find()->where(['accountId' => $accountId])->orderBy(['createdAt' => SORT_ASC]); $query = $query->offset($skip)->limit($limit); $goodsExchangeLogs = $query->all(); while (!empty($goodsExchangeLogs)) { $memberLogs = []; foreach ($goodsExchangeLogs as $goodsExchangeLog) { $memberLogs[] = ['memberId' => $goodsExchangeLog->memberId, 'operation' => MemberLogs::OPERATION_REDEEM, 'operationAt' => $goodsExchangeLog->createdAt, 'createdAt' => $goodsExchangeLog->createdAt, 'accountId' => $goodsExchangeLog->accountId]; } MemberLogs::batchInsert($memberLogs); $skip += $limit; $query = $query->offset($skip)->limit($limit); $goodsExchangeLogs = $query->all(); } }
private function _saveLog(Member $member, $exchanges, $params, $user = null) { $goodsExchangeLog = new GoodsExchangeLog(); $allGoods = []; $totalCount = 0; $scoreHistoryDescription = ''; foreach ($exchanges as $exchange) { $goods = $exchange['goods']; $count = $exchange['count']; $pictures = $goods->pictures; $allGoods[] = ['id' => $goods->_id, 'productId' => $goods->productId, 'sku' => $goods->sku, 'picture' => empty($pictures[0]) ? '' : $pictures[0], 'productName' => $goods->productName, 'count' => $count]; $totalCount += $count; $scoreHistoryDescription .= $goods->productName . "({$count}); "; } $scoreHistoryDescription = trim($scoreHistoryDescription, '; '); $goodsExchangeLog->goods = $allGoods; $goodsExchangeLog->memberId = $member->_id; $properties = $member->properties; $name = ''; foreach ($properties as $property) { if ($property['name'] == Member::DEFAULT_PROPERTIES_NAME) { $name = $property['value']; } if ($property['name'] == Member::DEFAULT_PROPERTIES_MOBILE) { $mobile = $property['value']; } } $goodsExchangeLog->memberName = $name; $goodsExchangeLog->telephone = empty($params['phone']) ? $mobile : $params['phone']; $goodsExchangeLog->usedScore = $params['usedScore']; $goodsExchangeLog->expectedScore = $params['expectedScore']; $goodsExchangeLog->count = $totalCount; $goodsExchangeLog->address = $params['address']; $goodsExchangeLog->receiveMode = $params['receiveMode']; $goodsExchangeLog->postcode = empty($params['postcode']) ? '' : $params['postcode']; $goodsExchangeLog->isDelivered = false; $scoreHistoryChannel = []; if (!empty($params['channelId'])) { $channelInfo = Channel::getByChannelId($params['channelId'], $member->accountId); $scoreHistoryChannel = ['id' => $channelInfo->channelId, 'name' => $channelInfo->name, 'origin' => $channelInfo->origin]; $goodsExchangeLog->usedFrom = ['id' => $params['channelId'], 'type' => $channelInfo->origin, 'name' => $channelInfo->name]; } else { $scoreHistoryChannel = ['origin' => GoodsExchangeLog::PORTAL]; $goodsExchangeLog->usedFrom = ['id' => '', 'type' => GoodsExchangeLog::PORTAL, 'name' => GoodsExchangeLog::OFFLINE_EXCHANGE]; } $goodsExchangeLog->accountId = $member->accountId; $scoreHistory = new ScoreHistory(); $scoreHistory->assigner = ScoreHistory::ASSIGNER_EXCHAGE_GOODS; $scoreHistory->increment = 0 - $params['usedScore']; $scoreHistory->memberId = $member->_id; $scoreHistory->brief = ScoreHistory::ASSIGNER_EXCHAGE_GOODS; $scoreHistory->description = $scoreHistoryDescription; $scoreHistory->accountId = $member->accountId; $scoreHistory->channel = $scoreHistoryChannel; $scoreHistory->user = $user; if ($goodsExchangeLog->save(true) && $scoreHistory->save(true)) { MemberLogs::record($member->_id, $member->accountId, MemberLogs::OPERATION_REDEEM); return true; } else { LogUtil::error(['exchange fail' => [$scoreHistory->getErrors(), $goodsExchangeLog->getErrors()]]); return false; } }
public function actionShip() { $params = $this->getParams(); if (empty($params['id'])) { throw new InvalidParameterException(Yii::t('common', 'parameters_missing')); } GoodsExchangeLog::updateAll(['isDelivered' => true], ['_id' => new MongoId($params['id'])]); }