| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- <?php
- namespace App\Web\Controllers;
- use App\Exceptions\ApiException;
- use App\Http\Controllers\BaseController;
- use App\Web\Services\WebUtmService;
- use Illuminate\Http\Request;
- class WebUtmController extends BaseController
- {
- protected $service = null;
- /**
- * 构造函数
- * BlogController constructor.
- */
- public function __construct(WebUtmService $service)
- {
- $this->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
- );
- }
- }
|