/** * Search page and article by url(page: shortUrl, article: url) and name(page: title, article: name) * 1. Get data from page collection and article collection * 2. Merge page and article * 3. Sort by createdAt * 4. Format and return */ public function actionIndex() { $query = $this->getQuery(); $pageSize = $this->getQuery('per-page', 10); $accountId = $this->getAccountId(); $timeFrom = null; $searchKey = isset($query['searchKey']) && $query['searchKey'] !== '' ? $query['searchKey'] : null; $searchKey = urldecode($searchKey); if (isset($query['timeFrom']) && $query['timeFrom'] !== '') { $timeFrom = MongodbUtil::msTimetamp2MongoDate($query['timeFrom']); } //Get data from page collection and article collection $pages = Page::searchByTitleAndUrl($accountId, $pageSize, $searchKey, $timeFrom); $articles = Article::searchByNameAndUrl($accountId, $pageSize, $searchKey, $timeFrom); //Merge page and article and sort $pageAndArticle = array_merge($pages, $articles); usort($pageAndArticle, 'self::cmpCreatedAt'); $result = []; $items = []; $result['timeFrom'] = null; $rowIndex = 0; //format data foreach ($pageAndArticle as $item) { $items[] = ['id' => (string) $item['_id'], 'title' => !isset($item['title']) ? $item['name'] : $item['title'], 'url' => empty($item['shortUrl']) ? $item['url'] : $item['shortUrl'], 'type' => !isset($item['title']) ? 'article' : 'page']; $result['timeFrom'] = MongodbUtil::MongoDate2msTimeStamp($item['createdAt']); $rowIndex++; if ($rowIndex >= $pageSize) { break; } } $result['items'] = $items; return $result; }
public function handle($data) { parent::handle($data); # handle the wechat message LogUtil::info(['channel weconnect event' => $data], 'channel-webhook'); if (empty($data)) { throw new BadRequestHttpException(Yii::t('channel', 'parameter_format_error')); } $data = $data['data']; $requiredParameters = ['outTradeNo', 'tradeNo', 'tradeStatus']; ValidatorUtil::fieldsRequired($data, $requiredParameters); $tradePayment = TradePayment::findOne(['orderNumber' => $data['outTradeNo']]); LogUtil::info(['tradePayment' => $tradePayment->toArray()], 'channel-webhook'); if (empty($tradePayment)) { throw new InvalidParameterException(Yii::t('common', 'data_error')); } $memberId = $tradePayment['user']['memberId']; $couponId = $tradePayment['couponId']; LogUtil::info(['memberId' => $memberId, 'couponId' => $couponId], 'channel-webhook'); if ($data['tradeStatus'] == 'PAY_SUCCESS') { $tradePayment->status = TradePayment::STATUS_PAID; $tradePayment->realAmount = intval($data['totalFee']) / 100; // Make coupon used if (!empty($couponId)) { Yii::$app->service->coupon->makeUsed($memberId, $couponId); } } else { if ($data['tradeStatus'] == 'PAY_ERROR') { $tradePayment->status = TradePayment::STATUS_FAILED; } } $tradePayment->paymentTime = MongodbUtil::msTimetamp2MongoDate($data['paymentTime']); $tradePayment->transactionId = $data['tradeNo']; return $tradePayment->save(true, ['paymentTime', 'status', 'transactionId', 'realAmount']); }
public static function updateActivityByName($name, $params) { $accountId = Token::getAccountId(); $params['startDate'] = MongodbUtil::msTimetamp2MongoDate($params['startDate']); $params['endDate'] = MongodbUtil::msTimetamp2MongoDate($params['endDate']); $activity = Activity::findOne(['name' => $name, 'accountId' => $accountId]); if (!empty($activity)) { $activity->attributes = $params; $activity->save(); } return $activity; }
public static function createDrawRecord($params) { try { $order = self::getDrawCount() + 1; $record = new EarlyBirdDrawRecord(); $params['activityStartDate'] = MongodbUtil::msTimetamp2MongoDate($params['startDate']); $params['activityEndDate'] = MongodbUtil::msTimetamp2MongoDate($params['endDate']); unset($params['startDate'], $params['endDate']); $record->attributes = $params; $record->order = $order; $record->accountId = Token::getAccountId(); if (!$record->save()) { throw new ServerErrorHttpException('save lucky draw record failed'); } return $record->_id; } catch (\Exception $ex) { LogUtil::error(['message' => 'save lucky draw record failed', 'error' => $ex->getMessage()], 'earlybird'); throw new ServerErrorHttpException('save lucky draw record failed'); } }
public static function updateBar($params) { $params['_id'] = new \MongoId($params['_id']); $bar = ActivityBar::findOne($params['_id']); $params['startDate'] = MongodbUtil::msTimetamp2MongoDate($params['startDate']); $params['endDate'] = MongodbUtil::msTimetamp2MongoDate($params['endDate']); $bar['name'] = $params['name']; $bar['mainImgUrl'] = $params['mainImgUrl']; $bar['probability'] = (int) $params['probability']; $bar['rule'] = $params['rule']; $bar['startDate'] = $params['startDate']; $bar['endDate'] = $params['endDate']; $bar['status'] = $params['status']; $bar['operator'] = $params['operator']; if (!$bar->save()) { LogUtil::error(['message' => 'save activity-bar failed', 'error' => $bar->errors], 'activityBar'); throw new ServerErrorHttpException('save activityBar failed'); } return $bar['_id']; }
public function actionSave() { $this->delete(); Yii::$app->response->format = \yii\web\Response::FORMAT_JSON; $request = Yii::$app->request; $adminId = $request->post("id"); $admin = User::findOne($adminId); if ($admin == null) { return ['code' => 1209, 'msg' => 'not login']; } $accountId = $this->getAccountId(); $startDate = MongodbUtil::msTimetamp2MongoDate($request->post("startDate", '')); $endDate = MongodbUtil::msTimetamp2MongoDate($request->post("endDate", '')); $tags = $request->post("tags", ''); $startDateOrder = MongodbUtil::msTimetamp2MongoDate($request->post("startDateOrder", '')); $endDateOrder = MongodbUtil::msTimetamp2MongoDate($request->post("endDateOrder", '')); $tagsOrder = $request->post("tagsOrder"); $WestPromotionActivity = new WestPromotionActivity(); $WestPromotionActivity->accountId = $accountId; $WestPromotionActivity->name = "registrationSetting"; $WestPromotionActivity->startDate = $startDate; $WestPromotionActivity->endDate = $endDate; $WestPromotionActivity->tags = $tags; $result = $WestPromotionActivity->save(); if ($result <= 0) { return ['msg' => 'failed', 'code' => '500']; } $WestPromotionActivity = new WestPromotionActivity(); $WestPromotionActivity->accountId = $accountId; $WestPromotionActivity->name = "orderSetting"; $WestPromotionActivity->startDate = $startDateOrder; $WestPromotionActivity->endDate = $endDateOrder; $WestPromotionActivity->tags = $tagsOrder; $result = $WestPromotionActivity->save(); if ($result > 0) { return ['msg' => 'success', 'code' => '200']; } else { return ['msg' => 'failed', 'code' => '500']; } }
/** * Search for coupon recieved, redeemed,deleted records. * @param array $params The search condition * @param string $accountId * @return array The couponLog list for recieved, redeemed,deleted records */ public static function search($params, $accountId) { $condition = ['accountId' => $accountId, 'status' => $params['status']]; $query = CouponLog::find(); if (!empty($params['startTime'])) { $startTime = MongodbUtil::msTimetamp2MongoDate($params['startTime']); $condition['operationTime']['$gte'] = $startTime; } if (!empty($params['endTime'])) { $endTime = MongodbUtil::msTimetamp2MongoDate($params['endTime']); $condition['operationTime']['$lte'] = $endTime; } if (!empty($params['searchKey'])) { $key = $params['searchKey']; $key = StringUtil::regStrFormat(trim($key)); $keyReg = new \MongoRegex("/{$key}/i"); $condition['$or'] = [['member.name' => $keyReg], ['member.phone' => $keyReg], ['title' => $keyReg]]; } if (empty($params['orderBy'])) { $orderBy = ['operationTime' => SORT_DESC]; } else { switch ($params['orderBy']) { case 'asc': $orderBy = ['operationTime' => SORT_ASC]; break; default: $orderBy = ['operationTime' => SORT_DESC]; break; } } $query = $query->where($condition)->orderBy($orderBy); $searchQuery = ['query' => $query]; return new ActiveDataProvider($searchQuery); }
public static function updatePrize($params, $activityId) { for ($i = 0; $i < count($params); $i++) { $prize = null; if ($params[$i]['_id'] == "") { $prize = new ActivityPrize(); } else { $prize = ActivityPrize::findOne(new \MongoId($params[$i]['_id'])); } if (!empty($params[$i]['startDate'])) { $prize['startDate'] = MongodbUtil::msTimetamp2MongoDate($params[$i]['startDate']); $prize['endDate'] = MongodbUtil::msTimetamp2MongoDate($params[$i]['endDate']); } if ($params[$i]['isPoint'] == 'N') { $params[$i]['points'] = null; } $prize->name = $params[$i]['name']; $prize->prizeImgUrl = $params[$i]['prizeImgUrl']; $prize->type = $params[$i]['type']; $prize->isPoint = $params[$i]['isPoint']; $prize->points = (int) $params[$i]['points']; $prize->quantity = (int) $params[$i]['quantity']; $prize->activityId = $activityId; if (!$prize->save()) { LogUtil::error(['message' => 'save activity-prize failed', 'error' => $prize->errors], 'activityPrize'); // throw new ServerErrorHttpException('save activityPrize failed'); return false; } unset($prize); } return true; }
/** * @param $startDate int msTimetamp * @param $endDate int msTimetamp * @return array (eg: ['560399d6475df4c7378b4572'=>-200, ...] ) */ public static function getExchangeGoodsScore($startDate, $endDate, $accountId) { $startDate = MongodbUtil::msTimetamp2MongoDate($startDate); $endDate = MongodbUtil::msTimetamp2MongoDate($endDate); $condition = ['brief' => ScoreHistory::ASSIGNER_EXCHAGE_GOODS, 'createdAt' => ['$gte' => $startDate, '$lte' => $endDate], 'accountId' => $accountId]; $memberIds = ScoreHistory::distinct('memberId', $condition); $histories = ScoreHistory::find()->where($condition)->all(); $scores = array(); try { if (!empty($histories) && !empty($memberIds)) { foreach ($memberIds as $memberId) { $scores[(string) $memberId] = 0; foreach ($histories as $history) { if ($memberId == $history->memberId) { $scores[(string) $memberId] += $history->increment; } } } } } catch (Exception $e) { LogUtil::error(['message' => 'Fail to getExchangeGoodsScore', 'exception' => $e], 'earlybird'); throw new ServerErrorHttpException('Fail to getExchangeGoodsScore'); } unset($condition, $memberIds, $histories); return $scores; }
public function actionUpdateActivity() { $params = $this->getParams(); if (empty($params['needPoints']) || empty($params['drawDate'])) { throw new BadRequestHttpException("Miss params."); } foreach ($params['drawDate'] as $key => $value) { $params['drawDate'][$key] = MongodbUtil::msTimetamp2MongoDate($value); } $params['name'] = 'cny'; $params['accountId'] = $this->getAccountId(); $params['luckyDrawInfo'] = ['needPoints' => $params['needPoints'], 'drawDate' => $params['drawDate']]; unset($params['needPoints'], $params['drawDate']); $activity = Activity::updateActivityByName('cny', $params); if (empty($activity)) { $activity = Activity::createActivity($params); } Yii::$app->response->format = \yii\web\Response::FORMAT_JSON; if (!empty($activity)) { return ['code' => 200]; } else { return ['code' => 1000]; } }
/** * Search conversation by params * @param array $params * @param MongoId $accountId * @return \backend\components\ActiveDataProvider */ public static function search($params, $accountId) { $query = self::find(); $condition = ['accountId' => $accountId, 'isDeleted' => self::NOT_DELETED]; if (isset($params['openIds'])) { $condition['client.originId'] = ['$in' => $params['openIds'], '$exists' => true]; } if (isset($params['startTime'])) { $condition['lastChatTime']['$gte'] = MongodbUtil::msTimetamp2MongoDate($params['startTime']); } if (isset($params['endTime'])) { $condition['lastChatTime']['$lte'] = MongodbUtil::msTimetamp2MongoDate($params['endTime']); } $query->orderBy(self::normalizeOrderBy($params)); $query->where($condition); return new ActiveDataProvider(['query' => $query]); }