Ejemplo n.º 1
0
 /**
  * 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];
 }