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

952 lines
44 KiB
PHP

<?php
namespace app\agent\controller;
use \think\Controller;
use think\Lang;
use \think\Session;
use \think\Request;
use \think\Db;
class Settle Extends Common{
// 洗码显示表
public function xima(){
Session::set('allowSubmit',"YES");
$user_id = intval(Request::instance()->get('user_id'));
if($user_id > 0){
// 获取查询代理信息
$user_info = Db::name('user')->where('id',$user_id)->find();
if(empty($user_info)){
die('用户错误');
}
}else{
die('用户错误');
}
$timeLength = Request::instance()->get('time_length');
if(isset($timeLength)){
$timeLength = intval(Request::instance()->get('time_length'));
}else{
$timeLength = 1;
}
$where = array();
if($timeLength == 1 || $timeLength == 2 || $timeLength == 3){
if($timeLength == 1 || $timeLength == 2){
if($timeLength == 1){
//上周时间
$weekStart = date("Y-m-d H:i:s",mktime(0, 0 , 0,date("m"),date("d")-date("w")+1-7,date("Y")));
$weekEnd = date("Y-m-d H:i:s",mktime(23,59,59,date("m"),date("d")-date("w")+7-7,date("Y")));
}elseif($timeLength == 2){
//本周时间
$weekStart = date("Y-m-d H:i:s",mktime(0, 0 , 0,date("m"),date("d")-date("w")+1,date("Y")));
$weekEnd = date("Y-m-d H:i:s",mktime(23,59,59,date("m"),date("d")-date("w")+7,date("Y")));
}
$startTime = strtotime($weekStart);
$endTime = strtotime($weekEnd);
$where['create_time'] = array('between',[$startTime,$endTime]);
}else{
$weekStart = '';
$weekEnd = '';
}
}else{
die('请选择结算周期');
}
$where['is_checkout'] = 0;
$where['user_id'] = $user_info['id'];
// 洗码总量
$user_info['ximaliang'] = Db::name('xima')->where($where)->sum('ximaliang');
// 未结码量
//$user_info['maliang_unbalanced'] = Db::name('xima')->where($where)->sum('maliang_true');
$user_info['maliang_unbalanced'] = Db::name('xima')->where($where)->sum('maliang');
// 最近洗码时间
if($user_info['last_xima_time'] > 0){
$user_info['last_xima_time'] = date('Y-m-d H:i:s',$user_info['last_xima_time']);
}else{
$user_info['last_xima_time'] = '-';
}
// 渲染参数和模板
$this->assign('time_start',$weekStart);
$this->assign('time_end',$weekEnd);
$this->assign('time_length',$timeLength);
$this->assign('user_info',$user_info);
return $this->fetch();
}
// 处理洗码
public function do_xima(){
if(Request::instance()->post()){
//防止重复提交
$allowSubmit = Session::get('allowSubmit');
if($allowSubmit == 'YES'){
Session::delete('allowSubmit');
}else{
Session::delete('allowSubmit');
return json(array('code' => 0, 'msg' => "请勿重复提交"));
}
// 登录用户信息
$user_info = Session::get('user_info');
$account_type = $user_info['account_type'];
$user_info = Db::name('user')->where('id',$user_info['id'])->find();
$user_info['account_type'] = $account_type;
// 接收洗码用户ID
$user_id = Request::instance()->post('user_id');
$type_xima = Request::instance()->post('type_xima');
$timeLength = Request::instance()->post('time_length');
if($timeLength != 1 && $timeLength != 2 && $timeLength != 3){
return json(array('code'=>0,'msg'=>'洗码出错'));
}
$startDate = Request::instance()->post('time_start');
$endDate = Request::instance()->post('time_end');
if($user_id > 0){
// 查询要洗码的用户信息
$user = Db::name('user')->where('id',$user_id)->find();
}else{
die(json_encode(['code'=>0,'msg'=>'洗码用户错误']));
}
if(!in_array($type_xima,[1,2])){
die(json_encode(['code'=>0,'msg'=>'请选择洗码方式']));
}
// 判断是不是直属
if($user['agent_parent_id'] != $user_info['id']){
die(json_encode(['code'=>0,'msg'=>'账号'.$user['username'].'不是您的直属下级,无法洗码']));
}
$ximaWhere = array();
if($timeLength == 1 || $timeLength == 2){
$startTime = strtotime($startDate);
$endTime = strtotime($endDate);
if($startTime > 0 && $endTime > 0){
$ximaWhere['create_time'] = array('between',[$startTime,$endTime]);
}else{
return json(array('code'=>0,'msg'=>'请正确选择洗码时间'));
}
}
$ximaWhere['user_id'] = $user['id'];
$ximaWhere['is_checkout'] = 0;
// 未结码量
$ximaliang_unbalanced = Db::name('xima')->where($ximaWhere)->sum('ximaliang');
$maliang_unbalanced = Db::name('xima')->where($ximaWhere)->sum('maliang');
// 验证码量
if($maliang_unbalanced <= 0){
die(json_encode(['code'=>0,'msg'=>'未结码量必须要大于0!']));
}
// 处理洗码(更新洗码时间)
if($type_xima == 1){
$moneycontrol = $user_info['money'] - $maliang_unbalanced;
if($moneycontrol < 0){
die(json_encode(['code'=>0,'msg'=>'余额不足!']));
}
Db::name('user')->where(['id'=>$user_info['id']])->update(['money'=>$moneycontrol]);
$money = $user['money'] + $maliang_unbalanced;
$result = Db::name('user')->where(['id'=>$user['id']])->update(['money'=>$money,'last_xima_time'=>time()]);
}else{
$result = Db::name('user')->where(['id'=>$user['id']])->update(['last_xima_time'=>time()]);
}
if(!$result){
die(json_encode(['code'=>0,'msg'=>'洗码失败!']));
}
// 更新洗码表状态
Db::name('xima')->where($ximaWhere)->update(['is_checkout'=>1,'checkout_time'=>time()]);
// 处理洗码
$dataXima = array();
$dataXima['user_id'] = $user['id'];
$dataXima['username'] = $user['username'];
$dataXima['admin_or_agent'] = 2;
$dataXima['connection_id'] = $user_info['id'];
$dataXima['connection_username'] = $user_info['username'];
$dataXima['ximaliang'] = $ximaliang_unbalanced;
$dataXima['maliang'] = $maliang_unbalanced;
if($user['type_xima'] == 1){
$dataXima['agent_ximalv'] = $user['agent_ximalv'].'/'.$user['agent_ximalv_dt'].'/'.$user['agent_ximalv_nn'];
}elseif($user['type_xima'] == 2){
$dataXima['agent_ximalv'] = $user['agent_ximalv_single'].'/'.$user['agent_ximalv_dt_single'].'/'.$user['agent_ximalv_nn_single'];
}else{
$dataXima['agent_ximalv'] = '0/0/0';
}
$dataXima['create_time'] = time();
if($type_xima == 1){
$dataXima['old_money'] = $user['money'];
$dataXima['new_money'] = $user['money'] + $maliang_unbalanced;
$dataXima['connection_old_money'] = $user_info['money'];
$dataXima['connection_new_money'] = $user_info['money'] - $maliang_unbalanced;
}else{
$dataXima['old_money'] = $user['money'];
$dataXima['new_money'] = $user['money'];
$dataXima['connection_old_money'] = $user_info['money'];
$dataXima['connection_new_money'] = $user_info['money'];
}
$dataXima['type'] = $type_xima;
Db::name('xima_log')->insert($dataXima);
if($type_xima == 1){
// 处理下分 下级
$dataRecharge = array();
$dataRecharge['type'] = 2;
$dataRecharge['amount'] = $maliang_unbalanced;
$dataRecharge['mode'] = 1;
$dataRecharge['agent_or_admin'] = 2;
$dataRecharge['controller_id'] = $user_info['id'];
$dataRecharge['controller_username'] = $user_info['username'];
$dataRecharge['controller_nickname'] = $user_info['nickname'];
$dataRecharge['controller_type'] = '代理系统操作';
$dataRecharge['user_id'] = $user['id'];
$dataRecharge['user_type'] = $user['agent'];
$dataRecharge['user_agent_level'] = $user['agent_level'];
$dataRecharge['username_for'] = $user['username'];
$dataRecharge['nickname_for'] = $user['nickname'];
$dataRecharge['user_parent_id'] = $user['agent_parent_id'];
$dataRecharge['create_time'] = time();
$dataRecharge['old_money'] = $user['money'];
$dataRecharge['new_money'] = $user['money'] + $maliang_unbalanced;
$dataRecharge['controller_old_money'] = $user_info['money'];
$dataRecharge['controller_new_money'] = $user_info['money'] - $maliang_unbalanced;
$dataRecharge['controller_system'] = 1;
if($timeLength == 3){
$dataRecharge['remake'] = '洗码上分,洗码时间范围为全部洗码';
}else{
$dataRecharge['remake'] = '洗码上分,洗码时间范围为'.$startDate.'至'.$endDate;
}
Db::name('recharge')->insert($dataRecharge);
// 处理下分(上级)
$dataRecharge = array();
$dataRecharge['type'] = 2;
$dataRecharge['amount'] = $maliang_unbalanced;
$dataRecharge['mode'] = 2;
$dataRecharge['agent_or_admin'] = 2;
$dataRecharge['controller_id'] = $user_info['id'];
$dataRecharge['controller_username'] = $user_info['username'];
$dataRecharge['controller_nickname'] = $user_info['nickname'];
$dataRecharge['controller_type'] = '代理系统操作';
$dataRecharge['user_id'] = $user_info['id'];
$dataRecharge['user_type'] = $user_info['agent'];
$dataRecharge['user_agent_level'] = $user_info['agent_level'];
$dataRecharge['username_for'] = $user_info['username'];
$dataRecharge['nickname_for'] = $user_info['nickname'];
$dataRecharge['user_parent_id'] = $user_info['agent_parent_id'];
$dataRecharge['create_time'] = time();
$dataRecharge['old_money'] = $user_info['money'];
$dataRecharge['new_money'] = $user_info['money'] - $maliang_unbalanced;
$dataRecharge['controller_old_money'] = $user_info['money'];
$dataRecharge['controller_new_money'] = $user_info['money'] - $maliang_unbalanced;
$dataRecharge['controller_system'] = 1;
$dataRecharge['remake'] = '下级洗码结算(上分),上级余额相应处理';
Db::name('recharge')->insert($dataRecharge);
}
die(json_encode(['code'=>1,'msg'=>'洗码成功']));
}else{
die(json_encode(['code'=>0,'msg'=>'操作错误!']));
}
}
// 结算显示表
public function cs(){
Session::set('allowSubmit',"YES");
// 接收洗码用户ID
$user_id = Request::instance()->get('user_id');
if($user_id > 0){
$user_info = Db::name('user')->where('id',$user_id)->find();
if(empty($user_info)){
die('用户错误');
}
}else{
die('用户错误!');
}
$startDate = Request::instance()->get('startDate');
$endDate = Request::instance()->get('endDate');
$where = array();
if(isset($startDate) && isset($endDate)){
$startTime = strtotime($startDate);
$endTime = strtotime($endDate);
$where['create_time'] = array('between',[$startTime,$endTime]);
$this->assign('startDate',$startDate);
$this->assign('endDate',$endDate);
}
$where['user_id'] = $user_info['id'];
$where['is_checkout'] = 0;
// 总赢
$user_info['win_total'] = Db::name('cs')->where($where)->sum('win_total');
// 未结占成
$user_info['cs_unbalanced'] = Db::name('cs')->where($where)->sum('share_amount');
// 分担码量
$user_info['share_maliang'] = Db::name('cs')->where($where)->sum('share_maliang');
// 最近结算时间
if($user_info['last_cs_time'] > 0){
$user_info['last_cs_time'] = date('Y-m-d H:i:s',$user_info['last_cs_time']);
}else{
$user_info['last_cs_time'] = '-';
}
// 渲染参数和模板
$this->assign('user_info',$user_info);
return $this->fetch();
}
// 处理结算
public function do_cs(){
if(Request::instance()->post()){
//防止重复提交
$allowSubmit = Session::get('allowSubmit');
if($allowSubmit == 'YES'){
Session::delete('allowSubmit');
}else{
Session::delete('allowSubmit');
return json(array('code' => 0, 'msg' => "请勿重复提交"));
}
// 登录用户信息
$user_info = Session::get('user_info');
$account_type = $user_info['account_type'];
$user_info = Db::name('user')->where('id',$user_info['id'])->find();
$user_info['account_type'] = $account_type;
// 接收洗码用户ID
$user_id = Request::instance()->post('user_id');
$type_cs = Request::instance()->post('type_cs');
if($user_id > 0){
// 查询要洗码的用户信息
$user = Db::name('user')->where('id',$user_id)->find();
}else{
die(json_encode(['code'=>0,'msg'=>'结算用户错误!']));
}
if(!in_array($type_cs,[1,2])){
die(json_encode(['code'=>0,'msg'=>'请选择结算方式!']));
}
// 判断是不是直属
if($user['agent_parent_id'] != $user_info['id']){
die(json_encode(['code'=>0,'msg'=>'账号'.$user['username'].'不是您的直属下级,无法结算']));
}
$startDate = Request::instance()->post('startDate');
$endDate = Request::instance()->post('endDate');
$where = array();
if(isset($startDate) && isset($endDate)){
$startTime = strtotime($startDate);
$endTime = strtotime($endDate);
if($startTime > 0 && $endTime > 0){
$where['create_time'] = array('between',[$startTime,$endTime]);
}
}
$where['user_id'] = $user['id'];
$where['is_checkout'] = 0;
// 总赢
$win_total = Db::name('cs')->where($where)->sum('win_total');
$cs_unbalanced = Db::name('cs')->where($where)->sum('share_amount');
$share_maliang = Db::name('cs')->where($where)->sum('share_maliang');
// 验证码量
if($cs_unbalanced == 0 && $share_maliang == 0){
die(json_encode(['code'=>0,'msg'=>'结算占成收益不能为0']));
}
// 处理结算(更新结算时间)
if($type_cs == 1){
$moneycontrol = $user_info['money'] - $cs_unbalanced + $share_maliang;
if($moneycontrol < 0){
die(json_encode(['code'=>0,'msg'=>'余额不足!']));
}
Db::name('user')->where(['id'=>$user_info['id']])->update(['money'=>$moneycontrol]);
$money = $user['money'] + $cs_unbalanced - $share_maliang;
$result = Db::name('user')->where(['id'=>$user['id']])->update(['money'=>$money,'last_cs_time'=>time()]);
}else{
$result = Db::name('user')->where(['id'=>$user['id']])->update(['last_cs_time'=>time()]);
}
if(!$result){
die(json_encode(['code'=>0,'msg'=>'结算失败!']));
}
// 更新占成状态
Db::name('cs')->where($where)->update(['is_checkout'=>1,'checkout_time'=>time()]);
// 处理结算
$dataCs = array();
$dataCs['user_id'] = $user['id'];
$dataCs['username'] = $user['username'];
$dataCs['admin_or_agent'] = 2;
$dataCs['connection_id'] = $user_info['id'];
$dataCs['connection_username'] = $user_info['username'];
$dataCs['share_amount'] = $cs_unbalanced;
$dataCs['share_maliang'] = $share_maliang;
$dataCs['agent_cs'] = $user_info['agent_cs'];
$dataCs['create_time'] = time();
if($type_cs == 1){
$dataCs['old_money'] = $user['money'];
$dataCs['new_money'] = $user['money'] + $cs_unbalanced - $share_maliang;
$dataCs['connection_old_money'] = $user_info['money'];
$dataCs['connection_new_money'] = $user_info['money'] - $cs_unbalanced + $share_maliang;
}else{
$dataCs['old_money'] = $user['money'];
$dataCs['new_money'] = $user['money'];
$dataCs['connection_old_money'] = $user_info['money'];
$dataCs['connection_new_money'] = $user_info['money'];
}
$dataCs['type'] = $type_cs;
Db::name('cs_log')->insert($dataCs);
// 确定是上分还是下分
$scoreAmount = 0;
if($cs_unbalanced > 0){
$mode = 1;
$scoreAmount = $cs_unbalanced - $share_maliang;
}elseif($cs_unbalanced < 0){
$mode = 2;
$scoreAmount = to_number($cs_unbalanced - $share_maliang);
}
if($type_cs == 1){
// 处理上分(下级)
$dataRecharge = array();
$dataRecharge['type'] = 3;
$dataRecharge['amount'] = $scoreAmount;
$dataRecharge['mode'] = $mode;
$dataRecharge['agent_or_admin'] = 2;
$dataRecharge['controller_id'] = $user_info['id'];
$dataRecharge['controller_username'] = $user_info['username'];
$dataRecharge['controller_nickname'] = $user_info['nickname'];
$dataRecharge['controller_type'] = '代理系统操作';
$dataRecharge['user_id'] = $user['id'];
$dataRecharge['user_type'] = $user['agent'];
$dataRecharge['user_agent_level'] = $user['agent_level'];
$dataRecharge['username_for'] = $user['username'];
$dataRecharge['nickname_for'] = $user['nickname'];
$dataRecharge['user_parent_id'] = $user['agent_parent_id'];
$dataRecharge['create_time'] = time();
$dataRecharge['old_money'] = $user['money'];
$dataRecharge['new_money'] = $user['money'] + $cs_unbalanced - $share_maliang;
$dataRecharge['controller_old_money'] = $user_info['money'];
$dataRecharge['controller_new_money'] = $user_info['money'] - $cs_unbalanced + $share_maliang;
$dataRecharge['controller_system'] = 1;
if(isset($startDate) && isset($endDate)){
$dataRecharge['remake'] = '占股结算上分,结算时间范围为全部结算';
}else{
$dataRecharge['remake'] = '占股结算上分,结算时间范围为'.$startDate.'至'.$endDate;
}
Db::name('recharge')->insert($dataRecharge);
// 处理下分(上级级)
$dataRecharge = array();
$dataRecharge['type'] = 3;
$dataRecharge['amount'] = $scoreAmount;
$dataRecharge['mode'] = $mode == 1 ? 2 : 1;
$dataRecharge['agent_or_admin'] = 2;
$dataRecharge['controller_id'] = $user_info['id'];
$dataRecharge['controller_username'] = $user_info['username'];
$dataRecharge['controller_nickname'] = $user_info['nickname'];
$dataRecharge['controller_type'] = '代理系统操作';
$dataRecharge['user_id'] = $user_info['id'];
$dataRecharge['user_type'] = $user_info['agent'];
$dataRecharge['user_agent_level'] = $user_info['agent_level'];
$dataRecharge['username_for'] = $user_info['username'];
$dataRecharge['nickname_for'] = $user_info['nickname'];
$dataRecharge['user_parent_id'] = $user_info['agent_parent_id'];
$dataRecharge['create_time'] = time();
$dataRecharge['old_money'] = $user_info['money'];
$dataRecharge['new_money'] = $user_info['money'] - $cs_unbalanced + $share_maliang;
$dataRecharge['controller_old_money'] = $user_info['money'];
$dataRecharge['controller_new_money'] = $user_info['money'] - $cs_unbalanced + $share_maliang;
$dataRecharge['controller_system'] = 1;
$dataRecharge['remake'] = '下级洗码结算(上下分),上级余额相应处理';
Db::name('recharge')->insert($dataRecharge);
}
die(json_encode(['code'=>1,'msg'=>'结算成功']));
}else{
die(json_encode(['code'=>0,'msg'=>'操作错误!']));
}
}
// 返水显示表
public function rebate(){
Session::set('allowSubmit',"YES");
$user_id = intval(Request::instance()->get('user_id'));
if($user_id > 0){
// 获取查询代理信息
$user_info = Db::name('user')->where('id',$user_id)->find();
if(empty($user_info)){
die('用户错误');
}
}else{
die('用户错误');
}
$gameType = intval(Request::instance()->get('game_type'));
if(!in_array($gameType,[1,2])){
die('结算类型错误');
}
$timeLength = Request::instance()->get('time_length');
if(isset($timeLength)){
$timeLength = intval(Request::instance()->get('time_length'));
}else{
$timeLength = 1;
}
$where = array();
if($timeLength == 1 || $timeLength == 2 || $timeLength == 3){
if($timeLength == 1 || $timeLength == 2){
if($timeLength == 1){
//上周时间
$weekStart = date("Y-m-d H:i:s",mktime(0, 0 , 0,date("m"),date("d")-date("w")+1-7,date("Y")));
$weekEnd = date("Y-m-d H:i:s",mktime(23,59,59,date("m"),date("d")-date("w")+7-7,date("Y")));
}elseif($timeLength == 2){
//本周时间
$weekStart = date("Y-m-d H:i:s",mktime(0, 0 , 0,date("m"),date("d")-date("w")+1,date("Y")));
$weekEnd = date("Y-m-d H:i:s",mktime(23,59,59,date("m"),date("d")-date("w")+7,date("Y")));
}
$startTime = strtotime($weekStart);
$endTime = strtotime($weekEnd);
$where['create_time'] = array('between',[$startTime,$endTime]);
}else{
$weekStart = '';
$weekEnd = '';
}
}else{
die('请选择结算周期');
}
$where['game_type'] = $gameType;
$where['is_checkout'] = 0;
$where['user_id'] = $user_info['id'];
// 下注金额
$user_info['amount'] = Db::name('rebate')->where($where)->sum('amount');
// 未结返水金额
$user_info['rebate_unbalanced'] = Db::name('rebate')->where($where)->sum('rebate_amount_actual');
// pre(Db::name('rebate')->getLastSql());
// 最近返水时间
if($user_info['last_rebate_time'] > 0){
$user_info['last_rebate_time'] = date('Y-m-d H:i:s',$user_info['last_rebate_time']);
}else{
$user_info['last_rebate_time'] = '-';
}
// 渲染参数和模板
$this->assign('time_start',$weekStart);
$this->assign('time_end',$weekEnd);
$this->assign('time_length',$timeLength);
$this->assign('user_info',$user_info);
$this->assign('game_type',$gameType);
return $this->fetch();
}
// 处理返水
public function do_rebate(){
if(Request::instance()->post()){
//防止重复提交
$allowSubmit = Session::get('allowSubmit');
if($allowSubmit == 'YES'){
Session::delete('allowSubmit');
}else{
Session::delete('allowSubmit');
return json(array('code' => 0, 'msg' => "请勿重复提交"));
}
// 登录用户信息
$user_info = Session::get('user_info');
$account_type = $user_info['account_type'];
$user_info = Db::name('user')->where('id',$user_info['id'])->find();
$user_info['account_type'] = $account_type;
// 接收洗码用户ID
$user_id = Request::instance()->post('user_id');
$gameType = intval(Request::instance()->post('game_type'));
if(!in_array($gameType,[1,2])){
return json(array('code'=>0,'msg'=>'结算类型错误'));
}
$timeLength = Request::instance()->post('time_length');
if($timeLength != 1 && $timeLength != 2 && $timeLength != 3){
return json(array('code'=>0,'msg'=>'返水出错'));
}
$startDate = Request::instance()->post('time_start');
$endDate = Request::instance()->post('time_end');
if($user_id > 0){
// 查询要洗码的用户信息
$user = Db::name('user')->where('id',$user_id)->find();
}else{
die(json_encode(['code'=>0,'msg'=>'返水用户错误']));
}
$rebateWhere = array();
if($timeLength == 1 || $timeLength == 2){
$startTime = strtotime($startDate);
$endTime = strtotime($endDate);
if($startTime > 0 && $endTime > 0){
$rebateWhere['create_time'] = array('between',[$startTime,$endTime]);
}else{
return json(array('code'=>0,'msg'=>'请正确选择返水时间'));
}
}
$rebateWhere['game_type'] = $gameType;
$rebateWhere['user_id'] = $user['id'];
$rebateWhere['is_checkout'] = 0;
// 下注金额
$amount = Db::name('rebate')->where($rebateWhere)->sum('amount');
$rebate_amount_unbalanced = Db::name('rebate')->where($rebateWhere)->sum('rebate_amount_actual');
// 验证返水
if($rebate_amount_unbalanced <= 0){
die(json_encode(['code'=>0,'msg'=>'未结返水必须要大于0!']));
}
// 处理返水
$money = $user['money'] + $rebate_amount_unbalanced;
$result = Db::name('user')->where(['id'=>$user['id']])->update(['money'=>$money,'last_rebate_time'=>time()]);
if(!$result){
die(json_encode(['code'=>0,'msg'=>'返水失败!']));
}
// 更新返水表状态
Db::name('rebate')->where($rebateWhere)->update(['is_checkout'=>1,'checkout_time'=>time()]);
// 处理返水
$dataRebate = array();
$dataRebate['game_type'] = $gameType;
$dataRebate['user_id'] = $user['id'];
$dataRebate['username'] = $user['username'];
$dataRebate['admin_or_agent'] = 2;
$dataRebate['controller_id'] = $user_info['id'];
$dataRebate['controller_username'] = $user_info['username'];
$dataRebate['amount'] = $amount;
$dataRebate['rebate_amount'] = $rebate_amount_unbalanced;
$dataRebate['rebate_rate'] = $user['rebate_rate'];
$dataRebate['create_time'] = time();
$dataRebate['old_money'] = $user['money'];
$dataRebate['new_money'] = $money;
Db::name('rebate_log')->insert($dataRebate);
// 处理上分
$dataRecharge = array();
$dataRecharge['type'] = 2;
$dataRecharge['money'] = $rebate_amount_unbalanced;
$dataRecharge['user_id'] = $user['id'];
$dataRecharge['create_time'] = time();
$dataRecharge['old_money'] = $user['money'];
$dataRecharge['new_money'] = $money;
Db::name('user_recharge')->insert($dataRecharge);
die(json_encode(['code'=>1,'msg'=>'返水成功']));
}else{
die(json_encode(['code'=>0,'msg'=>'操作错误!']));
}
}
// 添加充值提现页面
public function recharge(){
$langType = cookie('think_var');
$lang = Lang::get('agent');
$jsonlang = json_encode($lang);
$this->assign('langType',$langType);
$this->assign('lang',$lang);
$this->assign('jsonlang',$jsonlang);
Session::set('allowSubmit',"YES");
// 获取管理员信息
$user = Session::get('user_info');
$account_type = $user['account_type'];
$user = Db::name('user')->where('id',$user['id'])->find();
$user['account_type'] = $account_type;
if($user['account_type'] == 1){
return $lang['illegal_request'];
}
$user = Db::name('user')->where('id',$user['id'])->find();
$agentParentMoney = $user['money'];
// 接收需要修改的代理ID
$id = Request::instance()->get('id');
$user_info = Db::name('user')->where('id',$id)->find();
//送分限制
$agent_parent_id_path_arr = explode(',',$user_info['agent_parent_id_path']);
$agent_id_intersect = array_intersect(LEVEL_AGENT_ID,$agent_parent_id_path_arr);
if(!empty($agent_id_intersect) && $user_info['agent'] == 0 && $user['agent_parent_id'] == 0){
$this->assign('intersect',1);
}else{
$this->assign('intersect',0);
}
//渲染参数和模板
$this->assign('user_info',$user_info);
$this->assign('agentParentMoney',$agentParentMoney);
return $this->fetch();
}
// 处理充值提现
public function do_recharge(){
$langType = cookie('think_var');
$lang = Lang::get('agent');
$jsonlang = json_encode($lang);
$this->assign('langType',$langType);
$this->assign('lang',$lang);
$this->assign('jsonlang',$jsonlang);
$user_info = Session::get('user_info');
$account_type = $user_info['account_type'];
$user_info = Db::name('user')->where('id',$user_info['id'])->find();
$user_info['account_type'] = $account_type;
if($user_info['account_type'] == 1){
die(json_encode(['code'=>0,'msg'=>$lang['illegal_request']]));
}
if(Request::instance()->post()){
//防止重复提交
$allowSubmit = Session::get('allowSubmit');
if($allowSubmit == 'YES'){
Session::delete('allowSubmit');
}else{
Session::delete('allowSubmit');
return json(array('code' => 0, 'msg' => $lang['do_not_resubmit']));
}
// 接收数据
$userId = Request::instance()->post('userId');
$recharge = Request::instance()->post('recharge');
$rechargeMoney = round(Request::instance()->post('rechargeMoney'),2);
$rechargeGive = intval(Request::instance()->post('recharge_give'));
$remake = Request::instance()->post('remake');
if(isset($rechargeGive) && $rechargeGive == 1 && $recharge == 1){
$type = 5;
}else{
$type = 1;
}
// 数据验证
if($userId <= 0){
die(json_encode(['code'=>0,'msg'=>$lang['error_id']]));
}
if($rechargeMoney <= 0){
die(json_encode(['code'=>0,'msg'=>$lang['amount_big_than_0']]));
}
if($recharge == 1 && $rechargeMoney > $user_info['money']){
die(json_encode(['code'=>0,'msg'=>$lang['recharge_exceeds_limit'].' '.$user_info['money']]));
}
$user = Db::name('user')->where('id',$userId)->find();
if($recharge == 2 && $rechargeMoney > $user['money']){
die(json_encode(['code'=>0,'msg'=>$lang['insufficient_balance'].' '.$user['money'].'!']));
}
if($recharge == 1){
$msgSuccess = $lang['recharged_successfully'];
$msgFail = $lang['recharged_failed'];
}elseif($recharge == 2){
$msgSuccess = $lang['withdrawal_successful'];
$msgFail = $lang['withdrawal_failed'];
}else{
die(json_encode(['code'=>0,'msg'=>$lang['wrong_r_w_type']]));
}
// 用户更新余额
$dataUser = array();
$dataUser['id'] = $user['id'];
if($recharge == 1){
$dataUser['money'] = $user['money'] + $rechargeMoney;
$dataUser['last_recharge'] = $rechargeMoney;
$dataUser['last_recharge_time'] = time();
$dataUser['recharge_count'] = $user['recharge_count'] + 1;
$dataUser['recharge_total_amount'] = $user['recharge_total_amount'] + $rechargeMoney;
}elseif($recharge == 2){
$dataUser['money'] = $user['money'] - $rechargeMoney;
}
$updateResultUser = Db::name('user')->where('id',$user['id'])->update($dataUser);
if(!$updateResultUser){
die(json_encode(['code'=>0,'msg'=>$msgFail]));
}
// 管理员更新余额
$dataController = array();
$dataController['id'] = $user_info['id'];
if($recharge == 1){
$dataController['money'] = $user_info['money'] - $rechargeMoney;
$dataController['last_recharge_out'] = $rechargeMoney;
$dataController['last_recharge_out_time'] = time();
$dataController['recharge_out_count'] = $user_info['recharge_out_count'] + 1;
$dataController['recharge_out_total_amount'] = $user_info['recharge_out_total_amount'] + $rechargeMoney;
}elseif($recharge == 2){
$dataController['money'] = $user_info['money'] + $rechargeMoney;
}
$updateResultController = Db::name('user')->where('id',$user_info['id'])->update($dataController);
if(!$updateResultController){
// 恢复用户的余额(回滚)
$dataUser = array();
$dataUser['id'] = $user['id'];
$dataUser['money'] = $user['money'];
$dataUser['last_recharge'] = $user['last_recharge'];
$dataUser['last_recharge_time'] = $user['last_recharge_time'];
$dataUser['recharge_count'] = $user['recharge_count'];
$dataUser['recharge_total_amount'] = $user['recharge_total_amount'];
Db::name('user')->where('id',$user['id'])->update($dataUser);
die(json_encode(['code'=>0,'msg'=>$msgFail]));
}
// 记录充值/提现
$dataRecharge = array();
$dataRecharge['type'] = $type;
$dataRecharge['amount'] = $rechargeMoney;
$dataRecharge['mode'] = $recharge;
$dataRecharge['agent_or_admin'] = 2;
$dataRecharge['controller_id'] = $user_info['id'];
$dataRecharge['controller_username'] = $user_info['username'];
$dataRecharge['controller_nickname'] = $user_info['nickname'];
$dataRecharge['controller_type'] = '代理系统操作';
$dataRecharge['user_id'] = $user['id'];
$dataRecharge['user_type'] = $user['agent'];
$dataRecharge['user_agent_level'] = $user['agent_level'];
$dataRecharge['username_for'] = $user['username'];
$dataRecharge['nickname_for'] = $user['nickname'];
$dataRecharge['user_parent_id'] = $user['agent_parent_id'];
$dataRecharge['create_time'] = time();
$dataRecharge['old_money'] = $user['money'];
$dataRecharge['new_money'] = $dataUser['money'];
$dataRecharge['controller_old_money'] = $user_info['money'];
$dataRecharge['controller_new_money'] = $dataController['money'];
$dataRecharge['controller_system'] = 1;
$dataRecharge['remake'] = $remake;
$result = Db::name('recharge')->insert($dataRecharge);
if($result){
die(json_encode(['code'=>1,'msg'=>$msgSuccess]));
}else{
// 恢复用户的余额
$dataUser = array();
$dataUser['id'] = $user['id'];
$dataUser['money'] = $user['money'];
$dataUser['last_recharge'] = $user['last_recharge'];
$dataUser['last_recharge_time'] = $user['last_recharge_time'];
$dataUser['recharge_count'] = $user['recharge_count'];
$dataUser['recharge_total_amount'] = $user['recharge_total_amount'];
Db::name('user')->where('id',$user['id'])->update($dataUser);
// 恢复管理员的余额
$dataController = array();
$dataController['id'] = $user_info['id'];
$dataController['money'] = $user_info['money'];
$dataController['last_recharge'] = $user_info['last_recharge'];
$dataController['last_recharge_time'] = $user_info['last_recharge_time'];
$dataController['recharge_count'] = $user_info['recharge_count'];
$dataController['recharge_total_amount'] = $user_info['recharge_total_amount'];
Db::name('user')->where('id',$user_info['id'])->update($dataController);
die(json_encode(['code'=>1,'msg'=>$msgFail]));
}
}else{
die(json_encode(['code'=>0,'msg'=>$lang['operation_error']]));
}
}
// 抽水显示表
public function commission(){
Session::set('allowSubmit',"YES");
// 接收洗码用户ID
$user_id = Request::instance()->get('user_id');
if($user_id > 0){
// 获取查询代理信息
$user_info = Db::name('user')->where('id',$user_id)->find();
}else{
die('代理抽水用户错误!');
}
// 抽水数据
$user_info['amount_commission'] = Db::name('agent_commission')->where(['agent_id'=>$user_info['id'],'is_checkout'=>0])->sum('amount');
$user_info['agent_commission'] = Db::name('agent_commission')->where(['agent_id'=>$user_info['id'],'is_checkout'=>0])->order('id desc')->value('agent_commission');
$user_info['money_commission'] = Db::name('agent_commission')->where(['agent_id'=>$user_info['id'],'is_checkout'=>0])->sum('money_commission');
// 最近抽水时间
if($user_info['last_commission_time'] > 0){
$user_info['last_commission_time'] = date('Y-m-d H:i:s',$user_info['last_commission_time']);
}else{
$user_info['last_commission_time'] = '-';
}
$user_info['agent_commission'] = round($user_info['agent_commission'],2);
// 渲染参数和模板
$this->assign('user_info',$user_info);
return $this->fetch();
}
// 处理抽水
public function do_commission(){
if(Request::instance()->post()){
//防止重复提交
$allowSubmit = Session::get('allowSubmit');
if($allowSubmit == 'YES'){
Session::delete('allowSubmit');
}else{
Session::delete('allowSubmit');
return json(array('code' => 0, 'msg' => "请勿重复提交"));
}
// 登录用户信息
$user_info = Session::get('user_info');
$account_type = $user_info['account_type'];
$user_info = Db::name('user')->where('id',$user_info['id'])->find();
$user_info['account_type'] = $account_type;
// 接收抽水用户ID
$user_id = Request::instance()->post('user_id');
$type_commission = Request::instance()->post('type_commission');
if($user_id > 0){
// 查询要抽水的用户信息
$user = Db::name('user')->where('id',$user_id)->find();
}else{
die(json_encode(['code'=>0,'msg'=>'抽水用户错误!']));
}
if(!in_array($type_commission,[1,2])){
die(json_encode(['code'=>0,'msg'=>'请选择抽水方式!']));
}
// 判断是不是直属
if($user['agent_parent_id'] != $user_info['id']){
die(json_encode(['code'=>0,'msg'=>'账号'.$user['username'].'不是您的直属下级,无法操作']));
}
// 抽水数据
$amount_commission = Db::name('agent_commission')->where(['agent_id'=>$user['id'],'is_checkout'=>0])->sum('amount');
$agent_commission = Db::name('agent_commission')->where(['agent_id'=>$user['id'],'is_checkout'=>0])->order('id desc')->value('agent_commission');
$money_commission = Db::name('agent_commission')->where(['agent_id'=>$user['id'],'is_checkout'=>0])->sum('money_commission');
// 验证抽水
if($money_commission == 0){
die(json_encode(['code'=>0,'msg'=>'抽水金额不能为0!']));
}
// 处理抽水(更新抽水时间)
if($type_commission == 1){
$moneycontrol = $user_info['money'] - $money_commission;
if($moneycontrol < $money_commission){
die(json_encode(['code'=>0,'msg'=>'余额不足!']));
}
Db::name('user')->where(['id'=>$user_info['id']])->update(['money'=>$moneycontrol]);
$money = $user['money'] + $money_commission;
$result = Db::name('user')->where(['id'=>$user['id']])->update(['money'=>$money,'last_commission_time'=>time()]);
}else{
$result = Db::name('user')->where(['id'=>$user['id']])->update(['last_commission_time'=>time()]);
}
if(!$result){
die(json_encode(['code'=>0,'msg'=>'抽水失败!']));
}
// 更新抽水状态
Db::name('agent_commission')->where(['agent_id'=>$user['id'],'is_checkout'=>0])->update(['is_checkout'=>1,'checkout_time'=>time()]);
// 处理抽水
$dataCommission = array();
$dataCommission['user_id'] = $user['id'];
$dataCommission['username'] = $user['username'];
$dataCommission['agent_id'] = $user['id'];
$dataCommission['agent_username'] = $user['username'];
$dataCommission['controller_id'] = $user_info['id'];
$dataCommission['controller_username'] = $user_info['username'];
$dataCommission['amount'] = $amount_commission;
$dataCommission['agent_commission'] = $agent_commission;
$dataCommission['money_commission'] = $money_commission;
$dataCommission['type'] = $type_commission;
$dataCommission['create_time'] = time();
Db::name('agent_commission_log')->insert($dataCommission);
// 确定是充值还是提现
if($money_commission > 0){
$mode = 1;
}elseif($money_commission < 0){
$mode = 2;
$money_commission = to_number($money_commission);
}
if($type_commission == 1){
// 处理充值
$dataRecharge = array();
$dataRecharge['type'] = 6;
$dataRecharge['amount'] = $money_commission;
$dataRecharge['mode'] = $mode;
$dataRecharge['agent_or_admin'] = 2;
$dataRecharge['controller_id'] = $user_info['id'];
$dataRecharge['controller_username'] = $user_info['username'];
$dataRecharge['controller_nickname'] = $user_info['nickname'];
$dataRecharge['controller_type'] = '代理系统操作';
$dataRecharge['user_id'] = $user['id'];
$dataRecharge['user_type'] = $user['agent'];
$dataRecharge['user_agent_level'] = $user['agent_level'];
$dataRecharge['username_for'] = $user['username'];
$dataRecharge['nickname_for'] = $user['nickname'];
$dataRecharge['user_parent_id'] = $user['agent_parent_id'];
$dataRecharge['create_time'] = time();
$dataRecharge['old_money'] = $user['money'];
$dataRecharge['new_money'] = $user['money'] + $money_commission;
$dataRecharge['controller_old_money'] = $user_info['money'];
$dataRecharge['controller_new_money'] = $user_info['money'] - $money_commission;
$dataRecharge['controller_system'] = 1;
Db::name('recharge')->insert($dataRecharge);
}
die(json_encode(['code'=>1,'msg'=>'抽水成功']));
}else{
die(json_encode(['code'=>0,'msg'=>'操作错误!']));
}
}
}