OrderResource.php 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. <?php
  2. namespace App\Http\Resources;
  3. use App\Models\Order;
  4. use App\Models\OrderRent;
  5. use Carbon\Carbon;
  6. use Illuminate\Http\Resources\Json\JsonResource;
  7. use Illuminate\Support\Facades\Log;
  8. class OrderResource extends JsonResource
  9. {
  10. /**
  11. * Transform the resource into an array.
  12. *
  13. * @param \Illuminate\Http\Request $request
  14. * @return array
  15. */
  16. public function toArray($request)
  17. {
  18. $model = $this->resource;
  19. $now = Carbon::now();
  20. $carbon_start_use_bike_time = Carbon::parse($model->start_use_bike_time);
  21. $real_use_bike_time_length = 0;
  22. $real_use_bike_time_length_name = 0;
  23. switch ($model->status) {
  24. case Order::STATUS_PAUSE_BIKE: // 临时停车
  25. case Order::STATUS_RIDE_BIKE : // 骑行中
  26. $real_use_bike_time_length = $now->diffInMinutes($carbon_start_use_bike_time);
  27. break;
  28. case Order::STATUS_CLOSE_ORDER: // 订单关闭
  29. case Order::STATUS_CLOSE_BIKE: // 待支付
  30. case Order::STATUS_COMPLETE_ORDER: // 订单完成
  31. $real_use_bike_time_length = $model->use_bike_time_length;
  32. break;
  33. default :
  34. $real_use_bike_time_length = 0;
  35. }
  36. $real_use_bike_time_length_time = $real_use_bike_time_length;
  37. if ($real_use_bike_time_length > 60) {
  38. $real_use_bike_time_length = floor($real_use_bike_time_length / 60) . 'h' . ($real_use_bike_time_length % 60) . 'm';
  39. $real_use_bike_time_length_name = floor($real_use_bike_time_length_time / 60) . '小时' . ($real_use_bike_time_length_time % 60) . '分钟';
  40. } else {
  41. $real_use_bike_time_length = $real_use_bike_time_length . 'm';
  42. $real_use_bike_time_length_name = $real_use_bike_time_length_time . '分钟';
  43. }
  44. $order_create_time = Carbon::now()->diffInHours($model->pay_time);
  45. $is_return = true;
  46. // Log::info($order_create_time);
  47. if (abs($order_create_time) > 24 * 5) {
  48. $is_return = false;
  49. }
  50. if($model->pay_money == 0){
  51. $is_return = false;
  52. }
  53. $is_huisu = false;
  54. $order_end_time = Carbon::now()->diffInHours($model->end_use_bike_time);
  55. if($model->status == Order::STATUS_CLOSE_BIKE && $order_end_time <2){
  56. // 2小时内可回溯
  57. $is_huisu = true;
  58. }
  59. $data = [
  60. 'nickname' => $model->users->nickname ? ($model->users->nickname . "(" . $model->users->truename . ")") : '',
  61. 'mobile' => $model->users->mobile ?? '',
  62. 'order_id' => $model->id,
  63. 'orders_status' => Order::$statusMaps[$model->status],
  64. 'area_name' => $model->area->name,
  65. 'real_use_bike_time_length' => $real_use_bike_time_length,
  66. 'real_use_bike_time_length_name' => $real_use_bike_time_length_name,
  67. 'is_return' => $is_return,
  68. 'settle_type' => Order::$adminSettleOrderMaps[$model->is_admin_settle_order],
  69. 'pay_type_name' => Order::$payTypeMaps[$model->pay_type],
  70. 'is_huisu' => $is_huisu,
  71. 'preferential_type_name' => Order::$preferentialTypeMaps[$model->preferential_type],
  72. ];
  73. return array_merge(parent::toArray($request), $data);
  74. }
  75. }