<?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; } }