| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609 |
- <?php
- namespace App\Http\logic\admin;
- use App\dao\Estatisticas\RechargeWithDraw;
- use App\Facade\RedisConnect;
- use App\Facade\TableName;
- use App\Game\Services\AgentSystemService;
- use App\Http\helper\Helper;
- use App\Http\helper\NumConfig;
- use App\Models\AccountsInfo;
- use App\Models\AccountWithDrawInfo;
- use App\Models\PrivateMail;
- use App\Models\Cpf;
- use App\Models\RecordUserDataStatistics;
- use App\Models\Withdrawal;
- use App\Models\WithdrawalChannelPositionConfig;
- use App\Services\CashService;
- use App\Services\LogDayStatisticalByDayAndChannel;
- use App\Services\StoredProcedure;
- use App\Util;
- use Carbon\Carbon;
- use Illuminate\Support\Facades\DB;
- use Illuminate\Support\Facades\Redis;
- use Illuminate\Support\Facades\Request;
- use Mockery\Exception;
- class WithdrawalLogic extends BaseLogicController
- {
- protected $agent; // 代付方
- public function __construct()
- {
- $this->agent = DB::table('agent.dbo.admin_configs')
- ->where('type', 'cash')
- ->where('status', 1)
- ->get();
- }
- public function waitWithdrawal($GameID, $withdraw_search, $withdraw, $state, $start_time, $end_time, $agent = '', $flag = false, $create_time_sort = '', $orderID = '', $final_start_time = '', $final_end_time = '', $excel = '', $Channel = '', $payState = '', $take_effect = '', $isEmpty = 0, $register_start_time = '', $register_end_time = '', $PackgeName = '',$firstWithDraw=0)
- {
- $SQL = DB::connection('write')->table('QPAccountsDB.dbo.OrderWithDraw as ow')
- ->join('QPAccountsDB.dbo.AccountsInfo as ai', 'ow.UserID', 'ai.UserID')
- ->leftJoin('QPAccountsDB.dbo.withdraw_notify as wn', 'ow.OrderID', '=', 'wn.order_sn')
- ->leftJoin('QPAccountsDB.dbo.AccountsRecord as ar', function ($join) {
- $join->on('ow.RecordID', 'ar.RecordID');
- $join->where('ar.type', 1);
- });
- if($firstWithDraw<2){
- $SQL->join(TableName::QPRecordDB() . 'RecordUserTotalStatistics as rds', function ($join) use ($firstWithDraw) {
- $join->on('rds.UserID', 'ow.UserID');
- $join->where('rds.Withdraw', $firstWithDraw>0?'=':'<>',0);
- });
- }
- if (!$flag) {
- empty($state) && $state = 1;
- } else {
- empty($state) && $state = 100;
- if ($isEmpty == 0) {
- empty($start_time) && $start_time = date('Y-m-d 00:00:00');
- empty($end_time) && $end_time = date('Y-m-d 23:59:59');
- } elseif ($isEmpty == 2) {
- empty($final_start_time) && $final_start_time = date('Y-m-d 00:00:00');
- empty($final_end_time) && $final_end_time = date('Y-m-d 23:59:59');
- }
- }
- !empty($GameID) && $where[] = ['ai.GameID', $GameID];
- // !empty($withdraw_search) && $SQL->whereRaw("ow.WithDraw+ow.ServiceFee=$withdraw_search");
- // switch ($withdraw) {
- // case 100:
- // $SQL = $SQL->havingRaw('sum(ow.WithDraw + ow.ServiceFee) < ?', [100]);
- // break;
- // case 500:
- // $SQL = $SQL->havingRaw('sum(ow.WithDraw + ow.ServiceFee) >= ?', [100]);
- // $SQL = $SQL->havingRaw('sum(ow.WithDraw + ow.ServiceFee) <= ?', [500]);
- // break;
- // case 1000:
- // $SQL = $SQL->havingRaw('sum(ow.WithDraw + ow.ServiceFee) >= ?', [500]);
- // $SQL = $SQL->havingRaw('sum(ow.WithDraw + ow.ServiceFee) <= ?', [1000]);
- // break;
- // case 1001:
- // $SQL = $SQL->havingRaw('sum(ow.WithDraw + ow.ServiceFee) > ?', [1000]);
- // break;
- // }
- if (empty($state)) {
- $where[] = ['ow.State', '=', 0];
- } elseif ($state == 100) {
- $where[] = ['ow.State', '<>', ''];
- } elseif ($state == 4) {
- $where[] = ['ow.State', '=', $state];
- } else {
- $where[] = ['ow.State', '=', $state];
- }
- !empty($start_time) && $where[] = ['CreateDate', '>=', str_replace('T', ' ', $start_time)];
- !empty($end_time) && $where[] = ['CreateDate', '<=', str_replace('T', ' ', $end_time)];
- if (!empty($agent)) {
- $SQL = $SQL->join('agent.dbo.admin_configs as ac', 'ow.agent', '=', 'ac.id');
- $where[] = ['agent', $agent];
- }
- !empty($orderID) && $where[] = ['OrderID', $orderID];
- !empty($final_start_time) && $where[] = ['finishDate', '>=', str_replace('T', ' ', $final_start_time)];
- !empty($final_end_time) && $where[] = ['finishDate', '<=', str_replace('T', ' ', $final_end_time)];
- if(Request::input('final_start_time_cn')) {
- $where[] = ['finishDate', '>=',
- date('Y-m-d H:i:s', strtotime(
- str_replace('T', ' ', Request::input('final_start_time_cn')). ' - 11 hours'
- ))
- ];
- }
- if(Request::input('final_end_time_cn')) {
- $where[] = ['finishDate', '<=',
- date('Y-m-d H:i:s', strtotime(
- str_replace('T', ' ', Request::input('final_end_time_cn')). ' - 11 hours'
- ))
- ];
- }
- (!empty($Channel) || $Channel === '0') && $where[] = ['ai.Channel', $Channel];
- if ($payState == 1) {
- $SQL = $SQL->join('QPRecordDB.dbo.RecordUserTotalStatistics as rs', 'ow.UserID', 'rs.UserID')->where('Recharge', '>', 0);
- }
- if ($take_effect == -1) {
- $SQL = $SQL->join('agent.dbo.withdrawal_position_log as log', function ($join) {
- $join->on('log.order_sn', '=', 'ow.OrderID');
- });
- } else {
- if (!empty($take_effect)) {
- $SQL = $SQL->Join('agent.dbo.admin_users as us', 'ar.admin_id', '=', 'us.id');
- $where[] = ['ar.admin_id', '=', $take_effect];
- }
- }
- !empty($register_start_time) && $where[] = ['RegisterDate', '>=', str_replace('T', ' ', $register_start_time) ];
- !empty($register_end_time) && $where[] = ['RegisterDate', '<=', str_replace('T', ' ', $register_end_time)];
- if (!empty($PackgeName)) {
- $SQL = $SQL->leftJoin('QPRecordDB.dbo.RecordPackageName as rn', 'ai.UserID', 'rn.UserID');
- $where[] = ['PackgeName', $PackgeName];
- }
- $adminChannels=session('admin_channels');
- if(count($adminChannels)<5)$SQL=$SQL->whereIn('ai.Channel', $adminChannels);
- // dd($where);
- if (!$flag && $excel) {
- AccountWithDrawInfo::verifyOrderDownExcel($SQL, $where);
- } elseif ($flag && $excel) {
- AccountWithDrawInfo::orderOverDownExcel($SQL, $where);
- } else {
- $field = ['ai.RegisterIP','ow.locking', 'ar.remarks','ow.remark', 'ow.RecordID', 'ar.RecordID as ar_RecordID', 'wn.state as wn_state', 'ai.NickName', 'ow.AccountsBank', 'ow.BankUserName', 'ow.WithDraw', 'ow.State', 'ow.BankNO', 'ow.ServiceFee', 'OrderId', 'ai.GameID', 'ai.UserID', 'ai.Channel', 'ar.admin_id', 'ow.agent', 'finishDate', 'PixNum', 'PixType', 'ow.EmailAddress', 'ow.PhoneNumber', 'ow.AdhaarNumber', 'ow.IFSCNumber'];
- $SQL1 = clone $SQL;
- $SQL2 = clone $SQL;
- $model = new AccountWithDrawInfo();
- $list = $SQL
- ->where($where)
- ->lock('with(nolock)')
- ->select($field)
- ->selectRaw('ar.update_at, CreateDate')
- ->orderBy('ow.RecordID', 'desc')
- ->paginate(10);
- // 申请人数,笔数,金额
- $applyUserCount = $SQL1
- ->where($where)
- ->lock('with(nolock)')
- ->selectRaw('count(distinct(ow.UserID)) userCount,(sum(cast(ow.WithDraw as bigint))+sum(cast(ow.ServiceFee as bigint))) WithDraw,count(ow.RecordID) count')->lock('with(nolock)')->first();
- if (isset($applyUserCount->WithDraw)) {
- $applyUserCount->WithDraw = number_float($applyUserCount->WithDraw / NumConfig::NUM_VALUE);
- }
- // 到账人数,金额
- $overUserCount = $SQL2->where($where)->where('ow.State', 2)->selectRaw('count(distinct(ow.UserID)) userCount,sum(cast(ow.WithDraw as bigint)) WithDraw,count(ow.RecordID) count')
- ->lock('with(nolock)')
- ->first();
- if (isset($overUserCount->WithDraw)) {
- $overUserCount->WithDraw = number_float($overUserCount->WithDraw / NumConfig::NUM_VALUE);
- }
- $userIDs = [];
- $adminIDs = [];
- $agentIDs = [];
- $accountsInfo=new AccountsInfo();
- foreach ($list as &$val) {
- $val->actual_arrival = number_float(($val->WithDraw + $val->ServiceFee) / 100); // 实际提现金额
- $val->ServiceFee = number_float($val->ServiceFee / 100);
- $val->WithDraw = number_float($val->WithDraw / 100);
- $val->sameNameNum=$accountsInfo->sameWithDrawBankName($val->BankUserName);
- $val->sameEmailNum=$accountsInfo->sameWithDrawEmail($val->EmailAddress);
- $val->sameMac=$accountsInfo->sameLoginMacCount($val->UserID);
- $val->sameCpfCount=Cpf::getCpfCount($val->UserID);
- $val->sameIP=$accountsInfo->sameRegisterIPCount($val->RegisterIP);
- // $val->sameLIP=$accountsInfo->sameLoginIPCount($val->UserID);
- $userIDs[] = $val->UserID;
- !empty($val->admin_id) && $adminIDs[] = $val->admin_id;
- !empty($val->agent) && $agentIDs[] = $val->agent;
- }
- unset($val);
- $agentName = DB::connection('write')->table('agent.dbo.admin_configs')
- ->whereIn('id', $agentIDs)
- ->pluck('name', 'id')->toArray();
- $adminName = DB::connection('write')->table('agent.dbo.admin_users')
- ->whereIn('id', $adminIDs)
- ->pluck('account', 'id')->toArray();
- $userIDs = array_unique($userIDs);
- // 银行卡绑定信息评估
- $BankNO = $model->BankNO($userIDs);
- $IP = $model->ip($userIDs);
- $orders = DB::connection('read')->table('QPAccountsDB.dbo.YN_VIPAccount')->whereIn('UserID', $userIDs)
- ->selectRaw('Recharge,UserID')
- ->lock('with(nolock)')
- ->pluck('Recharge', 'UserID')->toArray();
- $Withdrawal_M = new Withdrawal();
- // 评估档位
- foreach ($list as &$val) {
- /*
- * 评估档位 累计充值金额 获得佣金
- * 低 ≥100 ≥100
- * 普通 >0<100 >0<100
- * 较高 0 >0
- * 高 0 0
- * */
- $cz_money = $orders[$val->UserID] ?? 0;
- if (isset($IP[$val->UserID]) && $IP[$val->UserID] > 1) {
- $gear = '高';
- } elseif (isset($BankNO[$val->UserID]) && $BankNO[$val->UserID] > 1) {
- $gear = '高';
- } elseif ($cz_money >= 100) {
- $gear = '低';
- } elseif ($cz_money > 0 && $cz_money < 100) {
- $gear = '普通';
- } elseif ($cz_money > 0) {
- $gear = '较高';
- } elseif ($cz_money == 0) {
- $gear = '高';
- }
- $val->gear = $gear ?? '';
- $val->assessment = $Withdrawal_M->assessment($cz_money);
- $val->States = $Withdrawal_M->stateText($val->State, $val->locking);
- $val->account = isset($adminName[$val->admin_id]) ? $adminName[$val->admin_id] : '';
- $val->name = isset($agentName[$val->agent]) ? $agentName[$val->agent] : '';
- }
- }
- // 改已读
- // DB::table('QPAccountsDB.dbo.OrderWithDraw')->update(['admin_read' => 1]);
- $allChannel = $adminChannels;//DB::connection('read')->table('QPPlatformDB.dbo.ChannelPackageName')->selectRaw('Channel')->groupBy('Channel')->pluck('Channel');
- $start_time = Helper::timeChange($start_time);
- $end_time = Helper::timeChange($end_time);
- $final_start_time = Helper::timeChange($final_start_time);
- $final_end_time = Helper::timeChange($final_end_time);
- // 提现管理员
- $withdrawal_administrator = DB::connection('write')->table('agent.dbo.withdrawal_administrator')->pluck('account', 'admin_id');
- // 获取包名
- $ChannelPackageName = DB::connection('write')->table('QPPlatformDB.dbo.ChannelPackageName')
- ->select('PackageName', 'Channel')
- ->pluck('PackageName', 'Channel');
- return compact('applyUserCount', 'overUserCount', 'list', 'payState', 'allChannel', 'Channel', 'GameID', 'withdraw_search', 'withdraw', 'state', 'start_time', 'end_time', 'agent', 'orderID', 'final_start_time', 'final_end_time', 'take_effect', 'withdrawal_administrator', 'isEmpty', 'register_start_time', 'register_end_time', 'PackgeName', 'ChannelPackageName');
- }
- public function verify_agree($ids)
- {
- $id_arr = explode(',', $ids);
- $order = ['WithDraw', 'ServiceFee', 'ow.RecordID', 'ai.GameID', 'ai.UserID', 'ai.Channel','PixType'];
- $list = DB::connection('write')->table('QPAccountsDB.dbo.OrderWithDraw as ow')
- ->join('QPAccountsDB.dbo.AccountsInfo as ai', 'ow.UserID', 'ai.UserID')
- ->whereIn('RecordID', $id_arr)
- ->select($order)
- ->lock('with(nolock)')
- ->paginate(10);
- $channelConfigs = [];
- $res = WithdrawalChannelPositionConfig::where('status', 1)->get();
- foreach ($res as $v) {
- $channelConfigs[$v->channel] = $v;
- }
- // $config = DB::table(TableName::agent() . 'withdrawal_position_config')
- // ->where('status', 1)
- // ->first();
- foreach ($list as &$value) {
- $value->WithDraw = number_float(($value->WithDraw + $value->ServiceFee) / 100);
- if($value->PixType==66){
- //代理订单
- $value->agent=
- $this->agent=[(object)[
- "id" => "6666",
- "name" => "代理申请为玩家提现",
- "config_key" => "AgentCashOut",
- "config_value" => "66",
- "type" => "cash",
- "created_at" => null,
- "updated_at" => null,
- "admin_id" => "11",
- "status" => "1",
- "sort" => "0",
- "remarks" => null,
- "new_pay_type" => "0",
- "pic_num" => null,
- "pay_error" => "0",
- "cpf_first" => "0"
- ]];
- continue;
- }
- if(isset($channelConfigs[$value->Channel]) && $channelConfigs[$v->channel]->limit_manual_review_show) {
- $c = $channelConfigs[$value->Channel];
- $value->agent = array_filter($this->agent->toArray(), function ($item) use ($c) {
- return $item->config_value == $c->agent;
- });
- }
- }
- $agent = $this->agent;
- return compact('list', 'agent');
- }
- public function save($data, $admin_id)
- {
- $redis = new RedisConnect();
- $limitKey = 'withdraw';
- $res = $redis->redis()->set($limitKey, 1, 3);
- if (empty($res)) return apiReturnFail('频繁操作');
- $WithdrawalModel = new Withdrawal();
- $id_arr = explode(',', $data['ids']);
- // 代付方
- $agent = $data['agent'] ?? '';
- if (empty($agent) && $data['agree'] == 'true') {
- return apiReturnFail('请选择代付方');
- }
- if ($data['agree'] == 'true') {
- $state = 2;
- } else {
- $state = -1;
- }
- try {
- foreach ($id_arr as $val) {
- $query = DB::connection('write')->table('QPAccountsDB.dbo.OrderWithDraw')->where('RecordID', $val)->first();
- if($query->PixType!=66) {
- if ($query->State != 1) {
- return apiReturnFail('订单重复操作');
- }
- if ($query->locking == 1) {
- return apiReturnFail('订单已被锁定');
- }
- $redis1 = Redis::connection();
- $order_sn = $query->OrderId;
- if ($redis1->exists($order_sn . 'key1')) {
- return apiReturnFail('订单已被锁定new');
- }
- $redis1->set($order_sn.'key1', $order_sn, 3600 * 24);
- }
- // 拒绝提现 ,发邮件给用户
- if ($state == -1) {
- // 发送邮件给玩家
- $WithDraw = $query->WithDraw + $query->ServiceFee;
- PrivateMail::ClearDrawMail($query->UserID, $query->OrderId, $WithDraw);
- // 修改订单状态
- DB::table('QPAccountsDB.dbo.OrderWithDraw')->where('RecordID', $val)->update(['State' => $state, 'locking' => 2]);
- $remarks = $data['remarks'] ?? '';
- // 添加用户提现操作记录
- (new AccountsRecordLogic())->create_record($val, 1, $state, $remarks, $admin_id, 1);
- if($query->PixType==66)AgentSystemService::FailWithdraw($query);
- } else if($query->PixType==66){
- DB::table('QPAccountsDB.dbo.OrderWithDraw')->where('RecordID', $val)->update(['State' => 5, 'agent' => 660000+$query->AccountsBank]);
- //通知AgentSystem完成,并锁定
- AgentSystemService::FinishWithdraw($query);
- } else { // 发起提现
- // 验证用户提现方式
- $verifyAccountWithdrawal = $WithdrawalModel->AccountWithDrawInfo($query->PixNum, $agent);
- if (!$verifyAccountWithdrawal) return apiReturnFail('不支持的提现格式!');
- $state = 5;
- # 获取哪个三方提现
- $orderAgent = $WithdrawalModel->getAgentChannel($agent);
- // 改变状态处理中
- DB::table('QPAccountsDB.dbo.OrderWithDraw')->where('RecordID', $val)->update(['State' => $state, 'agent' => $orderAgent]);
- // 添加用户提现操作记录
- (new AccountsRecordLogic())->create_record($val, 1, $state, '', $admin_id, 1);
- $RecordID = $query->RecordID;
- $amount = $query->WithDraw;
- $accountName = $query->BankUserName;
- $email = $query->EmailAddress;
- $phone = $query->PhoneNumber;
- $PixNum = $query->PixNum;
- $PixType = $query->PixType;
- $OrderId = $query->OrderId;
- $IFSCNumber = $query->IFSCNumber;
- $BranchBank = $query->BranchBank;
- $BankNO = $query->BankNO;
- if($PixType>10){
- Util::WriteLog("pixerror",$query);
- $oldRecord=DB::table('QPAccountsDB.dbo.OrderWithDraw')->where('UserID', $query->UserID)->where('State',2)->first();
- if(isset($oldRecord)&&isset($oldRecord->PixType)){
- $PixType=$oldRecord->PixType;
- }else{
- $PixType=1;
- }
- }
- $service = CashService::payment($agent);
- $result = $service->payment($RecordID, $amount, $accountName, $phone, $email, $OrderId, $PixNum, $PixType, $IFSCNumber, $BranchBank, $BankNO);
- if ($result === 'fail') {
- return apiReturnFail('订单提现失败');
- }
- }
- // 判断管理员是否已经存在
- $withdrawal_administrator = DB::connection('write')->table('agent.dbo.withdrawal_administrator')->where('admin_id', $admin_id)->first();
- if (!$withdrawal_administrator) {
- $dataArr = [
- 'admin_id' => $admin_id,
- 'account' => session('admin')->account ?? ''
- ];
- DB::connection('write')->table('agent.dbo.withdrawal_administrator')->insert($dataArr);
- }
- }
- $redis->redis()->del($limitKey);
- return apiReturnSuc();
- } catch (Exception $e) {
- $redis->redis()->del($limitKey);
- return apiReturnFail($e->getMessage());
- }
- }
- // 用户提充统计
- public function userWithdrawalStatistics($date, $excel, $gameID, $channel)
- {
- $dateID = Carbon::parse($date)->format('Ymd');
- $where[] = ['Withdraw', '>', 0];
- !empty($date) && $where[] = ['DateID', $dateID];
- !empty($gameID) && $where[] = ['GameID', $gameID];
- (!empty($channel) || $channel === 0) && $where[] = ['Channel', $channel];
- $buildSql = DB::table(TableName::QPRecordDB() . 'RecordUserDataStatisticsNew as rn')
- ->where($where)
- ->join(TableName::QPAccountsDB() . 'AccountsInfo as ai', 'rn.UserID', 'ai.UserID')
- ->select('GameID', 'rn.UserID', 'Withdraw', 'Recharge')
- ->orderBy('Withdraw', 'desc');
- // 昨天的提现用户,昨日提现多少,昨日充值多少,历史充值多少,历史提现多少
- $list = $excel ? $buildSql->get() : $buildSql->paginate(15);
- $UserIDs = [];
- foreach ($list as $value) {
- $UserIDs[] = $value->UserID;
- }
- $total = DB::table(TableName::QPRecordDB() . 'RecordUserTotalStatistics')
- ->whereIn('UserID', $UserIDs)
- ->select('Withdraw', 'Recharge', 'UserID')
- ->get();
- foreach ($list as &$value) {
- $value->Withdraw = number_float($value->Withdraw / 100);
- foreach ($total as $val) {
- if ($val->UserID == $value->UserID) {
- $value->HisWithdraw = number_float($val->Withdraw / 100);
- $value->HisRecharge = $val->Recharge;
- }
- }
- }
- if ($excel) {
- $title = ['游戏ID', '用户ID', '今日提现', '今日充值', '历史提现', '历史充值'];
- $list = json_decode(json_encode($list), true);
- downloadExcel($list, $title, '统计' . date('YmdHis'));
- return;
- } else {
- $channelList = DB::table(TableName::QPPlatformDB().'ChannelPackageName')
- ->select('Channel')
- ->groupBy('Channel')
- ->pluck('Channel','Channel')->toArray();
- return [$list,$channelList];
- }
- }
- /**
- * 后台模拟触发提现回调
- * @param $withdrawOrder
- * @return bool
- */
- public function compensateNotify($withdrawOrder)
- {
- $withdraw_data = [
- 'State' => 2,
- 'finishDate' => now(),
- ];
- $UserID = $withdrawOrder->UserID;
- $TakeMoney = $withdrawOrder->WithDraw + $withdrawOrder->ServiceFee;
- // 增加提现记录
- $first = DB::connection('write')->table('QPAccountsDB.dbo.UserTabData')->where('UserID', $UserID)->first();
- if ($first) {
- DB::connection('write')->table('QPAccountsDB.dbo.UserTabData')->where('UserID', $UserID)->increment('TakeMoney', $TakeMoney);
- } else {
- DB::connection('write')->table('QPAccountsDB.dbo.UserTabData')->insert(['TakeMoney' => $TakeMoney, 'UserID' => $UserID]);
- }
- // 免审的时候,修改免审状态
- $withdrawal_position_log = DB::connection('write')
- ->table('agent.dbo.withdrawal_position_log')->where('order_sn', $withdrawOrder->OrderId)
- ->first();
- if ($withdrawal_position_log) {
- DB::connection('write')->table('agent.dbo.withdrawal_position_log')
- ->where('order_sn', $withdrawOrder->OrderId)
- ->update(['take_effect' => 2, 'update_at' => date('Y-m-d H:i:s')]);
- }
- $ServiceFee = $withdrawOrder->ServiceFee;
- // 增加用户提现值
- RecordUserDataStatistics::updateOrAdd($UserID, $TakeMoney, 0, $ServiceFee);
- // 给用户发邮件
- PrivateMail::successMail($UserID, $withdrawOrder->OrderId, $TakeMoney);
- StoredProcedure::addPlatformData($UserID, 4, $TakeMoney);
- // 数据统计后台 -- 提现记录添加
- (new RechargeWithDraw())->withDraw($UserID, $TakeMoney);
- $redis = Redis::connection();
- $redis->incr('draw_'.date('Ymd').$UserID);
- $RecordData = [
- 'before_state' => $withdrawOrder->State,
- 'after_state' => $withdraw_data['State'] ?? 0,
- 'RecordID' => $withdrawOrder->RecordID,
- 'update_at' => date('Y-m-d H:i:s')
- ];
- $notify_data = [
- 'state' => 1,
- 'finish_at' => now(),
- 'casOrdNo' => '',
- 'extra' => '{}',
- 'created_at' => now(),
- 'updated_at' => now(),
- 'order_sn' => $withdrawOrder->OrderId,
- 'amount' => $TakeMoney,
- ];
- // 添加用户提现操作记录
- DB::connection('write')->table('QPAccountsDB.dbo.AccountsRecord')
- ->updateOrInsert(['RecordID' => $withdrawOrder->RecordID, 'type' => 1], $RecordData);
- DB::connection('write')->table('QPAccountsDB.dbo.withdraw_notify')
- ->updateOrInsert(['order_sn' => $withdrawOrder->OrderId], $notify_data);
- DB::connection('write')->table('QPAccountsDB.dbo.OrderWithDraw')
- ->where('OrderId', $withdrawOrder->OrderId)
- ->update($withdraw_data);
- if (isset($withdraw_data['State']) && $withdraw_data['State'] == 2) {
- // 单控标签
- StoredProcedure::user_label($UserID, 2, $TakeMoney);
- // 渠道后台埋点
- (new LogDayStatisticalByDayAndChannel())->updateData($UserID, 2);
- }
- return true;
- }
- }
|