AgentLinks.php 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. <?php
  2. namespace App\Game;
  3. use Illuminate\Database\Eloquent\Model;
  4. use Illuminate\Support\Str;
  5. use Illuminate\Support\Facades\DB;
  6. class AgentLinks extends Model
  7. {
  8. protected $table = 'webgame.AgentLinks';
  9. protected $connection='mysql';
  10. protected $fillable = [
  11. 'GlobalUID', 'UserID', 'FPID','Channel','LinkActName', 'RedirectUrl', 'Campaign', 'Code','State', 'AddInfo',
  12. 'ClickNum', 'RegNum', 'PayUserNum','PayTotal','PayRewards','EarnRewards', 'CreatedAt', 'UpdatedAt'
  13. ];
  14. protected $primaryKey = 'LinkID'; // 设置主键为 LinkID
  15. public $timestamps = false;
  16. // 生成唯一的6位推广码
  17. public static function generateUniqueCode($userId=0)
  18. {
  19. $baseCode = base_convert($userId, 10, 36); // 将用户ID转换为36进制,包含数字和小写字母
  20. if(!$userId){
  21. $baseCode= base_convert(rand(604661760, 1027924992), 10, 36);
  22. }
  23. $code = substr($baseCode, 0, 6); // 截取前6位
  24. // 确保code唯一
  25. while (self::where('Code', $code)->exists()) {
  26. $code = substr( base_convert(rand(604661760, 1027924992), 10, 36), 0, 6); // 生成新码,确保唯一
  27. }
  28. return $code;
  29. }
  30. // 为新用户创建默认的 Campaign 和 Code
  31. public static function createDefaultCampaign($GlobalUID, $userID=null)
  32. {
  33. $defaultCampaign = 'Default';
  34. if(!$userID){
  35. $userID=intval(explode('-', $GlobalUID)[3]);
  36. }
  37. $defaultCode = self::generateUniqueCode($userID);
  38. $user=GlobalUserInfo::getGameUserInfo('GlobalUID', $GlobalUID);
  39. if(!$user&&GlobalUserInfo::$me&&GlobalUserInfo::$me->GlobalUID==$GlobalUID){
  40. $user=GlobalUserInfo::$me;
  41. }
  42. return self::create([
  43. 'GlobalUID' => $GlobalUID,
  44. 'UserID' => $user->UserID,
  45. 'Campaign' => $defaultCampaign,
  46. 'Channel' => $user->Channel,
  47. 'Code' => $defaultCode
  48. ]);
  49. }
  50. // 为新用户创建默认的 Campaign 和 Code
  51. public static function getDefaultCampaign($GlobalUID)
  52. {
  53. $link=self::query()->where('GlobalUID', $GlobalUID)->where('Campaign','Default')->first();
  54. if(!$link){
  55. return self::createDefaultCampaign($GlobalUID);
  56. }
  57. // $link=self::query()->where('GlobalUID', $GlobalUID)->where('Campaign','Default')->first();
  58. return $link;
  59. }
  60. public static function getByCode($code)
  61. {
  62. return self::query()->where('Code', $code)->first();
  63. }
  64. public static function createCampaign($GlobalUID,$ActName,$Campaign)
  65. {
  66. $link=self::getDefaultCampaign($GlobalUID);
  67. return self::create([
  68. 'GlobalUID' => $GlobalUID,
  69. 'UserID' => $link->UserID,
  70. 'Channel' => $link->Channel,
  71. 'Campaign' => $Campaign,
  72. 'LinkActName' => $ActName,
  73. 'Code' => self::generateUniqueCode()
  74. ]);
  75. }
  76. public static function getCampaign($GlobalUID,$ActName='',$Campaign=null)
  77. {
  78. if(empty($ActName)&&!$Campaign)return self::getDefaultCampaign($GlobalUID);
  79. if(!$Campaign)$Campaign=$ActName;
  80. $link=self::query()->where('GlobalUID', $GlobalUID)->where('Campaign', $Campaign)->first();
  81. if(!$link){
  82. return self::createCampaign($GlobalUID,$ActName,$Campaign);
  83. }
  84. // $link=self::query()->where('GlobalUID', $GlobalUID)->where('Campaign', $Campaign)->first();
  85. return $link;
  86. }
  87. }