WebUtmController.php 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. <?php
  2. namespace App\Web\Controllers;
  3. use App\Exceptions\ApiException;
  4. use App\Http\Controllers\BaseController;
  5. use App\Web\Services\WebUtmService;
  6. use Illuminate\Http\Request;
  7. class WebUtmController extends BaseController
  8. {
  9. protected $service = null;
  10. /**
  11. * 构造函数
  12. * BlogController constructor.
  13. */
  14. public function __construct(WebUtmService $service)
  15. {
  16. $this->service = $service;
  17. }
  18. /**
  19. * @param website_url 网址
  20. * @param campaign_id 广告系列ID
  21. * @param campaign_name 活动名称
  22. * @param campaign_source 活动来源
  23. * @param campaign_term 活动术语
  24. * @param campaign_medium 活动媒介
  25. * @param campaign_content 活动内容
  26. * campaign_source:标识为您的媒体资源带来流量的广告客户、网站、出版物等,例如:google、newsletter4、billboard。
  27. * campaign_medium:广告媒介或营销媒介,例如:每次点击费用、横幅广告和电子邮件简报。
  28. * campaign_name:产品的具体广告系列名称、标语、促销代码等。
  29. * campaign_term:标识付费搜索关键字。如果您采用人工方式标记付费关键字广告系列,那么您还应使用 campaign_term 来指定相应关键字。
  30. * campaign_content:用于区分相似内容或同一广告内的链接。例如,如果您在同一封电子邮件中使用了两个号召性用语链接,就可以使用 campaign_content 并为每个链接设置不同的值,以便判断哪个版本的效果更好。
  31. * 每个参数都必须对应一个您分配的值。这样,每个参数-值对就会包含与广告系列相关的信息。
  32. * 例如,您可以对自己的“夏季特惠”广告系列使用下列参数-值对:
  33. * campaign_source = summer-mailer,用来标识“夏季特惠”电子邮件广告系列带来的流量
  34. * campaign_medium = email,用来标识电子邮件广告系列带来的流量,而不是应用内广告系列带来的流量
  35. * campaign_name = summer-sale,用来标识整个广告系列
  36. * 如果您使用了这些参数,则您的自定义广告系列网址会如下所示:
  37. * https://www.example.com/?campaign_source=summer-mailer&campaign_medium=email&campaign_name=summer-sale
  38. * 向网址中添加参数时,您应当始终使用 campaign_source、campaign_medium 和 campaign_name。
  39. * campaign_term 和 campaign_content 是可选项。
  40. * campaign_ 只是这些参数的必需前缀。
  41. * @param Request $request
  42. * @return int|mixed
  43. * @throws ApiException
  44. * @throws \Illuminate\Validation\ValidationException
  45. */
  46. public function addOrModUtm(Request $request)
  47. {
  48. $this->validate($request, [
  49. 'website_url' => 'required',
  50. 'campaign_name' => 'required',
  51. // 'campaign_medium' => 'required',
  52. // 'campaign_source' => 'required',
  53. ], [
  54. 'website_url.required' => 'website_url不能为空',
  55. 'campaign_name.required' => 'campaign_name不能为空',
  56. // 'campaign_medium.required' => 'campaign_medium不能为空',
  57. // 'campaign_source.required' => 'campaign_source不能为空',
  58. ]);
  59. $websiteUrl = $request->input('website_url', '');
  60. if (!filter_var($websiteUrl, FILTER_VALIDATE_URL)) {
  61. throw new ApiException(10018, ['name' => 'URL无效']);
  62. }
  63. $params = $request->only(['id', 'website_url', 'campaign_id', 'campaign_name', 'campaign_source', 'campaign_term', 'campaign_medium', 'campaign_content']);
  64. $data = $this->service->addOrUpdUtm($params);
  65. return $this->jsonResponse(
  66. 'ok',
  67. $data
  68. );
  69. }
  70. public function delUtm(Request $request)
  71. {
  72. $this->validate($request, [
  73. 'id' => 'required',
  74. ], [
  75. 'id.required' => 'id不能为空',
  76. ]);
  77. $ids = $request->input('id', 0);
  78. $data = $this->service->delUtm($ids);
  79. return $this->jsonResponse(
  80. 'ok',
  81. $data
  82. );
  83. }
  84. public function getUtmList(Request $request)
  85. {
  86. $pageSize = $request->input('page_size', 10);
  87. $campaignName = $request->input('campaign_name', '');
  88. $campaignSource = $request->input('campaign_source', '');
  89. $campaignMedium = $request->input('campaign_medium', '');
  90. $orderBy = $request->input('order_by', '');
  91. $orderDirect = $request->input('order_direct', '');
  92. $data = $this->service->getWebUtmList($campaignName, $campaignSource, $campaignMedium, $pageSize, $orderBy, $orderDirect);
  93. return $this->jsonResponse(
  94. 'ok',
  95. $data
  96. );
  97. }
  98. public function getUtmInfo(Request $request)
  99. {
  100. $this->validate($request, [
  101. 'id' => 'required',
  102. ], [
  103. 'id.required' => 'id不能为空',
  104. ]);
  105. $id = $request->input('id', 0);
  106. $data = $this->service->getUtm($id);
  107. return $this->jsonResponse(
  108. 'ok',
  109. $data
  110. );
  111. }
  112. public function persistenceUtm()
  113. {
  114. $data = $this->service->persistenceUtmPvUv();
  115. return $this->jsonResponse(
  116. 'ok',
  117. $data
  118. );
  119. }
  120. }