get(); $query = http_build_query($get); $this->assign('get',$get); $this->assign('query',$query); // 接收查询条件 $startDate = Request::instance()->get('startDate'); $endDate = Request::instance()->get('endDate'); $username = Request::instance()->get('username'); $export = Request::instance()->get('export'); $agent_id = Request::instance()->get('agent_id'); // 代理查询条件 $where = array(); // $where['agent_parent_id'] = 0; $where['agent'] = 1; if($username){ $where['username'] = $username; unset($where['agent_parent_id']); } if($agent_id > 0){ $where['agent_parent_id'] = $agent_id; } $agent_list = Db::name('user')->where($where)->select(); // 时间条件(默认:今天07:00:00 ~ 明天06:59:59) if($startDate){ $startTime = strtotime($startDate); }else{ $startTime = strtotime(date('Y-m-d') . ' 07:00:00'); $get['startDate'] = date('Y-m-d H:i:s',$startTime); } if($endDate){ $endTime = strtotime($endDate); }else{ $endTime = strtotime(date('Y-m-d', strtotime('+1 day')) . ' 06:59:59'); $get['endDate'] = date('Y-m-d H:i:s',$endTime); } $this->assign('get',$get); // 数据查询条件 $timeWhere = array(); $timeWhere['create_time'] = array('between',[$startTime,$endTime]); $dataAgent = array(); foreach($agent_list as $k => $v){ // 查询是否有下级代理 $v['child_agent'] = Db::name('user')->where('agent_parent_id',$v['id'])->count(); // 自己的洗码收益 $v['self_income_xima'] = Db::name('xima')->where('user_id',$v['id'])->where($timeWhere)->sum('maliang'); $v['self_income_xima'] = $v['self_income_xima'] * (1 - $v['agent_cs']/100); // 自己的占成收益 $v['self_income_cs'] = Db::name('cs')->where('user_id',$v['id'])->where($timeWhere)->sum('share_amount'); // 总收益(自己的洗码 + 自己的占成) $v['total_income'] = $v['self_income_xima'] + $v['self_income_cs']; // 有数据才显示 if($v['total_income'] != 0){ $dataAgent[] = $v; } } $agent_list = $dataAgent; //导出excel列表 if($export == 1){ if($agent_list){ //重新组合 $excelData = array(); foreach($agent_list AS $k => $v){ $excelData[$k][0] = $v['username']; $excelData[$k][1] = $v['agent_cs']; $excelData[$k][2] = $v['self_income_cs']; $excelData[$k][3] = $v['self_income_xima']; $excelData[$k][4] = $v['agent_ximalv']; $excelData[$k][5] = $v['total_income']; } $title = array('用户名','占成','占成收益','洗码率','洗码收益','总收益金额'); if($startDate && $endDate){ $this->exportExcelCore($excelData, '收益日报表-'.$startDate.'--'.$endDate, $title); }else{ $this->exportExcelCore($excelData, '收益日报表', $title); } exit('已导出支持列表,请不要重复刷新该页面!'); }else{ exit('没有可以导出的列表!'); } } // 渲染参数和模板 $this->assign('agent_list',$agent_list); return $this->fetch(); } // 收益报表打印 public function profit_print(){ // 接收分页的条件 $get = Request::instance()->get(); $startDate = Request::instance()->get('startDate'); $endDate = Request::instance()->get('endDate'); $username = Request::instance()->get('username'); $agent_id = Request::instance()->get('agent_id'); // 代理查询条件 $where = array(); $where['agent_parent_id'] = 0; $where['agent'] = 1; if($username){ $where['username'] = $username; unset($where['agent_parent_id']); } if($agent_id > 0){ $where['agent_parent_id'] = $agent_id; } $agent_list = Db::name('user')->where($where)->select(); // 统计数据的时间条件 if(!$startDate){ // 默认日期为当天 $startDate = date('Y-m-d H:i:s',strtotime(date('Y-m-d'))); $startTime = strtotime(date('Y-m-d')); }else{ $startTime = strtotime($startDate); } if(!$endDate){ // 默认日期为当天 $endDate = date('Y-m-d H:i:s',time()); $endTime = time(); }else{ $endTime = strtotime($endDate); } // 查询数据条件 $timeWhere = array(); $timeWhere['create_time'] = array('between',[$startTime,$endTime]); $dataAgent = array(); foreach($agent_list as $k => $v){ // 自己的洗码收益 $v['self_income_xima'] = Db::name('xima')->where('user_id',$v['id'])->where($timeWhere)->sum('maliang'); $v['self_income_xima'] = $v['self_income_xima'] * (1 - $v['agent_cs']/100); // 自己的占成收益 $v['self_income_cs'] = Db::name('cs')->where('user_id',$v['id'])->where($timeWhere)->sum('share_amount'); // 总收益 $v['total_income'] = $v['self_income_xima'] + $v['self_income_cs']; // 有数据才显示 if($v['total_income'] != 0){ $dataAgent[] = $v; } } $agent_list = $dataAgent; // 渲染参数和模板 $this->assign('agent_list',$agent_list); return $this->fetch(); } // 充值查询 public function user_recharge(){ // 用于分页和搜索查询的数据 $get = Request::instance()->get(); $query = http_build_query($get); $this->assign('get',$get); $this->assign('query',$query); // 接收参数 $startDate = Request::instance()->get('startDate'); $endDate = Request::instance()->get('endDate'); $username = Request::instance()->get('username'); $export = Request::instance()->get('export'); // 转换日期时间 if($startDate){ $startTime = strtotime($startDate); }else{ $startTime = 0; } if($endDate){ $endTime = strtotime($endDate); }else{ $endTime = time(); } // 拼装搜索条件 $where = array(); $whereStr = ''; $where['create_time'] = array('between',[$startTime,$endTime]); if($username){ $user = Db::connect('DB2')->name('user')->where(['username'=>$username,'is_delete'=>0])->find(); if($user){ // $where['user_id'] = $user['id']; $whereStr = "find_in_set({$user['id']},u.agent_parent_id_path)"; }else{ $where['user_id'] = 0; } } $list = Db::connect('DB2')->name('user_recharge') ->alias('r') ->field('r.*,u.username,u.nickname') ->join('cg_user u','r.user_id=u.id') ->where($where) ->where($whereStr) ->order('r.id desc') ->paginate(20,false,array('query'=>$get)); foreach($list as $k => $v){ // 信息组装 $v['create_time'] = date('Y-m-d H:i:s',$v['create_time']); // 数据格式转换 $v['amount'] = round($v['amount'],2); $v['old_money'] = round($v['old_money'],2); $v['new_money'] = round($v['new_money'],2); $list[$k] = $v; } // 汇总金额 $total = Db::connect('DB2') ->name('user_recharge') ->alias('r') ->field('sum(r.amount) as amount, sum(r.money) as money') ->join('cg_user u','r.user_id=u.id') ->where($where)->find(); //导出excel列表 if($export == 1){ if($list){ //重新组合 $excelData = array(); foreach($list AS $k => $v){ $excelData[$k][] = $v['nickname']; $excelData[$k][] = $v['username']; $excelData[$k][] = $v['amount']; $excelData[$k][] = $v['money']; $excelData[$k][] = $v['old_money']; $excelData[$k][] = $v['new_money']; $excelData[$k][] = $v['out_trade_no']; $excelData[$k][] = $v['from_addr']; $excelData[$k][] = $v['to_addr']; } $title = array('用户名','帐号','充值U币','充值金额','充值前余额','充值后余额','外部交易号','转账地址','入账地址'); if($startDate && $endDate){ $this->exportExcelCore($excelData, '充值报表-'.$startDate.'--'.$endDate, $title); }else{ $this->exportExcelCore($excelData, '充值报表', $title); } exit('已导出支持列表,请不要重复刷新该页面!'); }else{ exit('没有可以导出的列表!'); } } // 渲染参数和模板 $this->assign('list',$list); $this->assign('total',$total); return $this->fetch(); } // 提现查询 public function user_withdraw(){ // 用于分页和搜索查询的数据 $get = Request::instance()->get(); $query = http_build_query($get); $this->assign('get',$get); $this->assign('query',$query); // 接收参数 $startDate = Request::instance()->get('startDate'); $endDate = Request::instance()->get('endDate'); $username = Request::instance()->get('username'); $export = Request::instance()->get('export'); // 转换日期时间 if($startDate){ $startTime = strtotime($startDate); }else{ $startTime = 0; } if($endDate){ $endTime = strtotime($endDate); }else{ $endTime = time(); } // 拼装搜索条件 $where = array(); $whereStr = ''; $where['create_time'] = array('between',[$startTime,$endTime]); if($username){ $user = Db::connect('DB2')->name('user')->where(['username'=>$username,'is_delete'=>0])->find(); if($user){ // $where['user_id'] = $user['id']; $whereStr = "find_in_set({$user['id']},u.agent_parent_id_path)"; }else{ $where['user_id'] = 0; } } $list = Db::connect('DB2')->name('user_withdraw') ->alias('r') ->field('r.*,u.username,u.nickname') ->join('cg_user u','r.user_id=u.id') ->where($where) ->where($whereStr) ->order('r.id desc') ->paginate(20,false,array('query'=>$get)); // 提现状态 $status = [ 'SUCCESS' => "提现成功", 'FAIL' => "提现失败", 'WAIT' => "等待审核", 'AGREE' => "已同意", 'DISAGREE' => "已拒绝", 'CANCEL' => "已取消", ]; foreach($list as $k => $v){ // 信息组装 $v['create_time'] = date('Y-m-d H:i:s',$v['create_time']); // 提现状态 $v['status_msg'] = $status[$v['status']]; // 操作类型 if($v['operator_source'] == 1){ $v['operator_source_msg'] = '总台操作'; }else if($v['operator_source'] == 2){ $v['operator_source_msg'] = '代理操作'; }else{ $v['operator_source_msg'] = ''; } // 数据格式转换 $v['amount'] = round($v['amount'],2); $v['old_money'] = round($v['old_money'],2); $v['new_money'] = round($v['new_money'],2); $list[$k] = $v; } // 汇总金额 $total = Db::connect('DB2') ->name('user_withdraw') ->alias('r') ->field('sum(r.amount) as amount, sum(r.service_fee) as service_fee, sum(r.money) as money, sum(r.service_fee_money) as service_fee_money') ->join('cg_user u','r.user_id=u.id') ->where($where)->find(); //导出excel列表 if($export == 1){ if($list){ //重新组合 $excelData = array(); foreach($list AS $k => $v){ $excelData[$k][] = $v['create_time']; $excelData[$k][] = $v['nickname']; $excelData[$k][] = $v['username']; $excelData[$k][] = $v['amount']; $excelData[$k][] = $v['service_fee']; $excelData[$k][] = $v['money']; $excelData[$k][] = $v['service_fee_money']; $excelData[$k][] = $v['old_money']; $excelData[$k][] = $v['new_money']; $excelData[$k][] = $v['status_msg']; $excelData[$k][] = $v['operator_nickname']."(".$v['operator_username'].")"; $excelData[$k][] = $v['operator_source_msg']; } $title = array('时间','用户名','帐号','提现U币','手续费(U币)','提现金额','手续费金额','提现前余额','提现后余额','审核状态','操作人[账号]','操作类型'); if($startDate && $endDate){ $this->exportExcelCore($excelData, '提现报表-'.$startDate.'--'.$endDate, $title); }else{ $this->exportExcelCore($excelData, '提现报表', $title); } exit('已导出支持列表,请不要重复刷新该页面!'); }else{ exit('没有可以导出的列表!'); } } // 渲染参数和模板 $this->assign('list',$list); $this->assign('total',$total); return $this->fetch(); } // 处理提现 public function doUserWithdraw() { if(Request::instance()->isPost()){ // 总代类型判断 1现金线 $user_info = Session::get('user_info'); $user_info = Db::connect('DB2')->name('admin')->where('id',$user_info['id'])->find(); $id = Request::instance()->post('id'); $withdraw = Db::name('user_withdraw')->where('id',$id)->find(); if(empty($withdraw) || $withdraw['status'] != "WAIT"){ die(json_encode(['code'=>0,'msg'=>'非待审核状态无法操作!'])); } // 审核通过 $Usdt = new Usdt(); $res = $Usdt->applyUserWithdraw($withdraw['order_no'],$withdraw['to_address'],$withdraw['amount']); if($res['code'] == 0){ Db::name('user_withdraw')->where('id',$id)->update([ 'status' => 'AGREE', 'type' => $res['processor']['asset'], 'from_address' => $res['processor']['from_addr'], 'audit_time' => time(), 'operator_source' => 2, 'operator_id' => $user_info['id'], 'operator_username' => $user_info['admin'], ]); die(json_encode(['code'=>1,'msg'=>'审核通过!'])); }else{ Db::startTrans(); // 退返余额 $user = Db::name('user')->where('id',$withdraw['user_id'])->lock(true)->find(); $money = $user['money'] + $withdraw['money'] + $withdraw['service_fee_money']; Db::name('user')->where('id',$withdraw['user_id'])->update(['money' => $money]); // 更新记录 Db::name('user_withdraw')->where('id',$id)->update([ 'status' => 'FAIL', 'err_msg' => $res['debug'], 'audit_time' => time(), 'operator_source' => 2, 'operator_id' => $user_info['id'], 'operator_username' => $user_info['admin'] ]); Db::commit(); die(json_encode(['code'=>0,'msg'=>'提现失败!'])); } } } }