You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1643 lines
67 KiB
PHP

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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