BikeResource.php 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. <?php
  2. namespace App\Http\Resources\App;
  3. use App\Utils\GaodeMaps;
  4. use Carbon\Carbon;
  5. use Illuminate\Http\Resources\Json\JsonResource;
  6. class BikeResource extends JsonResource
  7. {
  8. /**
  9. * Transform the resource into an array.
  10. *
  11. * @param \Illuminate\Http\Request $request
  12. * @return array
  13. */
  14. public function toArray($request)
  15. {
  16. $model = $this->resource;
  17. $last_use_time = $model->last_use_bike_end_time;
  18. $carbon = Carbon::parse($last_use_time);
  19. $minutes = (new Carbon)->diffInMinutes($carbon, true);
  20. $hours = (new Carbon)->diffInHours($carbon, true);
  21. $days = (new Carbon)->diffInDays($carbon, true);
  22. $lngLat = $model->last_location ? [json_decode($model->last_location)->lng ,json_decode($model->last_location)->lat]: [113.801689,34.815298];
  23. $tab_name = '';
  24. if(!(bool)$model->is_link){
  25. // 离线
  26. $tab_name = '中控离线';
  27. } elseif ((bool)$model->is_trouble) {
  28. // 故障上线
  29. if((bool)$model->put_status){
  30. $tab_name = '故障';
  31. }else{
  32. // 故障下线
  33. $tab_name = '故障下线';
  34. }
  35. } elseif (!(bool)$model->is_low_battery_power) {
  36. // 低电量
  37. $tab_name = '低电量';
  38. } elseif (!(bool)$model->put_status) {
  39. // 下线 未投放
  40. $tab_name = '未投放';
  41. } elseif ((bool)$model->is_riding) {
  42. //骑行中
  43. $tab_name = '骑行中';
  44. } elseif(!(bool)$model->is_in_parking){
  45. // 不在停车区
  46. $tab_name = '不在停车区';
  47. }else {
  48. // 未骑行
  49. $tab_name = '未骑行';
  50. }
  51. $data = [
  52. 'not_use_time' => $days.'天'.($hours % 24).'时'.($minutes % 60).'分钟',
  53. 'id' => $model->id,
  54. 'bike_no' => $model->bike_no,
  55. 'box_no' => $model->box_no,
  56. 'is_link' => $model->put_status, // 是否在线 用表示 投放状态
  57. 'battery_power' => $model->battery_power,
  58. 'is_riding' => $model->is_riding,
  59. 'area_name' => $model->areas->name ?? '',
  60. 'last_location'=>$lngLat,
  61. 'location' => '',//GaodeMaps::getAddress($lngLat),
  62. 'tab_name' => $tab_name,
  63. 'average_profit' => Carbon::today()->diffInDays(Carbon::parse($model->total_money_time)) == 0 ? '0.00': bcdiv($model->total_money,Carbon::today()->diffInDays(Carbon::parse($model->total_money_time)),2)
  64. ];
  65. return $data;
  66. }
  67. }