Pro/application/admin/controller/Recharge.php
2026-01-28 15:54:52 +08:00

596 lines
26 KiB
PHP

<?php
namespace app\admin\controller;
use think\Db;
use think\Request;
use think\Session;
class Recharge extends Common{
/**
* 代理列表
*/
public function index(){
// 接收分页的条件
$get = Request::instance()->get();
$query = http_build_query($get);
$this->assign('get',$get);
$this->assign('query',$query);
$recharge_list = Db::name('receivables')->where('receivables_type',1)->where('type',1)->order('id desc')->paginate(10,false,array('query'=>$get));
foreach($recharge_list as $k => $v){
$v['create_time'] = date("Y-m-d H:i",$v['create_time']);
if($v['status'] == 1){
$v['is_use'] = '使用中';
}elseif($v['status'] == 0){
$v['is_use'] = '禁用中';
}
$recharge_list[$k] = $v;
}
// 渲染变量和模板
$this->assign('recharge_list',$recharge_list);
$this->assign('query',$query);
return $this->fetch();
}
public function do_add_bank(){
if(Request::instance()->post()){
// 获取管理员信息
$user_info = Session::get('user_info');
// 接收提交过来的数据
$receivables_name = Request::instance()->post('receivables_name');
$receivables_bank = Request::instance()->post('receivables_bank');
$receivables_cardnum = Request::instance()->post('receivables_cardnum');
$is_use = Request::instance()->post('is_use');
// 数据验证
if( !isset($receivables_name) && empty($receivables_name) ){
die(json_encode(['code'=>0,'msg'=>'收款人姓名不能为空!']));
}
if( !isset($receivables_bank) && empty($receivables_bank) ){
die(json_encode(['code'=>0,'msg'=>'收款人银行不能为空!']));
}
if( !isset($receivables_cardnum) && empty($receivables_cardnum) ){
die(json_encode(['code'=>0,'msg'=>'收款人卡号不能为空!']));
}
if( !isset($is_use) && empty($is_use) ){
die(json_encode(['code'=>0,'msg'=>'收款银行卡状态不能为空!']));
}
// 拼装数据
$data = array();
$data['receivables_type'] = 1;
$data['receivables_name'] = $receivables_name;
$data['receivables_bank'] = $receivables_bank;
$data['receivables_bank_number'] = $receivables_cardnum;
$data['status'] = $is_use;
$data['create_time'] = time();
$data['type'] = 1;
$insert_id = Db::name('receivables')->insertGetId($data);
if($insert_id){
// 写入管理员日志
insertAdminLog('添加收款银行卡','添加收款银行卡:| ID: '.$insert_id.' | 收款人: '.$receivables_name);
die(json_encode(['code'=>1,'msg'=>'添加成功!']));
}else{
die(json_encode(['code'=>0,'msg'=>'添加失败!']));
}
}else{
die(json_encode(['code'=>0,'msg'=>'操作错误!']));
}
}
public function do_edit_bank(){
if(Request::instance()->post()){
// 获取管理员信息
$user_info = Session::get('user_info');
// 接收提交过来的数据
$id = Request::instance()->post('receivables_id');
$receivables_name = Request::instance()->post('receivables_name');
$receivables_bank = Request::instance()->post('receivables_bank');
$receivables_cardnum = Request::instance()->post('receivables_cardnum');
$is_use = Request::instance()->post('is_use');
// 数据验证
if( !isset($receivables_name) && empty($receivables_name) ){
die(json_encode(['code'=>0,'msg'=>'收款人姓名不能为空!']));
}
if( !isset($receivables_bank) && empty($receivables_bank) ){
die(json_encode(['code'=>0,'msg'=>'收款人银行不能为空!']));
}
if( !isset($receivables_cardnum) && empty($receivables_cardnum) ){
die(json_encode(['code'=>0,'msg'=>'收款人卡号不能为空!']));
}
if( !isset($is_use) && empty($is_use) ){
die(json_encode(['code'=>0,'msg'=>'收款银行卡状态不能为空!']));
}
// 拼装数据
$data = array();
$data['receivables_type'] = 1;
$data['receivables_name'] = $receivables_name;
$data['receivables_bank'] = $receivables_bank;
$data['receivables_bank_number'] = $receivables_cardnum;
$data['status'] = $is_use;
$insert_id = Db::name('receivables')->where('id',$id)->update($data);
if($insert_id){
// 写入管理员日志
insertAdminLog('修改收款银行卡','修改收款银行卡:| ID: '.$insert_id.' | 收款人: '.$receivables_name);
die(json_encode(['code'=>1,'msg'=>'修改成功!']));
}else{
die(json_encode(['code'=>0,'msg'=>'修改失败!']));
}
}else{
die(json_encode(['code'=>0,'msg'=>'操作错误!']));
}
}
public function qr_code(){
// 接收分页的条件
$get = Request::instance()->get();
$query = http_build_query($get);
$this->assign('get',$get);
$this->assign('query',$query);
$recharge_list = Db::name('receivables')->wherein('receivables_type','2,3')->where('type',1)->order('id desc')->paginate(10,false,array('query'=>$get));
foreach($recharge_list as $k => $v){
$v['create_time'] = date("Y-m-d H:i",$v['create_time']);
if($v['status'] == 1){
$v['is_use'] = '使用中';
}elseif($v['status'] == 0){
$v['is_use'] = '禁用中';
}
if($v['receivables_type'] == 2){
$v['receivables_type_word'] = '微信';
}elseif($v['receivables_type'] == 3){
$v['receivables_type_word'] = '支付宝';
}
$recharge_list[$k] = $v;
}
// 渲染变量和模板
$this->assign('recharge_list',$recharge_list);
$this->assign('query',$query);
return $this->fetch();
}
public function deposit() {
if ($this->request->isPost() && $this->request->param('action') != 'upload') {
$base64 = $this->request->param('base64');
$base64 = str_replace(' ', '+', $base64);
if (preg_match('/^(data:\s*image\/(\w+);base64,)/', $base64, $result)) {
$type = $result[2];
if (in_array($type,array('pjpeg','jpeg','jpg','gif','bmp','png'))) {
$path = APP_PATH . '../public/static/admin/uploads/';
$fileName = time() . '.' . $type;
$relPathFile = '/static/admin/uploads/' . $fileName;
$absPathFile = $path . $fileName;
if (file_put_contents($absPathFile, base64_decode(str_replace($result[1], '', $base64)))) {
//$this->success('上传成功');
$this->success($relPathFile);
} else {
$this->error('上传失败');
}
} else {
$this->error('非法操作,类型不允许!');
}
} else {
$this->error('网络错误,请稍后再试');
}
}
}
public function do_add_code(){
if(Request::instance()->post()){
// 获取管理员信息
$user_info = Session::get('user_info');
// 接收提交过来的数据
$receivables_name = Request::instance()->post('receivables_name');
$receivables_qr_code = Request::instance()->post('img_url');
$code_type = Request::instance()->post('code_type');
$is_use = Request::instance()->post('is_use');
// 数据验证
if( !isset($receivables_name) && empty($receivables_name) ){
die(json_encode(['code'=>0,'msg'=>'收款人姓名不能为空!']));
}
if( !isset($receivables_qr_code) && empty($receivables_qr_code) ){
die(json_encode(['code'=>0,'msg'=>'收款二维码不能为空!']));
}
if( !isset($code_type) && empty($code_type) ){
die(json_encode(['code'=>0,'msg'=>'收款二维码类型不能为空!']));
}
if( !isset($is_use) && empty($is_use) ){
die(json_encode(['code'=>0,'msg'=>'收款二维码状态不能为空!']));
}
// 拼装数据
$data = array();
if($code_type == 2){
$data['receivables_type'] = 2;
}elseif($code_type == 3){
$data['receivables_type'] = 3;
}
$data['receivables_name'] = $receivables_name;
$data['receivables_qr_code'] = $receivables_qr_code;
$data['status'] = $is_use;
$data['create_time'] = time();
$data['type'] = 1;
if($is_use == 1){
Db::name('receivables')->where('receivables_type',$code_type)->update(['status' => 0]);
}
$insert_id = Db::name('receivables')->insertGetId($data);
if($insert_id){
// 写入管理员日志
insertAdminLog('添加收款二维码','添加收款二维码:| ID: '.$insert_id.' | 收款账号: '.$receivables_name);
die(json_encode(['code'=>1,'msg'=>'添加成功!']));
}else{
die(json_encode(['code'=>0,'msg'=>'添加失败!']));
}
}else{
die(json_encode(['code'=>0,'msg'=>'操作错误!']));
}
}
public function do_edit_code(){
if(Request::instance()->post()){
// 获取管理员信息
$user_info = Session::get('user_info');
// 接收提交过来的数据
$id = Request::instance()->post('receivables_id');
$receivables_name = Request::instance()->post('receivables_name');
$receivables_type = Request::instance()->post('code_type');
$is_use = Request::instance()->post('is_use');
// 数据验证
if( !isset($receivables_name) && empty($receivables_name) ){
die(json_encode(['code'=>0,'msg'=>'收款账号不能为空!']));
}
if( !isset($receivables_type) && empty($receivables_type) ){
die(json_encode(['code'=>0,'msg'=>'收款二维码类型不能为空!']));
}
if( !isset($is_use) && empty($is_use) ){
die(json_encode(['code'=>0,'msg'=>'收款银行卡状态不能为空!']));
}
// 拼装数据
$data = array();
$data['receivables_type'] = $receivables_type;
$data['receivables_name'] = $receivables_name;
$data['status'] = $is_use;
if($is_use == 1){
Db::name('receivables')->where('receivables_type',$receivables_type)->update(['status' => 0]);
}
$insert_id = Db::name('receivables')->where('id',$id)->update($data);
if($insert_id){
// 写入管理员日志
insertAdminLog('修改收款二维码','修改收款二维码:| ID: '.$insert_id.' | 收款账号: '.$receivables_name);
die(json_encode(['code'=>1,'msg'=>'修改成功!']));
}else{
die(json_encode(['code'=>0,'msg'=>'修改失败!']));
}
}else{
die(json_encode(['code'=>0,'msg'=>'操作错误!']));
}
}
public function recharge_record(){
Session::set('allowSubmit',"YES");
// 接收分页的条件
$get = Request::instance()->get();
$query = http_build_query($get);
$this->assign('get',$get);
$this->assign('query',$query);
// 接收搜索的条件信息
$username = trim(Request::instance()->get('username'));
$export = Request::instance()->get('export');
// 拼装搜索条件
$where = array();
if(!empty($username)) $where['username'] = $username;
$where['record_type'] = 1;
if($export == 1){
$recharge_list = Db::name('receivables_record')->where($where)->order('id desc')->select();
}else{
//获取所有代理信息
$recharge_list = Db::name('receivables_record')->where($where)->order('id desc')->paginate(10,false,array('query'=>$get));
}
foreach($recharge_list as $k => $v){
$v['create_time'] = date("Y-m-d H:i",$v['create_time']);
if($v['recharge_type'] == 1){
$v['recharge_type'] = '银行卡充值';
}elseif($v['recharge_type'] == 2){
$v['recharge_type'] = '微信充值';
}elseif($v['recharge_type'] == 3){
$v['recharge_type'] = '支付宝充值';
}
if(!$v['recharge_bank']){
$v['recharge_bank'] = '-';
}
if(!$v['recharge_cardnumber']){
$v['recharge_cardnumber'] = '-';
}
$v['receivables_id'] = $v['recharge_type'].'-'.$v['receivables_id'];
$recharge_list[$k] = $v;
}
//导出excel列表
if($export == 1){
if($recharge_list){
//重新组合
$excelData = array();
foreach($recharge_list AS $k => $v){
$excelData[$k][0] = $v['username'];
$excelData[$k][1] = $v['recharge_type'];
$excelData[$k][2] = $v['receivables_id'];
$excelData[$k][3] = $v['recharge_name'];
$excelData[$k][4] = $v['recharge_bank'];
$excelData[$k][5] = $v['recharge_cardnumber'];
$excelData[$k][6] = $v['recharge_money'];
$excelData[$k][7] = $v['create_time'];
if($v['status'] == 0){
$excelData[$k][8] = '未充值';
}else{
$excelData[$k][8] = '已充值';
}
$excelData[$k][9] = $v['controller_admin'];
}
$title = array('用户名','充值类型','收款方式ID','充值着账号/姓名','充值银行','充值银行账户','充值金额','创建时间','状态','操作员');
$this->exportExcelCore($excelData, '充值列表', $title);
exit('已导出支持列表,请不要重复刷新该页面!');
}else{
exit('没有可以导出的列表!');
}
}
// 渲染变量和模板
$this->assign('recharge_list',$recharge_list);
$this->assign('query',$query);
return $this->fetch();
}
public function deal_recharge(){
if(Request::instance()->post()){
// 接收数据
$id = Request::instance()->post('recharge_id');
// 数据验证
if(!$id){
die(json_encode(['code'=>0,'msg'=>'充值记录不存在']));
}
$user_info = Session::get('user_info');
$result = Db::name('receivables_record')->where('id',$id)->update(array('status' => 1,'controller_admin'=>$user_info['admin']));
if($result){
insertAdminLog('处理充值',"处理充值 | 订单ID: ".$id);
die(json_encode(['code'=>1,'msg'=>'充值成功!']));
}else{
die(json_encode(['code'=>1,'msg'=>'充值失败!']));
}
}else{
die(json_encode(['code'=>0,'msg'=>'操作错误!']));
}
}
public function withdrawal_record(){
// 接收分页的条件
$get = Request::instance()->get();
$query = http_build_query($get);
$this->assign('get',$get);
$this->assign('query',$query);
// 接收搜索的条件信息
$username = trim(Request::instance()->get('username'));
$export = Request::instance()->get('export');
// 拼装搜索条件
$where = array();
if(!empty($username)) $where['username'] = $username;
$where['record_type'] = 2;
if($export == 1){
$withdrawal_list = Db::name('receivables_record')->where($where)->order('id desc')->select();
}else{
//获取所有代理信息
$withdrawal_list = Db::name('receivables_record')->where($where)->order('id desc')->paginate(10,false,array('query'=>$get));
}
foreach($withdrawal_list as $k => $v){
$v['create_time'] = date("Y-m-d H:i",$v['create_time']);
$withdrawal_list[$k] = $v;
}
//导出excel列表
if($export == 1){
if($withdrawal_list){
//重新组合
$excelData = array();
foreach($withdrawal_list AS $k => $v){
$excelData[$k][0] = $v['username'];
$excelData[$k][1] = $v['recharge_bank'];
$excelData[$k][2] = $v['recharge_bank_branch'];
$excelData[$k][3] = $v['recharge_cardnumber'];
$excelData[$k][4] = $v['recharge_money'];
$excelData[$k][5] = $v['create_time'];
if($v['status'] == 0){
$excelData[$k][6] = '未提现';
}else{
$excelData[$k][6] = '已提现';
}
$excelData[$k][7] = $v['controller_admin'];
}
$title = array('用户名','提现银行','提现银行支行','提现银行账户','提现金额','创建时间','状态','操作员');
$this->exportExcelCore($excelData, '提现列表', $title);
exit('已导出支持列表,请不要重复刷新该页面!');
}else{
exit('没有可以导出的列表!');
}
}
// 渲染变量和模板
$this->assign('withdrawal_list',$withdrawal_list);
$this->assign('query',$query);
return $this->fetch();
}
public function deal_withdrawal(){
if(Request::instance()->post()){
$user_info = Session::get('user_info');
// 接收数据
$id = Request::instance()->post('recharge_id');
// 数据验证
$receivables_record = Db::name('receivables_record')->where(array('id' => $id, 'record_type' => 2))->find();
if(!$receivables_record){
die(json_encode(['code'=>0,'msg'=>'提现记录不存在']));
}
if($receivables_record['status'] > 0){
die(json_encode(['code'=>0,'msg'=>'该记录已经处理过了']));
}
$user = Db::name('user')->where(array('id' => $receivables_record['user_id'], 'status' => 1, 'is_delete' => 0, 'agent' => 0))->find();
if(!$user){
die(json_encode(['code'=>0,'msg'=>'没找到相关会员信息']));
}
$zdlIdArr = explode(',',$user['agent_parent_id_path']);
$zdlId = $zdlIdArr[0];
$zdl = Db::name('user')->where(array('id' => $zdlId, 'status' => 1, 'is_delete' => 0, 'agent' => 1))->find();
if(!$zdl){
die(json_encode(['code'=>0,'msg'=>'所属总代理账号异常,暂不能提现']));
}
//防止重复提交
$allowSubmit = Session::get('allowSubmit');
if($allowSubmit == 'YES'){
Session::delete('allowSubmit');
}else{
Session::delete('allowSubmit');
return json(array('code' => 0, 'msg' => "请勿重复提交"));
}
//插入上分表并增加余分 总代理
$recharge = array();
$recharge['type'] = 5;
$recharge['amount'] = $receivables_record['recharge_money'];
$recharge['mode'] = 1;
$recharge['agent_or_admin'] = 3;
$recharge['user_id'] = $zdl['id'];
$recharge['user_type'] = $zdl['agent'];
$recharge['user_agent_level'] = 0;
$recharge['username_for'] = $zdl['username'];
$recharge['nickname_for'] = $zdl['nickname'];
$recharge['user_parent_id'] = $zdl['agent_parent_id'];
$recharge['admin_id'] = $user_info['id'];
$recharge['admin_user_name'] = $user_info['admin'];
$recharge['create_time'] = time();
$recharge['old_money'] = $zdl['money'];
$recharge['new_money'] = $zdl['money'] + $receivables_record['recharge_money'];
$recharge['controller_system'] = 3;
$recharge['remake'] = '总后台操作允许玩家提现,提现金额加到所属总代余额上';
Db::name('recharge')->insert($recharge);
//插入上分表 记录玩家余分变动
$rechargeUser = array();
$rechargeUser['type'] = 5;
$rechargeUser['amount'] = $receivables_record['recharge_money'];
$rechargeUser['mode'] = 2;
$rechargeUser['agent_or_admin'] = 3;
$rechargeUser['controller_id'] = $zdl['id'];
$rechargeUser['controller_username'] = $zdl['username'];
$rechargeUser['controller_nickname'] = $zdl['nickname'];
$rechargeUser['controller_type'] = '总后台操作允许玩家提现,提现金额加到所属总代余额上';
$rechargeUser['controller_old_money'] = $zdl['money'];
$rechargeUser['controller_new_money'] = $zdl['money'] + $receivables_record['recharge_money'];
$rechargeUser['user_id'] = $user['id'];
$rechargeUser['user_type'] = $user['agent'];
$rechargeUser['user_agent_level'] = 0;
$rechargeUser['username_for'] = $user['username'];
$rechargeUser['nickname_for'] = $user['nickname'];
$rechargeUser['user_parent_id'] = $user['agent_parent_id'];
$rechargeUser['admin_id'] = $user_info['id'];
$rechargeUser['admin_user_name'] = $user_info['admin'];
$rechargeUser['create_time'] = time();
$rechargeUser['old_money'] = $user['money'] + $receivables_record['recharge_money'];
$rechargeUser['new_money'] = $user['money'];
$rechargeUser['controller_system'] = 3;
$rechargeUser['remake'] = '总后台操作允许玩家提现,提现金额加到所属总代余额上';
Db::name('recharge')->insert($rechargeUser);
$zdlMoney = $zdl['money'] + $receivables_record['recharge_money'];
Db::name('user')->where(array('id' => $zdlId))->limit(1)->update(array('money' => $zdlMoney));
$result = Db::name('receivables_record')->where('id',$id)->update(array('status' => 1,'controller_admin'=>$user_info['admin']));
if($result){
insertAdminLog('提现充值',"提现充值 | 订单ID: ".$id);
die(json_encode(['code'=>1,'msg'=>'提现成功!']));
}else{
die(json_encode(['code'=>1,'msg'=>'提现失败!']));
}
}else{
die(json_encode(['code'=>0,'msg'=>'页面错误']));
}
}
public function do_add_remarks(){
if(Request::instance()->post()){
// 接收数据
$id = Request::instance()->post('record_id');
$remarks = Request::instance()->post('remarks');
// 数据验证
if(!$id){
die(json_encode(['code'=>0,'msg'=>'提现记录不存在']));
}
if(!$remarks){
die(json_encode(['code'=>0,'msg'=>'原因不能为空']));
}
$record_info = Db::name('receivables_record')->where('id',$id)->find();
$player_info = Db::name('user')->where('id',$record_info['user_id'])->find();
$user_info = Session::get('user_info');
$result = Db::name('receivables_record')->where('id',$id)->update(array('status' => 2,'controller_admin'=>$user_info['admin'],'remarks'=>$remarks));
if($result){
$new_money = $player_info['money'] + $record_info['recharge_money'];
Db::name('user')->where('id',$record_info['user_id'])->update(array('money' => $new_money));
insertAdminLog('拒绝提现',"拒绝提现 | 订单ID: ".$id);
die(json_encode(['code'=>1,'msg'=>'拒绝成功!']));
}else{
die(json_encode(['code'=>1,'msg'=>'拒绝失败!']));
}
}else{
die(json_encode(['code'=>0,'msg'=>'操作错误!']));
}
}
public function do_add_remarks_recharge(){
if(Request::instance()->post()){
// 接收数据
$id = Request::instance()->post('record_id');
$remarks = Request::instance()->post('remarks');
// 数据验证
if(!$id){
die(json_encode(['code'=>0,'msg'=>'充值记录不存在']));
}
if(!$remarks){
die(json_encode(['code'=>0,'msg'=>'原因不能为空']));
}
$user_info = Session::get('user_info');
$result = Db::name('receivables_record')->where('id',$id)->update(array('status' => 2,'controller_admin'=>$user_info['admin'],'remarks'=>$remarks));
if($result){
insertAdminLog('拒绝充值',"拒绝充值 | 订单ID: ".$id);
die(json_encode(['code'=>1,'msg'=>'拒绝成功!']));
}else{
die(json_encode(['code'=>1,'msg'=>'拒绝失败!']));
}
}else{
die(json_encode(['code'=>0,'msg'=>'操作错误!']));
}
}
/**
* 配置
*/
public function setting()
{
$system = Db::name('system')->find();
$this->assign('system',$system);
return $this->fetch();
}
public function saveSetting()
{
$post = Request::instance()->post();
$data = [
'recharge_money' => $post['recharge_money'],
'withdraw_money' => $post['withdraw_money'],
'withdraw_fee' => $post['withdraw_fee']
];
$system = Db::name('system')->find();
if($system){
$res = Db::name('system')->where('id',$system['id'])->update($data);
}else{
$res = Db::name('system')->insert($data);
}
if($res){
insertAdminLog('充值提现配置',"修改充值提现配置 ");
die(json_encode(['code'=>1,'msg'=>'操作成功!']));
}else{
die(json_encode(['code'=>1,'msg'=>'操作失败!']));
}
}
}