Exemplo n.º 1
0
 /**
  * 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;
 }
Exemplo n.º 2
0
 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']);
 }
Exemplo n.º 3
0
 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;
 }
Exemplo n.º 4
0
 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');
     }
 }
Exemplo n.º 5
0
 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'];
     }
 }
Exemplo n.º 7
0
 /**
  * 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);
 }
Exemplo n.º 8
0
 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;
 }
Exemplo n.º 9
0
 /**
  * @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;
 }
Exemplo n.º 10
0
 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];
     }
 }
Exemplo n.º 11
0
 /**
  * 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]);
 }