/** * check the member experice for every campaign * @return array * @param $campaign, object, campaign info * @param $member, object, member object */ public static function checkMemberExperice2Campaign($campaign, $member) { if (isset($campaign->promotion['products'])) { $promotionProducts = $campaign->promotion['products']; $msg = Yii::t('product', 'campaign_experience_limit'); switch ($promotionProducts) { case Campaign::TYPE_GIFT_PRODUCT_UNLIMITED: // do nothing break; case Campaign::TYPE_GIFT_PRODUCT_FIRST: $campaignLogCount = CampaignLog::count(['member.id' => $member->_id]); if ($campaignLogCount > 0) { LogUtil::info(['msg' => $msg, 'memberId' => (string) $member->_id, 'campaignId' => (string) $campaign->_id], self::PROMOTION_LOG); return ['campaign' => [], 'status' => self::CODE_STATUS_INVALID, 'message' => $msg]; } break; default: if (is_array($promotionProducts) && !empty($promotionProducts)) { // take part in the campaign before $where = ['productId' => ['$in' => $promotionProducts], 'member.id' => $member->_id]; $memberRecord = CampaignLog::findOne($where); if (empty($memberRecord)) { LogUtil::info(['msg' => $msg, 'memberId' => (string) $member->_id, 'campaignId' => (string) $campaign->_id], self::PROMOTION_LOG); return ['campaign' => [], 'status' => self::CODE_STATUS_INVALID, 'message' => $msg]; } } else { // unknown limit $msg = 'unknown limit'; LogUtil::info(['msg' => $msg, 'memberId' => (string) $member->_id, 'campaignId' => (string) $campaign->_id], self::PROMOTION_LOG); return ['campaign' => [], 'status' => self::CODE_STATUS_INVALID, 'message' => $message]; } break; } } return ['campaign' => $campaign]; }