BindDeviceAppointmentController.php 3.71 KB
<?php

namespace app\ht\modules\device\controllers;

use Yii;
use yii\data\Pagination;
use yii\web\NotFoundHttpException;
use app\ht\controllers\BaseController;
use common\models\BindDeviceAppointment as BindDeviceAppointmentModel;
use function date;

/**
 * 贴码预约申请控制器
 * Class BindDeviceAppointmentController
 * @package app\ht\modules\device\controllers
 */
class BindDeviceAppointmentController extends BaseController
{
    /**
     * 预约贴码列表
     */
    public function actionIndex()
    {
        $params = $this->dataList();
        /**
         * 渲染模板
         */
        return $this->render('index', $params);
    }

    /**
     * 查询数据列表
     */
    protected function dataList()
    {
        $request = Yii::$app->request;
        /**
         * 组织SQL type 0 未处理 1 已处理
         */
        $postecode = BindDeviceAppointmentModel::find();
        $postecode->andWhere(["is_deleted" => 0]);
        $postecode->orderBy("id desc");
        /**
         * 查询过滤处理
         */
        $get = [];

        // 联系人
        $connectName =  $request->get('connectName');
        $get['connectName'] = $connectName;
        if ($connectName) {
            $postecode->andFilterWhere(['like', 'connect_name', $connectName]);
        }

        // 电话
        $mobile =  $request->get('mobile');
        $get['mobile'] = $mobile;
        if ($mobile) {
            $postecode->andFilterWhere(['like', 'mobile', $mobile]);
        }

        $selstatus = $request->get("selstatus");
        $get['selstatus'] = $selstatus;
        if ($selstatus) {
            if ($selstatus == 1) {
                $postecode->andWhere(['status' => 1]);
            } else if ($selstatus == 2) {
                $postecode->andWhere(['status' => 0]);
            }
        }

        // 地址
        $address =  $request->get('address');
        $get['address'] = $address;
        if ($address) {
            $postecode->andFilterWhere(['like', 'address', $address]);
        }

        /**
         * 分页处理
         */
        $pageSize = $request->get("pageSize") ? (int) $request->get("pageSize") : 20;
        $pages = new Pagination(['totalCount' => $postecode->count(), 'pageSize' => $pageSize]);
        $result = $postecode->offset($pages->offset)->limit($pages->limit)->all();

        /**
         * 数据整理
         */
        $data = [];
        foreach ($result as $item) {
            $data[] = [
                'id'            => $item->id,
                'connect_name'  => $item->connect_name,
                'mobile'        => $item->mobile,
                'address'       => $item->address,
                'status'        => ($item->status == 1) ? '已处理' : '未处理',
                'created_at'    => date('Y-m-d H:i:s', $item->created_at),
                'updated_at'    => date('Y-m-d H:i:s', $item->updated_at),
                'is_deleted'    => ($item->is_deleted == 1) ? '删除' : '正常',
            ];
        }

        return [
            'listdata' => $data,
            'pages'    => $pages,
            'gets'     => $get,
        ];
    }

    /**
     * 处理贴码请求
     */
    public function actionDoApply($id)
    {
        $model = $this->findModel($id);
        $model->status = ($model->status == 1) ? 0 : 1;
        $model->save();
        return $this->redirect(['index']);
    }

    /**
     * 根据主键查找模型
     */
    protected function findModel($id)
    {
        $findModel = Yii::createObject(BindDeviceAppointmentModel::className());
        if (($model = $findModel::findOne($id)) !== null) {
            return $model;
        } else {
            throw new NotFoundHttpException('访问页面不存在');
        }
    }
}