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.

179 lines
8.2 KiB
PHP

<?php
namespace Admin\Controller;
class SuperStatisticalController extends ThinkController
{
private $ticketList_url = 'https://app.ipa365.com/Kirin/OpenApi/TicketList';
private $pay_way = [
0 => '未知',
1 => '支付宝',
2 => '微信',
];
public function index() {
$params = I('get.');
$startDate = empty($params['timestart']) ? '': $params['timestart'];
$endDate = empty($params['timeend']) ? '' : $params['timeend'];
$startTime = strtotime($startDate);
$endTime = strtotime($endDate) + 86399;
if(!empty($startDate)) {
$where['pay_time'] = array('BETWEEN', [$startTime, $endTime]);
$map['pay_time'] = array('BETWEEN', [$startTime, $endTime]);
}
if(isset($params['game_id'])) {
$where['game_id'] = $params['game_id'];
$map['game_id'] = $params['game_id'];
}
$map['supersign_token'] = ['NEQ',''];
$supersign_game = M('game', 'tab_')->field('id,game_name,supersign_token')->where(['supersign_token' => ['NEQ','']])->select();
$supersign_token = array_column($supersign_game, 'supersign_token');
$authorization_all_num = 0;
foreach($supersign_token as $k => $v) {
$authorization_all_num += count($this->game_supersign_num($v));
}
$this->checkListOrCountAuthRestMap($map,[]);
$where['pay_status'] = 1;
$data['buy_num'] = M('game_supersign', 'tab_')->where($where)->count();
$pay_price = M('game_supersign', 'tab_')->field('sum(pay_price) as pay_price')->where($where)->select();
$data['money_all'] = $pay_price[0]['pay_price'] == '' ? 0 : $pay_price[0]['pay_price'];
$data['authorization_all_num'] = $authorization_all_num;
$this->assign('data', $data);
$this->display('index');
}
public function lists($p = 1,$row = 10) {
$page = $p ? $p : 1;
$row = $row ? $row : 10;
$params = I('get.');
if(isset($params['timestart']) && isset($params['timeend'])) {
$startTime = strtotime($params['timestart']);
$endTime = strtotime($params['timeend']) + 86399;
$map['pay_time'] = array('BETWEEN', [$startTime, $endTime]);
}
if(isset($params['game_id'])) {
$map['tab_game.id'] = $params['game_id'];
}
$map['supersign_token'] = ['NEQ',''];
$supersign_game = M('game', 'tab_')->field('tab_game.id,tab_game.game_name,tab_game.supersign_token')->join('tab_game_supersign on tab_game_supersign.game_id = tab_game.id')->where($map)->group('tab_game.id')->page($page,$row)->select();
$data = [];
$num['authorization'] = 0;
$num['pay_num'] = 0;
$num['promote_super_money'] = 0;
$num['official_super_money'] = 0;
foreach($supersign_game as $k => $v) {
$arr['game_name'] = $v['game_name'];
$arr['authorization_num'] = count($this->game_supersign_num($v['supersign_token']));
$num['authorization'] += $arr['authorization_num'];
if(isset($params['timestart']) && isset($params['timeend'])) {
$startTime = strtotime($params['timestart']);
$endTime = strtotime($params['timeend']) + 86399;
$where['pay_time'] = array('BETWEEN', [$startTime, $endTime]);
}
$where['game_id'] = $v['id'];
$where['pay_status'] = 1;
$game_supersign = M('game_supersign', 'tab_')->field('promote_id,pay_price')->join('tab_user on tab_game_supersign.user_id = tab_user.id')->where($where)->select();
$arr['pay_game_supersign'] = count($game_supersign);
$num['pay_num'] += $arr['pay_game_supersign'];
$arr['promote_super_money'] = 0;
$arr['official_super_money'] = 0;
foreach($game_supersign as $key => $val) {
if($val['promote_id'] != 0) {
$arr['promote_super_money'] += $val['pay_price'];
}else {
$arr['official_super_money'] += $val['pay_price'];
}
}
$num['official_super_money'] += $arr['official_super_money'];
$num['promote_super_money'] += $arr['promote_super_money'];
$data[] = $arr;
}
$count = count(M('game', 'tab_')->field('tab_game.id,tab_game.game_name,tab_game.supersign_token')->join('tab_game_supersign on tab_game_supersign.game_id = tab_game.id')->where($map)->group('tab_game.id')->select());
$page = set_pagination($count, $row);
$this->assign('_page', $page);
$this->assign('data', $data);
$this->assign('num', $num);
$this->display('lists');
}
private function game_supersign_num($token) {
$re_data = [];
$arr['token'] = $token;
$arr['limit'] = 2000;
for ($i = 1;$i > 0;$i++) {
if($i != 1) {
$pop = array_pop($data);
$arr['lastid'] = $pop['id'];
}
$curl_re = json_decode(curl_post($this->ticketList_url,$arr),true);
if($curl_re['errno'] == 0) {
$data = $curl_re['data']['list'];
$re_data = array_merge($re_data,$data);
} else {
break;
}
if(count($data) != $arr['limit']) {
break;
}
}
return $re_data;
}
public function superDetail($p = 1,$row = 10) {
$page = $p ? $p : 1;
$row = $row ? $row : 10;
$params = I('get.');
$map['tab_game_supersign.pay_status'] = 1;
if (isset($params['order_id'])) {
$map['tab_game_supersign.order_id'] = $params['order_id'];
}
if (isset($params['pay_way'])) {
$map['tab_game_supersign.pay_way'] = $params['pay_way'];
}
if (isset($params['account'])) {
$map['tab_user.account'] = $params['account'];
}
if (isset($params['promote_id'])) {
$promoteId = $params['promote_id'];
if ($promoteId == 0) {
$map['promote_id'] = 0;
} else {
$promoteMap['chain'] = ['like', "%/$promoteId/%"];
$promoteIds = M('Promote', 'tab_')->where($promoteMap)->getField('id', true);
$promoteIds[] = $promoteId;
$map['tab_user.promote_id'] = ['in', $promoteIds];
}
}
if(isset($params['timestart']) && isset($params['timeend'])) {
$startTime = strtotime($params['timestart']);
$endTime = strtotime($params['timeend']) + 86399;
$map['tab_game_supersign.pay_time'] = array('BETWEEN', [$startTime, $endTime]);
}
if(isset($params['game_id'])) {
$map['tab_game_supersign.game_id'] = $params['game_id'];
}
$data = M('game_supersign', 'tab_')->field('tab_game_supersign.id,tab_game_supersign.pay_way,tab_game_supersign.order_id,tab_user.account,tab_user.promote_account,tab_user.device_number,tab_game.game_name,tab_game_supersign.pay_time,tab_game_supersign.pay_price')->join('tab_user on tab_game_supersign.user_id = tab_user.id')->join('tab_game on tab_game_supersign.game_id = tab_game.id')->where($map)->page($page,$row)->order('id DESC')->select();
$count = M('game_supersign', 'tab_')->field('tab_game_supersign.order_id,tab_user.account,tab_user.promote_account,tab_user.device_number,tab_game.game_name,tab_game_supersign.pay_time')->join('tab_user on tab_game_supersign.user_id = tab_user.id')->join('tab_game on tab_game_supersign.game_id = tab_game.id')->where($map)->count();
foreach($data as $k => $v) {
$data[$k]['pay_way'] = $this->pay_way[$v['pay_way']];
}
$pay_price = M('game_supersign', 'tab_')->field('sum(pay_price) as pay_price')->where($map)->select();
$super_money_all = $pay_price[0]['pay_price'] == '' ? 0 : $pay_price[0]['pay_price'];
$page = set_pagination($count, $row);
$this->assign('_page', $page);
$this->assign('data', $data);
$this->assign('super_money_all', $super_money_all);
$this->display('superDetail');
}
}