ReportOrderTramsformer.php 3.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * Date: 2017/3/31
  5. * Time: 14:02
  6. */
  7. namespace General\Controllers\LandingPage\Transformers;
  8. use General\Models\Order\Order;
  9. class ReportOrderTramsformer
  10. {
  11. const REPORT_TYPE = [
  12. 'amount_filter' => '回传金额过滤',
  13. 'register_24_charge' => '充值时间和注册时间必须在24小时以内',
  14. 'current_day_register' => '注册时间和充值时间必须同一天',
  15. 'no_user_match' => '无匹配用户(ip切换或者非落地页用户)',
  16. 'feedback_user' => '已回传用户(非首充)',
  17. 'percent_filter' => '百分比过滤',
  18. 'protected_eligible' => '计划保护范围(不算在比例基数里面)',
  19. 'no_complete_order_before' => '用户之前没有回传过下单',
  20. ];
  21. const platform = [
  22. 'tiktok' => '抖音',
  23. 'iqiyi' => '爱奇艺',
  24. 'uc' => 'UC',
  25. 'uchc' => 'UCHC',
  26. 'weibo' => '微博粉丝通',
  27. 'tencent' => '腾讯',
  28. 'kuaishou' => '快手',
  29. 'baidu' => '百度',
  30. 'huawei' => '华为ads',
  31. 'tx_adq_new' => '腾讯adq新版',
  32. 'ximalaya' => '喜马拉雅',
  33. ];
  34. public function transform($item)
  35. {
  36. $reason = $this->getType($item);
  37. $status = $item->reportOrder ? $item->reportOrder->status : 0;
  38. if ($status == 1) {
  39. if(isset($item->reportOrder->content) && $item->reportOrder->content == '手动回传'){
  40. $reason = $item->reportOrder->content;
  41. }else{
  42. $reason = '';
  43. }
  44. }
  45. //注册时间跟充值时间不在同一天
  46. if($reason == self::REPORT_TYPE['no_user_match'] && isset($item->user) && date('Y-m-d',strtotime($item->user->created_at)) != date('Y-m-d',strtotime($item->created_at)))
  47. {
  48. $reason = self::REPORT_TYPE['current_day_register'];
  49. }
  50. if('tx_adq_new' == ($item->reportOrder->link_source ?? '')) {
  51. $reason = ($item->reportOrder->content ?? '') ? $item->reportOrder->content : $reason;
  52. }
  53. return [
  54. 'order_no' => $item->trade_no,
  55. 'uid' => $item->uid,
  56. 'register_time' => $item->user ? (string)$item->user->created_at : '',
  57. 'register_ip' => $item->user ? $item->user->register_ip : '',
  58. 'amount' => $item->price,
  59. 'pay_time' => (string)$item->created_at,
  60. 'charge_ip' => $item->create_ip,
  61. 'bind_id' => $item->reportUser ? $item->reportUser->id : 0,
  62. 'adid' => $item->reportUser ? $item->reportUser->adid : 0,
  63. 'platform' => $this->getPlatform($item),
  64. 'status' => $status,
  65. 'type' => $item->reportOrder ? $item->reportOrder->type : '',
  66. 'content' => $reason,
  67. 'report_percent' => ($item->reportOrder ? $item->reportOrder->report_percent * 100 : 0) . '%',
  68. 'config_percent' => ($item->reportOrder ? $item->reportOrder->config_percent * 100 : 0) . '%',
  69. 'send_order_id' => $item->send_order_id,
  70. 'nickname' => $item->nickname,
  71. ];
  72. }
  73. private function getPlatform(Order $item)
  74. {
  75. if ($item->reportOrder) {
  76. return isset(self::platform[$item->reportOrder->link_source]) ? self::platform[$item->reportOrder->link_source] : $item->reportOrder->link_source;
  77. }
  78. return '';
  79. }
  80. private function getType(Order $item)
  81. {
  82. if ($item->reportOrder) {
  83. return array_key_exists($item->reportOrder->type, self::REPORT_TYPE) ? self::REPORT_TYPE[$item->reportOrder->type] : '';
  84. } else {
  85. return self::REPORT_TYPE['no_user_match'];
  86. }
  87. }
  88. }