model = model('Withdraw')->setConnect();
$this->view->assign("stateList", $this->model->getStateList());
}
/**
* 导出
*/
public function export(){
ini_set('memory_limit', '256M'); //内存限制
if($this->group == 3){
$columns = [ '代理商', '提现时间', '划账日期','提现金额','打款方式','开户人','银行','卡号','身份证号','状态'];
} elseif (in_array($this->group, [
AdminConstants::ADMIN_SUPER_MANAGER_ID,
AdminConstants::ADMIN_GROUP_ID_ADMIN,
AdminConstants::ADMIN_GROUP_ID_SETTLEMENT
])) {
$columns = [ '渠道商id','渠道商', '提现时间', '划账日期','提现金额','打款方式','开户人','银行','卡号','身份证号','商务负责人','分成比例','付款方名称','结算单时间区间','状态'];
}
header('Content-Description: File Transfer');
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment; filename="打款管理数据导出-'.date('YmdHis', time()).'.csv"');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
$fp = fopen('php://output', 'a');//打开output流
mb_convert_variables('GBK', 'UTF-8', $columns);
fputcsv($fp, $columns);//将数据格式化为CSV格式并写入到output流中
$payer = model('Payer')->getPayerList();
list($where, $sort, $order, $offset, $limit) = $this->buildparams();
$sort = 'withdraw.id';
if (in_array($this->group, [
AdminConstants::ADMIN_SUPER_MANAGER_ID,
AdminConstants::ADMIN_GROUP_ID_ADMIN,
AdminConstants::ADMIN_GROUP_ID_SETTLEMENT
])){ //管理员的
//获取管理员下面的渠道商
$channels = model('Admin')
->join('auth_group_access a','a.uid= admin.id')
->join('admin_extend d','admin.id = d.admin_id')
->where('a.group_id','eq',3)
->field('admin.id,admin.nickname,d.pay_method')
->select();
$cNames = [];
foreach ($channels as $channel) {
$cNames[$channel->id] = ['nickname'=>$channel->nickname,'dkfs'=>$channel->pay_method];
}
//查询所有管理员
$glyInfo = model('admin')->join('auth_group_access aa','aa.uid = admin.id')
->where('aa.group_id < 3')
->column('admin.id,admin.nickname');
$total = $this->model
->join("admin_extend","admin_extend.admin_id = withdraw.admin_id")
->join('auth_group_access g','g.uid= withdraw.admin_id')
->join('admin','withdraw.admin_id = admin.id')
->join('payer','payer.id = admin_extend.payerid','left')
->field('withdraw.*,g.group_id,admin.nickname,admin_extend.card_holder,admin_extend.card_num,admin_extend.card_bank,admin_extend.idcard_no,admin_extend.benefit,admin_extend.create_by,admin_extend.payerid as payerid')
->where('g.group_id','eq',3)
->where($where)
->count();
$limit = 3000;
$pages = ceil($total / $limit);
for($i = 1; $i <= $pages; $i++) {
$offset = ($i - 1) * $limit;
$list = $this->model
->join("admin_extend", "admin_extend.admin_id = withdraw.admin_id")
->join('auth_group_access g', 'g.uid= withdraw.admin_id')
->join('admin', 'withdraw.admin_id = admin.id')
->join('payer', 'payer.id = admin_extend.payerid', 'left')
->field('withdraw.*,g.group_id,admin.nickname,admin_extend.card_holder,admin_extend.card_num,admin_extend.card_bank,admin_extend.idcard_no,admin_extend.benefit,admin_extend.create_by,admin_extend.payerid as payerid,payer.name')
->where('g.group_id', 'eq', 3)
->where($where)
->order('withdraw.state asc,withdraw.id desc')
->limit($offset, $limit)
->select();
foreach ($list as $key => $val) {
$list[$key]['admin.nickname'] = empty($cNames[$val->admin_id]['nickname']) ? '' : $cNames[$val->admin_id]['nickname'];
$list[$key]['dkfs'] = empty($cNames[$val->admin_id]['dkfs']) ? '' : $cNames[$val->admin_id]['dkfs'];
$list[$key]['withdraw.createtime'] = $val['createtime'];
if (key_exists($list[$key]['create_by'], $glyInfo)) {
$list[$key]['create_by'] = $glyInfo[$list[$key]['create_by']];
} else {
$list[$key]['create_by'] = '-';
}
if (key_exists($list[$key]['payerid'], $payer)) {
$list[$key]['payerid'] = $payer[$list[$key]['payerid']];
} else {
$list[$key]['payerid'] = '-';
}
$section = '';
if (empty($list[$key]['stime'])) {
$section .= '入驻平台 - ';
} else {
$section .= $list[$key]['stime'] . ' - ';
}
$section .= $list[$key]['etime'];
$list[$key]['section'] = $section;
$dkfs = '支付宝';
if(!empty($val['dkfs'])){
if($val['dkfs'] == 1){
$dkfs = '银行卡对公';
}elseif($val['dkfs'] == 2){
$dkfs = '银行卡对私';
}elseif($val['dkfs'] == 3){
$dkfs = '微信';
}
}
$state = '未知';
if($val['state'] == 1){
$state = '提现中';
}elseif ($val['state'] == 2){
$state = '打款中';
}elseif ($val['state'] == 3){
$state = '已打款';
}
//获取每列数据,转换处理成需要导出的数据
$rowData = [
$val['admin_id'],
rm_space($list[$key]['admin.nickname']),
date('Y-m-d H:i:s',$val['createtime']),
empty($val['finishtime'])?'无':date('Y-m-d H:i:s',$val['finishtime']),
$val['money'],
$dkfs,
rm_space($val['card_holder']),
"\t".rm_space($val['card_bank'])."\t",
empty($val['card_num'])?'-':"\t".get_number($val['card_num'])."\t",
empty($val['idcard_no'])?'-':"\t".get_number($val['idcard_no'], true)."\t",
rm_space($val['create_by']),
$val['benefit'],
rm_space($val['name']),
$section,
$state
];
//需要格式转换,否则会乱码
mb_convert_variables('GBK', 'UTF-8', $rowData);
fputcsv($fp, $rowData);
}
//必须同时使用 ob_flush() 和flush() 函数来刷新输出缓冲。
ob_flush();
flush();
}
}elseif($this->group == 3){ //渠道商
//获取渠道商下面的代理商列表
$channels = model('Admin')
->join('auth_group_access a','a.uid= admin.id')
->join('admin_extend d','admin.id = d.admin_id')
->where('a.group_id','eq',4)
->where('d.create_by','eq',$this->auth->id)
->field('admin.id,admin.nickname,d.pay_method')
->select();
$cNames = [];
foreach ($channels as $channel) {
$cNames[$channel->id] = ['nickname'=>$channel->nickname,'dkfs'=>$channel->pay_method];
}
$daili_id = implode(',',array_keys($cNames));
$total = $this->model
->join('auth_group_access g','g.uid= withdraw.admin_id')
->join('admin','withdraw.admin_id = admin.id')
->where('withdraw.admin_id','in',$daili_id)
->where($where)
->order($sort, $order)
->count();
$limit = 3000;
$pages = ceil($total / $limit);
for($i = 1; $i <= $pages; $i++) {
$offset = ($i - 1) * $limit;
$list = $this->model
->join("admin_extend ex", "ex.admin_id = withdraw.admin_id", "left")
->join('auth_group_access g', 'g.uid= withdraw.admin_id')
->join('admin', 'withdraw.admin_id = admin.id')
->field('withdraw.*,g.group_id,admin.nickname,ex.card_holder,ex.card_num,ex.card_bank,ex.idcard_no')
->where('withdraw.admin_id', 'in', $daili_id)
->where($where)
->order('withdraw.state asc,withdraw.id desc')
->limit($offset, $limit)
->select();
foreach ($list as $key => $val) {
$list[$key]['admin.nickname'] = empty($cNames[$val->admin_id]['nickname']) ? '' : $cNames[$val->admin_id]['nickname'];
$list[$key]['dkfs'] = empty($cNames[$val->admin_id]['dkfs']) ? '' : $cNames[$val->admin_id]['dkfs'];
$list[$key]['withdraw.createtime'] = $val['createtime'];
$dkfs = '支付宝';
if(!empty($val['dkfs'])){
if($val['dkfs'] == 1){
$dkfs = '银行卡对公';
}elseif($val['dkfs'] == 2){
$dkfs = '银行卡对私';
}elseif($val['dkfs'] == 3){
$dkfs = '微信';
}
}
$state = '未知';
if($val['state'] == 1){
$state = '提现中';
}elseif ($val['state'] == 2){
$state = '打款中';
}elseif ($val['state'] == 3){
$state = '已打款';
}
//获取每列数据,转换处理成需要导出的数据
$rowData = [
$list[$key]['admin.nickname'],
date('Y-m-d H:i:s',$val['createtime']),
empty($val['finishtime'])?'无':date('Y-m-d H:i:s',$val['finishtime']),
$val['money'],
$dkfs,
rm_space($val['card_holder']),
"\t".rm_space($val['card_bank'])."\t",
empty($val['card_num'])?'-':"\t".get_number($val['card_num'])."\t",
empty($val['idcard_no'])?'-':"\t".get_number($val['idcard_no'], true)."\t",
$state
];
//需要格式转换,否则会乱码
mb_convert_variables('GBK', 'UTF-8', $rowData);
fputcsv($fp, $rowData);
}
//必须同时使用 ob_flush() 和flush() 函数来刷新输出缓冲。
ob_flush();
flush();
}
}
fclose($fp);
exit();
}
/**
* 打款管理列表
*/
public function index()
{
$this->assign('group',$this->group);
$this->assignconfig('group',$this->group);
//设置过滤方法
$this->request->filter(['strip_tags']);
$where = [];
//千万不能删除这段,这段有用
if ($this->request->isAjax()){
list($where, $sort, $order, $offset, $limit) = $this->buildparams();
}
$payer = model('Payer')->getPayerList();
$payerStr = '';
if(count($payer)){
$payerStr .= '{';
foreach ($payer as $k=>$v){
$payerStr.= '"'.$k.'":'.'"'.$v.'",';
}
$payerStr = substr($payerStr,0,-1);
$payerStr .= '}';
}
$this->assignconfig('payer',json_encode($payer));
if (in_array($this->group, [
AdminConstants::ADMIN_SUPER_MANAGER_ID,
AdminConstants::ADMIN_GROUP_ID_ADMIN,
AdminConstants::ADMIN_GROUP_ID_SETTLEMENT
])) {
/*
* 统计,sum三个字段
*/
//提现中
$state1 = $this->model
->join("admin_extend","admin_extend.admin_id = withdraw.admin_id")
->join('auth_group_access g','g.uid= withdraw.admin_id')
->join('admin','withdraw.admin_id = admin.id')
->join('payer','payer.id = admin_extend.payerid','left')
->field('withdraw.*,g.group_id,admin.nickname,admin_extend.card_holder,admin_extend.card_num,admin_extend.card_bank,admin_extend.idcard_no,admin_extend.benefit,admin_extend.create_by,admin_extend.payerid as payerid')
->where('g.group_id','eq',3)
->where($where)
->where('withdraw.state',1)
->sum('withdraw.money');
//打款中
$state2 = $this->model
->join("admin_extend","admin_extend.admin_id = withdraw.admin_id")
->join('auth_group_access g','g.uid= withdraw.admin_id')
->join('admin','withdraw.admin_id = admin.id')
->join('payer','payer.id = admin_extend.payerid','left')
->field('withdraw.*,g.group_id,admin.nickname,admin_extend.card_holder,admin_extend.card_num,admin_extend.card_bank,admin_extend.idcard_no,admin_extend.benefit,admin_extend.create_by,admin_extend.payerid as payerid')
->where('g.group_id','eq',3)
->where($where)
->where('withdraw.state',2)
->sum('withdraw.money');
//已打款
$state3 = $this->model
->join("admin_extend","admin_extend.admin_id = withdraw.admin_id")
->join('auth_group_access g','g.uid= withdraw.admin_id')
->join('admin','withdraw.admin_id = admin.id')
->join('payer','payer.id = admin_extend.payerid','left')
->field('withdraw.*,g.group_id,admin.nickname,admin_extend.card_holder,admin_extend.card_num,admin_extend.card_bank,admin_extend.idcard_no,admin_extend.benefit,admin_extend.create_by,admin_extend.payerid as payerid')
->where('g.group_id','eq',3)
->where($where)
->where('withdraw.state',3)
->sum('withdraw.money');
$this->assignconfig('state1',$state1);
$this->assignconfig('state2',$state2);
$this->assignconfig('state3',$state3);
}elseif($this->group==3){
$channels = model('Admin')
->join('auth_group_access a','a.uid= admin.id')
->join('admin_extend d','admin.id = d.admin_id')
->where('a.group_id','eq',4)
->where('d.create_by','eq',$this->auth->id)
->field('admin.id,admin.nickname,d.pay_method')
->select();
$cNames = [];
foreach ($channels as $channel) {
$cNames[$channel->id] = ['nickname'=>$channel->nickname,'dkfs'=>$channel->pay_method];
}
$daili_id = implode(',',array_keys($cNames));
/*
* 统计,sum三个字段
*/
//提现中
$state1 = $this->model
->join('auth_group_access g','g.uid= withdraw.admin_id')
->join('admin','withdraw.admin_id = admin.id')
->where('withdraw.admin_id','in',$daili_id)
->where($where)
->where('withdraw.state',1)
->sum('money');
//打款中
$state2 = $this->model
->join('auth_group_access g','g.uid= withdraw.admin_id')
->join('admin','withdraw.admin_id = admin.id')
->where('withdraw.admin_id','in',$daili_id)
->where($where)
->where('withdraw.state',2)
->sum('money');
//已打款
$state3 = $this->model
->join('auth_group_access g','g.uid= withdraw.admin_id')
->join('admin','withdraw.admin_id = admin.id')
->where('withdraw.admin_id','in',$daili_id)
->where($where)
->where('withdraw.state',3)
->sum('money');
$this->assignconfig('state1',$state1);
$this->assignconfig('state2',$state2);
$this->assignconfig('state3',$state3);
}else{
$this->assignconfig('state1',0);
$this->assignconfig('state2',0);
$this->assignconfig('state3',0);
}
if ($this->request->isAjax())
{
//如果发送的来源是Selectpage,则转发到Selectpage
if ($this->request->request('pkey_name'))
{
return $this->selectpage();
}
list($where, $sort, $order, $offset, $limit) = $this->buildparams();
$sort = 'withdraw.id';
Log::write($where,'congtest');
if (in_array($this->group, [
AdminConstants::ADMIN_SUPER_MANAGER_ID,
AdminConstants::ADMIN_GROUP_ID_ADMIN,
AdminConstants::ADMIN_GROUP_ID_SETTLEMENT
])){ //管理员的
//获取管理员下面的渠道商
$channels = model('Admin')
->join('auth_group_access a','a.uid= admin.id')
->join('admin_extend d','admin.id = d.admin_id')
->where('a.group_id','eq',3)
->field('admin.id,admin.nickname,d.pay_method')
->select();
$cNames = [];
foreach ($channels as $channel) {
$cNames[$channel->id] = ['nickname'=>$channel->nickname,'dkfs'=>$channel->pay_method];
}
//查询所有管理员
$glyInfo = model('admin')->join('auth_group_access aa','aa.uid = admin.id')
->where('aa.group_id < 3')
->column('admin.id,admin.nickname');
$total = $this->model
->join("admin_extend","admin_extend.admin_id = withdraw.admin_id")
->join('auth_group_access g','g.uid= withdraw.admin_id')
->join('admin','withdraw.admin_id = admin.id')
->join('payer','payer.id = admin_extend.payerid','left')
->field('withdraw.*,g.group_id,admin.nickname,admin_extend.card_holder,admin_extend.card_num,admin_extend.card_bank,admin_extend.idcard_no,admin_extend.benefit,admin_extend.create_by,admin_extend.payerid as payerid')
->where('g.group_id','eq',3)
->where($where)
->count();
$list = $this->model
->join("admin_extend","admin_extend.admin_id = withdraw.admin_id")
->join('auth_group_access g','g.uid= withdraw.admin_id')
->join('admin','withdraw.admin_id = admin.id')
->join('payer','payer.id = admin_extend.payerid','left')
->field('withdraw.*,g.group_id,admin.nickname,admin_extend.card_holder,admin_extend.card_num,admin_extend.card_bank,admin_extend.idcard_no,admin_extend.benefit,admin_extend.create_by,admin_extend.payerid as payerid,payer.name')
->where('g.group_id','eq',3)
->where($where)
->order('withdraw.state asc,withdraw.id desc')
->limit($offset, $limit)
->select();
// echo $this->model->getLastSql();die;
foreach($list as $key=>$val){
$list[$key]['admin.nickname'] = empty($cNames[$val->admin_id]['nickname'])?'':$cNames[$val->admin_id]['nickname'];
$list[$key]['dkfs'] = empty($cNames[$val->admin_id]['dkfs'])?'':$cNames[$val->admin_id]['dkfs'];
$list[$key]['withdraw.createtime'] = $val['createtime'];
if(key_exists($list[$key]['create_by'],$glyInfo)){
$list[$key]['create_by'] = $glyInfo[$list[$key]['create_by']];
}else{
$list[$key]['create_by'] = '-';
}
if(key_exists($list[$key]['payerid'],$payer)){
$list[$key]['payerid'] = $payer[$list[$key]['payerid']];
}else{
$list[$key]['payerid'] = '-';
}
$section = '';
if(empty($list[$key]['stime'])){
$section .= '入驻平台 - ';
}else{
$section .= $list[$key]['stime'].' - ';
}
$section .= $list[$key]['etime'];
$list[$key]['section'] = $section;
}
$result = array("total" => $total, "rows" => $list,"others"=>array('state1'=>$state1,'state2'=>$state2,'state3'=>$state3));
}elseif($this->group == 3){ //渠道商
//获取渠道商下面的代理商列表
$channels = model('Admin')
->join('auth_group_access a','a.uid= admin.id')
->join('admin_extend d','admin.id = d.admin_id')
->where('a.group_id','eq',4)
->where('d.create_by','eq',$this->auth->id)
->field('admin.id,admin.nickname,d.pay_method')
->select();
$cNames = [];
foreach ($channels as $channel) {
$cNames[$channel->id] = ['nickname'=>$channel->nickname,'dkfs'=>$channel->pay_method];
}
$daili_id = implode(',',array_keys($cNames));
$total = $this->model
->join('auth_group_access g','g.uid= withdraw.admin_id')
->join('admin','withdraw.admin_id = admin.id')
->where('withdraw.admin_id','in',$daili_id)
->where($where)
->order($sort, $order)
->count();
$list = $this->model
->join("admin_extend ex","ex.admin_id = withdraw.admin_id","left")
->join('auth_group_access g','g.uid= withdraw.admin_id')
->join('admin','withdraw.admin_id = admin.id')
->field('withdraw.*,g.group_id,admin.nickname,ex.card_holder,ex.card_num,ex.card_bank,ex.idcard_no')
->where('withdraw.admin_id','in',$daili_id)
->where($where)
->order('withdraw.state asc,withdraw.id desc')
->limit($offset, $limit)
->select();
foreach($list as $key=>$val){
$list[$key]['admin.nickname'] = empty($cNames[$val->admin_id]['nickname'])?'':$cNames[$val->admin_id]['nickname'];
$list[$key]['dkfs'] = empty($cNames[$val->admin_id]['dkfs'])?'':$cNames[$val->admin_id]['dkfs'];
$list[$key]['withdraw.createtime'] = $val['createtime'];
}
$result = array("total" => $total, "rows" => $list,"others"=>array('state1'=>$state1,'state2'=>$state2,'state3'=>$state3));
}else{ //无权查看数据的用户组
$result = array("total" => 0, "rows" => []);
}
return json($result);
}
return $this->view->fetch();
}
/*
* 我的结算单
*/
public function mywithdraw(){
if ($this->request->isAjax()) {
//如果发送的来源是Selectpage,则转发到Selectpage
if ($this->request->request('pkey_name')) {
return $this->selectpage();
}
list($where, $sort, $order, $offset, $limit) = $this->buildparams();
$total = $this->model
->where('withdraw.admin_id','eq',$this->auth->id)
->where($where)
->order($sort, $order)
->count();
$list = $this->model
->where('withdraw.admin_id','eq',$this->auth->id)
->where($where)
->order('withdraw.state asc,withdraw.id desc')
->limit($offset, $limit)
->select();
$result = array("total" => $total, "rows" => $list);
return json($result);
}
$admin_money = model('admin_money')->where('admin_id','eq',$this->auth->id)->find();
$this->assign('admin_money',$admin_money);
$agreementyiArr = [];
$totalSplitMoney = 0;
if($this->group==3){
//渠道充值不含当天
$today_collect = model('orders_collect')->sumCollect($this->auth->id,1,3);
$totalSplitMoney = $today_collect['split_money'] ?? 0;
$this->assign('recharge_all',$today_collect['recharge_money']??0);
$this->assign('no_cash_money',($today_collect['recharge_money_benefit']??0)-$admin_money['cash_money']-$admin_money['count_cash_money']-$totalSplitMoney);
$this->assign('count_money',($today_collect['recharge_money_benefit']??0)-$totalSplitMoney);
$adminExtendModel = AdminService::instance()->getAdminExtendModel();
$adminExtendInfo = $adminExtendModel->getInfo($this->auth->id);
if ($adminExtendInfo['pay_method'] == 2) { // 对私打款
/** @var \app\admin\model\Agreementyi $agreementyiModel */
$agreementyiModel = model('agreementyi');
if ($agYiId = $agreementyiModel->checkAgreement($this->auth->id, $adminExtendInfo['card_holder'], $adminExtendInfo['card_num'], $adminExtendInfo['card_bank'], $adminExtendInfo['benefit'])) {
$this->assign('agYiId', $agYiId);
}
$agreementyiArr = $agreementyiModel->where('admin_id', $this->auth->id)->select();
}
}
if($this->group==4){
//代理充值不含当天
$today_collect = model('orders_collect')->sumCollect($this->auth->id,1,1);
$this->assign('recharge_all',$today_collect['recharge_money']??0);//总充值不含当天
$this->assign('no_cash_money',($today_collect['recharge_money_benefit']??0)-$admin_money['cash_money']-$admin_money['count_cash_money']);
$this->assign('count_money',$today_collect['recharge_money_benefit']??0);
}
//echo ($today_collect['recharge_money_benefit']??0).'----'.$admin_money['cash_money'].'----'.$admin_money['count_cash_money'];
$this->assign('agreementyiArr', $agreementyiArr);
$this->assign('split_money',$totalSplitMoney);
return $this->view->fetch();
}
/*
* 我的结算单历史记录
*/
public function myhistorydraw($admin_id='')
{
if ($this->request->isAjax()) {
//如果发送的来源是Selectpage,则转发到Selectpage
if ($this->request->request('pkey_name')) {
return $this->selectpage();
}
list($where, $sort, $order, $offset, $limit) = $this->buildparams();
$admin_id = $this->request->get('admin_id');
$total = $this->model
->where('withdraw.admin_id', 'eq', $admin_id)
->where($where)
->order($sort, $order)
->count();
$list = $this->model
->where('withdraw.admin_id', 'eq', $admin_id)
->where($where)
->order('withdraw.state asc,withdraw.id desc')
->limit($offset, $limit)
->select();
$result = array("total" => $total, "rows" => $list);
return json($result);
}
$admin_group = model('AuthGroupAccess')->getGroupId($admin_id);
$admin_money = model('admin_money')->where('admin_id', 'eq', $admin_id)->find();
$this->assign('admin_id', $admin_id);
$this->assign('admin_money', $admin_money);
$totalSplitMoney = 0;
if ($admin_group == 3) {
//渠道充值不含当天
$today_collect = model('orders_collect')->sumCollect($admin_id, 1, 3);
$totalSplitMoney = $today_collect['split_money'] ?? 0;
$this->assign('recharge_all', $today_collect['recharge_money'] ?? 0);
$this->assign('no_cash_money', ($today_collect['recharge_money_benefit'] ?? 0) - $admin_money['cash_money'] - $admin_money['count_cash_money']-$totalSplitMoney);
$this->assign('count_money', ($today_collect['recharge_money_benefit'] ?? 0) -$totalSplitMoney);
}
if ($admin_group == 4) {
//代理充值不含当天
$today_collect = model('orders_collect')->sumCollect($admin_id, 1, 1);
$this->assign('recharge_all', $today_collect['recharge_money'] ?? 0);//总充值不含当天
$this->assign('no_cash_money', ($today_collect['recharge_money_benefit'] ?? 0) - $admin_money['cash_money'] - $admin_money['count_cash_money']);
$this->assign('count_money', $today_collect['recharge_money_benefit'] ?? 0);
}
$this->assign('split_money',$totalSplitMoney);
return $this->view->fetch();
}
public function add()
{
$theme = config('site.theme');
if ($theme && !in_array($theme, ['xg', 'sf'])) {
/**
* 渠道商 && 对私打款 检验是否需要签协议
*/
if ($this->group == 3) {
// $adminConfigModel = AdminService::instance()->getAdminConfigModel();
// $adminInfo = $adminConfigModel->getAdminInfoAll($this->auth->id);
$adminExtendModel = AdminService::instance()->getAdminExtendModel();
$adminExtendInfo = $adminExtendModel->getInfo($this->auth->id);
if ($adminExtendInfo['pay_method'] == 2) { // 对私打款
/** @var \app\admin\model\Agreementyi $agreementyiModel */
$agreementyiModel = model('agreementyi');
if (!$agYiId = $agreementyiModel->checkAgreement($this->auth->id,
$adminExtendInfo['card_holder'], $adminExtendInfo['benefit'] )) {
// $this->redirect('agreementyi/add');
$this->error('检测到协议未签或收款人已变更,请先签署协议!', 'agreementyi/add');
}
}
}
}
$t = time();
$start_time = strtotime(date('Y-m-d 23:30:00'));
$end_time = strtotime(date('Y-m-d 01:30:00'));
if($t>=$start_time || $t<=$end_time){
$this->error('每天00:00-01:30与23:30-24:00,不支持提现');
}
$admin_money = model('AdminMoney')->where('admin_id='.$this->auth->id)->find();
$isIdCard = 0;
$no_cash_money = 0;
if($this->group==3){
//渠道充值不含当天
$today_collect = model('orders_collect')->sumCollect($this->auth->id,1,3);
$totalSplitMoney = $today_collect['split_money'] ?? 0;
//未提现金额
$no_cash_money = ($today_collect['recharge_money_benefit']??0)-$admin_money['cash_money']-$admin_money['count_cash_money']-$totalSplitMoney;
}
if($this->group==4){
//代理充值不含当天
$today_collect = model('orders_collect')->sumCollect($this->auth->id,1,1);
$no_cash_money = ($today_collect['recharge_money_benefit']??0)-$admin_money['cash_money']-$admin_money['count_cash_money'];
$extends=model('AdminExtend')->where(['admin_id'=>$this->auth->id])->find();
$cb = $extends->create_by;
$fAdmin = model('AdminExtend')->where(['admin_id'=>$cb])->find();
$isIdCard = empty($fAdmin->is_idcard)?0:$fAdmin->is_idcard;
if(!empty($extends->idcard_no)){
$isIdCard = 0;
}
}
$no_cash_money = StringHelper::moneyFormat($no_cash_money);
if ($this->request->isPost()) {
$timedate = date('Ymd',time());
$withdrawKey = 'WD:'.$this->auth->id.':'.$timedate;
$redis = Redis::instance();
if(empty($this->request->post('idcard_no'))){
$row = $this->request->post('row/a');
$withdrawType = $this->request->post('type');
if ($row) {
if (!$redis->setex($withdrawKey,600,'1')) {
$this->error('提现过于频繁,请十分钟以后再试');
}
$money = $row['money'];
//按月提现
if ($withdrawType == 2) {
$month = OrderService::instance()->getWithdrawMonth($this->auth->id)->data;
$money = $no_cash_money = (string) $month['cmoney'];
$save['etime'] = $month['etime'];
$save['stime'] = $month['stime'];
} else {
$no_cash_money = (string) $no_cash_money;
$save['etime'] = date('Ymd',strtotime('-1 day'));
$stime = model('withdraw')->setConnect()->where('admin_id',$this->auth->id)->field('etime')->order('id desc')->find();
if(empty($stime['etime'])){
$save['stime'] = null;
}else{
$save['stime'] = date('Ymd',strtotime($stime['etime'])+3600*24);
}
}
//未提现余额 严格校验
if($no_cash_money != $money){
$redis->del($withdrawKey);
$this->error('ERROR:提现金额与计算后的提现金额不一致');
}
$minMoney = 10;
if ($money < $minMoney) {
$redis->del($withdrawKey);
$this->error("最低提现金额{$minMoney}元");
}
/* if($admin_money['no_cash_money'] < $money){
$redis->del($withdrawKey);
$this->error('超出最大可提现金额'.$admin_money['no_cash_money']);
}*/
//$this->error($save['stime']);
$save['admin_id'] = $this->auth->id;
$save['money'] = $money;//含手续费
$save['state'] = 1;
if(model('withdraw')->save($save)){
model('AdminMoney')->where('admin_id',$this->auth->id)->setInc('cash_money',$money);
$this->success();
}
$redis->del($withdrawKey);
$this->error('提交申请失败');
}
}else{ //输入身份证号
$idCardNo = trim($this->request->post('idcard_no'));
$flag = validateIDCard($idCardNo);
if($flag){
model('AdminExtend')->update(['idcard_no'=>$idCardNo],['admin_id'=>$this->auth->id]);
$this->success();
}else{
$this->error('身份证号码不合法');
}
}
$this->error('错误');
}
$monthData = OrderService::instance()->getWithdrawMonth($this->auth->id)->data;
$this->assign('month', $monthData);
$this->assign('isIdcard',$isIdCard);
$this->assign('group',$this->group);
$this->assignconfig('group',$this->group);
$this->view->assign('no_cash_money',$no_cash_money?$no_cash_money:0);
$this->assignconfig('no_cash_money',$no_cash_money?$no_cash_money:0);
return $this->view->fetch();
}
public function edit($ids = NULL)
{
$row = $this->model->get($ids);
if (!$row){
$this->error(__('No Results were found'));
}
$adminIds = $this->getDataLimitAdminIds();
if (is_array($adminIds))
{
if (!in_array($row[$this->dataLimitField], $adminIds))
{
$this->error(__('You have no permission'));
}
}
if ($this->request->isPost())
{
$params = $this->request->post("row/a");
if ($params)
{
try
{
//是否采用模型验证
if ($this->modelValidate)
{
$name = basename(str_replace('\\', '/', get_class($this->model)));
$validate = is_bool($this->modelValidate) ? ($this->modelSceneValidate ? $name . '.edit' : true) : $this->modelValidate;
$row->validate($validate);
}
if($row['state'] ==3){
$this->error('已打款 请勿重复处理');
}
if(empty($params['state'])){
$this->error('请选择一种打款状态');
}
$result = $row->allowField(true)->save($params,['id'=>$params['id']]);
if ($result !== false)
{
$withdraw = $this->model->get($params['id']);
if($params['state'] == 3){
//提现中的减少
$admin_update1 = model('AdminMoney')->where('admin_id',$withdraw['admin_id'])->setDec('cash_money',$withdraw['money']);
//已打款的增加
$admin_update2 = model('AdminMoney')->where('admin_id',$withdraw['admin_id'])->setInc('count_cash_money',$withdraw['money']);
//更新完成时间
$time = time();
$updateTime = model('Withdraw')->where('id',$params['id'])->update(['finishtime'=>$time]);
}
$this->success();
}
else
{
$this->error($row->getError());
}
}
catch (\think\exception\PDOException $e)
{
$this->error($e->getMessage());
}
}
$this->error(__('Parameter %s can not be empty', ''));
}
$admin= model("Admin")->where('id',$row['admin_id'])->find();
if ($admin) {
$row['admin_nickname'] = $admin['nickname'];
}else{
$row['admin_nickname'] = '';
}
$ae = model('AdminExtend')->where('admin_id',$row['admin_id'])->find();
$this->view->assign('ae',$ae);
$this->view->assign("row", $row);
$dingdan = [];
$payInfo = [];
$auth = model('AuthGroupAccess')->where('uid',$row['admin_id'])->find();
if($auth->group_id==3){
$payInfo = model('AdminExtend')
->join('payer','payer.id = admin_extend.payerid','left')
->join('admin','admin.id = admin_extend.create_by')
->where('admin_extend.admin_id='.$row['admin_id'])
->field('admin.nickname,admin_extend.benefit,payer.name')
->find();
if(empty($payInfo['name'])){
$payInfo['name'] = '暂无';
}
}
if($row['stime'] && $row['etime']){
if($auth->group_id==3){
//渠道
$dingdan = model('orders_collect')
->where('admin_id',$row['admin_id'])
->where('createdate','egt',$row['stime'])
->where('createdate','elt',$row['etime'])
->where('type','eq',1)
->where('flag','eq',3)
->field('id,createdate,recharge_money,recharge_money_benefit,admin_id as aid')
->select();
}
if($auth->group_id==4){
//代理收入
$dingdan = model('orders_collect')
->where('admin_id',$row['admin_id'])
->where('createdate','egt',$row['stime'])
->where('createdate','elt',$row['etime'])
->where('type','eq',1)
->where('flag','eq',1)
->field('id,createdate,recharge_money,recharge_money_benefit,admin_id as aid')
->select();
}
//Log::write($this->model->getlastsql(),'11111111');
}
$this->view->assign('payinfo',$payInfo);
$this->view->assign('dingdan',$dingdan);
return $this->view->fetch();
}
/**
* 批量更新s
*/
public function multi($ids = "")
{
$ids = $ids ? $ids : $this->request->param("ids");
if ($ids)
{
if ($this->request->has('params'))
{
parse_str($this->request->post("params"), $values);
$values = array_intersect_key($values, array_flip(is_array($this->multiFields) ? $this->multiFields : explode(',', $this->multiFields)));
if ($values)
{
if($values['state']!=2 && $values['state']!=3){
$this->error("非法操作");
}
$adminIds = $this->getDataLimitAdminIds();
if (is_array($adminIds))
{
$this->model->where($this->dataLimitField, 'in', $adminIds);
}
$idsarr = explode(",",$ids);
$successids = "";
$cantids = "";
$failedids = "";
foreach ($idsarr as $v){
$withdraw = $this->model->get($v);
if($values['state'] == 2 && $withdraw['state'] == 3){
$cantids .= "{$v},";
}else{
$res = $this->model->where("id",$v)->update($values);
if($res){
if($values['state'] == 3){
//提现中的减少
$admin_update1 = model('AdminMoney')->where('admin_id',$withdraw['admin_id'])->setDec('cash_money',$withdraw['money']);
//已打款的增加
$admin_update2 = model('AdminMoney')->where('admin_id',$withdraw['admin_id'])->setInc('count_cash_money',$withdraw['money']);
//更新完成时间
$time = time();
$updateTime = model('Withdraw')->where('id',$v)->update(['finishtime'=>$time]);
}
$successids .= "{$v},";
}else{
$failedids .= "{$v},";
}
}
}
$successids = rtrim($successids,",");
$cantids = rtrim($cantids,",");
$failedids = rtrim($failedids,",");
$msg = "";
if(empty($cantids) && empty($failedids)){
$this->success();
}
if($successids)
$msg .= "ID:{$successids}操作成功!
";
if($cantids)
$msg .= "ID:{$cantids}已打款,不能修改!
";
if($failedids)
$msg .= "ID:{$failedids}未更新行!";
$this->success($msg);
}
else
{
$this->error(__('You have no permission'));
}
}
}
$this->error(__('Parameter %s can not be empty', 'ids'));
}
public function mywithdrawExport()
{
ini_set('memory_limit', '512M'); //内存限制
list($where, $sort, $order, $offset, $limit) = $this->buildparams();
$total = $this->model
->where('withdraw.admin_id','eq',$this->auth->id)
->where($where)
->order($sort, $order)
->count();
$list = $this->model
->where('withdraw.admin_id','eq',$this->auth->id)
->where($where)
->order('withdraw.state asc,withdraw.id desc')
->limit($offset, $limit)
->select();
$title=array('提现时间','提现周期','划账日期','提现金额','状态');
$content = '';
$content = implode($title,',');
$content .= PHP_EOL;
foreach($list as $k =>$v){
$content .= date('Y-m-d H:i:s',$v['createtime']).','.$v['stime'].'-'.$v['etime'].','.$v['finishtime_text'].','.$v['money'].','.$v['state_text'].PHP_EOL;
}
mb_convert_variables('GBK', 'UTF-8', $content);
$fileName = "提现记录导出-".date('YmdHis', time()).".csv";
header('Expires: 0');
header('Content-Encoding: utf-8');
header("Content-type:text/csv; charset=utf-8");
Header("Accept-Length: " . strlen($content));
header("Content-Disposition:attachment;filename=" . $fileName);
header('Cache-Control:must-revalidate,post-check=0,pre-check=0');
header('Pragma:public');
echo $content;exit;
}
}