12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- <?php
- /**
- * Created by PhpStorm.
- * User: Mead
- * Date: 2019/8/5
- * Time: 2:44 PM
- */
- namespace App\Transformers;
- use App\Handlers\BatteryHandler;
- use App\Maps\CacheMap;
- use App\Models\AreaSetting;
- use App\Models\Bike;
- use App\Repositories\AreaSettingRepository;
- use Illuminate\Support\Facades\Cache;
- use League\Fractal\TransformerAbstract;
- class BikeTransformer extends TransformerAbstract
- {
- public function transform(Bike $model)
- {
- return [
- 'bike_no' => $model->bike_no,
- 'box_no' => $model->box_no,
- 'battery_power' => $model->battery_power,
- 'riding_bike_mileage' => (new BatteryHandler())->byElectricGetMileage($model->battery_power),
- 'is_link' => $model->is_link,
- 'put_status' => $model->put_status,
- 'is_low_battery_power' => $model->is_low_battery_power,
- 'is_trouble' => $model->is_trouble,
- 'is_riding' => $model->is_riding,
- 'status' => $model->status,
- 'activity' => $this->activity($model->put_area_id)
- ];
- }
- public function activity($bike_area_id)
- {
- $key = sprintf(CacheMap::AREA_SETTING_AREA_ID, $bike_area_id);;
- $areaSetting = Cache::remember($key, CacheMap::CACHE_TIME, function () use ($bike_area_id) {
- return AreaSetting::query()->where('area_id', $bike_area_id)->first();
- });
- if (empty($areaSetting)) return '';
- if ($areaSetting->is_minute_free == AreaSetting::FREE_MINUTE_OK) {
- $times = '';
- if ($areaSetting->minute_free_times > 0) {
- $times = "(每日限制 " . $areaSetting->minute_free_times . "次)";
- }
- return $areaSetting->many_minute_free . '分钟(包含)内免费骑行' . $times;
- } else {
- return '';
- }
- }
- public function isLowBatteryPower($model)
- {
- $area_id = $model->put_area_id;
- if ($area_id && !$model->is_low_battery_power) {
- $batteryPower = (new AreaSettingRepository(new AreaSetting()))->byAreaIdGetBatteryPower($area_id);
- if ($batteryPower > $model->battery_power) {
- return Bike::BATTERY_POWER_LOW;
- }
- return Bike::BATTERY_POWER_OK;
- }
- return $model->is_low_battery_power;
- }
- }
|