MapsController.php 5.4 KB
<?php
/**
+-----------------------------------------------------------------------------------------------------------------------
 * 管理端控制层: 卫星地图 控制类
+-----------------------------------------------------------------------------------------------------------------------
 *
 * PHP version 7
 *
 * @category  App\Admin\Controllers
 * @package   App\Admin\Controllers
 * @author    Richer <yangzi1028@163.com>
 * @date      2021年6月15日16:18:26
 * @copyright 2020-2021 Richer (http://www.pwyld.com/)
 * @license   http://www.pwyld.com/ License
 * @link      http://www.pwyld.com/
 */
namespace App\Admin\Controllers;

use App\Models\Area\Village;
use Encore\Admin\Layout\Column;
use Encore\Admin\Layout\Content;
use Encore\Admin\Layout\Row;

/**
 * Class MapsController
 *
 * @category  App\Admin\Controllers
 * @package   App\Admin\Controllers
 * @author    Richer <yangzi1028@163.com>
 * @date      2021年6月15日16:18:26
 * @copyright 2020-2021 Richer (http://www.pwyld.com/)
 * @license   http://www.pwyld.com/ License
 * @link      http://www.pwyld.com/
 */
class MapsController extends BaseController
{
    public function index(Content $content)
    {
        //  获取社区、村
        $villages = Village::where('status', config('constants.STATUS_OK'))->get(['id', 'title']);//->pluck('id', 'title');
//        $villages = Area::where('level', Area::LEVEL_VILLAGE)->get(['id', 'title']);//->pluck('id', 'title');

        return $content
//            ->title('Dashboard')
//            ->description('Description...')
//            ->row(Dashboard::title())
            ->row(function (Row $row) use ($villages) {
                $row->column(12, function (Column $column) use ($villages) {
                    $column->append(view('admin::map.index', compact('villages')));
                });
            });
    }

    public function simple(Content $content)
    {
        return view('admin::map.simple-map');
    }

    /**
     * 根据查询条件获取数据,并渲染到地图上面
     *
     * @return \Illuminate\Http\JsonResponse
     */
    public function getData()
    {
        // 获取楼栋的信息
        $village    = request('village');
        $group      = request('group');
//        $building   = request('building');
        $query = Building::where('status', config('constants.STATUS_OK'));
//        $query = Area::where('level', Area::LEVEL_BUILDING);

        if ($village) {
            $query->where('village_id', $village);
//            $query->where('path', 'like', ','.$village.',%');
        }
        if ($group) {
            $query->where('group_id', $group);
//            $query->where('path', 'like', '%,'.$group.',%');
        }
        $building = $query->get(['id','village_id','group_id','title','latitude','longitude','address']);
//        $building = $query->get(['id','title','longitude','latitude','level','path']);
        return response()->json(
            [
                'status'  => 1,
                'msg'  => 'success',
                'data' => $building->toArray(),
            ]
        );
    }

    /**
     * 根据查询条件获取数据,并渲染到地图上面
     *
     * @return \Illuminate\Http\JsonResponse
     */
    public function getDataByPage()
    {
        // 获取楼栋的信息
        $list = Building::where('status', config('constants.STATUS_OK'))
            ->when(
                $village = request('village'),
                function ($query) use ($village) {
                    $query->where('village_id', $village);
                }
            )->when(
                $group = request('group'),
                function ($query) use ($group) {
                    $query->where('group_id', $group);
                }
            )
            ->when(
                $keyword = request('keyword'),
                function ($query) use ($keyword) {
                    $query->where(function ($query) use ($keyword) {
                        $query->where('title', 'like', '%'.$keyword.'%')->orWhere('address', 'like', '%'.$keyword.'%');
                    });
                }
            )->paginate(request('per_page', 15));

        return response()->json(
            [
                'code'  => 0,
                'status'  => 1,
                'msg'  => 'success',
                'data' => $list,
            ]
        );
    }


    public function room()
    {
        $building = Building::with(['village','group','landlordRoom' => function ($query) {
            $query->with(['roomable' => function ($query) {
                $query->with(['user']);
            }]);
        },'rooms' => function ($query) {
            $query->with(['tenantRooms' => function ($query) {
                $query->with(['roomable' => function ($query) {
                    $query->with(['user']);
                }]);
            }]);
        }])->find(request('room_id'));
//        dd($building->toArray());

        return view('admin::map.room', compact('building'));

        dd($building->toArray());
        $building = Building::with(['village','group','landlord' => function ($query) {
            $query->with(['user']);
        },'tenants' => function ($query) {
            $query->with(['user', 'room']);
        },'rooms' => function ($query) {
            $query->with(['tenants']);
        }])->withCount(['tenants'])->find(request('room_id'));
        dd($building->toArray());
        return view('admin::map.room', compact('building'));
    }
}