Example #1
0
 /**
  * record campaign log
  * @return object, campaign log object
  */
 public static function setCampaignLog($scoreAdded, $params, $member, $campaign, $productInfo, $channelInfo)
 {
     //record a log
     $data = ['accountId' => $member->accountId, 'code' => $params['code'], 'productId' => $params['productId'], 'productName' => $productInfo->name, 'campaignName' => $campaign->name, 'sku' => $productInfo->sku, 'operaterEmail' => !empty($params['operaterEmail']) ? $params['operaterEmail'] : ''];
     $properties = $member->properties;
     $name = $phone = '';
     foreach ($properties as $property) {
         if ('name' == $property['name']) {
             $name = $property['value'];
         } else {
             if ('tel' == $property['name']) {
                 $phone = $property['value'];
             }
         }
     }
     //get the type of promocode and the name of prize
     $type = $prize = '';
     if (!empty($campaign->promotion['gift'])) {
         $gift = $campaign->promotion['gift'];
         $type = $gift['type'];
         //get the name of prize TODO
     }
     $data['member'] = ['id' => $params['memberId'], 'cardNumber' => $member->cardNumber, 'scoreAdded' => intval($scoreAdded), 'score' => $member->score, 'name' => $name, 'phone' => $phone, 'type' => $type, 'prize' => $prize];
     //add a field to show the member when to exchage code
     $data['redeemTime'] = new MongoDate();
     if (!empty($params['exchangeTime'])) {
         $data['redeemTime'] = new MongoDate($params['exchangeTime']);
     }
     $data['usedFrom'] = ['id' => isset($params['channelId']) ? $params['channelId'] : '', 'name' => $channelInfo['channelName'], 'type' => $channelInfo['channelType']];
     $data['campaignId'] = $campaign->_id;
     $campaignLog = new CampaignLog();
     $campaignLog->load($data, '');
     if (false === $campaignLog->save()) {
         LogUtil::error(['message' => 'fail to record log', 'params' => $params, 'member' => $member, 'campaign' => $campaign], self::PROMOTION_LOG);
     }
     return $campaignLog;
 }