Bike.php 2.5 KB

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