WatchDetailsController.class.php 5.96 KB
<?php
/**
 * User: zoulongbo
 * Date: 2018/7/26
 * Time: 11:18
 */

namespace Apicp\Controller\Export;

use Com\PythonExcel;
use Common\Common\Constant;
use Common\Common\ExportDownload;
use Common\Common\User;
use Common\Common\UserCache;
use Common\Common\Vhall;

class WatchDetailsController extends AbstractController
{
    public function Index_post()
    {
        $params = I('post.');

        if (!$params) {
            E('_ERR_PARAMS_CAN_NOT_EMPTY');
        }

        // 获取当前直播数据全部列表
        $watchTotals = Vhall::instance()->exportWatchDetails($params);

        $this->_download($watchTotals, $params);

        return true;
    }


    /**
     * 导出模板
     * @param array $watchTotals 详情
     * @param array $params 请求参数
     * @return bool
     */
    private function _download($watchTotals = [], $params = [])
    {
        // 初始化导出数据
        $file_name = '';
        $title = [];
        $row_data = [];

        if($params['type'] == Constant::TYPE_LIVE_UNWATCH){
            $uids = $watchTotals;
        }else{
            $uids = array_unique(array_column($watchTotals, 'memUid'));
        }

        //获取uid 对应memUsername、jobName、dpName、roleName、memMobile

        $userList = UserCache::get_all_user_by_cache_list($uids);

        // 观看
        if (Constant::TYPE_LIVE_WATCH == $params['type']) {

            $file_name = $params['title'] . '_观看列表' . date('_YmdHi');

            $title = [
                '直播名称',
                '姓名',
                '岗位',
                '组织',
                '角色',
                '手机号',
                '进入时间',
                '观看时长'
            ];
            //print_r($watchTotals);die();
            //组装直播用户数据,添加title
            foreach ($watchTotals as $key => $value) {

                $row_data[] = [
                    $params['title'],
                    $userList[$value['memUid']]['memUsername'],
                    $userList[$value['memUid']]['memJob'],
                    implode(',', array_column($userList[$value['memUid']]['dpName'], 'dpName')),
                    $userList[$value['memUid']]['memRole'],
                    $userList[$value['memUid']]['memMobile'],
                    rgmdate($value['startTime'], 'Y-m-d H:i'),
                    $value['duration']
                ];
            }

        }

        // 回放
        if (Constant::TYPE_LIVE_PLAY_BACK == $params['type']) {

            $file_name = $params['title'] . '_回放列表' . date('_YmdHi');

            $title = [
                '直播名称',
                '姓名',
                '岗位',
                '组织',
                '角色',
                '手机号',
                '进入时间',
                '观看时长'
            ];

            //组装直播用户数据,添加title
            foreach ($watchTotals as $key => $value) {

                $row_data[] = [
                    $params['title'],
                    $userList[$value['memUid']]['memUsername'],
                    $userList[$value['memUid']]['memJob'],
                    implode(',', array_column($userList[$value['memUid']]['dpName'], 'dpName')),
                    $userList[$value['memUid']]['memRole'],
                    $userList[$value['memUid']]['memMobile'],
                    rgmdate($value['startTime'], 'Y-m-d H:i'),
                    $value['duration'].'分钟'
                ];
            }
        }


        // 签到
        if (Constant::TYPE_LIVE_SIGN_IN == $params['type']) {
            $file_name = $params['title'] . '_签到列表' . date('_YmdHi');
            $title = [
                '直播名称',
                '姓名',
                '岗位',
                '组织',
                '角色',
                '手机号',
                '签到时间'
            ];

            //组装直播用户数据,添加title
            foreach ($watchTotals as $key => $value) {

                $row_data[] = [
                    $params['title'],
                    $userList[$value['memUid']]['memUsername'],
                    $userList[$value['memUid']]['memJob'],
                    implode(',', array_column($userList[$value['memUid']]['dpName'], 'dpName')),
                    $userList[$value['memUid']]['memRole'],
                    $userList[$value['memUid']]['memMobile'],
                    rgmdate($value['createTime'], 'Y-m-d H:i'),
                ];
            }
        }


        // 未观看
        if (Constant::TYPE_LIVE_UNWATCH == $params['type']) {

            $file_name = $params['title'] . '_未观看列表' . date('_YmdHi');
            $title = [
                '直播名称',
                '姓名',
                '岗位',
                '组织',
                '角色',
                '手机号'
            ];

            //组装直播用户数据,添加title
            foreach ($watchTotals as $key => $value) {
                $row_data[] = [
                    $params['title'],
                    $userList[$value]['memUsername'],
                    $userList[$value]['memJob'],
                    implode(',', array_column($userList[$value]['dpName'], 'dpName')),
                    $userList[$value]['memRole'],
                    $userList[$value]['memMobile'],
                ];
            }
        }


        // Python导出excel
        $realpath = ExportDownload::get_down_dir($this->_login->user['eaId'] . microtime(true)) . $file_name . ".xls";
        $ret = PythonExcel::instance()->write($realpath, $title, $row_data);
        if ($ret) {

            $conditon = [
                'title' => $file_name,
                'ea_id' => $this->_login->user['eaId'],
                'username' => $this->_login->user['eaRealname'],
                'type' => ExportDownload::EXCEL_TYPE,
                'url' => $realpath
            ];

            ExportDownload::insert_down_load($conditon);
        }

        return true;
    }

}