AdminLogController.php 2.96 KB
<?php

namespace app\ht\modules\system\controllers;

use Yii;
use yii\data\Pagination;
use app\ht\controllers\BaseController;
use common\models\AdminLog              as AdminLogModel;
use common\models\SysUser               as SysUserModel;
use common\models\SysUserProfile        as SysUserProfileModel;
use function strtotime;

/**
 * 后台管理日志控制器
 * Class AdminLog
 * @package app\ht\modules\system\controllers
 */
class AdminLogController extends BaseController
{
    /**
     * 管理日志列表
     */
    public function actionIndex()
    {
        $request = Yii::$app->request;

        $user_id = $request->get('user_id');
        $route = $request->get('route');
        $description = $request->get('description');
        $timeStart = $request->get('time_start');
        $endStart = $request->get('time_end');
        $ip = $request->get('ip');

        /**
         * 获取后台用户列表
         */
        $sysUser = SysUserModel::find()->all();

        /**
         * 查询过滤处理
         */
        $get = [];
        $get['user_id'] = empty($user_id) ? "" : $user_id;
        $get['route'] = empty($route) ? "" : $route;
        $get['description'] = empty($description) ? "" : $description;
        $get['time_start'] = empty($timeStart) ? "" : $timeStart;
        $get['time_end'] = empty($endStart) ? "" : $endStart;
        $get['ip'] = empty($ip) ? "" : $ip;

        $query = AdminLogModel::find()
            ->select('a.*, su.username, sup.realname')
            ->from(AdminLogModel::tableName() . 'a')
            ->orderBy('a.id DESC')
            ->leftJoin(SysUserModel::tableNameWithDbPrefix() . ' su', "a.user_id = su.id")
            ->leftJoin(SysUserProfileModel::tableNameWithDbPrefix() . ' sup', "sup.sys_user_id = su.id");

        if (!empty($user_id)) {
            $query->andWhere(['=', 'a.user_id', $user_id]);
        }
        if (!empty($route)) {
            $query->andWhere(['like', 'a.route', $route]);
        }
        if (!empty($timeStart)) {
            $query->andWhere(['>=', 'a.created_at', strtotime($timeStart)]);
        }
        if (!empty($endStart)) {
            $query->andWhere(['<=', 'a.created_at', strtotime($endStart) + 86400]); // 多一天
        }
        if (!empty($description)) {
            $query->andWhere(['like', 'a.description', $description]);
        }
        if (!empty($ip)) {
            $query->andWhere(['like', 'a.ip', $ip]);
        }

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

        return $this->render('index', array(
            'adminLog'  => $adminLog,
            'pages'     => $pages,
            'sysUser'   => $sysUser,
            'gets'      => $get
        ));
    }
}