| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452 |
- <?php
- namespace App\Http\Controllers\Api;
- use App\Facade\TableName;
- use App\Models\AccountsInfo;
- use App\Util;
- use App\Utility\SetNXLock;
- use Illuminate\Http\Request;
- use Illuminate\Support\Facades\DB;
- use Illuminate\Support\Facades\Log;
- class WithDrawInfoController
- {
- public function withDrawInfo(Request $request)
- {
- // return apiReturnFail('params error');
- $UserID = $request->input('UserID');
- $RequestDynamicPass = $request->input('DynamicPass');
- $PixType = $request->input('cbPixType');
- $BankNO = $request->input('bank');
- $AccountsBank = urldecode($request->input('account'));
- $BankUserName = urldecode($request->input('userName'));
- $BankUserName=Util::filterNickName($BankUserName);
- $PhoneNumber = $request->input('phone');
- $EmailAddress = $request->input('email');
- $IFSCNumber = $request->input('IFSC');
- $PANNumber = $request->input('PAN');
- $AdhaarNumber = $request->input('adhaar');
- $BranchBank = $request->input('branceBank');
- $PixNum = $request->input('PixNum');
- $redisKey = 'withDrawInfo_withDrawInfo_'.$UserID;
- if (!SetNXLock::getExclusiveLock($redisKey)) {
- Util::WriteLog("withdrawInfo",[1, $request->all()]);
- return apiReturnFail(__('messages.api.withdraw_info.try_again_later'));
- }
- if (!$UserID) {
- Util::WriteLog("withdrawInfo",[2, $request->all()]);
- Log::info('miss UserID', $request->all());
- SetNXLock::release($redisKey);
- return apiReturnFail(__('messages.api.withdraw_info.params_error'));
- }
- if (empty($PixType)) {
- Util::WriteLog("withdrawInfo",[3, $request->all()]);
- SetNXLock::release($redisKey);
- return apiReturnFail(__('messages.api.withdraw_info.missing_pix_type'));
- }
- // 验证PixNum绑定次数
- if (!empty($PixNum)) {
- $BindCount = DB::table(TableName::QPRecordDB() . 'RecordBankCardBind')
- ->where('BankCard', $PixNum)
- ->lock('WITH(NOLOCK)')
- ->count();
- if ($BindCount >= 8) {
- Util::WriteLog("withdrawInfo",[4, $request->all()]);
- SetNXLock::release($redisKey);
- return apiReturnFail(['web.withdraw.cpf_number_used',__('messages.api.withdraw_info.cpf_number_used')], [], 302);
- }
- }
- // if(!is_numeric($PixNum)){
- // return apiReturnFail(['web.withdraw.pix_failed','The CPF number has been used several times and cannot be saved'], [], 302);
- // }
- // 验证玩家信息
- $DynamicPass = DB::table(TableName::QPAccountsDB() . 'AccountsInfo')
- ->where('UserID', $UserID)
- ->lock('WITH(NOLOCK)')
- ->value('DynamicPass');
- if ($DynamicPass != $RequestDynamicPass || empty($DynamicPass)) {
- SetNXLock::release($redisKey);
- Util::WriteLog("withdrawInfo",[5, $request->all()]);
- return apiReturnFail(__('messages.api.withdraw_info.player_info_inconsistent'));
- }
- if ($PixType < 10) {
- $data = compact('PixType', 'BankUserName', 'PhoneNumber', 'EmailAddress', 'PixNum');
- } else {
- $data = compact('PixType', 'BankNO', 'AccountsBank', 'IFSCNumber', 'PANNumber', 'AdhaarNumber', 'BranchBank');
- $PixNum = $BankNO;
- }
- foreach ($data as $key => &$val) {
- $data[$key] = trim($val);
- }
- unset($val);
- $AccountWithDrawInfo = DB::table(TableName::QPAccountsDB() . 'AccountWithDrawInfo')
- ->lock('WITH(NOLOCK)')
- ->where('UserID', $UserID)
- ->first();
- if (!$AccountWithDrawInfo) {
- $data['UserID'] = $UserID;
- $data['Achieves'] = 0;
- $data['HistoryWithDraw'] = 0;
- try {
- DB::table(TableName::QPAccountsDB() . 'AccountWithDrawInfo')
- ->where('UserID', $UserID)
- ->insert($data);
- } catch (\Exception $e) {
- Log::error('insert AccountWithDrawInfo failed', ['data' => $data]);
- Util::WriteLog("withdrawInfo",[6, $request->all(),$data]);
- }
- } else {
- $data = array_filter($data, function ($value) {
- return !is_null($value) && $value !== '';
- });
- DB::table(TableName::QPAccountsDB() . 'AccountWithDrawInfo')
- ->where('UserID', $UserID)
- ->update($data);
- }
- // 添加绑定记录
- if (empty($AccountWithDrawInfo->PixNum) || $AccountWithDrawInfo->PixNum != $PixNum) {
- try {
- if(!DB::table(TableName::QPRecordDB() . 'RecordBankCardBind')->where('UserID', $UserID)->exists()&&is_numeric($PixNum)) {
- DB::table(TableName::QPRecordDB() . 'RecordBankCardBind')
- ->insert([
- 'UserID' => $UserID,
- 'BankCard' => $PixNum ?: '',
- 'BindDate' => now()
- ]);
- Util::WriteLog('update_pix', [
- 'UserID' => $UserID,
- 'BankCard' => $PixNum ?: '',
- 'BindDate' => now()
- ]);
- }
- } catch (\Exception $e) {
- Log::error('insert RecordBankCardBind failed', ['data' => $data]);
- Util::WriteLog("withdrawInfo",[7, $request->all(),$data]);
- }
- }
- SetNXLock::release($redisKey);
- return apiReturnSuc();
- }
- public function withDrawInfoPK(Request $request)
- {
- // return apiReturnFail('params error');
- $UserID = $request->input('UserID');
- $RequestDynamicPass = $request->input('DynamicPass');
- $PixType = $request->input('cbPixType');
- $AccountsBank = urldecode($request->input('account'));
- $BankUserName = urldecode($request->input('userName'));
- $BankUserName=Util::filterNickName($BankUserName);
- $PhoneNumber = $request->input('phone');
- $EmailAddress = $request->input('email');
- $PixNum = $request->input('PixNum');
- $redisKey = 'withDrawInfo_withDrawInfo_'.$UserID;
- if (!SetNXLock::getExclusiveLock($redisKey)) {
- Util::WriteLog("withdrawInfo",[1, $request->all()]);
- return apiReturnFail(__('messages.api.withdraw_info.try_again_later'));
- }
- if (!$UserID) {
- Util::WriteLog("withdrawInfo",[2, $request->all()]);
- Log::info('miss UserID', $request->all());
- SetNXLock::release($redisKey);
- return apiReturnFail(__('messages.api.withdraw_info.params_error'));
- }
- if (empty($PixType)) {
- Util::WriteLog("withdrawInfo",[3, $request->all()]);
- SetNXLock::release($redisKey);
- return apiReturnFail(__('messages.api.withdraw_info.missing_pix_type'));
- }
- // 验证PixNum绑定次数
- if (!empty($PixNum)) {
- $BindCount = DB::table(TableName::QPRecordDB() . 'RecordBankCardBind')
- ->where('BankCard', $PixNum)
- ->lock('WITH(NOLOCK)')
- ->count();
- if ($BindCount >= 8) {
- Util::WriteLog("withdrawInfo",[4, $request->all()]);
- SetNXLock::release($redisKey);
- return apiReturnFail(['web.withdraw.cpf_number_used',__('messages.api.withdraw_info.cpf_number_used')], [], 302);
- }
- }
- // if(!is_numeric($PixNum)){
- // return apiReturnFail(['web.withdraw.pix_failed','The CPF number has been used several times and cannot be saved'], [], 302);
- // }
- // 验证玩家信息
- $DynamicPass = DB::table(TableName::QPAccountsDB() . 'AccountsInfo')
- ->where('UserID', $UserID)
- ->lock('WITH(NOLOCK)')
- ->value('DynamicPass');
- if ($DynamicPass != $RequestDynamicPass || empty($DynamicPass)) {
- SetNXLock::release($redisKey);
- Util::WriteLog("withdrawInfo",[5, $request->all()]);
- return apiReturnFail(__('messages.api.withdraw_info.player_info_inconsistent'));
- }
- $data = compact('PixType', 'BankUserName', 'PhoneNumber', 'EmailAddress', 'PixNum');
- foreach ($data as $key => &$val) {
- $data[$key] = trim($val);
- }
- unset($val);
- $AccountWithDrawInfo = DB::table(TableName::QPAccountsDB() . 'AccountWithDrawInfo')
- ->lock('WITH(NOLOCK)')
- ->where('UserID', $UserID)
- ->first();
- if (!$AccountWithDrawInfo) {
- $data['UserID'] = $UserID;
- $data['Achieves'] = 0;
- $data['HistoryWithDraw'] = 0;
- try {
- DB::table(TableName::QPAccountsDB() . 'AccountWithDrawInfo')
- ->where('UserID', $UserID)
- ->insert($data);
- } catch (\Exception $e) {
- Log::error('insert AccountWithDrawInfo failed', ['data' => $data]);
- Util::WriteLog("withdrawInfo",[6, $request->all(),$data]);
- }
- } else {
- $data = array_filter($data, function ($value) {
- return !is_null($value) && $value !== '';
- });
- DB::table(TableName::QPAccountsDB() . 'AccountWithDrawInfo')
- ->where('UserID', $UserID)
- ->update($data);
- }
- // 添加绑定记录
- if (empty($AccountWithDrawInfo->PixNum) || $AccountWithDrawInfo->PixNum != $PixNum) {
- try {
- if(!DB::table(TableName::QPRecordDB() . 'RecordBankCardBind')->where('UserID', $UserID)->exists()&&is_numeric($PixNum)) {
- DB::table(TableName::QPRecordDB() . 'RecordBankCardBind')
- ->insert([
- 'UserID' => $UserID,
- 'BankCard' => $PixNum ?: '',
- 'BindDate' => now()
- ]);
- Util::WriteLog('update_pix', [
- 'UserID' => $UserID,
- 'BankCard' => $PixNum ?: '',
- 'BindDate' => now()
- ]);
- }
- } catch (\Exception $e) {
- Log::error('insert RecordBankCardBind failed', ['data' => $data]);
- Util::WriteLog("withdrawInfo",[7, $request->all(),$data]);
- }
- }
- SetNXLock::release($redisKey);
- return apiReturnSuc();
- }
- public function withDrawInfoSA(Request $request)
- {
- // return apiReturnFail('params error');
- $UserID = $request->input('UserID');
- $RequestDynamicPass = $request->input('DynamicPass');
- $PixType = $request->input('cbPixType');
- $BankNO = $request->input('bank');
- $AccountsBank = urldecode($request->input('account'));
- $BankUserName = urldecode($request->input('userName'));
- // 原始代码
- $BankUserName = Util::filterNickName($BankUserName);
- // 新增处理:在大写字母前加空格
- $BankUserName = preg_replace('/(?<!^)([A-Z])/', ' $1', $BankUserName);
- $PhoneNumber = $request->input('phone');
- $EmailAddress = $request->input('email');
- $IFSCNumber = $request->input('IFSC');
- $PANNumber = $request->input('PAN');
- $AdhaarNumber = $request->input('adhaar');
- $BranchBank = $request->input('branceBank');
- $PixNum = $request->input('PixNum');
- $redisKey = 'withDrawInfo_withDrawInfo_'.$UserID;
- if (!SetNXLock::getExclusiveLock($redisKey)) {
- Util::WriteLog("withdrawInfo",[1, $request->all()]);
- return apiReturnFail(__('messages.api.withdraw_info.try_again_later'));
- }
- if (!$UserID) {
- Util::WriteLog("withdrawInfo",[2, $request->all()]);
- Log::info('miss UserID', $request->all());
- SetNXLock::release($redisKey);
- return apiReturnFail(__('messages.api.withdraw_info.params_error'));
- }
- if (empty($PixType)) {
- Util::WriteLog("withdrawInfo",[3, $request->all()]);
- SetNXLock::release($redisKey);
- return apiReturnFail(__('messages.api.withdraw_info.missing_pix_type'));
- }
- // Util::validateSouthAmericanPhone('',)
- // 验证PixNum绑定次数
- if (!empty($PixNum)) {
- $BindCount = DB::table(TableName::QPRecordDB() . 'RecordBankCardBind')
- ->where('BankCard', $PixNum)
- ->lock('WITH(NOLOCK)')
- ->count();
- if ($BindCount >= 8) {
- Util::WriteLog("withdrawInfo",[4, $request->all()]);
- SetNXLock::release($redisKey);
- return apiReturnFail(['web.withdraw.cpf_number_used',__('messages.api.withdraw_info.cpf_number_used')], [], 302);
- }
- }
- // if(!is_numeric($PixNum)){
- // return apiReturnFail(['web.withdraw.pix_failed','The CPF number has been used several times and cannot be saved'], [], 302);
- // }
- // 验证玩家信息
- $DynamicPass = DB::table(TableName::QPAccountsDB() . 'AccountsInfo')
- ->where('UserID', $UserID)
- ->lock('WITH(NOLOCK)')
- ->value('DynamicPass');
- if ($DynamicPass != $RequestDynamicPass || empty($DynamicPass)) {
- SetNXLock::release($redisKey);
- Util::WriteLog("withdrawInfo",[5, $request->all()]);
- return apiReturnFail(__('messages.api.withdraw_info.player_info_inconsistent'));
- }
- $data = compact('PixType', 'BankUserName', 'PhoneNumber', 'EmailAddress', 'PixNum','BankNO', 'AccountsBank', 'IFSCNumber', 'PANNumber', 'AdhaarNumber', 'BranchBank');
- foreach ($data as $key => &$val) {
- $data[$key] = trim($val);
- }
- unset($val);
- $AccountWithDrawInfo = DB::table(TableName::QPAccountsDB() . 'AccountWithDrawInfo')
- ->lock('WITH(NOLOCK)')
- ->where('UserID', $UserID)
- ->first();
- if (!$AccountWithDrawInfo) {
- $data['UserID'] = $UserID;
- $data['Achieves'] = 0;
- $data['HistoryWithDraw'] = 0;
- try {
- DB::table(TableName::QPAccountsDB() . 'AccountWithDrawInfo')
- ->where('UserID', $UserID)
- ->insert($data);
- } catch (\Exception $e) {
- Log::error('insert AccountWithDrawInfo failed', ['data' => $data]);
- Util::WriteLog("withdrawInfo",[6, $request->all(),$data]);
- }
- } else {
- $data = array_filter($data, function ($value) {
- return !is_null($value) && $value !== '';
- });
- DB::table(TableName::QPAccountsDB() . 'AccountWithDrawInfo')
- ->where('UserID', $UserID)
- ->update($data);
- }
- // 添加绑定记录
- if (empty($AccountWithDrawInfo->PixNum) || $AccountWithDrawInfo->PixNum != $PixNum) {
- try {
- if(!DB::table(TableName::QPRecordDB() . 'RecordBankCardBind')->where('UserID', $UserID)->exists()&&is_numeric($PixNum)) {
- DB::table(TableName::QPRecordDB() . 'RecordBankCardBind')
- ->insert([
- 'UserID' => $UserID,
- 'BankCard' => $PixNum ?? '',
- 'BindDate' => now()
- ]);
- Util::WriteLog('update_pix', [
- 'UserID' => $UserID,
- 'BankCard' => $PixNum ?? '',
- 'BindDate' => now()
- ]);
- }
- } catch (\Exception $e) {
- Log::error('insert RecordBankCardBind failed', ['data' => $data]);
- Util::WriteLog("withdrawInfo",[7, $request->all(),$data]);
- }
- }
- SetNXLock::release($redisKey);
- return apiReturnSuc();
- }
- // 获取提现信息
- public function getWithDrawInfo(Request $request)
- {
- $UserID = $request->input('UserID');
- $RequestDynamicPass = $request->input('DynamicPass');
- if(strstr("&",$UserID)){
- Util::WriteLog("urlError",$request->header());
- parse_str('UserID='.$UserID,$params);
- $UserID=$params['UserID'];
- $RequestDynamicPass=$params['DynamicPass'];
- }
- // 验证玩家信息
- $DynamicPass = DB::table(TableName::QPAccountsDB() . 'AccountsInfo')
- ->where('UserID', $UserID)
- ->lock('WITH(NOLOCK)')
- ->value('DynamicPass');
- if ($DynamicPass != $RequestDynamicPass || empty($DynamicPass)) return apiReturnFail(__('messages.api.withdraw_info.player_info_inconsistent'));
- $info = DB::table(TableName::QPAccountsDB() . 'AccountWithDrawInfo')
- ->where('UserID', $UserID)
- ->lock('WITH(NOLOCK)')
- ->first();
- $info=(array)$info;
- if (!$info) { // 赋值 -- 避免客户端报错
- $info = [
- 'BankNO' => '',
- 'AccountsBank' => '',
- 'BankUserName' => '',
- 'PhoneNumber' => '',
- 'IFSCNumber' => '',
- 'EmailAddress' => '',
- 'Achieves' => '',
- 'PANNumber' => '',
- 'AdhaarNumber' => '',
- 'BranchBank' => '',
- 'PixNum' => '',
- 'PixType' => '',
- ];
- }
- $AccountsInfoModel = new AccountsInfo();
- $total = $AccountsInfoModel->accountTotalStatistics([$UserID]);
- $totalRecharge = @$total[0]->Recharge ?? 0;
- $info['total_recharge'] = intval($totalRecharge);
- $info['withdraw_level'] = env('MIN_RECHARGE',20);
- return apiReturnSuc(compact('info'));
- }
- }
|