Order.php 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. <?php
  2. namespace App\Jobs;
  3. use App\Facade\TableName;
  4. use App\Game\Services\OuroGameService;
  5. use App\Http\helper\NumConfig;
  6. use App\Models\AccountsInfo;
  7. use App\Models\PrivateMail;
  8. use App\Services\Custom;
  9. use App\Services\FirstPayStatService;
  10. use App\Services\OrderServices;
  11. use App\Services\VipService;
  12. use Illuminate\Bus\Queueable;
  13. use Illuminate\Contracts\Queue\ShouldQueue;
  14. use Illuminate\Foundation\Bus\Dispatchable;
  15. use Illuminate\Queue\InteractsWithQueue;
  16. use Illuminate\Queue\SerializesModels;
  17. use Illuminate\Support\Facades\DB;
  18. use Illuminate\Support\Facades\Log;
  19. use Illuminate\Support\Facades\Redis;
  20. class Order implements ShouldQueue
  21. {
  22. use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
  23. protected $data = [];
  24. public $tries = 5; // 增加最大尝试次数
  25. public $timeout = 300; // 设置最大执行时间为 300 秒
  26. /**
  27. * Create a new job instance.
  28. *
  29. * @return void
  30. */
  31. public function __construct($data = [])
  32. {
  33. $this->data = $data;
  34. }
  35. /**
  36. * Execute the job.
  37. *
  38. * @return void
  39. */
  40. public function handle()
  41. {
  42. if (empty($this->data)) return;
  43. // 接收数据
  44. [$user_id, $payAmt,$Score,$favorable_price,$GiftsID,$order_sn] = $this->data;
  45. try {
  46. //Log::info('接收数据'.\GuzzleHttp\json_encode($this->data));
  47. // 获取支付金额
  48. $service = new OrderServices();
  49. // [$give, $favorable_price, $Recharge, $czReason, $cjReason] = $service->getPayInfo($GiftsID, $user_id, $payAmt);
  50. // 发送邮件给玩家
  51. //PrivateMail::paySendMail($user_id, $order_sn, $favorable_price,$payAmt);
  52. // 增加充值记录
  53. //[$Score] = $service->addRecord($user_id,$payAmt,$favorable_price,$order_sn,$GiftsID,$Recharge,$czReason,$give,$cjReason);
  54. // 执行支付后存储过程
  55. $service->storedProcedure($user_id, $payAmt, $favorable_price, $Score, $GiftsID);
  56. // 发送通知邮件
  57. PrivateMail::paySendMail($user_id, $order_sn, $favorable_price, $payAmt);
  58. // 首次付费统计
  59. $service = new FirstPayStatService();
  60. $isfirst = $service->stat($order_sn);
  61. // VIP签到救济金天数重置
  62. $minRechargeValue = VipService::getKeepLevelMinRecharge();
  63. if ($minRechargeValue < $payAmt * NumConfig::NUM_VALUE) {
  64. DB::table('QPAccountsDB.dbo.UserVipState')->where('UserID', $user_id)
  65. ->update(['ActiveDays' => 0, 'UpdateDate' => date('Y-m-d H:i:s')]);
  66. }
  67. Log::info("订单处理成功: {$order_sn}, 用户: {$user_id}, 金额: {$payAmt}, 到账: {$Score}");
  68. }catch (\Exception $e) {
  69. Log::error('订单处理失败:' . $e->getMessage());
  70. }
  71. try {
  72. $user = DB::connection('write')->table(TableName::QPAccountsDB() . 'AccountsInfo')
  73. ->where('UserID', $user_id)->select("Channel","RegisterDate")->first();
  74. // if($user->Channel>121&&$user->Channel<200) {
  75. //apk/checkpay用来统计
  76. // if($order->Channel>121&&$order->Channel<180) {
  77. // //记录redisevent,24小时
  78. // Redis::set("user_pay_first_".$order->user_id, json_encode(['order_sn' => $order_sn]));
  79. // }
  80. $item=[
  81. 'regtime'=>strtotime($user->RegisterDate),
  82. // 'isd0'=>date("Ymd",strtotime($user->RegisterDate))==date("Ymd"),
  83. 'isd0' => (time()-strtotime($user->RegisterDate)<86400),
  84. 'first' => $isfirst?1:0,
  85. 'golds' => $payAmt,
  86. 'udid' => md5($user_id),
  87. 'order_sn' => $order_sn
  88. ];
  89. //通知24680
  90. OuroGameService::notifyWebHall($user_id,"","pay_finish",["Golds"=>$Score,"PayNum"=>$favorable_price*100,"event"=>"pay","params"=>$item]);
  91. // OuroGameService::notifyWebHall($user_id,"",'call_client',["type"=>"track","event"=>"pay","params"=>$item]);
  92. $data = [];
  93. if (Redis::exists("user_pay_order_$user_id")) {
  94. $data = json_decode(Redis::get("user_pay_order_$user_id"), true);
  95. }
  96. array_push($data, $item);
  97. AfEvent::dispatch([
  98. 'UserID' => $user_id,
  99. 'params' => $item,
  100. ]);
  101. Log::info('订单记录成功user_pay_order_:' . json_encode($data));
  102. //记录redisevent,24小时
  103. Redis::set("user_pay_order_$user_id", json_encode($data));
  104. Redis::expire("user_pay_order_$user_id", 86400);
  105. // }
  106. //新的邀请系统生效了
  107. // $callback = DB::table(TableName::agent() . 'UserCallBack')->where('UserID', $user_id)->first();
  108. // if($callback){
  109. // if($callback->call_state != 2){
  110. // $update = [
  111. // 'call_state' => 2,
  112. // //'CallbackDate' => date('Y-m-d H:i:s')
  113. // ];
  114. // DB::table(TableName::agent() . 'UserCallBack')->where('UserID', $user_id)->update($update);
  115. // Custom::updateAdminBonus($callback->admin_id,30,2);
  116. // }
  117. //
  118. //
  119. // }
  120. }catch (\Exception $e){
  121. }
  122. }
  123. }