<?php

namespace Home\Controller;

use Think\Controller;

class ExportController extends BaseController
{
    public function exportExcel($expTitle, $expCellName, $expTableData)
    {
        $xlsTitle = iconv('utf-8', 'gb2312', $expTitle);//文件名称
//        $fileName = session('promote_auth.account').date('_YmdHis');//or $xlsTitle 文件名称可根据自己情况设定
        $fileName = $expTitle;
        $cellNum = count($expCellName);
        $dataNum = count($expTableData);
        Vendor("PHPExcel.PHPExcel");
        $objPHPExcel = new \PHPExcel();
        $cellName = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'AG', 'AH', 'AI', 'AJ', 'AK', 'AL', 'AM', 'AN', 'AO', 'AP', 'AQ', 'AR', 'AS', 'AT', 'AU', 'AV', 'AW', 'AX', 'AY', 'AZ');
        $objPHPExcel->getActiveSheet(0)->mergeCells('A1:' . $cellName[$cellNum - 1] . '1');//合并单元格
        $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1', $expTitle);
        $objPHPExcel->setActiveSheetIndex(0)->getStyle('A1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
        for ($i = 0; $i < $cellNum; $i++) {
            $objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$i] . '2', $expCellName[$i][1]);
        }
        for ($i = 0; $i < $dataNum; $i++) {
            for ($j = 0; $j < $cellNum; $j++) {
                $objPHPExcel->getActiveSheet(0)->setCellValue($cellName[$j] . ($i + 3), $expTableData[$i][$expCellName[$j][0]]);
            }
        }
        ob_clean();
        header('pragma:public');
        header('Content-type:application/vnd.ms-excel;charset=utf-8;name="' . $xlsTitle . '.xls"');
        header("Content-Disposition:attachment;filename=$fileName.xls");//attachment新窗口打印inline本窗口打印
        $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
        $objWriter->save('php://output');
        exit;
    }

    //导出Excel
    function expUser($id)
    {
        $xlsName = $_REQUEST['xlsname'];
        switch ($id) {
            case 1:
                /* $xlsName = "代充汇总"; */
                $xlsCell = array(
                    array('user_account', '账号'),
                    array('game_name', '游戏名称'),
                    array('pay_order_number', '流水号'),
                    array('amount', '充值金额'),
                    array('real_amount', '实扣金额'),
                    // array('zhekou','折扣比例'),(0未充值 1已充值)
                    array('pay_status', '支付状态'),
                    array('pay_way', '支付方式'),
                    array('create_time', '充值时间'),
                    // array('promote_account','推广员账号'),
                );
                $map['promote_id'] = session('promote_auth.pid');
                if (isset($_REQUEST['user_account'])) {
                    $map['user_account'] = array('like', '%' . $_REQUEST['user_account'] . '%');
                }
                if (isset($_REQUEST['game_id'])) {
                    if ($_REQUEST['game_id'] == '0') {
                        unset($_REQUEST['game_id']);
                    } else {
                        $map['game_id'] = $_REQUEST['game_id'];
                        unset($_REQUEST['game_id']);
                    }
                }

                $start_time = strtotime(I('POST.time_start'));
                $end_time = strtotime(I('POST.time_end'));
                if (!empty($start_time) && !empty($end_time)) {
                    $map['create_time'] = ['BETWEEN', [$start_time, $end_time + 24 * 60 * 60 - 1]];
                    unset($_REQUEST['time_start']);
                    unset($_REQUEST['time_end']);
                } else if (!empty($start_time)) {
                    $map['create_time'] = array('gt', $start_time);
                } else if (!empty($end_time)) {
                    $map['create_time'] = array('lt', $end_time + 24 * 60 * 60 - 1);
                }

                $xlsData = M('agent', 'tab_')
                    ->field("user_account,game_name,amount,real_amount,pay_order_number,pay_status,pay_type,pay_way,FROM_UNIXTIME(create_time,'%Y-%m-%d %H:%i:%s') as create_time")
                    ->where($map)
                    ->order("id desc")
                    ->select();
                foreach ($xlsData as $key => $value) {
                    if ($value['pay_status'] == 1) {
                        $xlsData[$key]['pay_status'] = '成功';
                    }
                    if ($value['pay_status'] == 0) {
                        $xlsData[$key]['pay_status'] = '失败';
                    }
                    $xlsData[$key]['pay_way'] = get_info_status($value['pay_way'], 21);
                }
                break;
            case 2:
                /* $xlsName = "代充记录"; */
                $xlsCell = array(
                    array('promote_account', '代理账号'),
                    array('parent_account', '父级账号'),
                    array('order_number', '流水号'),
                    array('amount', '充值金额'),
                    array('create_time', '充值时间'),
                );
                if (isset($_REQUEST['promote_account']) && $_REQUEST['promote_account'] !== "") {
                    $map['promote_account'] = array("like", "%" . $_REQUEST['promote_account'] . "%");
                    unset($_REQUEST['promote_account']);
                }
                $map['parent_id'] = session('promote_auth.pid');
                $xlsData = M('PayAgents', 'tab_')
                    ->field("promote_account,parent_account,order_number,amount,FROM_UNIXTIME(create_time,'%Y-%m-%d %H:%i:%s') as create_time")
                    ->where($map)
                    ->order("create_time")
                    ->select();
                break;
            case 3:
                /* $xlsName = "购买记录"; */
                $xlsCell = array(
                    array('pay_order_number', '订单号'),
                    array('promote_account', '推广员账号'),
                    array('amount', '充值金额'),
                    array('pay_status', '状态(0 未充值 1 已充值)'),
                    array('create_time', '充值时间'),
                );
                if (isset($_REQUEST['promote_account']) && $_REQUEST['promote_account'] !== "") {
                    $map['promote_account'] = array("like", "%" . $_REQUEST['promote_account'] . "%");
                    unset($_REQUEST['promote_account']);
                }
                $map['promote_id'] = session('promote_auth.pid');
                $map['pay_status'] = 1;
                $xlsData = M('ProSpend', 'tab_')
                    ->field("pay_order_number,promote_account,promote_account,amount,pay_status,FROM_UNIXTIME(create_time,'%Y-%m-%d %H:%i:%s') as create_time")
                    ->where($map)
                    ->select();
                break;
            case 4:
                /* $xlsName = "充值明细"; */
                $xlsCell = array(
                    array('id', 'ID'),
                    array('user_account', '玩家账号'),
                    array('pay_order_number', '订单号'),
                    array('game_name', '游戏名称'),
                    array('server_name', '区服'),
                    array('cost', '应付金额'),
                    array('pay_amount', '实付金额'),
                    array('pay_time', '充值时间'),
                    array('pay_way', '充值方式'),
                    array('promote_account', '推广员账号'),
                );
                $pro_id = get_prmoote_chlid_account(session('promote_auth.pid'));
                foreach ($pro_id as $key => $value) {
                    $pro_id1[] = $value['id'];
                }
                if (!empty($pro_id1)) {
                    $pro_id2 = array_merge($pro_id1, array(get_pid()));
                } else {
                    $pro_id2 = array(get_pid());
                }
                $map['promote_id'] = array('in', $pro_id2);
                if (I('request.version', 1) == 1) {
                    $map['pay_way'] = array('neq', -1);
                } else {
                    $map['pay_way'] = array('eq', -1);
                }
                if (isset($_REQUEST['user_account']) && trim($_REQUEST['user_account'])) {
                    $map['user_account'] = array('like', '%' . $_REQUEST['user_account'] . '%');
                    unset($_REQUEST['user_account']);
                }
                if (isset($_REQUEST['game_appid']) && !empty($_REQUEST['game_appid'])) {
                    $map['game_id'] = $_REQUEST['game_appid'];
                }
                if ($_REQUEST['promote_id'] > 0) {
                    $map['promote_id'] = $_REQUEST['promote_id'];
                }
                if (!empty($_REQUEST['time-start']) && !empty($_REQUEST['time-end'])) {
                    $map['pay_time'] = array('BETWEEN', array(strtotime($_REQUEST['time-start']), strtotime($_REQUEST['time-end']) + 24 * 60 * 60 - 1));
                    unset($_REQUEST['time-start']);
                    unset($_REQUEST['time-end']);
                }
                if (!empty($_REQUEST['start']) && !empty($_REQUEST['end'])) {
                    $map['pay_time'] = array('BETWEEN', array(strtotime($_REQUEST['start']), strtotime($_REQUEST['end']) + 24 * 60 * 60 - 1));
                    unset($_REQUEST['start']);
                    unset($_REQUEST['end']);
                }
                $map['pay_status'] = 1;
                $map['is_check'] = array('neq', 2);
                $xlsData = M('Spend', 'tab_')
                    ->field("tab_spend.*,FROM_UNIXTIME(pay_time,'%Y-%m-%d %H:%i:%s') as pay_time")
                    ->where($map)
                    ->order('id desc,pay_time desc')
                    ->select();
                foreach ($xlsData as $key => $value) {
                    $xlsData[$key]['pay_way'] = get_pay_way($value['pay_way']);
                }
                break;
            case 5:
                /* $xlsName = "我的游戏"; */
                if (I('check') == 1) {
                    $xlsCell = array(
                        array('game_name', '游戏名称'),
                        array('sdk_version', '平台'),
                        array('banben', '版本号'),
                        array('game_size', '包的大小'),
                        array('apply_time', '更新时间'),
                        array('launch', '投放平台'),
                        // array('game_type_name', '类型'),
                        array('tmoney', '注册单价'),
                        array('tratio', '分成比例'),
                        array('launch_time', '投放创建时间'),
                        array('down_url', '下载链接'),
                        array('tui_url', '推广链接'),
                        // array('status', '状态(0待审核 1已审核)'),//(0待审核 1已审核 2 审核失败)
                    );
                } else {
                    $xlsCell = array(
                        array('game_name', '游戏名称'),
                        array('sdk_version', '平台'),
                        array('banben', '版本号'),
                        array('game_size', '包的大小'),
                        array('apply_time', '更新时间'),
                        array('launch', '投放平台'),
                        // array('game_type_name', '类型'),
                        array('tmoney', '注册单价'),
                        array('tratio', '分成比例'),
                        array('launch_time', '投放创建时间'),
                        // array('status', '状态(0待审核 1已审核)'),//(0待审核 1已审核 2 审核失败)
                    );
                }

                if ($_REQUEST['game_id'] != null) {
                    $map['tab_apply.game_id'] = $_REQUEST['game_id'];
                }
                $map['tab_game.game_status'] = 1;//游戏状态
                $map['promote_id'] = session("promote_auth.pid");
                if (I('type', -2) < 0) {
                    unset($map['status']);
                } else {
                    $map['status'] = $_REQUEST['type'];
                }
                if (I('check') == 1) {
                    $map['status'] = 1;
                } else {
                    $map['status'] = 0;
                }
                empty(I('sdk_version')) || $map['tab_game.sdk_version'] = I('sdk_version');
                $xlsData = M("game", "tab_")
                    ->field("tab_game.*,al.platform_id,al.launch_time,al.position,tab_apply.id as applyid,tab_apply.promote_id,tab_apply.promote_account,tab_apply.status,tab_apply.ratio as tratio,tab_apply.money as tmoney,tab_game.sdk_version")
                    ->join("tab_apply ON tab_game.id = tab_apply.game_id and tab_apply.promote_id = " . session('promote_auth.pid'))
                    ->join('left join tab_apply_launch as al  on (al.apply_id = tab_apply.id) ')
                    ->order("apply_time desc,id desc")
                    // 查询条件
                    ->where($map)
                    ->select();

                foreach ($xlsData as $key => $value) {
                    $xlsData[$key]['tratio'] = $value['tratio'] . '%';
                    $res = M('game_source', 'tab_')->where(['game_id' => $value['id']])->find();
                    if ($res['version']) {
                        $xlsData[$key]['banben'] = $res['version'];
                    } else {
                        $xlsData[$key]['banben'] = '无';
                    }
                    if ($res['create_time']) {
                        $xlsData[$key]['apply_time'] = date('Y-m-d', $res['create_time']);
                    } else {
                        $xlsData[$key]['apply_time'] = '无';
                    }
                    if ($value['sdk_version'] == 1) {
                        $xlsData[$key]['sdk_version'] = '安卓';
                    } else {
                        $xlsData[$key]['sdk_version'] = '苹果';

                    }

                    $xlsData[$key]['launch'] = get_launch_platform_name($value['platform_id'], '--');

                    $xlsData[$key]['launch_time'] = $value['launch_time'] > 0 ? date('Y-m-d', $value['launch_time']) : '--';

                    if (I('check') == 1) {
                        $xlsData[$key]['down_url'] = 'http://' . $_SERVER['HTTP_HOST'] . U('Down/launch_down_file', array('platform_id' => $value['platform_id'], 'position' => $value['position'], 'game_id' => $value['id'], 'promote_id' => $map['promote_id']));
                        $xlsData[$key]['tui_url'] = 'http://' . $_SERVER['HTTP_HOST'] . U('Home/promotionofregistration', ['pid' => $map['promote_id'], 'gid' => $value['id'], 'lid' => $value['platform_id'], 'p' => $value['position']]);
                    }

                }

                break;
            case 6:
                /* $xlsName = "注册明细"; */
                $xlsCell = array(
                    array('id', 'ID'),
                    array('account', '玩家账号'),
                    array('fgame_name', '游戏名称'),
                    array('server_name', '区服'),
                    array('register_time', '注册日期'),
                    array('register_ip', '注册IP'),
                    array('promote_account', '推广员账号'),
                );
                $pro_id = get_prmoote_chlid_account(session('promote_auth.pid'));
                foreach ($pro_id as $key => $value) {
                    $pro_id1[] = $value['id'];
                }
                if (!empty($pro_id1)) {
                    $pro_id2 = array_merge($pro_id1, array(get_pid()));
                } else {
                    $pro_id2 = array(get_pid());
                }
                $map['promote_id'] = array('in', $pro_id2);
                if (isset($_REQUEST['account']) && trim($_REQUEST['account'])) {
                    $map['account'] = array('like', '%' . $_REQUEST['account'] . '%');
                    unset($_REQUEST['user_account']);
                }
                if (isset($_REQUEST['game_appid']) && $_REQUEST['game_appid'] != 0) {
                    $map['fgame_id'] = $_REQUEST['game_appid'];
                }
                if ($_REQUEST['promote_id'] > 0) {
                    $map['promote_id'] = $_REQUEST['promote_id'];
                }
                if (!empty($_REQUEST['time_start']) && !empty($_REQUEST['time_end'])) {
                    $map['register_time'] = array('BETWEEN', array(strtotime($_REQUEST['time_start']), strtotime($_REQUEST['time_end']) + 24 * 60 * 60 - 1));
                }
                if (!empty($_REQUEST['start']) && !empty($_REQUEST['end'])) {
                    $map['register_time'] = array('BETWEEN', array(strtotime($_REQUEST['start']), strtotime($_REQUEST['end']) + 24 * 60 * 60 - 1));
                }
                $map['is_check'] = array('neq', 2);
                $xlsData = M("User", "tab_")
                    ->field("tab_user.*,FROM_UNIXTIME(register_time,'%Y-%m-%d %H:%i:%s') as register_time")
                    // 查询条件
                    ->where($map)->order('id desc')
                    ->select();
                foreach ($xlsData as $k => $v) {
                    if (!empty($xlsData[$k]['fgame_id'])) {
                        $sName = M('UserPlay', 'tab_')
                            ->where(array('user_id' => $data[$k]['id'], 'game_id' => $data[$k]['fgame_id']))
                            ->order('id desc')
                            ->getField('server_name');
                        $xlsData[$k]['server_name'] = empty($sName) ? "--" : $sName;
                    }
                }
                break;
            case 7:
                /* $xlsName = "我的对账单"; */
                $xlsCell = array(
                    array('bill_number', '对账单号'),
                    array('bill_time', '对账单时间'),
                    array('promote_account', '所属渠道'),
                    array('game_name', '游戏名称'),
                    array('total_money', '充值总额'),
                    array('total_number', '注册人数'),
                    array('status', '状态(0未对账;1已对账)'),
                );
                $map['promote_id'] = get_pid();
                if (isset($_REQUEST['bill_number']) && !empty($_REQUEST['bill_number'])) {
                    $map['bill_number'] = $_REQUEST['bill_number'];
                }
                if (isset($_REQUEST['game_id']) && !empty($_REQUEST['game_id'])) {
                    $map['game_id'] = $_REQUEST['game_id'];
                }
                if (!empty($_REQUEST['timestart']) && !empty($_REQUEST['timeend'])) {
                    $map['bill_start_time'] = array('egt', strtotime($_REQUEST['timestart']));
                    $map['bill_end_time'] = array('elt', strtotime($_REQUEST['timeend']) + 24 * 3600 - 1);
                }
                $xlsData = M("Bill", "tab_")
                    ->field("tab_bill.*")
                    // 查询条件
                    ->where($map)
                    ->select();
                break;
            case 8:
                /* $xlsName = "平台入账记录"; */
                $xlsCell = array(
                    array('id', 'ID'),
                    array('create_time', '发放时间'),
                    array('num', '平台币数量'),
                    array('source_id', '平台币来源'),
                );
                $map['type'] = 1;
                $map['promote_id'] = session('promote_auth.pid');
                $end_time = strtotime(I('time_end'));
                $start_time = strtotime(I('time_start'));
                if (!empty($_REQUEST['time_start']) && !empty($_REQUEST['time_end'])) {
                    $map['create_time'] = array('BETWEEN', array(strtotime($_REQUEST['time_start']), strtotime($_REQUEST['time_end']) + 24 * 60 * 60 - 1));
                } elseif (!empty($_REQUEST['time_start']) && empty($_REQUEST['time_end'])) {
                    $map['create_time'] = array('egt', strtotime($_REQUEST['time_start']));
                } elseif (empty($_REQUEST['time_start']) && !empty($_REQUEST['time_end'])) {
                    $map['create_time'] = array('elt', strtotime($_REQUEST['time_end']) + 24 * 60 * 60 - 1);
                }
                $xlsData = D('PromoteCoin')->where($map)->order('create_time desc')->select();
                foreach ($xlsData as $k => $v) {
                    $xlsData[$k]['create_time'] = time_format($v['create_time']);
                    $xlsData[$k]['source_id'] = get_status_text(4, $v['source_id']);
                }
                break;
            case 9:
                /* $xlsName = "平台转移记录"; */
                $xlsCell = array(
                    array('id', 'ID'),
                    array('create_time', '转移时间'),
                    array('num', '平台币数量'),
                    array('source_id', '转移账号'),
                );
                $map['source_id'] = empty(I('promote_id')) ? ['neq', '0'] : I('promote_id');
                $map['type'] = 2;
                $map['promote_id'] = PID;
                $end_time = strtotime(I('time_end'));
                $start_time = strtotime(I('time_start'));
                if (!empty($end_time) && !empty($start_time)) {
                    $map['create_time'] = ['between', [$start_time, $end_time + 86400 - 1]];
                } elseif (!empty($start_time)) {
                    $map['create_time'] = array('gt', $start_time);
                } elseif (!empty($end_time)) {
                    $map['create_time'] = array('lt', $end_time + 86400 - 1);
                }

                $xlsData = D('PromoteCoin')->where($map)->order('create_time desc')->select();
                foreach ($xlsData as $k => $v) {
                    $xlsData[$k]['create_time'] = time_format($v['create_time']);
                    $xlsData[$k]['source_id'] = get_promote_account($v['source_id']);
                }
                break;
            case 10:
                /* $xlsName = "子渠道游戏"; */
                $xlsCell = array(
                    array('promote_account', '子渠道账号'),
                    array('game_name', '游戏名称'),
                    array('sdk_version', '平台'),
                    array('game_type_name', '类型'),
                    array('game_size', '包的大小'),
                    array('dispose_time', '审核时间'),
                    array('launch', '投放平台'),
                    array('tmoney', '注册单价'),
                    array('tratio', '分成比例'),
                );
                if ($_REQUEST['game_id'] != null) {
                    $map['tab_apply.game_id'] = $_REQUEST['game_id'];
                }

                $map['promote_id'] = get_promote_child_ids(session("promote_auth.pid"));
                $map['promote_id'] = array_map('array_shift', $map['promote_id']);
                $map['promote_id'] = implode(',', $map['promote_id']);
                if ($map['promote_id']) {
                    $map['promote_id'] = ['in', $map['promote_id']];
                } else {
                    $map['promote_id'] = -1;
                }
                if ($_REQUEST['promote_id'] != null) {
                    $map['tab_apply.promote_id'] = $_REQUEST['promote_id'];
                }

                $map['status'] = 1;
                empty(I('sdk_version')) || $map['tab_game.sdk_version'] = I('sdk_version');
                $xlsData = M("game", "tab_")
                    ->field("tab_game.*,al.platform_id,al.position,al.launch_time,tab_apply.promote_id,tab_game.sdk_version,tab_apply.promote_account,tab_apply.status,FROM_UNIXTIME(dispose_time,'%Y-%m-%d %H:%i:%s') as dispose_time,tab_apply.ratio as tratio,tab_apply.money as tmoney")
                    ->join("tab_apply ON tab_game.id = tab_apply.game_id ")
                    ->join('left join tab_apply_launch as al on (al.apply_id = tab_apply.id)')
                    ->order("id desc")
                    // 查询条件
                    ->where($map)
                    ->select();
                foreach ($xlsData as $key => $value) {
                    $xlsData[$key]['tratio'] = $value['tratio'] . '%';
                    if ($value['sdk_version'] == 1) {
                        $xlsData[$key]['sdk_version'] = '安卓';
                    } else {
                        $xlsData[$key]['sdk_version'] = '苹果';

                    }

                    $xlsData[$key]['launch'] = get_launch_platform_name($value['platform_id'], '--');

                    $xlsData[$key]['launch_time'] = $value['launch_time'] > 0 ? date('Y-m-d', $value['launch_time']) : '--';

                }
                break;
            case 11:

                $xlsCell = array(
                    array('id', '推广员ID'),
                    array('account', '推广员账号'),
                    array('register_user', '注册用户'),
                    array('register_ip', '注册IP数'),
                    array('dabiao_user', '达标用户'),
                    array('dabiao_game', '达标游戏'),
                    array('spend', '移动端充值人数'),
                    array('and_spend', '安卓充值'),
                    array('ios_spend', '苹果充值'),
                );
                $page = intval($p);
                $page = $page ? $page : 1; //默认显示第一页数据arraypage
                $arraypage = $page ? $page : 1; //默认显示第一页数据
                $size = 10;
                $uid = session('promote_auth.pid');

                if (isset($_REQUEST['game_id']) && !empty($_REQUEST['game_id'])) {
                    $game_id = M('game', 'tab_')->field('id')->where(array('relation_game_id' => $_REQUEST['game_id']))->select();
                    $game_id = array_map('array_shift', $game_id);
                    $umap['fgame_id'] = $gmap['game_id'] = $g_map['id'] = array('in', $game_id);
                    // unset($_REQUEST['game_id']);
                }

                if (isset($_REQUEST['promote_id']) && !empty($_REQUEST['promote_id']) && !empty($_REQUEST['promote_account']) && isset($_REQUEST['promote_account'])) {
                    if ($_REQUEST['promote_id'] != $_REQUEST['promote_account']) {
                        $this->error('渠道ID与渠道账号不匹配');
                    } else {
                        $map['id'] = $_REQUEST['promote_id'];
                    }
                    unset($_REQUEST['promote_id']);
                    unset($_REQUEST['promote_account']);
                } elseif (isset($_REQUEST['promote_id']) && !empty($_REQUEST['promote_id'])) {
                    $map['id'] = $_REQUEST['promote_id'];
                    unset($_REQUEST['promote_id']);
                } elseif (isset($_REQUEST['promote_account']) && !empty($_REQUEST['promote_account'])) {
                    $map['id'] = $_REQUEST['promote_account'];
                    unset($_REQUEST['promote_account']);
                } else {
                    $map['parent_id'] = $uid;
                    $map['id'] = $uid;
                    $map['_logic'] = 'or';
                }

                if (isset($_REQUEST['server_name']) && !empty($_REQUEST['server_name'])) {
                    $smap['server_name'] = $gmap['server_name'] = $dmap['server_name'] = $_REQUEST['server_name'];
                    unset($_REQUEST['server_name']);
                }
                if (isset($_REQUEST['game_level']) && !empty($_REQUEST['game_level'])) {
                    $gamedata = M('game', 'tab_')->field('first_level,first_level_name,second_level_name,second_level,third_level,third_level_name')->where(array('relation_game_id' => $_REQUEST['game_id']))->find();
                    if ($gamedata['first_level_name'] == $_REQUEST['game_level']) {
                        $dmap['role_level'] = array('egt', $gamedata['first_level']);
                    } elseif ($gamedata['second_level_name'] == $_REQUEST['game_level']) {
                        $dmap['role_level'] = array('egt', $gamedata['second_level']);
                    } elseif ($gamedata['third_level_name'] == $_REQUEST['game_level']) {
                        $dmap['role_level'] = array('egt', $gamedata['third_level']);
                    }
                    unset($_REQUEST['game_level']);
                }
                if (isset($_REQUEST['begtime']) && isset($_REQUEST['endtime']) && !empty($_REQUEST['begtime']) && !empty($_REQUEST['endtime'])) {
                    $gmap['register_time'] = $umap['register_time'] = $smap['pay_time'] = $dmap['play_time'] = array('BETWEEN', [strtotime($_REQUEST['begtime']), strtotime($_REQUEST['endtime']) + 86400]);
                    unset($_REQUEST['begtime']);
                    unset($_REQUEST['endtime']);
                } elseif (isset($_REQUEST['begtime']) && !empty($_REQUEST['begtime'])) {
                    $gmap['register_time'] = $umap['register_time'] = $smap['pay_time'] = $dmap['play_time'] = array('BETWEEN', [strtotime($_REQUEST['begtime']), date("Y-m-d", strtotime("-1 day"))]);
                    unset($_REQUEST['begtime']);
                } elseif (isset($_REQUEST['endtime']) && !empty($_REQUEST['endtime'])) {
                    $gmap['register_time'] = $umap['register_time'] = $smap['pay_time'] = $dmap['play_time'] = array('ELT', strtotime($_REQUEST['endtime']) + 86400);
                    unset($_REQUEST['endtime']);
                }
                //子渠道
                $child = M('promote', 'tab_')
                    ->field('id,account')
                    ->where($map)
                    /* ->page($page,$size) */
                    ->select();
                /* $count = count($child);
                 $this->assign("count",$count);
                 if($count > $size){
                    $page = new \Think\Page($count, $size);
                    $page->setConfig('theme','%FIRST% %UP_PAGE% %LINK_PAGE% %DOWN_PAGE% %END% %HEADER%');
                    $this->assign('_page', $page->show());
                } */
                foreach ($child as $k3 => $v3) {
                    if ($child[$k3]['id'] == PID) {
                        $child[$k3]['gid'] = PID;
                    } else {
                        $child[$k3]['gid'] = M('promote', 'tab_')->field('id')->where(array('parent_id' => $child[$k3]['id']))->select();
                        $child[$k3]['gid'] = array_map('array_shift', $child[$k3]['gid']);
                        array_push($child[$k3]['gid'], $child[$k3]['id']);
                    }
                    $child[$k3]['register_user'] = M('user', 'tab_')
                        ->field('id')
                        ->where($umap)
                        ->where(array('promote_id' => array('in', $child[$k3]['gid']), 'puid' => 0))
                        ->count();
                    $child[$k3]['new_user'] = M('user', 'tab_')
                        ->field('id')
                        ->where($umap)
                        ->where(array('promote_id' => array('in', $child[$k3]['gid']), 'puid' => 0))
                        ->group('register_ip')
                        ->select();
                    $child[$k3]['new_user'] = count($child[$k3]['new_user']);
                    $child[$k3]['register_ip'] = M('user', 'tab_')
                        ->field('register_ip')
                        ->where($umap)
                        ->where(array('promote_id' => array('in', $child[$k3]['gid']), 'puid' => 0))
                        ->group('register_ip')
                        ->select();
                    $child[$k3]['register_ip'] = count($child[$k3]['register_ip']);
                    $game1 = M('apply', 'tab_')
                        ->field('game_id')
                        ->where($gmap)
                        ->where(array('promote_id' => array('in', $child[$k3]['gid']), 'status' => 1))
                        ->group('game_id')
                        ->select();
                    $game_count1 = count($game1);
                    $dabiao_user1 = 0;
                    $dabiao_game1 = 0;
                    for ($j = 0; $j <= $game_count1; $j++) {
                        $game_level = M('game', 'tab_')->field('first_level')->where(array('id' => $game1[$j]['game_id']))->find();
                        if ($dmap['role_level']) {
                            $game_level['first_level'] = $dmap['role_level'][1];
                        }
                        $dabiao1 = M('user_play_info', 'tab_')
                            ->field('user_id')
                            ->where($dmap)
                            ->where(array('game_id' => $game1[$j]['game_id'], 'role_level' => array('egt', $game_level['first_level']), 'promote_id' => array('in', $child[$k3]['gid'])))
                            ->group('user_id')
                            ->select();
                        $dabiao1 = count($dabiao1);
                        if ($dabiao1 > 0) {
                            $dabiao_game1++;
                        }
                        $dabiao_user1 += $dabiao1;
                    }
                    $child[$k3]['dabiao_user'] = $dabiao_user1;
                    /*$dabiao_game1 = 0;
                    for($k=0;$k<=$game_count1;$k++){
                         $game_level = M('game','tab_')->field('first_level')->where(array('id'=>$game1[$k]['game_id']))->find();
                         if($dmap['role_level']){
                            $game_level['first_level'] = $dmap['role_level'][1];
                         }
                        $gdabiao = M('user_play_info','tab_')
                                ->field('user_id')
                                ->where($dmap)
                                ->where(array('game_id'=>$game1[$k]['game_id'],'role_level'=>array('egt',$game_level['first_level']),'promote_id'=>array('in',$v3['id'])))
                                ->group('user_id')
                                ->select();
                        $gdabiao = count($gdabiao);
                        $dabiao_game1 += $gdabiao;
                    }*/
                    $child[$k3]['dabiao_game'] = $dabiao_game1;
                    $child[$k3]['spend'] = M('spend', 'tab_')
                        ->field('user_id')
                        ->where($gmap)
                        ->where(array('promote_id' => array('in', $child[$k3]['gid']), 'pay_status' => 1))
                        ->group('user_id')
                        ->select();
                    $child[$k3]['spend'] = count($child[$k3]['spend']);
                    $child[$k3]['and_spend'] = M('spend', 'tab_')
                        ->field('sum(pay_amount) as amount ')
                        ->where($gmap)
                        ->where(array('promote_id' => array('in', $child[$k3]['gid']), 'pay_status' => 1, 'sdk_version' => 1))
                        ->select();
                    $child[$k3]['and_spend'] = array_map('array_shift', $child[$k3]['and_spend'])[0];
                    $child[$k3]['ios_spend'] = M('spend', 'tab_')
                        ->field('sum(pay_amount) as amount ')
                        ->where($gmap)
                        ->where(array('promote_id' => array('in', $child[$k3]['gid']), 'pay_status' => 1, 'sdk_version' => 2))
                        ->select();
                    $child[$k3]['ios_spend'] = array_map('array_shift', $child[$k3]['ios_spend'])[0];
                }
                $xlsData = $child;
                foreach ($xlsData as $key1 => $value1) {
                    $xlsData[$key]['register_user'] = IsNull($value1['register_user']);
                    $xlsData[$key1]['register_ip'] = IsNull($value1['register_ip']);
                    $xlsData[$key1]['dabiao_user'] = IsNull($value1['dabiao_user']);
                    $xlsData[$key1]['dabiao_game'] = IsNull($value1['dabiao_game']);
                    $xlsData[$key1]['spend'] = IsNull($value1['spend']);
                    $xlsData[$key1]['and_spend'] = null_to_0($value1['and_spend']);
                    $xlsData[$key1]['ios_spend'] = null_to_0($value1['ios_spend']);
                }
                break;
        }
        $this->exportExcel($xlsName, $xlsCell, $xlsData);
    }


    /*
     * 子渠道列表
     * @author 鹿文学
     */
    public function child($p = 1)
    {
        $xlsName = $_REQUEST['xlsname'];


        $xlsCell = array(
            array('id', '账号ID'),
            array('account', '子渠道'),
            array('status', '状态'),
            array('create_time', '创建时间'),
        );

        if ($_REQUEST['account'] != null) {
            $map['account'] = array('like', '%' . $_REQUEST['account'] . '%');
        }
        $map['parent_id'] = session("promote_auth.pid");

        $page = intval($p);

        $page = $page ? $page : 1;

        $row = !empty($_REQUEST['row']) ? $_REQUEST['row'] : 10;

        $data = M('Promote', 'tab_')->where($map)->page($page, $row)->select();

        foreach ($data as $k => $v) {
            $data[$k]['create_time'] = date('Y-m-d H:i:s', $v['create_time']);
            $data[$k]['status'] = $v['status'] == 1 ? '启用' : '禁用';
        }

        $xlsData = $data;

        $this->exportExcel($xlsName, $xlsCell, $xlsData);
    }

    /*
     * ARPU统计
     * @author 鹿文学
     */
    public function arpu_analysis($p = 1)
    {
        $xlsName = $_REQUEST['xlsname'];


        $xlsCell = array(
            array('activeUsers', '活跃用户'),
            array('newUsers', '新增用户'),
            array('payUsers', '付费用户'),
            array('newPayUsers', '新增付费用户'),
            array('usersIncome', '付费总额'),
            array('usersPayRate', '付费率'),
            array('newPaySum', '新增付费额'),
            array('totalPayUsers', '累计付费用户'),
            array('ratentionRate1', '1日留存'),
            array('usersArpu', 'ARPU'),
            array('usersArppu', 'ARPPU'),
        );

        if (!empty($_REQUEST['promote_id'])) {
            array_unshift($xlsCell, array('promote_account', '所属渠道'));
        }

        if (!empty($_REQUEST['game_id'])) {

            array_unshift($xlsCell, array('game_name', '游戏名称'));

        } else {
            array_unshift($xlsCell, array('payGame', '付费游戏数'));
        }

        array_unshift($xlsCell, array('time', '日期'));


        if (is_file(dirname(__FILE__) . '/arpu' . PID . '.txt')) {

            $filetxt = file_get_contents(dirname(__FILE__) . '/arpu' . PID . '.txt');

            $data = json_decode($filetxt, true);

        } else {

            $data = A('User', 'Event')->arpu_analysis_data();


        }


        foreach ($data as $k => $v) {

            $v['time'] = $k;

            empty($_REQUEST['promote_account']) || $v['promote_account'] = $_REQUEST['promote_account'];
            empty($_REQUEST['game_name']) || $v['game_name'] = $_REQUEST['game_name'];
            empty($v['newPaySum']) && $v['newPaySum'] = '0.00';

            $xlsData[] = $v;

        }

        $this->exportExcel($xlsName, $xlsCell, $xlsData);
    }

    /*
     * ARPU统计详情
     * @author 鹿文学
     */
    public function arpu_analysis_detail($p = 1)
    {
        $xlsName = $_REQUEST['xlsname'];


        $xlsCell = array(
            array('game_name', '游戏名称'),
            array('register_num', '新增玩家'),
            array('act_user', '活跃玩家'),
            array('keep_num', '1日留存'),
            array('spend', '充值金额'),
            array('spend_people', '付费玩家'),
            array('spend_news', '新付费玩家'),
            array('spend_rate', '付费率'),
            array('ARPU', 'ARPU'),
            array('ARPPU', 'ARPPU'),
        );

        if (is_file(dirname(__FILE__) . '/arpu_detail' . PID . '.txt')) {

            $filetxt = file_get_contents(dirname(__FILE__) . '/arpu_detail' . PID . '.txt');

            $data = json_decode($filetxt, true);

        } else {

            $data = A('User', 'Event')->arpu_analysis_detail_data();


        }


        foreach ($data as $k => $v) {


            $v['ARPU'] = number_format($v['ARPU'], 2);
            $v['ARPPU'] = number_format($v['ARPPU'], 2);

            $xlsData[] = $v;

        }

        $this->exportExcel($xlsName, $xlsCell, $xlsData);
    }


    /*
     * 留存统计
     * @author 鹿文学
     */
    public function retention_analysis($p = 1)
    {
        $xlsName = $_REQUEST['xlsname'];


        $xlsCell = array(
            array('newUsers', '新增玩家'),
            array('ratentionRate1', '1日留存'),
            array('ratentionRate2', '2日留存'),
            array('ratentionRate3', '3日留存'),
            array('ratentionRate4', '4日留存'),
            array('ratentionRate5', '5日留存'),
            array('ratentionRate6', '6日留存'),
            array('ratentionRate7', '7日留存'),
            array('ratentionRate15', '15日留存'),
            array('ratentionRate30', '30日留存'),
        );

        if (!empty($_REQUEST['promote_id'])) {
            array_unshift($xlsCell, array('promote_account', '所属渠道'));
        }

        if (!empty($_REQUEST['game_id'])) {

            array_unshift($xlsCell, array('game_name', '游戏名称'));

        }

        array_unshift($xlsCell, array('time', '日期'));


        if (is_file(dirname(__FILE__) . '/retention' . PID . '.txt')) {

            $filetxt = file_get_contents(dirname(__FILE__) . '/retention' . PID . '.txt');

            $data = json_decode($filetxt, true);

        } else {

            $data = A('User', 'Event')->retention_analysis_data();


        }


        foreach ($data as $k => $v) {

            $v['time'] = $k;

            empty($_REQUEST['promote_account']) || $v['promote_account'] = $_REQUEST['promote_account'];
            empty($_REQUEST['game_name']) || $v['game_name'] = $_REQUEST['game_name'];

            $xlsData[] = $v;

        }

        $this->exportExcel($xlsName, $xlsCell, $xlsData);
    }

    /*
     * 我的结算
     * @author 鹿文学
     */
    public function earning($p = 1)
    {
        $xlsName = $_REQUEST['xlsname'];


        $xlsCell = array(
            array('time', '结算周期'),
            array('settlement_number', '结算单号'),
            array('total_money', '总充值'),
            array('total_number', '总注册'),
            array('sum_money', '结算金额'),
            array('bind_coin_status', '结算范围'),
            array('create_time', '结算时间'),
        );

        if (is_file(dirname(__FILE__) . '/earning' . PID . '.txt')) {

            $filetxt = file_get_contents(dirname(__FILE__) . '/earning' . PID . '.txt');

            $data = json_decode($filetxt, true);

        } else {

            $data = A('User', 'Event')->earning_data();


        }


        foreach ($data as $k => $v) {

            if (is_numeric($k)) {
                $v['time'] = date('Y-m-d', $v['starttime']) . '至' . date('Y-m-d', $v['endtime']);
                $v['bind_coin_status'] = $v['bind_coin_status'] == 0 ? '排除绑币' : '包含绑币';
                $v['create_time'] = date('Y-m-d', $v['create_time']);

            } else {
                $v['time'] = $k;
                $v['settlement_number'] = '--';
                $v['total_money'] = '--';
                $v['total_number'] = '--';
                $v['bind_coin_status'] = '--';
                $v['create_time'] = '--';
            }

            $xlsData[] = $v;

        }

        $this->exportExcel($xlsName, $xlsCell, $xlsData);
    }

    /*
     * 我的结算详情
     * @author 鹿文学
     */
    public function earning_detail()
    {
        $xlsName = $_REQUEST['xlsname'];


        $xlsCell = array(
            array('time', '结算周期'),
            array('game_name', '游戏名称'),
            array('total_money', '总充值'),
            array('total_number', '总注册'),
            array('pattern', '结算模式'),
            array('ratio', '分成比例'),
            array('money', '注册单价'),
            array('sum_money', '结算金额'),
        );

        if (is_file(dirname(__FILE__) . '/earning_detail' . PID . '.txt')) {

            $filetxt = file_get_contents(dirname(__FILE__) . '/earning_detail' . PID . '.txt');

            $data = json_decode($filetxt, true);

        } else {

            $data = A('User', 'Event')->earning_detail_data();


        }


        foreach ($data as $k => $v) {

            if (is_numeric($k)) {
                $v['time'] = date('Y-m-d', $v['starttime']) . '至' . date('Y-m-d', $v['endtime']);
                $v['pattern'] = get_pattern($v['pattern']);

            } else {
                $v['time'] = $k;
                $v['total_number'] = '--';
                $v['total_money'] = '--';
                $v['pattern'] = '--';
                $v['ratio'] = '--';
                $v['money'] = '--';
                $v['game_name'] = '--';
            }

            $xlsData[] = $v;

        }

        $this->exportExcel($xlsName, $xlsCell, $xlsData);
    }


    /*
     * 游戏列表
     * @author 鹿文学
     */
    public function game_lists()
    {
        $xlsName = $_REQUEST['xlsname'];


        $xlsCell = array(
            array('relation_game_name', '游戏名称'),
            array('sdk_version', '平台'),
            array('version', '版本号'),
            array('game_size', '包的大小'),
            array('time', '更新时间'),
            array('money', '注册单价'),
            array('ratio', '分成比例'),
        );


        if (isset($_REQUEST['game_name'])) {
            $map['tab_game.game_name'] = array('like', '%' . $_REQUEST['game_name'] . '%');
        }
        empty(I('game_id')) || $map['tab_game.id'] = I('game_id');
        empty(I('sdk_version')) || $map['tab_game.sdk_version'] = I('sdk_version');

        if ($_REQUEST['enable_status'] != "") {
            if ($_REQUEST['enable_status'] == 0) {
                $map['enable_status'] = array(array('EXP', 'IS NULL'), 0, 'OR');

            } else {
                $map['enable_status'] = I('enable_status');
            }

        }

        $map['tab_game.online_status'] = 1;//开发者游戏上线状态
        $map['tab_game.down_port'] = 1;//游戏端口 第三方接口不能申请
        $map['tab_game.game_status'] = 1;//游戏状态

        $data = M("game", "tab_")
            /* 查询指定字段,不指定则查询所有字段 */
            ->field("tab_game.id,tab_game.game_size,tab_game.game_name,tab_game.money,tab_game.sdk_version,tab_game.ratio,tab_game.icon,tab_game.game_type_name,tab_game.recommend_status,promote_id,status,tab_apply.dow_status,tab_apply.plist_url,tab_apply.id as applyid,enable_status,tab_game.sort,tab_game.relation_game_id,tab_game.relation_game_name,tg.relation_game_id as trelation_game_id,tg.id as tid,tg.sdk_version as tsdk_version,tg.game_size as tgame_size,tg.money as tmoney,tg.ratio as tratio,dispose_time")
            ->join("tab_apply ON tab_game.id = tab_apply.game_id and tab_apply.promote_id = " . get_pid(), "LEFT")
            ->join("left join tab_game as tg ON (tab_game.id = tg.relation_game_id and tg.game_status = 1 and tab_game.id!=tab_game.relation_game_id) or (tab_game.id = tg.relation_game_id  and tab_game.id!=tg.id and tg.game_status = 1) or (tab_game.id!=tab_game.relation_game_id and tab_game.relation_game_id=tg.id and tab_game.game_status=1)")
            // 查询条件
            ->where($map)
            /* 默认通过id逆序排列 */
            ->order("sort asc,enable_status desc, id desc")
            ->group("relation_game_id")
            /* 数据分页 */
            ->page($page, $row)
            /* 执行查询 */
            ->select();
        $applymodel = M('apply', 'tab_');
        $gamesource = M('game_source', 'tab_');
        foreach ($data as $key => $value) {
            $data[$key]['plist_url'] = !empty($data[$key]['plist_url']) ? 'https://' . $_SERVER['HTTP_HOST'] . substr($data[$key]['plist_url'], 1) : '';
            $data[$key]['applyid'] = empty($data[$key]['applyid']) ? 0 : $data[$key]['applyid'];


            if ($value['sdk_version'] == 2 && $value['tsdk_version'] == 1) {
                $game_ios = get_game_info($value['id']);
                $game_and = get_game_info($value['tid']);
                $data[$key] = $game_and;
                $data[$key]['tid'] = $game_ios['id'];
                $data[$key]['tsdk_version'] = $game_ios['sdk_version'];
                $data[$key]['tgame_size'] = $game_ios['game_size'];
                $data[$key]['tmoney'] = $game_ios['money'];
                $data[$key]['tratio'] = $game_ios['ratio'];
                $data[$key]['dispose_time'] = $game_ios['dispose_time'];
            }
        }

        foreach ($data as $key => $value) {
            $gs = $gamesource->where(['game_id' => $value['id']])->find();
            $tgs = $gamesource->where(['game_id' => $value['tid']])->find();

            if ($gs['version']) {
                $data[$key]['version'] = $gs['version'];
            } else {
                $data[$key]['version'] = '无';
            }
            if ($tgs['version']) {
                $data[$key]['tversion'] = $tgs['version'];
            } else {
                $data[$key]['tversion'] = '无';
            }
            if ($value['sdk_version']) {
                if ($value['sdk_version'] == 1) {
                    $data[$key]['sdk_version'] = '安卓';
                } else {
                    $data[$key]['sdk_version'] = '苹果';

                }
            }
            if ($value['tsdk_version']) {
                if ($value['tsdk_version'] == 1) {
                    $data[$key]['tsdk_version'] = '安卓';
                } else {
                    $data[$key]['tsdk_version'] = '苹果';

                }
            }

            if ($gs['create_time']) {
                $data[$key]['time'] = date('Y-m-d', $gs['create_time']);
            } else {
                $data[$key]['time'] = '无';
            }

            if ($tgs['create_time']) {
                $data[$key]['ttime'] = date('Y-m-d', $tgs['create_time']);
            } else {
                $data[$key]['ttime'] = '无';
            }

        }


        foreach ($data as $k => $v) {
            if (!empty($v['id'])) {
                $xlsData[] = array(
                    'relation_game_name' => $v['relation_game_name'],
                    'sdk_version' => $v['sdk_version'],
                    'version' => $v['version'],
                    'game_size' => $v['game_size'],
                    'time' => $v['time'],
                    'money' => $v['money'],
                    'ratio' => $v['ratio'],
                );

            }
            if (!empty($v['tid'])) {
                $xlsData[] = array(
                    'relation_game_name' => $v['relation_game_name'],
                    'sdk_version' => $v['tsdk_version'],
                    'version' => $v['tversion'],
                    'game_size' => $v['tgame_size'],
                    'time' => $v['time'],
                    'money' => $v['tmoney'],
                    'ratio' => $v['tratio'],
                );
            }

        }

        $this->exportExcel($xlsName, $xlsCell, $xlsData);
    }

    /*
     * 游戏投放平台列表
     * @author 鹿文学
     */
    public function game_apply_launch($p = 1)
    {

        $xlsName = $_REQUEST['xlsname'];

        if ($_REQUEST['notchild'] == 1) {
            $xlsCell = array(
                array('platform_name', '投放平台'),
                array('launch_time', '创建时间'),
                array('launch_url', '投放地址'),
                array('promotion_url', '推广注册地址'),
                array('remark', '备注'),
            );
        } else {
            $xlsCell = array(
                array('platform_name', '投放平台'),
                array('launch_time', '创建时间'),
                array('remark', '备注'),
            );
        }

        $relation_game_id = $_REQUEST['rgid'];
        $applyid = $_REQUEST['applyid'];
        $sdk_version = $_REQUEST['sdk_version'];

        if (is_numeric($applyid) && $applyid > 0) {

            $launchmodel = M('apply_launch', 'tab_');

            $page = intval($p);

            $page = $page ? $page : 1; //默认显示第一页数据

            $map = ['apply_id' => $applyid];


            $data = $launchmodel->alias('l')->field('l.*,a.promote_id,a.sdk_version,a.enable_status')
                ->join('tab_apply as a on(a.id=l.apply_id) ')
                ->where($map)->select();

            if ($_REQUEST['notchild'] == 1) {
                foreach ($data as $k => $v) {
                    $v['launch_time'] = date('Y-m-d H:i:s', $v['launch_time']);
                    if ($sdk_version == 1) {
                        $v['launch_url'] = $v['launch_down_url'] ? $v['launch_down_url'] : '--';
                    } else {
                        $v['launch_url'] = $v['launch_down_url'] ? $v['launch_down_url'] : '--';
                    }
                    $v['promotion_url'] = 'http://' . $_SERVER['HTTP_HOST'] . U('Home/promotionofregistration', ['pid' => $v['promote_id'], 'gid' => $relation_game_id, 'lid' => $v['platform_id'], 'p' => $v['position']]);
                    $v['platform_name'] = get_launch_platform_name($v['platform_id'], '--');
                    $xlsData[] = $v;

                }
            } else {
                foreach ($data as $k => $v) {
                    $v['launch_time'] = date('Y-m-d H:i:s', $v['launch_time']);
                    $v['platform_name'] = get_launch_platform_name($v['platform_id'], '--');
                    $xlsData[] = $v;
                }
            }

        }

        $this->exportExcel($xlsName, $xlsCell, $xlsData);

    }

    /*
     * 我的福利列表
     * @author 鹿文学
     */
    public function discount()
    {

        $xlsName = $_REQUEST['xlsname'];


        $xlsCell = array(
            array('id', '编号'),
            array('promote_account', '推广员账号'),
            array('game_name', '游戏名称'),
            array('game_discount', '统一折扣'),
            array('promote_discount', '代充折扣'),
            array('first_discount', '首充折扣'),
            array('continue_discount', '续充折扣'),
        );


        $map['promote_id'] = ['in', PID . ",-1,-2"];
        empty(I('game_name')) || $map['game_name'] = ['like', '%' . I('game_name') . '%'];
        empty(I('game_id')) || $map['game_id'] = I('game_id');

        $data = M('PromoteWelfare', 'tab_')->where($map)->select();

        foreach ($data as $k => $v) {
            $v['promote_account'] = get_promote_account($v['promote_id']);
            $xlsData[] = discount_data($v);
        }


        $this->exportExcel($xlsName, $xlsCell, $xlsData);

    }

    /*
     * 子渠道福利列表
     * @author 鹿文学
     */
    public function child_discount()
    {

        $xlsName = $_REQUEST['xlsname'];


        $xlsCell = array(
            array('id', '编号'),
            array('promote_account', '推广员账号'),
            array('game_name', '游戏名称'),
            array('game_discount', '统一折扣'),
            array('promote_discount', '代充折扣'),
            array('first_discount', '首充折扣'),
            array('continue_discount', '续充折扣'),
        );


        $child_promote = get_zi_promote_id(PID);
        $child_promote = $child_promote . ",-1";

        if (empty(I('promote_id')) || in_array(I('promote_id'), explode(',', $child_promote))) {

            $map['promote_id'] = empty(I('promote_id')) ? ['in', $child_promote] : I('promote_id');

            empty(I('game_name')) || $map['game_name'] = ['like', '%' . I('game_name') . '%'];

            empty(I('game_id')) || $map['game_id'] = I('game_id');

            $data = M('PromoteWelfare', 'tab_')->where($map)->select();

            foreach ($data as $k => $v) {
                $v['promote_account'] = get_promote_account($v['promote_id']);
                $xlsData[] = discount_data($v);
            }

        }


        $this->exportExcel($xlsName, $xlsCell, $xlsData);

    }

    /**
     * 联盟站点游戏列表
     * @author 鹿文学
     */
    public function sitegame()
    {

        $xlsName = $_REQUEST['xlsname'];


        $xlsCell = array(
            array('game_name', '游戏名称'),
            array('sdk_version', '游戏平台'),
            array('game_type', '游戏类型'),
            array('game_size', '游戏大小'),
            array('recommend_status', '推荐状态'),
            array('group_code', 'QQ群号'),
            array('group_name', 'QQ群名称'),
            array('in_num', '加群人数'),
            array('version', '版本号'),
            array('update_time', '更新时间'),
        );

        $data = M('SiteGame', 'tab_')->field('tab_site_game.*,sg.group_code,sg.group_name,sg.in_num')
            ->join('tab_site_group as sg on sg.site_game_id = tab_site_game.id', 'left')
            ->where($map)->order('is_top desc,top_time desc')->select();

        foreach ($data as $k => $v) {
            $v['game_size'] .= 'M';
            $v['sdk_version'] = $v['sdk_version'] == 1 ? '安卓' : '苹果';
            $v['recommend_status'] = $v['recommend_status'] ? get_recommend_status_info($v['recommend_status']) : '不推荐';
            $v['group_code'] = $v['group_code'] ? $v['group_code'] : '--';
            $v['group_name'] = $v['group_name'] ? $v['group_name'] : '--';
            $v['in_num'] = $v['in_num'] ? $v['in_num'] : '--';
            $v['update_time'] = $v['update_time'] > 0 ? date('Y-m-d H:i', $v['update_time']) : '--';
            $xlsData[] = $v;
        }


        $this->exportExcel($xlsName, $xlsCell, $xlsData);

    }

    /**
     * 联盟站点区服列表
     * @author 鹿文学
     */
    public function siteserver()
    {

        $xlsName = $_REQUEST['xlsname'];


        $xlsCell = array(
            array('game_name', '游戏名称'),
            array('server_version', '游戏平台'),
            array('game_type', '游戏类型'),
            array('start_time', '开服时间'),
            array('server_name', '区服名称'),
        );

        $map['promote_id'] = PID;
        $map['status'] = 1;
        $server_name = $_REQUEST['server_name'] ? $_REQUEST['server_name'] : '';
        $game_name = $_REQUEST['game_name'] ? $_REQUEST['game_name'] : '';
        if ($server_name != '') {
            $map['server_name'] = array('like', '%' . $server_name . '%');
        }
        if ($game_name != '') {
            $map['game_name'] = array('like', '%' . $game_name . '%');
        }

        $gamemodel = M('SiteGame', 'tab_');

        $game = $gamemodel->field('id,game_name')->distinct(true)->where($map)->select();

        foreach ($game as $k => $v) {
            if (empty($v['id'])) {
                unset($game[$k]);
            }
            if (!empty($v['id'])) {
                $gameName[$k] = $v['id'];
            }
        }

        $SiteServer = M('SiteServer', 'tab_');
        if (!empty($gameName)) {
            $map['game_id'] = array('in', implode(',', $gameName));
        }
        if (!empty($game)) {
            $data = $SiteServer->where($map)->select();
            foreach ($data as $k => $v) {
                $gamed = $gamemodel->field('game_name,game_type')->distinct(true)->where(['id' => $v['game_id']])->find();
                $v['start_time'] = date('Y-m-d H:i', $v['start_time']);
                $v['game_type'] = $gamed['game_type'];
                $v['game_name'] = $gamed['game_name'];
                $v['server_version'] = $v['server_version'] == 1 ? '安卓' : '苹果';
                $xlsData[] = $v;
            }
        }


        $this->exportExcel($xlsName, $xlsCell, $xlsData);

    }

    /**
     * 联盟站点礼包列表
     * @author 鹿文学
     */
    public function sitegift()
    {

        $xlsName = $_REQUEST['xlsname'];


        $xlsCell = array(
            array('game_name', '游戏名称'),
            array('giftbag_version', '游戏平台'),
            array('gift_name', '礼包名称'),
            array('site_gift_num', '剩余数量'),
            array('recommend_status', '推荐状态'),
            array('status', '礼包状态'),
            array('create_time', '添加时间'),
        );


        $model = M('SiteGift', 'tab_');
        $map['promote_id'] = PID;
        $game_name = $_REQUEST['game_name'] ? $_REQUEST['game_name'] : '';
        $gift_name = $_REQUEST['gift_name'] ? $_REQUEST['gift_name'] : '';
        $recommend_status = $_REQUEST['recommend_status'] ? $_REQUEST['recommend_status'] : '';

        if ($game_name != '') {
            $map['game_name'] = array('like', '%' . $game_name . '%');
            $parameter['game_name'] = $game_name;
        }
        if ($gift_name != '') {
            $map['gift_name'] = array('like', '%' . $gift_name . '%');
            $parameter['gift_name'] = $gift_name;
        }
        if ($recommend_status != '') {
            $map['recommend_status'] = array('like', '%' . $recommend_status . '%');;
            $parameter['recommend_status'] = $recommend_status;
        }

        $data = $model->where($map)->order('create_time desc')->page($page, $row)->select();

        foreach ($data as $k => $v) {
            $v['create_time'] = date('Y-m-d H:i', $v['create_time']);
            $v['status'] = get_info_status($v['status'], 26);
            $v['site_gift_num'] = get_site_gift_num($v['id']);
            $v['recommend_status'] = $v['recommend_status'] ? get_info_status($v['recommend_status'], 1) : '不推荐';
            $v['giftbag_version'] = $v['giftbag_version'] == 1 ? '安卓' : '苹果';
            $xlsData[] = $v;
        }

        $this->exportExcel($xlsName, $xlsCell, $xlsData);

    }

    /**
     * 联盟站点广告列表
     * @author 鹿文学
     */
    public function siteadv()
    {

        $xlsName = $_REQUEST['xlsname'];


        $xlsCell = array(
            array('title', '广告标题'),
            array('url', '广告链接'),
            array('start_time', '开始时间'),
            array('end_time', '结束时间'),
            array('target', '打开方式'),
            array('status', '展示状态'),
        );


        $map['promote_id'] = PID;

        $data = M('SiteAdv', 'tab_')->where($map)->order('create_time desc')->select();


        foreach ($data as $k => $v) {
            $v['start_time'] = $v['start_time'] > 0 ? date('Y-m-d H:i', $v['start_time']) : '--';
            $v['end_time'] = $v['end_time'] > 0 ? date('Y-m-d H:i', $v['end_time']) : '--';
            $v['status'] = get_info_status($v['status']);
            $v['target'] = get_target_name($v['target']);
            $xlsData[] = $v;
        }

        $this->exportExcel($xlsName, $xlsCell, $xlsData);

    }

    /**
     * 子渠道结算记录列表
     * @author 鹿文学
     */
    public function son_list()
    {

        $xlsName = $_REQUEST['xlsname'];


        $xlsCell = array(
            array('promote_account', '子渠道账户'),
            array('time', '结算周期'),
            array('settlement_number', '结算单号'),
            array('sum_money', '总充值'),
            array('reg_number', '总注册'),
            array('jie_money', '结算金额'),
            array('bind_coin_status', '结算范围'),
            array('create_time', '结算时间'),
        );


        if (!empty($_REQUEST['timestart']) && !empty($_REQUEST['timeend'])) {
            $map['settlement_start_time'] = array('egt', strtotime($_REQUEST['timestart']));
            $map['settlement_end_time'] = array('elt', strtotime($_REQUEST['timeend']) + 86399);
        } elseif (!empty($_REQUEST['timestart']) && empty($_REQUEST['timeend'])) {
            $map['settlement_start_time'] = array('egt', strtotime($_REQUEST['timestart']));
            $map['settlement_end_time'] = array('elt', time());
        } elseif (empty($_REQUEST['timestart']) && !empty($_REQUEST['timeend'])) {
            $map['settlement_end_time'] = array('elt', strtotime($_REQUEST['timeend']) + 86399);
        }

        if (!empty($_REQUEST['start']) && !empty($_REQUEST['end'])) {
            $start = strtotime($_REQUEST['start']);
            $end = strtotime($_REQUEST['end']) + 24 * 60 * 60 - 1;
            $map['create_time'] = array('BETWEEN', array($start, $end));
        }

        if (!empty($_REQUEST['ch_promote_id'])) {
            $map['promote_id'] = $_REQUEST['ch_promote_id'];
        } else {

            $promote = M('Promote', 'tab_')->field('id')->where(['parent_id' => PID])->select();
            $zi_p = implode(',', array_column($promote, 'id'));
            $map['promote_id'] = array('in', "$zi_p");
        }


        $data = M('SonSettlement', 'tab_')
            ->field('settlement_number,
                    settlement_start_time,
                    settlement_end_time,
                    promote_id,
                    promote_account,
                    bind_coin_status,
                    sum(sum_money)  as sum_money,
                    sum(reg_number) as reg_number,
                    sum(jie_money)  as jie_money,
                    ti_status,
                    create_time')
            ->where($map)
            ->order('create_time desc')
            ->group('settlement_number,create_time')
            ->select();


        foreach ($data as $k => $v) {

            $v['bind_coin_status'] = get_bind_coin_status($v['bind_coin_status']);
            $v['jie_money'] = number_format(round($v['jie_money'], 2), 2);


            $v['time'] = date('Y-m-d', $v['settlement_start_time']) . '~' . date('Y-m-d', $v['settlement_end_time']);
            $v['sum_money'] = !empty($v['sum_money']) ? $v['sum_money'] : 0;
            $v['reg_number'] = !empty($v['reg_number']) ? $v['reg_number'] : 0;

            $v['create_time'] = date('Y-m-d', $v['create_time']);
            $xlsData[] = $v;
        }

        $this->exportExcel($xlsName, $xlsCell, $xlsData);


    }

    /**
     * 平台币记录列表
     * @author 鹿文学
     */
    public function promotecoin_list()
    {
        $xlsName = $_REQUEST['xlsname'];


        $xlsCell = array(
            array('order_number', '订单号'),
            array('promote_account', '充值帐号'),
            array('create_time', '充值时间'),
            array('num', '平台币数量'),
            array('source', '来源'),
            array('way', '支付方式'),
        );


        switch ($_REQUEST['source']) {
            case 1:
                {/* 后台发放 */
                    $xlsData = D('PromoteCoin')->grant_all();
                };
                break;
            case 2:
            case 3:
            case 4:
            case 5:
                {
                    $xlsData = D('Balance')->recharge_all($_REQUEST['source'] - 1);
                };
                break;
            default:
            {

                $xlsData = D('PromoteCoin')->all_coin_all();

            }
        }

        foreach ($xlsData as $k => $v) {

            $xlsData[$k]['promote_account'] = is_numeric($v['recharge_id']) ? get_promote_account($v['recharge_id']) : $v['recharge_id'];
            $xlsData[$k]['create_time'] = date('Y-m-d H:i:s', $v['create_time']);
            $xlsData[$k]['source'] = get_promote_coin_source_name($v['source']);

        }


        $this->exportExcel($xlsName, $xlsCell, $xlsData);

    }


}