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.
664 lines
29 KiB
PHP
664 lines
29 KiB
PHP
<?php
|
|
// +----------------------------------------------------------------------
|
|
// | OneThink [ WE CAN DO IT JUST THINK IT ]
|
|
// +----------------------------------------------------------------------
|
|
// | Copyright (c) 2013 http://www.onethink.cn All rights reserved.
|
|
// +----------------------------------------------------------------------
|
|
// | Author: 麦当苗儿 <zuojiazi@vip.qq.com> <http://www.zjzit.cn>
|
|
// +----------------------------------------------------------------------
|
|
|
|
namespace Admin\Controller;
|
|
|
|
use User\Api\UserApi;
|
|
use Com\Wechat;
|
|
use Com\WechatAuth;
|
|
|
|
/**
|
|
* 后台用户控制器
|
|
* @author 麦当苗儿 <zuojiazi@vip.qq.com>
|
|
*/
|
|
class PayChannelIntentionController extends AdminController
|
|
{
|
|
|
|
public static $arr_pay_way = ['alipay'=>'支付宝','wxpay'=>'微信支付','sqpay'=>'双乾快捷支付','yeepay'=>'易宝支付'];
|
|
|
|
public function index($p = 0) {
|
|
|
|
$page = intval($p);
|
|
$page = $page ? $page : 1; //默认显示第一页数据
|
|
|
|
if (isset($_REQUEST['row'])) {
|
|
$row = $_REQUEST['row'];
|
|
} else {
|
|
$row = 10;
|
|
}
|
|
|
|
$map = [];
|
|
|
|
if ($_REQUEST['timestart']&&!$_REQUEST['timeend']) {
|
|
$map['create_time'] = ['egt',strtotime($_REQUEST['timestart'])];
|
|
}
|
|
|
|
if (!$_REQUEST['timestart']&&$_REQUEST['timeend']) {
|
|
$map['create_time'] = ['elt',strtotime($_REQUEST['timeend'])+86399];
|
|
}
|
|
|
|
if ($_REQUEST['timestart']&&$_REQUEST['timeend']) {
|
|
$map['create_time'] = ['between',[strtotime($_REQUEST['timestart']),strtotime($_REQUEST['timeend'])+86399]];
|
|
// $map['create_time'] = ['elt',strtotime($_REQUEST['time_end'])];
|
|
}
|
|
|
|
if ($_REQUEST['pay_type']) {
|
|
$map['pay_ways'] = ['like',"%{$_REQUEST['pay_type']}"];
|
|
}
|
|
|
|
$show_data = M('pay_channel_intention','tab_')
|
|
->field('id,group_concat(tab_pay_channel_intention.`pay_way` ORDER BY tab_pay_channel_intention.create_time ASC) as pay_ways,tab_pay_channel_intention.user_account,
|
|
tab_pay_channel_intention.pay_amount,CASE WHEN is_submit = 0 THEN 2 ELSE pay_status END as pay_status,tab_pay_channel_intention.pay_order_number,max(create_time) m_time')
|
|
// ->join('left join tab_spend on tab_pay_channel_intention.pay_order_number=tab_spend.pay_order_number')
|
|
->group('tab_pay_channel_intention.pay_order_number')
|
|
->order('tab_pay_channel_intention.create_time DESC')
|
|
->select(false);
|
|
|
|
$show_data = M('pay_channel_intention','tab_')
|
|
->field("a.pay_amount,pay_ways,a.user_account,a.pay_order_number,tab_pay_channel_intention.create_time,CASE WHEN is_submit = 1 THEN tab_pay_channel_intention.pay_status ELSE 2 END as pay_status")
|
|
->join("left join ({$show_data}) as a on tab_pay_channel_intention.pay_order_number=a.pay_order_number and tab_pay_channel_intention.create_time=m_time")
|
|
->where('pay_ways is not null')
|
|
// ->group('tab_pay_channel_intention.pay_order_number')
|
|
->order('tab_pay_channel_intention.id DESC')
|
|
->select(false);
|
|
|
|
$show_data = M()->table('('.$show_data.') as a')
|
|
->select(false);
|
|
|
|
|
|
$data = M()->table('('.$show_data.') as a')
|
|
->field('pay_ways,user_account,pay_status,
|
|
SUM(if(pay_status=0,pay_amount,0)) fail_invest_amount,
|
|
SUM(if(pay_status=1,pay_amount,0)) success_invest_amount,
|
|
SUM(if(pay_status=2,pay_amount,0)) nothing_invest_amount,
|
|
count(if(pay_status=0,pay_amount,null)) fail_invest_count,
|
|
count(if(pay_status=1,pay_amount,null)) success_invest_count,
|
|
count(if(pay_status=2,pay_amount,null)) nothing_invest_count,create_time')
|
|
->where($map)
|
|
->group('a.pay_ways,a.user_account,a.pay_status')
|
|
->select(false);
|
|
|
|
// dump($data);die();
|
|
$count = M()->table('('.$data.') as a')
|
|
->field('pay_ways,sum(fail_invest_amount) fail_invest_amount')
|
|
// ->where($map)
|
|
->group('a.pay_ways')
|
|
->select(false);
|
|
// dump($count);die();
|
|
|
|
$data = M()->table('('.$data.') as a')
|
|
->field('pay_ways,sum(fail_invest_amount) fail_invest_amount,create_time,
|
|
sum(success_invest_amount) success_invest_amount,
|
|
sum(nothing_invest_amount) nothing_invest_amount,
|
|
count(if(pay_status=0,fail_invest_count,NULL)) fail_invest_count,
|
|
count(if(pay_status=1,success_invest_count,NULL)) success_invest_count,
|
|
count(if(pay_status=2,nothing_invest_count,NULL)) nothing_invest_count')
|
|
->page($page,$row)
|
|
->where($map)
|
|
->group('a.pay_ways')
|
|
->select();
|
|
|
|
|
|
$sum = M()->table('('.$show_data.') as a')
|
|
->field('pay_ways,user_account,pay_status,create_time,
|
|
SUM(if(pay_status=0,pay_amount,0)) fail_invest_amount,
|
|
SUM(if(pay_status=1,pay_amount,0)) success_invest_amount,
|
|
SUM(if(pay_status=2,pay_amount,0)) nothing_invest_amount,
|
|
count(if(pay_status=0,pay_amount,null)) fail_invest_count,
|
|
count(if(pay_status=1,pay_amount,null)) success_invest_count,
|
|
count(if(pay_status=2,pay_amount,null)) nothing_invest_count')
|
|
->where($map)
|
|
->group('a.pay_ways,a.user_account,a.pay_status')
|
|
->select(false);
|
|
|
|
$sum = M()->table('('.$sum.') as a')
|
|
->field('pay_ways,user_account,pay_status,create_time,
|
|
SUM(if(pay_status=0,fail_invest_amount,0)) fail_invest_amount,
|
|
SUM(if(pay_status=1,success_invest_amount,0)) success_invest_amount,
|
|
SUM(if(pay_status=2,nothing_invest_amount,0)) nothing_invest_amount,
|
|
count(if(pay_status=0,fail_invest_count,null)) fail_invest_count,
|
|
count(if(pay_status=1,success_invest_count,null)) success_invest_count,
|
|
count(if(pay_status=2,nothing_invest_count,null)) nothing_invest_count')
|
|
->group('a.user_account,a.pay_status')
|
|
->select(false);
|
|
|
|
// dump($sum);die();
|
|
|
|
$sum = M()->table('('.$sum.') as a')
|
|
->field('pay_ways,sum(fail_invest_amount) fail_invest_amount,
|
|
sum(success_invest_amount) success_invest_amount,
|
|
sum(nothing_invest_amount) nothing_invest_amount,
|
|
count(if(pay_status=0,fail_invest_count,NULL)) fail_invest_count,
|
|
count(if(pay_status=1,success_invest_count,NULL)) success_invest_count,
|
|
count(if(pay_status=2,nothing_invest_count,NULL)) nothing_invest_count')
|
|
->find();
|
|
// dump($sum);die();
|
|
|
|
|
|
$this->assign('sum',$sum);
|
|
|
|
|
|
|
|
$count = M()->table('('.$count.') as a')->count();
|
|
|
|
$page = set_pagination($count, $row);
|
|
if ($page) {
|
|
$this->assign('_page', $page);//分页
|
|
}
|
|
|
|
foreach($data as $key => $value) {
|
|
|
|
$arr = explode(',',$data[$key]['pay_ways']);
|
|
|
|
$data[$key]['pay_way'] = self::$arr_pay_way[end($arr)];
|
|
|
|
$data[$key]['pay_ways_ch'] = '';
|
|
foreach ($arr as $k=>$v) {
|
|
$data[$key]['pay_ways_ch'] = $data[$key]['pay_ways_ch'].($k+1).','.self::$arr_pay_way[$v];
|
|
|
|
}
|
|
}
|
|
|
|
$this->assign('data',$data);
|
|
|
|
$this->display();
|
|
|
|
}
|
|
|
|
public function export_index() {
|
|
|
|
$xlsName = '支付意向统计导出';
|
|
|
|
$xlsCell = array(
|
|
"充值点击行为", "最终使用方式", '充值成功用户数', '充值成功金额(汇总)',
|
|
'下单未支付用户数', '下单未支付用户数金额(汇总)', '充值失败用户数', '充值失败金额(汇总)'
|
|
);
|
|
|
|
$map = [];
|
|
|
|
if ($_REQUEST['timestart']&&!$_REQUEST['timeend']) {
|
|
$map['create_time'] = ['egt',strtotime($_REQUEST['timestart'])];
|
|
}
|
|
|
|
if (!$_REQUEST['timestart']&&$_REQUEST['timeend']) {
|
|
$map['create_time'] = ['elt',strtotime($_REQUEST['timeend'])+86399];
|
|
}
|
|
|
|
if ($_REQUEST['timestart']&&$_REQUEST['timeend']) {
|
|
$map['create_time'] = ['between',[strtotime($_REQUEST['timestart']),strtotime($_REQUEST['timeend'])+86399]];
|
|
// $map['create_time'] = ['elt',strtotime($_REQUEST['time_end'])];
|
|
}
|
|
|
|
if ($_REQUEST['pay_type']) {
|
|
$map['pay_ways'] = ['like',"%{$_REQUEST['pay_type']}"];
|
|
}
|
|
|
|
$show_data = M('pay_channel_intention','tab_')
|
|
->field('id,group_concat(tab_pay_channel_intention.`pay_way` ORDER BY tab_pay_channel_intention.create_time ASC) as pay_ways,tab_pay_channel_intention.user_account,
|
|
tab_pay_channel_intention.pay_amount,CASE WHEN is_submit = 0 THEN 2 ELSE pay_status END as pay_status,tab_pay_channel_intention.pay_order_number,max(create_time) m_time')
|
|
// ->join('left join tab_spend on tab_pay_channel_intention.pay_order_number=tab_spend.pay_order_number')
|
|
->group('tab_pay_channel_intention.pay_order_number')
|
|
->order('tab_pay_channel_intention.create_time DESC')
|
|
->select(false);
|
|
|
|
$show_data = M('pay_channel_intention','tab_')
|
|
->field("a.pay_amount,pay_ways,a.user_account,a.pay_order_number,tab_pay_channel_intention.create_time,CASE WHEN is_submit = 1 THEN tab_pay_channel_intention.pay_status ELSE 2 END as pay_status")
|
|
->join("left join ({$show_data}) as a on tab_pay_channel_intention.pay_order_number=a.pay_order_number and tab_pay_channel_intention.create_time=m_time")
|
|
->where('pay_ways is not null')
|
|
// ->group('tab_pay_channel_intention.pay_order_number')
|
|
->order('tab_pay_channel_intention.id DESC')
|
|
->select(false);
|
|
|
|
$show_data = M()->table('('.$show_data.') as a')
|
|
->select(false);
|
|
|
|
|
|
$data = M()->table('('.$show_data.') as a')
|
|
->field('pay_ways,user_account,pay_status,
|
|
SUM(if(pay_status=0,pay_amount,0)) fail_invest_amount,
|
|
SUM(if(pay_status=1,pay_amount,0)) success_invest_amount,
|
|
SUM(if(pay_status=2,pay_amount,0)) nothing_invest_amount,
|
|
count(if(pay_status=0,pay_amount,null)) fail_invest_count,
|
|
count(if(pay_status=1,pay_amount,null)) success_invest_count,
|
|
count(if(pay_status=2,pay_amount,null)) nothing_invest_count,create_time')
|
|
->where($map)
|
|
->group('a.pay_ways,a.user_account,a.pay_status')
|
|
->select(false);
|
|
|
|
$csvFileName = $xlsName.'.csv';
|
|
//设置好告诉浏览器要下载excel文件的headers
|
|
header('Content-Description: File Transfer');
|
|
header('Content-Type: application/vnd.ms-excel');
|
|
header('Content-Disposition: attachment; filename="'. $csvFileName .'"');
|
|
header('Expires: 0');
|
|
header('Cache-Control: must-revalidate');
|
|
header('Pragma: public');
|
|
$fp = fopen('php://output', 'a');//打开output流
|
|
mb_convert_variables('GBK', 'UTF-8', $xlsCell);
|
|
fputcsv($fp, $xlsCell);//将数据格式化为CSV格式并写入到output流中
|
|
|
|
|
|
$count = M()->table('('.$show_data.') as a')
|
|
->field('count(pay_amount) count')
|
|
->group('a.pay_ways')
|
|
->select(false);
|
|
|
|
$accessNum = M()->table('('.$count.') as a')->count();
|
|
|
|
$perSize = 2000;//每次查询的条数
|
|
$pages = ceil($accessNum / $perSize);
|
|
|
|
for($i = 1; $i <= $pages; $i++) {
|
|
|
|
|
|
$xlsData = M()->table('('.$data.') as a')
|
|
->field('"" as pay_ways_ch,"" as pay_way,pay_ways,user_account,
|
|
count(if(pay_status=1,success_invest_count,NULL)) success_invest_count,
|
|
sum(success_invest_amount) success_invest_amount,
|
|
count(if(pay_status=0,fail_invest_count,NULL)) fail_invest_count,
|
|
sum(fail_invest_amount) fail_invest_amount,
|
|
count(if(pay_status=2,nothing_invest_count,NULL)) nothing_invest_count,
|
|
sum(nothing_invest_amount) nothing_invest_amount')
|
|
->limit(($i-1)*$perSize ,$perSize)
|
|
// ->where($map)
|
|
->group('a.pay_ways')
|
|
->select();
|
|
|
|
// $xlsData = M()->table('('.$show_data.') as a')
|
|
// ->field('"" as pay_ways_ch,"" as pay_way,pay_ways,user_account,
|
|
// count(if(pay_status=1,pay_amount,null)) success_invest_count,
|
|
// SUM(if(pay_status=1,pay_amount,0)) success_invest_amount,
|
|
// count(if(pay_status=2,pay_amount,null)) nothing_invest_count,
|
|
// SUM(if(pay_status=2,pay_amount,0)) nothing_invest_amount,
|
|
// count(if(pay_status=0,pay_amount,null)) fail_invest_count,
|
|
// SUM(if(pay_status=0,pay_amount,0)) fail_invest_amount')
|
|
// ->limit(($i-1)*$perSize ,$perSize)
|
|
// ->where($map)
|
|
// ->group('a.pay_ways,a.user_account,a.pay_status')
|
|
// ->select();
|
|
|
|
|
|
foreach($xlsData as $key =>$value) {
|
|
$arr = explode(',',$value['pay_ways']);
|
|
|
|
$value['pay_way'] = self::$arr_pay_way[end($arr)];
|
|
|
|
$value['pay_ways_ch'] = '';
|
|
foreach ($arr as $k=>$v) {
|
|
$value['pay_ways_ch'] = $value['pay_ways_ch'].($k+1).','.self::$arr_pay_way[$v];
|
|
|
|
}
|
|
|
|
unset($value['pay_ways']);
|
|
unset($value['user_account']);
|
|
|
|
mb_convert_variables('GBK', 'UTF-8', $value);
|
|
fputcsv($fp, $value);
|
|
}
|
|
unset($xlsData);//释放变量的内存
|
|
//刷新输出缓冲到浏览器
|
|
ob_flush();
|
|
flush();//必须同时使用 ob_flush() 和flush() 函数来刷新输出缓冲。
|
|
}
|
|
|
|
$sum = M()->table('('.$show_data.') as a')
|
|
->field('pay_ways,user_account,pay_status,create_time,
|
|
SUM(if(pay_status=0,pay_amount,0)) fail_invest_amount,
|
|
SUM(if(pay_status=1,pay_amount,0)) success_invest_amount,
|
|
SUM(if(pay_status=2,pay_amount,0)) nothing_invest_amount,
|
|
count(if(pay_status=0,pay_amount,null)) fail_invest_count,
|
|
count(if(pay_status=1,pay_amount,null)) success_invest_count,
|
|
count(if(pay_status=2,pay_amount,null)) nothing_invest_count')
|
|
->where($map)
|
|
->group('a.pay_ways,a.user_account,a.pay_status')
|
|
->select(false);
|
|
$sum = M()->table('('.$sum.') as a')
|
|
->field('pay_ways,user_account,pay_status,create_time,
|
|
SUM(if(pay_status=0,fail_invest_amount,0)) fail_invest_amount,
|
|
SUM(if(pay_status=1,success_invest_amount,0)) success_invest_amount,
|
|
SUM(if(pay_status=2,nothing_invest_amount,0)) nothing_invest_amount,
|
|
count(if(pay_status=0,fail_invest_count,null)) fail_invest_count,
|
|
count(if(pay_status=1,success_invest_count,null)) success_invest_count,
|
|
count(if(pay_status=2,nothing_invest_count,null)) nothing_invest_count')
|
|
->group('a.user_account,a.pay_status')
|
|
->select(false);
|
|
|
|
$sum = M()->table('('.$sum.') as a')
|
|
->field('"汇总(检索时间内所有数据的统计)" pay_ways,"" other,
|
|
count(if(pay_status=1,success_invest_count,NULL)) success_invest_count,
|
|
sum(success_invest_amount) success_invest_amount,
|
|
count(if(pay_status=0,fail_invest_count,NULL)) fail_invest_count,
|
|
sum(fail_invest_amount) fail_invest_amount,
|
|
count(if(pay_status=2,nothing_invest_count,NULL)) nothing_invest_count,
|
|
sum(nothing_invest_amount) nothing_invest_amount
|
|
')
|
|
->find();
|
|
|
|
|
|
mb_convert_variables('GBK', 'UTF-8', $sum);
|
|
fputcsv($fp, $sum);
|
|
//刷新输出缓冲到浏览器
|
|
ob_flush();
|
|
flush();//必须同时使用 ob_flush() 和flush() 函数来刷新输出缓冲。
|
|
|
|
fclose($fp);
|
|
|
|
$getData = $_GET;
|
|
unset($getData['id']);
|
|
unset($getData['xlsname']);
|
|
|
|
}
|
|
|
|
public function detail($p = 0) {
|
|
|
|
$page = intval($p);
|
|
$page = $page ? $page : 1; //默认显示第一页数据
|
|
|
|
if (isset($_REQUEST['row'])) {
|
|
$row = $_REQUEST['row'];
|
|
} else {
|
|
$row = 10;
|
|
}
|
|
|
|
$map = [];
|
|
|
|
if ($_REQUEST['pay_ways']) {
|
|
$map['pay_ways'] = ['like',"%{$_REQUEST['pay_ways']}"];
|
|
}
|
|
|
|
if ($_REQUEST['pay_way']) {
|
|
$map['pay_ways'] = $_REQUEST['pay_way'];
|
|
}
|
|
|
|
$pay_type = end(explode(',',$_REQUEST['pay_way']));
|
|
if (!$_REQUEST['pay_way']&&$_REQUEST['pay_ways']) {
|
|
$pay_type = $_REQUEST['pay_ways'];
|
|
}
|
|
|
|
$this->assign('pay_type',$pay_type);
|
|
// var_dump($pay_type);die();
|
|
|
|
if ($_REQUEST['user_account']) {
|
|
$map['user_account'] = $_REQUEST['user_account'];
|
|
}
|
|
|
|
if ($_REQUEST['pay_status'] || $_REQUEST['pay_status'] == '0') {
|
|
$map['pay_status'] = $_REQUEST['pay_status'];
|
|
|
|
if ($_REQUEST['pay_status'] == 4) {
|
|
$map['pay_status'] = 1;
|
|
$map['pay_game_status'] = 1;
|
|
}
|
|
|
|
if ($_REQUEST['pay_status'] == 3) {
|
|
$map['pay_status'] = 1;
|
|
$map['pay_game_status'] = 0;
|
|
}
|
|
}
|
|
|
|
if ($_REQUEST['timestart']&&!$_REQUEST['timeend']) {
|
|
$map['create_time'] = ['egt',strtotime($_REQUEST['timestart'])];
|
|
}
|
|
|
|
if (!$_REQUEST['timestart']&&$_REQUEST['timeend']) {
|
|
$map['create_time'] = ['elt',strtotime($_REQUEST['timeend'])+86399];
|
|
}
|
|
|
|
if ($_REQUEST['timestart']&&$_REQUEST['timeend']) {
|
|
$map['create_time'] = ['between',[strtotime($_REQUEST['timestart']),strtotime($_REQUEST['timeend'])+86399]];
|
|
// $map['create_time'] = ['elt',strtotime($_REQUEST['time_end'])];
|
|
}
|
|
|
|
// var_dump($map);die();
|
|
|
|
$data = M('pay_channel_intention','tab_')
|
|
->field('id,group_concat(tab_pay_channel_intention.`pay_way` ORDER BY tab_pay_channel_intention.create_time ASC) as pay_ways,
|
|
count(if(tab_pay_channel_intention.pay_way="alipay",tab_pay_channel_intention.pay_way,null)) alipay,
|
|
count(if(tab_pay_channel_intention.pay_way="wxpay",tab_pay_channel_intention.pay_way,null)) wxpay,
|
|
count(if(tab_pay_channel_intention.pay_way="sqpay",tab_pay_channel_intention.pay_way,null)) sqshorcut,
|
|
count(if(tab_pay_channel_intention.pay_way="yeepay",tab_pay_channel_intention.pay_way,null)) shorcut,
|
|
tab_pay_channel_intention.user_account,
|
|
tab_pay_channel_intention.pay_amount,
|
|
tab_pay_channel_intention.pay_order_number,tab_pay_channel_intention.create_time,max(create_time) m_time')
|
|
// ->join('left join tab_spend on tab_pay_channel_intention.pay_order_number=tab_spend.pay_order_number')
|
|
->group('tab_pay_channel_intention.pay_order_number')
|
|
->order('tab_pay_channel_intention.id DESC')
|
|
->select(false);
|
|
|
|
|
|
$data = M('pay_channel_intention','tab_')
|
|
->field('a.*,
|
|
CASE WHEN is_submit = 0 THEN 2 ELSE pay_status END as pay_status,
|
|
CASE WHEN is_submit = 0 THEN 2 ELSE pay_game_status END as pay_game_status')
|
|
->join("left join ({$data}) as a on tab_pay_channel_intention.pay_order_number=a.pay_order_number and tab_pay_channel_intention.create_time=m_time")
|
|
->where('pay_ways is not null')
|
|
->select(false);
|
|
|
|
// dump($data);die();
|
|
|
|
$count = M()->table('('.$data.') as a')
|
|
->field('id')
|
|
->where($map)
|
|
->count();
|
|
|
|
$data = M()->table('('.$data.') as a')
|
|
->page($page,$row)
|
|
->where($map)
|
|
->select();
|
|
|
|
|
|
$page = set_pagination($count, $row);
|
|
if ($page) {
|
|
$this->assign('_page', $page);//分页
|
|
}
|
|
|
|
$sum = M('pay_channel_intention','tab_')
|
|
->field('group_concat(tab_pay_channel_intention.`pay_way` ORDER BY tab_pay_channel_intention.create_time ASC) as pay_ways,
|
|
count(if(tab_pay_channel_intention.pay_way="alipay",tab_pay_channel_intention.pay_way,null)) alipay,
|
|
count(if(tab_pay_channel_intention.pay_way="wxpay",tab_pay_channel_intention.pay_way,null)) wxpay,
|
|
count(if(tab_pay_channel_intention.pay_way="sqpay",tab_pay_channel_intention.pay_way,null)) sqshorcut,
|
|
count(if(tab_pay_channel_intention.pay_way="yeepay",tab_pay_channel_intention.pay_way,null)) shorcut,
|
|
tab_pay_channel_intention.user_account,
|
|
tab_pay_channel_intention.pay_amount,
|
|
tab_pay_channel_intention.pay_order_number,tab_pay_channel_intention.create_time,max(create_time) m_time')
|
|
// ->join('left join tab_spend on tab_pay_channel_intention.pay_order_number=tab_spend.pay_order_number')
|
|
->group('tab_pay_channel_intention.pay_order_number')
|
|
->order('tab_pay_channel_intention.create_time ASC')
|
|
->select(false);
|
|
|
|
$sum = M('pay_channel_intention','tab_')
|
|
->field('a.*,
|
|
CASE WHEN is_submit = 0 THEN 2 ELSE pay_status END as pay_status,
|
|
CASE WHEN is_submit = 0 THEN 2 ELSE pay_game_status END as pay_game_status')
|
|
->join("left join ({$sum}) as a on tab_pay_channel_intention.pay_order_number=a.pay_order_number and tab_pay_channel_intention.create_time=m_time")
|
|
->where('pay_ways is not null')
|
|
->select(false);
|
|
|
|
$sum = M()->table('('.$sum.') as a')
|
|
->field("sum(pay_amount) pay_amount,sum(alipay) alipay,sum(wxpay) wxpay,sum(sqshorcut) sqshorcut,sum(shorcut) shorcut")
|
|
->where($map)
|
|
->find();
|
|
|
|
foreach ($data as $key => $value) {
|
|
|
|
$data[$key]['create_time'] = date('Y-m-d H:i:s',$data[$key]['create_time']);
|
|
|
|
}
|
|
|
|
$this->assign('data',$data);
|
|
$this->assign('sum',$sum);
|
|
|
|
$this->display();
|
|
|
|
}
|
|
|
|
public function export_detail() {
|
|
|
|
$xlsName = '支付意向统计详情导出';
|
|
|
|
$xlsCell = array(
|
|
"用户", "充值金额", '支付宝', '微信',
|
|
'易宝', '双乾快捷支付', '时间', '支付状态', '关联订单'
|
|
);
|
|
|
|
$map = [];
|
|
|
|
if ($_REQUEST['pay_ways']) {
|
|
$map['pay_ways'] = $_REQUEST['pay_ways'];
|
|
}
|
|
|
|
if ($_REQUEST['user_account']) {
|
|
$map['user_account'] = $_REQUEST['user_account'];
|
|
}
|
|
|
|
if ($_REQUEST['pay_status'] || $_REQUEST['pay_status'] == '0') {
|
|
$map['pay_status'] = $_REQUEST['pay_status'];
|
|
if ($_REQUEST['pay_status'] == 3) {
|
|
$map['pay_status'] = 1;
|
|
$map['pay_game_status'] = 1;
|
|
}
|
|
}
|
|
|
|
if ($_REQUEST['timestart']&&!$_REQUEST['timeend']) {
|
|
$map['create_time'] = ['egt',strtotime($_REQUEST['timestart'])];
|
|
}
|
|
|
|
if (!$_REQUEST['timestart']&&$_REQUEST['timeend']) {
|
|
$map['create_time'] = ['elt',strtotime($_REQUEST['timeend'])+86399];
|
|
}
|
|
|
|
if ($_REQUEST['timestart']&&$_REQUEST['timeend']) {
|
|
$map['create_time'] = ['between',[strtotime($_REQUEST['timestart']),strtotime($_REQUEST['timeend'])+86399]];
|
|
// $map['create_time'] = ['elt',strtotime($_REQUEST['time_end'])];
|
|
}
|
|
|
|
$data = M('pay_channel_intention','tab_')
|
|
->field('id,group_concat(tab_pay_channel_intention.`pay_way` ORDER BY tab_pay_channel_intention.create_time ASC) as pay_ways,
|
|
count(if(tab_pay_channel_intention.pay_way="alipay",tab_pay_channel_intention.pay_way,null)) alipay,
|
|
count(if(tab_pay_channel_intention.pay_way="wxpay",tab_pay_channel_intention.pay_way,null)) wxpay,
|
|
count(if(tab_pay_channel_intention.pay_way="sqpay",tab_pay_channel_intention.pay_way,null)) sqshorcut,
|
|
count(if(tab_pay_channel_intention.pay_way="yeepay",tab_pay_channel_intention.pay_way,null)) shorcut,
|
|
tab_pay_channel_intention.user_account,
|
|
tab_pay_channel_intention.pay_amount,
|
|
tab_pay_channel_intention.pay_order_number,tab_pay_channel_intention.create_time,max(create_time) m_time')
|
|
// ->join('left join tab_spend on tab_pay_channel_intention.pay_order_number=tab_spend.pay_order_number')
|
|
->group('tab_pay_channel_intention.pay_order_number')
|
|
->order('tab_pay_channel_intention.id DESC')
|
|
->select(false);
|
|
|
|
|
|
$data = M('pay_channel_intention','tab_')
|
|
->field('a.*,
|
|
CASE WHEN is_submit = 0 THEN 2 ELSE pay_status END as pay_status,
|
|
CASE WHEN is_submit = 0 THEN 2 ELSE pay_game_status END as pay_game_status')
|
|
->join("left join ({$data}) as a on tab_pay_channel_intention.pay_order_number=a.pay_order_number and tab_pay_channel_intention.create_time=m_time")
|
|
->where('pay_ways is not null')
|
|
->select(false);
|
|
|
|
$csvFileName = $xlsName.'.csv';
|
|
//设置好告诉浏览器要下载excel文件的headers
|
|
header('Content-Description: File Transfer');
|
|
header('Content-Type: application/vnd.ms-excel');
|
|
header('Content-Disposition: attachment; filename="'. $csvFileName .'"');
|
|
header('Expires: 0');
|
|
header('Cache-Control: must-revalidate');
|
|
header('Pragma: public');
|
|
$fp = fopen('php://output', 'a');//打开output流
|
|
mb_convert_variables('GBK', 'UTF-8', $xlsCell);
|
|
fputcsv($fp, $xlsCell);//将数据格式化为CSV格式并写入到output流中
|
|
|
|
$accessNum = M()->table('('.$data.') as a')
|
|
->where($map)
|
|
->count();
|
|
|
|
$perSize = 2000;//每次查询的条数
|
|
$pages = ceil($accessNum / $perSize);
|
|
|
|
for($i = 1; $i <= $pages; $i++) {
|
|
|
|
$xlsData = M()->table('('.$data.') as a')
|
|
->field('user_account,pay_amount,alipay,wxpay,shorcut,sqshorcut,create_time,pay_status,pay_game_status,pay_order_number')
|
|
->where($map)
|
|
->limit(($i-1)*$perSize ,$perSize)
|
|
->select();
|
|
|
|
|
|
foreach($xlsData as $key =>$value) {
|
|
|
|
if ($value['pay_status'] == 0) {
|
|
$value['pay_status'] = '支付失败';
|
|
} else if($value['pay_status'] == 1) {
|
|
$value['pay_status'] = '支付成功';
|
|
} else if($value['pay_status'] == 2) {
|
|
$value['pay_status'] = '下单未支付';
|
|
}
|
|
|
|
if ($value['pay_game_status'] == 0) {
|
|
$value['pay_status'] .= '通知失败';
|
|
} else if($value['pay_game_status'] == 1) {
|
|
$value['pay_status'] .= '通知成功';
|
|
} else if($value['pay_game_status'] == 2) {
|
|
$value['pay_status'] .= '未通知';
|
|
}
|
|
unset($value['pay_game_status']);
|
|
|
|
$value['create_time'] = date('Y-m-d H:i:s',$value['create_time']);
|
|
// var_dump($value);die();
|
|
|
|
mb_convert_variables('GBK', 'UTF-8', $value);
|
|
fputcsv($fp, $value);
|
|
}
|
|
unset($xlsData);//释放变量的内存
|
|
//刷新输出缓冲到浏览器
|
|
ob_flush();
|
|
flush();//必须同时使用 ob_flush() 和flush() 函数来刷新输出缓冲。
|
|
}
|
|
|
|
$sum = M('pay_channel_intention','tab_')
|
|
->field('group_concat(tab_pay_channel_intention.`pay_way` ORDER BY tab_pay_channel_intention.create_time ASC) as pay_ways,
|
|
count(if(tab_pay_channel_intention.pay_way="alipay",tab_pay_channel_intention.pay_way,null)) alipay,
|
|
count(if(tab_pay_channel_intention.pay_way="wxpay",tab_pay_channel_intention.pay_way,null)) wxpay,
|
|
count(if(tab_pay_channel_intention.pay_way="sqpay",tab_pay_channel_intention.pay_way,null)) sqshorcut,
|
|
count(if(tab_pay_channel_intention.pay_way="yeepay",tab_pay_channel_intention.pay_way,null)) shorcut,
|
|
tab_pay_channel_intention.user_account,
|
|
tab_pay_channel_intention.pay_amount,
|
|
tab_pay_channel_intention.pay_order_number,tab_pay_channel_intention.create_time,max(create_time) m_time')
|
|
// ->join('left join tab_spend on tab_pay_channel_intention.pay_order_number=tab_spend.pay_order_number')
|
|
->group('tab_pay_channel_intention.pay_order_number')
|
|
->order('tab_pay_channel_intention.create_time ASC')
|
|
->select(false);
|
|
|
|
$sum = M('pay_channel_intention','tab_')
|
|
->field('a.*,
|
|
CASE WHEN is_submit = 0 THEN 2 ELSE pay_status END as pay_status,
|
|
CASE WHEN is_submit = 0 THEN 2 ELSE pay_game_status END as pay_game_status')
|
|
->join("left join ({$sum}) as a on tab_pay_channel_intention.pay_order_number=a.pay_order_number and tab_pay_channel_intention.create_time=m_time")
|
|
->where('pay_ways is not null')
|
|
->select(false);
|
|
|
|
$sum = M()->table('('.$sum.') as a')
|
|
->field("'汇总(检索时间内所有数据的统计)' as user_account,sum(pay_amount) pay_amount,sum(alipay) alipay,sum(wxpay) wxpay,sum(sqshorcut) sqshorcut,sum(shorcut) shorcut")
|
|
->where($map)
|
|
->find();
|
|
|
|
mb_convert_variables('GBK', 'UTF-8', $sum);
|
|
fputcsv($fp, $sum);
|
|
//刷新输出缓冲到浏览器
|
|
ob_flush();
|
|
flush();//必须同时使用 ob_flush() 和flush() 函数来刷新输出缓冲。
|
|
|
|
fclose($fp);
|
|
|
|
$getData = $_GET;
|
|
unset($getData['id']);
|
|
unset($getData['xlsname']);
|
|
|
|
}
|
|
|
|
} |