service = $service; } /** * @param website_url 网址 * @param campaign_id 广告系列ID * @param campaign_name 活动名称 * @param campaign_source 活动来源 * @param campaign_term 活动术语 * @param campaign_medium 活动媒介 * @param campaign_content 活动内容 * campaign_source:标识为您的媒体资源带来流量的广告客户、网站、出版物等,例如:google、newsletter4、billboard。 * campaign_medium:广告媒介或营销媒介,例如:每次点击费用、横幅广告和电子邮件简报。 * campaign_name:产品的具体广告系列名称、标语、促销代码等。 * campaign_term:标识付费搜索关键字。如果您采用人工方式标记付费关键字广告系列,那么您还应使用 campaign_term 来指定相应关键字。 * campaign_content:用于区分相似内容或同一广告内的链接。例如,如果您在同一封电子邮件中使用了两个号召性用语链接,就可以使用 campaign_content 并为每个链接设置不同的值,以便判断哪个版本的效果更好。 * 每个参数都必须对应一个您分配的值。这样,每个参数-值对就会包含与广告系列相关的信息。 * 例如,您可以对自己的“夏季特惠”广告系列使用下列参数-值对: * campaign_source = summer-mailer,用来标识“夏季特惠”电子邮件广告系列带来的流量 * campaign_medium = email,用来标识电子邮件广告系列带来的流量,而不是应用内广告系列带来的流量 * campaign_name = summer-sale,用来标识整个广告系列 * 如果您使用了这些参数,则您的自定义广告系列网址会如下所示: * https://www.example.com/?campaign_source=summer-mailer&campaign_medium=email&campaign_name=summer-sale * 向网址中添加参数时,您应当始终使用 campaign_source、campaign_medium 和 campaign_name。 * campaign_term 和 campaign_content 是可选项。 * campaign_ 只是这些参数的必需前缀。 * @param Request $request * @return int|mixed * @throws ApiException * @throws \Illuminate\Validation\ValidationException */ public function addOrModUtm(Request $request) { $this->validate($request, [ 'website_url' => 'required', 'campaign_name' => 'required', // 'campaign_medium' => 'required', // 'campaign_source' => 'required', ], [ 'website_url.required' => 'website_url不能为空', 'campaign_name.required' => 'campaign_name不能为空', // 'campaign_medium.required' => 'campaign_medium不能为空', // 'campaign_source.required' => 'campaign_source不能为空', ]); $websiteUrl = $request->input('website_url', ''); if (!filter_var($websiteUrl, FILTER_VALIDATE_URL)) { throw new ApiException(10018, ['name' => 'URL无效']); } $params = $request->only(['id', 'website_url', 'campaign_id', 'campaign_name', 'campaign_source', 'campaign_term', 'campaign_medium', 'campaign_content']); $data = $this->service->addOrUpdUtm($params); return $this->jsonResponse( 'ok', $data ); } public function delUtm(Request $request) { $this->validate($request, [ 'id' => 'required', ], [ 'id.required' => 'id不能为空', ]); $ids = $request->input('id', 0); $data = $this->service->delUtm($ids); return $this->jsonResponse( 'ok', $data ); } public function getUtmList(Request $request) { $pageSize = $request->input('page_size', 10); $campaignName = $request->input('campaign_name', ''); $campaignSource = $request->input('campaign_source', ''); $campaignMedium = $request->input('campaign_medium', ''); $orderBy = $request->input('order_by', ''); $orderDirect = $request->input('order_direct', ''); $data = $this->service->getWebUtmList($campaignName, $campaignSource, $campaignMedium, $pageSize, $orderBy, $orderDirect); return $this->jsonResponse( 'ok', $data ); } public function getUtmInfo(Request $request) { $this->validate($request, [ 'id' => 'required', ], [ 'id.required' => 'id不能为空', ]); $id = $request->input('id', 0); $data = $this->service->getUtm($id); return $this->jsonResponse( 'ok', $data ); } public function persistenceUtm() { $data = $this->service->persistenceUtmPvUv(); return $this->jsonResponse( 'ok', $data ); } }