WebUtmModel.php 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. <?php
  2. namespace App\Web\Models;
  3. use App\Models\BaseModel;
  4. class WebUtmModel extends BaseModel
  5. {
  6. /**
  7. * 状态字段
  8. */
  9. const DELETED_AT = 'status';
  10. /**
  11. * @var string
  12. */
  13. protected $table = 'web_utm';
  14. public function addWebUtm($userId, $params)
  15. {
  16. $data = [
  17. 'user_id' => $userId,
  18. 'website_url' => $params['website_url'],
  19. 'short_url' => $params['short_url'] ?? '',
  20. 'campaign_id' => $params['campaign_id'],
  21. 'campaign_name' => $params['campaign_name'],
  22. 'campaign_source' => $params['campaign_source'],
  23. 'campaign_term' => $params['campaign_term'],
  24. 'campaign_medium' => $params['campaign_medium'],
  25. 'campaign_content' => $params['campaign_content'],
  26. 'pv' => 0,
  27. 'uv' => 0,
  28. 'status' => 0,
  29. 'create_time' => nowTime(),
  30. 'update_time' => nowTime(),
  31. ];
  32. return $this->insertGetId($data);
  33. }
  34. public function updWebUtm($id, $params)
  35. {
  36. $update = ['update_time' => nowTime()];
  37. if (isset($params['campaign_id'])) {
  38. $update['campaign_id'] = $params['campaign_id'];
  39. }
  40. if (isset($params['campaign_name'])) {
  41. $update['campaign_name'] = $params['campaign_name'];
  42. }
  43. if (isset($params['campaign_source'])) {
  44. $update['campaign_source'] = $params['campaign_source'];
  45. }
  46. if (isset($params['campaign_term'])) {
  47. $update['campaign_term'] = $params['campaign_term'];
  48. }
  49. if (isset($params['campaign_medium'])) {
  50. $update['campaign_medium'] = $params['campaign_medium'];
  51. }
  52. if (isset($params['campaign_content'])) {
  53. $update['campaign_content'] = $params['campaign_content'];
  54. }
  55. return $this->where('id', $id)->update($update);
  56. }
  57. public function updUtmPvUv($id, $pv, $uv)
  58. {
  59. return $this->where('id', $id)->update(['pv' => $pv, 'uv' => $uv]);
  60. }
  61. public function delWebUtm($ids)
  62. {
  63. if (!is_array($ids)) {
  64. $ids = [$ids];
  65. }
  66. return $this->whereIn('id', $ids)->update(['status' => 2]);
  67. }
  68. public function getWebUtm($id)
  69. {
  70. $data = $this->where('id', $id)->where('status', 0)->first();
  71. return $data ? $data->toArray() : [];
  72. }
  73. public function getWebUtmByShortUrl($shortUrl)
  74. {
  75. $data = $this->where('short_url', $shortUrl)->where('status', 0)->first();
  76. return $data ? $data->toArray() : [];
  77. }
  78. public function getWebUtmList($campaignName = '', $campaignSource = '', $campaignMedium = '', $pageSize = 10, $orderBy = '', $orderDirect = '')
  79. {
  80. $where = ['status' => 0];
  81. $query = $this->where($where);
  82. if (!empty($campaignName)) {
  83. $query->where('campaign_name', 'like', "%" . addslashes($campaignName) . "%");
  84. }
  85. if (!empty($campaignSource)) {
  86. $query->where('campaign_source', 'like', "%" . addslashes($campaignSource) . "%");
  87. }
  88. if (!empty($campaignMedium)) {
  89. $query->where('campaign_medium', 'like', "%" . addslashes($campaignMedium) . "%");
  90. }
  91. if ($orderBy && $orderDirect) {
  92. $query = $query->orderBy($orderBy, $orderDirect);
  93. } else {
  94. $query = $query->orderBy('id', 'desc');
  95. }
  96. return $query->paginate($pageSize)->toArray();
  97. }
  98. public function getUtmByParams($params)
  99. {
  100. $where = ['status' => 0];
  101. $query = $this->where($where);
  102. if (!empty($params['campaign_id'])) {
  103. $query->where('campaign_id', '=', urldecode($params['campaign_id']));
  104. }
  105. if (!empty($params['campaign_name'])) {
  106. $query->where('campaign_name', '=', urldecode($params['campaign_name']));
  107. }
  108. if (!empty($params['campaign_source'])) {
  109. $query->where('campaign_source', '=', urldecode($params['campaign_source']));
  110. }
  111. if (!empty($params['campaign_term'])) {
  112. $query->where('campaign_term', '=', urldecode($params['campaign_term']));
  113. }
  114. if (!empty($params['campaign_medium'])) {
  115. $query->where('campaign_medium', '=', urldecode($params['campaign_medium']));
  116. }
  117. if (!empty($params['campaign_content'])) {
  118. $query->where('campaign_content', '=', urldecode($params['campaign_content']));
  119. }
  120. $data = $query->orderBy('id', 'desc')->first();
  121. return $data ? $data->toArray() : [];
  122. }
  123. public function getWebUtmByPage($page = 1, $pageSize = 10)
  124. {
  125. $offset = ($page - 1) * $pageSize;
  126. $where = ['status' => 0];
  127. $query = $this->where($where);
  128. return $query->orderBy('id', 'desc')
  129. ->offset($offset)
  130. ->limit($pageSize)
  131. ->selectRaw('id')
  132. ->get()
  133. ->toArray();
  134. }
  135. }