AccountsSource.php 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. <?php
  2. namespace App\Models;
  3. use App\Facade\RedisConnect;
  4. use App\Facade\TableName;
  5. use Illuminate\Database\Eloquent\Model;
  6. use Illuminate\Support\Facades\DB;
  7. class AccountsSource extends Model
  8. {
  9. public $connection = 'write';
  10. public $table = 'QPAccountsDB.dbo.AccountsSource';
  11. public $timestamps = false;
  12. // 用户来源添加【不存在添加】
  13. public function notExistsInsert($UserID, $Source)
  14. {
  15. $AdChannel = 0;
  16. preg_match('/\*\d+/', $Source, $result);
  17. if (isset($result[0])) {
  18. $AdChannel = explode('*', $result[0])[1] ?? 0;
  19. if(strlen($AdChannel)==10){
  20. $AdChannel = substr($AdChannel,-9);
  21. }
  22. }
  23. // 用户来源添加
  24. if (!self::query()->where('UserID', $UserID)->first()) {
  25. self::query()->insert([
  26. 'UserID' => $UserID,
  27. 'Source' => $Source,
  28. 'AdChannel' => $AdChannel
  29. ]);
  30. }
  31. // 类别添加
  32. $key = 'adChannel_' . $AdChannel;
  33. $redisConnect = (new RedisConnect())->redis();
  34. if (!$redisConnect->exists($key)) {
  35. $count = DB::table(TableName::agent() . 'account_source_class')
  36. ->where('ad_channel', $AdChannel)->count();
  37. if (!$count) {
  38. DB::table(TableName::agent() . 'account_source_class')
  39. ->insert([
  40. 'ad_channel' => $AdChannel,
  41. //'Source' => $Source
  42. ]);
  43. }
  44. $redisConnect->set($key, $AdChannel);
  45. }
  46. return true;
  47. }
  48. // 获取用户来源
  49. public function getUserSource($UserID)
  50. {
  51. $list = cache()->remember($UserID . '_getUserSource', (60 * 24 * 10), function () use ($UserID) {
  52. return self::query()->where('UserID', $UserID)->value('Source');
  53. });
  54. return $list;
  55. }
  56. // 获取用户来源渠道
  57. public function getUserAdChannel($UserID)
  58. {
  59. $list = cache()->remember($UserID . '_getUserAdChannel', (60 * 24 * 10), function () use ($UserID) {
  60. return self::query()->where('UserID', $UserID)->value('AdChannel');
  61. });
  62. return $list;
  63. }
  64. }