ReportOrderTramsformer.php 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  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. ];
  20. const platform = [
  21. 'tiktok' => '抖音',
  22. 'iqiyi' => '爱奇艺',
  23. 'uc' => 'UC',
  24. 'uchc' => 'UCHC',
  25. 'weibo' => '微博粉丝通',
  26. 'tencent' => '腾讯',
  27. 'kuaishou' => '快手',
  28. 'baidu' => '百度',
  29. ];
  30. public function transform($item)
  31. {
  32. $reason = $this->getType($item);
  33. $status = $item->reportOrder ? $item->reportOrder->status : 0;
  34. if ($status == 1) {
  35. if(isset($item->reportOrder->content) && $item->reportOrder->content == '手动回传'){
  36. $reason = $item->reportOrder->content;
  37. }else{
  38. $reason = '';
  39. }
  40. }
  41. //注册时间跟充值时间不在同一天
  42. 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)))
  43. {
  44. $reason = self::REPORT_TYPE['current_day_register'];
  45. }
  46. return [
  47. 'order_no' => $item->trade_no,
  48. 'uid' => $item->uid,
  49. 'register_time' => $item->user ? (string)$item->user->created_at : '',
  50. 'register_ip' => $item->user ? $item->user->register_ip : '',
  51. 'amount' => $item->price,
  52. 'pay_time' => (string)$item->created_at,
  53. 'charge_ip' => $item->create_ip,
  54. 'bind_id' => $item->reportUser ? $item->reportUser->id : 0,
  55. 'adid' => $item->reportUser ? $item->reportUser->adid : 0,
  56. 'platform' => $this->getPlatform($item),
  57. 'status' => $status,
  58. 'type' => $item->reportOrder ? $item->reportOrder->type : '',
  59. 'content' => $reason,
  60. 'report_percent' => ($item->reportOrder ? $item->reportOrder->report_percent * 100 : 0) . '%',
  61. 'config_percent' => ($item->reportOrder ? $item->reportOrder->config_percent * 100 : 0) . '%',
  62. ];
  63. }
  64. private function getPlatform(Order $item)
  65. {
  66. if ($item->reportUser) {
  67. return self::platform[$item->reportUser->platform];
  68. }
  69. return '';
  70. }
  71. private function getType(Order $item)
  72. {
  73. if ($item->reportOrder) {
  74. return array_key_exists($item->reportOrder->type, self::REPORT_TYPE) ? self::REPORT_TYPE[$item->reportOrder->type] : '';
  75. } else {
  76. return self::REPORT_TYPE['no_user_match'];
  77. }
  78. }
  79. }