OrderTransformer.php 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. <?php
  2. namespace App\Transformer\Order;
  3. use App\Cache\StatisticCache;
  4. use App\Consts\BaseConst;
  5. use Illuminate\Support\Facades\DB;
  6. use Illuminate\Support\Facades\Redis;
  7. use Vinkla\Hashids\Facades\Hashids;
  8. class OrderTransformer
  9. {
  10. // 用户列表
  11. public function newBuildUserList($data): array
  12. {
  13. return [
  14. 'meta' => getMeta($data),
  15. 'list' => $this->newEachUserList($data),
  16. ];
  17. }
  18. private function newEachUserList($list): array
  19. {
  20. $result = [];
  21. if (empty($list)) return $result;
  22. foreach ($list as $item) {
  23. $result[] = [
  24. 'uid' => getProp($item, 'id'),
  25. 'nickname' => getProp($item, 'nickname'),
  26. 'channel_id' => getProp($item, 'distribution_channel_id'),
  27. 'register_ip' => getProp($item, 'register_ip'),
  28. 'send_order_id' => getProp($item, 'send_order_id'),
  29. 'vip_limit_date' => transDate(getProp($item, 'vip_limit_date')),
  30. 'balance' => getProp($item, 'balance'),
  31. 'charge_balance' => getProp($item, 'charge_balance'),
  32. 'reward_balance' => getProp($item, 'reward_balance'),
  33. 'invite_code' => getProp($item, 'invite_code'),
  34. 'created_at' => transDate(getProp($item, 'created_at')),
  35. 'bind_send_order_time' => transDate(getProp($item, 'bind_send_order_time')),
  36. // 'trade_no' => getProp($item, 'trade_no')
  37. ];
  38. }
  39. return $result;
  40. }
  41. // 派单列表
  42. public function newBuildSendOrderList($data): array
  43. {
  44. return [
  45. 'meta' => getMeta($data),
  46. 'list' => $this->newSendOrderList($data),
  47. ];
  48. }
  49. private function newSendOrderList($list): array
  50. {
  51. $result = [];
  52. if (empty($list)) return $result;
  53. foreach ($list as $item) {
  54. $result[] = [
  55. 'send_order_id' => getProp($item, 'id'),
  56. 'send_order_name' => getProp($item, 'name'),
  57. 'channel_id' => getProp($item, 'distribution_channel_id'),
  58. 'book_name' => getProp($item, 'book_name'),
  59. 'chapter_name' => getProp($item, 'chapter_name'),
  60. 'report_percent' => getProp($item, 'report_percent'),
  61. 'report_receive_num' => getProp($item, 'report_receive_num'),
  62. 'report_post_num' => getProp($item, 'report_post_num'),
  63. 'created_at' => transDate(getProp($item, 'created_at')),
  64. ];
  65. }
  66. return $result;
  67. }
  68. // 订单列表
  69. public function newBuildOrderList($data): array
  70. {
  71. return [
  72. 'meta' => getMeta($data),
  73. 'list' => $this->newEachOrderList($data),
  74. ];
  75. }
  76. private function newEachOrderList($list): array
  77. {
  78. $result = [];
  79. if (empty($list)) return $result;
  80. $order_status_arr = [
  81. 'UNPAID' => '未支付',
  82. 'PAID' => '支付成功',
  83. 'FAIL' => '支付失败',
  84. 'REFUND' => '已退款'
  85. ];
  86. $oder_type_arr = [
  87. 'RECHARGE' => '书币充值',
  88. 'WEEK' => '周卡',
  89. 'MONTH' => '月卡',
  90. 'QUARTER' => '季卡',
  91. 'HALF_YEAR' => '半年卡',
  92. 'YEAR' => '年卡'
  93. ];
  94. foreach ($list as $item) {
  95. $remark = getProp($item, 'remark');
  96. $remark = getProp($item, 'id') && $remark == '' ? '回传成功' : $remark;
  97. if (!getProp($item, 'report_id')) $remark = '无匹配广告计划id';
  98. $order_status = isset($order_status_arr[getProp($item, 'status')]) ? $order_status_arr[getProp($item, 'status')] : '未知状态';
  99. $order_type = isset($oder_type_arr[getProp($item, 'order_type')]) ? $oder_type_arr[getProp($item, 'order_type')] : '未知订单类型';
  100. switch (mb_substr(getProp($item, 'transaction_id'), 0, 2)) {
  101. case '42':
  102. $pay_type = '微信';
  103. break;
  104. case '20':
  105. $pay_type = '支付宝';
  106. break;
  107. case 'TP':
  108. $pay_type = '抖音';
  109. break;
  110. default:
  111. $pay_type = '未知支付方式';
  112. break;
  113. }
  114. $result[] = [
  115. 'order_id' => getProp($item, 'id'),
  116. 'trade_no' => getProp($item, 'trade_no'),
  117. 'uid' => getProp($item, 'uid'),
  118. 'register_time' => transDate(getProp($item, 'register_time')),
  119. 'bind_send_order_time' => transDate(getProp($item, 'bind_send_order_time')),
  120. 'price' => getProp($item, 'price'),
  121. 'order_status' => $order_status,
  122. 'order_type' => $order_type,
  123. 'created_at' => transDate(getProp($item, 'created_at')),
  124. 'pay_time' => transDate(getProp($item, 'pay_time')),
  125. 'channel_id' => getProp($item, 'distribution_channel_id'),
  126. 'send_order_id' => getProp($item, 'send_order_id'),
  127. 'advertiser_id' => getProp($item, 'advertiserid'),
  128. 'promotion_id' => getProp($item, 'promotionid'),
  129. 'clickid' => getProp($item, 'clickid'),
  130. 'report_result' => $remark,
  131. 'report_time' => transDate(getProp($item, 'report_time')),
  132. 'pay_num' => getProp($item, 'pay_num'),
  133. 'pay_type' => $pay_type,
  134. 'book_name' => getProp($item, 'book_name'),
  135. ];
  136. }
  137. return $result;
  138. }
  139. }