DeviceTransformer.php 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. <?php
  2. /*
  3. * This file is part of the Jiannei/lumen-api-starter.
  4. *
  5. * (c) Jiannei <longjian.huang@foxmail.com>
  6. *
  7. * This source file is subject to the MIT license that is bundled
  8. * with this source code in the file LICENSE.
  9. */
  10. namespace App\Repositories\Transformers;
  11. use App\Models\Device;
  12. use App\Models\Order;
  13. use App\Repositories\Enums\DeviceLineEnum;
  14. use App\Repositories\Enums\DeviceLuTypeEnum;
  15. use App\Repositories\Enums\DeviceStatusEnum;
  16. use App\Repositories\Enums\DeviceUseStatusEnum;
  17. use App\Repositories\Enums\DeviceWaterLevelEnum;
  18. use App\Repositories\Enums\OrderStatusEnum;
  19. use League\Fractal\TransformerAbstract;
  20. class DeviceTransformer extends TransformerAbstract
  21. {
  22. public function transform(Device $device)
  23. {
  24. $data = [
  25. 'id' => $device->id,
  26. 'no' => $device->no,
  27. 'type' => $device->type,
  28. 'temperature' => $device->temperature ?? '未知',
  29. 'water_level_warning' => $device->water_level_warning,
  30. 'water_level_warning_text' => DeviceWaterLevelEnum::getDescription($device->water_level_warning),
  31. 'water_quality' => $device->water_quality ?? '未知',
  32. 'last_update_time' => $device->last_update_time,
  33. 'a' => $device->a,
  34. 'a_test' => DeviceLuTypeEnum::getDescription($device->a),
  35. 'b' => $device->b,
  36. 'b_test' => DeviceLuTypeEnum::getDescription($device->b),
  37. 'is_use' => $device->is_use,
  38. 'is_use_text' => DeviceUseStatusEnum::getDescription($device->is_use),
  39. 'is_line' => $device->is_line,
  40. 'is_line_text' => DeviceLineEnum::getDescription($device->is_line),
  41. 'shop_id' => $device->shop_id,
  42. 'status' => $device->status,
  43. 'status_text' => DeviceStatusEnum::getDescription($device->status),
  44. 'day_money' => Order::query()->whereDate('pay_time', date("Y-m-d"))->where('device_id', $device->id)->where('status', OrderStatusEnum::ORDER_OVER)->sum('pay_money'),
  45. 'work_time' => Order::query()->whereDate('pay_time', date("Y-m-d"))->where('device_id', $device->id)->where('status', OrderStatusEnum::ORDER_OVER)->sum('work_time'),
  46. 'shop' => $this->shop($device)
  47. ];
  48. return $data;
  49. }
  50. public function shop($device)
  51. {
  52. if (!$device->shop) return [];
  53. return $device->shop->only(['a_minute_money', 'b_minute_money', 'ab_minute_money', 'times', 'name']);
  54. }
  55. }