AdRecharge.php 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. <?php
  2. namespace App\Services;
  3. // Ad广告充值来源
  4. use App\Facade\TableName;
  5. use App\Models\AccountsSource;
  6. use Carbon\Carbon;
  7. use Illuminate\Support\Facades\DB;
  8. class AdRecharge
  9. {
  10. public function attribute($UserID, $RegisterDate, $Recharge, $IsFirst = 0)
  11. {
  12. $dateID = Carbon::parse($RegisterDate)->format('Ymd');
  13. // 查找用户注册日期
  14. $diff_d = Carbon::parse($RegisterDate)->diff(now())->days;
  15. // 查找用户归属渠道
  16. $getUserAdChannel = (new AccountsSource())->getUserAdChannel($UserID);
  17. // 查询广告渠道是否存在
  18. $adChannelExist = cache()->remember('adChannelExist_' . $dateID . '_' . $getUserAdChannel, 60 * 24, function () use ($dateID, $getUserAdChannel) {
  19. return DB::table(TableName::QPRecordDB() . 'RecordAdChannelRecharge')
  20. ->where('DateID', $dateID)
  21. ->where('AdChannel', $getUserAdChannel)
  22. ->first();
  23. });
  24. $addCount = !empty($IsFirst) ? 1 : 0;
  25. if (in_array($diff_d, [0, 1, 2, 7]) && !empty($getUserAdChannel)) {
  26. if ($adChannelExist) {
  27. DB::table(TableName::QPRecordDB() . 'RecordAdChannelRecharge')
  28. ->where('DateID', $dateID)
  29. ->where('AdChannel', $getUserAdChannel)
  30. ->increment("D{$diff_d}Count", $addCount, [
  31. "D{$diff_d}Sum" => DB::raw("D{$diff_d}Sum + $Recharge")
  32. ]);
  33. } else {
  34. DB::table(TableName::QPRecordDB() . 'RecordAdChannelRecharge')
  35. ->where('DateID', $dateID)
  36. ->where('AdChannel', $getUserAdChannel)
  37. ->insert([
  38. 'DateID' => $dateID,
  39. 'AdChannel' => $getUserAdChannel,
  40. "D{$diff_d}Count" => 1,
  41. "D{$diff_d}Sum" => $Recharge
  42. ]);
  43. }
  44. }
  45. return true;
  46. }
  47. }