diff --git a/Application/Admin/Controller/ExportController.class.php b/Application/Admin/Controller/ExportController.class.php index 412f7f792..48f9e40a7 100644 --- a/Application/Admin/Controller/ExportController.class.php +++ b/Application/Admin/Controller/ExportController.class.php @@ -2265,7 +2265,7 @@ class ExportController extends Controller $re_data['pay_time'] = set_show_time($order_detail['pay_time']); $re_data['payed_time'] = set_show_time($order_detail['payed_time']); } elseif($v['tab'] == 'deposit') { - $order_detail = M('deposit', 'tab_')->field('create_time,payed_time,user_account,promote_account,pay_amount,pay_way')->where(['pay_order_number' => $v['pay_order_number']])->find(); + $order_detail = M('deposit', 'tab_')->field('create_time,payed_time,user_account,promote_account,pay_amount,pay_way')->where(['pay_order_number' => $v['pay_order_number']])->find(); $re_data['pay_time'] = set_show_time($order_detail['create_time']); $re_data['payed_time'] = set_show_time($order_detail['payed_time']); } @@ -2475,7 +2475,7 @@ class ExportController extends Controller break; case 28: $xlsCell = array( - "账号ID","玩家账号", "账户平台币", "累计使用平台币", "累计充值平台币", "后台发放平台币" + "账号ID","玩家账号", "平台币余额", "平台币直充余额", "平台币直充支出", "平台币直充金额", "后台发放平台币" ); $params = I('get.'); @@ -2545,54 +2545,94 @@ class ExportController extends Controller ->field('id, account') ->where($map) ->count(); - + $perSize = 1000;//每次查询的条数 $pages = ceil($count / $perSize); for($i = 1; $i <= $pages; $i++) { - $datas = M('user', 'tab_') - ->field('id, account') - ->where($map) - ->limit(($i-1)*$perSize ,$perSize) - ->select(); + // $datas = M('user', 'tab_') + // ->field('id, account') + // ->where($map) + // ->limit(($i-1)*$perSize ,$perSize) + // ->select(); + $map5['v.pay_type'] = 1; + $map5['v.create_time'] = $map['create_time']; + $map5[] = ['u.id = v.user_id'] ; + + $map6[] = ['u.id = v.user_id']; + $map6['v.pay_type'] = 2; + $map6['v.create_time'] = $map['create_time']; + + $map7[] = ['u.id = v.user_id']; + $map7['v.pay_type'] = 3; + $map7['v.create_time'] = $map['create_time']; + + $map8[] = ['u.id = v.user_id']; + $map8['v.create_time'] = $map['create_time']; + + $map9[] = ['u.id = v.user_id']; + $map9['v.pay_type'] = 3; + if (!empty($map['create_time'][1][1])) { + $map9['v.create_time'] = ['elt', $map['create_time'][1][1] ]; + } + if (!empty($map['create_time'][1][0]) && empty($map['create_time'][1][1])) { + $map9['v.create_time'] = ['egt', $map['create_time'][1][0] ]; + } + + + $valueQuery5 = M('value_detail_log', 'tab_')->alias('v')->field('IFNULL(sum(abs(v.value)), 0) as spend_value') + ->where($map5)->buildSql(); + $valueQuery6 = M('value_detail_log', 'tab_')->alias('v')->field('sum(v.value) as spend_value') + ->where($map6)->buildSql(); + $valueQuery7 = M('value_detail_log', 'tab_')->alias('v')->field('sum(v.value) as spend_value') + ->where($map7)->buildSql(); + $valueQuery8 = M('value_detail_log', 'tab_')->alias('v')->field('after_value')->where($map8)->order('create_time desc')->limit(1)->buildSql(); + $valueQuery9 = M('value_detail_log', 'tab_')->alias('v')->field('IFNULL(sum(abs(v.value)), 0) as spend_value') + ->where($map9)->buildSql(); + $datas = M('user', 'tab_')->alias('u')->field("u.id, u.account, {$valueQuery8} as totalvalue, {$valueQuery5} as spendvalue, {$valueQuery6} as deposit, {$valueQuery7} as promoteCoin , if (({$valueQuery8}) - ({$valueQuery9}) > 0, ({$valueQuery8}) - ({$valueQuery9}), 0) as restvalue")->where($map)->limit(($i-1)*$perSize ,$perSize)->order('restvalue desc')->group('u.id')->select(); + $query = M('user', 'tab_')->alias('u')->field("u.id, u.account, {$valueQuery8} as totalvalue, {$valueQuery5} as spendvalue, {$valueQuery6} as deposit, {$valueQuery7} as promoteCoin , if (({$valueQuery8}) - ({$valueQuery9}) > 0, ({$valueQuery8}) - ({$valueQuery9}), 0) as restvalue")->where($map)->order('id desc')->group('u.id')->buildSql(); + $allTotalValue1 = M()->alias('t')->table($query)->sum('t.totalvalue'); + $allRestValue = M()->alias('rest')->table($query)->sum('rest.restvalue'); $allDatas = []; foreach($datas as $key => $data) { $allDatas['user_id'] = $data['id']; $allDatas['user_account'] = $data['account']; $spend = M('value_detail_log', 'tab_')->where(['user_id'=>$data['id'], 'pay_type'=>1])->sum('value'); - $map5['user_id'] = $data['id']; - $map5['pay_type'] = 1; - $map5['create_time'] = $map['create_time']; - $spend = M('value_detail_log', 'tab_')->where($map5)->sum('value'); - + // $map5['user_id'] = $data['id']; + // $map5['pay_type'] = 1; + // $map5['create_time'] = $map['create_time']; + // $spend = M('value_detail_log', 'tab_')->where($map5)->sum('value'); + $spend = $data['spendvalue']; if(empty($spend)) { $spend = '0.00'; }else { $spend = number_format(abs($spend),2,'.',''); } - $map6['user_id'] = $data['id']; - $map6['pay_type'] = 2; - $map6['create_time'] = $map['create_time']; - $deposit = M('value_detail_log', 'tab_')->where($map6)->sum('value'); + // $map6['user_id'] = $data['id']; + // $map6['pay_type'] = 2; + // $map6['create_time'] = $map['create_time']; + // $deposit = M('value_detail_log', 'tab_')->where($map6)->sum('value'); + $deposit = $data['deposit']; if(empty($deposit)) { $deposit = '0.00'; } - $map7['user_id'] = $id; - $map7['pay_type'] = 3; - $map7['create_time'] = $map['create_time']; - $promoteCoin = M('value_detail_log', 'tab_')->where($map7)->sum('value'); + // $map7['user_id'] = $id; + // $map7['pay_type'] = 3; + // $map7['create_time'] = $map['create_time']; + // $promoteCoin = M('value_detail_log', 'tab_')->where($map7)->sum('value'); + $promoteCoin = $data['promotecoin']; if(empty($promoteCoin)) { $promoteCoin = '0.00'; } - - $map8['user_id'] = $data['id']; - $map8['create_time'] = $map['create_time']; - $newValueByTimeDatas = M('value_detail_log', 'tab_')->field('after_value')->where($map8)->order('create_time desc')->limit(1)->select(); - if(empty($newValueByTimeDatas)) { - $aValue = '0.00'; - }else { - $aValue = $newValueByTimeDatas[0]['after_value']; + $restValue = $data['restvalue']; + if(empty($restValue)) { + $restValue = '0.00'; } - $allDatas['bind_balance'] = $aValue; + $alltotalvalue = $data['totalvalue']; + if(empty($alltotalvalue)) { + $alltotalvalue = '0.00'; + } + $allDatas['bind_balance'] = $alltotalvalue; + $allDatas['rest_value'] = $restValue ; $allDatas['spend_amount'] = $spend; $allDatas['deposit_amount'] = $deposit; $allDatas['coin_amount'] = $promoteCoin; @@ -2608,7 +2648,8 @@ class ExportController extends Controller } $alldatas1['user_id'] = "汇总(检索时间内所有数据的统计)"; $alldatas1['user_account'] = ""; - $alldatas1['bind_balance'] = $banlaceTotal; + $alldatas1['bind_balance'] = $allTotalValue1; + $alldatas1['restvalue'] = $allRestValue; $alldatas1['spend_amount'] = abs($totalSpend); $alldatas1['deposit_amount'] = $deposit1; $alldatas1['coin_amount'] = $promoteCoin; @@ -2679,7 +2720,6 @@ class ExportController extends Controller ->where($map) ->limit(($i-1)*$perSize ,$perSize) ->select(); - foreach ($valueDetailDatas as $key => $valueDetailData) { $vlaueDetailData['order_number'] = $valueDetailData['order_number']; $vlaueDetailData['create_time'] = date('Y-m-d H:i:s', $valueDetailData['create_time']); @@ -2697,14 +2737,22 @@ class ExportController extends Controller } $vlaueDetailData['value'] = $valueDetailData['value']; $vlaueDetailData['after_value'] = $valueDetailData['after_value']; + $map8['user_id'] = $id; + $map8['create_time'] = $map['create_time']; + $newValueByTimeDatas = M('value_detail_log', 'tab_')->field('after_value')->where($map8)->group('user_id')->select(); + $aValue = $newValueByTimeDatas['after_value']; + $allDatas['bind_balance'] = $aValue; + $allDatas['spend_amount'] = $spend; + $allDatas['deposit_amount'] = $deposit; + $allDatas['coin_amount'] = $promoteCoin; mb_convert_variables('GBK', 'UTF-8', $vlaueDetailData); fputcsv($fp, $vlaueDetailData); } - unset($vlaueDetailDatas);//释放变量的内存 - //刷新输出缓冲到浏览器 - ob_flush(); - flush();//必须同时使用 ob_flush() 和flush() 函数来刷新输出缓冲。 + + + // mb_convert_variables('GBK', 'UTF-8', $allDatas); + // fputcsv($fp, $allDatas); } if($t >= 0 ) { $fuhao = '+'; @@ -8983,7 +9031,7 @@ class ExportController extends Controller array('status','状态'), array('user_account','游戏账号'), array('creator','创单人'), - array('handler','创单人'), + array('handler','接单人'), array('created_time', '创单时间'), array('score', '分数'), array('attachment_type', '附件') diff --git a/Application/Admin/Controller/FinanceController.class.php b/Application/Admin/Controller/FinanceController.class.php index af36e5c70..1ce945076 100644 --- a/Application/Admin/Controller/FinanceController.class.php +++ b/Application/Admin/Controller/FinanceController.class.php @@ -1243,6 +1243,10 @@ class FinanceController extends ThinkController $nowTime = date('Y-m-d'); $initBegTime = date('Y-m-d', strtotime('-6 day', strtotime($nowTime))); $initEndTime = date('Y-m-d', time()); + $sort = $_REQUEST['sort']; + if (empty($sort)) { + $sort = 13; + } if(!empty($_REQUEST['user_account'])) { $map['account'] = $_REQUEST['user_account']; $map0['account'] = $_REQUEST['user_account']; @@ -1266,11 +1270,102 @@ class FinanceController extends ThinkController $map['create_time'] = array('between', [strtotime($initBegTime), strtotime($initEndTime) + 86399]); } - $datas = M('user', 'tab_') - ->field('id, account') - ->where($map0) - ->page($page,$row) - ->select(); + $order = 'id desc'; + if ($sort == 1) { + $order = 'spendvalue desc'; + } + if ($sort == 2) { + $order = 'deposit desc'; + } + if ($sort == 3 || $sort == 5) { + $order = 'spendvalue desc'; + } + + if ($sort == 4) { + $order = 'spendvalue asc'; + } + + if ($sort == 6) { + $order = 'deposit desc'; + } + if ($sort == 7) { + $order = 'deposit asc'; + } + + if ($sort == 9) { + $order = 'promoteCoin desc'; + } + if ($sort == 10) { + $order = 'promoteCoin asc'; + } + + if ($sort == 11) { + $order = 'id asc'; + } + if ($sort == 12) { + $order = 'id desc'; + } + + if ($sort == 16) { + $order = 'restvalue desc'; + } + if ($sort == 17) { + $order = 'restvalue asc'; + } + + if ($sort == 19) { + $order = 'totalvalue desc'; + } + if ($sort == 20) { + $order = 'totalvalue asc'; + } + $this->assign('sorting', $sort); + $map5['v.pay_type'] = 1; + $map5['v.create_time'] = $map['create_time']; + $map5[] = ['u.id = v.user_id'] ; + + $map6[] = ['u.id = v.user_id']; + $map6['v.pay_type'] = 2; + $map6['v.create_time'] = $map['create_time']; + + $map7[] = ['u.id = v.user_id']; + $map7['v.pay_type'] = 3; + $map7['v.create_time'] = $map['create_time']; + + $map8[] = ['u.id = v.user_id']; + $map8['v.create_time'] = $map['create_time']; + + $map9[] = ['u.id = v.user_id']; + $map9['v.pay_type'] = 3; + if (!empty($map['create_time'][1][1])) { + $map9['v.create_time'] = ['elt', $map['create_time'][1][1] ]; + } + if (!empty($map['create_time'][1][0]) && empty($map['create_time'][1][1])) { + $map9['v.create_time'] = ['egt', $map['create_time'][1][0] ]; + } + + $valueQuery5 = M('value_detail_log', 'tab_')->alias('v')->field('IFNULL(sum(abs(v.value)), 0) as spend_value') + ->where($map5)->buildSql(); + $valueQuery6 = M('value_detail_log', 'tab_')->alias('v')->field('sum(v.value) as spend_value') + ->where($map6)->buildSql(); + $valueQuery7 = M('value_detail_log', 'tab_')->alias('v')->field('sum(v.value) as spend_value') + ->where($map7)->buildSql(); + $valueQuery9 = M('value_detail_log', 'tab_')->alias('v')->field('IFNULL(sum(abs(v.value)), 0) as spend_value') + ->where($map9)->buildSql(); + $valueQuery8 = M('value_detail_log', 'tab_')->alias('v')->field('after_value')->where($map8)->order('create_time desc')->limit(1)->buildSql(); + $datas = M('user', 'tab_')->alias('u')->field("u.id, u.account, {$valueQuery8} as totalvalue, {$valueQuery5} as spendvalue, {$valueQuery6} as deposit, {$valueQuery7} as promoteCoin , if (({$valueQuery8}) - ({$valueQuery9}) > 0, ({$valueQuery8}) - ({$valueQuery9}), 0) as restvalue")->where($map0)->page($page,$row)->order($order)->group('u.id')->select(); + $query = M('user', 'tab_')->alias('u')->field("u.id, u.account, {$valueQuery8} as totalvalue, {$valueQuery5} as spendvalue, {$valueQuery6} as deposit, {$valueQuery7} as promoteCoin , if (({$valueQuery8}) - ({$valueQuery9}) > 0, ({$valueQuery8}) - ({$valueQuery9}), 0) as restvalue")->where($map0)->order($order)->group('u.id')->buildSql(); + $allTotalValue1 = M()->alias('t')->table($query)->sum('t.totalvalue'); + $allRestValue = M()->alias('rest')->table($query)->sum('rest.restvalue'); + + // var_dump($datas);die(); + // $datas = M('user', 'tab_') + // ->field('id, account') + // ->where($map0) + // ->page($page,$row) + // ->order('id desc') + // ->select(); + $count = M('user', 'tab_') ->field('id, account') ->where($map) @@ -1280,35 +1375,37 @@ class FinanceController extends ThinkController $ids = [-100]; } $allDatas = []; + foreach($datas as $key => $data) { $id = $data['id']; $account = $data['account']; $allDatas[$key]['user_id'] = $id; $allDatas[$key]['user_account'] = $account; - $map5['user_id'] = $id; - $map5['pay_type'] = 1; - $map5['create_time'] = $map['create_time']; - $spend = M('value_detail_log', 'tab_')->where($map5)->sum('value'); + $spend = $data['spendvalue']; if(empty($spend)) { $spend = '0.00'; }else { $spend = number_format(abs($spend),2,'.',''); } - $map6['user_id'] = $id; - $map6['pay_type'] = 2; - $map6['create_time'] = $map['create_time']; - $deposit = M('value_detail_log', 'tab_')->where($map6)->sum('value'); + $deposit = $data['deposit']; if(empty($deposit)) { $deposit = '0.00'; } - $map7['user_id'] = $id; - $map7['pay_type'] = 3; - $map7['create_time'] = $map['create_time']; - $promoteCoin = M('value_detail_log', 'tab_')->where($map7)->sum('value'); + $promoteCoin = $data['promotecoin']; if(empty($promoteCoin)) { $promoteCoin = '0.00'; } + $restValue = $data['restvalue']; + if(empty($restValue)) { + $restValue = '0.00'; + } + $alltotalvalue = $data['totalvalue']; + if(empty($alltotalvalue)) { + $alltotalvalue = '0.00'; + } // $allDatas[$key]['bind_balance'] = $bind_balance; + $allDatas[$key]['after_value'] = $alltotalvalue ; + $allDatas[$key]['rest_value'] = $restValue ; $allDatas[$key]['spend_amount'] = $spend; $allDatas[$key]['deposit_amount'] = $deposit; $allDatas[$key]['coin_amount'] = $promoteCoin; @@ -1327,36 +1424,35 @@ class FinanceController extends ThinkController $map3['create_time'] = $map['create_time']; $map3['pay_type'] = 3; $allpromoteCoin = M('value_detail_log', 'tab_')->where($map3)->sum('value'); - $allpromoteCoin = empty($promoteCoin) ? '0.00' : number_format($allpromoteCoin,2,'.',''); - + $allpromoteCoin = empty($allpromoteCoin) ? '0.00' : number_format($allpromoteCoin,2,'.',''); $map4['create_time'] = $map['create_time']; if($_REQUEST['user_account']) { $banlace = M('value_detail_log', 'tab_')->field('user_id, after_value')->where($map4)->order('create_time desc')->limit(1)->select(); }else { $banlace = M('value_detail_log', 'tab_')->field('user_id, after_value')->where($map4)->order('create_time desc')->select(); } - $banlaceTotal = '0.00'; - foreach($banlace as $k222 => $vvv) { - $banlaceTotal += $vvv['after_value']; - } - $banlaceTotal = number_format($banlaceTotal,2,'.',''); + // $banlaceTotal = '0.00'; + // foreach($banlace as $k222 => $vvv) { + // $banlaceTotal += $vvv['after_value']; + // } + // $banlaceTotal = number_format($banlaceTotal,2,'.',''); $map['user_id'] = ['in', $ids]; - $newValueByTimeDatas = M('value_detail_log', 'tab_')->field('user_id, after_value, create_time')->where($map)->order('create_time desc')->limit(1)->select(); - - // var_dump($newValueByTimeDatas);die(); - foreach ($allDatas as $k => $allData) { - $allDatas[$k]['after_value'] = "0.00"; - foreach ($newValueByTimeDatas as $key1 => $newValueByTimeData ) { - if (intval($allData['user_id']) == intval($newValueByTimeData['user_id'])) { - $allDatas[$k]['after_value'] = $newValueByTimeData['after_value']; - break; - }else { - $allDatas[$k]['after_value'] = "0.00"; + // $newValueByTimeDatas = M('value_detail_log', 'tab_')->field('user_id, after_value, create_time')->where($map)->order('create_time desc')->limit(1)->select(); + // var_dump($newValueByTimeDatas); + // // var_dump($newValueByTimeDatas);die(); + // foreach ($allDatas as $k => $allData) { + // $allDatas[$k]['after_value'] = "0.00"; + // foreach ($newValueByTimeDatas as $key1 => $newValueByTimeData ) { + // if (intval($allData['user_id']) == intval($newValueByTimeData['user_id'])) { + // $allDatas[$k]['after_value'] = $newValueByTimeData['after_value']; + // break; + // }else { + // $allDatas[$k]['after_value'] = "0.00"; - } - } + // } + // } - } + // } $page = set_pagination($count,$row); if($page) {$this->assign('_page', $page);} if(empty($_REQUEST['timestart']) && empty($_REQUEST['timeend']) && empty(I('user_account'))) { @@ -1366,12 +1462,12 @@ class FinanceController extends ThinkController $this->assign('starttime', $_REQUEST['timestart']); $this->assign('endtime', $_REQUEST['timeend']); } - $this->assign('banlaceTotal', $banlaceTotal); + $this->assign('banlaceTotal', $allTotalValue1); $this->assign('total', $totalSpend); $this->assign('deposit', $deposit); $this->assign('promoteCoin', $allpromoteCoin); $this->assign('data', $allDatas); - + $this->assign('resttotal', $allRestValue); $this->display(); } diff --git a/Application/Admin/View/Finance/valueDetail.html b/Application/Admin/View/Finance/valueDetail.html index 35d34c4cd..b894fbe00 100644 --- a/Application/Admin/View/Finance/valueDetail.html +++ b/Application/Admin/View/Finance/valueDetail.html @@ -25,6 +25,9 @@ height:26px;line-height:26px;font-size:12px; } .select2-results__option[aria-selected] {font-size:12px;} + .pointer-hand { + cursor: pointer; + }