public function actionStatsCoupon() { $params = $this->getQuery(); if (empty($params['id']) || !isset($params['startTime']) || !isset($params['endTime'])) { throw new BadRequestHttpException(Yii::t('common', 'parameters_missing')); } $id = new MongoId($params['id']); $couponLog = Coupon::findOne(["_id" => $id]); if (empty($couponLog)) { throw new BadRequestHttpException(Yii::t('product', 'membershipDiscount_is_deleted')); } //turn unix timestamp to string $startTime = TimeUtil::msTime2String($params['startTime'], 'Y-m-d'); $endTime = TimeUtil::msTime2String($params['endTime'], 'Y-m-d'); $couponPeriodInfo = StatsCouponLogDaily::getCouponLogStats($id, $startTime, $endTime); ArrayHelper::multisort($couponPeriodInfo, 'date', SORT_ASC); $dateCouPonStats = ArrayHelper::index($couponPeriodInfo, 'date'); $item = $redeemedNum = $recievedNum = $date = []; $startDate = strtotime($startTime); $endDate = strtotime($endTime); if (!empty($couponPeriodInfo) && count($couponPeriodInfo) > 0) { while ($startDate <= $endDate) { $dateStr = date('Y-m-d', $startDate); if (!empty($dateCouPonStats[$dateStr])) { $date[] = $dateStr; $recievedNum[] = $dateCouPonStats[$dateStr]['recievedNum']; $redeemedNum[] = $dateCouPonStats[$dateStr]['redeemedNum']; } else { $date[] = $dateStr; $recievedNum[] = 0; $redeemedNum[] = 0; } $startDate = strtotime($dateStr . ' +1 day'); } } $item = ['date' => $date, 'count' => ['recievedNum' => $recievedNum, 'redeemedNum' => $redeemedNum]]; return $item; }