UpgradeLogController.php 6.46 KB
<?php

namespace app\ht\modules\datas\controllers;

use Yii;
use yii\data\Pagination;
use app\ht\controllers\BaseController;
use domain\upgrade\UpgradeLogRepository;
use domain\upgrade\UpgradeStatus;
use domain\upgrade\UpgradeLog;
use stdClass;
use function count;
use function strtotime;

/**
 * 版本日志管理
 * Class UpgradeLogController
 * @package app\ht\modules\upgrade\controllers
 */
class UpgradeLogController extends BaseController
{
    /**
     * 版本日志管理
     */
    public function actionIndex()
    {
        $params = $this->dataList(1);
        /**
         * 渲染模板
         */
        return $this->render('index', $params);
    }

    /**
     * 查询数据列表
     */
    protected function dataList($type = '')
    {
        $searchCondition = $this->searchWhere();
        $where = $searchCondition[0];
        $gets = $searchCondition[1];
        if ($type == 0) {
            $pageList = UpgradeLogRepository::getPageList($where, 0 , 0);
            $pages = null;
        } else {
            $pageSize = 20;
            $pages = new Pagination(['totalCount' => UpgradeLogRepository::getPageCount($where), 'pageSize' => $pageSize]);
            $pageList = UpgradeLogRepository::getPageList($where, $pages->offset, $pages->limit);
        }

        /**
         * 数据整理
         */
        return [
            'listdata'   => $pageList,
            'pages'      => $pages,
            'gets'       => $gets
        ];
    }

    private function searchWhere($requestType = 1)
    {
        $request     = Yii::$app->request;
        $reqName = 'get';
        if (2 == $requestType) {
            $reqName = 'post';
        }
        $creatTime   = $request->$reqName('creatTime');
        $endTime     = $request->$reqName('endTime');
        $status      = $request->$reqName('status');
        $current_version = $this->filterVar($request->$reqName('current_version'));
        $target_version  = $this->filterVar($request->$reqName('target_version'));
        $manufacture_name = $this->filterVar($request->$reqName('manufacture_name'));
        $device_no   = $this->filterVar($request->$reqName('device_no'));
        $barcode     = $this->filterVar($request->$reqName('barcode'));
        $error_code  = $request->$reqName('error_code');
        $device_device_id = $request->$reqName('device_device_id');
        $package_name     = $this->filterVar($request->$reqName('package_name'));
        $dataType    = !empty($request->$reqName('type')) ? $request->$reqName('type') : UpgradeStatus::TYPE_APP;

        $gets = [
            'creatTime'         => $creatTime,
            'endTime'           => $endTime,
            'status'            => $status,
            'current_version'   => $current_version,
            'target_version'    => $target_version,
            'manufacture_name'  => $manufacture_name,
            'device_no'         => $device_no,
            'barcode'           => $barcode,
            'error_code'        => $error_code,
            'device_device_id'  => $device_device_id,
            'package_name'      => $package_name,
            'type'              => $dataType,
        ];

        $where = ['and'];
        if ($creatTime) {
            $creatTime = strtotime($creatTime);
            $where[] = ['>=', 'ul.created_at', $creatTime];
        }
        if ($endTime) {
            $endTime = strtotime($endTime) + 86400;
            $where[] = ['<=', 'ul.created_at', $endTime];
        }
        if ($status) {
            $where[] = ['=', 'ul.status', $status];
        }
        if ($package_name) {
            $where[] = ['like', 'ul.package_name', $package_name];
        }
        if ($current_version) {
            $where[] = ['like', 'ul.current_version', $current_version];
        }
        if ($target_version) {
            $where[] = ['like', 'ul.target_version', $target_version];
        }
        if ($manufacture_name) {
            $where[] = ['like', 'mf.name', $manufacture_name];
        }
        if ($device_no) {
            $where[] = ['like', 'md.name', $device_no];
        }
        if ($barcode) {
            $where[] = ['like', 'ul.barcode', $barcode];
        }
        if ($error_code) {
            $where[] = ['like', 'ul.error_code', $error_code];
        }
        if ($device_device_id) {
            $where[] = ['like', 'ul.device_id', $device_device_id];
        }
        if ($dataType) {
            $where[] = ['=', 'ul.type', $dataType];
        }

        return [$where, $gets];
    }

    /**
     * 导出版本日志数据
     * @return string
     */
    public function actionExport()
    {
        $params = $this->dataList(0);
        return $this->renderPartial('export', $params);
    }

    /**
     * @return string
     */
    public function actionDelSearch()
    {
        $request     = Yii::$app->request;
        $e = new stdClass();
        $e->success = false;
        $e->message = '失败';

        $searchCondition = $this->searchWhere(2);
        $where = $searchCondition[0];

        $post = $request->post();
        if ((1 == count($post) && isset($post['type'])) || empty($post)) {
            $e->message = '请录入搜索条件';
            return $this->renderJson($e);
        }

        $upgrades = UpgradeLogRepository::getPageList($where, 0 , 0);
        $ids = [];
        foreach($upgrades as $k => $v) {
            if ($v) {
                $ids[] = $v['id'];
            }
        }
        if (!$ids) {
            $e->message = '没有满足条件的记录';
            return $this->renderJson($e);
        }
        $result = UpgradeLog::deleteAll(['id' => $ids]);
        if ($result) {
            $e->message = '成功删除'.count($ids).'记录';
            $e->success = true;
            return $this->renderJson($e);
        } else {
            $e->message = '删除失败';
            return $this->renderJson($e);
        }
    }

    /**
     * @return string
     */
    public function actionDelItem()
    {
        $request     = Yii::$app->request;
        $e = new stdClass();
        $e->success = false;
        $e->message = '失败';
        $id = $request->post('id');
        if (empty($id)) {
            $e->message = 'ID为空,删除失败';
            return $this->renderJson($e);
        }
        if (UpgradeLog::delete($id)) {
            $e->message = '删除成功';
            $e->success = true;
            return $this->renderJson($e);
        } else {
            $e->message = 'ID为空,删除失败';
            return $this->renderJson($e);
        }
    }
}