/** * 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; }