ReportOrderTramsformer.php 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  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. ];
  70. }
  71. private function getPlatform(Order $item)
  72. {
  73. if ($item->reportOrder) {
  74. return isset(self::platform[$item->reportOrder->link_source]) ? self::platform[$item->reportOrder->link_source] : $item->reportOrder->link_source;
  75. }
  76. return '';
  77. }
  78. private function getType(Order $item)
  79. {
  80. if ($item->reportOrder) {
  81. return array_key_exists($item->reportOrder->type, self::REPORT_TYPE) ? self::REPORT_TYPE[$item->reportOrder->type] : '';
  82. } else {
  83. return self::REPORT_TYPE['no_user_match'];
  84. }
  85. }
  86. }