Bike.php 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. <?php
  2. namespace App\Models;
  3. use App\Maps\CacheMap;
  4. use Carbon\Carbon;
  5. use Illuminate\Database\Eloquent\Model;
  6. use Illuminate\Support\Facades\Cache;
  7. class Bike extends Model
  8. {
  9. protected $guarded = [];
  10. // redis 中车的标识
  11. const REDIS_BOX_NO_AND_BIKE_NO_TAG = 'box_no_and_bike_no';
  12. const REDIS_BIKE_LOCATION_TAG = 'bike_locations';
  13. const STATUS_OK = 1;
  14. const STATUS_PAUSE = 0;
  15. public static $statusMaps = [
  16. self::STATUS_OK => '正常',
  17. self::STATUS_PAUSE => '暂停'
  18. ];
  19. const LINK_ONLINE = 1;
  20. const LINK_OFFLINE = 0;
  21. public static $linkMaps = [
  22. self::LINK_ONLINE => '在线',
  23. self::LINK_OFFLINE => '离线'
  24. ];
  25. const TROUBLE_YES = 1;
  26. const TROUBLE_NO = 0;
  27. public static $troubleMaps = [
  28. self::TROUBLE_NO => '无故障',
  29. self::TROUBLE_YES => '有故障'
  30. ];
  31. const PUT_STATUS_YES = 1;
  32. const PUT_STATUS_NO = 0;
  33. public static $putStatusMaps = [
  34. self::PUT_STATUS_YES => '已投放',
  35. self::PUT_STATUS_NO => '未投放'
  36. ];
  37. const IN_PARKING_YES = 1;
  38. const IN_PARKING_NO = 0;
  39. public static $inParkingMaps = [
  40. self::IN_PARKING_NO => '不在停车区',
  41. self::IN_PARKING_YES => '在停车区'
  42. ];
  43. const RIDING_YES = 1;
  44. const RIDING_NO = 0;
  45. public static $ridingMaps = [
  46. self::RIDING_YES => '骑行中',
  47. self::RIDING_NO => '未骑行'
  48. ];
  49. const RENT_YES = 1;
  50. const RENT_NO = 0;
  51. public static $rentMaps = [
  52. self::RENT_YES => '租用中',
  53. self::RENT_NO => '未租用'
  54. ];
  55. const BATTERY_POWER_OK = 1;
  56. const BATTERY_POWER_LOW = 0;
  57. public static $batteryPowerMaps = [
  58. self::BATTERY_POWER_OK => '电量正常',
  59. self::BATTERY_POWER_LOW => '低电量'
  60. ];
  61. public function scopeBikeCanRide($query)
  62. {
  63. return $query->where('is_link', self::LINK_ONLINE)
  64. ->where('put_status', self::PUT_STATUS_YES)
  65. ->where('is_low_battery_power', self::BATTERY_POWER_OK)
  66. ->where('is_riding', self::RIDING_NO)
  67. ->where('is_trouble', self::TROUBLE_NO)
  68. ->where('status', self::STATUS_OK);
  69. }
  70. public function getLocationAttribute()
  71. {
  72. return js2php($this->attributes['last_location']);
  73. }
  74. public static function byBikeNoGetAreaId($bike_no)
  75. {
  76. return Cache::remember('admin:byBikeNoGetAreaId:' . $bike_no, Carbon::now()->addSeconds(CacheMap::CACHE_TIME), function () use ($bike_no) {
  77. return self::query()->where('bike_no', $bike_no)->value('put_area_id');
  78. });
  79. }
  80. }