12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- <?php
- /**
- * Created by PhpStorm.
- * User: Mead
- * Date: 2019/9/19
- * Time: 10:09 AM
- */
- namespace App\Observers;
- use App\Models\Parking;
- use Illuminate\Support\Facades\Cache;
- use Illuminate\Support\Facades\Log;
- use Illuminate\Support\Facades\Redis;
- class ParkingObserver
- {
- public function created(Parking $parking)
- {
- if (empty($parking->parking_centre)) return true;
- $centre = json_decode($parking->parking_centre, true);
- $redis = Redis::connection();
- $area_id = $parking->area_id;
- $tag = Parking::REDIS_STOP_BIKE_SITES_TAG;
- if ((int)$parking->type === Parking::TYPE_NO_STOP_BIKE) {
- $tag = Parking::REDIS_BAN_STOP_BIKE_SITE_TAG;
- }
- $redis->geoadd($tag . "_{$area_id}", $centre[0], $centre[1], $parking->id);
- $redis->geoadd($tag . "_0", $centre[0], $centre[1], $parking->id);
- }
- public function updated(Parking $parking)
- {
- $redis = Redis::connection();
- $tag = Parking::REDIS_STOP_BIKE_SITES_TAG;
- $area_id = $parking->area_id;
- if ((int)$parking->type === Parking::TYPE_NO_STOP_BIKE) {
- $tag = Parking::REDIS_BAN_STOP_BIKE_SITE_TAG;
- }
- if ((int)$parking->status === Parking::STATUS_OK) {
- $centre = json_decode($parking->parking_centre, true);
- $redis->geoadd($tag . "_{$area_id}", $centre[0], $centre[1], $parking->id);
- $redis->geoadd($tag . "_0", $centre[0], $centre[1], $parking->id);
- } else {
- $redis->zrem($tag . "_{$area_id}", [$parking->id]);
- $redis->zrem($tag . "_0", [$parking->id]);
- Cache::forget(Parking::REDIS_BAN_STOP_BIKE_SITE_TAG . $parking->id);
- }
- }
- public function deleted(Parking $parking)
- {
- $area_id = $parking->area_id;
- $redis = Redis::connection();
- $tag = Parking::REDIS_STOP_BIKE_SITES_TAG;
- if ((int)$parking->type === Parking::TYPE_NO_STOP_BIKE) {
- $tag = Parking::REDIS_BAN_STOP_BIKE_SITE_TAG;
- }
- $redis->zrem($tag . "_{$area_id}", $parking->id);
- $redis->zrem($tag . "_0", $parking->id);
- Cache::forget(Parking::REDIS_BAN_STOP_BIKE_SITE_TAG . $parking->id);
- }
- }
|