445 lines
17 KiB
PHP
445 lines
17 KiB
PHP
<?php
|
|
|
|
namespace app\admin\controller;
|
|
|
|
use pay\Usdt;
|
|
use think\Db;
|
|
use think\Request;
|
|
use think\Session;
|
|
|
|
class Report extends Common{
|
|
// 收益报表
|
|
public function profit(){
|
|
// 接收分页的条件
|
|
$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');
|
|
$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){
|
|
$startTime = strtotime($startDate);
|
|
}else{
|
|
$startTime = strtotime(date('Y-m-d'));
|
|
$get['startDate'] = date('Y-m-d H:i:s',$startTime);
|
|
}
|
|
if($endDate){
|
|
$endTime = strtotime($endDate);
|
|
}else{
|
|
$endTime = time();
|
|
$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'=>'提现失败!']));
|
|
}
|
|
}
|
|
}
|
|
} |