Rereport.php 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. <?php
  2. namespace General\Services\LandingPage\ChargeFeedBack;
  3. use App\Consts\BaseConst;
  4. use General\Models\Report\ReportUserBindRecord;
  5. use General\Models\Report\ReportUserChargeRecord;
  6. use General\Models\User\User;
  7. use General\Services\LandingPage\Report;
  8. use General\Services\Report\BaseReport;
  9. /**
  10. * 付费重传
  11. */
  12. class Rereport
  13. {
  14. public function reportInstance(string $link_source): BaseReport
  15. {
  16. $name = ucfirst($link_source) . 'Report';
  17. $namespace = "\\General\\Services\\Report\\{$name}";
  18. $instance = new $namespace;
  19. return $instance;
  20. }
  21. public function addReportCount(ReportUserBindRecord $report_user): array
  22. {
  23. $service = new Report;
  24. $user = User::find($report_user->uid);
  25. return $service->report('api/report/add', [
  26. 'source' => BaseConst::Platform,
  27. 'adid' => $report_user->adid,
  28. 'channel_id' => $user->distribution_channel_id,
  29. ]);
  30. }
  31. public function reReport(int $bind_id, float $amount, string $order_no)
  32. {
  33. $report_user = ReportUserBindRecord::find($bind_id);
  34. if ($report_user) {
  35. $instance = $this->reportInstance($report_user->platform);
  36. $result = $instance->reportCharge($report_user, $amount);
  37. $charge = ReportUserChargeRecord::updateOrCreate(
  38. [
  39. 'order_no' => $order_no,
  40. ],
  41. [
  42. 'uid' => $report_user->uid,
  43. 'status' => $result['result'],
  44. 'content' => $result['result'] ? '手动回传' : $result['content'],
  45. ]
  46. );
  47. $report_info = $this->addReportCount($report_user);
  48. if ($report_info && isset($report_info['data']['percent'])) {
  49. $charge->report_percent = $report_info['data']['percent'];
  50. $charge->save();
  51. }
  52. }
  53. }
  54. }